@atlaskit/editor-synced-block-renderer 5.1.0 → 5.2.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 +21 -0
- package/afm-cc/tsconfig.json +1 -1
- package/afm-jira/tsconfig.json +3 -0
- package/afm-products/tsconfig.json +3 -0
- package/dist/cjs/ui/SyncedBlockNodeComponentRenderer.js +5 -0
- package/dist/cjs/ui/SyncedBlockRenderer.js +26 -2
- package/dist/cjs/useSyncedBlockNodeComponent.js +13 -2
- package/dist/cjs/utils/experience-tracking.js +74 -0
- package/dist/es2019/ui/SyncedBlockNodeComponentRenderer.js +5 -0
- package/dist/es2019/ui/SyncedBlockRenderer.js +25 -3
- package/dist/es2019/useSyncedBlockNodeComponent.js +13 -2
- package/dist/es2019/utils/experience-tracking.js +68 -0
- package/dist/esm/ui/SyncedBlockNodeComponentRenderer.js +5 -0
- package/dist/esm/ui/SyncedBlockRenderer.js +26 -3
- package/dist/esm/useSyncedBlockNodeComponent.js +13 -2
- package/dist/esm/utils/experience-tracking.js +68 -0
- package/dist/types/useSyncedBlockNodeComponent.d.ts +2 -2
- package/dist/types/utils/experience-tracking.d.ts +30 -0
- package/dist/types-ts4.5/useSyncedBlockNodeComponent.d.ts +2 -2
- package/dist/types-ts4.5/utils/experience-tracking.d.ts +30 -0
- package/package.json +5 -5
- package/build/tsconfig.json +0 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-renderer
|
|
2
2
|
|
|
3
|
+
## 5.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`1f4c761b661e1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1f4c761b661e1) -
|
|
8
|
+
[ux] EDITOR-4174 wrap synced block and bodied sync block with sentry error boundaries
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
|
|
11
|
+
## 5.2.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [`8100ae00326b4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8100ae00326b4) -
|
|
16
|
+
EDITOR-2850-add media ssr support for sync blocks
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [`fff45a651440a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/fff45a651440a) -
|
|
21
|
+
EDITOR-1665 add experience tracking analytics for sync block save, fetch and delete
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
|
|
3
24
|
## 5.1.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
package/afm-cc/tsconfig.json
CHANGED
package/afm-jira/tsconfig.json
CHANGED
|
@@ -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);
|
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.useMemoizedSyncedBlockNodeComponent = exports.getSyncBlockNodesFromDoc = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
10
|
+
var _errorBoundary = require("@atlaskit/editor-common/error-boundary");
|
|
9
11
|
var _editorSyncedBlockProvider = require("@atlaskit/editor-synced-block-provider");
|
|
10
12
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
13
|
var _SyncedBlockNodeComponentRenderer = require("./ui/SyncedBlockNodeComponentRenderer");
|
|
@@ -43,11 +45,20 @@ var useMemoizedSyncedBlockNodeComponent = exports.useMemoizedSyncedBlockNodeComp
|
|
|
43
45
|
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
44
46
|
}, [syncBlockNodes, syncBlockStoreManager.referenceManager]);
|
|
45
47
|
return (0, _react.useCallback)(function (props) {
|
|
46
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
48
|
+
return (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? /*#__PURE__*/_react.default.createElement(_errorBoundary.ErrorBoundary, {
|
|
49
|
+
component: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
|
|
50
|
+
dispatchAnalyticsEvent: fireAnalyticsEvent,
|
|
51
|
+
fallbackComponent: null
|
|
52
|
+
}, /*#__PURE__*/_react.default.createElement(_SyncedBlockNodeComponentRenderer.SyncedBlockNodeComponentRenderer, {
|
|
53
|
+
key: props.localId,
|
|
54
|
+
nodeProps: props,
|
|
55
|
+
syncBlockStoreManager: syncBlockStoreManager,
|
|
56
|
+
rendererOptions: syncBlockRendererOptions
|
|
57
|
+
})) : /*#__PURE__*/_react.default.createElement(_SyncedBlockNodeComponentRenderer.SyncedBlockNodeComponentRenderer, {
|
|
47
58
|
key: props.localId,
|
|
48
59
|
nodeProps: props,
|
|
49
60
|
syncBlockStoreManager: syncBlockStoreManager,
|
|
50
61
|
rendererOptions: syncBlockRendererOptions
|
|
51
62
|
});
|
|
52
|
-
}, [syncBlockStoreManager, syncBlockRendererOptions]);
|
|
63
|
+
}, [syncBlockStoreManager, syncBlockRendererOptions, fireAnalyticsEvent]);
|
|
53
64
|
};
|
|
@@ -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
|
+
};
|
|
@@ -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,4 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
+
import { ACTION_SUBJECT } from '@atlaskit/editor-common/analytics';
|
|
3
|
+
import { ErrorBoundary } from '@atlaskit/editor-common/error-boundary';
|
|
2
4
|
import { convertSyncBlockJSONNodeToSyncBlockNode, useMemoizedSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
3
5
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
6
|
import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
|
|
@@ -33,10 +35,19 @@ export const useMemoizedSyncedBlockNodeComponent = ({
|
|
|
33
35
|
useEffect(() => {
|
|
34
36
|
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
35
37
|
}, [syncBlockNodes, syncBlockStoreManager.referenceManager]);
|
|
36
|
-
return useCallback(props => /*#__PURE__*/React.createElement(
|
|
38
|
+
return useCallback(props => fg('platform_synced_block_dogfooding') ? /*#__PURE__*/React.createElement(ErrorBoundary, {
|
|
39
|
+
component: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
40
|
+
dispatchAnalyticsEvent: fireAnalyticsEvent,
|
|
41
|
+
fallbackComponent: null
|
|
42
|
+
}, /*#__PURE__*/React.createElement(SyncedBlockNodeComponentRenderer, {
|
|
37
43
|
key: props.localId,
|
|
38
44
|
nodeProps: props,
|
|
39
45
|
syncBlockStoreManager: syncBlockStoreManager,
|
|
40
46
|
rendererOptions: syncBlockRendererOptions
|
|
41
|
-
})
|
|
47
|
+
})) : /*#__PURE__*/React.createElement(SyncedBlockNodeComponentRenderer, {
|
|
48
|
+
key: props.localId,
|
|
49
|
+
nodeProps: props,
|
|
50
|
+
syncBlockStoreManager: syncBlockStoreManager,
|
|
51
|
+
rendererOptions: syncBlockRendererOptions
|
|
52
|
+
}), [syncBlockStoreManager, syncBlockRendererOptions, fireAnalyticsEvent]);
|
|
42
53
|
};
|
|
@@ -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
|
+
};
|
|
@@ -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,4 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
+
import { ACTION_SUBJECT } from '@atlaskit/editor-common/analytics';
|
|
3
|
+
import { ErrorBoundary } from '@atlaskit/editor-common/error-boundary';
|
|
2
4
|
import { convertSyncBlockJSONNodeToSyncBlockNode, useMemoizedSyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
3
5
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
6
|
import { SyncedBlockNodeComponentRenderer } from './ui/SyncedBlockNodeComponentRenderer';
|
|
@@ -35,11 +37,20 @@ export var useMemoizedSyncedBlockNodeComponent = function useMemoizedSyncedBlock
|
|
|
35
37
|
syncBlockStoreManager.referenceManager.fetchSyncBlocksData(syncBlockNodes);
|
|
36
38
|
}, [syncBlockNodes, syncBlockStoreManager.referenceManager]);
|
|
37
39
|
return useCallback(function (props) {
|
|
38
|
-
return /*#__PURE__*/React.createElement(
|
|
40
|
+
return fg('platform_synced_block_dogfooding') ? /*#__PURE__*/React.createElement(ErrorBoundary, {
|
|
41
|
+
component: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
42
|
+
dispatchAnalyticsEvent: fireAnalyticsEvent,
|
|
43
|
+
fallbackComponent: null
|
|
44
|
+
}, /*#__PURE__*/React.createElement(SyncedBlockNodeComponentRenderer, {
|
|
45
|
+
key: props.localId,
|
|
46
|
+
nodeProps: props,
|
|
47
|
+
syncBlockStoreManager: syncBlockStoreManager,
|
|
48
|
+
rendererOptions: syncBlockRendererOptions
|
|
49
|
+
})) : /*#__PURE__*/React.createElement(SyncedBlockNodeComponentRenderer, {
|
|
39
50
|
key: props.localId,
|
|
40
51
|
nodeProps: props,
|
|
41
52
|
syncBlockStoreManager: syncBlockStoreManager,
|
|
42
53
|
rendererOptions: syncBlockRendererOptions
|
|
43
54
|
});
|
|
44
|
-
}, [syncBlockStoreManager, syncBlockRendererOptions]);
|
|
55
|
+
}, [syncBlockStoreManager, syncBlockRendererOptions, fireAnalyticsEvent]);
|
|
45
56
|
};
|
|
@@ -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
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { DocNode } from '@atlaskit/adf-schema';
|
|
3
|
-
import type
|
|
3
|
+
import { type AnalyticsEventPayload } from '@atlaskit/editor-common/analytics';
|
|
4
4
|
import { type SyncBlockInstance, type SyncBlockNode } from '@atlaskit/editor-synced-block-provider';
|
|
5
5
|
import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
|
|
6
6
|
import type { SyncedBlockRendererOptions } from './types';
|
|
7
7
|
import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
8
8
|
export type GetSyncedBlockNodeComponentProps = {
|
|
9
|
-
fireAnalyticsEvent?: (payload:
|
|
9
|
+
fireAnalyticsEvent?: (payload: AnalyticsEventPayload) => void;
|
|
10
10
|
getSSRData?: () => Record<string, SyncBlockInstance> | undefined;
|
|
11
11
|
syncBlockNodes: SyncBlockNode[];
|
|
12
12
|
syncBlockProvider: SyncedBlockProvider;
|
|
@@ -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,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { DocNode } from '@atlaskit/adf-schema';
|
|
3
|
-
import type
|
|
3
|
+
import { type AnalyticsEventPayload } from '@atlaskit/editor-common/analytics';
|
|
4
4
|
import { type SyncBlockInstance, type SyncBlockNode } from '@atlaskit/editor-synced-block-provider';
|
|
5
5
|
import type { SyncedBlockProvider } from '@atlaskit/editor-synced-block-provider';
|
|
6
6
|
import type { SyncedBlockRendererOptions } from './types';
|
|
7
7
|
import { type SyncedBlockNodeProps } from './ui/SyncedBlockNodeComponentRenderer';
|
|
8
8
|
export type GetSyncedBlockNodeComponentProps = {
|
|
9
|
-
fireAnalyticsEvent?: (payload:
|
|
9
|
+
fireAnalyticsEvent?: (payload: AnalyticsEventPayload) => void;
|
|
10
10
|
getSSRData?: () => Record<string, SyncBlockInstance> | undefined;
|
|
11
11
|
syncBlockNodes: SyncBlockNode[];
|
|
12
12
|
syncBlockProvider: SyncedBlockProvider;
|
|
@@ -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.1
|
|
3
|
+
"version": "5.2.1",
|
|
4
4
|
"description": "SyncedBlockRenderer for @atlaskit/editor-plugin-synced-block",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,23 +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
37
|
"@atlaskit/icon-lab": "^5.14.0",
|
|
38
38
|
"@atlaskit/image": "^3.0.0",
|
|
39
39
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
40
40
|
"@atlaskit/primitives": "^17.0.0",
|
|
41
|
-
"@atlaskit/renderer": "^125.
|
|
41
|
+
"@atlaskit/renderer": "^125.4.0",
|
|
42
42
|
"@atlaskit/spinner": "^19.0.0",
|
|
43
43
|
"@atlaskit/tokens": "^9.1.0",
|
|
44
|
-
"@atlaskit/tooltip": "^20.
|
|
44
|
+
"@atlaskit/tooltip": "^20.14.0",
|
|
45
45
|
"@babel/runtime": "^7.0.0",
|
|
46
46
|
"react-relay": "npm:atl-react-relay@0.0.0-main-39e79f66",
|
|
47
47
|
"relay-runtime": "npm:atl-relay-runtime@0.0.0-main-39e79f66"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@atlaskit/editor-common": "^111.
|
|
50
|
+
"@atlaskit/editor-common": "^111.8.0",
|
|
51
51
|
"react": "^18.2.0",
|
|
52
52
|
"react-intl-next": "npm:react-intl@^5.18.1"
|
|
53
53
|
},
|
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
|
-
}
|