@atlaskit/editor-plugin-synced-block 5.2.1 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/afm-jira/tsconfig.json +1 -1
- package/dist/cjs/editor-commands/index.js +43 -5
- package/dist/cjs/editor-commands/utils.js +20 -0
- package/dist/cjs/pm-plugins/menu-and-toolbar-experiences.js +267 -0
- package/dist/cjs/syncedBlockPlugin.js +21 -12
- package/dist/cjs/types/index.js +6 -3
- package/dist/cjs/ui/CreateSyncedBlockButton.js +2 -1
- package/dist/cjs/ui/CreateSyncedBlockDropdownItem.js +2 -1
- package/dist/cjs/ui/SyncBlockRefresher.js +18 -4
- package/dist/cjs/ui/SyncedLocationDropdown.js +14 -11
- package/dist/cjs/ui/floating-toolbar.js +21 -2
- package/dist/es2019/editor-commands/index.js +44 -4
- package/dist/es2019/editor-commands/utils.js +14 -0
- package/dist/es2019/pm-plugins/menu-and-toolbar-experiences.js +261 -0
- package/dist/es2019/syncedBlockPlugin.js +19 -12
- package/dist/es2019/types/index.js +5 -2
- package/dist/es2019/ui/CreateSyncedBlockButton.js +2 -1
- package/dist/es2019/ui/CreateSyncedBlockDropdownItem.js +2 -1
- package/dist/es2019/ui/SyncBlockRefresher.js +18 -4
- package/dist/es2019/ui/SyncedLocationDropdown.js +14 -11
- package/dist/es2019/ui/floating-toolbar.js +20 -3
- package/dist/esm/editor-commands/index.js +42 -4
- package/dist/esm/editor-commands/utils.js +14 -0
- package/dist/esm/pm-plugins/menu-and-toolbar-experiences.js +260 -0
- package/dist/esm/syncedBlockPlugin.js +21 -12
- package/dist/esm/types/index.js +5 -2
- package/dist/esm/ui/CreateSyncedBlockButton.js +2 -1
- package/dist/esm/ui/CreateSyncedBlockDropdownItem.js +2 -1
- package/dist/esm/ui/SyncBlockRefresher.js +18 -4
- package/dist/esm/ui/SyncedLocationDropdown.js +14 -11
- package/dist/esm/ui/floating-toolbar.js +22 -3
- package/dist/types/editor-commands/index.d.ts +8 -1
- package/dist/types/editor-commands/utils.d.ts +2 -0
- package/dist/types/pm-plugins/menu-and-toolbar-experiences.d.ts +12 -0
- package/dist/types/types/index.d.ts +5 -14
- package/dist/types-ts4.5/editor-commands/index.d.ts +8 -1
- package/dist/types-ts4.5/editor-commands/utils.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/menu-and-toolbar-experiences.d.ts +12 -0
- package/dist/types-ts4.5/types/index.d.ts +5 -14
- package/package.json +3 -3
- package/dist/cjs/pm-plugins/experience-tracking/create-reference-experience.js +0 -113
- package/dist/cjs/pm-plugins/experience-tracking/create-source-experience.js +0 -169
- package/dist/cjs/pm-plugins/experience-tracking/delete-reference-experience.js +0 -175
- package/dist/cjs/pm-plugins/experience-tracking/delete-source-experience.js +0 -103
- package/dist/cjs/pm-plugins/experience-tracking/get-experience-tracking-plugins.js +0 -61
- package/dist/cjs/pm-plugins/experience-tracking/provider-only-experiences.js +0 -128
- package/dist/cjs/pm-plugins/utils/experience-tracking-utils.js +0 -85
- package/dist/es2019/pm-plugins/experience-tracking/create-reference-experience.js +0 -109
- package/dist/es2019/pm-plugins/experience-tracking/create-source-experience.js +0 -166
- package/dist/es2019/pm-plugins/experience-tracking/delete-reference-experience.js +0 -181
- package/dist/es2019/pm-plugins/experience-tracking/delete-source-experience.js +0 -98
- package/dist/es2019/pm-plugins/experience-tracking/get-experience-tracking-plugins.js +0 -46
- package/dist/es2019/pm-plugins/experience-tracking/provider-only-experiences.js +0 -127
- package/dist/es2019/pm-plugins/utils/experience-tracking-utils.js +0 -65
- package/dist/esm/pm-plugins/experience-tracking/create-reference-experience.js +0 -107
- package/dist/esm/pm-plugins/experience-tracking/create-source-experience.js +0 -163
- package/dist/esm/pm-plugins/experience-tracking/delete-reference-experience.js +0 -169
- package/dist/esm/pm-plugins/experience-tracking/delete-source-experience.js +0 -97
- package/dist/esm/pm-plugins/experience-tracking/get-experience-tracking-plugins.js +0 -55
- package/dist/esm/pm-plugins/experience-tracking/provider-only-experiences.js +0 -122
- package/dist/esm/pm-plugins/utils/experience-tracking-utils.js +0 -79
- package/dist/types/pm-plugins/experience-tracking/create-reference-experience.d.ts +0 -10
- package/dist/types/pm-plugins/experience-tracking/create-source-experience.d.ts +0 -10
- package/dist/types/pm-plugins/experience-tracking/delete-reference-experience.d.ts +0 -13
- package/dist/types/pm-plugins/experience-tracking/delete-source-experience.d.ts +0 -12
- package/dist/types/pm-plugins/experience-tracking/get-experience-tracking-plugins.d.ts +0 -5
- package/dist/types/pm-plugins/experience-tracking/provider-only-experiences.d.ts +0 -3
- package/dist/types/pm-plugins/utils/experience-tracking-utils.d.ts +0 -9
- package/dist/types-ts4.5/pm-plugins/experience-tracking/create-reference-experience.d.ts +0 -10
- package/dist/types-ts4.5/pm-plugins/experience-tracking/create-source-experience.d.ts +0 -10
- package/dist/types-ts4.5/pm-plugins/experience-tracking/delete-reference-experience.d.ts +0 -13
- package/dist/types-ts4.5/pm-plugins/experience-tracking/delete-source-experience.d.ts +0 -12
- package/dist/types-ts4.5/pm-plugins/experience-tracking/get-experience-tracking-plugins.d.ts +0 -5
- package/dist/types-ts4.5/pm-plugins/experience-tracking/provider-only-experiences.d.ts +0 -3
- package/dist/types-ts4.5/pm-plugins/utils/experience-tracking-utils.d.ts +0 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-synced-block
|
|
2
2
|
|
|
3
|
+
## 5.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`870c3baec758b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/870c3baec758b) -
|
|
8
|
+
Enable consumers to use GraphQL subscription for fetching the block data when the block changes
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- [`5c522f81f181e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5c522f81f181e) -
|
|
13
|
+
[ux] EDITOR-4369 Support synced location for references on Jira in source and reference synced
|
|
14
|
+
block
|
|
15
|
+
- [`058065aadf69f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/058065aadf69f) -
|
|
16
|
+
[ux] [EDITOR-2851] Support reference sync block unsyc
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
|
|
19
|
+
## 5.2.2
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- [`7f41011a1b0ff`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7f41011a1b0ff) -
|
|
24
|
+
EDITOR-1665 update sync block experience events to use general experience ids, keep existing error
|
|
25
|
+
events and add success events
|
|
26
|
+
- Updated dependencies
|
|
27
|
+
|
|
3
28
|
## 5.2.1
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/afm-jira/tsconfig.json
CHANGED
|
@@ -3,19 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.removeSyncedBlock = exports.editSyncedBlockSource = exports.createSyncedBlock = exports.copySyncedBlockReferenceToClipboardEditorCommand = exports.copySyncedBlockReferenceToClipboard = void 0;
|
|
6
|
+
exports.unsync = exports.removeSyncedBlock = exports.editSyncedBlockSource = exports.createSyncedBlock = exports.copySyncedBlockReferenceToClipboardEditorCommand = exports.copySyncedBlockReferenceToClipboard = void 0;
|
|
7
|
+
var _schemaDefault = require("@atlaskit/adf-schema/schema-default");
|
|
7
8
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
8
9
|
var _copyButton = require("@atlaskit/editor-common/copy-button");
|
|
10
|
+
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
9
11
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
10
12
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
11
13
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
14
|
var _main = require("../pm-plugins/main");
|
|
13
15
|
var _utils2 = require("../pm-plugins/utils/utils");
|
|
14
16
|
var _types = require("../types");
|
|
17
|
+
var _utils3 = require("./utils");
|
|
15
18
|
var createSyncedBlock = exports.createSyncedBlock = function createSyncedBlock(_ref) {
|
|
16
19
|
var tr = _ref.tr,
|
|
17
20
|
syncBlockStore = _ref.syncBlockStore,
|
|
18
|
-
typeAheadInsert = _ref.typeAheadInsert
|
|
21
|
+
typeAheadInsert = _ref.typeAheadInsert,
|
|
22
|
+
fireAnalyticsEvent = _ref.fireAnalyticsEvent;
|
|
19
23
|
var _tr$doc$type$schema$n = tr.doc.type.schema.nodes,
|
|
20
24
|
bodiedSyncBlock = _tr$doc$type$schema$n.bodiedSyncBlock,
|
|
21
25
|
paragraph = _tr$doc$type$schema$n.paragraph;
|
|
@@ -41,9 +45,14 @@ var createSyncedBlock = exports.createSyncedBlock = function createSyncedBlock(_
|
|
|
41
45
|
var conversionInfo = (0, _utils2.canBeConvertedToSyncBlock)(tr.selection);
|
|
42
46
|
if (!conversionInfo) {
|
|
43
47
|
if ((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
|
|
49
|
+
action: _analytics.ACTION.ERROR,
|
|
50
|
+
actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
|
|
51
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE,
|
|
52
|
+
attributes: {
|
|
53
|
+
error: 'Content cannot be converted to sync block'
|
|
54
|
+
},
|
|
55
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
47
56
|
});
|
|
48
57
|
}
|
|
49
58
|
return false;
|
|
@@ -168,4 +177,33 @@ var removeSyncedBlock = exports.removeSyncedBlock = function removeSyncedBlock(a
|
|
|
168
177
|
api === null || api === void 0 || api.core.actions.focus();
|
|
169
178
|
return true;
|
|
170
179
|
};
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Deletes (bodied)SyncBlock node and paste its content to the editor
|
|
184
|
+
*/
|
|
185
|
+
var unsync = exports.unsync = function unsync(storeManager, isBodiedSyncBlock, view) {
|
|
186
|
+
var _storeManager$referen;
|
|
187
|
+
if (!view) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
var state = view.state;
|
|
191
|
+
var syncBlock = (0, _utils2.findSyncBlockOrBodiedSyncBlock)(state.schema, state.selection);
|
|
192
|
+
if (!syncBlock) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
if (isBodiedSyncBlock) {
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// handle syncBlock unsync
|
|
200
|
+
var syncBlockContent = (_storeManager$referen = storeManager.referenceManager.getFromCache(syncBlock.node.attrs.resourceId)) === null || _storeManager$referen === void 0 || (_storeManager$referen = _storeManager$referen.data) === null || _storeManager$referen === void 0 ? void 0 : _storeManager$referen.content;
|
|
201
|
+
if (!syncBlockContent) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// use defaultSchema for serialization so we can serialize any type of nodes and marks despite current editor's schema might not allow it
|
|
206
|
+
var contentFragment = _model.Fragment.fromJSON(_schemaDefault.defaultSchema, syncBlockContent);
|
|
207
|
+
var contentDOM = _model.DOMSerializer.fromSchema(_schemaDefault.defaultSchema).serializeFragment(contentFragment);
|
|
208
|
+
return (0, _utils3.pasteSyncBlockHTMLContent)(contentDOM, view);
|
|
171
209
|
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pasteSyncBlockHTMLContent = void 0;
|
|
7
|
+
var pasteSyncBlockHTMLContent = exports.pasteSyncBlockHTMLContent = function pasteSyncBlockHTMLContent(contentDOM, view) {
|
|
8
|
+
var tmpDiv = document.createElement('div');
|
|
9
|
+
tmpDiv.appendChild(contentDOM);
|
|
10
|
+
|
|
11
|
+
// This is required so that prosemirror can read the fragment context and slice properly
|
|
12
|
+
if (tmpDiv.firstChild instanceof HTMLElement) {
|
|
13
|
+
tmpDiv.firstChild.setAttribute('data-pm-slice', '0 0 []');
|
|
14
|
+
|
|
15
|
+
// As per requirement - when unsync reference block, it should render its content as copy&paste behaviour
|
|
16
|
+
// Hence here we call pasteHTML to evoke editor paste logic that handles any unsupported nodes/marks
|
|
17
|
+
return view.pasteHTML(tmpDiv.innerHTML);
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
};
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getMenuAndToolbarExperiencesPlugin = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _bindEventListener = require("bind-event-listener");
|
|
10
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
11
|
+
var _experiences = require("@atlaskit/editor-common/experiences");
|
|
12
|
+
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
|
|
13
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
14
|
+
var _types = require("../types");
|
|
15
|
+
var TIMEOUT_DURATION = 30000;
|
|
16
|
+
var pluginKey = new _state.PluginKey('syncedBlockMenuAndToolbarExperience');
|
|
17
|
+
var SYNCED_BLOCK_BUTTON_TEST_IDS = Object.values(_types.SYNCED_BLOCK_BUTTON_TEST_ID);
|
|
18
|
+
var syncedBlockButtonIds = new Set(SYNCED_BLOCK_BUTTON_TEST_IDS);
|
|
19
|
+
var targetEl;
|
|
20
|
+
var getMenuAndToolbarExperiencesPlugin = exports.getMenuAndToolbarExperiencesPlugin = function getMenuAndToolbarExperiencesPlugin(_ref) {
|
|
21
|
+
var refs = _ref.refs,
|
|
22
|
+
dispatchAnalyticsEvent = _ref.dispatchAnalyticsEvent;
|
|
23
|
+
var popupsTargetEl;
|
|
24
|
+
var editorViewEl;
|
|
25
|
+
var getPopupsTarget = function getPopupsTarget() {
|
|
26
|
+
if (!popupsTargetEl) {
|
|
27
|
+
popupsTargetEl = refs.popupsMountPoint || refs.wrapperElement || (0, _experiences.getPopupContainerFromEditorView)(editorViewEl);
|
|
28
|
+
}
|
|
29
|
+
return popupsTargetEl;
|
|
30
|
+
};
|
|
31
|
+
var createSourcePrimaryToolbarExperience = getCreateSourcePrimaryToolbarExperience({
|
|
32
|
+
refs: refs,
|
|
33
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent
|
|
34
|
+
});
|
|
35
|
+
var createSourceBlockMenuExperience = getCreateSourceBlockMenuExperience({
|
|
36
|
+
refs: refs,
|
|
37
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent
|
|
38
|
+
});
|
|
39
|
+
var createSourceQuickInsertMenuExperience = getCreateSourceQuickInsertMenuExperience({
|
|
40
|
+
refs: refs,
|
|
41
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent
|
|
42
|
+
});
|
|
43
|
+
var deleteReferenceSyncedBlockExperience = getDeleteReferenceSyncedBlockToolbarExperience({
|
|
44
|
+
refs: refs,
|
|
45
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent
|
|
46
|
+
});
|
|
47
|
+
var unbindClickListener = (0, _bindEventListener.bind)(document, {
|
|
48
|
+
type: 'click',
|
|
49
|
+
listener: function listener(event) {
|
|
50
|
+
var target = event.target;
|
|
51
|
+
if (!target) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
var button = target.closest('button[data-testid]');
|
|
55
|
+
if (!button || !(button instanceof HTMLButtonElement)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
var testId = button.dataset.testid;
|
|
59
|
+
if (!isSyncedBlockButtonId(testId)) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
handleButtonClick({
|
|
63
|
+
testId: testId,
|
|
64
|
+
createSourcePrimaryToolbarExperience: createSourcePrimaryToolbarExperience,
|
|
65
|
+
createSourceBlockMenuExperience: createSourceBlockMenuExperience,
|
|
66
|
+
createSourceQuickInsertMenuExperience: createSourceQuickInsertMenuExperience,
|
|
67
|
+
deleteReferenceSyncedBlockExperience: deleteReferenceSyncedBlockExperience
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
var unbindKeydownListener = (0, _bindEventListener.bind)(document, {
|
|
72
|
+
type: 'keydown',
|
|
73
|
+
listener: function listener(event) {
|
|
74
|
+
if (isEnterKey(event.key)) {
|
|
75
|
+
var typeaheadPopup = (0, _experiences.popupWithNestedElement)(getPopupsTarget(), '.fabric-editor-typeahead');
|
|
76
|
+
if (!typeaheadPopup || !(typeaheadPopup instanceof HTMLElement)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
var firstItem = typeaheadPopup.querySelector('[role="option"]');
|
|
80
|
+
if (!firstItem || !(firstItem instanceof HTMLElement)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
var testId = firstItem.dataset.testid;
|
|
84
|
+
if (testId === _types.SYNCED_BLOCK_BUTTON_TEST_ID.quickInsertCreate) {
|
|
85
|
+
createSourceQuickInsertMenuExperience.start();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
options: {
|
|
90
|
+
capture: true
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return new _safePlugin.SafePlugin({
|
|
94
|
+
key: pluginKey,
|
|
95
|
+
view: function view(editorView) {
|
|
96
|
+
editorViewEl = editorView.dom;
|
|
97
|
+
return {
|
|
98
|
+
destroy: function destroy() {
|
|
99
|
+
createSourcePrimaryToolbarExperience.abort({
|
|
100
|
+
reason: 'editor-destroyed'
|
|
101
|
+
});
|
|
102
|
+
createSourceBlockMenuExperience.abort({
|
|
103
|
+
reason: 'editor-destroyed'
|
|
104
|
+
});
|
|
105
|
+
createSourceQuickInsertMenuExperience.abort({
|
|
106
|
+
reason: 'editor-destroyed'
|
|
107
|
+
});
|
|
108
|
+
deleteReferenceSyncedBlockExperience.abort({
|
|
109
|
+
reason: 'editor-destroyed'
|
|
110
|
+
});
|
|
111
|
+
unbindClickListener();
|
|
112
|
+
unbindKeydownListener();
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
var getCreateSourcePrimaryToolbarExperience = function getCreateSourcePrimaryToolbarExperience(_ref2) {
|
|
119
|
+
var refs = _ref2.refs,
|
|
120
|
+
dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent;
|
|
121
|
+
return new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
|
|
122
|
+
action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
|
|
123
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.PRIMARY_TOOLBAR,
|
|
124
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
125
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
126
|
+
durationMs: TIMEOUT_DURATION
|
|
127
|
+
}), syncedBlockAddedToDomCheck(refs)]
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
var getCreateSourceBlockMenuExperience = function getCreateSourceBlockMenuExperience(_ref3) {
|
|
131
|
+
var refs = _ref3.refs,
|
|
132
|
+
dispatchAnalyticsEvent = _ref3.dispatchAnalyticsEvent;
|
|
133
|
+
return new _experiences.Experience(_experiences.EXPERIENCE_ID.MENU_ACTION, {
|
|
134
|
+
action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
|
|
135
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.BLOCK_MENU,
|
|
136
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
137
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
138
|
+
durationMs: TIMEOUT_DURATION
|
|
139
|
+
}), syncedBlockAddedToDomCheck(refs)]
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
var getCreateSourceQuickInsertMenuExperience = function getCreateSourceQuickInsertMenuExperience(_ref4) {
|
|
143
|
+
var refs = _ref4.refs,
|
|
144
|
+
dispatchAnalyticsEvent = _ref4.dispatchAnalyticsEvent;
|
|
145
|
+
return new _experiences.Experience(_experiences.EXPERIENCE_ID.MENU_ACTION, {
|
|
146
|
+
action: _analytics.ACTION.SYNCED_BLOCK_CREATE,
|
|
147
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.QUICK_INSERT,
|
|
148
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
149
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
150
|
+
durationMs: TIMEOUT_DURATION
|
|
151
|
+
}), syncedBlockAddedToDomCheck(refs)]
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
var getDeleteReferenceSyncedBlockToolbarExperience = function getDeleteReferenceSyncedBlockToolbarExperience(_ref5) {
|
|
155
|
+
var refs = _ref5.refs,
|
|
156
|
+
dispatchAnalyticsEvent = _ref5.dispatchAnalyticsEvent;
|
|
157
|
+
return new _experiences.Experience(_experiences.EXPERIENCE_ID.TOOLBAR_ACTION, {
|
|
158
|
+
action: _analytics.ACTION.REFERENCE_SYNCED_BLOCK_DELETE,
|
|
159
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_TOOLBAR,
|
|
160
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
161
|
+
checks: [new _experiences.ExperienceCheckTimeout({
|
|
162
|
+
durationMs: TIMEOUT_DURATION
|
|
163
|
+
}), referenceSyncBlockRemovedFromDomCheck(refs)]
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
var isSyncedBlockButtonId = function isSyncedBlockButtonId(value) {
|
|
167
|
+
return !!value && syncedBlockButtonIds.has(value);
|
|
168
|
+
};
|
|
169
|
+
var handleButtonClick = function handleButtonClick(_ref6) {
|
|
170
|
+
var testId = _ref6.testId,
|
|
171
|
+
createSourcePrimaryToolbarExperience = _ref6.createSourcePrimaryToolbarExperience,
|
|
172
|
+
createSourceBlockMenuExperience = _ref6.createSourceBlockMenuExperience,
|
|
173
|
+
createSourceQuickInsertMenuExperience = _ref6.createSourceQuickInsertMenuExperience,
|
|
174
|
+
deleteReferenceSyncedBlockExperience = _ref6.deleteReferenceSyncedBlockExperience;
|
|
175
|
+
switch (testId) {
|
|
176
|
+
case _types.SYNCED_BLOCK_BUTTON_TEST_ID.primaryToolbarCreate:
|
|
177
|
+
createSourcePrimaryToolbarExperience.start();
|
|
178
|
+
break;
|
|
179
|
+
case _types.SYNCED_BLOCK_BUTTON_TEST_ID.blockMenuCreate:
|
|
180
|
+
createSourceBlockMenuExperience.start();
|
|
181
|
+
break;
|
|
182
|
+
case _types.SYNCED_BLOCK_BUTTON_TEST_ID.quickInsertCreate:
|
|
183
|
+
createSourceQuickInsertMenuExperience.start();
|
|
184
|
+
break;
|
|
185
|
+
case _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceDelete:
|
|
186
|
+
deleteReferenceSyncedBlockExperience.start();
|
|
187
|
+
break;
|
|
188
|
+
default:
|
|
189
|
+
{
|
|
190
|
+
// Exhaustiveness check: if a new SyncedBlockToolbarButtonId is added
|
|
191
|
+
// but not handled above, TypeScript will error here.
|
|
192
|
+
var _exhaustiveCheck = testId;
|
|
193
|
+
return _exhaustiveCheck;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
var isEnterKey = function isEnterKey(key) {
|
|
198
|
+
return key === 'Enter';
|
|
199
|
+
};
|
|
200
|
+
var getTarget = function getTarget(containerElement) {
|
|
201
|
+
if (!targetEl) {
|
|
202
|
+
var element = containerElement === null || containerElement === void 0 ? void 0 : containerElement.querySelector('.ProseMirror');
|
|
203
|
+
if (!element || !(element instanceof HTMLElement)) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
targetEl = element;
|
|
207
|
+
}
|
|
208
|
+
return targetEl;
|
|
209
|
+
};
|
|
210
|
+
var syncedBlockAddedToDomCheck = function syncedBlockAddedToDomCheck(refs) {
|
|
211
|
+
return new _experiences.ExperienceCheckDomMutation({
|
|
212
|
+
onDomMutation: function onDomMutation(_ref7) {
|
|
213
|
+
var mutations = _ref7.mutations;
|
|
214
|
+
if (mutations.some(isBodiedSyncBlockAddedInMutation)) {
|
|
215
|
+
return {
|
|
216
|
+
status: 'success'
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
return undefined;
|
|
220
|
+
},
|
|
221
|
+
observeConfig: function observeConfig() {
|
|
222
|
+
return {
|
|
223
|
+
target: getTarget(refs.containerElement),
|
|
224
|
+
options: {
|
|
225
|
+
childList: true
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
var isBodiedSyncBlockAddedInMutation = function isBodiedSyncBlockAddedInMutation(_ref8) {
|
|
232
|
+
var type = _ref8.type,
|
|
233
|
+
addedNodes = _ref8.addedNodes;
|
|
234
|
+
return type === 'childList' && (0, _toConsumableArray2.default)(addedNodes).some(isBodiedSyncBlockWithinNode);
|
|
235
|
+
};
|
|
236
|
+
var isBodiedSyncBlockWithinNode = function isBodiedSyncBlockWithinNode(node) {
|
|
237
|
+
return (0, _experiences.getNodeQuery)('[data-prosemirror-node-name="bodiedSyncBlock"]')(node);
|
|
238
|
+
};
|
|
239
|
+
var referenceSyncBlockRemovedFromDomCheck = function referenceSyncBlockRemovedFromDomCheck(refs) {
|
|
240
|
+
return new _experiences.ExperienceCheckDomMutation({
|
|
241
|
+
onDomMutation: function onDomMutation(_ref9) {
|
|
242
|
+
var mutations = _ref9.mutations;
|
|
243
|
+
if (mutations.some(isSyncBlockRemovedInMutation)) {
|
|
244
|
+
return {
|
|
245
|
+
status: 'success'
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return undefined;
|
|
249
|
+
},
|
|
250
|
+
observeConfig: function observeConfig() {
|
|
251
|
+
return {
|
|
252
|
+
target: getTarget(refs.containerElement),
|
|
253
|
+
options: {
|
|
254
|
+
childList: true
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
};
|
|
260
|
+
var isSyncBlockRemovedInMutation = function isSyncBlockRemovedInMutation(_ref0) {
|
|
261
|
+
var type = _ref0.type,
|
|
262
|
+
removedNodes = _ref0.removedNodes;
|
|
263
|
+
return type === 'childList' && (0, _toConsumableArray2.default)(removedNodes).some(isSyncBlockWithinNode);
|
|
264
|
+
};
|
|
265
|
+
var isSyncBlockWithinNode = function isSyncBlockWithinNode(node) {
|
|
266
|
+
return (0, _experiences.getNodeQuery)('[data-prosemirror-node-name="syncBlock"]')(node);
|
|
267
|
+
};
|
|
@@ -15,8 +15,9 @@ var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
|
15
15
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
16
|
var _editorActions = require("./editor-actions");
|
|
17
17
|
var _editorCommands = require("./editor-commands");
|
|
18
|
-
var _getExperienceTrackingPlugins = require("./pm-plugins/experience-tracking/get-experience-tracking-plugins");
|
|
19
18
|
var _main = require("./pm-plugins/main");
|
|
19
|
+
var _menuAndToolbarExperiences = require("./pm-plugins/menu-and-toolbar-experiences");
|
|
20
|
+
var _types = require("./types");
|
|
20
21
|
var _blockMenuComponents = require("./ui/block-menu-components");
|
|
21
22
|
var _DeleteConfirmationModal = require("./ui/DeleteConfirmationModal");
|
|
22
23
|
var _Flag = require("./ui/Flag");
|
|
@@ -49,14 +50,18 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
|
|
|
49
50
|
plugin: function plugin(params) {
|
|
50
51
|
return (0, _main.createPlugin)(config, params, syncBlockStore, api);
|
|
51
52
|
}
|
|
52
|
-
}].concat((0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ?
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
}].concat((0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? [{
|
|
54
|
+
name: 'menuAndToolbarExperiencesPlugin',
|
|
55
|
+
plugin: function plugin() {
|
|
56
|
+
return (0, _menuAndToolbarExperiences.getMenuAndToolbarExperiencesPlugin)({
|
|
57
|
+
refs: refs,
|
|
58
|
+
dispatchAnalyticsEvent: function dispatchAnalyticsEvent(payload) {
|
|
59
|
+
var _api$analytics2;
|
|
60
|
+
return api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.actions) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.fireAnalyticsEvent(payload);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}] : []));
|
|
60
65
|
},
|
|
61
66
|
commands: {
|
|
62
67
|
copySyncedBlockReferenceToClipboard: function copySyncedBlockReferenceToClipboard() {
|
|
@@ -64,13 +69,15 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
|
|
|
64
69
|
},
|
|
65
70
|
insertSyncedBlock: function insertSyncedBlock() {
|
|
66
71
|
return function (_ref2) {
|
|
72
|
+
var _api$analytics3;
|
|
67
73
|
var tr = _ref2.tr;
|
|
68
74
|
if (!(config !== null && config !== void 0 && config.enableSourceCreation)) {
|
|
69
75
|
return null;
|
|
70
76
|
}
|
|
71
77
|
return (0, _editorCommands.createSyncedBlock)({
|
|
72
78
|
tr: tr,
|
|
73
|
-
syncBlockStore: syncBlockStore
|
|
79
|
+
syncBlockStore: syncBlockStore,
|
|
80
|
+
fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions.fireAnalyticsEvent
|
|
74
81
|
}) || null;
|
|
75
82
|
};
|
|
76
83
|
}
|
|
@@ -106,13 +113,15 @@ var syncedBlockPlugin = exports.syncedBlockPlugin = function syncedBlockPlugin(_
|
|
|
106
113
|
});
|
|
107
114
|
},
|
|
108
115
|
action: function action(insert, state) {
|
|
116
|
+
var _api$analytics4;
|
|
109
117
|
return (0, _editorCommands.createSyncedBlock)({
|
|
110
118
|
tr: state.tr,
|
|
111
119
|
syncBlockStore: syncBlockStore,
|
|
112
|
-
typeAheadInsert: insert
|
|
120
|
+
typeAheadInsert: insert,
|
|
121
|
+
fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions.fireAnalyticsEvent
|
|
113
122
|
});
|
|
114
123
|
},
|
|
115
|
-
testId: (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ?
|
|
124
|
+
testId: (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? _types.SYNCED_BLOCK_BUTTON_TEST_ID.quickInsertCreate : undefined
|
|
116
125
|
}];
|
|
117
126
|
},
|
|
118
127
|
floatingToolbar: function floatingToolbar(state, intl) {
|
package/dist/cjs/types/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.SYNCED_BLOCK_BUTTON_TEST_ID = exports.FLAG_ID = void 0;
|
|
7
7
|
var FLAG_ID = exports.FLAG_ID = /*#__PURE__*/function (FLAG_ID) {
|
|
8
8
|
FLAG_ID["CANNOT_DELETE_WHEN_OFFLINE"] = "cannot-delete-when-offline";
|
|
9
9
|
FLAG_ID["CANNOT_EDIT_WHEN_OFFLINE"] = "cannot-edit-when-offline";
|
|
@@ -12,6 +12,9 @@ var FLAG_ID = exports.FLAG_ID = /*#__PURE__*/function (FLAG_ID) {
|
|
|
12
12
|
FLAG_ID["SYNC_BLOCK_COPIED"] = "sync-block-copied";
|
|
13
13
|
return FLAG_ID;
|
|
14
14
|
}({});
|
|
15
|
-
var
|
|
16
|
-
|
|
15
|
+
var SYNCED_BLOCK_BUTTON_TEST_ID = exports.SYNCED_BLOCK_BUTTON_TEST_ID = {
|
|
16
|
+
primaryToolbarCreate: 'create-synced-block-toolbar-btn',
|
|
17
|
+
blockMenuCreate: 'create-synced-block-block-menu-btn',
|
|
18
|
+
quickInsertCreate: 'create-synced-block-quick-insert-btn',
|
|
19
|
+
syncedBlockToolbarReferenceDelete: 'reference-synced-block-delete-btn'
|
|
17
20
|
};
|
|
@@ -14,6 +14,7 @@ var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
|
|
|
14
14
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
15
15
|
var _blockSynced = _interopRequireDefault(require("@atlaskit/icon-lab/core/block-synced"));
|
|
16
16
|
var _utils = require("../pm-plugins/utils/utils");
|
|
17
|
+
var _types = require("../types");
|
|
17
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); }
|
|
18
19
|
var CreateSyncedBlockButton = exports.CreateSyncedBlockButton = function CreateSyncedBlockButton(_ref) {
|
|
19
20
|
var api = _ref.api;
|
|
@@ -53,7 +54,7 @@ var CreateSyncedBlockButton = exports.CreateSyncedBlockButton = function CreateS
|
|
|
53
54
|
label: ""
|
|
54
55
|
}),
|
|
55
56
|
isDisabled: isDisabled,
|
|
56
|
-
testId:
|
|
57
|
+
testId: _types.SYNCED_BLOCK_BUTTON_TEST_ID.primaryToolbarCreate,
|
|
57
58
|
onClick: onClick
|
|
58
59
|
}));
|
|
59
60
|
};
|
|
@@ -14,6 +14,7 @@ var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
|
|
|
14
14
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
15
15
|
var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
16
16
|
var _utils = require("../pm-plugins/utils/utils");
|
|
17
|
+
var _types = require("../types");
|
|
17
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); }
|
|
18
19
|
var CreateSyncedBlockDropdownItem = function CreateSyncedBlockDropdownItem(_ref) {
|
|
19
20
|
var api = _ref.api;
|
|
@@ -51,7 +52,7 @@ var CreateSyncedBlockDropdownItem = function CreateSyncedBlockDropdownItem(_ref)
|
|
|
51
52
|
}),
|
|
52
53
|
onClick: onClick,
|
|
53
54
|
isDisabled: isOffline,
|
|
54
|
-
testId:
|
|
55
|
+
testId: _types.SYNCED_BLOCK_BUTTON_TEST_ID.blockMenuCreate,
|
|
55
56
|
elemAfter: /*#__PURE__*/_react.default.createElement(_lozenge.default, {
|
|
56
57
|
appearance: "new"
|
|
57
58
|
}, formatMessage(_messages.blockMenuMessages.newLozenge))
|
|
@@ -6,10 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.SyncBlockRefresher = exports.SYNC_BLOCK_FETCH_INTERVAL = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
9
|
+
var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
9
11
|
var SYNC_BLOCK_FETCH_INTERVAL = exports.SYNC_BLOCK_FETCH_INTERVAL = 3000;
|
|
10
12
|
|
|
11
|
-
// Component that
|
|
12
|
-
//
|
|
13
|
+
// Component that manages synced block data synchronization.
|
|
14
|
+
// When the feature flag 'platform_synced_block_dogfooding' is enabled,
|
|
15
|
+
// it uses provider-based GraphQL subscriptions for updates.
|
|
16
|
+
// When disabled, it falls back to polling at regular intervals.
|
|
13
17
|
var SyncBlockRefresher = exports.SyncBlockRefresher = function SyncBlockRefresher(_ref) {
|
|
14
18
|
var syncBlockStoreManager = _ref.syncBlockStoreManager,
|
|
15
19
|
api = _ref.api;
|
|
@@ -20,9 +24,19 @@ var SyncBlockRefresher = exports.SyncBlockRefresher = function SyncBlockRefreshe
|
|
|
20
24
|
};
|
|
21
25
|
}),
|
|
22
26
|
mode = _useSharedPluginState.mode;
|
|
27
|
+
var featureFlagEnabled = (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding');
|
|
28
|
+
var isOnline = !(0, _editorPluginConnectivity.isOfflineMode)(mode);
|
|
23
29
|
(0, _react.useEffect)(function () {
|
|
30
|
+
var useRealTimeSubscriptions = featureFlagEnabled && isOnline;
|
|
31
|
+
syncBlockStoreManager.referenceManager.setRealTimeSubscriptionsEnabled(useRealTimeSubscriptions);
|
|
32
|
+
}, [syncBlockStoreManager, featureFlagEnabled, isOnline]);
|
|
33
|
+
(0, _react.useEffect)(function () {
|
|
34
|
+
var useRealTimeSubscriptions = featureFlagEnabled && isOnline;
|
|
35
|
+
if (useRealTimeSubscriptions) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
24
38
|
var interval = -1;
|
|
25
|
-
if (
|
|
39
|
+
if (isOnline) {
|
|
26
40
|
interval = window.setInterval(function () {
|
|
27
41
|
var _document;
|
|
28
42
|
// check if document is visible to avoid unnecessary refreshes
|
|
@@ -36,6 +50,6 @@ var SyncBlockRefresher = exports.SyncBlockRefresher = function SyncBlockRefreshe
|
|
|
36
50
|
return function () {
|
|
37
51
|
window.clearInterval(interval);
|
|
38
52
|
};
|
|
39
|
-
}, [syncBlockStoreManager,
|
|
53
|
+
}, [syncBlockStoreManager, isOnline, featureFlagEnabled]);
|
|
40
54
|
return null;
|
|
41
55
|
};
|
|
@@ -56,16 +56,17 @@ var styles = {
|
|
|
56
56
|
var ItemTitle = function ItemTitle(_ref) {
|
|
57
57
|
var title = _ref.title,
|
|
58
58
|
formatMessage = _ref.formatMessage,
|
|
59
|
-
|
|
59
|
+
onSameDocument = _ref.onSameDocument,
|
|
60
60
|
isSource = _ref.isSource,
|
|
61
|
-
hasAccess = _ref.hasAccess
|
|
61
|
+
hasAccess = _ref.hasAccess,
|
|
62
|
+
productType = _ref.productType;
|
|
62
63
|
return /*#__PURE__*/React.createElement(_compiled.Inline, null, /*#__PURE__*/React.createElement(_compiled.Box, {
|
|
63
64
|
as: "span",
|
|
64
65
|
xcss: styles.title
|
|
65
|
-
}, title),
|
|
66
|
+
}, title), onSameDocument && /*#__PURE__*/React.createElement(_compiled.Box, {
|
|
66
67
|
as: "span",
|
|
67
68
|
xcss: styles.note
|
|
68
|
-
}, "\xA0- ", formatMessage(_messages.syncBlockMessages.
|
|
69
|
+
}, "\xA0- ", formatMessage(productType === 'confluence-page' ? _messages.syncBlockMessages.syncedLocationDropdownTitleNoteForConfluencePage : _messages.syncBlockMessages.syncedLocationDropdownTitleNoteForJiraWorkItem)), isSource && /*#__PURE__*/React.createElement(_compiled.Box, {
|
|
69
70
|
as: "span",
|
|
70
71
|
xcss: styles.lozenge
|
|
71
72
|
}, /*#__PURE__*/React.createElement(_lozenge.default, null, formatMessage(_messages.syncBlockMessages.syncedLocationDropdownSourceLozenge))), !hasAccess && /*#__PURE__*/React.createElement(_compiled.Box, {
|
|
@@ -82,7 +83,7 @@ var subTypeIconMap = {
|
|
|
82
83
|
page: _page.default,
|
|
83
84
|
blogpost: _quotationMark.default
|
|
84
85
|
};
|
|
85
|
-
var
|
|
86
|
+
var getConfluenceSubTypeIcon = function getConfluenceSubTypeIcon(subType) {
|
|
86
87
|
return subType && subType in subTypeIconMap ? subTypeIconMap[subType] : _page.default;
|
|
87
88
|
};
|
|
88
89
|
var ProductIcon = function ProductIcon(_ref2) {
|
|
@@ -99,17 +100,18 @@ var ProductIcon = function ProductIcon(_ref2) {
|
|
|
99
100
|
var ItemIcon = function ItemIcon(_ref3) {
|
|
100
101
|
var reference = _ref3.reference;
|
|
101
102
|
var hasAccess = reference.hasAccess,
|
|
102
|
-
subType = reference.subType
|
|
103
|
-
|
|
103
|
+
subType = reference.subType,
|
|
104
|
+
productType = reference.productType;
|
|
105
|
+
if (productType === 'confluence-page' && hasAccess) {
|
|
104
106
|
return /*#__PURE__*/React.createElement(_icon.IconTile, {
|
|
105
|
-
icon:
|
|
107
|
+
icon: getConfluenceSubTypeIcon(subType),
|
|
106
108
|
label: "",
|
|
107
109
|
appearance: 'gray',
|
|
108
110
|
size: "xsmall"
|
|
109
111
|
});
|
|
110
112
|
}
|
|
111
113
|
return /*#__PURE__*/React.createElement(ProductIcon, {
|
|
112
|
-
product:
|
|
114
|
+
product: productType
|
|
113
115
|
});
|
|
114
116
|
};
|
|
115
117
|
var processReferenceData = exports.processReferenceData = function processReferenceData(referenceData, intl) {
|
|
@@ -277,9 +279,10 @@ var DropdownContent = function DropdownContent(_ref7) {
|
|
|
277
279
|
}, /*#__PURE__*/React.createElement(ItemTitle, {
|
|
278
280
|
title: reference.title || reference.url || '',
|
|
279
281
|
formatMessage: formatMessage,
|
|
280
|
-
|
|
282
|
+
onSameDocument: reference.onSameDocument,
|
|
281
283
|
isSource: reference.isSource,
|
|
282
|
-
hasAccess: reference.hasAccess
|
|
284
|
+
hasAccess: reference.hasAccess,
|
|
285
|
+
productType: reference.productType
|
|
283
286
|
}))));
|
|
284
287
|
})));
|
|
285
288
|
} else {
|