@atlaskit/editor-plugin-insert-block 0.1.1 → 0.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 (90) hide show
  1. package/.eslintrc.js +26 -0
  2. package/CHANGELOG.md +6 -0
  3. package/dist/cjs/index.js +8 -1
  4. package/dist/cjs/plugin.js +164 -0
  5. package/dist/cjs/types.js +5 -0
  6. package/dist/cjs/ui/ElementBrowser/InsertMenu.js +166 -0
  7. package/dist/cjs/ui/ElementBrowser/types.js +5 -0
  8. package/dist/cjs/ui/ToolbarInsertBlock/block-insert-element-browser.js +42 -0
  9. package/dist/cjs/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +42 -0
  10. package/dist/cjs/ui/ToolbarInsertBlock/block-insert-menu.js +66 -0
  11. package/dist/cjs/ui/ToolbarInsertBlock/create-items.js +217 -0
  12. package/dist/cjs/ui/ToolbarInsertBlock/dropdown-button.js +52 -0
  13. package/dist/cjs/ui/ToolbarInsertBlock/index.js +570 -0
  14. package/dist/cjs/ui/ToolbarInsertBlock/item.js +252 -0
  15. package/dist/cjs/ui/ToolbarInsertBlock/messages.js +12 -0
  16. package/dist/cjs/ui/ToolbarInsertBlock/shallow-equals.js +20 -0
  17. package/dist/cjs/ui/ToolbarInsertBlock/sort-items.js +30 -0
  18. package/dist/cjs/ui/ToolbarInsertBlock/styles.js +11 -0
  19. package/dist/cjs/ui/ToolbarInsertBlock/types.js +5 -0
  20. package/dist/es2019/index.js +1 -1
  21. package/dist/es2019/plugin.js +158 -0
  22. package/dist/es2019/types.js +1 -0
  23. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +153 -0
  24. package/dist/es2019/ui/ElementBrowser/types.js +1 -0
  25. package/dist/es2019/ui/ToolbarInsertBlock/block-insert-element-browser.js +35 -0
  26. package/dist/es2019/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +35 -0
  27. package/dist/es2019/ui/ToolbarInsertBlock/block-insert-menu.js +59 -0
  28. package/dist/es2019/ui/ToolbarInsertBlock/create-items.js +198 -0
  29. package/dist/es2019/ui/ToolbarInsertBlock/dropdown-button.js +39 -0
  30. package/dist/es2019/ui/ToolbarInsertBlock/index.js +562 -0
  31. package/dist/es2019/ui/ToolbarInsertBlock/item.js +202 -0
  32. package/dist/es2019/ui/ToolbarInsertBlock/messages.js +1 -0
  33. package/dist/es2019/ui/ToolbarInsertBlock/shallow-equals.js +8 -0
  34. package/dist/es2019/ui/ToolbarInsertBlock/sort-items.js +22 -0
  35. package/dist/es2019/ui/ToolbarInsertBlock/styles.js +16 -0
  36. package/dist/es2019/ui/ToolbarInsertBlock/types.js +1 -0
  37. package/dist/esm/index.js +1 -1
  38. package/dist/esm/plugin.js +157 -0
  39. package/dist/esm/types.js +1 -0
  40. package/dist/esm/ui/ElementBrowser/InsertMenu.js +160 -0
  41. package/dist/esm/ui/ElementBrowser/types.js +1 -0
  42. package/dist/esm/ui/ToolbarInsertBlock/block-insert-element-browser.js +35 -0
  43. package/dist/esm/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +35 -0
  44. package/dist/esm/ui/ToolbarInsertBlock/block-insert-menu.js +59 -0
  45. package/dist/esm/ui/ToolbarInsertBlock/create-items.js +210 -0
  46. package/dist/esm/ui/ToolbarInsertBlock/dropdown-button.js +44 -0
  47. package/dist/esm/ui/ToolbarInsertBlock/index.js +564 -0
  48. package/dist/esm/ui/ToolbarInsertBlock/item.js +244 -0
  49. package/dist/esm/ui/ToolbarInsertBlock/messages.js +1 -0
  50. package/dist/esm/ui/ToolbarInsertBlock/shallow-equals.js +13 -0
  51. package/dist/esm/ui/ToolbarInsertBlock/sort-items.js +24 -0
  52. package/dist/esm/ui/ToolbarInsertBlock/styles.js +4 -0
  53. package/dist/esm/ui/ToolbarInsertBlock/types.js +1 -0
  54. package/dist/types/index.d.ts +2 -1
  55. package/dist/types/plugin.d.ts +16 -0
  56. package/dist/types/types.d.ts +45 -0
  57. package/dist/types/ui/ElementBrowser/InsertMenu.d.ts +4 -0
  58. package/dist/types/ui/ElementBrowser/types.d.ts +22 -0
  59. package/dist/types/ui/ToolbarInsertBlock/block-insert-element-browser.d.ts +28 -0
  60. package/dist/types/ui/ToolbarInsertBlock/block-insert-menu-legacy.d.ts +21 -0
  61. package/dist/types/ui/ToolbarInsertBlock/block-insert-menu.d.ts +33 -0
  62. package/dist/types/ui/ToolbarInsertBlock/create-items.d.ts +39 -0
  63. package/dist/types/ui/ToolbarInsertBlock/dropdown-button.d.ts +16 -0
  64. package/dist/types/ui/ToolbarInsertBlock/index.d.ts +46 -0
  65. package/dist/types/ui/ToolbarInsertBlock/item.d.ts +35 -0
  66. package/dist/types/ui/ToolbarInsertBlock/messages.d.ts +1 -0
  67. package/dist/types/ui/ToolbarInsertBlock/shallow-equals.d.ts +1 -0
  68. package/dist/types/ui/ToolbarInsertBlock/sort-items.d.ts +2 -0
  69. package/dist/types/ui/ToolbarInsertBlock/styles.d.ts +1 -0
  70. package/dist/types/ui/ToolbarInsertBlock/types.d.ts +59 -0
  71. package/dist/types-ts4.5/index.d.ts +2 -1
  72. package/dist/types-ts4.5/plugin.d.ts +16 -0
  73. package/dist/types-ts4.5/types.d.ts +45 -0
  74. package/dist/types-ts4.5/ui/ElementBrowser/InsertMenu.d.ts +4 -0
  75. package/dist/types-ts4.5/ui/ElementBrowser/types.d.ts +22 -0
  76. package/dist/types-ts4.5/ui/ToolbarInsertBlock/block-insert-element-browser.d.ts +28 -0
  77. package/dist/types-ts4.5/ui/ToolbarInsertBlock/block-insert-menu-legacy.d.ts +21 -0
  78. package/dist/types-ts4.5/ui/ToolbarInsertBlock/block-insert-menu.d.ts +33 -0
  79. package/dist/types-ts4.5/ui/ToolbarInsertBlock/create-items.d.ts +42 -0
  80. package/dist/types-ts4.5/ui/ToolbarInsertBlock/dropdown-button.d.ts +16 -0
  81. package/dist/types-ts4.5/ui/ToolbarInsertBlock/index.d.ts +46 -0
  82. package/dist/types-ts4.5/ui/ToolbarInsertBlock/item.d.ts +35 -0
  83. package/dist/types-ts4.5/ui/ToolbarInsertBlock/messages.d.ts +1 -0
  84. package/dist/types-ts4.5/ui/ToolbarInsertBlock/shallow-equals.d.ts +1 -0
  85. package/dist/types-ts4.5/ui/ToolbarInsertBlock/sort-items.d.ts +2 -0
  86. package/dist/types-ts4.5/ui/ToolbarInsertBlock/styles.d.ts +1 -0
  87. package/dist/types-ts4.5/ui/ToolbarInsertBlock/types.d.ts +59 -0
  88. package/package.json +37 -9
  89. package/report.api.md +82 -1
  90. package/tmp/api-report-tmp.d.ts +76 -0
