@atlaskit/editor-plugin-block-type 5.1.12 → 5.1.14

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 CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/editor-plugin-block-type
2
2
 
3
+ ## 5.1.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [#144898](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/144898)
8
+ [`b9a10d6716ef4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b9a10d6716ef4) -
9
+ Enable useSharedPluginStateSelector in block-controls, block-type and breakout plugins
10
+ - Updated dependencies
11
+
12
+ ## 5.1.13
13
+
14
+ ### Patch Changes
15
+
16
+ - [#140066](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/140066)
17
+ [`6f2d7504278cc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6f2d7504278cc) -
18
+ [ux] Update Test styles icons.
19
+ - Updated dependencies
20
+
3
21
  ## 5.1.12
4
22
 
5
23
  ### Patch Changes
@@ -7,6 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.getBlockTypesInDropdown = exports.WRAPPER_BLOCK_TYPES = exports.TEXT_BLOCK_TYPES = exports.PANEL = exports.OTHER = exports.NORMAL_TEXT = exports.HEADING_6 = exports.HEADING_5 = exports.HEADING_4 = exports.HEADING_3 = exports.HEADING_2 = exports.HEADING_1 = exports.HEADINGS_BY_NAME = exports.HEADINGS_BY_LEVEL = exports.FORMATTING_NODE_TYPES = exports.FORMATTING_MARK_TYPES = exports.CODE_BLOCK = exports.BLOCK_QUOTE = exports.ALL_BLOCK_TYPES = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _messages = require("@atlaskit/editor-common/messages");
10
+ var _textHeadingFive = _interopRequireDefault(require("@atlaskit/icon-lab/core/text-heading-five"));
11
+ var _textHeadingFour = _interopRequireDefault(require("@atlaskit/icon-lab/core/text-heading-four"));
12
+ var _textHeadingOne = _interopRequireDefault(require("@atlaskit/icon-lab/core/text-heading-one"));
13
+ var _textHeadingSix = _interopRequireDefault(require("@atlaskit/icon-lab/core/text-heading-six"));
14
+ var _textHeadingThree = _interopRequireDefault(require("@atlaskit/icon-lab/core/text-heading-three"));
15
+ var _textHeadingTwo = _interopRequireDefault(require("@atlaskit/icon-lab/core/text-heading-two"));
16
+ var _text = _interopRequireDefault(require("@atlaskit/icon/core/text"));
10
17
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
11
18
  var _icons = require("./ui/ToolbarBlockType/icons");
12
19
  var NORMAL_TEXT = exports.NORMAL_TEXT = {
@@ -14,7 +21,10 @@ var NORMAL_TEXT = exports.NORMAL_TEXT = {
14
21
  title: _messages.blockTypeMessages.normal,
15
22
  nodeName: 'paragraph',
16
23
  tagName: 'p',
17
- icon: /*#__PURE__*/_react.default.createElement(_icons.Text, null)
24
+ icon: /*#__PURE__*/_react.default.createElement(_text.default, {
25
+ label: ""
26
+ }),
27
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.Text, null)
18
28
  };
19
29
  var HEADING_1 = exports.HEADING_1 = {
20
30
  name: 'heading1',
@@ -22,7 +32,10 @@ var HEADING_1 = exports.HEADING_1 = {
22
32
  nodeName: 'heading',
23
33
  tagName: 'h1',
24
34
  level: 1,
25
- icon: /*#__PURE__*/_react.default.createElement(_icons.H1, null)
35
+ icon: /*#__PURE__*/_react.default.createElement(_textHeadingOne.default, {
36
+ label: ""
37
+ }),
38
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.H1, null)
26
39
  };
27
40
  var HEADING_2 = exports.HEADING_2 = {
28
41
  name: 'heading2',
@@ -30,7 +43,10 @@ var HEADING_2 = exports.HEADING_2 = {
30
43
  nodeName: 'heading',
31
44
  tagName: 'h2',
32
45
  level: 2,
33
- icon: /*#__PURE__*/_react.default.createElement(_icons.H2, null)
46
+ icon: /*#__PURE__*/_react.default.createElement(_textHeadingTwo.default, {
47
+ label: ""
48
+ }),
49
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.H2, null)
34
50
  };
