@atlaskit/editor-synced-block-renderer 5.0.3 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/afm-cc/tsconfig.json +4 -1
- package/afm-jira/tsconfig.json +3 -0
- package/afm-products/tsconfig.json +3 -0
- package/dist/cjs/index.js +1 -8
- package/dist/cjs/ui/SyncedBlockNodeComponentRenderer.js +5 -0
- package/dist/cjs/ui/SyncedBlockRenderer.js +26 -2
- package/dist/cjs/useSyncedBlockNodeComponent.js +25 -3
- package/dist/cjs/utils/experience-tracking.js +74 -0
- package/dist/es2019/index.js +1 -2
- package/dist/es2019/ui/SyncedBlockNodeComponentRenderer.js +5 -0
- package/dist/es2019/ui/SyncedBlockRenderer.js +25 -3
- package/dist/es2019/useSyncedBlockNodeComponent.js +23 -3
- package/dist/es2019/utils/experience-tracking.js +68 -0
- package/dist/esm/index.js +1 -2
- package/dist/esm/ui/SyncedBlockNodeComponentRenderer.js +5 -0
- package/dist/esm/ui/SyncedBlockRenderer.js +26 -3
- package/dist/esm/useSyncedBlockNodeComponent.js +25 -3
- package/dist/esm/utils/experience-tracking.js +68 -0
- package/dist/types/index.d.ts +1 -2
- package/dist/types/useSyncedBlockNodeComponent.d.ts +14 -2
- package/dist/types/utils/experience-tracking.d.ts +30 -0
- package/dist/types-ts4.5/index.d.ts +1 -2
- package/dist/types-ts4.5/useSyncedBlockNodeComponent.d.ts +14 -2
- package/dist/types-ts4.5/utils/experience-tracking.d.ts +30 -0
- package/package.json +12 -6
- package/build/tsconfig.json +0 -22
- package/dist/cjs/getSyncedBlockNodeComponent.js +0 -41
- package/dist/es2019/getSyncedBlockNodeComponent.js +0 -31
- package/dist/esm/getSyncedBlockNodeComponent.js +0 -34
- package/dist/types/getSyncedBlockNodeComponent.d.ts +0 -15
- package/dist/types-ts4.5/getSyncedBlockNodeComponent.d.ts +0 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-renderer
|
|
2
2
|
|
|
3
|
+
## 5.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`8100ae00326b4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8100ae00326b4) -
|
|
8
|
+
EDITOR-2850-add media ssr support for sync blocks
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- [`fff45a651440a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/fff45a651440a) -
|
|
13
|
+
EDITOR-1665 add experience tracking analytics for sync block save, fetch and delete
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
16
|
+
## 5.1.0
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- [`fc67bbb84995b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/fc67bbb84995b) -
|
|
21
|
+
The renderer version of synced blocks should also use the SSR preloaded data
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- Updated dependencies
|
|
26
|
+
|
|
3
27
|
## 5.0.3
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
package/afm-cc/tsconfig.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "../../../../tsconfig.
|
|
2
|
+
"extends": "../../../../tsconfig.local-consumption.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
4
|
"target": "es5",
|
|
5
5
|
"outDir": "../../../../../confluence/tsDist/@atlaskit__editor-synced-block-renderer",
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
{
|
|
48
48
|
"path": "../../../design-system/image/afm-cc/tsconfig.json"
|
|
49
49
|
},
|
|
50
|
+
{
|
|
51
|
+
"path": "../../../platform/feature-flags/afm-cc/tsconfig.json"
|
|
52
|
+
},
|
|
50
53
|
{
|
|
51
54
|
"path": "../../../design-system/primitives/afm-cc/tsconfig.json"
|
|
52
55
|
},
|
package/afm-jira/tsconfig.json
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -6,13 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
Object.defineProperty(exports, "getSyncBlockNodesFromDoc", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function get() {
|
|
9
|
-
return
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "getSyncedBlockNodeComponent", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _getSyncedBlockNodeComponent.getSyncedBlockNodeComponent;
|
|
9
|
+
return _useSyncedBlockNodeComponent.getSyncBlockNodesFromDoc;
|
|
16
10
|
}
|
|
17
11
|
});
|
|
18
12
|
Object.defineProperty(exports, "getSyncedBlockRenderer", {
|
|
@@ -28,5 +22,4 @@ Object.defineProperty(exports, "useMemoizedSyncedBlockNodeComponent", {
|
|
|
28
22
|
}
|
|
29
23
|
});
|
|
30
24
|
var _useSyncedBlockNodeComponent = require("./useSyncedBlockNodeComponent");
|
|
31
|
-
var _getSyncedBlockNodeComponent = require("./getSyncedBlockNodeComponent");
|
|
32
25
|
var _getSyncedBlockRenderer = require("./getSyncedBlockRenderer");
|
|
@@ -10,6 +10,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
var _syncBlock = require("@atlaskit/editor-common/sync-block");
|
|
12
12
|
var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
|
|
13
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
|
+
var _experienceTracking = require("../utils/experience-tracking");
|
|
13
15
|
var _AKRendererWrapper = require("./AKRendererWrapper");
|
|
14
16
|
var _SyncedBlockErrorComponent = require("./SyncedBlockErrorComponent");
|
|
15
17
|
var _SyncedBlockLoadingState = require("./SyncedBlockLoadingState");
|
|
@@ -21,6 +23,9 @@ var SyncedBlockNodeComponentRenderer = exports.SyncedBlockNodeComponentRenderer
|
|
|
21
23
|
localId = nodeProps.localId,
|
|
22
24
|
fireAnalyticsEvent = nodeProps.fireAnalyticsEvent;
|
|
23
25
|
syncBlockStoreManager.referenceManager.updateFireAnalyticsEvent(fireAnalyticsEvent);
|
|
26
|
+
if ((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
27
|
+
(0, _experienceTracking.setupExperienceTracking)(syncBlockStoreManager, fireAnalyticsEvent);
|
|
28
|
+
}
|
|
24
29
|
var _useFetchSyncBlockDat = (0, _editorSyncedBlockProvider.useFetchSyncBlockData)(syncBlockStoreManager, resourceId, localId, fireAnalyticsEvent),
|
|
25
30
|
syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
|
|
26
31
|
isLoading = _useFetchSyncBlockDat.isLoading,
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.SyncedBlockRenderer = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _coreUtils = require("@atlaskit/editor-common/core-utils");
|
|
9
12
|
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
10
13
|
var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
15
|
var _AKRendererWrapper = require("./AKRendererWrapper");
|
|
12
16
|
var _SyncedBlockErrorComponent = require("./SyncedBlockErrorComponent");
|
|
13
17
|
var _SyncedBlockLoadingState = require("./SyncedBlockLoadingState");
|
|
14
18
|
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); }
|
|
19
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
21
|
var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
|
|
16
22
|
var useFetchSyncBlockData = _ref.useFetchSyncBlockData,
|
|
17
23
|
syncBlockRendererOptions = _ref.syncBlockRendererOptions,
|
|
@@ -20,7 +26,25 @@ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
|
|
|
20
26
|
syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
|
|
21
27
|
providerFactory = _useFetchSyncBlockDat.providerFactory,
|
|
22
28
|
isLoading = _useFetchSyncBlockDat.isLoading,
|
|
23
|
-
reloadData = _useFetchSyncBlockDat.reloadData
|
|
29
|
+
reloadData = _useFetchSyncBlockDat.reloadData,
|
|
30
|
+
ssrProviders = _useFetchSyncBlockDat.ssrProviders;
|
|
31
|
+
var rendererOptions = (0, _react.useMemo)(function () {
|
|
32
|
+
var _syncBlockRendererOpt, _ssrProviders$media;
|
|
33
|
+
if (!(0, _coreUtils.isSSR)() || syncBlockRendererOptions !== null && syncBlockRendererOptions !== void 0 && (_syncBlockRendererOpt = syncBlockRendererOptions.media) !== null && _syncBlockRendererOpt !== void 0 && _syncBlockRendererOpt.ssr ||
|
|
34
|
+
// already has ssr config
|
|
35
|
+
!(ssrProviders !== null && ssrProviders !== void 0 && (_ssrProviders$media = ssrProviders.media) !== null && _ssrProviders$media !== void 0 && _ssrProviders$media.viewMediaClientConfig) || !(0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
36
|
+
return syncBlockRendererOptions;
|
|
37
|
+
}
|
|
38
|
+
var mediaSSR = {
|
|
39
|
+
mode: 'server',
|
|
40
|
+
config: ssrProviders === null || ssrProviders === void 0 ? void 0 : ssrProviders.media.viewMediaClientConfig
|
|
41
|
+
};
|
|
42
|
+
return _objectSpread(_objectSpread({}, syncBlockRendererOptions), {}, {
|
|
43
|
+
media: _objectSpread(_objectSpread({}, (syncBlockRendererOptions === null || syncBlockRendererOptions === void 0 ? void 0 : syncBlockRendererOptions.media) || {}), {}, {
|
|
44
|
+
ssr: mediaSSR
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}, [syncBlockRendererOptions, ssrProviders]);
|
|
24
48
|
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['connectivity'], function (_ref2) {
|
|
25
49
|
var connectivityState = _ref2.connectivityState;
|
|
26
50
|
return {
|
|
@@ -54,7 +78,7 @@ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
|
|
|
54
78
|
return /*#__PURE__*/_react.default.createElement(_AKRendererWrapper.AKRendererWrapper, {
|
|
55
79
|
doc: syncBlockDoc,
|
|
56
80
|
dataProviders: providerFactory,
|
|
57
|
-
options:
|
|
81
|
+
options: rendererOptions
|
|
58
82
|
});
|
|
59
83
|
};
|
|
60
84
|
var SyncedBlockRenderer = exports.SyncedBlockRenderer = /*#__PURE__*/(0, _react.memo)(SyncedBlockRendererComponent);
|
|
@@ -4,19 +4,41 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.useMemoizedSyncedBlockNodeComponent = void 0;
|
|
7
|
+
exports.useMemoizedSyncedBlockNodeComponent = exports.getSyncBlockNodesFromDoc = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
11
|
var _SyncedBlockNodeComponentRenderer = require("./ui/SyncedBlockNodeComponentRenderer");
|
|
11
12
|
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); }
|
|
13
|
+
var getSyncBlockNodesFromDoc = exports.getSyncBlockNodesFromDoc = function getSyncBlockNodesFromDoc(doc) {
|
|
14
|
+
var content = doc.content;
|
|
15
|
+
var isEmpty = !content || !Array.isArray(content) || content.length === 0;
|
|
16
|
+
var syncBlockNodes = isEmpty ? [] : content.map(function (node) {
|
|
17
|
+
return (0, _editorSyncedBlockProvider.convertSyncBlockJSONNodeToSyncBlockNode)(node);
|
|
18
|
+
}).filter(function (node) {
|
|
19
|
+
return node !== undefined;
|
|
20
|
+
});
|
|
21
|
+
return syncBlockNodes;
|
|
22
|
+
};
|
|
12
23
|
var useMemoizedSyncedBlockNodeComponent = exports.useMemoizedSyncedBlockNodeComponent = function useMemoizedSyncedBlockNodeComponent(_ref) {
|
|
13
24
|
var syncBlockNodes = _ref.syncBlockNodes,
|
|
14
25
|
syncBlockProvider = _ref.syncBlockProvider,
|
|
15
26
|
syncBlockRendererOptions = _ref.syncBlockRendererOptions,
|
|
16
|
-
fireAnalyticsEvent = _ref.fireAnalyticsEvent
|
|
27
|
+
fireAnalyticsEvent = _ref.fireAnalyticsEvent,
|
|
28
|
+
getSSRData = _ref.getSSRData;
|
|
17
29
|
var syncBlockStoreManager = (0, _editorSyncedBlockProvider.useMemoizedSyncBlockStoreManager)(syncBlockProvider, fireAnalyticsEvent);
|
|
18
30
|
|
|
19
|
-
//
|
|
31
|
+
// Initialize SSR data if available
|
|
32
|
+
(0, _react.useEffect)(function () {
|
|
33
|
+
if (getSSRData && (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
34
|
+
var ssrData = getSSRData();
|
|
35
|
+
if (ssrData && syncBlockProvider.setSSRData) {
|
|
36
|
+
syncBlockProvider.setSSRData(ssrData);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, [getSSRData, syncBlockProvider]);
|
|
40
|
+
|
|
41
|
+
// Initial fetch sync block data (will use SSR data as initial cache if available)
|
|
20
42
|
(0, _react.useEffect)(function () {
|
|
21
43
|
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
22
44
|
}, [syncBlockNodes, syncBlockStoreManager.referenceManager]);
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setupExperienceTracking = exports.getSaveReferenceExperience = exports.getFetchSourceInfoExperience = exports.getFetchExperience = exports.createExperienceDispatcher = void 0;
|
|
7
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
8
|
+
var _experiences = require("@atlaskit/editor-common/experiences");
|
|
9
|
+
var setupExperienceTracking = exports.setupExperienceTracking = function setupExperienceTracking(syncBlockStoreManager, fireAnalyticsEvent) {
|
|
10
|
+
if (!fireAnalyticsEvent) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
var dispatchAnalyticsEvent = createExperienceDispatcher(fireAnalyticsEvent);
|
|
14
|
+
syncBlockStoreManager.referenceManager.setExperiences(getFetchExperience(dispatchAnalyticsEvent), getFetchSourceInfoExperience(dispatchAnalyticsEvent), getSaveReferenceExperience(dispatchAnalyticsEvent));
|
|
15
|
+
};
|
|
16
|
+
var createExperienceDispatcher = exports.createExperienceDispatcher = function createExperienceDispatcher(fireAnalyticsEvent) {
|
|
17
|
+
return function (payload) {
|
|
18
|
+
// Runtime type guard - only forward experience events
|
|
19
|
+
if (payload.action === 'experienceMeasured' || payload.action === 'experienceSampled') {
|
|
20
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent(payload);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* This experience tracks when a reference sync block data is fetched from the BE.
|
|
27
|
+
*
|
|
28
|
+
* Start: When the fetchNodesData function is called.
|
|
29
|
+
* Success: When the fetching the data is successful within 1500ms of start.
|
|
30
|
+
* Failure: When 1500ms passes without the data being successfully fetched, or the fetch fails
|
|
31
|
+
*/
|
|
32
|
+
var getFetchExperience = exports.getFetchExperience = function getFetchExperience(dispatchAnalyticsEvent) {
|
|
33
|
+
return new _experiences.Experience(_analytics.ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
34
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH,
|
|
35
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
36
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
37
|
+
durationMs: 1500
|
|
38
|
+
})]
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* This experience tracks when a reference sync block source info data (title, url) is fetched from the BE.
|
|
44
|
+
*
|
|
45
|
+
* Start: When the fetchSourceInfo function is called.
|
|
46
|
+
* Success: When the fetching the data is successful within 2500ms of start.
|
|
47
|
+
* Failure: When 2500ms passes without the data being successfully fetched, or the fetch fails
|
|
48
|
+
*/
|
|
49
|
+
var getFetchSourceInfoExperience = exports.getFetchSourceInfoExperience = function getFetchSourceInfoExperience(dispatchAnalyticsEvent) {
|
|
50
|
+
return new _experiences.Experience(_analytics.ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
51
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_GET_SOURCE_INFO,
|
|
52
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
53
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
54
|
+
durationMs: 2500
|
|
55
|
+
})]
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* This experience tracks when a reference sync block is saved to the BE.
|
|
61
|
+
*
|
|
62
|
+
* Start: When the flush sync block function is called.
|
|
63
|
+
* Success: When the sync block save is successful within 1500ms of start.
|
|
64
|
+
* Failure: When 1500ms passes before the sync block save is marked as successful
|
|
65
|
+
*/
|
|
66
|
+
var getSaveReferenceExperience = exports.getSaveReferenceExperience = function getSaveReferenceExperience(dispatchAnalyticsEvent) {
|
|
67
|
+
return new _experiences.Experience(_analytics.ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
68
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.REFERENCE_SYNCED_BLOCK_UPDATE,
|
|
69
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
70
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
71
|
+
durationMs: 1500
|
|
72
|
+
})]
|
|
73
|
+
});
|
|
74
|
+
};
|
package/dist/es2019/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
/* eslint-disable @atlaskit/editor/no-re-export */
|
|
2
|
-
export { useMemoizedSyncedBlockNodeComponent } from './useSyncedBlockNodeComponent';
|
|
3
|
-
export { getSyncedBlockNodeComponent, getSyncBlockNodesFromDoc } from './getSyncedBlockNodeComponent';
|
|
2
|
+
export { getSyncBlockNodesFromDoc, useMemoizedSyncedBlockNodeComponent } from './useSyncedBlockNodeComponent';
|
|
4
3
|
export { getSyncedBlockRenderer } from './getSyncedBlockRenderer';
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SyncBlockSharedCssClassName, SyncBlockRendererDataAttributeName } from '@atlaskit/editor-common/sync-block';
|
|
3
3
|
import { SyncBlockError, useFetchSyncBlockData } from '@atlaskit/editor-synced-block-provider';
|
|
4
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
|
+
import { setupExperienceTracking } from '../utils/experience-tracking';
|
|
4
6
|
import { AKRendererWrapper } from './AKRendererWrapper';
|
|
5
7
|
import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
|
|
6
8
|
import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
|
|
@@ -15,6 +17,9 @@ export const SyncedBlockNodeComponentRenderer = ({
|
|
|
15
17
|
fireAnalyticsEvent
|
|
16
18
|
} = nodeProps;
|
|
17
19
|
syncBlockStoreManager.referenceManager.updateFireAnalyticsEvent(fireAnalyticsEvent);
|
|
20
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
21
|
+
setupExperienceTracking(syncBlockStoreManager, fireAnalyticsEvent);
|
|
22
|
+
}
|
|
18
23
|
const {
|
|
19
24
|
syncBlockInstance,
|
|
20
25
|
isLoading,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import React, { memo } from 'react';
|
|
1
|
+
import React, { memo, useMemo } from 'react';
|
|
2
|
+
import { isSSR } from '@atlaskit/editor-common/core-utils';
|
|
2
3
|
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
|
|
3
4
|
import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
|
|
5
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
6
|
import { AKRendererWrapper } from './AKRendererWrapper';
|
|
5
7
|
import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
|
|
6
8
|
import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
|
|
@@ -13,8 +15,28 @@ const SyncedBlockRendererComponent = ({
|
|
|
13
15
|
syncBlockInstance,
|
|
14
16
|
providerFactory,
|
|
15
17
|
isLoading,
|
|
16
|
-
reloadData
|
|
18
|
+
reloadData,
|
|
19
|
+
ssrProviders
|
|
17
20
|
} = useFetchSyncBlockData();
|
|
21
|
+
const rendererOptions = useMemo(() => {
|
|
22
|
+
var _syncBlockRendererOpt, _ssrProviders$media;
|
|
23
|
+
if (!isSSR() || syncBlockRendererOptions !== null && syncBlockRendererOptions !== void 0 && (_syncBlockRendererOpt = syncBlockRendererOptions.media) !== null && _syncBlockRendererOpt !== void 0 && _syncBlockRendererOpt.ssr ||
|
|
24
|
+
// already has ssr config
|
|
25
|
+
!(ssrProviders !== null && ssrProviders !== void 0 && (_ssrProviders$media = ssrProviders.media) !== null && _ssrProviders$media !== void 0 && _ssrProviders$media.viewMediaClientConfig) || !fg('platform_synced_block_dogfooding')) {
|
|
26
|
+
return syncBlockRendererOptions;
|
|
27
|
+
}
|
|
28
|
+
const mediaSSR = {
|
|
29
|
+
mode: 'server',
|
|
30
|
+
config: ssrProviders === null || ssrProviders === void 0 ? void 0 : ssrProviders.media.viewMediaClientConfig
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
...syncBlockRendererOptions,
|
|
34
|
+
media: {
|
|
35
|
+
...((syncBlockRendererOptions === null || syncBlockRendererOptions === void 0 ? void 0 : syncBlockRendererOptions.media) || {}),
|
|
36
|
+
ssr: mediaSSR
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, [syncBlockRendererOptions, ssrProviders]);
|
|
18
40
|
const {
|
|
19
41
|
isInternetOffline
|
|
20
42
|
} = useSharedPluginStateWithSelector(api, ['connectivity'], ({
|
|
@@ -48,7 +70,7 @@ const SyncedBlockRendererComponent = ({
|
|
|
48
70
|
return /*#__PURE__*/React.createElement(AKRendererWrapper, {
|
|
49
71
|
doc: syncBlockDoc,
|
|
50
72
|
dataProviders: providerFactory,
|
|
51
|
-
options:
|
|
73
|
+
options: rendererOptions
|
|
52
74
|
});
|
|
53
75
|
};
|
|
54
76
|
export const SyncedBlockRenderer = /*#__PURE__*/memo(SyncedBlockRendererComponent);
|
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
-
import { useMemoizedSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
2
|
+
import { convertSyncBlockJSONNodeToSyncBlockNode, useMemoizedSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
|
|
5
|
+
export const getSyncBlockNodesFromDoc = doc => {
|
|
6
|
+
const {
|
|
7
|
+
content
|
|
8
|
+
} = doc;
|
|
9
|
+
const isEmpty = !content || !Array.isArray(content) || content.length === 0;
|
|
10
|
+
const syncBlockNodes = isEmpty ? [] : content.map(node => convertSyncBlockJSONNodeToSyncBlockNode(node)).filter(node => node !== undefined);
|
|
11
|
+
return syncBlockNodes;
|
|
12
|
+
};
|
|
4
13
|
export const useMemoizedSyncedBlockNodeComponent = ({
|
|
5
14
|
syncBlockNodes,
|
|
6
15
|
syncBlockProvider,
|
|
7
16
|
syncBlockRendererOptions,
|
|
8
|
-
fireAnalyticsEvent
|
|
17
|
+
fireAnalyticsEvent,
|
|
18
|
+
getSSRData
|
|
9
19
|
}) => {
|
|
10
20
|
const syncBlockStoreManager = useMemoizedSyncBlockStoreManager(syncBlockProvider, fireAnalyticsEvent);
|
|
11
21
|
|
|
12
|
-
//
|
|
22
|
+
// Initialize SSR data if available
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (getSSRData && fg('platform_synced_block_dogfooding')) {
|
|
25
|
+
const ssrData = getSSRData();
|
|
26
|
+
if (ssrData && syncBlockProvider.setSSRData) {
|
|
27
|
+
syncBlockProvider.setSSRData(ssrData);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}, [getSSRData, syncBlockProvider]);
|
|
31
|
+
|
|
32
|
+
// Initial fetch sync block data (will use SSR data as initial cache if available)
|
|
13
33
|
useEffect(() => {
|
|
14
34
|
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
15
35
|
}, [syncBlockNodes, syncBlockStoreManager.referenceManager]);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ACTION_SUBJECT, ACTION_SUBJECT_ID } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { Experience, ExperienceCheckTimeout } from '@atlaskit/editor-common/experiences';
|
|
3
|
+
export const setupExperienceTracking = (syncBlockStoreManager, fireAnalyticsEvent) => {
|
|
4
|
+
if (!fireAnalyticsEvent) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const dispatchAnalyticsEvent = createExperienceDispatcher(fireAnalyticsEvent);
|
|
8
|
+
syncBlockStoreManager.referenceManager.setExperiences(getFetchExperience(dispatchAnalyticsEvent), getFetchSourceInfoExperience(dispatchAnalyticsEvent), getSaveReferenceExperience(dispatchAnalyticsEvent));
|
|
9
|
+
};
|
|
10
|
+
export const createExperienceDispatcher = fireAnalyticsEvent => {
|
|
11
|
+
return payload => {
|
|
12
|
+
// Runtime type guard - only forward experience events
|
|
13
|
+
if (payload.action === 'experienceMeasured' || payload.action === 'experienceSampled') {
|
|
14
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 ? void 0 : fireAnalyticsEvent(payload);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* This experience tracks when a reference sync block data is fetched from the BE.
|
|
21
|
+
*
|
|
22
|
+
* Start: When the fetchNodesData function is called.
|
|
23
|
+
* Success: When the fetching the data is successful within 1500ms of start.
|
|
24
|
+
* Failure: When 1500ms passes without the data being successfully fetched, or the fetch fails
|
|
25
|
+
*/
|
|
26
|
+
export const getFetchExperience = dispatchAnalyticsEvent => {
|
|
27
|
+
return new Experience(ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
28
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH,
|
|
29
|
+
dispatchAnalyticsEvent,
|
|
30
|
+
checks: [new ExperienceCheckTimeout({
|
|
31
|
+
durationMs: 1500
|
|
32
|
+
})]
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* This experience tracks when a reference sync block source info data (title, url) is fetched from the BE.
|
|
38
|
+
*
|
|
39
|
+
* Start: When the fetchSourceInfo function is called.
|
|
40
|
+
* Success: When the fetching the data is successful within 2500ms of start.
|
|
41
|
+
* Failure: When 2500ms passes without the data being successfully fetched, or the fetch fails
|
|
42
|
+
*/
|
|
43
|
+
export const getFetchSourceInfoExperience = dispatchAnalyticsEvent => {
|
|
44
|
+
return new Experience(ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
45
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_GET_SOURCE_INFO,
|
|
46
|
+
dispatchAnalyticsEvent,
|
|
47
|
+
checks: [new ExperienceCheckTimeout({
|
|
48
|
+
durationMs: 2500
|
|
49
|
+
})]
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* This experience tracks when a reference sync block is saved to the BE.
|
|
55
|
+
*
|
|
56
|
+
* Start: When the flush sync block function is called.
|
|
57
|
+
* Success: When the sync block save is successful within 1500ms of start.
|
|
58
|
+
* Failure: When 1500ms passes before the sync block save is marked as successful
|
|
59
|
+
*/
|
|
60
|
+
export const getSaveReferenceExperience = dispatchAnalyticsEvent => {
|
|
61
|
+
return new Experience(ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
62
|
+
actionSubjectId: ACTION_SUBJECT_ID.REFERENCE_SYNCED_BLOCK_UPDATE,
|
|
63
|
+
dispatchAnalyticsEvent,
|
|
64
|
+
checks: [new ExperienceCheckTimeout({
|
|
65
|
+
durationMs: 1500
|
|
66
|
+
})]
|
|
67
|
+
});
|
|
68
|
+
};
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
/* eslint-disable @atlaskit/editor/no-re-export */
|
|
2
|
-
export { useMemoizedSyncedBlockNodeComponent } from './useSyncedBlockNodeComponent';
|
|
3
|
-
export { getSyncedBlockNodeComponent, getSyncBlockNodesFromDoc } from './getSyncedBlockNodeComponent';
|
|
2
|
+
export { getSyncBlockNodesFromDoc, useMemoizedSyncedBlockNodeComponent } from './useSyncedBlockNodeComponent';
|
|
4
3
|
export { getSyncedBlockRenderer } from './getSyncedBlockRenderer';
|
|
@@ -3,6 +3,8 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { SyncBlockSharedCssClassName, SyncBlockRendererDataAttributeName } from '@atlaskit/editor-common/sync-block';
|
|
5
5
|
import { SyncBlockError, useFetchSyncBlockData } from '@atlaskit/editor-synced-block-provider';
|
|
6
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
|
+
import { setupExperienceTracking } from '../utils/experience-tracking';
|
|
6
8
|
import { AKRendererWrapper } from './AKRendererWrapper';
|
|
7
9
|
import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
|
|
8
10
|
import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
|
|
@@ -14,6 +16,9 @@ export var SyncedBlockNodeComponentRenderer = function SyncedBlockNodeComponentR
|
|
|
14
16
|
localId = nodeProps.localId,
|
|
15
17
|
fireAnalyticsEvent = nodeProps.fireAnalyticsEvent;
|
|
16
18
|
syncBlockStoreManager.referenceManager.updateFireAnalyticsEvent(fireAnalyticsEvent);
|
|
19
|
+
if (fg('platform_synced_block_dogfooding')) {
|
|
20
|
+
setupExperienceTracking(syncBlockStoreManager, fireAnalyticsEvent);
|
|
21
|
+
}
|
|
17
22
|
var _useFetchSyncBlockDat = useFetchSyncBlockData(syncBlockStoreManager, resourceId, localId, fireAnalyticsEvent),
|
|
18
23
|
syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
|
|
19
24
|
isLoading = _useFetchSyncBlockDat.isLoading,
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import React, { memo, useMemo } from 'react';
|
|
5
|
+
import { isSSR } from '@atlaskit/editor-common/core-utils';
|
|
2
6
|
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
|
|
3
7
|
import { SyncBlockError } from '@atlaskit/editor-synced-block-provider';
|
|
8
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
9
|
import { AKRendererWrapper } from './AKRendererWrapper';
|
|
5
10
|
import { SyncedBlockErrorComponent } from './SyncedBlockErrorComponent';
|
|
6
11
|
import { SyncedBlockLoadingState } from './SyncedBlockLoadingState';
|
|
@@ -12,7 +17,25 @@ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
|
|
|
12
17
|
syncBlockInstance = _useFetchSyncBlockDat.syncBlockInstance,
|
|
13
18
|
providerFactory = _useFetchSyncBlockDat.providerFactory,
|
|
14
19
|
isLoading = _useFetchSyncBlockDat.isLoading,
|
|
15
|
-
reloadData = _useFetchSyncBlockDat.reloadData
|
|
20
|
+
reloadData = _useFetchSyncBlockDat.reloadData,
|
|
21
|
+
ssrProviders = _useFetchSyncBlockDat.ssrProviders;
|
|
22
|
+
var rendererOptions = useMemo(function () {
|
|
23
|
+
var _syncBlockRendererOpt, _ssrProviders$media;
|
|
24
|
+
if (!isSSR() || syncBlockRendererOptions !== null && syncBlockRendererOptions !== void 0 && (_syncBlockRendererOpt = syncBlockRendererOptions.media) !== null && _syncBlockRendererOpt !== void 0 && _syncBlockRendererOpt.ssr ||
|
|
25
|
+
// already has ssr config
|
|
26
|
+
!(ssrProviders !== null && ssrProviders !== void 0 && (_ssrProviders$media = ssrProviders.media) !== null && _ssrProviders$media !== void 0 && _ssrProviders$media.viewMediaClientConfig) || !fg('platform_synced_block_dogfooding')) {
|
|
27
|
+
return syncBlockRendererOptions;
|
|
28
|
+
}
|
|
29
|
+
var mediaSSR = {
|
|
30
|
+
mode: 'server',
|
|
31
|
+
config: ssrProviders === null || ssrProviders === void 0 ? void 0 : ssrProviders.media.viewMediaClientConfig
|
|
32
|
+
};
|
|
33
|
+
return _objectSpread(_objectSpread({}, syncBlockRendererOptions), {}, {
|
|
34
|
+
media: _objectSpread(_objectSpread({}, (syncBlockRendererOptions === null || syncBlockRendererOptions === void 0 ? void 0 : syncBlockRendererOptions.media) || {}), {}, {
|
|
35
|
+
ssr: mediaSSR
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
}, [syncBlockRendererOptions, ssrProviders]);
|
|
16
39
|
var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['connectivity'], function (_ref2) {
|
|
17
40
|
var connectivityState = _ref2.connectivityState;
|
|
18
41
|
return {
|
|
@@ -46,7 +69,7 @@ var SyncedBlockRendererComponent = function SyncedBlockRendererComponent(_ref) {
|
|
|
46
69
|
return /*#__PURE__*/React.createElement(AKRendererWrapper, {
|
|
47
70
|
doc: syncBlockDoc,
|
|
48
71
|
dataProviders: providerFactory,
|
|
49
|
-
options:
|
|
72
|
+
options: rendererOptions
|
|
50
73
|
});
|
|
51
74
|
};
|
|
52
75
|
export var SyncedBlockRenderer = /*#__PURE__*/memo(SyncedBlockRendererComponent);
|
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
-
import { useMemoizedSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
2
|
+
import { convertSyncBlockJSONNodeToSyncBlockNode, useMemoizedSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
|
|
5
|
+
export var getSyncBlockNodesFromDoc = function getSyncBlockNodesFromDoc(doc) {
|
|
6
|
+
var content = doc.content;
|
|
7
|
+
var isEmpty = !content || !Array.isArray(content) || content.length === 0;
|
|
8
|
+
var syncBlockNodes = isEmpty ? [] : content.map(function (node) {
|
|
9
|
+
return convertSyncBlockJSONNodeToSyncBlockNode(node);
|
|
10
|
+
}).filter(function (node) {
|
|
11
|
+
return node !== undefined;
|
|
12
|
+
});
|
|
13
|
+
return syncBlockNodes;
|
|
14
|
+
};
|
|
4
15
|
export var useMemoizedSyncedBlockNodeComponent = function useMemoizedSyncedBlockNodeComponent(_ref) {
|
|
5
16
|
var syncBlockNodes = _ref.syncBlockNodes,
|
|
6
17
|
syncBlockProvider = _ref.syncBlockProvider,
|
|
7
18
|
syncBlockRendererOptions = _ref.syncBlockRendererOptions,
|
|
8
|
-
fireAnalyticsEvent = _ref.fireAnalyticsEvent
|
|
19
|
+
fireAnalyticsEvent = _ref.fireAnalyticsEvent,
|
|
20
|
+
getSSRData = _ref.getSSRData;
|
|
9
21
|
var syncBlockStoreManager = useMemoizedSyncBlockStoreManager(syncBlockProvider, fireAnalyticsEvent);
|
|
10
22
|
|
|
11
|
-
//
|
|
23
|
+
// Initialize SSR data if available
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
if (getSSRData && fg('platform_synced_block_dogfooding')) {
|
|
26
|
+
var ssrData = getSSRData();
|
|
27
|
+
if (ssrData && syncBlockProvider.setSSRData) {
|
|
28
|
+
syncBlockProvider.setSSRData(ssrData);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}, [getSSRData, syncBlockProvider]);
|
|
32
|
+
|
|
33
|
+
// Initial fetch sync block data (will use SSR data as initial cache if available)
|
|
12
34
|
useEffect(function () {
|
|
13
35
|
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
14
36
|
}, [syncBlockNodes, syncBlockStoreManager.referenceManager]);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ACTION_SUBJECT, ACTION_SUBJECT_ID } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { Experience, ExperienceCheckTimeout } from '@atlaskit/editor-common/experiences';
|
|
3
|
+
export var setupExperienceTracking = function setupExperienceTracking(syncBlockStoreManager, fireAnalyticsEvent) {
|
|
4
|
+
if (!fireAnalyticsEvent) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
var dispatchAnalyticsEvent = createExperienceDispatcher(fireAnalyticsEvent);
|
|
8
|
+
syncBlockStoreManager.referenceManager.setExperiences(getFetchExperience(dispatchAnalyticsEvent), getFetchSourceInfoExperience(dispatchAnalyticsEvent), getSaveReferenceExperience(dispatchAnalyticsEvent));
|
|
9
|
+
};
|
|
10
|
+
export var createExperienceDispatcher = function createExperienceDispatcher(fireAnalyticsEvent) {
|
|
11
|
+
return function (payload) {
|
|
12
|
+
// Runtime type guard - only forward experience events
|
|
13
|
+
if (payload.action === 'experienceMeasured' || payload.action === 'experienceSampled') {
|
|
14
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent(payload);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* This experience tracks when a reference sync block data is fetched from the BE.
|
|
21
|
+
*
|
|
22
|
+
* Start: When the fetchNodesData function is called.
|
|
23
|
+
* Success: When the fetching the data is successful within 1500ms of start.
|
|
24
|
+
* Failure: When 1500ms passes without the data being successfully fetched, or the fetch fails
|
|
25
|
+
*/
|
|
26
|
+
export var getFetchExperience = function getFetchExperience(dispatchAnalyticsEvent) {
|
|
27
|
+
return new Experience(ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
28
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH,
|
|
29
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
30
|
+
checks: [new ExperienceCheckTimeout({
|
|
31
|
+
durationMs: 1500
|
|
32
|
+
})]
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* This experience tracks when a reference sync block source info data (title, url) is fetched from the BE.
|
|
38
|
+
*
|
|
39
|
+
* Start: When the fetchSourceInfo function is called.
|
|
40
|
+
* Success: When the fetching the data is successful within 2500ms of start.
|
|
41
|
+
* Failure: When 2500ms passes without the data being successfully fetched, or the fetch fails
|
|
42
|
+
*/
|
|
43
|
+
export var getFetchSourceInfoExperience = function getFetchSourceInfoExperience(dispatchAnalyticsEvent) {
|
|
44
|
+
return new Experience(ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
45
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_GET_SOURCE_INFO,
|
|
46
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
47
|
+
checks: [new ExperienceCheckTimeout({
|
|
48
|
+
durationMs: 2500
|
|
49
|
+
})]
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* This experience tracks when a reference sync block is saved to the BE.
|
|
55
|
+
*
|
|
56
|
+
* Start: When the flush sync block function is called.
|
|
57
|
+
* Success: When the sync block save is successful within 1500ms of start.
|
|
58
|
+
* Failure: When 1500ms passes before the sync block save is marked as successful
|
|
59
|
+
*/
|
|
60
|
+
export var getSaveReferenceExperience = function getSaveReferenceExperience(dispatchAnalyticsEvent) {
|
|
61
|
+
return new Experience(ACTION_SUBJECT.SYNCED_BLOCK, {
|
|
62
|
+
actionSubjectId: ACTION_SUBJECT_ID.REFERENCE_SYNCED_BLOCK_UPDATE,
|
|
63
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
64
|
+
checks: [new ExperienceCheckTimeout({
|
|
65
|
+
durationMs: 1500
|
|
66
|
+
})]
|
|
67
|
+
});
|
|
68
|
+
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { useMemoizedSyncedBlockNodeComponent } from './useSyncedBlockNodeComponent';
|
|
2
|
-
export { getSyncedBlockNodeComponent, getSyncBlockNodesFromDoc, } from './getSyncedBlockNodeComponent';
|
|
1
|
+
export { getSyncBlockNodesFromDoc, useMemoizedSyncedBlockNodeComponent, type GetSyncedBlockNodeComponentProps, } from './useSyncedBlockNodeComponent';
|
|
3
2
|
export { getSyncedBlockRenderer } from './getSyncedBlockRenderer';
|
|
4
3
|
export type { SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { DocNode } from '@atlaskit/adf-schema';
|
|
3
|
+
import type { SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
|
|
4
|
+
import { type SyncBlockInstance, type SyncBlockNode } from '@atlaskit/editor-synced-block-provider';
|
|
5
|
+
import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
|
|
6
|
+
import type { SyncedBlockRendererOptions } from './types';
|
|
3
7
|
import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
4
|
-
export
|
|
8
|
+
export type GetSyncedBlockNodeComponentProps = {
|
|
9
|
+
fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void;
|
|
10
|
+
getSSRData?: () => Record<string, SyncBlockInstance> | undefined;
|
|
11
|
+
syncBlockNodes: SyncBlockNode[];
|
|
12
|
+
syncBlockProvider: SyncedBlockProvider;
|
|
13
|
+
syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
|
|
14
|
+
};
|
|
15
|
+
export declare const getSyncBlockNodesFromDoc: (doc: DocNode) => SyncBlockNode[];
|
|
16
|
+
export declare const useMemoizedSyncedBlockNodeComponent: ({ syncBlockNodes, syncBlockProvider, syncBlockRendererOptions, fireAnalyticsEvent, getSSRData, }: GetSyncedBlockNodeComponentProps) => ((props: SyncedBlockNodeProps) => React.JSX.Element);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type DispatchAnalyticsEvent } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { Experience } from '@atlaskit/editor-common/experiences';
|
|
3
|
+
import type { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
4
|
+
import type { AnalyticsEventPayload as RendererAnalyticsEventPayload } from '@atlaskit/renderer';
|
|
5
|
+
export declare const setupExperienceTracking: (syncBlockStoreManager: SyncBlockStoreManager, fireAnalyticsEvent?: ((payload: RendererAnalyticsEventPayload) => void)) => void;
|
|
6
|
+
export declare const createExperienceDispatcher: (fireAnalyticsEvent?: ((payload: RendererAnalyticsEventPayload) => void)) => DispatchAnalyticsEvent;
|
|
7
|
+
/**
|
|
8
|
+
* This experience tracks when a reference sync block data is fetched from the BE.
|
|
9
|
+
*
|
|
10
|
+
* Start: When the fetchNodesData function is called.
|
|
11
|
+
* Success: When the fetching the data is successful within 1500ms of start.
|
|
12
|
+
* Failure: When 1500ms passes without the data being successfully fetched, or the fetch fails
|
|
13
|
+
*/
|
|
14
|
+
export declare const getFetchExperience: (dispatchAnalyticsEvent: DispatchAnalyticsEvent) => Experience;
|
|
15
|
+
/**
|
|
16
|
+
* This experience tracks when a reference sync block source info data (title, url) is fetched from the BE.
|
|
17
|
+
*
|
|
18
|
+
* Start: When the fetchSourceInfo function is called.
|
|
19
|
+
* Success: When the fetching the data is successful within 2500ms of start.
|
|
20
|
+
* Failure: When 2500ms passes without the data being successfully fetched, or the fetch fails
|
|
21
|
+
*/
|
|
22
|
+
export declare const getFetchSourceInfoExperience: (dispatchAnalyticsEvent: DispatchAnalyticsEvent) => Experience;
|
|
23
|
+
/**
|
|
24
|
+
* This experience tracks when a reference sync block is saved to the BE.
|
|
25
|
+
*
|
|
26
|
+
* Start: When the flush sync block function is called.
|
|
27
|
+
* Success: When the sync block save is successful within 1500ms of start.
|
|
28
|
+
* Failure: When 1500ms passes before the sync block save is marked as successful
|
|
29
|
+
*/
|
|
30
|
+
export declare const getSaveReferenceExperience: (dispatchAnalyticsEvent: DispatchAnalyticsEvent) => Experience;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { useMemoizedSyncedBlockNodeComponent } from './useSyncedBlockNodeComponent';
|
|
2
|
-
export { getSyncedBlockNodeComponent, getSyncBlockNodesFromDoc, } from './getSyncedBlockNodeComponent';
|
|
1
|
+
export { getSyncBlockNodesFromDoc, useMemoizedSyncedBlockNodeComponent, type GetSyncedBlockNodeComponentProps, } from './useSyncedBlockNodeComponent';
|
|
3
2
|
export { getSyncedBlockRenderer } from './getSyncedBlockRenderer';
|
|
4
3
|
export type { SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { DocNode } from '@atlaskit/adf-schema';
|
|
3
|
+
import type { SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
|
|
4
|
+
import { type SyncBlockInstance, type SyncBlockNode } from '@atlaskit/editor-synced-block-provider';
|
|
5
|
+
import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
|
|
6
|
+
import type { SyncedBlockRendererOptions } from './types';
|
|
3
7
|
import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
4
|
-
export
|
|
8
|
+
export type GetSyncedBlockNodeComponentProps = {
|
|
9
|
+
fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void;
|
|
10
|
+
getSSRData?: () => Record<string, SyncBlockInstance> | undefined;
|
|
11
|
+
syncBlockNodes: SyncBlockNode[];
|
|
12
|
+
syncBlockProvider: SyncedBlockProvider;
|
|
13
|
+
syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
|
|
14
|
+
};
|
|
15
|
+
export declare const getSyncBlockNodesFromDoc: (doc: DocNode) => SyncBlockNode[];
|
|
16
|
+
export declare const useMemoizedSyncedBlockNodeComponent: ({ syncBlockNodes, syncBlockProvider, syncBlockRendererOptions, fireAnalyticsEvent, getSSRData, }: GetSyncedBlockNodeComponentProps) => ((props: SyncedBlockNodeProps) => React.JSX.Element);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type DispatchAnalyticsEvent } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { Experience } from '@atlaskit/editor-common/experiences';
|
|
3
|
+
import type { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
4
|
+
import type { AnalyticsEventPayload as RendererAnalyticsEventPayload } from '@atlaskit/renderer';
|
|
5
|
+
export declare const setupExperienceTracking: (syncBlockStoreManager: SyncBlockStoreManager, fireAnalyticsEvent?: ((payload: RendererAnalyticsEventPayload) => void)) => void;
|
|
6
|
+
export declare const createExperienceDispatcher: (fireAnalyticsEvent?: ((payload: RendererAnalyticsEventPayload) => void)) => DispatchAnalyticsEvent;
|
|
7
|
+
/**
|
|
8
|
+
* This experience tracks when a reference sync block data is fetched from the BE.
|
|
9
|
+
*
|
|
10
|
+
* Start: When the fetchNodesData function is called.
|
|
11
|
+
* Success: When the fetching the data is successful within 1500ms of start.
|
|
12
|
+
* Failure: When 1500ms passes without the data being successfully fetched, or the fetch fails
|
|
13
|
+
*/
|
|
14
|
+
export declare const getFetchExperience: (dispatchAnalyticsEvent: DispatchAnalyticsEvent) => Experience;
|
|
15
|
+
/**
|
|
16
|
+
* This experience tracks when a reference sync block source info data (title, url) is fetched from the BE.
|
|
17
|
+
*
|
|
18
|
+
* Start: When the fetchSourceInfo function is called.
|
|
19
|
+
* Success: When the fetching the data is successful within 2500ms of start.
|
|
20
|
+
* Failure: When 2500ms passes without the data being successfully fetched, or the fetch fails
|
|
21
|
+
*/
|
|
22
|
+
export declare const getFetchSourceInfoExperience: (dispatchAnalyticsEvent: DispatchAnalyticsEvent) => Experience;
|
|
23
|
+
/**
|
|
24
|
+
* This experience tracks when a reference sync block is saved to the BE.
|
|
25
|
+
*
|
|
26
|
+
* Start: When the flush sync block function is called.
|
|
27
|
+
* Success: When the sync block save is successful within 1500ms of start.
|
|
28
|
+
* Failure: When 1500ms passes before the sync block save is marked as successful
|
|
29
|
+
*/
|
|
30
|
+
export declare const getSaveReferenceExperience: (dispatchAnalyticsEvent: DispatchAnalyticsEvent) => Experience;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-synced-block-renderer",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"description": "SyncedBlockRenderer for @atlaskit/editor-plugin-synced-block",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,22 +31,23 @@
|
|
|
31
31
|
"@atlaskit/button": "^23.9.0",
|
|
32
32
|
"@atlaskit/css": "^0.19.0",
|
|
33
33
|
"@atlaskit/editor-plugin-synced-block": "^5.1.0",
|
|
34
|
-
"@atlaskit/editor-synced-block-provider": "^3.
|
|
34
|
+
"@atlaskit/editor-synced-block-provider": "^3.6.0",
|
|
35
35
|
"@atlaskit/heading": "^5.2.0",
|
|
36
36
|
"@atlaskit/icon": "^29.4.0",
|
|
37
|
-
"@atlaskit/icon-lab": "^5.
|
|
37
|
+
"@atlaskit/icon-lab": "^5.14.0",
|
|
38
38
|
"@atlaskit/image": "^3.0.0",
|
|
39
|
+
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
39
40
|
"@atlaskit/primitives": "^17.0.0",
|
|
40
|
-
"@atlaskit/renderer": "^125.
|
|
41
|
+
"@atlaskit/renderer": "^125.4.0",
|
|
41
42
|
"@atlaskit/spinner": "^19.0.0",
|
|
42
43
|
"@atlaskit/tokens": "^9.1.0",
|
|
43
|
-
"@atlaskit/tooltip": "^20.
|
|
44
|
+
"@atlaskit/tooltip": "^20.14.0",
|
|
44
45
|
"@babel/runtime": "^7.0.0",
|
|
45
46
|
"react-relay": "npm:atl-react-relay@0.0.0-main-39e79f66",
|
|
46
47
|
"relay-runtime": "npm:atl-relay-runtime@0.0.0-main-39e79f66"
|
|
47
48
|
},
|
|
48
49
|
"peerDependencies": {
|
|
49
|
-
"@atlaskit/editor-common": "^111.
|
|
50
|
+
"@atlaskit/editor-common": "^111.8.0",
|
|
50
51
|
"react": "^18.2.0",
|
|
51
52
|
"react-intl-next": "npm:react-intl@^5.18.1"
|
|
52
53
|
},
|
|
@@ -85,5 +86,10 @@
|
|
|
85
86
|
"import-no-extraneous-disable-for-examples-and-docs"
|
|
86
87
|
]
|
|
87
88
|
}
|
|
89
|
+
},
|
|
90
|
+
"platform-feature-flags": {
|
|
91
|
+
"platform_synced_block_dogfooding": {
|
|
92
|
+
"type": "boolean"
|
|
93
|
+
}
|
|
88
94
|
}
|
|
89
95
|
}
|
package/build/tsconfig.json
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../tsconfig",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"target": "es5",
|
|
5
|
-
"paths": {}
|
|
6
|
-
},
|
|
7
|
-
"include": [
|
|
8
|
-
"../src/**/*.ts",
|
|
9
|
-
"../src/**/*.tsx"
|
|
10
|
-
],
|
|
11
|
-
"exclude": [
|
|
12
|
-
"../src/**/__tests__/*",
|
|
13
|
-
"../src/**/*.test.*",
|
|
14
|
-
"../src/**/test.*",
|
|
15
|
-
"../src/**/examples.*",
|
|
16
|
-
"../src/**/examples/*",
|
|
17
|
-
"../src/**/examples/**/*",
|
|
18
|
-
"../src/**/*.stories.*",
|
|
19
|
-
"../src/**/stories/*",
|
|
20
|
-
"../src/**/stories/**/*"
|
|
21
|
-
]
|
|
22
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.getSyncedBlockNodeComponent = exports.getSyncBlockNodesFromDoc = void 0;
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
|
|
10
|
-
var _SyncedBlockNodeComponentRenderer = require("./ui/SyncedBlockNodeComponentRenderer");
|
|
11
|
-
var getSyncBlockNodesFromDoc = exports.getSyncBlockNodesFromDoc = function getSyncBlockNodesFromDoc(doc) {
|
|
12
|
-
var content = doc.content;
|
|
13
|
-
var isEmpty = !content || !Array.isArray(content) || content.length === 0;
|
|
14
|
-
var syncBlockNodes = isEmpty ? [] : content.map(function (node) {
|
|
15
|
-
return (0, _editorSyncedBlockProvider.convertSyncBlockJSONNodeToSyncBlockNode)(node);
|
|
16
|
-
}).filter(function (node) {
|
|
17
|
-
return node !== undefined;
|
|
18
|
-
});
|
|
19
|
-
return syncBlockNodes;
|
|
20
|
-
};
|
|
21
|
-
var getSyncedBlockNodeComponent = exports.getSyncedBlockNodeComponent = function getSyncedBlockNodeComponent(_ref) {
|
|
22
|
-
var syncBlockNodes = _ref.syncBlockNodes,
|
|
23
|
-
syncBlockProvider = _ref.syncBlockProvider,
|
|
24
|
-
syncBlockRendererOptions = _ref.syncBlockRendererOptions,
|
|
25
|
-
fireAnalyticsEvent = _ref.fireAnalyticsEvent;
|
|
26
|
-
var syncBlockStoreManager = (0, _editorSyncedBlockProvider.createAndInitializeSyncBlockStoreManager)({
|
|
27
|
-
dataProvider: syncBlockProvider,
|
|
28
|
-
fireAnalyticsEvent: fireAnalyticsEvent
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
// Initial fetch sync block data
|
|
32
|
-
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
33
|
-
return function (props) {
|
|
34
|
-
return /*#__PURE__*/_react.default.createElement(_SyncedBlockNodeComponentRenderer.SyncedBlockNodeComponentRenderer, {
|
|
35
|
-
key: props.localId,
|
|
36
|
-
nodeProps: props,
|
|
37
|
-
syncBlockStoreManager: syncBlockStoreManager,
|
|
38
|
-
rendererOptions: syncBlockRendererOptions
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { convertSyncBlockJSONNodeToSyncBlockNode, createAndInitializeSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
3
|
-
import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
|
|
4
|
-
export const getSyncBlockNodesFromDoc = doc => {
|
|
5
|
-
const {
|
|
6
|
-
content
|
|
7
|
-
} = doc;
|
|
8
|
-
const isEmpty = !content || !Array.isArray(content) || content.length === 0;
|
|
9
|
-
const syncBlockNodes = isEmpty ? [] : content.map(node => convertSyncBlockJSONNodeToSyncBlockNode(node)).filter(node => node !== undefined);
|
|
10
|
-
return syncBlockNodes;
|
|
11
|
-
};
|
|
12
|
-
export const getSyncedBlockNodeComponent = ({
|
|
13
|
-
syncBlockNodes,
|
|
14
|
-
syncBlockProvider,
|
|
15
|
-
syncBlockRendererOptions,
|
|
16
|
-
fireAnalyticsEvent
|
|
17
|
-
}) => {
|
|
18
|
-
const syncBlockStoreManager = createAndInitializeSyncBlockStoreManager({
|
|
19
|
-
dataProvider: syncBlockProvider,
|
|
20
|
-
fireAnalyticsEvent
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// Initial fetch sync block data
|
|
24
|
-
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
25
|
-
return props => /*#__PURE__*/React.createElement(SyncedBlockNodeComponentRenderer, {
|
|
26
|
-
key: props.localId,
|
|
27
|
-
nodeProps: props,
|
|
28
|
-
syncBlockStoreManager: syncBlockStoreManager,
|
|
29
|
-
rendererOptions: syncBlockRendererOptions
|
|
30
|
-
});
|
|
31
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { convertSyncBlockJSONNodeToSyncBlockNode, createAndInitializeSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
3
|
-
import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
|
|
4
|
-
export var getSyncBlockNodesFromDoc = function getSyncBlockNodesFromDoc(doc) {
|
|
5
|
-
var content = doc.content;
|
|
6
|
-
var isEmpty = !content || !Array.isArray(content) || content.length === 0;
|
|
7
|
-
var syncBlockNodes = isEmpty ? [] : content.map(function (node) {
|
|
8
|
-
return convertSyncBlockJSONNodeToSyncBlockNode(node);
|
|
9
|
-
}).filter(function (node) {
|
|
10
|
-
return node !== undefined;
|
|
11
|
-
});
|
|
12
|
-
return syncBlockNodes;
|
|
13
|
-
};
|
|
14
|
-
export var getSyncedBlockNodeComponent = function getSyncedBlockNodeComponent(_ref) {
|
|
15
|
-
var syncBlockNodes = _ref.syncBlockNodes,
|
|
16
|
-
syncBlockProvider = _ref.syncBlockProvider,
|
|
17
|
-
syncBlockRendererOptions = _ref.syncBlockRendererOptions,
|
|
18
|
-
fireAnalyticsEvent = _ref.fireAnalyticsEvent;
|
|
19
|
-
var syncBlockStoreManager = createAndInitializeSyncBlockStoreManager({
|
|
20
|
-
dataProvider: syncBlockProvider,
|
|
21
|
-
fireAnalyticsEvent: fireAnalyticsEvent
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
// Initial fetch sync block data
|
|
25
|
-
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
26
|
-
return function (props) {
|
|
27
|
-
return /*#__PURE__*/React.createElement(SyncedBlockNodeComponentRenderer, {
|
|
28
|
-
key: props.localId,
|
|
29
|
-
nodeProps: props,
|
|
30
|
-
syncBlockStoreManager: syncBlockStoreManager,
|
|
31
|
-
rendererOptions: syncBlockRendererOptions
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { DocNode } from '@atlaskit/adf-schema';
|
|
3
|
-
import type { SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
|
|
4
|
-
import { type SyncBlockNode } from '@atlaskit/editor-synced-block-provider';
|
|
5
|
-
import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
|
|
6
|
-
import type { SyncedBlockRendererOptions } from './types';
|
|
7
|
-
import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
8
|
-
export type GetSyncedBlockNodeComponentProps = {
|
|
9
|
-
fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void;
|
|
10
|
-
syncBlockNodes: SyncBlockNode[];
|
|
11
|
-
syncBlockProvider: SyncedBlockProvider;
|
|
12
|
-
syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
|
|
13
|
-
};
|
|
14
|
-
export declare const getSyncBlockNodesFromDoc: (doc: DocNode) => SyncBlockNode[];
|
|
15
|
-
export declare const getSyncedBlockNodeComponent: ({ syncBlockNodes, syncBlockProvider, syncBlockRendererOptions, fireAnalyticsEvent, }: GetSyncedBlockNodeComponentProps) => (props: SyncedBlockNodeProps) => React.JSX.Element;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { DocNode } from '@atlaskit/adf-schema';
|
|
3
|
-
import type { SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
|
|
4
|
-
import { type SyncBlockNode } from '@atlaskit/editor-synced-block-provider';
|
|
5
|
-
import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
|
|
6
|
-
import type { SyncedBlockRendererOptions } from './types';
|
|
7
|
-
import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
8
|
-
export type GetSyncedBlockNodeComponentProps = {
|
|
9
|
-
fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void;
|
|
10
|
-
syncBlockNodes: SyncBlockNode[];
|
|
11
|
-
syncBlockProvider: SyncedBlockProvider;
|
|
12
|
-
syncBlockRendererOptions: SyncedBlockRendererOptions | undefined;
|
|
13
|
-
};
|
|
14
|
-
export declare const getSyncBlockNodesFromDoc: (doc: DocNode) => SyncBlockNode[];
|
|
15
|
-
export declare const getSyncedBlockNodeComponent: ({ syncBlockNodes, syncBlockProvider, syncBlockRendererOptions, fireAnalyticsEvent, }: GetSyncedBlockNodeComponentProps) => (props: SyncedBlockNodeProps) => React.JSX.Element;
|