@@ -0,0 +1,59 @@
1
+ import React from 'react';
2
+ import { BlockInsertElementBrowser } from './block-insert-element-browser';
3
+ import { BlockInsertMenuLegacy } from './block-insert-menu-legacy';
4
+ import { DropDownButton } from './dropdown-button';
5
+ export var BlockInsertMenu = function BlockInsertMenu(props) {
6
+ if (props.items.length === 0) {
7
+ return null;
8
+ }
9
+ if (props.disabled) {
10
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(DropDownButton, {
11
+ "aria-expanded": props.open,
12
+ "aria-haspopup": true,
13
+ handleRef: props.onRef,
14
+ selected: props.open,
15
+ disabled: props.disabled,
16
+ onClick: props.onClick,
17
+ onKeyDown: props.onKeyDown,
18
+ spacing: props.spacing,
19
+ label: props.label,
20
+ "aria-keyshortcuts": "/"
21
+ }));
22
+ }
23
+ if (props.replacePlusMenuWithElementBrowser) {
24
+ return /*#__PURE__*/React.createElement(BlockInsertElementBrowser, {
25
+ disabled: props.disabled,
26
+ editorView: props.editorView,
27
+ items: props.items,
28
+ label: props.label,
29
+ onClick: props.onClick,
30
+ onKeyDown: props.onKeyDown,
31
+ onInsert: props.onInsert,
32
+ onRef: props.onPlusButtonRef,
33
+ open: props.open,
34
+ plusButtonRef: props.plusButtonRef,
35
+ popupsBoundariesElement: props.popupsBoundariesElement,
36
+ popupsMountPoint: props.popupsMountPoint,
37
+ popupsScrollableElement: props.popupsScrollableElement,
38
+ spacing: props.spacing,
39
+ togglePlusMenuVisibility: props.togglePlusMenuVisibility,
40
+ showElementBrowserLink: props.showElementBrowserLink,
41
+ pluginInjectionApi: props.pluginInjectionApi
42
+ });
43
+ }
44
+ return /*#__PURE__*/React.createElement(BlockInsertMenuLegacy, {
45
+ disabled: props.disabled,
46
+ items: props.items,
47
+ label: props.label,
48
+ onClick: props.onClick,
49
+ onKeyDown: props.onKeyDown,
50
+ onItemActivated: props.onItemActivated,
51
+ onOpenChange: props.onOpenChange,
52
+ onRef: props.onRef,
53
+ open: props.open,
54
+ popupsBoundariesElement: props.popupsBoundariesElement,
55
+ popupsMountPoint: props.popupsMountPoint,
56
+ popupsScrollableElement: props.popupsScrollableElement,
57
+ spacing: props.spacing
58
+ });
59
+ };
@@ -0,0 +1,210 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ 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; }
5
+ import React from 'react';
6
+ import memoize from 'lodash/memoize';
7
+ import memoizeOne from 'memoize-one';
8
+ import { ToolTipContent } from '@atlaskit/editor-common/keymaps';
9
+ import { blockTypeMessages } from '@atlaskit/editor-common/messages';
10
+ import { action, blockquote, codeblock, date, decision, emoji, expand, horizontalrule, imageUpload, layout, link, media, mention, more, panel, placeholder, status, table } from './item';
11
+ import { messages } from './messages';
12
+ import { shallowEquals } from './shallow-equals';
13
+ import { sortItems } from './sort-items';
14
+ var buttonToItem = memoize(function (button) {
15
+ return _objectSpread(_objectSpread({}, button), {}, {
16
+ title: /*#__PURE__*/React.createElement(ToolTipContent, {
17
+ description: button.content,
18
+ shortcutOverride: button.shortcut
19
+ })
20
+ });
21
+ });
22
+ var buttonToDropdownItem = memoizeOne(function (title) {
23
+ return memoize(function (button) {
24
+ return _objectSpread(_objectSpread({}, button), {}, {
25
+ title: /*#__PURE__*/React.createElement(ToolTipContent, {
26
+ description: title,
27
+ shortcutOverride: "/"
28
+ })
29
+ });
30
+ });
31
+ });
32
+ var createInsertBlockItems = function createInsertBlockItems(config) {
33
+ var isTypeAheadAllowed = config.isTypeAheadAllowed,
34
+ tableSupported = config.tableSupported,
35
+ mediaUploadsEnabled = config.mediaUploadsEnabled,
36
+ mediaSupported = config.mediaSupported,
37
+ imageUploadSupported = config.imageUploadSupported,
38
+ imageUploadEnabled = config.imageUploadEnabled,
39
+ mentionsSupported = config.mentionsSupported,
40
+ mentionsDisabled = config.mentionsDisabled,
41
+ availableWrapperBlockTypes = config.availableWrapperBlockTypes,
42
+ actionSupported = config.actionSupported,
43
+ decisionSupported = config.decisionSupported,
44
+ showElementBrowserLink = config.showElementBrowserLink,
45
+ linkSupported = config.linkSupported,
46
+ linkDisabled = config.linkDisabled,
47
+ emojiDisabled = config.emojiDisabled,
48
+ emojiProvider = config.emojiProvider,
49
+ nativeStatusSupported = config.nativeStatusSupported,
50
+ insertMenuItems = config.insertMenuItems,
51
+ dateEnabled = config.dateEnabled,
52
+ placeholderTextEnabled = config.placeholderTextEnabled,
53
+ horizontalRuleEnabled = config.horizontalRuleEnabled,
54
+ layoutSectionEnabled = config.layoutSectionEnabled,
55
+ expandEnabled = config.expandEnabled,
56
+ numberOfButtons = config.numberOfButtons,
57
+ schema = config.schema,
58
+ formatMessage = config.formatMessage,
59
+ isNewMenuEnabled = config.isNewMenuEnabled;
60
+ var items = [];
61
+ if (actionSupported) {
62
+ items.push(action({
63
+ content: formatMessage(messages.action),
64
+ tooltipDescription: formatMessage(messages.actionDescription),
65
+ disabled: false
66
+ }));
67
+ }
68
+ if (linkSupported) {
69
+ items.push(link({
70
+ content: formatMessage(messages.link),
71
+ tooltipDescription: formatMessage(messages.linkDescription),
72
+ disabled: !!linkDisabled,
73
+ 'aria-haspopup': 'dialog'
74
+ }));
75
+ }
76
+ if (mediaSupported && mediaUploadsEnabled) {
77
+ items.push(media({
78
+ content: formatMessage(messages.addMediaFiles),
79
+ tooltipDescription: formatMessage(messages.mediaFilesDescription),
80
+ disabled: false
81
+ }));
82
+ }
83
+ if (imageUploadSupported) {
84
+ items.push(imageUpload({
85
+ content: formatMessage(messages.image),
86
+ disabled: !imageUploadEnabled
87
+ }));
88
+ }
89
+ if (mentionsSupported) {
90
+ items.push(mention({
91
+ content: formatMessage(messages.mention),
92
+ tooltipDescription: formatMessage(messages.mentionDescription),
93
+ disabled: !isTypeAheadAllowed || !!mentionsDisabled,
94
+ 'aria-haspopup': 'listbox'
95
+ }));
96
+ }
97
+ if (emojiProvider) {
98
+ items.push(emoji({
99
+ content: formatMessage(messages.emoji),
100
+ tooltipDescription: formatMessage(messages.emojiDescription),
101
+ disabled: emojiDisabled || !isTypeAheadAllowed,
102
+ 'aria-haspopup': 'dialog'
103
+ }));
104
+ }
105
+ if (tableSupported) {
106
+ items.push(table({
107
+ content: formatMessage(messages.table),
108
+ tooltipDescription: formatMessage(messages.tableDescription),
109
+ disabled: false
110
+ }));
111
+ }
112
+ if (layoutSectionEnabled) {
113
+ var labelColumns = formatMessage(messages.columns);
114
+ items.push(layout({
115
+ content: labelColumns,
116
+ tooltipDescription: formatMessage(messages.columnsDescription),
117
+ disabled: false
118
+ }));
119
+ }
120
+ var blockTypes = availableWrapperBlockTypes || [];
121
+ var codeblockData = blockTypes.find(function (type) {
122
+ return type.name === 'codeblock';
123
+ });
124
+ var panelData = blockTypes.find(function (type) {
125
+ return type.name === 'panel';
126
+ });
127
+ var blockquoteData = blockTypes.find(function (type) {
128
+ return type.name === 'blockquote';
129
+ });
130
+ if (codeblockData) {
131
+ items.push(codeblock({
132
+ content: formatMessage(codeblockData.title),
133
+ tooltipDescription: formatMessage(blockTypeMessages.codeblockDescription),
134
+ disabled: false,
135
+ shortcut: '```'
136
+ }));
137
+ }
138
+ if (panelData) {
139
+ items.push(panel({
140
+ content: formatMessage(panelData.title),
141
+ tooltipDescription: formatMessage(blockTypeMessages.infoPanelDescription),
142
+ disabled: false
143
+ }));
144
+ }
145
+ if (blockquoteData) {
146
+ items.push(blockquote({
147
+ content: formatMessage(blockquoteData.title),
148
+ tooltipDescription: formatMessage(blockTypeMessages.blockquoteDescription),
149
+ disabled: false,
150
+ shortcut: '>'
151
+ }));
152
+ }
153
+ if (decisionSupported) {
154
+ items.push(decision({
155
+ content: formatMessage(messages.decision),
156
+ tooltipDescription: formatMessage(messages.decisionDescription),
157
+ disabled: false
158
+ }));
159
+ }
160
+ if (horizontalRuleEnabled && schema.nodes.rule) {
161
+ items.push(horizontalrule({
162
+ content: formatMessage(messages.horizontalRule),
163
+ tooltipDescription: formatMessage(messages.horizontalRuleDescription),
164
+ disabled: false
165
+ }));
166
+ }
167
+ if (expandEnabled && schema.nodes.expand) {
168
+ items.push(expand({
169
+ content: formatMessage(messages.expand),
170
+ tooltipDescription: formatMessage(messages.expandDescription),
171
+ disabled: false
172
+ }));
173
+ }
174
+ if (dateEnabled) {
175
+ var labelDate = formatMessage(messages.date);
176
+ items.push(date({
177
+ content: labelDate,
178
+ tooltipDescription: formatMessage(messages.dateDescription),
179
+ disabled: false
180
+ }));
181
+ }
182
+ if (placeholderTextEnabled) {
183
+ items.push(placeholder({
184
+ content: formatMessage(messages.placeholderText),
185
+ disabled: false
186
+ }));
187
+ }
188
+ if (nativeStatusSupported) {
189
+ var labelStatus = formatMessage(messages.status);
190
+ items.push(status({
191
+ content: labelStatus,
192
+ tooltipDescription: formatMessage(messages.statusDescription),
193
+ disabled: false
194
+ }));
195
+ }
196
+ if (insertMenuItems) {
197
+ items.push.apply(items, _toConsumableArray(insertMenuItems));
198
+ }
199
+ if (showElementBrowserLink) {
200
+ items.push(more({
201
+ content: formatMessage(messages.viewMore),
202
+ disabled: false
203
+ }));
204
+ }
205
+ var buttonItems = items.slice(0, numberOfButtons).map(buttonToItem);
206
+ var remainingItems = items.slice(numberOfButtons);
207
+ var dropdownItems = (!isNewMenuEnabled ? sortItems(remainingItems) : remainingItems).map(buttonToDropdownItem(formatMessage(messages.insertMenu)));
208
+ return [buttonItems, dropdownItems];
209
+ };
210
+ export var createItems = memoizeOne(createInsertBlockItems, shallowEquals);
@@ -0,0 +1,44 @@
1
+ /** @jsx jsx */
2
+ import React from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ import { ToolTipContent } from '@atlaskit/editor-common/keymaps';
5
+ import { expandIconWrapperStyle } from '@atlaskit/editor-common/styles';
6
+ import { ToolbarButton } from '@atlaskit/editor-common/ui-menu';
7
+ import ExpandIcon from '@atlaskit/icon/glyph/chevron-down';
8
+ import AddIcon from '@atlaskit/icon/glyph/editor/add';
9
+ import { triggerWrapper } from './styles';
10
+ var DropDownButtonIcon = /*#__PURE__*/React.memo(function (props) {
11
+ return (
12
+ // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage
13
+ jsx("span", {
14
+ css: triggerWrapper
15
+ }, jsx(AddIcon, {
16
+ label: props.label
17
+ }), jsx("span", {
18
+ css: expandIconWrapperStyle
19
+ }, jsx(ExpandIcon, {
20
+ label: ""
21
+ })))
22
+ );
23
+ });
24
+ export var DropDownButton = /*#__PURE__*/React.memo(function (props) {
25
+ return jsx(ToolbarButton, {
26
+ ref: props.handleRef,
27
+ selected: props.selected,
28
+ disabled: props.disabled,
29
+ onClick: props.onClick,
30
+ onKeyDown: props.onKeyDown,
31
+ spacing: props.spacing,
32
+ "aria-expanded": props['aria-expanded'],
33
+ "aria-haspopup": props['aria-haspopup'],
34
+ "aria-keyshortcuts": props['aria-keyshortcuts'],
35
+ "aria-label": "".concat(props.label, " /"),
36
+ iconBefore: jsx(DropDownButtonIcon, {
37
+ label: ""
38
+ }),
39
+ title: jsx(ToolTipContent, {
40
+ description: props.label,
41
+ shortcutOverride: "/"
42
+ })
43
+ });
44
+ });