@atlaskit/editor-plugin-block-menu 4.0.5 → 4.0.7

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.
@@ -1,13 +1,13 @@
1
1
  import React, { useMemo, useCallback } from 'react';
2
2
  import { useIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { messages } from '@atlaskit/editor-common/block-menu';
5
5
  import { blockMenuMessages } from '@atlaskit/editor-common/messages';
6
6
  import { ToolbarNestedDropdownMenu } from '@atlaskit/editor-toolbar';
7
7
  import ChangesIcon from '@atlaskit/icon/core/changes';
8
8
  import ChevronRightIcon from '@atlaskit/icon/core/chevron-right';
9
9
  import { fg } from '@atlaskit/platform-feature-flags';
10
- import { useBlockMenu } from './block-menu-provider';
10
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
11
11
  import { checkIsFormatMenuHidden } from './utils/checkIsFormatMenuHidden';
12
12
  export const FormatMenuComponent = ({
13
13
  api,
@@ -16,24 +16,28 @@ export const FormatMenuComponent = ({
16
16
  const {
17
17
  formatMessage
18
18
  } = useIntl();
19
- const {
20
- fireAnalyticsEvent
21
- } = useBlockMenu();
22
19
  const text = fg('platform_editor_block_menu_patch_1') ? formatMessage(blockMenuMessages.turnInto) : formatMessage(messages.turnInto);
23
20
  const isDisabled = useMemo(() => {
24
21
  return fg('platform_editor_block_menu_for_disabled_nodes') ? checkIsFormatMenuHidden(api) : false;
25
22
  }, [api]);
26
23
  const handleClick = useCallback(() => {
27
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 ? void 0 : fireAnalyticsEvent({
28
- action: ACTION.CLICKED,
29
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
30
- actionSubjectId: ACTION_SUBJECT_ID.FORMAT_MENU,
31
- eventType: EVENT_TYPE.UI,
32
- attributes: {
33
- inputMethod: INPUT_METHOD.MOUSE
34
- }
24
+ api === null || api === void 0 ? void 0 : api.core.actions.execute(({
25
+ tr
26
+ }) => {
27
+ var _api$analytics, _api$analytics$action;
28
+ const payload = {
29
+ action: ACTION.CLICKED,
30
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
31
+ attributes: {
32
+ inputMethod: INPUT_METHOD.MOUSE,
33
+ menuItemName: BLOCK_MENU_ITEM_NAME.FORMAT_MENU
34
+ },
35
+ eventType: EVENT_TYPE.UI
36
+ };
37
+ api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : (_api$analytics$action = _api$analytics.actions) === null || _api$analytics$action === void 0 ? void 0 : _api$analytics$action.attachAnalyticsEvent(payload)(tr);
38
+ return tr;
35
39
  });
36
- }, [fireAnalyticsEvent]);
40
+ }, [api]);
37
41
  return /*#__PURE__*/React.createElement(ToolbarNestedDropdownMenu, {
38
42
  text: text,
39
43
  elemBefore: /*#__PURE__*/React.createElement(ChangesIcon, {
@@ -1,21 +1,18 @@
1
1
  import React from 'react';
2
2
  import { useIntl, injectIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
5
5
  import { blockMenuMessages as messages } from '@atlaskit/editor-common/messages';
6
6
  import { DIRECTION } from '@atlaskit/editor-common/types';
7
7
  import { ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
8
8
  import ArrowDownIcon from '@atlaskit/icon/core/arrow-down';
9
- import { useBlockMenu } from './block-menu-provider';
9
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
10
10
  const MoveDownDropdownItemContent = ({
11
11
  api
12
12
  }) => {
13
13
  const {
14
14
  formatMessage
15
15
  } = useIntl();
16
- const {
17
- fireAnalyticsEvent
18
- } = useBlockMenu();
19
16
  const {
20
17
  canMoveDown
21
18
  } = useSharedPluginStateWithSelector(api, ['blockControls'], ({
@@ -27,19 +24,20 @@ const MoveDownDropdownItemContent = ({
27
24
  };
28
25
  });
29
26
  const handleClick = () => {
30
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 ? void 0 : fireAnalyticsEvent({
31
- action: ACTION.CLICKED,
32
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
33
- actionSubjectId: ACTION_SUBJECT_ID.MOVE_DOWN_BLOCK,
34
- eventType: EVENT_TYPE.UI,
35
- attributes: {
36
- inputMethod: INPUT_METHOD.MOUSE
37
- }
38
- });
39
27
  api === null || api === void 0 ? void 0 : api.core.actions.execute(({
40
28
  tr
41
29
  }) => {
42
- var _api$blockControls, _api$blockControls$co, _api$blockControls2, _api$blockControls2$c;
30
+ var _api$analytics, _api$analytics$action, _api$blockControls, _api$blockControls$co, _api$blockControls2, _api$blockControls2$c;
31
+ const payload = {
32
+ action: ACTION.CLICKED,
33
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
34
+ attributes: {
35
+ inputMethod: INPUT_METHOD.MOUSE,
36
+ menuItemName: BLOCK_MENU_ITEM_NAME.MOVE_DOWN
37
+ },
38
+ eventType: EVENT_TYPE.UI
39
+ };
40
+ api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : (_api$analytics$action = _api$analytics.actions) === null || _api$analytics$action === void 0 ? void 0 : _api$analytics$action.attachAnalyticsEvent(payload)(tr);
43
41
  api === null || api === void 0 ? void 0 : (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : (_api$blockControls$co = _api$blockControls.commands) === null || _api$blockControls$co === void 0 ? void 0 : _api$blockControls$co.moveNodeWithBlockMenu(DIRECTION.DOWN)({
44
42
  tr
45
43
  });
@@ -1,21 +1,18 @@
1
1
  import React from 'react';
2
2
  import { useIntl, injectIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
5
5
  import { blockMenuMessages as messages } from '@atlaskit/editor-common/messages';
6
6
  import { DIRECTION } from '@atlaskit/editor-common/types';
7
7
  import { ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
8
8
  import ArrowUpIcon from '@atlaskit/icon/core/arrow-up';
9
- import { useBlockMenu } from './block-menu-provider';
9
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
10
10
  const MoveUpDropdownItemContent = ({
11
11
  api
12
12
  }) => {
13
13
  const {
14
14
  formatMessage
15
15
  } = useIntl();
16
- const {
17
- fireAnalyticsEvent
18
- } = useBlockMenu();
19
16
  const {
20
17
  canMoveUp
21
18
  } = useSharedPluginStateWithSelector(api, ['blockControls'], ({
@@ -27,19 +24,20 @@ const MoveUpDropdownItemContent = ({
27
24
  };
28
25
  });
29
26
  const handleClick = () => {
30
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 ? void 0 : fireAnalyticsEvent({
31
- action: ACTION.CLICKED,
32
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
33
- actionSubjectId: ACTION_SUBJECT_ID.MOVE_UP_BLOCK,
34
- eventType: EVENT_TYPE.UI,
35
- attributes: {
36
- inputMethod: INPUT_METHOD.MOUSE
37
- }
38
- });
39
27
  api === null || api === void 0 ? void 0 : api.core.actions.execute(({
40
28
  tr
41
29
  }) => {
42
- var _api$blockControls, _api$blockControls$co, _api$blockControls2, _api$blockControls2$c;
30
+ var _api$analytics, _api$analytics$action, _api$blockControls, _api$blockControls$co, _api$blockControls2, _api$blockControls2$c;
31
+ const payload = {
32
+ action: ACTION.CLICKED,
33
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
34
+ attributes: {
35
+ inputMethod: INPUT_METHOD.MOUSE,
36
+ menuItemName: BLOCK_MENU_ITEM_NAME.MOVE_UP
37
+ },
38
+ eventType: EVENT_TYPE.UI
39
+ };
40
+ api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : (_api$analytics$action = _api$analytics.actions) === null || _api$analytics$action === void 0 ? void 0 : _api$analytics$action.attachAnalyticsEvent(payload)(tr);
43
41
  api === null || api === void 0 ? void 0 : (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : (_api$blockControls$co = _api$blockControls.commands) === null || _api$blockControls$co === void 0 ? void 0 : _api$blockControls$co.moveNodeWithBlockMenu(DIRECTION.UP)({
44
42
  tr
45
43
  });
@@ -1,7 +1,6 @@
1
1
  import React, { useCallback, createContext, useContext } from 'react';
2
2
  var BlockMenuContext = /*#__PURE__*/createContext({
3
- onDropdownOpenChanged: function onDropdownOpenChanged() {},
4
- fireAnalyticsEvent: function fireAnalyticsEvent() {}
3
+ onDropdownOpenChanged: function onDropdownOpenChanged() {}
5
4
  });
6
5
  export var useBlockMenu = function useBlockMenu() {
7
6
  var context = useContext(BlockMenuContext);
@@ -25,14 +24,9 @@ export var BlockMenuProvider = function BlockMenuProvider(_ref) {
25
24
  }, 1);
26
25
  }
27
26
  }, [api]);
28
- var fireAnalyticsEvent = useCallback(function (payload) {
29
- var _api$analytics;
30
- api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.fireAnalyticsEvent(payload);
31
- }, [api]);
32
27
  return /*#__PURE__*/React.createElement(BlockMenuContext.Provider, {
33
28
  value: {
34
- onDropdownOpenChanged: onDropdownOpenChanged,
35
- fireAnalyticsEvent: fireAnalyticsEvent
29
+ onDropdownOpenChanged: onDropdownOpenChanged
36
30
  }
37
31
  }, children);
38
32
  };
@@ -71,8 +71,7 @@ var BlockMenu = function BlockMenu(_ref2) {
71
71
  currentUserIntent = _useSharedPluginState.currentUserIntent,
72
72
  openedViaKeyboard = _useSharedPluginState.openedViaKeyboard;
73
73
  var _useBlockMenu = useBlockMenu(),
74
- onDropdownOpenChanged = _useBlockMenu.onDropdownOpenChanged,
75
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
74
+ onDropdownOpenChanged = _useBlockMenu.onDropdownOpenChanged;
76
75
  var targetHandleRef = editorView === null || editorView === void 0 || (_editorView$dom = editorView.dom) === null || _editorView$dom === void 0 ? void 0 : _editorView$dom.querySelector(DRAG_HANDLE_SELECTOR);
77
76
  var prevIsMenuOpenRef = useRef(false);
78
77
  var hasFocus = expValEqualsNoExposure('platform_editor_block_menu_keyboard_navigation', 'isEnabled', true) ? (_ref3 = (editorView === null || editorView === void 0 ? void 0 : editorView.hasFocus()) || document.activeElement === targetHandleRef) !== null && _ref3 !== void 0 ? _ref3 : false : (_editorView$hasFocus = editorView === null || editorView === void 0 ? void 0 : editorView.hasFocus()) !== null && _editorView$hasFocus !== void 0 ? _editorView$hasFocus : false;
@@ -89,7 +88,8 @@ var BlockMenu = function BlockMenu(_ref2) {
89
88
 
90
89
  // Fire analytics event when block menu opens (only on first transition from closed to open)
91
90
  if (!prevIsMenuOpenRef.current && isMenuOpen) {
92
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
91
+ var _api$analytics;
92
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.fireAnalyticsEvent({
93
93
  action: ACTION.OPENED,
94
94
  actionSubject: ACTION_SUBJECT.BLOCK_MENU,
95
95
  eventType: EVENT_TYPE.UI,
@@ -102,7 +102,7 @@ var BlockMenu = function BlockMenu(_ref2) {
102
102
  // Update the previous state
103
103
  prevIsMenuOpenRef.current = isMenuOpen;
104
104
  api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 ? void 0 : _api$userIntent.commands.setCurrentUserIntent('blockMenuOpen'));
105
- }, [api, isMenuOpen, menuTriggerBy, selectedByShortcutORDragHandle, hasFocus, shouldShowBlockMenuForEmptyLine, currentUserIntent, fireAnalyticsEvent]);
105
+ }, [api, isMenuOpen, menuTriggerBy, selectedByShortcutORDragHandle, hasFocus, shouldShowBlockMenuForEmptyLine, currentUserIntent]);
106
106
  if (!isMenuOpen) {
107
107
  return null;
108
108
  }
@@ -1 +1,13 @@
1
- export var BLOCK_MENU_LABEL = 'Editor Block Menu';
1
+ export var BLOCK_MENU_LABEL = 'Editor Block Menu';
2
+
3
+ /**
4
+ * Constants for block menu analytics menu item names
5
+ */
6
+ export var BLOCK_MENU_ITEM_NAME = {
7
+ COPY_LINK_TO_BLOCK: 'copyLinkToBlock',
8
+ MOVE_UP: 'moveUp',
9
+ MOVE_DOWN: 'moveDown',
10
+ DELETE: 'delete',
11
+ FORMAT_MENU: 'formatMenu',
12
+ COPY_CONTENT: 'copyContent'
13
+ };
@@ -3,7 +3,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  import React from 'react';
5
5
  import { injectIntl, useIntl } from 'react-intl-next';
6
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
6
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
7
7
  import { messages } from '@atlaskit/editor-common/block-menu';
8
8
  import { copyHTMLToClipboard } from '@atlaskit/editor-common/clipboard';
9
9
  import { toDOM, copyDomNode } from '@atlaskit/editor-common/copy-button';
@@ -14,7 +14,7 @@ import { isTableSelected } from '@atlaskit/editor-tables/utils';
14
14
  import { ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
15
15
  import CopyIcon from '@atlaskit/icon/core/copy';
16
16
  import { fg } from '@atlaskit/platform-feature-flags';
17
- import { useBlockMenu } from './block-menu-provider';
17
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
18
18
  var toDOMFromFragment = function toDOMFromFragment(fragment, schema) {
19
19
  return DOMSerializer.fromSchema(schema).serializeFragment(fragment);
20
20
  };
@@ -22,18 +22,22 @@ var CopyBlockMenuItem = function CopyBlockMenuItem(_ref) {
22
22
  var api = _ref.api;
23
23
  var _useIntl = useIntl(),
24
24
  formatMessage = _useIntl.formatMessage;
25
- var _useBlockMenu = useBlockMenu(),
26
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
27
25
  var copyHandler = function copyHandler(event) {
28
26
  var _api$selection;
29
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
30
- action: ACTION.CLICKED,
31
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
32
- actionSubjectId: ACTION_SUBJECT_ID.COPY_BLOCK,
33
- eventType: EVENT_TYPE.UI,
34
- attributes: {
35
- inputMethod: INPUT_METHOD.MOUSE
36
- }
27
+ api === null || api === void 0 || api.core.actions.execute(function (_ref2) {
28
+ var _api$analytics;
29
+ var tr = _ref2.tr;
30
+ var payload = {
31
+ action: ACTION.CLICKED,
32
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
33
+ attributes: {
34
+ inputMethod: INPUT_METHOD.MOUSE,
35
+ menuItemName: BLOCK_MENU_ITEM_NAME.COPY_CONTENT
36
+ },
37
+ eventType: EVENT_TYPE.UI
38
+ };
39
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr);
40
+ return tr;
37
41
  });
38
42
 
39
43
  // prevent click event from bubbling up to the ancestor elements
@@ -1,11 +1,11 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import { useIntl, injectIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { blockMenuMessages as messages } from '@atlaskit/editor-common/messages';
5
5
  import { ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
6
6
  import LinkIcon from '@atlaskit/icon/core/link';
7
7
  import { fg } from '@atlaskit/platform-feature-flags';
8
- import { useBlockMenu } from './block-menu-provider';
8
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
9
9
  import { copyLink } from './utils/copyLink';
10
10
  import { isNestedNode } from './utils/isNestedNode';
11
11
  var CopyLinkDropdownItemContent = function CopyLinkDropdownItemContent(_ref) {
@@ -13,21 +13,20 @@ var CopyLinkDropdownItemContent = function CopyLinkDropdownItemContent(_ref) {
13
13
  config = _ref.config;
14
14
  var _useIntl = useIntl(),
15
15
  formatMessage = _useIntl.formatMessage;
16
- var _useBlockMenu = useBlockMenu(),
17
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
18
16
  var handleClick = useCallback(function () {
19
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
20
- action: ACTION.CLICKED,
21
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
22
- actionSubjectId: ACTION_SUBJECT_ID.COPY_LINK_TO_BLOCK,
23
- eventType: EVENT_TYPE.UI,
24
- attributes: {
25
- inputMethod: INPUT_METHOD.MOUSE
26
- }
27
- });
28
17
  api === null || api === void 0 || api.core.actions.execute(function (_ref2) {
29
- var _api$blockControls;
18
+ var _api$analytics, _api$blockControls;
30
19
  var tr = _ref2.tr;
20
+ var payload = {
21
+ action: ACTION.CLICKED,
22
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
23
+ attributes: {
24
+ inputMethod: INPUT_METHOD.MOUSE,
25
+ menuItemName: BLOCK_MENU_ITEM_NAME.COPY_LINK_TO_BLOCK
26
+ },
27
+ eventType: EVENT_TYPE.UI
28
+ };
29
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr);
31
30
  api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.commands) === null || _api$blockControls === void 0 || _api$blockControls.toggleBlockMenu({
32
31
  closeMenu: true
33
32
  })({
@@ -37,7 +36,7 @@ var CopyLinkDropdownItemContent = function CopyLinkDropdownItemContent(_ref) {
37
36
  });
38
37
  api === null || api === void 0 || api.core.actions.focus();
39
38
  return copyLink(config === null || config === void 0 ? void 0 : config.getLinkPath, config === null || config === void 0 ? void 0 : config.blockQueryParam, api);
40
- }, [config === null || config === void 0 ? void 0 : config.getLinkPath, config === null || config === void 0 ? void 0 : config.blockQueryParam, api, fireAnalyticsEvent]);
39
+ }, [config === null || config === void 0 ? void 0 : config.getLinkPath, config === null || config === void 0 ? void 0 : config.blockQueryParam, api]);
41
40
  var checkIsNestedNode = useCallback(function () {
42
41
  var _api$selection, _api$blockControls2;
43
42
  var selection = api === null || api === void 0 || (_api$selection = api.selection) === null || _api$selection === void 0 || (_api$selection = _api$selection.sharedState) === null || _api$selection === void 0 || (_api$selection = _api$selection.currentState()) === null || _api$selection === void 0 ? void 0 : _api$selection.selection;
@@ -1,6 +1,6 @@
1
1
  import React, { useCallback, useEffect } from 'react';
2
2
  import { useIntl, injectIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { messages } from '@atlaskit/editor-common/block-menu';
5
5
  import { blockMenuMessages } from '@atlaskit/editor-common/messages';
6
6
  import { TextSelection } from '@atlaskit/editor-prosemirror/state';
@@ -11,28 +11,27 @@ import { fg } from '@atlaskit/platform-feature-flags';
11
11
  import { Box } from '@atlaskit/primitives/box';
12
12
  import Text from '@atlaskit/primitives/text';
13
13
  import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
14
- import { useBlockMenu } from './block-menu-provider';
14
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
15
15
  var DeleteDropdownItemContent = function DeleteDropdownItemContent(_ref) {
16
16
  var _api$core$sharedState;
17
17
  var api = _ref.api;
18
18
  var _useIntl = useIntl(),
19
19
  formatMessage = _useIntl.formatMessage;
20
- var _useBlockMenu = useBlockMenu(),
21
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
22
20
  var nodeTypes = Object.values((api === null || api === void 0 || (_api$core$sharedState = api.core.sharedState.currentState()) === null || _api$core$sharedState === void 0 || (_api$core$sharedState = _api$core$sharedState.schema) === null || _api$core$sharedState === void 0 ? void 0 : _api$core$sharedState.nodes) || {});
23
21
  var onClick = function onClick() {
24
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
25
- action: ACTION.CLICKED,
26
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
27
- actionSubjectId: ACTION_SUBJECT_ID.DELETE_BLOCK,
28
- eventType: EVENT_TYPE.UI,
29
- attributes: {
30
- inputMethod: INPUT_METHOD.MOUSE
31
- }
32
- });
33
22
  api === null || api === void 0 || api.core.actions.execute(function (_ref2) {
34
- var _api$blockControls;
23
+ var _api$analytics, _api$blockControls;
35
24
  var tr = _ref2.tr;
25
+ var payload = {
26
+ action: ACTION.CLICKED,
27
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
28
+ attributes: {
29
+ inputMethod: INPUT_METHOD.MOUSE,
30
+ menuItemName: BLOCK_MENU_ITEM_NAME.DELETE
31
+ },
32
+ eventType: EVENT_TYPE.UI
33
+ };
34
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr);
36
35
  var selection = tr.selection;
37
36
  var from = selection.$from.pos;
38
37
  var to = selection.$to.pos;
@@ -1,36 +1,40 @@
1
1
  import React, { useMemo, useCallback } from 'react';
2
2
  import { useIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { messages } from '@atlaskit/editor-common/block-menu';
5
5
  import { blockMenuMessages } from '@atlaskit/editor-common/messages';
6
6
  import { ToolbarNestedDropdownMenu } from '@atlaskit/editor-toolbar';
7
7
  import ChangesIcon from '@atlaskit/icon/core/changes';
8
8
  import ChevronRightIcon from '@atlaskit/icon/core/chevron-right';
9
9
  import { fg } from '@atlaskit/platform-feature-flags';
10
- import { useBlockMenu } from './block-menu-provider';
10
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
11
11
  import { checkIsFormatMenuHidden } from './utils/checkIsFormatMenuHidden';
12
12
  export var FormatMenuComponent = function FormatMenuComponent(_ref) {
13
13
  var api = _ref.api,
14
14
  children = _ref.children;
15
15
  var _useIntl = useIntl(),
16
16
  formatMessage = _useIntl.formatMessage;
17
- var _useBlockMenu = useBlockMenu(),
18
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
19
17
  var text = fg('platform_editor_block_menu_patch_1') ? formatMessage(blockMenuMessages.turnInto) : formatMessage(messages.turnInto);
20
18
  var isDisabled = useMemo(function () {
21
19
  return fg('platform_editor_block_menu_for_disabled_nodes') ? checkIsFormatMenuHidden(api) : false;
22
20
  }, [api]);
23
21
  var handleClick = useCallback(function () {
24
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
25
- action: ACTION.CLICKED,
26
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
27
- actionSubjectId: ACTION_SUBJECT_ID.FORMAT_MENU,
28
- eventType: EVENT_TYPE.UI,
29
- attributes: {
30
- inputMethod: INPUT_METHOD.MOUSE
31
- }
22
+ api === null || api === void 0 || api.core.actions.execute(function (_ref2) {
23
+ var _api$analytics;
24
+ var tr = _ref2.tr;
25
+ var payload = {
26
+ action: ACTION.CLICKED,
27
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
28
+ attributes: {
29
+ inputMethod: INPUT_METHOD.MOUSE,
30
+ menuItemName: BLOCK_MENU_ITEM_NAME.FORMAT_MENU
31
+ },
32
+ eventType: EVENT_TYPE.UI
33
+ };
34
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr);
35
+ return tr;
32
36
  });
33
- }, [fireAnalyticsEvent]);
37
+ }, [api]);
34
38
  return /*#__PURE__*/React.createElement(ToolbarNestedDropdownMenu, {
35
39
  text: text,
36
40
  elemBefore: /*#__PURE__*/React.createElement(ChangesIcon, {
@@ -1,18 +1,16 @@
1
1
  import React from 'react';
2
2
  import { useIntl, injectIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
5
5
  import { blockMenuMessages as messages } from '@atlaskit/editor-common/messages';
6
6
  import { DIRECTION } from '@atlaskit/editor-common/types';
7
7
  import { ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
8
8
  import ArrowDownIcon from '@atlaskit/icon/core/arrow-down';
9
- import { useBlockMenu } from './block-menu-provider';
9
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
10
10
  var MoveDownDropdownItemContent = function MoveDownDropdownItemContent(_ref) {
11
11
  var api = _ref.api;
12
12
  var _useIntl = useIntl(),
13
13
  formatMessage = _useIntl.formatMessage;
14
- var _useBlockMenu = useBlockMenu(),
15
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
16
14
  var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['blockControls'], function (_ref2) {
17
15
  var _blockControlsState$b;
18
16
  var blockControlsState = _ref2.blockControlsState;
@@ -22,18 +20,19 @@ var MoveDownDropdownItemContent = function MoveDownDropdownItemContent(_ref) {
22
20
  }),
23
21
  canMoveDown = _useSharedPluginState.canMoveDown;
24
22
  var handleClick = function handleClick() {
25
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
26
- action: ACTION.CLICKED,
27
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
28
- actionSubjectId: ACTION_SUBJECT_ID.MOVE_DOWN_BLOCK,
29
- eventType: EVENT_TYPE.UI,
30
- attributes: {
31
- inputMethod: INPUT_METHOD.MOUSE
32
- }
33
- });
34
23
  api === null || api === void 0 || api.core.actions.execute(function (_ref3) {
35
- var _api$blockControls, _api$blockControls2;
24
+ var _api$analytics, _api$blockControls, _api$blockControls2;
36
25
  var tr = _ref3.tr;
26
+ var payload = {
27
+ action: ACTION.CLICKED,
28
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
29
+ attributes: {
30
+ inputMethod: INPUT_METHOD.MOUSE,
31
+ menuItemName: BLOCK_MENU_ITEM_NAME.MOVE_DOWN
32
+ },
33
+ eventType: EVENT_TYPE.UI
34
+ };
35
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr);
37
36
  api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.commands) === null || _api$blockControls === void 0 || _api$blockControls.moveNodeWithBlockMenu(DIRECTION.DOWN)({
38
37
  tr: tr
39
38
  });
@@ -1,18 +1,16 @@
1
1
  import React from 'react';
2
2
  import { useIntl, injectIntl } from 'react-intl-next';
3
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
4
4
  import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
5
5
  import { blockMenuMessages as messages } from '@atlaskit/editor-common/messages';
6
6
  import { DIRECTION } from '@atlaskit/editor-common/types';
7
7
  import { ToolbarDropdownItem } from '@atlaskit/editor-toolbar';
8
8
  import ArrowUpIcon from '@atlaskit/icon/core/arrow-up';
9
- import { useBlockMenu } from './block-menu-provider';
9
+ import { BLOCK_MENU_ITEM_NAME } from './consts';
10
10
  var MoveUpDropdownItemContent = function MoveUpDropdownItemContent(_ref) {
11
11
  var api = _ref.api;
12
12
  var _useIntl = useIntl(),
13
13
  formatMessage = _useIntl.formatMessage;
14
- var _useBlockMenu = useBlockMenu(),
15
- fireAnalyticsEvent = _useBlockMenu.fireAnalyticsEvent;
16
14
  var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['blockControls'], function (_ref2) {
17
15
  var _blockControlsState$b;
18
16
  var blockControlsState = _ref2.blockControlsState;
@@ -22,18 +20,19 @@ var MoveUpDropdownItemContent = function MoveUpDropdownItemContent(_ref) {
22
20
  }),
23
21
  canMoveUp = _useSharedPluginState.canMoveUp;
24
22
  var handleClick = function handleClick() {
25
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent({
26
- action: ACTION.CLICKED,
27
- actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
28
- actionSubjectId: ACTION_SUBJECT_ID.MOVE_UP_BLOCK,
29
- eventType: EVENT_TYPE.UI,
30
- attributes: {
31
- inputMethod: INPUT_METHOD.MOUSE
32
- }
33
- });
34
23
  api === null || api === void 0 || api.core.actions.execute(function (_ref3) {
35
- var _api$blockControls, _api$blockControls2;
24
+ var _api$analytics, _api$blockControls, _api$blockControls2;
36
25
  var tr = _ref3.tr;
26
+ var payload = {
27
+ action: ACTION.CLICKED,
28
+ actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM,
29
+ attributes: {
30
+ inputMethod: INPUT_METHOD.MOUSE,
31
+ menuItemName: BLOCK_MENU_ITEM_NAME.MOVE_UP
32
+ },
33
+ eventType: EVENT_TYPE.UI
34
+ };
35
+ api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr);
37
36
  api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.commands) === null || _api$blockControls === void 0 || _api$blockControls.moveNodeWithBlockMenu(DIRECTION.UP)({
38
37
  tr: tr
39
38
  });
@@ -1,14 +1,11 @@
1
1
  import React from 'react';
2
- import type { BlockMenuEventPayload } from '@atlaskit/editor-common/analytics';
3
2
  import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
4
3
  import type { BlockMenuPlugin } from '../blockMenuPluginType';
5
4
  type BlockMenuProviderProps = {
6
5
  api: ExtractInjectionAPI<BlockMenuPlugin> | undefined;
7
6
  children: React.ReactNode;
8
7
  };
9
- type FireAnalyticsEvent = (payload: BlockMenuEventPayload) => void | undefined;
10
8
  export type BlockMenuContextType = {
11
- fireAnalyticsEvent?: FireAnalyticsEvent;
12
9
  /**
13
10
  * Callback for when the dropdown is open/closed. Receives an object with `isOpen` state.
14
11
  *
@@ -1 +1,12 @@
1
1
  export declare const BLOCK_MENU_LABEL = "Editor Block Menu";
2
+ /**
3
+ * Constants for block menu analytics menu item names
4
+ */
5
+ export declare const BLOCK_MENU_ITEM_NAME: {
6
+ readonly COPY_LINK_TO_BLOCK: "copyLinkToBlock";
7
+ readonly MOVE_UP: "moveUp";
8
+ readonly MOVE_DOWN: "moveDown";
9
+ readonly DELETE: "delete";
10
+ readonly FORMAT_MENU: "formatMenu";
11
+ readonly COPY_CONTENT: "copyContent";
12
+ };
@@ -1,14 +1,11 @@
1
1
  import React from 'react';
2
- import type { BlockMenuEventPayload } from '@atlaskit/editor-common/analytics';
3
2
  import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
4
3
  import type { BlockMenuPlugin } from '../blockMenuPluginType';
5
4
  type BlockMenuProviderProps = {
6
5
  api: ExtractInjectionAPI<BlockMenuPlugin> | undefined;
7
6
  children: React.ReactNode;
8
7
  };
9
- type FireAnalyticsEvent = (payload: BlockMenuEventPayload) => void | undefined;
10
8
  export type BlockMenuContextType = {
11
- fireAnalyticsEvent?: FireAnalyticsEvent;
12
9
  /**
13
10
  * Callback for when the dropdown is open/closed. Receives an object with `isOpen` state.
14
11
  *
@@ -1 +1,12 @@
1
1
  export declare const BLOCK_MENU_LABEL = "Editor Block Menu";
2
+ /**
3
+ * Constants for block menu analytics menu item names
4
+ */
5
+ export declare const BLOCK_MENU_ITEM_NAME: {
6
+ readonly COPY_LINK_TO_BLOCK: "copyLinkToBlock";
7
+ readonly MOVE_UP: "moveUp";
8
+ readonly MOVE_DOWN: "moveDown";
9
+ readonly DELETE: "delete";
10
+ readonly FORMAT_MENU: "formatMenu";
11
+ readonly COPY_CONTENT: "copyContent";
12
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-block-menu",
3
- "version": "4.0.5",
3
+ "version": "4.0.7",
4
4
  "description": "BlockMenu plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -43,7 +43,7 @@
43
43
  "@atlaskit/icon-lab": "^5.8.0",
44
44
  "@atlaskit/platform-feature-flags": "^1.1.0",
45
45
  "@atlaskit/primitives": "^14.15.0",
46
- "@atlaskit/tmp-editor-statsig": "^12.32.0",
46
+ "@atlaskit/tmp-editor-statsig": "^13.0.0",
47
47
  "@atlaskit/tokens": "^6.4.0",
48
48
  "@babel/runtime": "^7.0.0"
49
49
  },