@atlaskit/editor-plugin-extension 2.0.7 → 2.0.9

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 (96) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/{actions.js → editor-actions/actions.js} +3 -3
  3. package/dist/cjs/{commands.js → editor-commands/commands.js} +2 -2
  4. package/dist/cjs/{plugin.js → extensionPlugin.js} +6 -6
  5. package/dist/cjs/index.js +2 -2
  6. package/dist/cjs/{extension-api.js → pm-plugins/extension-api.js} +3 -3
  7. package/dist/cjs/pm-plugins/keymap.js +1 -1
  8. package/dist/cjs/pm-plugins/macro/actions.js +1 -1
  9. package/dist/cjs/pm-plugins/main.js +7 -7
  10. package/dist/cjs/{toolbar.js → pm-plugins/toolbar.js} +4 -4
  11. package/dist/cjs/pm-plugins/update-edit-button.js +75 -0
  12. package/dist/cjs/pm-plugins/utils.js +68 -70
  13. package/dist/cjs/{context-panel.js → ui/context-panel.js} +6 -6
  14. package/dist/es2019/{actions.js → editor-actions/actions.js} +3 -3
  15. package/dist/es2019/{commands.js → editor-commands/commands.js} +2 -2
  16. package/dist/es2019/{plugin.js → extensionPlugin.js} +6 -6
  17. package/dist/es2019/index.js +1 -1
  18. package/dist/es2019/{extension-api.js → pm-plugins/extension-api.js} +3 -3
  19. package/dist/es2019/pm-plugins/keymap.js +1 -1
  20. package/dist/es2019/pm-plugins/macro/actions.js +1 -1
  21. package/dist/es2019/pm-plugins/main.js +5 -5
  22. package/dist/es2019/{toolbar.js → pm-plugins/toolbar.js} +4 -4
  23. package/dist/es2019/pm-plugins/update-edit-button.js +30 -0
  24. package/dist/es2019/pm-plugins/utils.js +61 -26
  25. package/dist/es2019/{context-panel.js → ui/context-panel.js} +6 -6
  26. package/dist/esm/{actions.js → editor-actions/actions.js} +3 -3
  27. package/dist/esm/{commands.js → editor-commands/commands.js} +2 -2
  28. package/dist/esm/{plugin.js → extensionPlugin.js} +6 -6
  29. package/dist/esm/index.js +1 -1
  30. package/dist/esm/{extension-api.js → pm-plugins/extension-api.js} +3 -3
  31. package/dist/esm/pm-plugins/keymap.js +1 -1
  32. package/dist/esm/pm-plugins/macro/actions.js +1 -1
  33. package/dist/esm/pm-plugins/main.js +5 -5
  34. package/dist/esm/{toolbar.js → pm-plugins/toolbar.js} +4 -4
  35. package/dist/esm/pm-plugins/update-edit-button.js +68 -0
  36. package/dist/esm/pm-plugins/utils.js +67 -68
  37. package/dist/esm/{context-panel.js → ui/context-panel.js} +6 -6
  38. package/dist/types/{actions.d.ts → editor-actions/actions.d.ts} +1 -1
  39. package/dist/types/{commands.d.ts → editor-commands/commands.d.ts} +1 -1
  40. package/dist/types/extensionPlugin.d.ts +2 -0
  41. package/dist/{types-ts4.5/types.d.ts → types/extensionPluginType.d.ts} +1 -1
  42. package/dist/types/index.d.ts +2 -2
  43. package/dist/{types-ts4.5 → types/pm-plugins}/extension-api.d.ts +1 -1
  44. package/dist/types/pm-plugins/main.d.ts +4 -4
  45. package/dist/types/pm-plugins/plugin-factory.d.ts +4 -0
  46. package/dist/types/{plugin-key.d.ts → pm-plugins/plugin-key.d.ts} +1 -1
  47. package/dist/types/{reducer.d.ts → pm-plugins/reducer.d.ts} +1 -1
  48. package/dist/types/pm-plugins/update-edit-button.d.ts +3 -0
  49. package/dist/types/pm-plugins/utils.d.ts +15 -3
  50. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +2 -2
  51. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +1 -1
  52. package/dist/{types-ts4.5 → types/ui}/context-panel.d.ts +1 -1
  53. package/dist/types-ts4.5/{actions.d.ts → editor-actions/actions.d.ts} +1 -1
  54. package/dist/types-ts4.5/{commands.d.ts → editor-commands/commands.d.ts} +1 -1
  55. package/dist/types-ts4.5/extensionPlugin.d.ts +2 -0
  56. package/dist/{types/types.d.ts → types-ts4.5/extensionPluginType.d.ts} +1 -1
  57. package/dist/types-ts4.5/index.d.ts +2 -2
  58. package/dist/{types → types-ts4.5/pm-plugins}/extension-api.d.ts +1 -1
  59. package/dist/types-ts4.5/pm-plugins/main.d.ts +4 -4
  60. package/dist/types-ts4.5/pm-plugins/plugin-factory.d.ts +4 -0
  61. package/dist/types-ts4.5/{plugin-key.d.ts → pm-plugins/plugin-key.d.ts} +1 -1
  62. package/dist/types-ts4.5/{reducer.d.ts → pm-plugins/reducer.d.ts} +1 -1
  63. package/dist/types-ts4.5/pm-plugins/update-edit-button.d.ts +3 -0
  64. package/dist/types-ts4.5/pm-plugins/utils.d.ts +15 -3
  65. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanel.d.ts +2 -2
  66. package/dist/types-ts4.5/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +1 -1
  67. package/dist/{types → types-ts4.5/ui}/context-panel.d.ts +1 -1
  68. package/package.json +6 -3
  69. package/dist/cjs/utils.js +0 -73
  70. package/dist/es2019/utils.js +0 -65
  71. package/dist/esm/utils.js +0 -67
  72. package/dist/types/plugin-factory.d.ts +0 -4
  73. package/dist/types/plugin.d.ts +0 -2
  74. package/dist/types/utils.d.ts +0 -15
  75. package/dist/types-ts4.5/plugin-factory.d.ts +0 -4
  76. package/dist/types-ts4.5/plugin.d.ts +0 -2
  77. package/dist/types-ts4.5/utils.d.ts +0 -15
  78. /package/dist/cjs/{types.js → extensionPluginType.js} +0 -0
  79. /package/dist/cjs/{plugin-factory.js → pm-plugins/plugin-factory.js} +0 -0
  80. /package/dist/cjs/{plugin-key.js → pm-plugins/plugin-key.js} +0 -0
  81. /package/dist/cjs/{reducer.js → pm-plugins/reducer.js} +0 -0
  82. /package/dist/cjs/{toDOM-fixes → pm-plugins/toDOM-fixes}/bodiedExtension.js +0 -0
  83. /package/dist/es2019/{types.js → extensionPluginType.js} +0 -0
  84. /package/dist/es2019/{plugin-factory.js → pm-plugins/plugin-factory.js} +0 -0
  85. /package/dist/es2019/{plugin-key.js → pm-plugins/plugin-key.js} +0 -0
  86. /package/dist/es2019/{reducer.js → pm-plugins/reducer.js} +0 -0
  87. /package/dist/es2019/{toDOM-fixes → pm-plugins/toDOM-fixes}/bodiedExtension.js +0 -0
  88. /package/dist/esm/{types.js → extensionPluginType.js} +0 -0
  89. /package/dist/esm/{plugin-factory.js → pm-plugins/plugin-factory.js} +0 -0
  90. /package/dist/esm/{plugin-key.js → pm-plugins/plugin-key.js} +0 -0
  91. /package/dist/esm/{reducer.js → pm-plugins/reducer.js} +0 -0
  92. /package/dist/esm/{toDOM-fixes → pm-plugins/toDOM-fixes}/bodiedExtension.js +0 -0
  93. /package/dist/types/{toDOM-fixes → pm-plugins/toDOM-fixes}/bodiedExtension.d.ts +0 -0
  94. /package/dist/types/{toolbar.d.ts → pm-plugins/toolbar.d.ts} +0 -0
  95. /package/dist/types-ts4.5/{toDOM-fixes → pm-plugins/toDOM-fixes}/bodiedExtension.d.ts +0 -0
  96. /package/dist/types-ts4.5/{toolbar.d.ts → pm-plugins/toolbar.d.ts} +0 -0
