@atlaskit/editor-plugin-synced-block 20.1.5 → 21.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/editor-commands/index.js +1 -4
- package/dist/cjs/pm-plugins/main.js +6 -11
- package/dist/cjs/syncedBlockPlugin.js +1 -2
- package/dist/cjs/ui/CreateSyncedBlockDropdownItem.js +1 -3
- package/dist/cjs/ui/Flag.js +1 -2
- package/dist/cjs/ui/SyncBlockLabel.js +2 -3
- package/dist/cjs/ui/SyncBlockRendererWrapper.js +2 -7
- package/dist/cjs/ui/SyncedLocationDropdown.js +3 -22
- package/dist/cjs/ui/floating-toolbar.js +36 -82
- package/dist/cjs/ui/quick-insert.js +2 -4
- package/dist/es2019/editor-commands/index.js +1 -4
- package/dist/es2019/pm-plugins/main.js +6 -11
- package/dist/es2019/syncedBlockPlugin.js +1 -2
- package/dist/es2019/ui/CreateSyncedBlockDropdownItem.js +1 -3
- package/dist/es2019/ui/Flag.js +1 -2
- package/dist/es2019/ui/SyncBlockLabel.js +2 -3
- package/dist/es2019/ui/SyncBlockRendererWrapper.js +2 -7
- package/dist/es2019/ui/SyncedLocationDropdown.js +3 -22
- package/dist/es2019/ui/floating-toolbar.js +36 -83
- package/dist/es2019/ui/quick-insert.js +2 -4
- package/dist/esm/editor-commands/index.js +1 -4
- package/dist/esm/pm-plugins/main.js +6 -11
- package/dist/esm/syncedBlockPlugin.js +1 -2
- package/dist/esm/ui/CreateSyncedBlockDropdownItem.js +1 -3
- package/dist/esm/ui/Flag.js +1 -2
- package/dist/esm/ui/SyncBlockLabel.js +2 -3
- package/dist/esm/ui/SyncBlockRendererWrapper.js +2 -7
- package/dist/esm/ui/SyncedLocationDropdown.js +3 -22
- package/dist/esm/ui/floating-toolbar.js +37 -83
- package/dist/esm/ui/quick-insert.js +2 -4
- package/package.json +22 -22
package/dist/es2019/ui/Flag.js
CHANGED
|
@@ -15,7 +15,6 @@ import StatusSuccessIcon from '@atlaskit/icon/core/status-success';
|
|
|
15
15
|
import StatusWarningIcon from '@atlaskit/icon/core/status-warning';
|
|
16
16
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
17
17
|
import { Anchor } from '@atlaskit/primitives/compiled/anchor';
|
|
18
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
19
18
|
import { syncedBlockPluginKey } from '../pm-plugins/main';
|
|
20
19
|
import { FLAG_ID } from '../types';
|
|
21
20
|
const feedbackFlagStyles = null;
|
|
@@ -162,7 +161,7 @@ export const Flag = ({
|
|
|
162
161
|
onDismissed: onDismissedCallback
|
|
163
162
|
} = activeFlag;
|
|
164
163
|
const isCopiedFlag = activeFlag.id === FLAG_ID.SYNC_BLOCK_COPIED;
|
|
165
|
-
const isCopiedDescriptionEnabled = isCopiedFlag && (isExperimentEnabled('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page'
|
|
164
|
+
const isCopiedDescriptionEnabled = isCopiedFlag && (isExperimentEnabled('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page');
|
|
166
165
|
const copiedDescription = getSyncBlockCopiedDescription(activeFlag, isCopiedDescriptionEnabled);
|
|
167
166
|
const title = isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedTitleJiraWorkItem : defaultTitle;
|
|
168
167
|
const description = copiedDescription !== null && copiedDescription !== void 0 ? copiedDescription : isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedDescriptionJiraWorkItem : defaultDescription;
|
|
@@ -7,7 +7,6 @@ import { syncBlockMessages as messages } from '@atlaskit/editor-common/messages'
|
|
|
7
7
|
import { SyncBlockLabelSharedCssClassName } from '@atlaskit/editor-common/sync-block';
|
|
8
8
|
import BlockSyncedIcon from '@atlaskit/icon-lab/core/block-synced';
|
|
9
9
|
import { Box, Text } from '@atlaskit/primitives/compiled';
|
|
10
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
11
10
|
import Tooltip from '@atlaskit/tooltip/Tooltip';
|
|
12
11
|
import VisuallyHidden from '@atlaskit/visually-hidden/visually-hidden';
|
|
13
12
|
import { formatElapsedTime } from './utils/time';
|
|
@@ -85,7 +84,7 @@ const SyncBlockLabelComponent = ({
|
|
|
85
84
|
return renderPlainLabel(formatMessage(messages.unsyncedBlockLabel));
|
|
86
85
|
}
|
|
87
86
|
if (isSource) {
|
|
88
|
-
return renderPlainLabel(formatMessage(
|
|
87
|
+
return renderPlainLabel(formatMessage(messages.sourceSyncedBlockLabel));
|
|
89
88
|
}
|
|
90
89
|
if (!title) {
|
|
91
90
|
return renderPlainLabel(formatMessage(messages.syncedBlockLabel));
|
|
@@ -108,7 +107,7 @@ const SyncBlockLabelComponent = ({
|
|
|
108
107
|
}), getLabelContent);
|
|
109
108
|
const referenceDescription = !isSource && !isUnsyncedBlock && /*#__PURE__*/React.createElement(VisuallyHidden, {
|
|
110
109
|
id: ariaDescribedById
|
|
111
|
-
},
|
|
110
|
+
}, tooltipMessage);
|
|
112
111
|
if (unpublishedTooltipLabel) {
|
|
113
112
|
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
114
113
|
position: "top",
|
|
@@ -3,7 +3,6 @@ import { bind } from 'bind-event-listener';
|
|
|
3
3
|
import { SyncBlockSharedCssClassName } from '@atlaskit/editor-common/sync-block';
|
|
4
4
|
import { SyncBlockError, useFetchSyncBlockData, useFetchSyncBlockTitle } from '@atlaskit/editor-synced-block-provider';
|
|
5
5
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
6
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
7
6
|
import { getUnpublishedSourceType } from './getUnpublishedSourceType';
|
|
8
7
|
import { SyncBlockLabel } from './SyncBlockLabel';
|
|
9
8
|
const SyncBlockRendererWrapperDataId = 'sync-block-plugin-renderer-wrapper';
|
|
@@ -42,10 +41,6 @@ const SyncBlockRendererWrapperComponent = ({
|
|
|
42
41
|
}, [localSourceBlockInstanceId, syncBlockStore.sourceManager]);
|
|
43
42
|
const isUnsyncedBlock = isUnpublishedBlock && !localSameDocumentSource || (syncBlockFetchResult === null || syncBlockFetchResult === void 0 ? void 0 : (_syncBlockFetchResult6 = syncBlockFetchResult.syncBlockInstance) === null || _syncBlockFetchResult6 === void 0 ? void 0 : (_syncBlockFetchResult7 = _syncBlockFetchResult6.error) === null || _syncBlockFetchResult7 === void 0 ? void 0 : _syncBlockFetchResult7.type) === SyncBlockError.NotFound;
|
|
44
43
|
|
|
45
|
-
// Evaluated unconditionally so the experiment exposure is tracked correctly
|
|
46
|
-
// (recorded on every render, not lazily on first click).
|
|
47
|
-
const isSyncBlockActivationEnabled = expValEquals('platform_editor_sync_block_activation', 'isEnabled', true);
|
|
48
|
-
|
|
49
44
|
// Prevent editing in the contentEditable renderer wrapper. We set
|
|
50
45
|
// contentEditable="true" to enable text selection (creating an editable
|
|
51
46
|
// island inside ProseMirror's contentEditable="false" nodeview wrapper),
|
|
@@ -63,7 +58,7 @@ const SyncBlockRendererWrapperComponent = ({
|
|
|
63
58
|
const rendererRef = useRef(null);
|
|
64
59
|
useEffect(() => {
|
|
65
60
|
const containerEl = rendererRef.current;
|
|
66
|
-
if (!containerEl
|
|
61
|
+
if (!containerEl) {
|
|
67
62
|
return;
|
|
68
63
|
}
|
|
69
64
|
const unbind = bind(containerEl, {
|
|
@@ -83,7 +78,7 @@ const SyncBlockRendererWrapperComponent = ({
|
|
|
83
78
|
}
|
|
84
79
|
});
|
|
85
80
|
return unbind;
|
|
86
|
-
}, [
|
|
81
|
+
}, []);
|
|
87
82
|
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
88
83
|
ref: rendererRef,
|
|
89
84
|
"data-testid": SyncBlockRendererWrapperDataId
|
|
@@ -30,8 +30,6 @@ import Lozenge from '@atlaskit/lozenge/lozenge';
|
|
|
30
30
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
31
31
|
import { Box, Text, Inline, Anchor, Stack } from '@atlaskit/primitives/compiled';
|
|
32
32
|
import Spinner from '@atlaskit/spinner/spinner';
|
|
33
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
34
|
-
import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
|
|
35
33
|
import Tooltip from '@atlaskit/tooltip/Tooltip';
|
|
36
34
|
import { SYNCED_BLOCK_BUTTON_TEST_ID } from '../types';
|
|
37
35
|
import { SyncedLocationsEmptyStateIllustration } from './assets/SyncedLocationsEmptyStateIllustration';
|
|
@@ -46,7 +44,6 @@ const styles = {
|
|
|
46
44
|
title: "_1reo15vq _18m915vq _syazazsu _1bto1l2s _o5721q9c",
|
|
47
45
|
note: "_syaz1rpy _o5721q9c",
|
|
48
46
|
lozenge: "_ahbq12x7 _1ul91wqb",
|
|
49
|
-
noResultsContainer: "_1bsbo8uj _y3gn1h6o",
|
|
50
47
|
activationDropdownContent: "_1rjcze3t _1bsb1kdj",
|
|
51
48
|
activationNoResultsContainer: "_vchhusvi _1bsb1kdj _ca0q1ejb _n3td1ejb",
|
|
52
49
|
activationNoResultsContent: "_195g1wug _1bsb12aa _y3gn1h6o",
|
|
@@ -738,10 +735,7 @@ const DropdownContentWithReferenceData = ({
|
|
|
738
735
|
}
|
|
739
736
|
};
|
|
740
737
|
return /*#__PURE__*/React.createElement(Box, {
|
|
741
|
-
xcss: cx(styles.dropdownContent,
|
|
742
|
-
// Read off the discriminant rather than the experiment, so the control cohort
|
|
743
|
-
// cannot reach this width and no second exposure is fired for a style.
|
|
744
|
-
locations.kind === 'field-aware' && styles.fieldAwareDropdownContent, expValEqualsNoExposure('platform_editor_sync_block_activation', 'isEnabled', true) && fetchStatus === 'success' && locationCount === 0 && styles.activationDropdownContent, shouldApplyMinHeight(fetchStatus, locationCount) && styles.containerWithMinHeight)
|
|
738
|
+
xcss: cx(styles.dropdownContent, locations.kind === 'field-aware' && styles.fieldAwareDropdownContent, fetchStatus === 'success' && locationCount === 0 && styles.activationDropdownContent, shouldApplyMinHeight(fetchStatus, locationCount) && styles.containerWithMinHeight)
|
|
745
739
|
}, content());
|
|
746
740
|
};
|
|
747
741
|
// The pre-experiment rows. This block is master's, moved into a component; remove with the experiment.
|
|
@@ -881,7 +875,7 @@ const ErrorScreen = ({
|
|
|
881
875
|
const NoResultScreen = ({
|
|
882
876
|
formatMessage
|
|
883
877
|
}) => {
|
|
884
|
-
return
|
|
878
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
885
879
|
xcss: styles.activationNoResultsContainer,
|
|
886
880
|
testId: "synced-locations-dropdown-content-no-results"
|
|
887
881
|
}, /*#__PURE__*/React.createElement(Stack, {
|
|
@@ -897,18 +891,5 @@ const NoResultScreen = ({
|
|
|
897
891
|
target: "_blank",
|
|
898
892
|
rel: "noopener noreferrer",
|
|
899
893
|
xcss: styles.learnMoreLink
|
|
900
|
-
}, formatMessage(messages.syncedLocationDropdownLearnMoreLink)))))
|
|
901
|
-
xcss: styles.noResultsContainer,
|
|
902
|
-
space: "space.100",
|
|
903
|
-
testId: "synced-locations-dropdown-content-no-results"
|
|
904
|
-
}, /*#__PURE__*/React.createElement(Text, {
|
|
905
|
-
as: "p"
|
|
906
|
-
}, formatMessage(messages.syncedLocationDropdownNoResults)), /*#__PURE__*/React.createElement(Text, {
|
|
907
|
-
as: "p"
|
|
908
|
-
}, /*#__PURE__*/React.createElement(Anchor, {
|
|
909
|
-
href: SYNCED_BLOCKS_DOCUMENTATION_URL,
|
|
910
|
-
target: "_blank",
|
|
911
|
-
rel: "noopener noreferrer",
|
|
912
|
-
xcss: styles.learnMoreLink
|
|
913
|
-
}, formatMessage(messages.syncedLocationDropdownLearnMoreLink))));
|
|
894
|
+
}, formatMessage(messages.syncedLocationDropdownLearnMoreLink)))));
|
|
914
895
|
};
|
|
@@ -11,11 +11,10 @@ import DeleteIcon from '@atlaskit/icon/core/delete';
|
|
|
11
11
|
import EditIcon from '@atlaskit/icon/core/edit';
|
|
12
12
|
import LinkBrokenIcon from '@atlaskit/icon/core/link-broken';
|
|
13
13
|
import MegaphoneIcon from '@atlaskit/icon/core/megaphone';
|
|
14
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
15
14
|
import { copySyncedBlockReferenceToClipboard, editSyncedBlockSource, removeSyncedBlock, unsync } from '../editor-commands';
|
|
16
15
|
import { findSyncBlockOrBodiedSyncBlock, isBodiedSyncBlockNode } from '../pm-plugins/utils/utils';
|
|
17
16
|
import { SYNCED_BLOCK_BUTTON_TEST_ID } from '../types';
|
|
18
|
-
import {
|
|
17
|
+
import { SyncedLocationDropdownWithCount } from './SyncedLocationDropdown';
|
|
19
18
|
export const getToolbarConfig = (state, intl, api, syncBlockStore, isLivePage, onGiveFeedback) => {
|
|
20
19
|
var _syncBlockInstance$er, _api$decorations, _api$connectivity, _api$connectivity$sha;
|
|
21
20
|
const syncBlockObject = findSyncBlockOrBodiedSyncBlock(state.schema, state.selection);
|
|
@@ -25,7 +24,6 @@ export const getToolbarConfig = (state, intl, api, syncBlockStore, isLivePage, o
|
|
|
25
24
|
if (syncBlockStore.sourceManager.isPendingCreation(syncBlockObject.node.attrs.resourceId)) {
|
|
26
25
|
return;
|
|
27
26
|
}
|
|
28
|
-
const isSyncBlockActivationEnabled = expValEquals('platform_editor_sync_block_activation', 'isEnabled', true);
|
|
29
27
|
const syncBlockInstance = syncBlockStore.referenceManager.getFromCache(syncBlockObject.node.attrs.resourceId);
|
|
30
28
|
const isUnsyncedBlock = (syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : (_syncBlockInstance$er = syncBlockInstance.error) === null || _syncBlockInstance$er === void 0 ? void 0 : _syncBlockInstance$er.type) === SyncBlockError.NotFound;
|
|
31
29
|
const isErroredBlock = syncBlockInstance === null || syncBlockInstance === void 0 ? void 0 : syncBlockInstance.error;
|
|
@@ -64,46 +62,25 @@ export const getToolbarConfig = (state, intl, api, syncBlockStore, isLivePage, o
|
|
|
64
62
|
};
|
|
65
63
|
items.push(deleteButton);
|
|
66
64
|
} else {
|
|
67
|
-
// When the synced block activation experiment is enabled, the copy action is
|
|
68
|
-
// re-framed as the primary "Copy to sync" action: it shows a visible label and
|
|
69
|
-
// is moved to the first toolbar position (before the synced-location info). See
|
|
70
|
-
// EDITOR-8060.
|
|
71
65
|
const copyButton = {
|
|
72
66
|
id: 'editor.syncedBlock.copy',
|
|
73
67
|
type: 'button',
|
|
74
68
|
appearance: 'subtle',
|
|
75
69
|
icon: CopyIcon,
|
|
76
|
-
title:
|
|
77
|
-
showTitle:
|
|
78
|
-
|
|
79
|
-
testId: isSyncBlockActivationEnabled ? SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarCopy : undefined,
|
|
70
|
+
title: formatMessage(messages.copyToSyncLabel),
|
|
71
|
+
showTitle: true,
|
|
72
|
+
testId: SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarCopy,
|
|
80
73
|
onClick: copySyncedBlockReferenceToClipboard(syncBlockStore, INPUT_METHOD.SYNCED_BLOCK_TB, api, isLivePage),
|
|
81
74
|
...hoverDecorationProps(nodeType, akEditorSelectedNodeClassName)
|
|
82
75
|
};
|
|
83
|
-
|
|
84
|
-
// In the activation experience the primary "Copy to sync" action leads the
|
|
85
|
-
// toolbar, ahead of the informational synced-location dropdown.
|
|
86
|
-
if (isSyncBlockActivationEnabled) {
|
|
87
|
-
items.push(copyButton);
|
|
88
|
-
}
|
|
76
|
+
items.push(copyButton);
|
|
89
77
|
if (!isErroredBlock) {
|
|
90
78
|
const syncedLocation = {
|
|
91
79
|
type: 'custom',
|
|
92
80
|
fallback: [],
|
|
93
81
|
render: (_view, _idx, _dispatchAnalyticsEvent, floatingToolbarRenderContext) => {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
key: `${resourceId}:${localId}:${isBodiedSyncBlock}`,
|
|
97
|
-
syncBlockStore: syncBlockStore,
|
|
98
|
-
resourceId: resourceId,
|
|
99
|
-
localId: localId,
|
|
100
|
-
intl: intl,
|
|
101
|
-
isSource: isBodiedSyncBlock,
|
|
102
|
-
api: api,
|
|
103
|
-
floatingToolbarRenderContext: floatingToolbarRenderContext
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
return /*#__PURE__*/React.createElement(SyncedLocationDropdown, {
|
|
82
|
+
return /*#__PURE__*/React.createElement(SyncedLocationDropdownWithCount, {
|
|
83
|
+
key: `${resourceId}:${localId}:${isBodiedSyncBlock}`,
|
|
107
84
|
syncBlockStore: syncBlockStore,
|
|
108
85
|
resourceId: resourceId,
|
|
109
86
|
localId: localId,
|
|
@@ -135,12 +112,6 @@ export const getToolbarConfig = (state, intl, api, syncBlockStore, isLivePage, o
|
|
|
135
112
|
};
|
|
136
113
|
items.push(syncedLocation, unsyncButton);
|
|
137
114
|
}
|
|
138
|
-
|
|
139
|
-
// Outside the activation experience the copy button keeps its original
|
|
140
|
-
// (icon-only, secondary) position after the synced-location info.
|
|
141
|
-
if (!isSyncBlockActivationEnabled) {
|
|
142
|
-
items.push(copyButton);
|
|
143
|
-
}
|
|
144
115
|
const disabled = !syncBlockStore.referenceManager.getSyncBlockURL(syncBlockObject.node.attrs.resourceId);
|
|
145
116
|
if (!isBodiedSyncBlock) {
|
|
146
117
|
const editSourceButton = {
|
|
@@ -157,57 +128,39 @@ export const getToolbarConfig = (state, intl, api, syncBlockStore, isLivePage, o
|
|
|
157
128
|
};
|
|
158
129
|
items.push(editSourceButton);
|
|
159
130
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
131
|
+
|
|
132
|
+
// testId is required to show focus on trigger button on ESC key press
|
|
133
|
+
// see hideOnEsc in platform/packages/editor/editor-plugin-floating-toolbar/src/ui/Dropdown.tsx
|
|
134
|
+
const testId = isBodiedSyncBlock ? SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSourceOverflowTrigger : SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceOverflowTrigger;
|
|
135
|
+
const overflowMenuConfig = [{
|
|
136
|
+
type: 'overflow-dropdown',
|
|
137
|
+
testId,
|
|
138
|
+
options: [...(onGiveFeedback ? [{
|
|
139
|
+
title: formatMessage(toolbarInsertBlockMessages.feedbackDialog),
|
|
140
|
+
icon: /*#__PURE__*/React.createElement(MegaphoneIcon, {
|
|
141
|
+
label: ""
|
|
142
|
+
}),
|
|
143
|
+
onClick: () => {
|
|
144
|
+
api === null || api === void 0 ? void 0 : api.core.actions.execute(({
|
|
145
|
+
tr
|
|
146
|
+
}) => tr.setSelection(new GapCursorSelection(tr.doc.resolve(syncBlockObject.pos + syncBlockObject.node.nodeSize), Side.RIGHT)));
|
|
147
|
+
onGiveFeedback({
|
|
148
|
+
blockType: isBodiedSyncBlock ? 'source' : 'reference',
|
|
149
|
+
entryPoint: 'overflow-menu'
|
|
150
|
+
});
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
}] : []), {
|
|
168
154
|
title: formatMessage(commonMessages.delete),
|
|
169
|
-
showTitle: false,
|
|
170
|
-
tooltipContent: formatMessage(commonMessages.delete),
|
|
171
155
|
onClick: removeSyncedBlock(api),
|
|
172
|
-
icon: DeleteIcon,
|
|
156
|
+
icon: /*#__PURE__*/React.createElement(DeleteIcon, {
|
|
157
|
+
label: ""
|
|
158
|
+
}),
|
|
173
159
|
testId: isBodiedSyncBlock ? SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSourceDelete : SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceDelete,
|
|
174
160
|
...hoverDecorationProps(nodeType)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
// testId is required to show focus on trigger button on ESC key press
|
|
179
|
-
// see hideOnEsc in platform/packages/editor/editor-plugin-floating-toolbar/src/ui/Dropdown.tsx
|
|
180
|
-
const testId = isBodiedSyncBlock ? SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSourceOverflowTrigger : SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceOverflowTrigger;
|
|
181
|
-
const overflowMenuConfig = [{
|
|
182
|
-
type: 'overflow-dropdown',
|
|
183
|
-
testId,
|
|
184
|
-
options: [...(isSyncBlockActivationEnabled && onGiveFeedback ? [{
|
|
185
|
-
title: formatMessage(toolbarInsertBlockMessages.feedbackDialog),
|
|
186
|
-
icon: /*#__PURE__*/React.createElement(MegaphoneIcon, {
|
|
187
|
-
label: ""
|
|
188
|
-
}),
|
|
189
|
-
onClick: () => {
|
|
190
|
-
api === null || api === void 0 ? void 0 : api.core.actions.execute(({
|
|
191
|
-
tr
|
|
192
|
-
}) => tr.setSelection(new GapCursorSelection(tr.doc.resolve(syncBlockObject.pos + syncBlockObject.node.nodeSize), Side.RIGHT)));
|
|
193
|
-
onGiveFeedback({
|
|
194
|
-
blockType: isBodiedSyncBlock ? 'source' : 'reference',
|
|
195
|
-
entryPoint: 'overflow-menu'
|
|
196
|
-
});
|
|
197
|
-
return true;
|
|
198
|
-
}
|
|
199
|
-
}] : []), {
|
|
200
|
-
title: formatMessage(commonMessages.delete),
|
|
201
|
-
onClick: removeSyncedBlock(api),
|
|
202
|
-
icon: /*#__PURE__*/React.createElement(DeleteIcon, {
|
|
203
|
-
label: ""
|
|
204
|
-
}),
|
|
205
|
-
testId: isBodiedSyncBlock ? SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarSourceDelete : SYNCED_BLOCK_BUTTON_TEST_ID.syncedBlockToolbarReferenceDelete,
|
|
206
|
-
...hoverDecorationProps(nodeType)
|
|
207
|
-
}]
|
|
208
|
-
}];
|
|
209
|
-
items.push(...overflowMenuConfig);
|
|
210
|
-
}
|
|
161
|
+
}]
|
|
162
|
+
}];
|
|
163
|
+
items.push(...overflowMenuConfig);
|
|
211
164
|
}
|
|
212
165
|
const getDomRef = editorView => {
|
|
213
166
|
const domAtPos = editorView.domAtPos.bind(editorView);
|
|
@@ -7,7 +7,6 @@ import { blockTypeMessages } from '@atlaskit/editor-common/messages';
|
|
|
7
7
|
import { IconSyncBlock } from '@atlaskit/editor-common/quick-insert';
|
|
8
8
|
import Lozenge from '@atlaskit/lozenge/lozenge';
|
|
9
9
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
10
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
11
10
|
import { createSyncedBlock } from '../editor-commands';
|
|
12
11
|
import { SYNCED_BLOCK_BUTTON_TEST_ID } from '../types';
|
|
13
12
|
const lozengeWrapperStyles = null;
|
|
@@ -18,10 +17,9 @@ export const getQuickInsertConfig = (config, api, syncBlockStore) => {
|
|
|
18
17
|
if (!(config !== null && config !== void 0 && config.enableSourceCreation)) {
|
|
19
18
|
return [];
|
|
20
19
|
}
|
|
21
|
-
const syncBlockTitle = expValEquals('platform_editor_sync_block_activation', 'isEnabled', true) ? blockTypeMessages.syncedBlockQuickInsertTitle : blockTypeMessages.syncBlock;
|
|
22
20
|
return [{
|
|
23
21
|
id: 'syncBlock',
|
|
24
|
-
title: formatMessage(
|
|
22
|
+
title: formatMessage(blockTypeMessages.syncedBlockQuickInsertTitle),
|
|
25
23
|
description: formatMessage(blockTypeMessages.syncedBlockDescription),
|
|
26
24
|
priority: 400,
|
|
27
25
|
keywords: ['synced', 'block', 'synced-block', 'sync', 'sync-block', 'auto', 'update', 'excerpt', 'connect', 'create'],
|
|
@@ -33,7 +31,7 @@ export const getQuickInsertConfig = (config, api, syncBlockStore) => {
|
|
|
33
31
|
appearance: fg('confluence_fronend_labels_categorization_migration') ? 'discovery' : 'new'
|
|
34
32
|
}, formatMessage(blockTypeMessages.newLozenge))),
|
|
35
33
|
icon: () => /*#__PURE__*/React.createElement(IconSyncBlock, {
|
|
36
|
-
label: formatMessage(
|
|
34
|
+
label: formatMessage(blockTypeMessages.syncedBlockQuickInsertTitle)
|
|
37
35
|
}),
|
|
38
36
|
action: (insert, state) => {
|
|
39
37
|
var _api$analytics;
|
|
@@ -12,7 +12,6 @@ import { findSelectedNodeOfType, removeParentNodeOfType, removeSelectedNode, saf
|
|
|
12
12
|
import { getSourceProductFromResourceIdSafe } from '@atlaskit/editor-synced-block-provider/utils';
|
|
13
13
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
14
14
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
15
|
-
import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
|
|
16
15
|
import { creationMetaKey, deleteMechanismMetaKey, syncedBlockPluginKey } from '../pm-plugins/main';
|
|
17
16
|
import { canBeConvertedToSyncBlock, deferDispatch, findSyncBlock, findSyncBlockOrBodiedSyncBlock, isBodiedSyncBlockNode } from '../pm-plugins/utils/utils';
|
|
18
17
|
import { FLAG_ID } from '../types';
|
|
@@ -365,9 +364,7 @@ export var removeSyncedBlockAtPos = function removeSyncedBlockAtPos(api, pos) {
|
|
|
365
364
|
if ((node === null || node === void 0 ? void 0 : node.type.name) === 'syncBlock') {
|
|
366
365
|
var _node$nodeSize;
|
|
367
366
|
var removeTr = tr.replace(pos, pos + ((_node$nodeSize = node === null || node === void 0 ? void 0 : node.nodeSize) !== null && _node$nodeSize !== void 0 ? _node$nodeSize : 0));
|
|
368
|
-
|
|
369
|
-
removeTr.setMeta(deleteMechanismMetaKey, 'deleteButton');
|
|
370
|
-
}
|
|
367
|
+
removeTr.setMeta(deleteMechanismMetaKey, 'deleteButton');
|
|
371
368
|
return removeTr;
|
|
372
369
|
}
|
|
373
370
|
return tr;
|
|
@@ -23,7 +23,6 @@ import { DecorationSet, Decoration } from '@atlaskit/editor-prosemirror/view';
|
|
|
23
23
|
import { convertPMNodesToSyncBlockNodes } from '@atlaskit/editor-synced-block-provider';
|
|
24
24
|
import { getSourceProductFromResourceIdSafe } from '@atlaskit/editor-synced-block-provider/utils';
|
|
25
25
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
26
|
-
import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
|
|
27
26
|
import { bodiedSyncBlockNodeView } from '../nodeviews/bodiedSyncedBlock';
|
|
28
27
|
import { SyncBlock as SyncBlockView } from '../nodeviews/syncedBlock';
|
|
29
28
|
import { FLAG_ID } from '../types';
|
|
@@ -168,13 +167,9 @@ var isHistoryMeta = function isHistoryMeta(meta) {
|
|
|
168
167
|
*/
|
|
169
168
|
export var getDeleteMechanism = function getDeleteMechanism(tr, state) {
|
|
170
169
|
var _selection$node, _selection$node2;
|
|
171
|
-
// Keep the legacy analytics classification unchanged while activation is off.
|
|
172
|
-
// The stricter history, structural-step, and reference-selection handling is
|
|
173
|
-
// only needed by the prompted feedback rollout.
|
|
174
|
-
var isSyncBlockActivationEnabled = expValEqualsNoExposure('platform_editor_sync_block_activation', 'isEnabled', true);
|
|
175
170
|
var historyMeta = tr.getMeta(pmHistoryPluginKey);
|
|
176
171
|
if (historyMeta) {
|
|
177
|
-
if (
|
|
172
|
+
if (!isHistoryMeta(historyMeta)) {
|
|
178
173
|
return 'other';
|
|
179
174
|
}
|
|
180
175
|
return isHistoryMeta(historyMeta) && historyMeta.redo ? 'redo' : 'undo';
|
|
@@ -185,7 +180,7 @@ export var getDeleteMechanism = function getDeleteMechanism(tr, state) {
|
|
|
185
180
|
if (tr.getMeta(deleteMechanismMetaKey) === 'deleteButton') {
|
|
186
181
|
return 'deleteButton';
|
|
187
182
|
}
|
|
188
|
-
var hasStructuralStep =
|
|
183
|
+
var hasStructuralStep = tr.steps.some(function (step) {
|
|
189
184
|
return step instanceof ReplaceAroundStep;
|
|
190
185
|
});
|
|
191
186
|
var hasReplaceStep = tr.steps.some(function (step) {
|
|
@@ -195,7 +190,7 @@ export var getDeleteMechanism = function getDeleteMechanism(tr, state) {
|
|
|
195
190
|
return 'other';
|
|
196
191
|
}
|
|
197
192
|
var selection = state.selection;
|
|
198
|
-
var isNodeSelected = selection instanceof NodeSelection && (((_selection$node = selection.node) === null || _selection$node === void 0 ? void 0 : _selection$node.type.name) === 'bodiedSyncBlock' ||
|
|
193
|
+
var isNodeSelected = selection instanceof NodeSelection && (((_selection$node = selection.node) === null || _selection$node === void 0 ? void 0 : _selection$node.type.name) === 'bodiedSyncBlock' || ((_selection$node2 = selection.node) === null || _selection$node2 === void 0 ? void 0 : _selection$node2.type.name) === 'syncBlock');
|
|
199
194
|
return isNodeSelected ? 'selectionReplaced' : 'keyboardDelete';
|
|
200
195
|
};
|
|
201
196
|
export var getPromptedFeedbackEntryPoint = function getPromptedFeedbackEntryPoint(mechanism) {
|
|
@@ -283,7 +278,7 @@ var filterTransactionOnline = function filterTransactionOnline(_ref3) {
|
|
|
283
278
|
var isCutRemoval = hasRemovedSyncBlock && ctx.consumeCutRemoval();
|
|
284
279
|
var canPromptForRemoval = Boolean(ctx.onGiveFeedback) && hasRemovedSyncBlock && !isDirtyTransaction(tr) && !isCutRemoval && !isPasteOrDrop;
|
|
285
280
|
var promptedFeedbackEntryPoint = canPromptForRemoval ? getPromptedFeedbackEntryPoint(getDeleteMechanism(tr, state)) : undefined;
|
|
286
|
-
var entryPoint = promptedFeedbackEntryPoint
|
|
281
|
+
var entryPoint = promptedFeedbackEntryPoint;
|
|
287
282
|
if (entryPoint && syncBlockRemoved.length > 0 && bodiedSyncBlockRemoved.length === 0) {
|
|
288
283
|
tr.setMeta(syncedBlockPromptedFeedbackMetaKey, {
|
|
289
284
|
context: {
|
|
@@ -958,7 +953,7 @@ export var createPlugin = function createPlugin(options, pmPluginFactoryParams,
|
|
|
958
953
|
var isCopy = ctx.consumeCopyEvent();
|
|
959
954
|
var isCut = ctx.consumeCutEvent();
|
|
960
955
|
// A prompted feedback cut is always a cut, so the two never need combining.
|
|
961
|
-
var isPromptedFeedbackCut = Boolean(syncBlockStore && (options === null || options === void 0 ? void 0 : options.onGiveFeedback) && isCut)
|
|
956
|
+
var isPromptedFeedbackCut = Boolean(syncBlockStore && (options === null || options === void 0 ? void 0 : options.onGiveFeedback) && isCut);
|
|
962
957
|
if (!syncBlockStore || !isCopy && !isCut) {
|
|
963
958
|
return slice;
|
|
964
959
|
}
|
|
@@ -1115,7 +1110,7 @@ export var createPlugin = function createPlugin(options, pmPluginFactoryParams,
|
|
|
1115
1110
|
var feedbackContext = tr.getMeta(syncedBlockPromptedFeedbackMetaKey);
|
|
1116
1111
|
return feedbackContext ? [feedbackContext] : [];
|
|
1117
1112
|
});
|
|
1118
|
-
if (feedbackContexts.length > 0
|
|
1113
|
+
if (feedbackContexts.length > 0) {
|
|
1119
1114
|
feedbackContexts.forEach(function (feedbackContext) {
|
|
1120
1115
|
ctx.handleAppliedFeedback(feedbackContext);
|
|
1121
1116
|
});
|
|
@@ -7,7 +7,6 @@ import { syncBlock } from '@atlaskit/adf-schema/sync-block';
|
|
|
7
7
|
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
|
|
8
8
|
import { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
|
|
9
9
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
10
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
11
10
|
import { flushBodiedSyncBlocks as _flushBodiedSyncBlocks, flushSyncBlocks, discardUnpublishedSyncBlocks as _discardUnpublishedSyncBlocks } from './editor-actions';
|
|
12
11
|
import { copySyncedBlockReferenceToClipboardEditorCommand, createSyncedBlock } from './editor-commands';
|
|
13
12
|
import { createPlugin, syncedBlockPluginKey } from './pm-plugins/main';
|
|
@@ -164,7 +163,7 @@ export var syncedBlockPlugin = function syncedBlockPlugin(_ref2) {
|
|
|
164
163
|
refs.containerElement = containerElement || undefined;
|
|
165
164
|
refs.popupsMountPoint = popupsMountPoint || undefined;
|
|
166
165
|
refs.wrapperElement = wrapperElement || undefined;
|
|
167
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null,
|
|
166
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SourceSyncBlockPlaceholder, null), /*#__PURE__*/React.createElement(LazySyncedBlockUI, {
|
|
168
167
|
syncBlockStore: syncBlockStore,
|
|
169
168
|
api: api,
|
|
170
169
|
editorView: editorView,
|
|
@@ -7,7 +7,6 @@ import { isOfflineMode } from '@atlaskit/editor-plugin-connectivity';
|
|
|
7
7
|
import { SyncBlocksIcon, ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
|
|
8
8
|
import Lozenge from '@atlaskit/lozenge/lozenge';
|
|
9
9
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
10
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
11
10
|
import { canBeConvertedToSyncBlock } from '../pm-plugins/utils/utils';
|
|
12
11
|
import { SYNCED_BLOCK_BUTTON_TEST_ID } from '../types';
|
|
13
12
|
var SyncedBlockNewLozenge = function SyncedBlockNewLozenge(_ref) {
|
|
@@ -112,7 +111,6 @@ var CopySyncedBlockDropdownItem = function CopySyncedBlockDropdownItem(_ref4) {
|
|
|
112
111
|
var lozenge = /*#__PURE__*/React.createElement(SyncedBlockNewLozenge, {
|
|
113
112
|
label: formatMessage(blockMenuMessages.newLozenge)
|
|
114
113
|
});
|
|
115
|
-
var copyLabel = expValEquals('platform_editor_sync_block_activation', 'isEnabled', true) ? syncBlockMessages.copyToSyncLabel : blockMenuMessages.copySyncedBlock;
|
|
116
114
|
return /*#__PURE__*/React.createElement(ToolbarDropdownItem, {
|
|
117
115
|
elemBefore: /*#__PURE__*/React.createElement(SyncBlocksIcon, {
|
|
118
116
|
label: "",
|
|
@@ -121,7 +119,7 @@ var CopySyncedBlockDropdownItem = function CopySyncedBlockDropdownItem(_ref4) {
|
|
|
121
119
|
onClick: onClick,
|
|
122
120
|
isDisabled: isOfflineMode(mode),
|
|
123
121
|
elemAfterText: lozenge
|
|
124
|
-
}, formatMessage(
|
|
122
|
+
}, formatMessage(syncBlockMessages.copyToSyncLabel));
|
|
125
123
|
};
|
|
126
124
|
export var CreateOrCopySyncedBlockDropdownItem = function CreateOrCopySyncedBlockDropdownItem(_ref5) {
|
|
127
125
|
var api = _ref5.api,
|
package/dist/esm/ui/Flag.js
CHANGED
|
@@ -20,7 +20,6 @@ import StatusSuccessIcon from '@atlaskit/icon/core/status-success';
|
|
|
20
20
|
import StatusWarningIcon from '@atlaskit/icon/core/status-warning';
|
|
21
21
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
22
22
|
import { Anchor } from '@atlaskit/primitives/compiled/anchor';
|
|
23
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
24
23
|
import { syncedBlockPluginKey } from '../pm-plugins/main';
|
|
25
24
|
import { FLAG_ID } from '../types';
|
|
26
25
|
var feedbackFlagStyles = null;
|
|
@@ -150,7 +149,7 @@ export var Flag = function Flag(_ref) {
|
|
|
150
149
|
var onRetry = activeFlag.onRetry,
|
|
151
150
|
onDismissedCallback = activeFlag.onDismissed;
|
|
152
151
|
var isCopiedFlag = activeFlag.id === FLAG_ID.SYNC_BLOCK_COPIED;
|
|
153
|
-
var isCopiedDescriptionEnabled = isCopiedFlag && (isExperimentEnabled('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page'
|
|
152
|
+
var isCopiedDescriptionEnabled = isCopiedFlag && (isExperimentEnabled('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page');
|
|
154
153
|
var copiedDescription = getSyncBlockCopiedDescription(activeFlag, isCopiedDescriptionEnabled);
|
|
155
154
|
var title = isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedTitleJiraWorkItem : defaultTitle;
|
|
156
155
|
var description = copiedDescription !== null && copiedDescription !== void 0 ? copiedDescription : isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedDescriptionJiraWorkItem : defaultDescription;
|
|
@@ -8,7 +8,6 @@ import { syncBlockMessages as messages } from '@atlaskit/editor-common/messages'
|
|
|
8
8
|
import { SyncBlockLabelSharedCssClassName } from '@atlaskit/editor-common/sync-block';
|
|
9
9
|
import BlockSyncedIcon from '@atlaskit/icon-lab/core/block-synced';
|
|
10
10
|
import { Box, Text } from '@atlaskit/primitives/compiled';
|
|
11
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
12
11
|
import Tooltip from '@atlaskit/tooltip/Tooltip';
|
|
13
12
|
import VisuallyHidden from '@atlaskit/visually-hidden/visually-hidden';
|
|
14
13
|
import { formatElapsedTime } from './utils/time';
|
|
@@ -92,7 +91,7 @@ var SyncBlockLabelComponent = function SyncBlockLabelComponent(_ref) {
|
|
|
92
91
|
return renderPlainLabel(formatMessage(messages.unsyncedBlockLabel));
|
|
93
92
|
}
|
|
94
93
|
if (isSource) {
|
|
95
|
-
return renderPlainLabel(formatMessage(
|
|
94
|
+
return renderPlainLabel(formatMessage(messages.sourceSyncedBlockLabel));
|
|
96
95
|
}
|
|
97
96
|
if (!title) {
|
|
98
97
|
return renderPlainLabel(formatMessage(messages.syncedBlockLabel));
|
|
@@ -115,7 +114,7 @@ var SyncBlockLabelComponent = function SyncBlockLabelComponent(_ref) {
|
|
|
115
114
|
}), getLabelContent);
|
|
116
115
|
var referenceDescription = !isSource && !isUnsyncedBlock && /*#__PURE__*/React.createElement(VisuallyHidden, {
|
|
117
116
|
id: ariaDescribedById
|
|
118
|
-
},
|
|
117
|
+
}, tooltipMessage);
|
|
119
118
|
if (unpublishedTooltipLabel) {
|
|
120
119
|
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
121
120
|
position: "top",
|
|
@@ -4,7 +4,6 @@ import { bind } from 'bind-event-listener';
|
|
|
4
4
|
import { SyncBlockSharedCssClassName } from '@atlaskit/editor-common/sync-block';
|
|
5
5
|
import { SyncBlockError, useFetchSyncBlockData, useFetchSyncBlockTitle } from '@atlaskit/editor-synced-block-provider';
|
|
6
6
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
7
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
8
7
|
import { getUnpublishedSourceType } from './getUnpublishedSourceType';
|
|
9
8
|
import { SyncBlockLabel } from './SyncBlockLabel';
|
|
10
9
|
var SyncBlockRendererWrapperDataId = 'sync-block-plugin-renderer-wrapper';
|
|
@@ -45,10 +44,6 @@ var SyncBlockRendererWrapperComponent = function SyncBlockRendererWrapperCompone
|
|
|
45
44
|
}, [localSourceBlockInstanceId, syncBlockStore.sourceManager]);
|
|
46
45
|
var isUnsyncedBlock = isUnpublishedBlock && !localSameDocumentSource || (syncBlockFetchResult === null || syncBlockFetchResult === void 0 || (_syncBlockFetchResult4 = syncBlockFetchResult.syncBlockInstance) === null || _syncBlockFetchResult4 === void 0 || (_syncBlockFetchResult4 = _syncBlockFetchResult4.error) === null || _syncBlockFetchResult4 === void 0 ? void 0 : _syncBlockFetchResult4.type) === SyncBlockError.NotFound;
|
|
47
46
|
|
|
48
|
-
// Evaluated unconditionally so the experiment exposure is tracked correctly
|
|
49
|
-
// (recorded on every render, not lazily on first click).
|
|
50
|
-
var isSyncBlockActivationEnabled = expValEquals('platform_editor_sync_block_activation', 'isEnabled', true);
|
|
51
|
-
|
|
52
47
|
// Prevent editing in the contentEditable renderer wrapper. We set
|
|
53
48
|
// contentEditable="true" to enable text selection (creating an editable
|
|
54
49
|
// island inside ProseMirror's contentEditable="false" nodeview wrapper),
|
|
@@ -66,7 +61,7 @@ var SyncBlockRendererWrapperComponent = function SyncBlockRendererWrapperCompone
|
|
|
66
61
|
var rendererRef = useRef(null);
|
|
67
62
|
useEffect(function () {
|
|
68
63
|
var containerEl = rendererRef.current;
|
|
69
|
-
if (!containerEl
|
|
64
|
+
if (!containerEl) {
|
|
70
65
|
return;
|
|
71
66
|
}
|
|
72
67
|
var unbind = bind(containerEl, {
|
|
@@ -86,7 +81,7 @@ var SyncBlockRendererWrapperComponent = function SyncBlockRendererWrapperCompone
|
|
|
86
81
|
}
|
|
87
82
|
});
|
|
88
83
|
return unbind;
|
|
89
|
-
}, [
|
|
84
|
+
}, []);
|
|
90
85
|
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
91
86
|
ref: rendererRef,
|
|
92
87
|
"data-testid": SyncBlockRendererWrapperDataId
|
|
@@ -39,8 +39,6 @@ import Lozenge from '@atlaskit/lozenge/lozenge';
|
|
|
39
39
|
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
40
40
|
import { Box, Text, Inline, Anchor, Stack } from '@atlaskit/primitives/compiled';
|
|
41
41
|
import Spinner from '@atlaskit/spinner/spinner';
|
|
42
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
43
|
-
import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
|
|
44
42
|
import Tooltip from '@atlaskit/tooltip/Tooltip';
|
|
45
43
|
import { SYNCED_BLOCK_BUTTON_TEST_ID } from '../types';
|
|
46
44
|
import { SyncedLocationsEmptyStateIllustration } from './assets/SyncedLocationsEmptyStateIllustration';
|
|
@@ -55,7 +53,6 @@ var styles = {
|
|
|
55
53
|
title: "_1reo15vq _18m915vq _syazazsu _1bto1l2s _o5721q9c",
|
|
56
54
|
note: "_syaz1rpy _o5721q9c",
|
|
57
55
|
lozenge: "_ahbq12x7 _1ul91wqb",
|
|
58
|
-
noResultsContainer: "_1bsbo8uj _y3gn1h6o",
|
|
59
56
|
activationDropdownContent: "_1rjcze3t _1bsb1kdj",
|
|
60
57
|
activationNoResultsContainer: "_vchhusvi _1bsb1kdj _ca0q1ejb _n3td1ejb",
|
|
61
58
|
activationNoResultsContent: "_195g1wug _1bsb12aa _y3gn1h6o",
|
|
@@ -825,10 +822,7 @@ var DropdownContentWithReferenceData = function DropdownContentWithReferenceData
|
|
|
825
822
|
}
|
|
826
823
|
};
|
|
827
824
|
return /*#__PURE__*/React.createElement(Box, {
|
|
828
|
-
xcss: cx(styles.dropdownContent,
|
|
829
|
-
// Read off the discriminant rather than the experiment, so the control cohort
|
|
830
|
-
// cannot reach this width and no second exposure is fired for a style.
|
|
831
|
-
locations.kind === 'field-aware' && styles.fieldAwareDropdownContent, expValEqualsNoExposure('platform_editor_sync_block_activation', 'isEnabled', true) && fetchStatus === 'success' && locationCount === 0 && styles.activationDropdownContent, shouldApplyMinHeight(fetchStatus, locationCount) && styles.containerWithMinHeight)
|
|
825
|
+
xcss: cx(styles.dropdownContent, locations.kind === 'field-aware' && styles.fieldAwareDropdownContent, fetchStatus === 'success' && locationCount === 0 && styles.activationDropdownContent, shouldApplyMinHeight(fetchStatus, locationCount) && styles.containerWithMinHeight)
|
|
832
826
|
}, content());
|
|
833
827
|
};
|
|
834
828
|
// The pre-experiment rows. This block is master's, moved into a component; remove with the experiment.
|
|
@@ -963,7 +957,7 @@ var ErrorScreen = function ErrorScreen(_ref18) {
|
|
|
963
957
|
};
|
|
964
958
|
var NoResultScreen = function NoResultScreen(_ref19) {
|
|
965
959
|
var formatMessage = _ref19.formatMessage;
|
|
966
|
-
return
|
|
960
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
967
961
|
xcss: styles.activationNoResultsContainer,
|
|
968
962
|
testId: "synced-locations-dropdown-content-no-results"
|
|
969
963
|
}, /*#__PURE__*/React.createElement(Stack, {
|
|
@@ -979,18 +973,5 @@ var NoResultScreen = function NoResultScreen(_ref19) {
|
|
|
979
973
|
target: "_blank",
|
|
980
974
|
rel: "noopener noreferrer",
|
|
981
975
|
xcss: styles.learnMoreLink
|
|
982
|
-
}, formatMessage(messages.syncedLocationDropdownLearnMoreLink)))))
|
|
983
|
-
xcss: styles.noResultsContainer,
|
|
984
|
-
space: "space.100",
|
|
985
|
-
testId: "synced-locations-dropdown-content-no-results"
|
|
986
|
-
}, /*#__PURE__*/React.createElement(Text, {
|
|
987
|
-
as: "p"
|
|
988
|
-
}, formatMessage(messages.syncedLocationDropdownNoResults)), /*#__PURE__*/React.createElement(Text, {
|
|
989
|
-
as: "p"
|
|
990
|
-
}, /*#__PURE__*/React.createElement(Anchor, {
|
|
991
|
-
href: SYNCED_BLOCKS_DOCUMENTATION_URL,
|
|
992
|
-
target: "_blank",
|
|
993
|
-
rel: "noopener noreferrer",
|
|
994
|
-
xcss: styles.learnMoreLink
|
|
995
|
-
}, formatMessage(messages.syncedLocationDropdownLearnMoreLink))));
|
|
976
|
+
}, formatMessage(messages.syncedLocationDropdownLearnMoreLink)))));
|
|
996
977
|
};
|