35
51
  var HEADING_3 = exports.HEADING_3 = {
36
52
  name: 'heading3',
@@ -38,7 +54,10 @@ var HEADING_3 = exports.HEADING_3 = {
38
54
  nodeName: 'heading',
39
55
  tagName: 'h3',
40
56
  level: 3,
41
- icon: /*#__PURE__*/_react.default.createElement(_icons.H3, null)
57
+ icon: /*#__PURE__*/_react.default.createElement(_textHeadingThree.default, {
58
+ label: ""
59
+ }),
60
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.H3, null)
42
61
  };
43
62
  var HEADING_4 = exports.HEADING_4 = {
44
63
  name: 'heading4',
@@ -46,7 +65,10 @@ var HEADING_4 = exports.HEADING_4 = {
46
65
  nodeName: 'heading',
47
66
  tagName: 'h4',
48
67
  level: 4,
49
- icon: /*#__PURE__*/_react.default.createElement(_icons.H4, null)
68
+ icon: /*#__PURE__*/_react.default.createElement(_textHeadingFour.default, {
69
+ label: ""
70
+ }),
71
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.H4, null)
50
72
  };
51
73
  var HEADING_5 = exports.HEADING_5 = {
52
74
  name: 'heading5',
@@ -54,7 +76,10 @@ var HEADING_5 = exports.HEADING_5 = {
54
76
  nodeName: 'heading',
55
77
  tagName: 'h5',
56
78
  level: 5,
57
- icon: /*#__PURE__*/_react.default.createElement(_icons.H5, null)
79
+ icon: /*#__PURE__*/_react.default.createElement(_textHeadingFive.default, {
80
+ label: ""
81
+ }),
82
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.H5, null)
58
83
  };