@@ -1,30 +1,65 @@
1
- import { getExtensionModuleNode } from '@atlaskit/editor-common/extensions';
2
- import { updateState } from '../commands';
3
- import { getSelectedExtension } from '../utils';
4
- const maybeGetUpdateMethodFromExtensionProvider = async (view, extensionProvider) => {
5
- const nodeWithPos = getSelectedExtension(view.state, true);
6
- if (!nodeWithPos) {
7
- throw new Error('There is no selection');
8
- }
1
+ import { closestElement, findNodePosByLocalIds } from '@atlaskit/editor-common/utils';
2
+ import { findDomRefAtPos, findParentNodeOfType, findSelectedNodeOfType } from '@atlaskit/editor-prosemirror/utils';
3
+ export const getSelectedExtension = (state, searchParent = false) => {
9
4
  const {
10
- extensionType,
11
- extensionKey
12
- } = nodeWithPos.node.attrs;
13
- const extensionModuleNode = await getExtensionModuleNode(extensionProvider, extensionType, extensionKey);
14
- const newNodeWithPos = getSelectedExtension(view.state, true);
15
- if (newNodeWithPos && newNodeWithPos.node.attrs.extensionType === extensionType && newNodeWithPos.node.attrs.extensionKey === extensionKey && newNodeWithPos.pos === nodeWithPos.pos && extensionModuleNode) {
16
- return extensionModuleNode.update;
17
- }
5
+ inlineExtension,
6
+ extension,
7
+ bodiedExtension,
8
+ multiBodiedExtension
9
+ } = state.schema.nodes;
10
+ const nodeTypes = [extension, bodiedExtension, inlineExtension, multiBodiedExtension];
11
+ return findSelectedNodeOfType(nodeTypes)(state.selection) || searchParent && findParentNodeOfType(nodeTypes)(state.selection) || undefined;
18
12
  };
