@atlaskit/editor-plugin-help-dialog 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/ui/Format.js +5 -0
  3. package/dist/cjs/ui/Modal.js +21 -0
  4. package/dist/cjs/ui/ModalContent.js +67 -0
  5. package/dist/cjs/ui/ModalFooter.js +26 -0
  6. package/dist/cjs/ui/ModalHeader.js +35 -0
  7. package/dist/cjs/ui/formatting.js +492 -0
  8. package/dist/cjs/ui/index.js +12 -561
  9. package/dist/cjs/ui/styles.js +90 -14
  10. package/dist/cjs/ui/utils.js +55 -0
  11. package/dist/es2019/ui/Format.js +1 -0
  12. package/dist/es2019/ui/Modal.js +16 -0
  13. package/dist/es2019/ui/ModalContent.js +48 -0
  14. package/dist/es2019/ui/ModalFooter.js +16 -0
  15. package/dist/es2019/ui/ModalHeader.js +30 -0
  16. package/dist/es2019/ui/formatting.js +355 -0
  17. package/dist/es2019/ui/index.js +7 -423
  18. package/dist/es2019/ui/styles.js +90 -90
  19. package/dist/es2019/ui/utils.js +48 -0
  20. package/dist/esm/ui/Format.js +1 -0
  21. package/dist/esm/ui/Modal.js +14 -0
  22. package/dist/esm/ui/ModalContent.js +59 -0
  23. package/dist/esm/ui/ModalFooter.js +18 -0
  24. package/dist/esm/ui/ModalHeader.js +27 -0
  25. package/dist/esm/ui/formatting.js +484 -0
  26. package/dist/esm/ui/index.js +12 -561
  27. package/dist/esm/ui/styles.js +90 -13
  28. package/dist/esm/ui/utils.js +48 -0
  29. package/dist/types/ui/Format.d.ts +8 -0
  30. package/dist/types/ui/Modal.d.ts +8 -0
  31. package/dist/types/ui/ModalContent.d.ts +9 -0
  32. package/dist/types/ui/ModalFooter.d.ts +4 -0
  33. package/dist/types/ui/ModalHeader.d.ts +10 -0
  34. package/dist/types/ui/formatting.d.ts +5 -0
  35. package/dist/types/ui/index.d.ts +3 -16
  36. package/dist/types/ui/utils.d.ts +5 -0
  37. package/dist/types-ts4.5/ui/Format.d.ts +8 -0
  38. package/dist/types-ts4.5/ui/Modal.d.ts +8 -0
  39. package/dist/types-ts4.5/ui/ModalContent.d.ts +9 -0
  40. package/dist/types-ts4.5/ui/ModalFooter.d.ts +4 -0
  41. package/dist/types-ts4.5/ui/ModalHeader.d.ts +10 -0
  42. package/dist/types-ts4.5/ui/formatting.d.ts +5 -0
  43. package/dist/types-ts4.5/ui/index.d.ts +3 -16
  44. package/dist/types-ts4.5/ui/utils.d.ts +5 -0
  45. package/package.json +14 -16
@@ -1,31 +1,76 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.title = exports.shortcutsArray = exports.row = exports.line = exports.header = exports.footer = exports.dialogHeader = exports.contentWrapper = exports.content = exports.componentFromKeymapWrapperStyles = exports.column = exports.codeSm = exports.codeMd = exports.codeLg = void 0;
9
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
8
  var _react = require("@emotion/react");
11
9
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
12
10
  var _colors = _interopRequireWildcard(require("@atlaskit/theme/colors"));
13
11
  var colors = _colors;
14
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
15
12
  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); }
