@atlaskit/editor-common 74.32.1 → 74.34.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 (82) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/card/MediaAndEmbedsToolbar/index.js +23 -7
  3. package/dist/cjs/guideline/index.js +13 -0
  4. package/dist/cjs/keymaps/index.js +8 -1
  5. package/dist/cjs/keymaps/keymap.js +38 -0
  6. package/dist/cjs/monitoring/error.js +1 -1
  7. package/dist/cjs/styles/shared/media-single.js +2 -1
  8. package/dist/cjs/ui/DropList/index.js +1 -1
  9. package/dist/cjs/ui/MediaSingle/index.js +2 -7
  10. package/dist/cjs/ui/MediaSingle/styled.js +24 -2
  11. package/dist/cjs/ui/index.js +0 -6
  12. package/dist/cjs/utils/commands.js +180 -15
  13. package/dist/cjs/utils/editor-core-utils.js +53 -3
  14. package/dist/cjs/utils/index.js +54 -0
  15. package/dist/cjs/utils/input-rules.js +48 -2
  16. package/dist/cjs/utils/rich-media-utils.js +6 -3
  17. package/dist/cjs/version.json +1 -1
  18. package/dist/es2019/card/MediaAndEmbedsToolbar/index.js +23 -8
  19. package/dist/es2019/guideline/index.js +1 -0
  20. package/dist/es2019/keymaps/index.js +3 -2
  21. package/dist/es2019/keymaps/keymap.js +33 -0
  22. package/dist/es2019/monitoring/error.js +1 -1
  23. package/dist/es2019/styles/shared/media-single.js +6 -5
  24. package/dist/es2019/ui/DropList/index.js +1 -1
  25. package/dist/es2019/ui/MediaSingle/index.js +1 -4
  26. package/dist/es2019/ui/MediaSingle/styled.js +45 -2
  27. package/dist/es2019/ui/index.js +1 -1
  28. package/dist/es2019/utils/commands.js +173 -2
  29. package/dist/es2019/utils/editor-core-utils.js +46 -1
  30. package/dist/es2019/utils/index.js +4 -4
  31. package/dist/es2019/utils/input-rules.js +45 -0
  32. package/dist/es2019/utils/rich-media-utils.js +3 -1
  33. package/dist/es2019/version.json +1 -1
  34. package/dist/esm/card/MediaAndEmbedsToolbar/index.js +24 -8
  35. package/dist/esm/guideline/index.js +1 -0
  36. package/dist/esm/keymaps/index.js +3 -2
  37. package/dist/esm/keymaps/keymap.js +33 -0
  38. package/dist/esm/monitoring/error.js +1 -1
  39. package/dist/esm/styles/shared/media-single.js +2 -1
  40. package/dist/esm/ui/DropList/index.js +1 -1
  41. package/dist/esm/ui/MediaSingle/index.js +1 -4
  42. package/dist/esm/ui/MediaSingle/styled.js +25 -3
  43. package/dist/esm/ui/index.js +1 -1
  44. package/dist/esm/utils/commands.js +170 -14
  45. package/dist/esm/utils/editor-core-utils.js +47 -0
  46. package/dist/esm/utils/index.js +4 -4
  47. package/dist/esm/utils/input-rules.js +44 -0
  48. package/dist/esm/utils/rich-media-utils.js +3 -1
  49. package/dist/esm/version.json +1 -1
  50. package/dist/types/card/MediaAndEmbedsToolbar/index.d.ts +1 -1
  51. package/dist/types/guideline/index.d.ts +1 -0
  52. package/dist/types/keymaps/index.d.ts +1 -0
  53. package/dist/types/keymaps/keymap.d.ts +11 -0
  54. package/dist/types/types/block-type.d.ts +1 -0
  55. package/dist/types/types/feature-flags.d.ts +8 -0
  56. package/dist/types/types/index.d.ts +1 -1
  57. package/dist/types/ui/DropList/index.d.ts +1 -1
  58. package/dist/types/ui/MediaSingle/index.d.ts +1 -2
  59. package/dist/types/ui/MediaSingle/styled.d.ts +3 -1
  60. package/dist/types/ui/index.d.ts +1 -1
  61. package/dist/types/utils/commands.d.ts +11 -5
  62. package/dist/types/utils/editor-core-utils.d.ts +7 -2
  63. package/dist/types/utils/index.d.ts +4 -4
  64. package/dist/types/utils/input-rules.d.ts +12 -4
  65. package/dist/types/utils/rich-media-utils.d.ts +1 -0
  66. package/dist/types-ts4.5/card/MediaAndEmbedsToolbar/index.d.ts +1 -1
  67. package/dist/types-ts4.5/guideline/index.d.ts +1 -0
  68. package/dist/types-ts4.5/keymaps/index.d.ts +1 -0
  69. package/dist/types-ts4.5/keymaps/keymap.d.ts +11 -0
  70. package/dist/types-ts4.5/types/block-type.d.ts +1 -0
  71. package/dist/types-ts4.5/types/feature-flags.d.ts +8 -0
  72. package/dist/types-ts4.5/types/index.d.ts +1 -1
  73. package/dist/types-ts4.5/ui/DropList/index.d.ts +1 -1
  74. package/dist/types-ts4.5/ui/MediaSingle/index.d.ts +1 -2
  75. package/dist/types-ts4.5/ui/MediaSingle/styled.d.ts +3 -1
  76. package/dist/types-ts4.5/ui/index.d.ts +1 -1
  77. package/dist/types-ts4.5/utils/commands.d.ts +11 -5
  78. package/dist/types-ts4.5/utils/editor-core-utils.d.ts +7 -2
  79. package/dist/types-ts4.5/utils/index.d.ts +4 -4
  80. package/dist/types-ts4.5/utils/input-rules.d.ts +12 -4
  81. package/dist/types-ts4.5/utils/rich-media-utils.d.ts +1 -0
  82. package/package.json +7 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 74.34.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`1944b35b538`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1944b35b538) - move common utilities to editor-common, to help with decoupling block-type plugin
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
13
+ ## 74.33.0
14
+
15
+ ### Minor Changes
16
+
17
+ - [`936c30f8dc9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/936c30f8dc9) - support new image resize experience under feature flag
18
+
3
19
  ## 74.32.1
4
20
 
5
21
  ### Patch Changes
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _state = require("@atlaskit/editor-prosemirror/state");
11
12
  var _utils = require("@atlaskit/editor-prosemirror/utils");
12
13
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
@@ -17,12 +18,15 @@ var _mediaFullWidth = _interopRequireDefault(require("@atlaskit/icon/glyph/edito
17
18
  var _mediaWide = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/media-wide"));
18
19
  var _mediaWrapLeft = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/media-wrap-left"));
19
20
  var _mediaWrapRight = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/media-wrap-right"));
21
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
22
  var _analytics = require("../../analytics");
21
23
  var _coreUtils = require("../../core-utils");
22
24
  var _messages = _interopRequireWildcard(require("../../messages"));
23
25
  var _utils2 = require("../../utils");
24
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
27
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
30
  // Workaround as we don't want to import this package into `editor-common`
27
31
  // We'll get type errors if this gets out of sync with `editor-plugin-width`.
28
32
  var alignmentIcons = [{
@@ -84,7 +88,10 @@ var makeAlign = function makeAlign(layout, nodeType, widthPluginDependencyApi, a
84
88
  return false;
85
89
  }
86
90
  var nodeWidth = getNodeWidth(node, state.schema);
87
- var newAttrs = (0, _utils2.alignAttributes)(layout, node.attrs, undefined, nodeWidth, widthPluginState.lineLength);
91
+ var newAttrs = (0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.extended-resize-experience') ? // with extended experience, change alignment does not change media single width
92
+ _objectSpread(_objectSpread({}, node.attrs), {}, {
93
+ layout: layout
94
+ }) : (0, _utils2.alignAttributes)(layout, node.attrs, undefined, nodeWidth, widthPluginState.lineLength);
88
95
  var tr = state.tr.setNodeMarkup(state.selection.from, undefined, newAttrs);
89
96
  tr.setMeta('scrollIntoView', false);
90
97
  // when image captions are enabled, the wrong node gets selected after
@@ -113,18 +120,26 @@ var makeAlign = function makeAlign(layout, nodeType, widthPluginDependencyApi, a
113
120
  return true;
114
121
  };
115
122
  };
116
- var mapIconsToToolbarItem = function mapIconsToToolbarItem(icons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi) {
123
+ var getToolbarLayout = function getToolbarLayout(layout) {
124
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.extended-resize-experience') && _utils2.nonWrappedLayouts.includes(layout)) {
125
+ return 'center';
126
+ }
127
+ return layout;
128
+ };
129
+ var mapIconsToToolbarItem = function mapIconsToToolbarItem(icons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi, isChangingLayoutDisabled) {
117
130
  return icons.map(function (toolbarItem) {
118
131
  var id = toolbarItem.id,
119
132
  value = toolbarItem.value;
120
- return {
133
+ return _objectSpread({
121
134
  id: id,
122
135
  type: 'button',
123
136
  icon: toolbarItem.icon,
124
137
  title: intl.formatMessage(layoutToMessages[value]),
125
- selected: layout === value,
138
+ selected: getToolbarLayout(layout) === value,
126
139
  onClick: makeAlign(value, nodeType, widthPluginDependencyApi, analyticsApi)
127
- };
140
+ }, isChangingLayoutDisabled && {
141
+ disabled: value !== 'center'
142
+ });
128
143
  });
129
144
  };
130
145
  var shouldHideLayoutToolbar = function shouldHideLayoutToolbar(selection, _ref2, allowResizingInTables) {
@@ -134,13 +149,14 @@ var shouldHideLayoutToolbar = function shouldHideLayoutToolbar(selection, _ref2,
134
149
  var buildLayoutButtons = function buildLayoutButtons(state, intl, nodeType, widthPluginDependencyApi, analyticsApi, allowResizing, allowResizingInTables) {
135
150
  var allowWrapping = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : true;
136
151
  var allowAlignment = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : true;
152
+ var isChangingLayoutDisabled = arguments.length > 9 ? arguments[9] : undefined;
137
153
  var selection = state.selection;
138
154
  if (!(selection instanceof _state.NodeSelection) || !selection.node || !nodeType || shouldHideLayoutToolbar(selection, state.schema, allowResizingInTables)) {
139
155
  return [];
140
156
  }
141
157
  var layout = selection.node.attrs.layout;
142
- var alignmentToolbarItems = allowAlignment ? mapIconsToToolbarItem(alignmentIcons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi) : [];
143
- var wrappingToolbarItems = allowWrapping ? mapIconsToToolbarItem(wrappingIcons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi) : [];
158
+ var alignmentToolbarItems = allowAlignment ? mapIconsToToolbarItem(alignmentIcons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi, isChangingLayoutDisabled) : [];
159
+ var wrappingToolbarItems = allowWrapping ? mapIconsToToolbarItem(wrappingIcons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi, isChangingLayoutDisabled) : [];
144
160
  var breakOutToolbarItems = !allowResizing ? mapIconsToToolbarItem(breakoutIcons, layout, intl, nodeType, widthPluginDependencyApi, analyticsApi) : [];
145
161
  var items = [].concat((0, _toConsumableArray2.default)(alignmentToolbarItems), (0, _toConsumableArray2.default)(getSeparatorBetweenAlignmentAndWrapping(allowAlignment, allowWrapping)), (0, _toConsumableArray2.default)(wrappingToolbarItems), (0, _toConsumableArray2.default)(getSeparatorBeforeBreakoutItems(allowAlignment, allowWrapping, allowResizing)), (0, _toConsumableArray2.default)(breakOutToolbarItems));
146
162
  return items;
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "createGuidesFromLengths", {
21
21
  return _fixedGuideline.createGuidesFromLengths;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "findClosestSnap", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _snapping.findClosestSnap;
28
+ }
29
+ });
24
30
  Object.defineProperty(exports, "generateDefaultGuidelines", {
25
31
  enumerable: true,
26
32
  get: function get() {
@@ -45,6 +51,12 @@ Object.defineProperty(exports, "getGuidelinesWithHighlights", {
45
51
  return _updateGuideline.getGuidelinesWithHighlights;
46
52
  }
47
53
  });
54
+ Object.defineProperty(exports, "getSnapWidth", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _snapping.getSnapWidth;
58
+ }
59
+ });
48
60
  Object.defineProperty(exports, "isVerticalPosition", {
49
61
  enumerable: true,
50
62
  get: function get() {
@@ -56,4 +68,5 @@ var _fixedGuideline = require("./fixedGuideline");
56
68
  var _defaultGuideline = require("./defaultGuideline");
57
69
  var _updateGuideline = require("./updateGuideline");
58
70
  var _constants = require("./constants");
71
+ var _snapping = require("./snapping");
59
72
  var _utils = require("./utils");
@@ -88,6 +88,12 @@ exports.findShortcutByKeymap = findShortcutByKeymap;
88
88
  exports.forwardDelete = void 0;
89
89
  exports.getAriaKeyshortcuts = getAriaKeyshortcuts;
90
90
  exports.insertRule = exports.insertNewLine = exports.indentList = exports.indent = void 0;
91
+ Object.defineProperty(exports, "keymap", {
92
+ enumerable: true,
93
+ get: function get() {
94
+ return _keymap.keymap;
95
+ }
96
+ });
91
97
  exports.makeKeyMapWithCommon = makeKeyMapWithCommon;
92
98
  exports.makeKeymap = makeKeymap;
93
99
  exports.toggleUnderline = exports.toggleTable = exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleOrderedList = exports.toggleItalic = exports.toggleHeading6 = exports.toggleHeading5 = exports.toggleHeading4 = exports.toggleHeading3 = exports.toggleHeading2 = exports.toggleHeading1 = exports.toggleCode = exports.toggleBulletList = exports.toggleBold = exports.toggleBlockQuote = exports.tab = exports.submit = exports.splitListItem = exports.splitCodeBlock = exports.space = exports.shiftTab = exports.shiftEnter = exports.shiftBackspace = exports.setNormalText = exports.redo = exports.previousCell = exports.pastePlainText = exports.paste = exports.outdentList = exports.outdent = exports.openHelp = exports.nextCell = exports.navToFloatingToolbar = exports.navToEditorToolbar = exports.moveUp = exports.moveRight = exports.moveLeft = exports.moveDown = void 0;
@@ -100,6 +106,7 @@ var _react2 = require("@emotion/react");
100
106
  var _colors = require("@atlaskit/theme/colors");
101
107
  var _utils = require("../utils");
102
108
  var _consts = require("./consts");
109
+ var _keymap = require("./keymap");
103
110
  var _templateObject;
104
111
  /** @jsx jsx */
105
112
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -239,7 +246,7 @@ var arrowKeysMap = {
239
246
  ARROWUP: "\u2191",
240
247
  ARROWDOWN: "\u2193"
241
248
  };
242
- var tooltipShortcutStyle = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n border-radius: 2px;\n background-color: ", ";\n padding: 0 2px;\n\n /* TODO: fix in develop: https://atlassian.slack.com/archives/CFG3PSQ9E/p1647395052443259?thread_ts=1647394572.556029&cid=CFG3PSQ9E */\n /* stylelint-disable-next-line */\n label: tooltip-shortcut;\n"])), "var(--ds-background-inverse-subtle, ".concat(_colors.N400, ")"));
249
+ var tooltipShortcutStyle = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n border-radius: 2px;\n background-color: ", ";\n padding: 0 ", ";\n\n /* TODO: fix in develop: https://atlassian.slack.com/archives/CFG3PSQ9E/p1647395052443259?thread_ts=1647394572.556029&cid=CFG3PSQ9E */\n /* stylelint-disable-next-line */\n label: tooltip-shortcut;\n"])), "var(--ds-background-inverse-subtle, ".concat(_colors.N400, ")"), "var(--ds-space-025, 2px)");
243
250
  /* eslint-enable @atlaskit/design-system/ensure-design-token-usage */
244
251
 
245
252
  function formatShortcut(keymap) {
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.keymap = keymap;
7
+ var _w3cKeyname = require("w3c-keyname");
8
+ var _keymap = require("@atlaskit/editor-prosemirror/keymap");
9
+ var _safePlugin = require("../safe-plugin");
10
+ /**
11
+ * A workaround for mostly Cyrillic but should have a positive affect
12
+ * on other languages / layouts. Attempts a similar approach to OS X.
13
+ * @see ED-7310
14
+ * @see https://github.com/ProseMirror/prosemirror/issues/957
15
+ * @param bindings
16
+ */
17
+ function keymap(bindings) {
18
+ return new _safePlugin.SafePlugin({
19
+ props: {
20
+ handleKeyDown: function handleKeyDown(view, event) {
21
+ var name = (0, _w3cKeyname.keyName)(event);
22
+ var keyboardEvent = event;
23
+ if (event.ctrlKey && name.length === 1 &&
24
+ // Check the unicode of the character to
25
+ // assert that its not an ASCII character.
26
+ // These are characters outside Latin's range.
27
+ /[^\u0000-\u007f]/.test(name)) {
28
+ keyboardEvent = new KeyboardEvent('keydown', {
29
+ key: _w3cKeyname.base[event.keyCode],
30
+ code: event.code,
31
+ ctrlKey: true
32
+ });
33
+ }
34
+ return (0, _keymap.keydownHandler)(bindings)(view, keyboardEvent);
35
+ }
36
+ }
37
+ });
38
+ }
@@ -16,7 +16,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
16
16
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
17
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
18
18
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
19
- var packageVersion = "74.32.1";
19
+ var packageVersion = "74.34.0";
20
20
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
21
21
  // Remove URL as it has UGC
22
22
  // TODO: Sanitise the URL instead of just removing it
@@ -7,9 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.richMediaClassName = exports.mediaSingleSharedStyle = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _react = require("@emotion/react");
10
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
11
  var _templateObject;
11
12
  var richMediaClassName = 'rich-media-item';
12
13
  exports.richMediaClassName = richMediaClassName;
13
14
  var wrappedMediaBreakoutPoint = 410;
14
- var mediaSingleSharedStyle = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n li .", " {\n margin: 0;\n }\n\n /* Hack for chrome to fix media single position\n inside a list when media is the first child */\n &.ua-chrome li > .mediaSingleView-content-wrap::before {\n content: '';\n display: block;\n height: 0;\n }\n\n &.ua-firefox {\n .mediaSingleView-content-wrap {\n user-select: none;\n }\n\n .captionView-content-wrap {\n user-select: text;\n }\n }\n\n .mediaSingleView-content-wrap[layout='center'] {\n clear: both;\n }\n\n table .", " {\n margin-top: 12px;\n margin-bottom: 12px;\n clear: both;\n\n &.image-wrap-left,\n &.image-wrap-right {\n clear: none;\n\n &:first-child {\n margin-top: 12px;\n }\n }\n }\n\n .", ".image-wrap-right\n + .", ".image-wrap-left {\n clear: both;\n }\n\n .", ".image-wrap-left\n + .", ".image-wrap-right,\n .", ".image-wrap-right\n + .", ".image-wrap-left,\n .", ".image-wrap-left\n + .", ".image-wrap-left,\n .", ".image-wrap-right\n + .", ".image-wrap-right {\n margin-right: 0;\n margin-left: 0;\n }\n\n @media all and (max-width: ", "px) {\n div.mediaSingleView-content-wrap[layout='wrap-left'],\n div.mediaSingleView-content-wrap[data-layout='wrap-left'],\n div.mediaSingleView-content-wrap[layout='wrap-right'],\n div.mediaSingleView-content-wrap[data-layout='wrap-right'] {\n float: none;\n overflow: auto;\n margin: 12px 0;\n }\n }\n"])), richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, wrappedMediaBreakoutPoint);
15
+ var mediaSingleSharedStyle = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n li .", " {\n margin: 0;\n }\n\n /* Hack for chrome to fix media single position\n inside a list when media is the first child */\n &.ua-chrome li > .mediaSingleView-content-wrap::before {\n content: '';\n display: block;\n height: 0;\n }\n\n &.ua-firefox {\n .mediaSingleView-content-wrap {\n user-select: none;\n }\n\n .captionView-content-wrap {\n user-select: text;\n }\n }\n\n .mediaSingleView-content-wrap[layout='center'] {\n clear: both;\n }\n\n table .", " {\n margin-top: ", ";\n margin-bottom: ", ";\n clear: both;\n\n &.image-wrap-left,\n &.image-wrap-right {\n clear: none;\n\n &:first-child {\n margin-top: ", ";\n }\n }\n }\n\n .", ".image-wrap-right\n + .", ".image-wrap-left {\n clear: both;\n }\n\n .", ".image-wrap-left\n + .", ".image-wrap-right,\n .", ".image-wrap-right\n + .", ".image-wrap-left,\n .", ".image-wrap-left\n + .", ".image-wrap-left,\n .", ".image-wrap-right\n + .", ".image-wrap-right {\n margin-right: 0;\n margin-left: 0;\n }\n\n ", "\n"])), richMediaClassName, richMediaClassName, "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)", richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, richMediaClassName, !(0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.extended-resize-experience') && "@media all and (max-width: ".concat(wrappedMediaBreakoutPoint, "px) {\n div.mediaSingleView-content-wrap[layout='wrap-left'],\n div.mediaSingleView-content-wrap[data-layout='wrap-left'],\n div.mediaSingleView-content-wrap[layout='wrap-right'],\n div.mediaSingleView-content-wrap[data-layout='wrap-right'] {\n float: none;\n overflow: auto;\n margin: 12px 0;\n }\n }"));
15
16
  exports.mediaSingleSharedStyle = mediaSingleSharedStyle;
@@ -24,7 +24,7 @@ var _templateObject, _templateObject2, _templateObject3;
24
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
25
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** @jsx jsx */
26
26
  var packageName = "@atlaskit/editor-common";
27
- var packageVersion = "74.32.1";
27
+ var packageVersion = "74.34.0";
28
28
  var halfFocusRing = 1;
29
29
  var dropOffset = '0, 8';
30
30
  var DropList = /*#__PURE__*/function (_Component) {
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.IMAGE_AND_BORDER_ADJUSTMENT = exports.DEFAULT_IMAGE_WIDTH = exports.DEFAULT_IMAGE_HEIGHT = void 0;
8
8
  exports.default = MediaSingle;
9
- exports.shouldAddDefaultWrappedWidth = void 0;
10
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
10
  var _react = _interopRequireDefault(require("react"));
12
11
  var _react2 = require("@emotion/react");
@@ -14,7 +13,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
14
13
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
15
14
  var _constants = require("../../media-single/constants");
16
15
  var _utils = require("../../media-single/utils");
17
- var _grid = require("./grid");
16
+ var _richMediaUtils = require("../../utils/rich-media-utils");
18
17
  var _styled = require("./styled");
19
18
  /** @jsx jsx */
20
19
 
@@ -29,10 +28,6 @@ var DEFAULT_IMAGE_HEIGHT = 200;
29
28
  exports.DEFAULT_IMAGE_HEIGHT = DEFAULT_IMAGE_HEIGHT;
30
29
  var IMAGE_AND_BORDER_ADJUSTMENT = 2;
31
30
  exports.IMAGE_AND_BORDER_ADJUSTMENT = IMAGE_AND_BORDER_ADJUSTMENT;
32
- var shouldAddDefaultWrappedWidth = function shouldAddDefaultWrappedWidth(layout, width, lineLength) {
33
- return _grid.wrappedLayouts.indexOf(layout) > -1 && lineLength && width && width > 0.5 * lineLength;
34
- };
35
- exports.shouldAddDefaultWrappedWidth = shouldAddDefaultWrappedWidth;
36
31
  function MediaSingle(_ref) {
37
32
  var layout = _ref.layout,
38
33
  width = _ref.width,
@@ -55,7 +50,7 @@ function MediaSingle(_ref) {
55
50
  var isPixelWidth = (size === null || size === void 0 ? void 0 : size.widthType) === 'pixel';
56
51
  var mediaSingleWidth = (size === null || size === void 0 ? void 0 : size.width) || pctWidth;
57
52
  var children = _react.default.Children.toArray(propsChildren);
58
- if (!mediaSingleWidth && shouldAddDefaultWrappedWidth(layout, width, editorWidth)) {
53
+ if (!mediaSingleWidth && (0, _richMediaUtils.shouldAddDefaultWrappedWidth)(layout, width, editorWidth)) {
59
54
  // if width is not available, set to half of editor width
60
55
  mediaSingleWidth = isPixelWidth ? editorWidth / 2 : 50;
61
56
  }
@@ -13,6 +13,7 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
13
13
  var _react = _interopRequireDefault(require("react"));
14
14
  var _react2 = require("@emotion/react");
15
15
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
16
+ var _utils = require("../../utils");
16
17
  var _breakout = require("../../utils/breakout");
17
18
  var _excluded = ["children"];
18
19
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
@@ -87,6 +88,24 @@ function calcMaxWidth(layout, containerWidth) {
87
88
  return '100%';
88
89
  }
89
90
  }
91
+ var getEffectiveFullWidth = function getEffectiveFullWidth(containerWidth, fullWidthMode) {
92
+ if (fullWidthMode) {
93
+ return '100%';
94
+ }
95
+ // There is always padding for renderer, so we don't need padding for it
96
+ var fullWidthPadding = _editorSharedStyles.akEditorGutterPadding * 2;
97
+ return "".concat(Math.min(containerWidth - fullWidthPadding, _editorSharedStyles.akEditorFullWidthLayoutWidth), "px");
98
+ };
99
+ var calcMaxWidthWhenResizing = function calcMaxWidthWhenResizing(containerWidth, fullWidthMode, isNestedNode) {
100
+ if (isNestedNode) {
101
+ return '100%';
102
+ }
103
+ // non-nested node can resize up to full width
104
+ return getEffectiveFullWidth(containerWidth, fullWidthMode);
105
+ };
106
+ var calcMaxWidthWhenNotResizing = function calcMaxWidthWhenNotResizing(containerWidth, mediaSingleWidth) {
107
+ return "".concat(Math.min(mediaSingleWidth, containerWidth - _editorSharedStyles.akEditorGutterPadding * 2), "px");
108
+ };
90
109
  function calcMargin(layout) {
91
110
  switch (layout) {
92
111
  case 'wrap-right':
@@ -119,8 +138,11 @@ var MediaSingleDimensionHelper = function MediaSingleDimensionHelper(_ref) {
119
138
  layout = _ref.layout,
120
139
  pctWidth = _ref.pctWidth,
121
140
  mediaSingleWidth = _ref.mediaSingleWidth,
122
- width = _ref.width;
123
- return (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n /* For nested rich media items, set max-width to 100% */\n tr &,\n [data-layout-column] &,\n [data-node-type='expand'] & {\n max-width: 100%;\n }\n\n width: ", ";\n ", "\n max-width: ", ";\n float: ", ";\n margin: ", ";\n ", ";\n\n &:not(.is-resizing) {\n transition: width 100ms ease-in;\n }\n"])), mediaSingleWidth || pctWidth ? calcResizedWidth(layout, width || 0, containerWidth) : calcLegacyWidth(layout, width || 0, containerWidth, fullWidthMode, isResized), layout === 'full-width' && (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n min-width: 100%;\n "]))), calcMaxWidth(layout, containerWidth), float(layout), calcMargin(layout), isImageAligned(layout));
141
+ width = _ref.width,
142
+ isExtendedResizeExperienceOn = _ref.isExtendedResizeExperienceOn,
143
+ _ref$isNestedNode = _ref.isNestedNode,
144
+ isNestedNode = _ref$isNestedNode === void 0 ? false : _ref$isNestedNode;
145
+ return (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n /* For nested rich media items, set max-width to 100% */\n tr &,\n [data-layout-column] &,\n [data-node-type='expand'] & {\n max-width: 100%;\n }\n\n width: ", ";\n ", "\n max-width: ", ";\n &[class*='is-resizing'] {\n ", "\n }\n\n /* Handles responsiveness of non-nested, not-resizing nodes in editor */\n &[class*='not-resizing'] {\n ", "\n }\n\n float: ", ";\n margin: ", ";\n ", ";\n\n &:not(.is-resizing) {\n transition: width 100ms ease-in;\n }\n"])), mediaSingleWidth || pctWidth ? calcResizedWidth(layout, width || 0, containerWidth) : calcLegacyWidth(layout, width || 0, containerWidth, fullWidthMode, isResized), layout === 'full-width' && (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n min-width: 100%;\n "]))), calcMaxWidth(layout, containerWidth), isExtendedResizeExperienceOn && "max-width: ".concat(calcMaxWidthWhenResizing(containerWidth, fullWidthMode, isNestedNode), ";\n\n ").concat(_utils.nonWrappedLayouts.includes(layout) && "margin-left: 50%;\n transform: translateX(-50%);", "\n\n .new-file-experience-wrapper {\n box-shadow: none;\n }"), !isNestedNode && "max-width: ".concat(layout !== 'full-width' && mediaSingleWidth && calcMaxWidthWhenNotResizing(containerWidth, mediaSingleWidth), ";\n\n ").concat(_utils.nonWrappedLayouts.includes(layout) && "margin-left: 50%;\n transform: translateX(-50%);", "\n\n // override min-width to counteract max-width set in old experience\n ").concat(layout === 'full-width' && "min-width: ".concat(getEffectiveFullWidth(containerWidth, fullWidthMode), " !important;"), ";"), float(layout), calcMargin(layout), isImageAligned(layout));
124
146
  };
125
147
  exports.MediaSingleDimensionHelper = MediaSingleDimensionHelper;
126
148
  var RenderFallbackContainer = function RenderFallbackContainer(_ref2) {
@@ -347,12 +347,6 @@ Object.defineProperty(exports, "sharedExpandStyles", {
347
347
  return _Expand.sharedExpandStyles;
348
348
  }
349
349
  });
350
- Object.defineProperty(exports, "shouldAddDefaultWrappedWidth", {
351
- enumerable: true,
352
- get: function get() {
353
- return _MediaSingle.shouldAddDefaultWrappedWidth;
354
- }
355
- });
356
350
  Object.defineProperty(exports, "snapTo", {
357
351
  enumerable: true,
358
352
  get: function get() {
@@ -4,11 +4,21 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.walkPrevNode = exports.walkNextNode = exports.isEmptySelectionAtStart = exports.isEmptySelectionAtEnd = exports.insertContentDeleteRange = exports.filterCommand = exports.deleteEmptyParagraphAndMoveBlockUp = void 0;
7
+ exports.atTheBeginningOfDoc = atTheBeginningOfDoc;
8
+ exports.atTheEndOfDoc = atTheEndOfDoc;
9
+ exports.createNewParagraphBelow = exports.createNewParagraphAbove = void 0;
10
+ exports.createParagraphNear = createParagraphNear;
11
+ exports.insertContentDeleteRange = exports.filterCommand = exports.filter = exports.deleteEmptyParagraphAndMoveBlockUp = void 0;
12
+ exports.insertNewLine = insertNewLine;
13
+ exports.walkPrevNode = exports.walkNextNode = exports.isEmptySelectionAtStart = exports.isEmptySelectionAtEnd = exports.insertNewLineWithAnalytics = void 0;
8
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+ var _model = require("@atlaskit/editor-prosemirror/model");
9
16
  var _state = require("@atlaskit/editor-prosemirror/state");
17
+ var _analytics = require("../analytics");
18
+ var _editorAnalytics = require("../editor-analytics");
10
19
  var _selection = require("../selection");
11
20
  var _editorCoreUtils = require("./editor-core-utils");
21
+ var _nodes = require("./nodes");
12
22
  var filter = function filter(predicates, cmd) {
13
23
  return function (state, dispatch, view) {
14
24
  if (!Array.isArray(predicates)) {
@@ -29,7 +39,7 @@ var filter = function filter(predicates, cmd) {
29
39
  *
30
40
  * @param $startPos Position to start walking from.
31
41
  */
32
- exports.filterCommand = filter;
42
+ exports.filterCommand = exports.filter = filter;
33
43
  var walkNextNode = function walkNextNode($startPos) {
34
44
  var $pos = $startPos;
35
45
 
@@ -63,6 +73,162 @@ var walkPrevNode = function walkPrevNode($startPos) {
63
73
  foundNode: $pos.pos > 0
64
74
  };
65
75
  };
76
+ exports.walkPrevNode = walkPrevNode;
77
+ function insertNewLine() {
78
+ return function (state, dispatch) {
79
+ var $from = state.selection.$from;
80
+ var parent = $from.parent;
81
+ var hardBreak = state.schema.nodes.hardBreak;
82
+ if (hardBreak) {
83
+ var hardBreakNode = hardBreak.createChecked();
84
+ if (parent && parent.type.validContent(_model.Fragment.from(hardBreakNode))) {
85
+ if (dispatch) {
86
+ dispatch(state.tr.replaceSelectionWith(hardBreakNode, false));
87
+ }
88
+ return true;
89
+ }
90
+ }
91
+ if (state.selection instanceof _state.TextSelection) {
92
+ if (dispatch) {
93
+ dispatch(state.tr.insertText('\n'));
94
+ }
95
+ return true;
96
+ }
97
+ return false;
98
+ };
99
+ }
100
+ var insertNewLineWithAnalytics = function insertNewLineWithAnalytics(editorAnalyticsAPI) {
101
+ return (0, _editorAnalytics.withAnalytics)(editorAnalyticsAPI, {
102
+ action: _analytics.ACTION.INSERTED,
103
+ actionSubject: _analytics.ACTION_SUBJECT.TEXT,
104
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.LINE_BREAK,
105
+ eventType: _analytics.EVENT_TYPE.TRACK
106
+ })(insertNewLine());
107
+ };
108
+ exports.insertNewLineWithAnalytics = insertNewLineWithAnalytics;
109
+ var createNewParagraphAbove = function createNewParagraphAbove(state, dispatch) {
110
+ var append = false;
111
+ if (!canMoveUp(state) && canCreateParagraphNear(state)) {
112
+ createParagraphNear(append)(state, dispatch);
113
+ return true;
114
+ }
115
+ return false;
116
+ };
117
+ exports.createNewParagraphAbove = createNewParagraphAbove;
118
+ var createNewParagraphBelow = function createNewParagraphBelow(state, dispatch) {
119
+ var append = true;
120
+ if (!canMoveDown(state) && canCreateParagraphNear(state)) {
121
+ createParagraphNear(append)(state, dispatch);
122
+ return true;
123
+ }
124
+ return false;
125
+ };
126
+ exports.createNewParagraphBelow = createNewParagraphBelow;
127
+ function canCreateParagraphNear(state) {
128
+ var $from = state.selection.$from;
129
+ var node = $from.node($from.depth);
130
+ var insideCodeBlock = !!node && node.type === state.schema.nodes.codeBlock;
131
+ var isNodeSelection = state.selection instanceof _state.NodeSelection;
132
+ return $from.depth > 1 || isNodeSelection || insideCodeBlock;
133
+ }
134
+ function createParagraphNear() {
135
+ var append = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
136
+ return function (state, dispatch) {
137
+ var paragraph = state.schema.nodes.paragraph;
138
+ if (!paragraph) {
139
+ return false;
140
+ }
141
+ var insertPos;
142
+ if (state.selection instanceof _state.TextSelection) {
143
+ if (topLevelNodeIsEmptyTextBlock(state)) {
144
+ return false;
145
+ }
146
+ insertPos = getInsertPosFromTextBlock(state, append);
147
+ } else {
148
+ insertPos = getInsertPosFromNonTextBlock(state, append);
149
+ }
150
+ var tr = state.tr.insert(insertPos, paragraph.createAndFill());
151
+ tr.setSelection(_state.TextSelection.create(tr.doc, insertPos + 1));
152
+ if (dispatch) {
153
+ dispatch(tr);
154
+ }
155
+ return true;
156
+ };
157
+ }
158
+ function getInsertPosFromTextBlock(state, append) {
159
+ var _state$selection = state.selection,
160
+ $from = _state$selection.$from,
161
+ $to = _state$selection.$to;
162
+ var pos;
163
+ if (!append) {
164
+ pos = $from.start(0);
165
+ } else {
166
+ pos = $to.end(0);
167
+ }
168
+ return pos;
169
+ }
170
+ function getInsertPosFromNonTextBlock(state, append) {
171
+ var _state$selection2 = state.selection,
172
+ $from = _state$selection2.$from,
173
+ $to = _state$selection2.$to;
174
+ var nodeAtSelection = state.selection instanceof _state.NodeSelection && state.doc.nodeAt(state.selection.$anchor.pos);
175
+ var isMediaSelection = nodeAtSelection && nodeAtSelection.type.name === 'mediaGroup';
176
+ var pos;
177
+ if (!append) {
178
+ // The start position is different with text block because it starts from 0
179
+ pos = $from.start($from.depth);
180
+ // The depth is different with text block because it starts from 0
181
+ pos = $from.depth > 0 && !isMediaSelection ? pos - 1 : pos;
182
+ } else {
183
+ pos = $to.end($to.depth);
184
+ pos = $to.depth > 0 && !isMediaSelection ? pos + 1 : pos;
185
+ }
186
+ return pos;
187
+ }
188
+ function topLevelNodeIsEmptyTextBlock(state) {
189
+ var topLevelNode = state.selection.$from.node(1);
190
+ return topLevelNode.isTextblock && topLevelNode.type !== state.schema.nodes.codeBlock && topLevelNode.nodeSize === 2;
191
+ }
192
+ function canMoveUp(state) {
193
+ var selection = state.selection;
194
+ /**
195
+ * If there's a media element on the selection it will use a gap cursor to move
196
+ */
197
+ if (selection instanceof _state.NodeSelection && (0, _nodes.isMediaNode)(selection.node)) {
198
+ return true;
199
+ }
200
+ if (selection instanceof _state.TextSelection) {
201
+ if (!selection.empty) {
202
+ return true;
203
+ }
204
+ }
205
+ return !atTheBeginningOfDoc(state);
206
+ }
207
+ function canMoveDown(state) {
208
+ var selection = state.selection;
209
+
210
+ /**
211
+ * If there's a media element on the selection it will use a gap cursor to move
212
+ */
213
+ if (selection instanceof _state.NodeSelection && (0, _nodes.isMediaNode)(selection.node)) {
214
+ return true;
215
+ }
216
+ if (selection instanceof _state.TextSelection) {
217
+ if (!selection.empty) {
218
+ return true;
219
+ }
220
+ }
221
+ return !atTheEndOfDoc(state);
222
+ }
223
+ function atTheEndOfDoc(state) {
224
+ var selection = state.selection,
225
+ doc = state.doc;
226
+ return doc.nodeSize - selection.$to.pos - 2 === selection.$to.depth;
227
+ }
228
+ function atTheBeginningOfDoc(state) {
229
+ var selection = state.selection;
230
+ return selection.$from.pos === selection.$from.depth;
231
+ }
66
232
 
67
233
  /**
68
234
  * If the selection is empty, is inside a paragraph node and `canNextNodeMoveUp` is true then delete current paragraph
@@ -71,15 +237,14 @@ var walkPrevNode = function walkPrevNode($startPos) {
71
237
  * @param canNextNodeMoveUp check if node directly after the selection is able to be brought up to selection
72
238
  * @returns PM Command
73
239
  */
74
- exports.walkPrevNode = walkPrevNode;
75
240
  var deleteEmptyParagraphAndMoveBlockUp = function deleteEmptyParagraphAndMoveBlockUp(canNextNodeMoveUp) {
76
241
  return function (state, dispatch, view) {
77
- var _state$selection = state.selection,
78
- _state$selection$$fro = _state$selection.$from,
79
- pos = _state$selection$$fro.pos,
80
- parent = _state$selection$$fro.parent,
81
- $head = _state$selection.$head,
82
- empty = _state$selection.empty,
242
+ var _state$selection3 = state.selection,
243
+ _state$selection3$$fr = _state$selection3.$from,
244
+ pos = _state$selection3$$fr.pos,
245
+ parent = _state$selection3$$fr.parent,
246
+ $head = _state$selection3.$head,
247
+ empty = _state$selection3.empty,
83
248
  tr = state.tr,
84
249
  doc = state.doc;
85
250
  var _walkNextNode = walkNextNode($head),
@@ -113,16 +278,16 @@ var insertContentDeleteRange = function insertContentDeleteRange(tr, getSelectio
113
278
  };
114
279
  exports.insertContentDeleteRange = insertContentDeleteRange;
115
280
  var isEmptySelectionAtStart = function isEmptySelectionAtStart(state) {
116
- var _state$selection2 = state.selection,
117
- empty = _state$selection2.empty,
118
- $from = _state$selection2.$from;
281
+ var _state$selection4 = state.selection,
282
+ empty = _state$selection4.empty,
283
+ $from = _state$selection4.$from;
119
284
  return empty && ($from.parentOffset === 0 || state.selection instanceof _selection.GapCursorSelection);
120
285
  };
121
286
  exports.isEmptySelectionAtStart = isEmptySelectionAtStart;
122
287
  var isEmptySelectionAtEnd = function isEmptySelectionAtEnd(state) {
123
- var _state$selection3 = state.selection,
124
- empty = _state$selection3.empty,
125
- $from = _state$selection3.$from;
288
+ var _state$selection5 = state.selection,
289
+ empty = _state$selection5.empty,
290
+ $from = _state$selection5.$from;
126
291
  return empty && ($from.end() === $from.pos || state.selection instanceof _selection.GapCursorSelection);
127
292
  };
128
293
  exports.isEmptySelectionAtEnd = isEmptySelectionAtEnd;