19
- export const updateEditButton = async (view, extensionProvider) => {
20
- try {
21
- const updateMethod = await maybeGetUpdateMethodFromExtensionProvider(view, extensionProvider);
22
- updateState({
23
- showEditButton: !!updateMethod,
24
- updateExtension: updateMethod && Promise.resolve(updateMethod) || undefined
25
- })(view.state, view.dispatch);
26
- return updateMethod;
27
- } catch {
28
- // this exception is not important for this case, fail silently
13
+ export const findExtensionWithLocalId = (state, localId) => {
14
+ const selectedExtension = getSelectedExtension(state, true);
15
+ if (!localId) {
16
+ return selectedExtension;
29
17
  }
18
+ if (selectedExtension && selectedExtension.node.attrs.localId === localId) {
19
+ return selectedExtension;
20
+ }
21
+ const {
22
+ inlineExtension,
23
+ extension,
24
+ bodiedExtension,
25
+ multiBodiedExtension
26
+ } = state.schema.nodes;
27
+ const nodeTypes = [extension, bodiedExtension, inlineExtension, multiBodiedExtension];
28
+ let matched;
29
+ state.doc.descendants((node, pos) => {
30
+ if (nodeTypes.includes(node.type) && node.attrs.localId === localId) {
31
+ matched = {
32
+ node,
33
+ pos
34
+ };
35
+ }
36
+ });
37
+ return matched;
38
+ };
39
+ export const getSelectedDomElement = (schema, domAtPos, selectedExtensionNode) => {
40
+ const selectedExtensionDomNode = findDomRefAtPos(selectedExtensionNode.pos, domAtPos);
41
+ const isContentExtension = selectedExtensionNode.node.type !== schema.nodes.bodiedExtension;
42
+ return (
43
+ // Content extension can be nested in bodied-extension, the following check is necessary for that case
44
+ (isContentExtension ?
45
+ // Search down
46
+ selectedExtensionDomNode.querySelector('.extension-container') :
47
+ // Try searching up and then down
48
+ closestElement(selectedExtensionDomNode, '.extension-container') || selectedExtensionDomNode.querySelector('.extension-container')) || selectedExtensionDomNode
49
+ );
50
+ };
51
+ export const getDataConsumerMark = newNode => {
52
+ var _newNode$marks;
53
+ return (_newNode$marks = newNode.marks) === null || _newNode$marks === void 0 ? void 0 : _newNode$marks.find(mark => mark.type.name === 'dataConsumer');
54
+ };
55
+ export const getNodeTypesReferenced = (ids, state) => {
56
+ return findNodePosByLocalIds(state, ids, {
57
+ includeDocNode: true
58
+ }).map(({
59
+ node
60
+ }) => node.type.name);
61
+ };
62
+ export const findNodePosWithLocalId = (state, localId) => {
63
+ const nodes = findNodePosByLocalIds(state, [localId]);
64
+ return nodes.length >= 1 ? nodes[0] : undefined;
30
65
  };
@@ -3,12 +3,12 @@ import { getExtensionKeyAndNodeKey } from '@atlaskit/editor-common/extensions';
3
3
  import { GapCursorSelection } from '@atlaskit/editor-common/selection';
4
4
  import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
5
5
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
6
- import { buildExtensionNode } from './actions';
7
- import { clearEditingContext, forceAutoSave, updateState } from './commands';
8
- import { getPluginState } from './pm-plugins/main';
9
- import ConfigPanelLoader from './ui/ConfigPanel/ConfigPanelLoader';
10
- import { SaveIndicator } from './ui/SaveIndicator/SaveIndicator';
11
- import { getSelectedExtension } from './utils';
6
+ import { buildExtensionNode } from '../editor-actions/actions';
7
+ import { clearEditingContext, forceAutoSave, updateState } from '../editor-commands/commands';
8
+ import { getPluginState } from '../pm-plugins/main';
9
+ import { getSelectedExtension } from '../pm-plugins/utils';
10
+ import ConfigPanelLoader from './ConfigPanel/ConfigPanelLoader';
11
+ import { SaveIndicator } from './SaveIndicator/SaveIndicator';
12
12
  const areParametersEqual = (firstParameters, secondParameters) => {
13
13
  if (typeof firstParameters === 'object' && typeof secondParameters === 'object' && firstParameters !== null && secondParameters !== null) {
14
14
  const firstKeys = Object.keys(firstParameters);
@@ -7,9 +7,9 @@ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD, TARGET_SELECTION_SOUR
7
7
  export { transformSliceToRemoveOpenBodiedExtension } from '@atlaskit/editor-common/transforms';
8
8
  import { NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
9
9
  import { findSelectedNodeOfType, replaceParentNodeOfType, replaceSelectedNode } from '@atlaskit/editor-prosemirror/utils';
10
- import { createExtensionAPI, getEditInLegacyMacroBrowser } from './extension-api';
11
- import { getPluginState } from './pm-plugins/main';
12
- import { findExtensionWithLocalId } from './utils';
10
+ import { createExtensionAPI, getEditInLegacyMacroBrowser } from '../pm-plugins/extension-api';
11
+ import { getPluginState } from '../pm-plugins/main';
12
+ import { findExtensionWithLocalId } from '../pm-plugins/utils';
13
13
  export var buildExtensionNode = function buildExtensionNode(type, schema, attrs, content, marks) {
14
14
  switch (type) {
15
15
  case 'extension':
@@ -5,8 +5,8 @@ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, TARGET_SELECTION
5
5
  import { removeConnectedNodes } from '@atlaskit/editor-common/utils';
6
6
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
7
7
  import { findParentNodeOfType, removeParentNodeOfType, removeSelectedNode } from '@atlaskit/editor-prosemirror/utils';
8
- import { createCommand } from './plugin-factory';
9
- import { getSelectedExtension } from './utils';
8
+ import { createCommand } from '../pm-plugins/plugin-factory';
9
+ import { getSelectedExtension } from '../pm-plugins/utils';
10
10
 
11
11
  // AFP-2532 TODO: Fix automatic suppressions below
12
12
  // eslint-disable-next-line @atlassian/tangerine/import/entry-points
@@ -1,16 +1,16 @@
1
1
  import { extension, extensionFrame, inlineExtension, multiBodiedExtension } from '@atlaskit/adf-schema';
2
2
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
3
- import { createEditSelectedExtensionAction, insertOrReplaceBodiedExtension as _insertOrReplaceBodiedExtension, insertOrReplaceExtension as _insertOrReplaceExtension } from './actions';
4
- import { forceAutoSave } from './commands';
5
- import { getContextPanel } from './context-panel';
6
- import { createExtensionAPI } from './extension-api';
3
+ import { createEditSelectedExtensionAction, insertOrReplaceBodiedExtension as _insertOrReplaceBodiedExtension, insertOrReplaceExtension as _insertOrReplaceExtension } from './editor-actions/actions';
4
+ import { forceAutoSave } from './editor-commands/commands';
5
+ import { createExtensionAPI } from './pm-plugins/extension-api';
7
6
  import keymapPlugin from './pm-plugins/keymap';
8
7
  import { createPlugin as createMacroPlugin } from './pm-plugins/macro';
9
8
  import { insertMacroFromMacroBrowser, runMacroAutoConvert } from './pm-plugins/macro/actions';
10
9
  import { createPlugin, pluginKey } from './pm-plugins/main';
10
+ import { bodiedExtensionSpecWithFixedToDOM } from './pm-plugins/toDOM-fixes/bodiedExtension';
11
+ import { getToolbarConfig } from './pm-plugins/toolbar';
11
12
  import { createPlugin as createUniqueIdPlugin } from './pm-plugins/unique-id';
12
- import { bodiedExtensionSpecWithFixedToDOM } from './toDOM-fixes/bodiedExtension';
13
- import { getToolbarConfig } from './toolbar';
13
+ import { getContextPanel } from './ui/context-panel';
14
14
  export var extensionPlugin = function extensionPlugin(_ref) {
15
15
  var _api$featureFlags, _api$analytics2, _api$analytics3, _api$contextPanel3, _api$decorations, _api$contextPanel4, _api$analytics4;
16
16
  var _ref$config = _ref.config,
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /* eslint-disable @atlaskit/editor/no-re-export */
2
2
  // Entry file in package.json
3
3
 
4
- export { extensionPlugin } from './plugin';
4
+ export { extensionPlugin } from './extensionPlugin';
@@ -9,9 +9,9 @@ import { JSONTransformer } from '@atlaskit/editor-json-transformer';
9
9
  import { Fragment, Mark } from '@atlaskit/editor-prosemirror/model';
10
10
  import { NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
11
11
  import { setTextSelection } from '@atlaskit/editor-prosemirror/utils';
12
- import { setEditingContextToContextPanel } from './commands';
13
- import { insertMacroFromMacroBrowser } from './pm-plugins/macro/actions';
14
- import { pluginKey as macroPluginKey } from './pm-plugins/macro/plugin-key';
12
+ import { setEditingContextToContextPanel } from '../editor-commands/commands';
13
+ import { insertMacroFromMacroBrowser } from './macro/actions';
14
+ import { pluginKey as macroPluginKey } from './macro/plugin-key';
15
15
  import { findNodePosWithLocalId, getDataConsumerMark, getNodeTypesReferenced, getSelectedExtension } from './utils';
16
16
  export var getEditInLegacyMacroBrowser = function getEditInLegacyMacroBrowser(_ref) {
17
17
  var view = _ref.view,
@@ -1,6 +1,6 @@
1
1
  import { bindKeymapWithCommand, escape } from '@atlaskit/editor-common/keymaps';
2
2
  import { keymap } from '@atlaskit/editor-prosemirror/keymap';
3
- import { clearEditingContext } from '../commands';
3
+ import { clearEditingContext } from '../editor-commands/commands';
4
4
  import { getPluginState } from './main';
5
5
  export default function keymapPlugin(applyChange) {
6
6
  var list = {};
@@ -9,7 +9,7 @@ import { normaliseNestedLayout } from '@atlaskit/editor-common/insert';
9
9
  import { getValidNode } from '@atlaskit/editor-common/validator';
10
10
  import { NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
11
11
  import { findSelectedNodeOfType, replaceParentNodeOfType, replaceSelectedNode, safeInsert } from '@atlaskit/editor-prosemirror/utils';
12
- import { getPluginState as getExtensionPluginState } from '../../plugin-factory';
12
+ import { getPluginState as getExtensionPluginState } from '../plugin-factory';
13
13
  import { pluginKey } from './plugin-key';
14
14
  export var insertMacroFromMacroBrowser = function insertMacroFromMacroBrowser(editorAnalyticsAPI) {
15
15
  return function (macroProvider, macroNode, isEditing) {
@@ -6,12 +6,12 @@ import { createSelectionClickHandler, GapCursorSelection, isSelectionAtEndOfNode
6
6
  import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
7
7
  import { findParentNodeOfTypeClosestToPos, findSelectedNodeOfType } from '@atlaskit/editor-prosemirror/utils';
8
8
  import { fg } from '@atlaskit/platform-feature-flags';
9
- import { clearEditingContext, updateState } from '../commands';
9
+ import { clearEditingContext, updateState } from '../editor-commands/commands';
10
10
  import { lazyExtensionNodeView } from '../nodeviews/lazyExtension';
11
- import { createCommand, createPluginState, getPluginState } from '../plugin-factory';
12
- import { pluginKey } from '../plugin-key';
13
- import { getSelectedDomElement, getSelectedExtension } from '../utils';
14
- import { updateEditButton } from './utils';
11
+ import { createCommand, createPluginState, getPluginState } from './plugin-factory';
12
+ import { pluginKey } from './plugin-key';
13
+ import { updateEditButton } from './update-edit-button';
14
+ import { getSelectedDomElement, getSelectedExtension } from './utils';
15
15
  var shouldShowEditButton = function shouldShowEditButton(extensionHandler, extensionProvider) {
16
16
  var usesLegacyMacroBrowser = !extensionHandler && !extensionProvider || typeof extensionHandler === 'function';
17
17
  var usesModernUpdateMethod = _typeof(extensionHandler) === 'object' && typeof extensionHandler.update === 'function';
@@ -15,10 +15,10 @@ import FullWidthIcon from '@atlaskit/icon/glyph/editor/media-full-width';
15
15
  import WideIcon from '@atlaskit/icon/glyph/editor/media-wide';
16
16
  import RemoveIcon from '@atlaskit/icon/glyph/editor/remove';
17
17
  import { fg } from '@atlaskit/platform-feature-flags';
18
- import { editExtension } from './actions';
19
- import { removeDescendantNodes, removeExtension, updateExtensionLayout } from './commands';
20
- import { pluginKey as macroPluginKey } from './pm-plugins/macro/plugin-key';
21
- import { getPluginState } from './pm-plugins/main';
18
+ import { editExtension } from '../editor-actions/actions';
19
+ import { removeDescendantNodes, removeExtension, updateExtensionLayout } from '../editor-commands/commands';
20
+ import { pluginKey as macroPluginKey } from './macro/plugin-key';
21
+ import { getPluginState } from './main';
22
22
  import { getSelectedExtension } from './utils';
23
23
  var isLayoutSupported = function isLayoutSupported(state, selectedExtNode) {
24
24
  var _state$schema$nodes = state.schema.nodes,
@@ -0,0 +1,68 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ import { getExtensionModuleNode } from '@atlaskit/editor-common/extensions';
4
+ import { updateState } from '../editor-commands/commands';
5
+ import { getSelectedExtension } from './utils';
6
+ var maybeGetUpdateMethodFromExtensionProvider = /*#__PURE__*/function () {
7
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(view, extensionProvider) {
8
+ var nodeWithPos, _nodeWithPos$node$att, extensionType, extensionKey, extensionModuleNode, newNodeWithPos;
9
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
10
+ while (1) switch (_context.prev = _context.next) {
11
+ case 0:
12
+ nodeWithPos = getSelectedExtension(view.state, true);
13
+ if (nodeWithPos) {
14
+ _context.next = 3;
15
+ break;
16
+ }
17
+ throw new Error('There is no selection');
18
+ case 3:
19
+ _nodeWithPos$node$att = nodeWithPos.node.attrs, extensionType = _nodeWithPos$node$att.extensionType, extensionKey = _nodeWithPos$node$att.extensionKey;
20
+ _context.next = 6;
21
+ return getExtensionModuleNode(extensionProvider, extensionType, extensionKey);
22
+ case 6:
23
+ extensionModuleNode = _context.sent;
24
+ newNodeWithPos = getSelectedExtension(view.state, true);
25
+ if (!(newNodeWithPos && newNodeWithPos.node.attrs.extensionType === extensionType && newNodeWithPos.node.attrs.extensionKey === extensionKey && newNodeWithPos.pos === nodeWithPos.pos && extensionModuleNode)) {
26
+ _context.next = 10;
27
+ break;
28
+ }
29
+ return _context.abrupt("return", extensionModuleNode.update);
30
+ case 10:
31
+ case "end":
32
+ return _context.stop();
33
+ }
34
+ }, _callee);
35
+ }));
36
+ return function maybeGetUpdateMethodFromExtensionProvider(_x, _x2) {
37
+ return _ref.apply(this, arguments);
38
+ };
39
+ }();
40
+ export var updateEditButton = /*#__PURE__*/function () {
41
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(view, extensionProvider) {
42
+ var updateMethod;
43
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
44
+ while (1) switch (_context2.prev = _context2.next) {
45
+ case 0:
46
+ _context2.prev = 0;
47
+ _context2.next = 3;
48
+ return maybeGetUpdateMethodFromExtensionProvider(view, extensionProvider);
49
+ case 3:
50
+ updateMethod = _context2.sent;
51
+ updateState({
52
+ showEditButton: !!updateMethod,
53
+ updateExtension: updateMethod && Promise.resolve(updateMethod) || undefined
54
+ })(view.state, view.dispatch);
55
+ return _context2.abrupt("return", updateMethod);
56
+ case 8:
57
+ _context2.prev = 8;
58
+ _context2.t0 = _context2["catch"](0);
59
+ case 10:
60
+ case "end":
61
+ return _context2.stop();
62
+ }
63
+ }, _callee2, null, [[0, 8]]);
64
+ }));
65
+ return function updateEditButton(_x3, _x4) {
66
+ return _ref2.apply(this, arguments);
67
+ };
68
+ }();
@@ -1,68 +1,67 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import { getExtensionModuleNode } from '@atlaskit/editor-common/extensions';
4
- import { updateState } from '../commands';
5
- import { getSelectedExtension } from '../utils';
6
- var maybeGetUpdateMethodFromExtensionProvider = /*#__PURE__*/function () {
7
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(view, extensionProvider) {
8
- var nodeWithPos, _nodeWithPos$node$att, extensionType, extensionKey, extensionModuleNode, newNodeWithPos;
9
- return _regeneratorRuntime.wrap(function _callee$(_context) {
10
- while (1) switch (_context.prev = _context.next) {
11
- case 0:
12
- nodeWithPos = getSelectedExtension(view.state, true);
13
- if (nodeWithPos) {
14
- _context.next = 3;
15
- break;
16
- }
17
- throw new Error('There is no selection');
18
- case 3:
19
- _nodeWithPos$node$att = nodeWithPos.node.attrs, extensionType = _nodeWithPos$node$att.extensionType, extensionKey = _nodeWithPos$node$att.extensionKey;
20
- _context.next = 6;
21
- return getExtensionModuleNode(extensionProvider, extensionType, extensionKey);
22
- case 6:
23
- extensionModuleNode = _context.sent;
24
- newNodeWithPos = getSelectedExtension(view.state, true);
25
- if (!(newNodeWithPos && newNodeWithPos.node.attrs.extensionType === extensionType && newNodeWithPos.node.attrs.extensionKey === extensionKey && newNodeWithPos.pos === nodeWithPos.pos && extensionModuleNode)) {
26
- _context.next = 10;
27
- break;
28
- }
29
- return _context.abrupt("return", extensionModuleNode.update);
30
- case 10:
31
- case "end":
32
- return _context.stop();
33
- }
34
- }, _callee);
35
- }));
36
- return function maybeGetUpdateMethodFromExtensionProvider(_x, _x2) {
37
- return _ref.apply(this, arguments);
38
- };
39
- }();
40
- export var updateEditButton = /*#__PURE__*/function () {
41
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(view, extensionProvider) {
42
- var updateMethod;
43
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
44
- while (1) switch (_context2.prev = _context2.next) {
45
- case 0:
46
- _context2.prev = 0;
47
- _context2.next = 3;
48
- return maybeGetUpdateMethodFromExtensionProvider(view, extensionProvider);
49
- case 3:
50
- updateMethod = _context2.sent;
51
- updateState({
52
- showEditButton: !!updateMethod,
53
- updateExtension: updateMethod && Promise.resolve(updateMethod) || undefined
54
- })(view.state, view.dispatch);
55
- return _context2.abrupt("return", updateMethod);
56
- case 8:
57
- _context2.prev = 8;
58
- _context2.t0 = _context2["catch"](0);
59
- case 10:
60
- case "end":
61
- return _context2.stop();
62
- }
63
- }, _callee2, null, [[0, 8]]);
64
- }));
65
- return function updateEditButton(_x3, _x4) {
66
- return _ref2.apply(this, arguments);
67
- };
68
- }();
1
+ import { closestElement, findNodePosByLocalIds } from '@atlaskit/editor-common/utils';
2
+ import { findDomRefAtPos, findParentNodeOfType, findSelectedNodeOfType } from '@atlaskit/editor-prosemirror/utils';
3
+ export var getSelectedExtension = function getSelectedExtension(state) {
4
+ var searchParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
5
+ var _state$schema$nodes = state.schema.nodes,
6
+ inlineExtension = _state$schema$nodes.inlineExtension,
7
+ extension = _state$schema$nodes.extension,
8
+ bodiedExtension = _state$schema$nodes.bodiedExtension,
9
+ multiBodiedExtension = _state$schema$nodes.multiBodiedExtension;
10
+ var nodeTypes = [extension, bodiedExtension, inlineExtension, multiBodiedExtension];
11
+ return findSelectedNodeOfType(nodeTypes)(state.selection) || searchParent && findParentNodeOfType(nodeTypes)(state.selection) || undefined;
12
+ };
13
+ export var findExtensionWithLocalId = function findExtensionWithLocalId(state, localId) {
14
+ var selectedExtension = getSelectedExtension(state, true);
15
+ if (!localId) {
16
+ return selectedExtension;
17
+ }
18
+ if (selectedExtension && selectedExtension.node.attrs.localId === localId) {
19
+ return selectedExtension;
20
+ }
21
+ var _state$schema$nodes2 = state.schema.nodes,
22
+ inlineExtension = _state$schema$nodes2.inlineExtension,
23
+ extension = _state$schema$nodes2.extension,
24
+ bodiedExtension = _state$schema$nodes2.bodiedExtension,
25
+ multiBodiedExtension = _state$schema$nodes2.multiBodiedExtension;
26
+ var nodeTypes = [extension, bodiedExtension, inlineExtension, multiBodiedExtension];
27
+ var matched;
28
+ state.doc.descendants(function (node, pos) {
29
+ if (nodeTypes.includes(node.type) && node.attrs.localId === localId) {
30
+ matched = {
31
+ node: node,
32
+ pos: pos
33
+ };
34
+ }
35
+ });
36
+ return matched;
37
+ };
38
+ export var getSelectedDomElement = function getSelectedDomElement(schema, domAtPos, selectedExtensionNode) {
39
+ var selectedExtensionDomNode = findDomRefAtPos(selectedExtensionNode.pos, domAtPos);
40
+ var isContentExtension = selectedExtensionNode.node.type !== schema.nodes.bodiedExtension;
41
+ return (
42
+ // Content extension can be nested in bodied-extension, the following check is necessary for that case
43
+ (isContentExtension ?
44
+ // Search down
45
+ selectedExtensionDomNode.querySelector('.extension-container') :
46
+ // Try searching up and then down
47
+ closestElement(selectedExtensionDomNode, '.extension-container') || selectedExtensionDomNode.querySelector('.extension-container')) || selectedExtensionDomNode
48
+ );
49
+ };
50
+ export var getDataConsumerMark = function getDataConsumerMark(newNode) {
51
+ var _newNode$marks;
52
+ return (_newNode$marks = newNode.marks) === null || _newNode$marks === void 0 ? void 0 : _newNode$marks.find(function (mark) {
53
+ return mark.type.name === 'dataConsumer';
54
+ });
55
+ };
56
+ export var getNodeTypesReferenced = function getNodeTypesReferenced(ids, state) {
57
+ return findNodePosByLocalIds(state, ids, {
58
+ includeDocNode: true
59
+ }).map(function (_ref) {
60
+ var node = _ref.node;
61
+ return node.type.name;
62
+ });
63
+ };
64
+ export var findNodePosWithLocalId = function findNodePosWithLocalId(state, localId) {
65
+ var nodes = findNodePosByLocalIds(state, [localId]);
66
+ return nodes.length >= 1 ? nodes[0] : undefined;
67
+ };
@@ -10,12 +10,12 @@ import { getExtensionKeyAndNodeKey } from '@atlaskit/editor-common/extensions';
10
10
  import { GapCursorSelection } from '@atlaskit/editor-common/selection';
11
11
  import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
12
12
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
13
- import { buildExtensionNode } from './actions';
14
- import { clearEditingContext, forceAutoSave, updateState } from './commands';
15
- import { getPluginState } from './pm-plugins/main';
16
- import ConfigPanelLoader from './ui/ConfigPanel/ConfigPanelLoader';
17
- import { SaveIndicator } from './ui/SaveIndicator/SaveIndicator';
18
- import { getSelectedExtension } from './utils';
13
+ import { buildExtensionNode } from '../editor-actions/actions';
14
+ import { clearEditingContext, forceAutoSave, updateState } from '../editor-commands/commands';
15
+ import { getPluginState } from '../pm-plugins/main';
16
+ import { getSelectedExtension } from '../pm-plugins/utils';
17
+ import ConfigPanelLoader from './ConfigPanel/ConfigPanelLoader';
18
+ import { SaveIndicator } from './SaveIndicator/SaveIndicator';
19
19
  var areParametersEqual = function areParametersEqual(firstParameters, secondParameters) {
20
20
  if (_typeof(firstParameters) === 'object' && _typeof(secondParameters) === 'object' && firstParameters !== null && secondParameters !== null) {
21
21
  var firstKeys = Object.keys(firstParameters);
@@ -7,7 +7,7 @@ import type { ApplyChangeHandler } from '@atlaskit/editor-plugin-context-panel';
7
7
  import type { Fragment, Mark, Node as PmNode, Schema } from '@atlaskit/editor-prosemirror/model';
8
8
  import { type Transaction } from '@atlaskit/editor-prosemirror/state';
9
9
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
10
- import type { InsertOrReplaceExtensionType } from './types';
10
+ import type { InsertOrReplaceExtensionType } from '../extensionPluginType';
11
11
  export declare const buildExtensionNode: <S extends Schema<any, any>>(type: 'inlineExtension' | 'extension' | 'bodiedExtension' | 'multiBodiedExtension', schema: S, attrs: object, content?: Fragment, marks?: readonly Mark[]) => PmNode;
12
12
  export declare const performNodeUpdate: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (type: 'inlineExtension' | 'extension' | 'bodiedExtension' | 'multiBodiedExtension', newAttrs: object, content: Fragment, marks: readonly Mark[], shouldScrollIntoView: boolean) => Command;
13
13
  export declare const editExtension: (macroProvider: MacroProvider | null | undefined, applyChangeToContextPanel: ApplyChangeHandler | undefined, editorAnalyticsAPI: EditorAnalyticsAPI | undefined, updateExtension?: Promise<UpdateExtension<object> | void>) => Command;
@@ -4,7 +4,7 @@ import type { Parameters, TransformAfter, TransformBefore } from '@atlaskit/edit
4
4
  import type { ApplyChangeHandler } from '@atlaskit/editor-plugin-context-panel';
5
5
  import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
6
6
  import { type EditorState, type Transaction } from '@atlaskit/editor-prosemirror/state';
7
- import type { ExtensionState, RejectSave } from './types';
7
+ import type { ExtensionState, RejectSave } from '../extensionPluginType';
8
8
  export declare function updateState(state: Partial<ExtensionState>): import("@atlaskit/editor-common/types").Command;
9
9
  export declare function setEditingContextToContextPanel<T extends Parameters = Parameters>(processParametersBefore: TransformBefore<T>, processParametersAfter: TransformAfter<T>, applyChangeToContextPanel: ApplyChangeHandler | undefined): import("@atlaskit/editor-common/types").Command;
10
10
  export declare const clearEditingContext: (applyChangeToContextPanel: ApplyChangeHandler | undefined) => import("@atlaskit/editor-common/types").Command;
@@ -0,0 +1,2 @@
1
+ import type { ExtensionPlugin } from './extensionPluginType';
2
+ export declare const extensionPlugin: ExtensionPlugin;
@@ -12,7 +12,7 @@ import type { WidthPlugin } from '@atlaskit/editor-plugin-width';
12
12
  import type { Fragment, Node as PmNode } from '@atlaskit/editor-prosemirror/model';
13
13
  import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
14
14
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
15
- import type { forceAutoSave } from './commands';
15
+ import type { forceAutoSave } from './editor-commands/commands';
16
16
  export type RejectSave = (reason?: any) => void;
17
17
  export type ExtensionState<T extends Parameters = Parameters> = {
18
18
  localId?: string;
@@ -1,2 +1,2 @@
1
- export type { CreateExtensionAPI, ExtensionPlugin, ExtensionPluginOptions, InsertOrReplaceExtensionType, RunMacroAutoConvert, RejectSave, } from './types';
2
- export { extensionPlugin } from './plugin';
1
+ export type { CreateExtensionAPI, ExtensionPlugin, ExtensionPluginOptions, InsertOrReplaceExtensionType, RunMacroAutoConvert, RejectSave, } from './extensionPluginType';
2
+ export { extensionPlugin } from './extensionPlugin';
@@ -1,7 +1,7 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { MacroProvider } from '@atlaskit/editor-common/provider-factory';
3
3
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
4
- import type { CreateExtensionAPI } from './types';
4
+ import type { CreateExtensionAPI } from '../extensionPluginType';
5
5
  interface EditInLegacyMacroBrowserArgs {
6
6
  view: EditorView;
7
7
  editorAnalyticsAPI: EditorAnalyticsAPI | undefined;
@@ -7,9 +7,9 @@ import type { EditorAppearance, ExtractInjectionAPI, FeatureFlags } from '@atlas
7
7
  import type { ApplyChangeHandler } from '@atlaskit/editor-plugin-context-panel';
8
8
  import type { EditorState } from '@atlaskit/editor-prosemirror/state';
9
9
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
10
- import { createCommand, getPluginState } from '../plugin-factory';
11
- import { pluginKey } from '../plugin-key';
12
- import type { ExtensionPlugin, ExtensionPluginOptions } from '../types';
10
+ import type { ExtensionPlugin, ExtensionPluginOptions } from '../extensionPluginType';
11
+ import { createCommand, getPluginState } from './plugin-factory';
12
+ import { pluginKey } from './plugin-key';
13
13
  export declare const createExtensionProviderHandler: (view: EditorView) => (name: string, provider?: Promise<ExtensionProvider>) => Promise<void>;
14
14
  export declare const handleUpdate: ({ view, prevState, domAtPos, extensionHandlers, applyChange, }: {
15
15
  view: EditorView;
@@ -20,5 +20,5 @@ export declare const handleUpdate: ({ view, prevState, domAtPos, extensionHandle
20
20
  }) => true | undefined;
21
21
  declare const createPlugin: (dispatch: Dispatch, providerFactory: ProviderFactory, extensionHandlers: ExtensionHandlers, portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, pluginInjectionApi: ExtractInjectionAPI<ExtensionPlugin> | undefined, useLongPressSelection?: boolean, options?: {
22
22
  appearance?: EditorAppearance;
23
- }, featureFlags?: FeatureFlags, allowDragAndDrop?: boolean, __rendererExtensionOptions?: ExtensionPluginOptions['__rendererExtensionOptions']) => SafePlugin<import("../types").ExtensionState>;
23
+ }, featureFlags?: FeatureFlags, allowDragAndDrop?: boolean, __rendererExtensionOptions?: ExtensionPluginOptions['__rendererExtensionOptions']) => SafePlugin<import("../extensionPluginType").ExtensionState>;
24
24
  export { pluginKey, createPlugin, createCommand, getPluginState };
@@ -0,0 +1,4 @@
1
+ import type { ExtensionState } from '../extensionPluginType';
2
+ export declare const createPluginState: (dispatch: import("@atlaskit/editor-common/event-dispatcher").Dispatch, initialState: ExtensionState | ((state: import("prosemirror-state").EditorState) => ExtensionState)) => import("prosemirror-state").SafeStateField<ExtensionState>;
3
+ export declare const createCommand: <A = import("../extensionPluginType").ExtensionAction>(action: A | ((state: Readonly<import("prosemirror-state").EditorState>) => false | A), transform?: ((tr: import("prosemirror-state").Transaction, state: import("prosemirror-state").EditorState) => import("prosemirror-state").Transaction) | undefined) => import("@atlaskit/editor-common/types").Command;
4
+ export declare const getPluginState: (state: import("prosemirror-state").EditorState) => ExtensionState;
@@ -1,3 +1,3 @@
1
1
  import { PluginKey } from '@atlaskit/editor-prosemirror/state';
2
- import type { ExtensionState } from './types';
2
+ import type { ExtensionState } from '../extensionPluginType';
3
3
  export declare const pluginKey: PluginKey<ExtensionState>;
@@ -1,2 +1,2 @@
1
- import type { ExtensionAction, ExtensionState } from './types';
1
+ import type { ExtensionAction, ExtensionState } from '../extensionPluginType';
2
2
  export default function (pluginState: ExtensionState, action: ExtensionAction): ExtensionState;
@@ -0,0 +1,3 @@
1
+ import type { ExtensionProvider } from '@atlaskit/editor-common/extensions';
2
+ import type { EditorView } from '@atlaskit/editor-prosemirror/view';
3
+ export declare const updateEditButton: (view: EditorView, extensionProvider: ExtensionProvider) => Promise<import("@atlaskit/editor-common/extensions").UpdateExtension<any> | undefined>;
@@ -1,3 +1,15 @@
1
- import type { ExtensionProvider } from '@atlaskit/editor-common/extensions';
2
- import type { EditorView } from '@atlaskit/editor-prosemirror/view';
3
- export declare const updateEditButton: (view: EditorView, extensionProvider: ExtensionProvider) => Promise<import("@atlaskit/editor-common/extensions").UpdateExtension<any> | undefined>;
1
+ import type { Mark, Node as PMNode, Schema } from '@atlaskit/editor-prosemirror/model';
2
+ import type { EditorState } from '@atlaskit/editor-prosemirror/state';
3
+ import type { DomAtPos, NodeWithPos } from '@atlaskit/editor-prosemirror/utils';
4
+ export declare const getSelectedExtension: (state: EditorState, searchParent?: boolean) => import("prosemirror-utils/dist/types").ContentNodeWithPos | undefined;
5
+ export declare const findExtensionWithLocalId: (state: EditorState, localId?: string) => NodeWithPos | undefined;
6
+ export declare const getSelectedDomElement: (schema: Schema, domAtPos: DomAtPos, selectedExtensionNode: NodeWithPos) => HTMLElement;
7
+ export declare const getDataConsumerMark: (newNode: PMNode) => Mark | undefined;
8
+ export declare const getNodeTypesReferenced: (ids: string[], state: EditorState) => string[];
9
+ export declare const findNodePosWithLocalId: (state: EditorState, localId: string) => NodeWithPos | undefined;
10
+ export interface Position {
11
+ top?: number;
12
+ right?: number;
13
+ bottom?: number;
14
+ left?: number;
15
+ }
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { WithAnalyticsEventsProps } from '@atlaskit/analytics-next';
3
3
  import type { ExtensionManifest, FieldDefinition, OnSaveCallback, Parameters } from '@atlaskit/editor-common/extensions';
4
4
  import type { ExtractInjectionAPI, FeatureFlags } from '@atlaskit/editor-common/types';
5
- import type { ExtensionPlugin, RejectSave } from '../../types';
5
+ import type { ExtensionPlugin, RejectSave } from '../../extensionPluginType';
6
6
  declare const result: React.ForwardRefExoticComponent<Pick<Omit<{
7
7
  extensionManifest?: ExtensionManifest | undefined;
8
8
  fields?: FieldDefinition[] | undefined;
@@ -17,5 +17,5 @@ declare const result: React.ForwardRefExoticComponent<Pick<Omit<{
17
17
  isLoading?: boolean | undefined;
18
18
  featureFlags?: FeatureFlags | undefined;
19
19
  api: ExtractInjectionAPI<ExtensionPlugin> | undefined;
20
- }, keyof WithAnalyticsEventsProps> & React.RefAttributes<any> & import("@atlaskit/analytics-next").WithContextProps, "featureFlags" | "api" | "autoSaveReject" | "parameters" | "key" | "onChange" | "errorMessage" | "analyticsContext" | "fields" | "extensionManifest" | "isLoading" | "onCancel" | "autoSaveTrigger" | "showHeader" | "closeOnEsc"> & React.RefAttributes<any>>;
20
+ }, keyof WithAnalyticsEventsProps> & React.RefAttributes<any> & import("@atlaskit/analytics-next").WithContextProps, "autoSaveReject" | "featureFlags" | "api" | "parameters" | "key" | "onChange" | "errorMessage" | "analyticsContext" | "fields" | "extensionManifest" | "isLoading" | "onCancel" | "autoSaveTrigger" | "showHeader" | "closeOnEsc"> & React.RefAttributes<any>>;
21
21
  export default result;