16
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
- var header = exports.header = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n z-index: ", ";\n min-height: ", ";\n padding: ", " ", ";\n font-size: ", ";\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 'none';\n color: ", ";\n background-color: ", ";\n border-radius: ", ";\n"])), _editorSharedStyles.akEditorUnitZIndex, "var(--ds-space-300, 24px)", "var(--ds-space-250, 20px)", "var(--ds-space-500, 40px)", (0, _editorSharedStyles.relativeFontSizeToBase16)(24), "var(--ds-text, ".concat(colors.N400, ")"), "var(--ds-background-neutral-subtle, ".concat(colors.N0, ")"), "var(--ds-border-radius, 3px)");
18
- var footer = exports.footer = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n z-index: ", ";\n font-size: ", ";\n line-height: ", ";\n color: ", ";\n padding: ", ";\n text-align: right;\n box-shadow: 'none';\n"])), _editorSharedStyles.akEditorUnitZIndex, (0, _editorSharedStyles.relativeFontSizeToBase16)(14), "var(--ds-space-250, 20px)", "var(--ds-text-subtlest, ".concat(colors.N300, ")"), "var(--ds-space-300, 24px)");
19
- var contentWrapper = exports.contentWrapper = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n padding: ", " ", ";\n border-bottom-right-radius: ", ";\n overflow: auto;\n position: relative;\n color: ", ";\n background-color: ", ";\n"])), "var(--ds-space-250, 20px)", "var(--ds-space-500, 40px)", "var(--ds-border-radius, 3px)", "var(--ds-text-subtle, ".concat(colors.N400, ")"), "var(--ds-background-neutral-subtle, ".concat(colors.N0, ")"));
20
- var line = exports.line = (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n background: ", ";\n content: '';\n display: block;\n height: ", ";\n left: 0;\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n min-width: 604px;\n"])), "var(--ds-background-neutral-subtle, #fff)", "var(--ds-space-025, 2px)");
21
- var content = exports.content = (0, _react.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n min-width: 524px;\n width: 100%;\n position: relative;\n display: flex;\n justify-content: space-between;\n"])));
14
+ var header = exports.header = (0, _react.css)({
15
+ zIndex: _editorSharedStyles.akEditorUnitZIndex,
16
+ minHeight: "var(--ds-space-300, 24px)",
17
+ padding: "var(--ds-space-250, 20px)".concat(" ", "var(--ds-space-500, 40px)"),
18
+ fontSize: (0, _editorSharedStyles.relativeFontSizeToBase16)(24),
19
+ display: 'flex',
20
+ justifyContent: 'space-between',
21
+ alignItems: 'center',
22
+ boxShadow: "'none'",
23
+ color: "var(--ds-text, ".concat(colors.N400, ")"),
24
+ backgroundColor: "var(--ds-background-neutral-subtle, ".concat(colors.N0, ")"),
25
+ borderRadius: "var(--ds-border-radius, 3px)"
26
+ });
27
+ var footer = exports.footer = (0, _react.css)({
28
+ zIndex: _editorSharedStyles.akEditorUnitZIndex,
29
+ fontSize: (0, _editorSharedStyles.relativeFontSizeToBase16)(14),
30
+ lineHeight: "var(--ds-space-250, 20px)",
31
+ color: "var(--ds-text-subtlest, ".concat(colors.N300, ")"),
32
+ padding: "var(--ds-space-300, 24px)",
33
+ textAlign: 'right',
34
+ boxShadow: "'none'"
35
+ });
36
+ var contentWrapper = exports.contentWrapper = (0, _react.css)({
37
+ padding: "var(--ds-space-250, 20px)".concat(" ", "var(--ds-space-500, 40px)"),
38
+ borderBottomRightRadius: "var(--ds-border-radius, 3px)",
39
+ overflow: 'auto',
40
+ position: 'relative',
41
+ color: "var(--ds-text-subtle, ".concat(colors.N400, ")"),
42
+ backgroundColor: "var(--ds-background-neutral-subtle, ".concat(colors.N0, ")")
43
+ });
44
+ var line = exports.line = (0, _react.css)({
45
+ background: "var(--ds-background-neutral-subtle, #fff)",
46
+ content: "''",
47
+ display: 'block',
48
+ height: "var(--ds-space-025, 2px)",
49
+ left: 0,
50
+ position: 'absolute',
51
+ top: 0,
52
+ right: 0,
53
+ width: '100%',
54
+ minWidth: '604px'
55
+ });
56
+ var content = exports.content = (0, _react.css)({
57
+ minWidth: '524px',
58
+ width: '100%',
59
+ position: 'relative',
60
+ display: 'flex',
61
+ justifyContent: 'space-between'
62
+ });
22
63
  var column = exports.column = {
23
64
  width: '44%',
24
65
  '& > ul': {
25
66
  padding: 0
26
67
  }
27
68
  };
28
- var row = exports.row = (0, _react.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n margin: ", " 0;\n display: flex;\n justify-content: space-between;\n"])), "var(--ds-space-250, 20px)");
69
+ var row = exports.row = (0, _react.css)({
70
+ margin: "var(--ds-space-250, 20px)".concat(" 0"),
71
+ display: 'flex',
72
+ justifyContent: 'space-between'
73
+ });
29
74
  var dialogHeader = exports.dialogHeader = {
30
75
  '&': {
31
76
  fontSize: (0, _editorSharedStyles.relativeFontSizeToBase16)(24),
@@ -44,8 +89,39 @@ var title = exports.title = {
44
89
  lineHeight: 1.42857142857143
45
90
  }
46
91
  };
47
- var codeSm = exports.codeSm = (0, _react.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n border-radius: ", ";\n width: ", ";\n display: inline-block;\n height: ", ";\n line-height: 24px;\n text-align: center;\n"])), "var(--ds-background-neutral, ".concat(colors.N20, ")"), "var(--ds-border-radius, 3px)", "var(--ds-space-300, 24px)", "var(--ds-space-300, 24px)");
48
- var codeMd = exports.codeMd = (0, _react.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n border-radius: ", ";\n display: inline-block;\n height: ", ";\n line-height: 24px;\n width: 50px;\n text-align: center;\n"])), "var(--ds-background-neutral, ".concat(colors.N20, ")"), "var(--ds-border-radius, 3px)", "var(--ds-space-300, 24px)");
49
- var codeLg = exports.codeLg = (0, _react.css)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n border-radius: ", ";\n display: inline-block;\n height: ", ";\n line-height: ", ";\n padding: 0 ", ";\n text-align: center;\n"])), "var(--ds-background-neutral, ".concat(colors.N20, ")"), "var(--ds-border-radius, 3px)", "var(--ds-space-300, 24px)", "var(--ds-space-300, 24px)", "var(--ds-space-150, 12px)");
50
- var shortcutsArray = exports.shortcutsArray = (0, _react.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n gap: ", ";\n"])), "var(--ds-space-150, 12px)");
51
- var componentFromKeymapWrapperStyles = exports.componentFromKeymapWrapperStyles = (0, _react.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["\n flex-shrink: 0;\n"])));
92
+ var codeSm = exports.codeSm = (0, _react.css)({
93
+ backgroundColor: "var(--ds-background-neutral, ".concat(colors.N20, ")"),
94
+ borderRadius: "var(--ds-border-radius, 3px)",
95
+ width: "var(--ds-space-300, 24px)",
96
+ display: 'inline-block',
97
+ height: "var(--ds-space-300, 24px)",
98
+ lineHeight: '24px',
99
+ textAlign: 'center'
100
+ });
101
+ var codeMd = exports.codeMd = (0, _react.css)({
102
+ backgroundColor: "var(--ds-background-neutral, ".concat(colors.N20, ")"),
103
+ borderRadius: "var(--ds-border-radius, 3px)",
104
+ display: 'inline-block',
105
+ height: "var(--ds-space-300, 24px)",
106
+ lineHeight: '24px',
107
+ width: '50px',
108
+ textAlign: 'center'
109
+ });
110
+ var codeLg = exports.codeLg = (0, _react.css)({
111
+ backgroundColor: "var(--ds-background-neutral, ".concat(colors.N20, ")"),
112
+ borderRadius: "var(--ds-border-radius, 3px)",
113
+ display: 'inline-block',
114
+ height: "var(--ds-space-300, 24px)",
115
+ lineHeight: "var(--ds-space-300, 24px)",
116
+ padding: "0 ".concat("var(--ds-space-150, 12px)"),
117
+ textAlign: 'center'
118
+ });
119
+ var shortcutsArray = exports.shortcutsArray = (0, _react.css)({
120
+ display: 'flex',
121
+ flexDirection: 'column',
122
+ flexShrink: 0,
123
+ gap: "var(--ds-space-150, 12px)"
124
+ });
125
+ var componentFromKeymapWrapperStyles = exports.componentFromKeymapWrapperStyles = (0, _react.css)({
126
+ flexShrink: 0
127
+ });
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shortcutNamesWithoutKeymap = exports.getComponentFromKeymap = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _utils = require("@atlaskit/editor-common/utils");
9
+ var _styles = require("./styles");
10
+ /** @jsx jsx */
11
+
12
+ var getKeyParts = function getKeyParts(keymap) {
13
+ var shortcut = keymap[_utils.browser.mac ? 'mac' : 'windows'];
14
+ if (_utils.browser.mac) {
15
+ shortcut = shortcut.replace('Alt', 'Opt');
16
+ }
17
+ return shortcut.replace(/\-(?=.)/g, ' + ').split(' ');
18
+ };
19
+ var shortcutNamesWithoutKeymap = exports.shortcutNamesWithoutKeymap = ['emoji', 'mention', 'quickInsert'];
20
+ var getComponentFromKeymap = exports.getComponentFromKeymap = function getComponentFromKeymap(keymap) {
21
+ var keyParts = getKeyParts(keymap);
22
+ return (0, _react.jsx)("span", {
23
+ css: _styles.componentFromKeymapWrapperStyles
24
+ }, keyParts.map(function (part, index) {
25
+ if (part === '+') {
26
+ return (0, _react.jsx)("span", {
27
+ key: "".concat(keyParts, "-").concat(index)
28
+ }, ' + ');
29
+ } else if (part === 'Cmd') {
30
+ return (0, _react.jsx)("span", {
31
+ css: _styles.codeSm,
32
+ key: "".concat(keyParts, "-").concat(index)
33
+ }, "\u2318");
34
+ } else if (['ctrl', 'alt', 'opt', 'shift'].indexOf(part.toLowerCase()) >= 0) {
35
+ return (0, _react.jsx)("span", {
36
+ css: _styles.codeMd,
37
+ key: "".concat(keyParts, "-").concat(index)
38
+ }, part);
39
+ } else if (['f9', 'f10'].indexOf(part.toLowerCase()) >= 0) {
40
+ return (0, _react.jsx)("span", {
41
+ css: _styles.codeLg,
42
+ key: "".concat(keyParts, "-").concat(index)
43
+ }, part);
44
+ } else if (part.toLowerCase() === 'enter') {
45
+ return (0, _react.jsx)("span", {
46
+ css: _styles.codeSm,
47
+ key: "".concat(keyParts, "-").concat(index)
48
+ }, '⏎');
49
+ }
50
+ return (0, _react.jsx)("span", {
51
+ css: _styles.codeSm,
52
+ key: "".concat(keyParts, "-").concat(index)
53
+ }, part.toUpperCase());
54
+ }));
55
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { useModal } from '@atlaskit/modal-dialog';
4
+ import { ModalContent } from './ModalContent';
5
+ const Modal = ({
6
+ formatting
7
+ }) => {
8
+ const {
9
+ onClose
10
+ } = useModal();
11
+ return jsx(ModalContent, {
12
+ formatting: formatting,
13
+ onClose: onClose
14
+ });
15
+ };
16
+ export default Modal;
@@ -0,0 +1,48 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag */
3
+ import React from 'react';
4
+ import { jsx } from '@emotion/react';
5
+ import { FormattedMessage } from 'react-intl-next';
6
+ import { helpDialogMessages as messages } from '@atlaskit/editor-common/messages';
7
+ import { browser } from '@atlaskit/editor-common/utils';
8
+ import ModalFooter from './ModalFooter';
9
+ import ModalHeader from './ModalHeader';
10
+ import { column, content, contentWrapper, line, row, title } from './styles';
11
+ import { getComponentFromKeymap, shortcutNamesWithoutKeymap } from './utils';
12
+ export const ModalContent = ({
13
+ formatting,
14
+ onClose
15
+ }) => {
16
+ return jsx(React.Fragment, null, jsx(ModalHeader, {
17
+ onClose: onClose
18
+ }), jsx("div", {
19
+ css: contentWrapper
20
+ }, jsx("div", {
21
+ css: line
22
+ }), jsx("div", {
23
+ css: content
24
+ }, jsx("div", {
25
+ css: column
26
+ }, jsx("h2", {
27
+ css: title
28
+ }, jsx(FormattedMessage, messages.keyboardShortcuts)), jsx("ul", null, formatting.filter(form => {
29
+ const keymap = form.keymap && form.keymap();
30
+ return keymap && keymap[browser.mac ? 'mac' : 'windows'];
31
+ }).map(form => jsx("li", {
32
+ css: row,
33
+ key: `textFormatting-${form.name}`
34
+ }, jsx("span", null, form.name), getComponentFromKeymap(form.keymap()))), formatting.filter(form => shortcutNamesWithoutKeymap.indexOf(form.type) !== -1).filter(form => form.autoFormatting).map(form => jsx("li", {
35
+ css: row,
36
+ key: `autoFormatting-${form.name}`
37
+ }, jsx("span", null, form.name), form.autoFormatting())))), jsx("div", {
38
+ css: line
39
+ }), jsx("div", {
40
+ css: column
41
+ }, jsx("h2", {
42
+ css: title
43
+ }, jsx(FormattedMessage, messages.markdown)), jsx("ul", null, formatting.filter(form => shortcutNamesWithoutKeymap.indexOf(form.type) === -1).map(form => form.autoFormatting && jsx("li", {
44
+ key: `autoFormatting-${form.name}`,
45
+ css: row
46
+ }, jsx("span", null, form.name), form.autoFormatting())))))), jsx(ModalFooter, null));
47
+ };
48
+ export default ModalContent;
@@ -0,0 +1,16 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { jsx } from '@emotion/react';
4
+ import { FormattedMessage } from 'react-intl-next';
5
+ import { openHelp } from '@atlaskit/editor-common/keymaps';
6
+ import { helpDialogMessages as messages } from '@atlaskit/editor-common/messages';
7
+ import { footer } from './styles';
8
+ import { getComponentFromKeymap } from './utils';
9
+ const ModalFooter = () => jsx("div", {
10
+ css: footer
11
+ }, jsx(FormattedMessage, _extends({}, messages.helpDialogTips, {
12
+ values: {
13
+ keyMap: getComponentFromKeymap(openHelp)
14
+ }
15
+ })));
16
+ export default ModalFooter;
@@ -0,0 +1,30 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { FormattedMessage, injectIntl } from 'react-intl-next';
4
+ import { helpDialogMessages as messages } from '@atlaskit/editor-common/messages';
5
+ import { ToolbarButton } from '@atlaskit/editor-common/ui-menu';
6
+ import CrossIcon from '@atlaskit/icon/glyph/cross';
7
+ import { dialogHeader, header } from './styles';
8
+ const ModalHeader = injectIntl(({
9
+ intl: {
10
+ formatMessage
11
+ },
12
+ onClose
13
+ }) => {
14
+ return jsx("div", {
15
+ css: header
16
+ }, jsx("h1", {
17
+ css: dialogHeader
18
+ }, jsx(FormattedMessage, messages.editorHelp)), jsx("div", null, jsx(ToolbarButton
19
+ // @ts-expect-error modal onClose handler requires second parameter of UIAnalyticsEvent, which we don't want to pass
20
+ , {
21
+ onClick: onClose,
22
+ title: formatMessage(messages.closeHelpDialog),
23
+ spacing: "compact",
24
+ iconBefore: jsx(CrossIcon, {
25
+ label: formatMessage(messages.closeHelpDialog),
26
+ size: "medium"
27
+ })
28
+ })));
29
+ });
30
+ export default ModalHeader;
@@ -0,0 +1,355 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { FormattedMessage } from 'react-intl-next';
4
+ import { addInlineComment, addLink, alignCenter, alignLeft, alignRight, clearFormatting, decreaseMediaSize, focusTableResizer, increaseMediaSize, insertRule, navToEditorToolbar, navToFloatingToolbar, pastePlainText, redo, setNormalText, toggleBlockQuote, toggleBold, toggleBulletList, toggleCode, toggleHeading1, toggleHeading2, toggleHeading3, toggleHeading4, toggleHeading5, toggleHeading6, toggleItalic, toggleOrderedList, toggleStrikethrough, toggleSubscript, toggleSuperscript, toggleTaskItemCheckbox, toggleUnderline, undo } from '@atlaskit/editor-common/keymaps';
5
+ import { alignmentMessages, annotationMessages, blockTypeMessages, listMessages, helpDialogMessages as messages, toolbarInsertBlockMessages, toolbarMessages, undoRedoMessages } from '@atlaskit/editor-common/messages';
6
+ import { browser } from '@atlaskit/editor-common/utils';
7
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
8
+ import { codeLg, codeMd, codeSm, shortcutsArray } from './styles';
9
+ const navigationKeymaps = ({
10
+ formatMessage
11
+ }) => [{
12
+ name: formatMessage(toolbarMessages.navigateToEditorToolbar),
13
+ type: 'navigation',
14
+ keymap: () => navToEditorToolbar
15
+ }, {
16
+ name: formatMessage(toolbarMessages.navigateToFloatingToolbar),
17
+ type: 'navigation',
18
+ keymap: () => navToFloatingToolbar
19
+ }];
20
+ export const formatting = ({
21
+ formatMessage
22
+ }) => [{
23
+ name: formatMessage(toolbarMessages.bold),
24
+ type: 'strong',
25
+ keymap: () => toggleBold,
26
+ autoFormatting: () => jsx("span", null, jsx("span", {
27
+ css: codeLg
28
+ }, "**", jsx(FormattedMessage, toolbarMessages.bold), "**"))
29
+ }, {
30
+ name: formatMessage(toolbarMessages.italic),
31
+ type: 'em',
32
+ keymap: () => toggleItalic,
33
+ autoFormatting: () => jsx("span", null, jsx("span", {
34
+ css: codeLg
35
+ }, "*", jsx(FormattedMessage, toolbarMessages.italic), "*"))
36
+ }, {
37
+ name: formatMessage(toolbarMessages.underline),
38
+ type: 'underline',
39
+ keymap: () => toggleUnderline
40
+ }, {
41
+ name: formatMessage(toolbarMessages.strike),
42
+ type: 'strike',
43
+ keymap: () => toggleStrikethrough,
44
+ autoFormatting: () => jsx("span", null, jsx("span", {
45
+ css: codeLg
46
+ }, "~~", jsx(FormattedMessage, toolbarMessages.strike), "~~"))
47
+ }, {
48
+ name: formatMessage(toolbarMessages.subscript),
49
+ type: 'subsup',
50
+ keymap: () => toggleSubscript
51
+ }, {
52
+ name: formatMessage(toolbarMessages.superscript),
53
+ type: 'subsup',
54
+ keymap: () => toggleSuperscript
55
+ }, {
56
+ name: formatMessage(blockTypeMessages.heading1),
57
+ type: 'heading',
58
+ keymap: () => toggleHeading1,
59
+ autoFormatting: () => jsx("span", null, jsx("span", {
60
+ css: codeSm
61
+ }, "#"), " ", jsx("span", {
62
+ css: codeLg
63
+ }, "Space"))
64
+ }, {
65
+ name: formatMessage(blockTypeMessages.heading2),
66
+ type: 'heading',
67
+ keymap: () => toggleHeading2,
68
+ autoFormatting: () => jsx("span", null, jsx("span", {
69
+ css: codeLg
70
+ }, "##"), " ", jsx("span", {
71
+ css: codeLg
72
+ }, "Space"))
73
+ }, {
74
+ name: formatMessage(blockTypeMessages.heading3),
75
+ type: 'heading',
76
+ keymap: () => toggleHeading3,
77
+ autoFormatting: () => jsx("span", null, jsx("span", {
78
+ css: codeLg
79
+ }, "###"), " ", jsx("span", {
80
+ css: codeLg
81
+ }, "Space"))
82
+ }, {
83
+ name: formatMessage(blockTypeMessages.heading4),
84
+ type: 'heading',
85
+ keymap: () => toggleHeading4,
86
+ autoFormatting: () => jsx("span", null, jsx("span", {
87
+ css: codeLg
88
+ }, "####"), " ", jsx("span", {
89
+ css: codeLg
90
+ }, "Space"))
91
+ }, {
92
+ name: formatMessage(blockTypeMessages.heading5),
93
+ type: 'heading',
94
+ keymap: () => toggleHeading5,
95
+ autoFormatting: () => jsx("span", null, jsx("span", {
96
+ css: codeLg
97
+ }, "#####"), " ", jsx("span", {
98
+ css: codeLg
99
+ }, "Space"))
100
+ }, {
101
+ name: formatMessage(blockTypeMessages.heading6),
102
+ type: 'heading',
103
+ keymap: () => toggleHeading6,
104
+ autoFormatting: () => jsx("span", null, jsx("span", {
105
+ css: codeLg
106
+ }, "######"), " ", jsx("span", {
107
+ css: codeLg
108
+ }, "Space"))
109
+ }, {
110
+ name: formatMessage(blockTypeMessages.normal),
111
+ type: 'paragraph',
112
+ keymap: () => setNormalText
113
+ }, {
114
+ name: formatMessage(listMessages.orderedList),
115
+ type: 'orderedList',
116
+ keymap: () => toggleOrderedList,
117
+ autoFormatting: () => jsx("span", null, jsx("span", {
118
+ css: codeSm
119
+ }, "1."), " ", jsx("span", {
120
+ css: codeLg
121
+ }, "Space"))
122
+ }, {
123
+ name: formatMessage(listMessages.unorderedList),
124
+ type: 'bulletList',
125
+ keymap: () => toggleBulletList,
126
+ autoFormatting: () => jsx("span", null, jsx("span", {
127
+ css: codeSm
128
+ }, "*"), " ", jsx("span", {
129
+ css: codeLg
130
+ }, "Space"))
131
+ }, {
132
+ name: formatMessage(blockTypeMessages.blockquote),
133
+ type: 'blockquote',
134
+ keymap: () => toggleBlockQuote,
135
+ autoFormatting: () => jsx("span", null, jsx("span", {
136
+ css: codeLg
137
+ }, '>'), " ", jsx("span", {
138
+ css: codeLg
139
+ }, "Space"))
140
+ }, {
141
+ name: formatMessage(blockTypeMessages.codeblock),
142
+ type: 'codeBlock',
143
+ autoFormatting: () => jsx("span", null, jsx("span", {
144
+ css: codeLg
145
+ }, "```"))
146
+ }, {
147
+ name: formatMessage(toolbarInsertBlockMessages.horizontalRule),
148
+ type: 'rule',
149
+ keymap: () => insertRule,
150
+ autoFormatting: () => jsx("span", null, jsx("span", {
151
+ css: codeLg
152
+ }, "---"))
153
+ }, {
154
+ name: formatMessage(toolbarInsertBlockMessages.link),
155
+ type: 'link',
156
+ keymap: () => addLink,
157
+ autoFormatting: () => jsx("span", null, jsx("span", {
158
+ css: codeLg
159
+ }, "[", jsx(FormattedMessage, toolbarInsertBlockMessages.link), "](http://a.com)"))
160
+ }, {
161
+ name: formatMessage(toolbarMessages.code),
162
+ type: 'code',
163
+ keymap: () => toggleCode,
164
+ autoFormatting: () => jsx("span", null, jsx("span", {
165
+ css: codeLg
166
+ }, "`", jsx(FormattedMessage, toolbarMessages.code), "`"))
167
+ }, {
168
+ name: formatMessage(toolbarInsertBlockMessages.action),
169
+ type: 'taskItem',
170
+ autoFormatting: () => jsx("span", null, jsx("span", {
171
+ css: codeSm
172
+ }, "[]"), " ", jsx("span", {
173
+ css: codeLg
174
+ }, "Space"))
175
+ }, {
176
+ name: formatMessage(toolbarInsertBlockMessages.decision),
177
+ type: 'decisionItem',
178
+ autoFormatting: () => jsx("span", null, jsx("span", {
179
+ css: codeSm
180
+ }, "<>"), " ", jsx("span", {
181
+ css: codeLg
182
+ }, "Space"))
183
+ }, {
184
+ name: formatMessage(toolbarInsertBlockMessages.emoji),
185
+ type: 'emoji',
186
+ autoFormatting: () => jsx("span", null, jsx("span", {
187
+ css: codeLg
188
+ }, ":"))
189
+ }, {
190
+ name: formatMessage(toolbarInsertBlockMessages.mention),
191
+ type: 'mention',
192
+ autoFormatting: () => jsx("span", null, jsx("span", {
193
+ css: codeLg
194
+ }, "@"))
195
+ }, {
196
+ name: formatMessage(alignmentMessages.alignLeft),
197
+ type: 'alignment',
198
+ keymap: () => alignLeft
199
+ }, ...(getBooleanFF('platform.editor.text-alignment-keyboard-shortcuts') ? [{
200
+ name: formatMessage(alignmentMessages.alignCenter),
201
+ type: 'alignment',
202
+ keymap: () => alignCenter
203
+ }, {
204
+ name: formatMessage(alignmentMessages.alignRight),
205
+ type: 'alignment',
206
+ keymap: () => alignRight
207
+ }] : [])];
208
+ const otherFormatting = ({
209
+ formatMessage
210
+ }) => [{
211
+ name: formatMessage(toolbarMessages.clearFormatting),
212
+ type: 'clearFormatting',
213
+ keymap: () => clearFormatting
214
+ }, {
215
+ name: formatMessage(undoRedoMessages.undo),
216
+ type: 'undo',
217
+ keymap: () => undo
218
+ }, {
219
+ name: formatMessage(undoRedoMessages.redo),
220
+ type: 'redo',
221
+ keymap: () => redo
222
+ }, {
223
+ name: formatMessage(messages.pastePlainText),
224
+ type: 'paste',
225
+ keymap: () => pastePlainText
226
+ }, {
227
+ name: formatMessage(annotationMessages.createComment),
228
+ type: 'annotation',
229
+ keymap: () => addInlineComment
230
+ }, {
231
+ name: formatMessage(messages.CheckUncheckActionItem),
232
+ type: 'checkbox',
233
+ keymap: () => toggleTaskItemCheckbox
234
+ }, {
235
+ name: formatMessage(messages.selectTableRow),
236
+ type: 'table',
237
+ autoFormatting: () => jsx("span", {
238
+ css: shortcutsArray
239
+ }, jsx("span", null, jsx("span", {
240
+ css: browser.mac ? codeSm : codeMd
241
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
242
+ css: codeMd
243
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
244
+ css: codeMd
245
+ }, "Shift"), ' + ', jsx("span", {
246
+ css: codeSm
247
+ }, "\u2190")), jsx("span", null, jsx("span", {
248
+ css: browser.mac ? codeSm : codeMd
249
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
250
+ css: codeMd
251
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
252
+ css: codeMd
253
+ }, "Shift"), ' + ', jsx("span", {
254
+ css: codeSm
255
+ }, "\u2192")))
256
+ }, {
257
+ name: formatMessage(messages.selectTableColumn),
258
+ type: 'table',
259
+ autoFormatting: () => jsx("span", {
260
+ css: shortcutsArray
261
+ }, jsx("span", null, jsx("span", {
262
+ css: browser.mac ? codeSm : codeMd
263
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
264
+ css: codeMd
265
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
266
+ css: codeMd
267
+ }, "Shift"), ' + ', jsx("span", {
268
+ css: codeSm
269
+ }, "\u2191")), jsx("span", null, jsx("span", {
270
+ css: browser.mac ? codeSm : codeMd
271
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
272
+ css: codeMd
273
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
274
+ css: codeMd
275
+ }, "Shift"), ' + ', jsx("span", {
276
+ css: codeSm
277
+ }, "\u2193")))
278
+ }, ...(getBooleanFF('platform.editor.a11y-column-resizing_emcvz') ? [{
279
+ name: formatMessage(messages.selectColumnResize),
280
+ type: 'table',
281
+ autoFormatting: () => jsx("span", {
282
+ css: shortcutsArray
283
+ }, jsx("span", null, jsx("span", {
284
+ css: browser.mac ? codeSm : codeMd
285
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
286
+ css: codeMd
287
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
288
+ css: codeMd
289
+ }, "Shift"), ' + ', jsx("span", {
290
+ css: codeSm
291
+ }, "C")))
292
+ }, {
293
+ name: formatMessage(messages.increaseColumnSize),
294
+ type: 'table',
295
+ autoFormatting: () => jsx("span", {
296
+ css: shortcutsArray
297
+ }, jsx("span", null, jsx("span", {
298
+ css: browser.mac ? codeSm : codeMd
299
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
300
+ css: codeMd
301
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
302
+ css: codeMd
303
+ }, "[")))
304
+ }, {
305
+ name: formatMessage(messages.decreaseColumnSize),
306
+ type: 'table',
307
+ autoFormatting: () => jsx("span", {
308
+ css: shortcutsArray
309
+ }, jsx("span", null, jsx("span", {
310
+ css: browser.mac ? codeSm : codeMd
311
+ }, browser.mac ? '⌘' : 'Ctrl'), ' + ', jsx("span", {
312
+ css: codeMd
313
+ }, browser.mac ? 'Opt' : 'Alt'), ' + ', jsx("span", {
314
+ css: codeMd
315
+ }, "]")))
316
+ }] : [])];
317
+ const resizeInformationFormatting = ({
318
+ formatMessage
319
+ }) => [{
320
+ name: formatMessage(messages.increaseSize),
321
+ type: 'media',
322
+ keymap: () => increaseMediaSize
323
+ }, {
324
+ name: formatMessage(messages.decreaseSize),
325
+ type: 'media',
326
+ keymap: () => decreaseMediaSize
327
+ }];
328
+ const focusTableResizeHandleFormatting = ({
329
+ formatMessage
330
+ }) => [{
331
+ name: formatMessage(messages.focusTableResizeHandle),
332
+ type: 'navigation',
333
+ keymap: () => focusTableResizer
334
+ }];
335
+ const imageAutoFormat = {
336
+ name: 'Image',
337
+ type: 'image',
338
+ autoFormatting: () => jsx("span", null, jsx("span", {
339
+ css: codeLg
340
+ }, "![", jsx(FormattedMessage, messages.altText), "](http://www.image.com)"))
341
+ };
342
+ const quickInsertAutoFormat = ({
343
+ formatMessage
344
+ }) => ({
345
+ name: formatMessage(messages.quickInsert),
346
+ type: 'quickInsert',
347
+ autoFormatting: () => jsx("span", null, jsx("span", {
348
+ css: codeLg
349
+ }, "/"))
350
+ });
351
+ const isAnyA11yResizeFeatureFlagEnabled = getBooleanFF('platform.editor.a11y-media-resizing_b5v0o') || getBooleanFF('platform.editor.a11y-table-resizing_uapcv');
352
+ export const getSupportedFormatting = (schema, intl, imageEnabled, quickInsertEnabled) => {
353
+ const supportedBySchema = formatting(intl).filter(format => schema.nodes[format.type] || schema.marks[format.type]);
354
+ return [...navigationKeymaps(intl), ...supportedBySchema, ...(imageEnabled ? [imageAutoFormat] : []), ...(quickInsertEnabled ? [quickInsertAutoFormat(intl)] : []), ...otherFormatting(intl), ...(isAnyA11yResizeFeatureFlagEnabled ? resizeInformationFormatting(intl) : []), ...(getBooleanFF('platform.editor.a11y-table-resizing_uapcv') ? focusTableResizeHandleFormatting(intl) : [])];
355
+ };