@atlaskit/editor-plugin-synced-block 5.2.1 → 5.2.2
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 +9 -0
- package/afm-jira/tsconfig.json +1 -1
- package/dist/cjs/editor-commands/index.js +10 -4
- 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/floating-toolbar.js +2 -1
- package/dist/es2019/editor-commands/index.js +10 -4
- 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/floating-toolbar.js +2 -1
- package/dist/esm/editor-commands/index.js +10 -4
- 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/floating-toolbar.js +2 -1
- package/dist/types/editor-commands/index.d.ts +3 -1
- 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 +3 -1
- 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,14 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-synced-block
|
|
2
2
|
|
|
3
|
+
## 5.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`7f41011a1b0ff`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7f41011a1b0ff) -
|
|
8
|
+
EDITOR-1665 update sync block experience events to use general experience ids, keep existing error
|
|
9
|
+
events and add success events
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
3
12
|
## 5.2.1
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/afm-jira/tsconfig.json
CHANGED
|
@@ -15,7 +15,8 @@ var _types = require("../types");
|
|
|
15
15
|
var createSyncedBlock = exports.createSyncedBlock = function createSyncedBlock(_ref) {
|
|
16
16
|
var tr = _ref.tr,
|
|
17
17
|
syncBlockStore = _ref.syncBlockStore,
|
|
18
|
-
typeAheadInsert = _ref.typeAheadInsert
|
|
18
|
+
typeAheadInsert = _ref.typeAheadInsert,
|
|
19
|
+
fireAnalyticsEvent = _ref.fireAnalyticsEvent;
|
|
19
20
|
var _tr$doc$type$schema$n = tr.doc.type.schema.nodes,
|
|
20
21
|
bodiedSyncBlock = _tr$doc$type$schema$n.bodiedSyncBlock,
|
|
21
22
|
paragraph = _tr$doc$type$schema$n.paragraph;
|
|
@@ -41,9 +42,14 @@ var createSyncedBlock = exports.createSyncedBlock = function createSyncedBlock(_
|
|
|
41
42
|
var conversionInfo = (0, _utils2.canBeConvertedToSyncBlock)(tr.selection);
|
|
42
43
|
if (!conversionInfo) {
|
|
43
44
|
if ((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
|
|
46
|
+
action: _analytics.ACTION.ERROR,
|
|
47
|
+
actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
|
|
48
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE,
|
|
49
|
+
attributes: {
|
|
50
|
+
error: 'Content cannot be converted to sync block'
|
|
51
|
+
},
|
|
52
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL
|
|
47
53
|
});
|
|
48
54
|
}
|
|
49
55
|
return false;
|
|
@@ -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))
|
|
@@ -18,6 +18,7 @@ var _edit = _interopRequireDefault(require("@atlaskit/icon/core/edit"));
|
|
|
18
18
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
19
19
|
var _editorCommands = require("../editor-commands");
|
|
20
20
|
var _utils2 = require("../pm-plugins/utils/utils");
|
|
21
|
+
var _types = require("../types");
|
|
21
22
|
var _SyncedLocationDropdown = require("./SyncedLocationDropdown");
|
|
22
23
|
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); }
|
|
23
24
|
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; }
|
|
@@ -54,7 +55,7 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(stat
|
|
|
54
55
|
title: formatMessage(_messages.default.delete),
|
|
55
56
|
onClick: (0, _editorCommands.removeSyncedBlock)(api),
|
|
56
57
|
icon: _delete.default,
|
|
57
|
-
testId: (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ?
|
|
58
|
+
testId: (0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding') ? _types.SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceDelete : undefined
|
|
58
59
|
}, hoverDecorationProps(nodeType, _consts.akEditorSelectedNodeClassName));
|
|
59
60
|
items.push(deleteButton);
|
|
60
61
|
} else {
|
|
@@ -9,7 +9,8 @@ import { FLAG_ID } from '../types';
|
|
|
9
9
|
export const createSyncedBlock = ({
|
|
10
10
|
tr,
|
|
11
11
|
syncBlockStore,
|
|
12
|
-
typeAheadInsert
|
|
12
|
+
typeAheadInsert,
|
|
13
|
+
fireAnalyticsEvent
|
|
13
14
|
}) => {
|
|
14
15
|
const {
|
|
15
16
|
schema: {
|
|
@@ -41,9 +42,14 @@ export const createSyncedBlock = ({
|
|
|
41
42
|
const conversionInfo = canBeConvertedToSyncBlock(tr.selection);
|
|
42
43
|
if (!conversionInfo) {
|
|
43
44
|
if (fg('platform_synced_block_dogfooding')) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 ? void 0 : fireAnalyticsEvent({
|
|
46
|
+
action: ACTION.ERROR,
|
|
47
|
+
actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
|
|
48
|
+
actionSubjectId: ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE,
|
|
49
|
+
attributes: {
|
|
50
|
+
error: 'Content cannot be converted to sync block'
|
|
51
|
+
},
|
|
52
|
+
eventType: EVENT_TYPE.OPERATIONAL
|
|
47
53
|
});
|
|
48
54
|
}
|
|
49
55
|
return false;
|