59
84
  var HEADING_6 = exports.HEADING_6 = {
60
85
  name: 'heading6',
@@ -62,7 +87,10 @@ var HEADING_6 = exports.HEADING_6 = {
62
87
  nodeName: 'heading',
63
88
  tagName: 'h6',
64
89
  level: 6,
65
- icon: /*#__PURE__*/_react.default.createElement(_icons.H6, null)
90
+ icon: /*#__PURE__*/_react.default.createElement(_textHeadingSix.default, {
91
+ label: ""
92
+ }),
93
+ LEGACY_icon: /*#__PURE__*/_react.default.createElement(_icons.H6, null)
66
94
  };
67
95
  var BLOCK_QUOTE = exports.BLOCK_QUOTE = {
68
96
  name: 'blockquote',
@@ -9,6 +9,7 @@ exports.FloatingToolbarComponent = FloatingToolbarComponent;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _analytics = require("@atlaskit/editor-common/analytics");
11
11
  var _hooks = require("@atlaskit/editor-common/hooks");
12
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
12
13
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
13
14
  var _ToolbarBlockType = _interopRequireDefault(require("./ToolbarBlockType"));
14
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -21,8 +22,40 @@ var FloatingToolbarSettings = {
21
22
  };
22
23
  function FloatingToolbarComponent(_ref) {
23
24
  var api = _ref.api;
24
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['blockType']),
25
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['blockType'], {
26
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
27
+ }),
25
28
  blockTypeState = _useSharedPluginState.blockTypeState;
29
+
30
+ // currentBlockType
31
+ var currentBlockTypeSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.currentBlockType', {
32
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
33
+ });
34
+ var currentBlockType = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? currentBlockTypeSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.currentBlockType;
35
+
36
+ // blockTypesDisabled
37
+ var blockTypesDisabledSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.blockTypesDisabled', {
38
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
39
+ });
40
+ var blockTypesDisabled = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? blockTypesDisabledSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.blockTypesDisabled;
41
+
42
+ // availableBlockTypes
43
+ var availableBlockTypesSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.availableBlockTypes', {
44
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
45
+ });
46
+ var availableBlockTypes = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? availableBlockTypesSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.availableBlockTypes;
47
+
48
+ // availableBlockTypesInDropdown
49
+ var availableBlockTypesInDropdownSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.availableBlockTypesInDropdown', {
50
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
51
+ });
52
+ var availableBlockTypesInDropdown = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? availableBlockTypesInDropdownSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.availableBlockTypesInDropdown;
53
+
54
+ // formattingIsPresent
55
+ var formattingIsPresentSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.formattingIsPresent', {
56
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
57
+ });
58
+ var formattingIsPresent = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? formattingIsPresentSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.formattingIsPresent;
26
59
  var boundSetBlockType = (0, _react.useCallback)(function (name) {
27
60
  var _api$core, _api$blockType;
28
61
  return api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 ? void 0 : _api$core.actions.execute(api === null || api === void 0 || (_api$blockType = api.blockType) === null || _api$blockType === void 0 || (_api$blockType = _api$blockType.commands) === null || _api$blockType === void 0 ? void 0 : _api$blockType.setTextLevel(name, _analytics.INPUT_METHOD.FLOATING_TB));
@@ -39,11 +72,12 @@ function FloatingToolbarComponent(_ref) {
39
72
  isSmall: FloatingToolbarSettings.isSmall,
40
73
  isDisabled: FloatingToolbarSettings.disabled,
41
74
  isReducedSpacing: (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') ? false : FloatingToolbarSettings.isToolbarReducedSpacing,
42
- setTextLevel: boundSetBlockType
43
- // Ignored via go/ees005
44
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
- ,
46
- pluginState: blockTypeState,
75
+ setTextLevel: boundSetBlockType,
76
+ currentBlockType: currentBlockType,
77
+ blockTypesDisabled: blockTypesDisabled,
78
+ availableBlockTypes: availableBlockTypes,
79
+ availableBlockTypesInDropdown: availableBlockTypesInDropdown,
80
+ formattingIsPresent: formattingIsPresent,
47
81
  wrapBlockQuote: wrapBlockQuote,
48
82
  clearFormatting: clearFormatting,
49
83
  shouldUseDefaultRole: FloatingToolbarSettings.shouldUseDefaultRole,
@@ -8,6 +8,8 @@ exports.PrimaryToolbarComponent = PrimaryToolbarComponent;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _analytics = require("@atlaskit/editor-common/analytics");
10
10
  var _hooks = require("@atlaskit/editor-common/hooks");
11
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
12
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
11
13
  var _ToolbarBlockType = _interopRequireDefault(require("./ToolbarBlockType"));
12
14
  function PrimaryToolbarComponent(_ref) {
13
15
  var api = _ref.api,
@@ -18,8 +20,40 @@ function PrimaryToolbarComponent(_ref) {
18
20
  popupsBoundariesElement = _ref.popupsBoundariesElement,
19
21
  popupsScrollableElement = _ref.popupsScrollableElement,
20
22
  shouldUseDefaultRole = _ref.shouldUseDefaultRole;
21
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['blockType']),
23
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['blockType'], {
24
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
25
+ }),
22
26
  blockTypeState = _useSharedPluginState.blockTypeState;
27
+
28
+ // currentBlockType
29
+ var currentBlockTypeSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.currentBlockType', {
30
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
31
+ });
32
+ var currentBlockType = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? currentBlockTypeSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.currentBlockType;
33
+
34
+ // blockTypesDisabled
35
+ var blockTypesDisabledSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.blockTypesDisabled', {
36
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
37
+ });
38
+ var blockTypesDisabled = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? blockTypesDisabledSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.blockTypesDisabled;
39
+
40
+ // availableBlockTypes
41
+ var availableBlockTypesSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.availableBlockTypes', {
42
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
43
+ });
44
+ var availableBlockTypes = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? availableBlockTypesSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.availableBlockTypes;
45
+
46
+ // availableBlockTypesInDropdown
47
+ var availableBlockTypesInDropdownSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.availableBlockTypesInDropdown', {
48
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
49
+ });
50
+ var availableBlockTypesInDropdown = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? availableBlockTypesInDropdownSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.availableBlockTypesInDropdown;
51
+
52
+ // formattingIsPresent
53
+ var formattingIsPresentSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.formattingIsPresent', {
54
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
55
+ });
56
+ var formattingIsPresent = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? formattingIsPresentSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.formattingIsPresent;
23
57
  var boundSetBlockType = function boundSetBlockType(name, fromBlockQuote) {
24
58
  var _api$core, _api$blockType;
25
59
  return api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 ? void 0 : _api$core.actions.execute(api === null || api === void 0 || (_api$blockType = api.blockType) === null || _api$blockType === void 0 || (_api$blockType = _api$blockType.commands) === null || _api$blockType === void 0 ? void 0 : _api$blockType.setTextLevel(name, _analytics.INPUT_METHOD.TOOLBAR, fromBlockQuote));
@@ -38,11 +72,12 @@ function PrimaryToolbarComponent(_ref) {
38
72
  isReducedSpacing: isToolbarReducedSpacing,
39
73
  setTextLevel: boundSetBlockType,
40
74
  wrapBlockQuote: wrapBlockQuote,
41
- clearFormatting: clearFormatting
42
- // Ignored via go/ees005
43
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
44
- ,
45
- pluginState: blockTypeState,
75
+ clearFormatting: clearFormatting,
76
+ currentBlockType: currentBlockType,
77
+ blockTypesDisabled: blockTypesDisabled,
78
+ availableBlockTypes: availableBlockTypes,
79
+ availableBlockTypesInDropdown: availableBlockTypesInDropdown,
80
+ formattingIsPresent: formattingIsPresent,
46
81
  popupsMountPoint: popupsMountPoint,
47
82
  popupsBoundariesElement: popupsBoundariesElement,
48
83
  popupsScrollableElement: popupsScrollableElement,
@@ -14,6 +14,7 @@ var _uiMenu = require("@atlaskit/editor-common/ui-menu");
14
14
  var _text = _interopRequireDefault(require("@atlaskit/icon/core/text"));
15
15
  var _textStyle = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/text-style"));
16
16
  var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/utility/migration/chevron-down"));
17
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
18
  var _primitives = require("@atlaskit/primitives");
18
19
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
19
20
  var _blockTypes = require("../../block-types");
@@ -46,6 +47,7 @@ var BlockTypeButton = exports.BlockTypeButton = function BlockTypeButton(props)
46
47
  color: "currentColor",
47
48
  LEGACY_fallbackIcon: _textStyle.default
48
49
  });
50
+ var chevronIconSpacing = props.isSmall && (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') && (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_4') ? 'spacious' : 'none';
49
51
  return (0, _react2.jsx)(_uiMenu.ToolbarButton, {
50
52
  spacing: props.isReducedSpacing ? 'none' : 'default',
51
53
  selected: props.selected
@@ -67,6 +69,7 @@ var BlockTypeButton = exports.BlockTypeButton = function BlockTypeButton(props)
67
69
  // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
68
70
  css: _styles.expandIconContainerStyle
69
71
  }, (0, _react2.jsx)(_chevronDown.default, {
72
+ spacing: chevronIconSpacing,
70
73
  label: "",
71
74
  color: "currentColor",
72
75
  LEGACY_margin: "0 0 0 -8px"
@@ -19,6 +19,7 @@ var _messages = require("@atlaskit/editor-common/messages");
19
19
  var _styles = require("@atlaskit/editor-common/styles");
20
20
  var _uiMenu = require("@atlaskit/editor-common/ui-menu");
21
21
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
22
+ var _text = _interopRequireDefault(require("@atlaskit/icon/core/text"));
22
23
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
23
24
  var _primitives = require("@atlaskit/primitives");
24
25
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
@@ -75,16 +76,17 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
75
76
  }
76
77
  });
77
78
  (0, _defineProperty2.default)(_this, "createItems", function () {
78
- var formatMessage = _this.props.intl.formatMessage;
79
- var _this$props$pluginSta = _this.props.pluginState,
80
- currentBlockType = _this$props$pluginSta.currentBlockType,
81
- availableBlockTypesInDropdown = _this$props$pluginSta.availableBlockTypesInDropdown,
82
- formattingIsPresent = _this$props$pluginSta.formattingIsPresent;
83
- var items = availableBlockTypesInDropdown.map(function (blockType, index) {
79
+ var _this$props = _this.props,
80
+ formatMessage = _this$props.intl.formatMessage,
81
+ currentBlockType = _this$props.currentBlockType,
82
+ availableBlockTypesInDropdown = _this$props.availableBlockTypesInDropdown,
83
+ formattingIsPresent = _this$props.formattingIsPresent;
84
+ var items = (availableBlockTypesInDropdown !== null && availableBlockTypesInDropdown !== void 0 ? availableBlockTypesInDropdown : []).map(function (blockType, index) {
84
85
  var isActive = currentBlockType === blockType;
85
86
  var tagName = blockType.tagName || 'p';
86
87
  var Tag = tagName;
87
88
  var keyMap = (0, _keymaps.findKeymapByDescription)(blockType.title.defaultMessage);
89
+ var icon = (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_4') ? blockType === null || blockType === void 0 ? void 0 : blockType.icon : blockType.LEGACY_icon;
88
90
  var item = {
89
91
  content:
90
92
  // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
@@ -94,7 +96,7 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
94
96
  value: blockType,
95
97
  'aria-label': (0, _keymaps.tooltip)(keyMap, formatMessage(blockType.title)),
96
98
  key: "".concat(blockType.name, "-").concat(index),
97
- elemBefore: (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') ? blockType === null || blockType === void 0 ? void 0 : blockType.icon : undefined,
99
+ elemBefore: (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') ? icon : undefined,
98
100
  elemAfter:
99
101
  // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
100
102
  (0, _react2.jsx)("div", {
@@ -104,7 +106,7 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
104
106
  };
105
107
  return item;
106
108
  });
107
- if (availableBlockTypesInDropdown.map(function (blockType) {
109
+ if ((availableBlockTypesInDropdown !== null && availableBlockTypesInDropdown !== void 0 ? availableBlockTypesInDropdown : []).map(function (blockType) {
108
110
  return blockType.name;
109
111
  }).includes('blockquote') && (0, _experiments.editorExperiment)('platform_editor_controls', 'control')) {
110
112
  var clearFormattingItem = {
@@ -143,7 +145,8 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
143
145
  if (blockType.name === 'clearFormatting') {
144
146
  _this.props.clearFormatting();
145
147
  } else {
146
- var fromBlockQuote = _this.props.pluginState.currentBlockType.name === 'blockquote';
148
+ var _this$props$currentBl;
149
+ var fromBlockQuote = ((_this$props$currentBl = _this.props.currentBlockType) === null || _this$props$currentBl === void 0 ? void 0 : _this$props$currentBl.name) === 'blockquote';
147
150
  _this.props.setTextLevel(blockType.name, fromBlockQuote);
148
151
  }
149
152
  }
@@ -186,20 +189,21 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
186
189
  var _this$state = this.state,
187
190
  active = _this$state.active,
188
191
  isOpenedByKeyboard = _this$state.isOpenedByKeyboard;
189
- var _this$props = this.props,
190
- popupsMountPoint = _this$props.popupsMountPoint,
191
- popupsBoundariesElement = _this$props.popupsBoundariesElement,
192
- popupsScrollableElement = _this$props.popupsScrollableElement,
193
- isSmall = _this$props.isSmall,
194
- isReducedSpacing = _this$props.isReducedSpacing,
195
- _this$props$pluginSta2 = _this$props.pluginState,
196
- currentBlockType = _this$props$pluginSta2.currentBlockType,
197
- blockTypesDisabled = _this$props$pluginSta2.blockTypesDisabled,
198
- availableBlockTypes = _this$props$pluginSta2.availableBlockTypes,
199
- availableBlockTypesInDropdown = _this$props$pluginSta2.availableBlockTypesInDropdown,
200
- shouldUseDefaultRole = _this$props.shouldUseDefaultRole,
201
- formatMessage = _this$props.intl.formatMessage,
202
- api = _this$props.api;
192
+ var _this$props2 = this.props,
193
+ popupsMountPoint = _this$props2.popupsMountPoint,
194
+ popupsBoundariesElement = _this$props2.popupsBoundariesElement,
195
+ popupsScrollableElement = _this$props2.popupsScrollableElement,
196
+ isSmall = _this$props2.isSmall,
197
+ isReducedSpacing = _this$props2.isReducedSpacing,
198
+ currentBlockType = _this$props2.currentBlockType,
199
+ blockTypesDisabled = _this$props2.blockTypesDisabled,
200
+ _this$props2$availabl = _this$props2.availableBlockTypes,
201
+ availableBlockTypes = _this$props2$availabl === void 0 ? [] : _this$props2$availabl,
202
+ _this$props2$availabl2 = _this$props2.availableBlockTypesInDropdown,
203
+ availableBlockTypesInDropdown = _this$props2$availabl2 === void 0 ? [] : _this$props2$availabl2,
204
+ shouldUseDefaultRole = _this$props2.shouldUseDefaultRole,
205
+ formatMessage = _this$props2.intl.formatMessage,
206
+ api = _this$props2.api;
203
207
  var isHeadingDisabled = !availableBlockTypes.some(function (blockType) {
204
208
  return blockType.nodeName === 'heading';
205
209
  });
@@ -207,10 +211,14 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
207
211
  return null;
208
212
  }
209
213
  var blockTypeTitles = availableBlockTypesInDropdown.filter(function (blockType) {
210
- return blockType.name === currentBlockType.name;
214
+ return blockType.name === (currentBlockType === null || currentBlockType === void 0 ? void 0 : currentBlockType.name);
211
215
  }).map(function (blockType) {
212
216
  return blockType.title;
213
217
  });
218
+ var defaultIcon = (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_4') ? (0, _react2.jsx)(_text.default, {
219
+ label: ""
220
+ }) : (0, _react2.jsx)(_icons.Text, null);
221
+ var currentIcon = (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_4') ? currentBlockType === null || currentBlockType === void 0 ? void 0 : currentBlockType.icon : currentBlockType === null || currentBlockType === void 0 ? void 0 : currentBlockType.LEGACY_icon;
214
222
  if (!this.props.isDisabled && !blockTypesDisabled) {
215
223
  var items = this.createItems();
216
224
  var button = (0, _react2.jsx)(_blocktypeButton.BlockTypeButton, {
@@ -223,8 +231,8 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
223
231
  onKeyDown: this.handleTriggerByKeyboard,
224
232
  formatMessage: formatMessage,
225
233
  "aria-expanded": active,
226
- blockTypeName: currentBlockType.name,
227
- blockTypeIcon: (currentBlockType === null || currentBlockType === void 0 ? void 0 : currentBlockType.icon) || (0, _react2.jsx)(_icons.Text, null)
234
+ blockTypeName: currentBlockType === null || currentBlockType === void 0 ? void 0 : currentBlockType.name,
235
+ blockTypeIcon: currentIcon || defaultIcon
228
236
  });
229
237
  return (0, _react2.jsx)("span", {
230
238
  css: (0, _experiments.editorExperiment)('platform_editor_blockquote_in_text_formatting_menu', true) ?
@@ -281,7 +289,7 @@ var ToolbarBlockType = /*#__PURE__*/function (_React$PureComponent) {
281
289
  onKeyDown: this.handleTriggerByKeyboard,
282
290
  formatMessage: formatMessage,
283
291
  "aria-expanded": active,
284
- blockTypeName: currentBlockType.name
292
+ blockTypeName: currentBlockType === null || currentBlockType === void 0 ? void 0 : currentBlockType.name
285
293
  }), !(api !== null && api !== void 0 && api.primaryToolbar) && (0, _react2.jsx)("span", {
286
294
  // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
287
295
  css: _styles.separatorStyles
@@ -1,5 +1,12 @@
1
1
  import React from 'react';
2
2
  import { blockTypeMessages as messages } from '@atlaskit/editor-common/messages';
3
+ import TextHeadingFiveIcon from '@atlaskit/icon-lab/core/text-heading-five';
4
+ import TextHeadingFourIcon from '@atlaskit/icon-lab/core/text-heading-four';
5
+ import TextHeadingOneIcon from '@atlaskit/icon-lab/core/text-heading-one';
6
+ import TextHeadingSixIcon from '@atlaskit/icon-lab/core/text-heading-six';
7
+ import TextHeadingThreeIcon from '@atlaskit/icon-lab/core/text-heading-three';
8
+ import TextHeadingTwoIcon from '@atlaskit/icon-lab/core/text-heading-two';
9
+ import TextIcon from '@atlaskit/icon/core/text';
3
10
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
4
11
  import { Text, H1, H2, H3, H4, H5, H6 } from './ui/ToolbarBlockType/icons';
5
12
  export const NORMAL_TEXT = {
@@ -7,7 +14,10 @@ export const NORMAL_TEXT = {
7
14
  title: messages.normal,
8
15
  nodeName: 'paragraph',
9
16
  tagName: 'p',
10
- icon: /*#__PURE__*/React.createElement(Text, null)
17
+ icon: /*#__PURE__*/React.createElement(TextIcon, {
18
+ label: ""
19
+ }),
20
+ LEGACY_icon: /*#__PURE__*/React.createElement(Text, null)
11
21
  };
12
22
  export const HEADING_1 = {
13
23
  name: 'heading1',
@@ -15,7 +25,10 @@ export const HEADING_1 = {
15
25
  nodeName: 'heading',
16
26
  tagName: 'h1',
17
27
  level: 1,
18
- icon: /*#__PURE__*/React.createElement(H1, null)
28
+ icon: /*#__PURE__*/React.createElement(TextHeadingOneIcon, {
29
+ label: ""
30
+ }),
31
+ LEGACY_icon: /*#__PURE__*/React.createElement(H1, null)
19
32
  };
20
33
  export const HEADING_2 = {
21
34
  name: 'heading2',
@@ -23,7 +36,10 @@ export const HEADING_2 = {
23
36
  nodeName: 'heading',
24
37
  tagName: 'h2',
25
38
  level: 2,
26
- icon: /*#__PURE__*/React.createElement(H2, null)
39
+ icon: /*#__PURE__*/React.createElement(TextHeadingTwoIcon, {
40
+ label: ""
41
+ }),
42
+ LEGACY_icon: /*#__PURE__*/React.createElement(H2, null)
27
43
  };
28
44
  export const HEADING_3 = {
29
45
  name: 'heading3',
@@ -31,7 +47,10 @@ export const HEADING_3 = {
31
47
  nodeName: 'heading',
32
48
  tagName: 'h3',
33
49
  level: 3,
34
- icon: /*#__PURE__*/React.createElement(H3, null)
50
+ icon: /*#__PURE__*/React.createElement(TextHeadingThreeIcon, {
51
+ label: ""
52
+ }),
53
+ LEGACY_icon: /*#__PURE__*/React.createElement(H3, null)
35
54
  };
36
55
  export const HEADING_4 = {
37
56
  name: 'heading4',
@@ -39,7 +58,10 @@ export const HEADING_4 = {
39
58
  nodeName: 'heading',
40
59
  tagName: 'h4',
41
60
  level: 4,
42
- icon: /*#__PURE__*/React.createElement(H4, null)
61
+ icon: /*#__PURE__*/React.createElement(TextHeadingFourIcon, {
62
+ label: ""
63
+ }),
64
+ LEGACY_icon: /*#__PURE__*/React.createElement(H4, null)
43
65
  };
44
66
  export const HEADING_5 = {
45
67
  name: 'heading5',
@@ -47,7 +69,10 @@ export const HEADING_5 = {
47
69
  nodeName: 'heading',
48
70
  tagName: 'h5',
49
71
  level: 5,
50
- icon: /*#__PURE__*/React.createElement(H5, null)
72
+ icon: /*#__PURE__*/React.createElement(TextHeadingFiveIcon, {
73
+ label: ""
74
+ }),
75
+ LEGACY_icon: /*#__PURE__*/React.createElement(H5, null)
51
76
  };
52
77
  export const HEADING_6 = {
53
78
  name: 'heading6',
@@ -55,7 +80,10 @@ export const HEADING_6 = {
55
80
  nodeName: 'heading',
56
81
  tagName: 'h6',
57
82
  level: 6,
58
- icon: /*#__PURE__*/React.createElement(H6, null)
83
+ icon: /*#__PURE__*/React.createElement(TextHeadingSixIcon, {
84
+ label: ""
85
+ }),
86
+ LEGACY_icon: /*#__PURE__*/React.createElement(H6, null)
59
87
  };
60
88
  export const BLOCK_QUOTE = {
61
89
  name: 'blockquote',
@@ -1,6 +1,7 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
3
  import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
4
+ import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
4
5
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
5
6
  import ToolbarBlockType from './ToolbarBlockType';
6
7
  const FloatingToolbarSettings = {
@@ -14,7 +15,39 @@ export function FloatingToolbarComponent({
14
15
  }) {
15
16
  const {
16
17
  blockTypeState
17
- } = useSharedPluginState(api, ['blockType']);
18
+ } = useSharedPluginState(api, ['blockType'], {
19
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
20
+ });
21
+
22
+ // currentBlockType
23
+ const currentBlockTypeSelector = useSharedPluginStateSelector(api, 'blockType.currentBlockType', {
24
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
25
+ });
26
+ const currentBlockType = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? currentBlockTypeSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.currentBlockType;
27
+
28
+ // blockTypesDisabled
29
+ const blockTypesDisabledSelector = useSharedPluginStateSelector(api, 'blockType.blockTypesDisabled', {
30
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
31
+ });
32
+ const blockTypesDisabled = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? blockTypesDisabledSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.blockTypesDisabled;
33
+
34
+ // availableBlockTypes
35
+ const availableBlockTypesSelector = useSharedPluginStateSelector(api, 'blockType.availableBlockTypes', {
36
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
37
+ });
38
+ const availableBlockTypes = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? availableBlockTypesSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.availableBlockTypes;
39
+
40
+ // availableBlockTypesInDropdown
41
+ const availableBlockTypesInDropdownSelector = useSharedPluginStateSelector(api, 'blockType.availableBlockTypesInDropdown', {
42
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
43
+ });
44
+ const availableBlockTypesInDropdown = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? availableBlockTypesInDropdownSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.availableBlockTypesInDropdown;
45
+
46
+ // formattingIsPresent
47
+ const formattingIsPresentSelector = useSharedPluginStateSelector(api, 'blockType.formattingIsPresent', {
48
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
49
+ });
50
+ const formattingIsPresent = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? formattingIsPresentSelector : blockTypeState === null || blockTypeState === void 0 ? void 0 : blockTypeState.formattingIsPresent;
18
51
  const boundSetBlockType = useCallback(name => {
19
52
  var _api$core, _api$blockType, _api$blockType$comman;
20
53
  return api === null || api === void 0 ? void 0 : (_api$core = api.core) === null || _api$core === void 0 ? void 0 : _api$core.actions.execute(api === null || api === void 0 ? void 0 : (_api$blockType = api.blockType) === null || _api$blockType === void 0 ? void 0 : (_api$blockType$comman = _api$blockType.commands) === null || _api$blockType$comman === void 0 ? void 0 : _api$blockType$comman.setTextLevel(name, INPUT_METHOD.FLOATING_TB));
@@ -31,11 +64,12 @@ export function FloatingToolbarComponent({
31
64
  isSmall: FloatingToolbarSettings.isSmall,
32
65
  isDisabled: FloatingToolbarSettings.disabled,
33
66
  isReducedSpacing: editorExperiment('platform_editor_controls', 'variant1') ? false : FloatingToolbarSettings.isToolbarReducedSpacing,
34
- setTextLevel: boundSetBlockType
35
- // Ignored via go/ees005
36
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
37
- ,
38
- pluginState: blockTypeState,
67
+ setTextLevel: boundSetBlockType,
68
+ currentBlockType: currentBlockType,
69
+ blockTypesDisabled: blockTypesDisabled,
70
+ availableBlockTypes: availableBlockTypes,
71
+ availableBlockTypesInDropdown: availableBlockTypesInDropdown,
72
+ formattingIsPresent: formattingIsPresent,
39
73
  wrapBlockQuote: wrapBlockQuote,
40
74
  clearFormatting: clearFormatting,
41
75
  shouldUseDefaultRole: FloatingToolbarSettings.shouldUseDefaultRole,