@atlaskit/editor-plugin-layout 11.0.3 → 11.1.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.
- package/CHANGELOG.md +20 -0
- package/dist/cjs/layoutPlugin.js +22 -6
- package/dist/cjs/nodeviews/index.js +49 -1
- package/dist/cjs/pm-plugins/actions.js +30 -10
- package/dist/cjs/pm-plugins/keymap.js +31 -0
- package/dist/cjs/pm-plugins/main.js +90 -21
- package/dist/cjs/pm-plugins/resizing.js +29 -4
- package/dist/cjs/pm-plugins/utils/layout-column-selection.js +36 -12
- package/dist/cjs/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +25 -5
- package/dist/cjs/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +7 -1
- package/dist/cjs/ui/LayoutColumnMenu/index.js +51 -4
- package/dist/cjs/ui/LayoutSSRReactContextsProvider.js +34 -0
- package/dist/cjs/ui/global-styles.js +11 -1
- package/dist/es2019/layoutPlugin.js +21 -7
- package/dist/es2019/nodeviews/index.js +49 -1
- package/dist/es2019/pm-plugins/actions.js +26 -11
- package/dist/es2019/pm-plugins/keymap.js +26 -0
- package/dist/es2019/pm-plugins/main.js +97 -25
- package/dist/es2019/pm-plugins/resizing.js +37 -7
- package/dist/es2019/pm-plugins/utils/layout-column-selection.js +33 -8
- package/dist/es2019/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +26 -6
- package/dist/es2019/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +8 -2
- package/dist/es2019/ui/LayoutColumnMenu/index.js +52 -5
- package/dist/es2019/ui/LayoutSSRReactContextsProvider.js +28 -0
- package/dist/es2019/ui/global-styles.js +9 -1
- package/dist/esm/layoutPlugin.js +23 -7
- package/dist/esm/nodeviews/index.js +49 -1
- package/dist/esm/pm-plugins/actions.js +30 -10
- package/dist/esm/pm-plugins/keymap.js +25 -0
- package/dist/esm/pm-plugins/main.js +90 -21
- package/dist/esm/pm-plugins/resizing.js +29 -4
- package/dist/esm/pm-plugins/utils/layout-column-selection.js +35 -11
- package/dist/esm/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +26 -6
- package/dist/esm/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +8 -2
- package/dist/esm/ui/LayoutColumnMenu/index.js +52 -5
- package/dist/esm/ui/LayoutSSRReactContextsProvider.js +27 -0
- package/dist/esm/ui/global-styles.js +11 -1
- package/dist/types/layoutPluginType.d.ts +5 -7
- package/dist/types/nodeviews/index.d.ts +5 -0
- package/dist/types/pm-plugins/actions.d.ts +8 -4
- package/dist/types/pm-plugins/keymap.d.ts +10 -0
- package/dist/types/pm-plugins/resizing.d.ts +2 -1
- package/dist/types/pm-plugins/types.d.ts +2 -0
- package/dist/types/pm-plugins/utils/layout-column-selection.d.ts +1 -0
- package/dist/types/ui/LayoutSSRReactContextsProvider.d.ts +19 -0
- package/dist/types-ts4.5/layoutPluginType.d.ts +5 -7
- package/dist/types-ts4.5/nodeviews/index.d.ts +5 -0
- package/dist/types-ts4.5/pm-plugins/actions.d.ts +8 -4
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +10 -0
- package/dist/types-ts4.5/pm-plugins/resizing.d.ts +2 -1
- package/dist/types-ts4.5/pm-plugins/types.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/utils/layout-column-selection.d.ts +1 -0
- package/dist/types-ts4.5/ui/LayoutSSRReactContextsProvider.d.ts +19 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-layout
|
|
2
2
|
|
|
3
|
+
## 11.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`5182f0ffac22f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5182f0ffac22f) -
|
|
8
|
+
Add keyboard shortcuts and danger preview to layout column menu actions.
|
|
9
|
+
|
|
10
|
+
Fix keyboard navigation in the layout column menu.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
16
|
+
## 11.0.4
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [`1f5c61250d103`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1f5c61250d103) -
|
|
21
|
+
Updating layout plugin to support ssr streaming
|
|
22
|
+
|
|
3
23
|
## 11.0.3
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/cjs/layoutPlugin.js
CHANGED
|
@@ -19,6 +19,7 @@ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
|
19
19
|
var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
|
|
20
20
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
21
21
|
var _actions = require("./pm-plugins/actions");
|
|
22
|
+
var _keymap = _interopRequireDefault(require("./pm-plugins/keymap"));
|
|
22
23
|
var _main = _interopRequireDefault(require("./pm-plugins/main"));
|
|
23
24
|
var _pluginKey = require("./pm-plugins/plugin-key");
|
|
24
25
|
var _resizing = _interopRequireDefault(require("./pm-plugins/resizing"));
|
|
@@ -57,7 +58,7 @@ var selectIntoLayoutSection = exports.selectIntoLayoutSection = function selectI
|
|
|
57
58
|
return tr;
|
|
58
59
|
};
|
|
59
60
|
var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
60
|
-
var _api$analytics2
|
|
61
|
+
var _api$analytics2;
|
|
61
62
|
var _ref$config = _ref.config,
|
|
62
63
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
63
64
|
api = _ref.api;
|
|
@@ -109,13 +110,24 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
109
110
|
return (0, _main.default)(options, api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions);
|
|
110
111
|
}
|
|
111
112
|
}];
|
|
113
|
+
if ((0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
114
|
+
plugins.push({
|
|
115
|
+
name: 'layoutKeymap',
|
|
116
|
+
plugin: function plugin() {
|
|
117
|
+
return (0, _keymap.default)({
|
|
118
|
+
api: api
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
112
123
|
if ((options.editorAppearance === 'full-page' || options.editorAppearance === 'full-width' || options.editorAppearance === 'max' && (0, _experiments.editorExperiment)('platform_editor_layout_column_resize_handle', true)) && api && (0, _experiments.editorExperiment)('advanced_layouts', true)) {
|
|
113
124
|
plugins.push({
|
|
114
125
|
name: 'layoutResizing',
|
|
115
126
|
plugin: function plugin(_ref2) {
|
|
116
127
|
var portalProviderAPI = _ref2.portalProviderAPI,
|
|
117
|
-
eventDispatcher = _ref2.eventDispatcher
|
|
118
|
-
|
|
128
|
+
eventDispatcher = _ref2.eventDispatcher,
|
|
129
|
+
getIntl = _ref2.getIntl;
|
|
130
|
+
return (0, _resizing.default)(options, api, portalProviderAPI, eventDispatcher, getIntl());
|
|
119
131
|
}
|
|
120
132
|
});
|
|
121
133
|
}
|
|
@@ -378,15 +390,19 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
378
390
|
return _pluginKey.pluginKey.getState(editorState);
|
|
379
391
|
},
|
|
380
392
|
commands: {
|
|
381
|
-
deleteLayoutColumn:
|
|
393
|
+
deleteLayoutColumn: function deleteLayoutColumn(inputMethod) {
|
|
394
|
+
var _api$analytics5;
|
|
395
|
+
return (0, _actions.deleteLayoutColumn)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, inputMethod);
|
|
396
|
+
},
|
|
382
397
|
distributeLayoutColumns: function distributeLayoutColumns(options) {
|
|
383
398
|
var _api$analytics6;
|
|
384
399
|
return (0, _actions.distributeLayoutColumns)(api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions, api)(options);
|
|
385
400
|
},
|
|
386
|
-
insertLayoutColumn: function insertLayoutColumn(side) {
|
|
401
|
+
insertLayoutColumn: function insertLayoutColumn(side, inputMethod) {
|
|
387
402
|
var _api$analytics7;
|
|
388
|
-
return (0, _actions.insertLayoutColumn)(side, api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api);
|
|
403
|
+
return (0, _actions.insertLayoutColumn)(side, api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api, inputMethod);
|
|
389
404
|
},
|
|
405
|
+
setLayoutColumnDangerPreview: _actions.setLayoutColumnDangerPreview,
|
|
390
406
|
setLayoutColumnValign: function setLayoutColumnValign(valign) {
|
|
391
407
|
var _api$analytics8;
|
|
392
408
|
return (0, _actions.setLayoutColumnValign)(valign, api === null || api === void 0 || (_api$analytics8 = api.analytics) === null || _api$analytics8 === void 0 ? void 0 : _api$analytics8.actions, api);
|
|
@@ -13,8 +13,9 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
13
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
var _react = _interopRequireWildcard(require("react"));
|
|
16
|
+
var _coreUtils = require("@atlaskit/editor-common/core-utils");
|
|
16
17
|
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
17
|
-
var _reactNodeView =
|
|
18
|
+
var _reactNodeView = _interopRequireWildcard(require("@atlaskit/editor-common/react-node-view"));
|
|
18
19
|
var _resizer = require("@atlaskit/editor-common/resizer");
|
|
19
20
|
var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
|
|
20
21
|
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
@@ -22,6 +23,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
22
23
|
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
23
24
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
24
25
|
var _utils = require("../pm-plugins/utils");
|
|
26
|
+
var _LayoutSSRReactContextsProvider = require("../ui/LayoutSSRReactContextsProvider");
|
|
25
27
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
26
28
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
27
29
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
@@ -140,6 +142,7 @@ var LayoutSectionView = exports.LayoutSectionView = /*#__PURE__*/function (_Reac
|
|
|
140
142
|
* @param props.eventDispatcher
|
|
141
143
|
* @param props.pluginInjectionApi
|
|
142
144
|
* @param props.options
|
|
145
|
+
* @param props.intl
|
|
143
146
|
* @example
|
|
144
147
|
*/
|
|
145
148
|
function LayoutSectionView(props) {
|
|
@@ -148,6 +151,7 @@ var LayoutSectionView = exports.LayoutSectionView = /*#__PURE__*/function (_Reac
|
|
|
148
151
|
_this = _callSuper(this, LayoutSectionView, [props.node, props.view, props.getPos, props.portalProviderAPI, props.eventDispatcher, props]);
|
|
149
152
|
_this.isEmpty = isEmptyLayout(_this.node);
|
|
150
153
|
_this.options = props.options;
|
|
154
|
+
_this.intl = props.intl;
|
|
151
155
|
return _this;
|
|
152
156
|
}
|
|
153
157
|
|
|
@@ -160,6 +164,13 @@ var LayoutSectionView = exports.LayoutSectionView = /*#__PURE__*/function (_Reac
|
|
|
160
164
|
return (0, _createClass2.default)(LayoutSectionView, [{
|
|
161
165
|
key: "getContentDOM",
|
|
162
166
|
value: function getContentDOM() {
|
|
167
|
+
// Build the layout DOM via the schema's toDOM spec. This is the same
|
|
168
|
+
// path used in both CSR and SSR — the only SSR-specific concern is
|
|
169
|
+
// re-attaching `contentDOM` (= the `[data-layout-section]` element)
|
|
170
|
+
// after the portal's renderToStaticMarkup + innerHTML write detaches
|
|
171
|
+
// it. We handle that by stamping `data-ssr-content-dom-ref` on the
|
|
172
|
+
// outer container so `ReactNodeView.init()` can find a re-attach
|
|
173
|
+
// target inside `domRef` after the portal write.
|
|
163
174
|
var _ref2 = _model.DOMSerializer.renderSpec(document, toDOM(this.node)),
|
|
164
175
|
container = _ref2.dom,
|
|
165
176
|
contentDOM = _ref2.contentDOM;
|
|
@@ -172,6 +183,20 @@ var LayoutSectionView = exports.LayoutSectionView = /*#__PURE__*/function (_Reac
|
|
|
172
183
|
if ((0, _platformFeatureFlags.fg)('platform_editor_adf_with_localid')) {
|
|
173
184
|
this.layoutDOM.setAttribute('data-local-id', this.node.attrs.localId);
|
|
174
185
|
}
|
|
186
|
+
|
|
187
|
+
// SSR streaming re-attach note:
|
|
188
|
+
// In SSR, `init()` appends `container` into `domRef`; the portal's
|
|
189
|
+
// renderToStaticMarkup + innerHTML write then wipes `domRef`,
|
|
190
|
+
// detaching the entire subtree (with PM-serialized children inside
|
|
191
|
+
// `[data-layout-section]`). React's `render()` emits a
|
|
192
|
+
// `<NodeViewContentHole/>` placeholder inside `domRef`; the SSR
|
|
193
|
+
// re-attach logic in `init()` finds it via `[data-ssr-content-dom-ref]`
|
|
194
|
+
// and calls `_handleRef`, which appends `contentDOMWrapper` (the
|
|
195
|
+
// detached `container`) back inside the placeholder. The end result
|
|
196
|
+
// is `domRef > NodeViewContentHole > layout-section-container >
|
|
197
|
+
// [data-layout-section] > [data-layout-column] children` — the
|
|
198
|
+
// layout DOM contract is preserved.
|
|
199
|
+
|
|
175
200
|
return {
|
|
176
201
|
dom: container,
|
|
177
202
|
contentDOM: contentDOM
|
|
@@ -206,6 +231,29 @@ var LayoutSectionView = exports.LayoutSectionView = /*#__PURE__*/function (_Reac
|
|
|
206
231
|
if (this.layoutDOM) {
|
|
207
232
|
this.layoutDOM.setAttribute('data-empty-layout', Boolean(this.isEmpty).toString());
|
|
208
233
|
}
|
|
234
|
+
|
|
235
|
+
// SSR streaming path: render only a `<NodeViewContentHole/>` placeholder
|
|
236
|
+
// so ReactNodeView.init()'s SSR re-attach logic can find the marker
|
|
237
|
+
// (`data-ssr-content-dom-ref`) and re-append the detached
|
|
238
|
+
// contentDOMWrapper — which is the FULL layout structure
|
|
239
|
+
// (`layout-section-container > [data-layout-section] > children`) built
|
|
240
|
+
// in `getContentDOM` via DOMSerializer.renderSpec. This avoids
|
|
241
|
+
// duplicating layout structure between getContentDOM and render(), which
|
|
242
|
+
// previously caused an extra wrapping div between `[data-layout-section]`
|
|
243
|
+
// and the `[data-layout-column]` children and broke the flex layout.
|
|
244
|
+
//
|
|
245
|
+
// The BreakoutResizer is intentionally omitted in SSR — it relies on
|
|
246
|
+
// browser-only APIs and contributes no useful static markup. The
|
|
247
|
+
// LayoutSSRReactContextsProvider wraps the placeholder to inject the
|
|
248
|
+
// editor's IntlShape, defending against any descendants that call
|
|
249
|
+
// `useIntl()` during renderToStaticMarkup.
|
|
250
|
+
if ((0, _coreUtils.isSSR)() && (0, _coreUtils.isSSRStreaming)()) {
|
|
251
|
+
return /*#__PURE__*/_react.default.createElement(_LayoutSSRReactContextsProvider.LayoutSSRReactContextsProvider, {
|
|
252
|
+
intl: this.intl
|
|
253
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNodeView.NodeViewContentHole, {
|
|
254
|
+
ref: forwardRef
|
|
255
|
+
}));
|
|
256
|
+
}
|
|
209
257
|
if ((0, _expValEquals.expValEquals)('platform_editor_breakout_resizing', 'isEnabled', true)) {
|
|
210
258
|
return null;
|
|
211
259
|
}
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.fixColumnStructure = exports.fixColumnSizes = exports.distributeLayoutColumns = exports.deleteLayoutColumn = exports.deleteActiveLayoutNode = exports.createMultiColumnLayoutSection = exports.createDefaultLayoutSection = exports.TWO_COL_LAYOUTS = exports.THREE_COL_LAYOUTS = exports.ONE_COL_LAYOUTS = exports.LAYOUT_COLUMN_INSERT_META = void 0;
|
|
8
8
|
exports.forceSectionToPresetLayout = forceSectionToPresetLayout;
|
|
9
9
|
exports.getEffectiveMaxLayoutColumns = getEffectiveMaxLayoutColumns;
|
|
10
|
-
exports.toggleLayoutColumnMenu = exports.setPresetLayout = exports.setLayoutColumnValign = exports.insertLayoutColumnsWithAnalytics = exports.insertLayoutColumns = exports.insertLayoutColumn = exports.getSelectedLayout = exports.getPresetLayout = void 0;
|
|
10
|
+
exports.toggleLayoutColumnMenu = exports.setPresetLayout = exports.setLayoutColumnValign = exports.setLayoutColumnDangerPreview = exports.insertLayoutColumnsWithAnalytics = exports.insertLayoutColumns = exports.insertLayoutColumn = exports.getSelectedLayout = exports.getPresetLayout = void 0;
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
12
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
13
|
var _editorAnalytics = require("@atlaskit/editor-common/editor-analytics");
|
|
@@ -581,12 +581,13 @@ function getEffectiveMaxLayoutColumns() {
|
|
|
581
581
|
return (0, _experiments.editorExperiment)('advanced_layouts', true) ? _consts.MAX_LAYOUT_COLUMNS : _consts.MAX_STANDARD_LAYOUT_COLUMNS;
|
|
582
582
|
}
|
|
583
583
|
var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAPI) {
|
|
584
|
+
var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
|
|
584
585
|
return function (_ref4) {
|
|
585
586
|
var tr = _ref4.tr;
|
|
586
587
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
587
588
|
return null;
|
|
588
589
|
}
|
|
589
|
-
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.
|
|
590
|
+
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getLayoutColumnsFromContentSelection)(tr.selection);
|
|
590
591
|
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length === 0) {
|
|
591
592
|
return null;
|
|
592
593
|
}
|
|
@@ -646,7 +647,7 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
|
|
|
646
647
|
attributes: {
|
|
647
648
|
columnCount: redistributedWidths.length,
|
|
648
649
|
endIndex: endIndex,
|
|
649
|
-
inputMethod:
|
|
650
|
+
inputMethod: inputMethod,
|
|
650
651
|
selectedCount: selectedColumnCount,
|
|
651
652
|
side: side,
|
|
652
653
|
startIndex: startIndex
|
|
@@ -658,9 +659,10 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
|
|
|
658
659
|
};
|
|
659
660
|
};
|
|
660
661
|
var insertLayoutColumn = exports.insertLayoutColumn = function insertLayoutColumn(side, editorAnalyticsAPI, api) {
|
|
662
|
+
var inputMethod = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
|
|
661
663
|
return function (_ref5) {
|
|
662
664
|
var tr = _ref5.tr;
|
|
663
|
-
var result = insertLayoutColumnAt(side, editorAnalyticsAPI)({
|
|
665
|
+
var result = insertLayoutColumnAt(side, editorAnalyticsAPI, inputMethod)({
|
|
664
666
|
tr: tr
|
|
665
667
|
});
|
|
666
668
|
if (result) {
|
|
@@ -801,25 +803,43 @@ var distributeLayoutColumns = exports.distributeLayoutColumns = function distrib
|
|
|
801
803
|
};
|
|
802
804
|
var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLayoutColumnMenu(_ref11) {
|
|
803
805
|
var anchorPos = _ref11.anchorPos,
|
|
804
|
-
isOpen = _ref11.isOpen
|
|
806
|
+
isOpen = _ref11.isOpen,
|
|
807
|
+
openedViaKeyboard = _ref11.openedViaKeyboard;
|
|
805
808
|
return function (_ref12) {
|
|
806
809
|
var tr = _ref12.tr;
|
|
807
810
|
tr.setMeta('toggleLayoutColumnMenu', {
|
|
808
811
|
anchorPos: anchorPos,
|
|
809
|
-
isOpen: isOpen
|
|
812
|
+
isOpen: isOpen,
|
|
813
|
+
openedViaKeyboard: openedViaKeyboard
|
|
810
814
|
});
|
|
811
815
|
tr.setMeta('scrollIntoView', false);
|
|
812
816
|
return tr;
|
|
813
817
|
};
|
|
814
818
|
};
|
|
815
|
-
var
|
|
819
|
+
var setLayoutColumnDangerPreview = exports.setLayoutColumnDangerPreview = function setLayoutColumnDangerPreview(show) {
|
|
816
820
|
return function (_ref13) {
|
|
817
|
-
var
|
|
821
|
+
var _selectedLayoutColumn;
|
|
818
822
|
var tr = _ref13.tr;
|
|
823
|
+
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getSelectedLayoutColumnsFromSelection)(tr.selection);
|
|
824
|
+
var positions = show ? (_selectedLayoutColumn = selectedLayoutColumnsResult === null || selectedLayoutColumnsResult === void 0 ? void 0 : selectedLayoutColumnsResult.selectedLayoutColumns.map(function (_ref14) {
|
|
825
|
+
var pos = _ref14.pos;
|
|
826
|
+
return pos;
|
|
827
|
+
})) !== null && _selectedLayoutColumn !== void 0 ? _selectedLayoutColumn : [] : null;
|
|
828
|
+
tr.setMeta('layoutColumnDangerPreview', positions);
|
|
829
|
+
tr.setMeta('addToHistory', false);
|
|
830
|
+
tr.setMeta('scrollIntoView', false);
|
|
831
|
+
return tr;
|
|
832
|
+
};
|
|
833
|
+
};
|
|
834
|
+
var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColumn(editorAnalyticsAPI, api) {
|
|
835
|
+
var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
|
|
836
|
+
return function (_ref15) {
|
|
837
|
+
var _api$blockControls4;
|
|
838
|
+
var tr = _ref15.tr;
|
|
819
839
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
820
840
|
return null;
|
|
821
841
|
}
|
|
822
|
-
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.
|
|
842
|
+
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getLayoutColumnsFromContentSelection)(tr.selection);
|
|
823
843
|
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length === 0) {
|
|
824
844
|
return null;
|
|
825
845
|
}
|
|
@@ -836,7 +856,7 @@ var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColum
|
|
|
836
856
|
attributes: {
|
|
837
857
|
columnCount: columnCount,
|
|
838
858
|
endIndex: endIndex,
|
|
839
|
-
inputMethod:
|
|
859
|
+
inputMethod: inputMethod,
|
|
840
860
|
selectedCount: selectedLayoutColumns.length,
|
|
841
861
|
startIndex: startIndex
|
|
842
862
|
},
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
8
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
9
|
+
var _actions = require("./actions");
|
|
10
|
+
var bindLayoutColumnShortcut = function bindLayoutColumnShortcut(shortcut, command, list) {
|
|
11
|
+
if (!shortcut) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
(0, _keymaps.bindKeymapWithEditorCommand)(shortcut, command, list);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates shortcut handlers for layout column actions.
|
|
19
|
+
*/
|
|
20
|
+
function keymapPlugin(_ref) {
|
|
21
|
+
var _api$analytics, _api$analytics2, _api$analytics3, _api$analytics4, _api$analytics5;
|
|
22
|
+
var api = _ref.api;
|
|
23
|
+
var list = {};
|
|
24
|
+
bindLayoutColumnShortcut(_keymaps.addColumnBefore.common, (0, _actions.insertLayoutColumn)('left', api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
25
|
+
bindLayoutColumnShortcut(_keymaps.addColumnBeforeVO.common, (0, _actions.insertLayoutColumn)('left', api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
26
|
+
bindLayoutColumnShortcut(_keymaps.addColumnAfter.common, (0, _actions.insertLayoutColumn)('right', api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
27
|
+
bindLayoutColumnShortcut(_keymaps.addColumnAfterVO.common, (0, _actions.insertLayoutColumn)('right', api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
28
|
+
bindLayoutColumnShortcut(_keymaps.deleteColumn.common, (0, _actions.deleteLayoutColumn)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
29
|
+
return (0, _keymaps.keymap)(list);
|
|
30
|
+
}
|
|
31
|
+
var _default = exports.default = keymapPlugin;
|
|
@@ -59,6 +59,18 @@ var getNodeDecoration = function getNodeDecoration(pos, node) {
|
|
|
59
59
|
class: 'selected'
|
|
60
60
|
})];
|
|
61
61
|
};
|
|
62
|
+
var getDangerPreviewDecorations = function getDangerPreviewDecorations(state, positions) {
|
|
63
|
+
var _positions$flatMap;
|
|
64
|
+
return (_positions$flatMap = positions === null || positions === void 0 ? void 0 : positions.flatMap(function (pos) {
|
|
65
|
+
var node = state.doc.nodeAt(pos);
|
|
66
|
+
if (!node) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
return [_view2.Decoration.node(pos, pos + node.nodeSize, {
|
|
70
|
+
class: 'layout-column-danger-preview'
|
|
71
|
+
})];
|
|
72
|
+
})) !== null && _positions$flatMap !== void 0 ? _positions$flatMap : [];
|
|
73
|
+
};
|
|
62
74
|
var getInitialPluginState = function getInitialPluginState(options, state) {
|
|
63
75
|
var maybeLayoutSection = (0, _utils3.getMaybeLayoutSection)(state);
|
|
64
76
|
var allowBreakout = options.allowBreakout || false;
|
|
@@ -74,9 +86,52 @@ var getInitialPluginState = function getInitialPluginState(options, state) {
|
|
|
74
86
|
allowSingleColumnLayout: allowSingleColumnLayout,
|
|
75
87
|
isResizing: false,
|
|
76
88
|
isLayoutColumnMenuOpen: false,
|
|
77
|
-
|
|
89
|
+
layoutColumnMenuOpenedViaKeyboard: false,
|
|
90
|
+
layoutColumnMenuAnchorPos: undefined,
|
|
91
|
+
dangerPreviewLayoutColumnPositions: undefined
|
|
78
92
|
};
|
|
79
93
|
};
|
|
94
|
+
var reduceLayoutColumnMenuState = function reduceLayoutColumnMenuState(pluginState, action) {
|
|
95
|
+
switch (action.type) {
|
|
96
|
+
case 'toggleLayoutColumnMenu':
|
|
97
|
+
{
|
|
98
|
+
var _action$meta = action.meta,
|
|
99
|
+
anchorPos = _action$meta.anchorPos,
|
|
100
|
+
isOpen = _action$meta.isOpen,
|
|
101
|
+
openedViaKeyboard = _action$meta.openedViaKeyboard;
|
|
102
|
+
var nextIsOpen = isOpen !== null && isOpen !== void 0 ? isOpen : !pluginState.isLayoutColumnMenuOpen;
|
|
103
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
104
|
+
isLayoutColumnMenuOpen: nextIsOpen,
|
|
105
|
+
layoutColumnMenuOpenedViaKeyboard: nextIsOpen ? openedViaKeyboard !== null && openedViaKeyboard !== void 0 ? openedViaKeyboard : false : false,
|
|
106
|
+
layoutColumnMenuAnchorPos: nextIsOpen ? anchorPos : undefined,
|
|
107
|
+
dangerPreviewLayoutColumnPositions: nextIsOpen ? pluginState.dangerPreviewLayoutColumnPositions : undefined
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
case 'setDangerPreview':
|
|
111
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
112
|
+
dangerPreviewLayoutColumnPositions: action.positions
|
|
113
|
+
});
|
|
114
|
+
case 'clearDangerPreview':
|
|
115
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
116
|
+
dangerPreviewLayoutColumnPositions: undefined
|
|
117
|
+
});
|
|
118
|
+
case 'setResizeState':
|
|
119
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
120
|
+
isResizing: action.isResizing
|
|
121
|
+
});
|
|
122
|
+
case 'syncSelectionState':
|
|
123
|
+
{
|
|
124
|
+
var maybeLayoutSection = (0, _utils3.getMaybeLayoutSection)(action.state);
|
|
125
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
126
|
+
pos: maybeLayoutSection ? maybeLayoutSection.pos : null,
|
|
127
|
+
selectedLayout: (0, _actions.getSelectedLayout)(maybeLayoutSection && maybeLayoutSection.node,
|
|
128
|
+
// Ignored via go/ees005
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
130
|
+
pluginState.selectedLayout)
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
80
135
|
|
|
81
136
|
// To prevent a single-column layout,
|
|
82
137
|
// if a user attempts to delete a layout column and
|
|
@@ -123,28 +178,39 @@ var _default = exports.default = function _default(options, editorAnalyticsAPI)
|
|
|
123
178
|
return getInitialPluginState(options, state);
|
|
124
179
|
},
|
|
125
180
|
apply: function apply(tr, pluginState, oldState, newState) {
|
|
126
|
-
var
|
|
181
|
+
var _tr$getMeta, _pluginKey$getState;
|
|
182
|
+
var nextPluginState = pluginState;
|
|
127
183
|
var columnMenuMeta = tr.getMeta('toggleLayoutColumnMenu');
|
|
128
|
-
var
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
184
|
+
var dangerPreviewMeta = tr.getMeta('layoutColumnDangerPreview');
|
|
185
|
+
if (columnMenuMeta) {
|
|
186
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
187
|
+
meta: columnMenuMeta,
|
|
188
|
+
type: 'toggleLayoutColumnMenu'
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (tr.getMeta('layoutColumnDangerPreview') !== undefined) {
|
|
192
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
193
|
+
positions: dangerPreviewMeta !== null && dangerPreviewMeta !== void 0 ? dangerPreviewMeta : undefined,
|
|
194
|
+
type: 'setDangerPreview'
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (tr.docChanged) {
|
|
198
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
199
|
+
type: 'clearDangerPreview'
|
|
200
|
+
});
|
|
201
|
+
}
|
|
132
202
|
var isResizing = (0, _experiments.editorExperiment)('single_column_layouts', true) ? (_tr$getMeta = tr.getMeta('is-resizer-resizing')) !== null && _tr$getMeta !== void 0 ? _tr$getMeta : (_pluginKey$getState = _pluginKey.pluginKey.getState(oldState)) === null || _pluginKey$getState === void 0 ? void 0 : _pluginKey$getState.isResizing : false;
|
|
203
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
204
|
+
isResizing: isResizing,
|
|
205
|
+
type: 'setResizeState'
|
|
206
|
+
});
|
|
133
207
|
if (tr.docChanged || tr.selectionSet) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
isResizing: isResizing,
|
|
138
|
-
selectedLayout: (0, _actions.getSelectedLayout)(maybeLayoutSection && maybeLayoutSection.node,
|
|
139
|
-
// Ignored via go/ees005
|
|
140
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
141
|
-
pluginState.selectedLayout)
|
|
208
|
+
return reduceLayoutColumnMenuState(nextPluginState, {
|
|
209
|
+
state: newState,
|
|
210
|
+
type: 'syncSelectionState'
|
|
142
211
|
});
|
|
143
|
-
return newPluginState;
|
|
144
212
|
}
|
|
145
|
-
return
|
|
146
|
-
isResizing: isResizing
|
|
147
|
-
});
|
|
213
|
+
return nextPluginState;
|
|
148
214
|
}
|
|
149
215
|
},
|
|
150
216
|
props: {
|
|
@@ -154,14 +220,17 @@ var _default = exports.default = function _default(options, editorAnalyticsAPI)
|
|
|
154
220
|
if ((0, _experiments.editorExperiment)('advanced_layouts', true) && (0, _experiments.editorExperiment)('platform_editor_layout_column_resize_handle', true) && isLayoutResizingPluginAvailable) {
|
|
155
221
|
var dividerDecorations = (0, _columnResizeDivider.getColumnDividerDecorations)(state, editorViewRef, editorAnalyticsAPI);
|
|
156
222
|
var selectedDecorations = layoutState.pos !== null ? getNodeDecoration(layoutState.pos, state.doc.nodeAt(layoutState.pos)) : [];
|
|
157
|
-
var
|
|
223
|
+
var _dangerPreviewDecorations = getDangerPreviewDecorations(state, layoutState.dangerPreviewLayoutColumnPositions);
|
|
224
|
+
var allDecorations = [].concat((0, _toConsumableArray2.default)(selectedDecorations), (0, _toConsumableArray2.default)(dividerDecorations), (0, _toConsumableArray2.default)(_dangerPreviewDecorations));
|
|
158
225
|
if (allDecorations.length > 0) {
|
|
159
226
|
return _view2.DecorationSet.create(state.doc, allDecorations);
|
|
160
227
|
}
|
|
161
228
|
return undefined;
|
|
162
229
|
}
|
|
163
|
-
|
|
164
|
-
|
|
230
|
+
var dangerPreviewDecorations = getDangerPreviewDecorations(state, layoutState.dangerPreviewLayoutColumnPositions);
|
|
231
|
+
if (layoutState.pos !== null || dangerPreviewDecorations.length > 0) {
|
|
232
|
+
var _selectedDecorations = layoutState.pos !== null ? getNodeDecoration(layoutState.pos, state.doc.nodeAt(layoutState.pos)) : [];
|
|
233
|
+
return _view2.DecorationSet.create(state.doc, [].concat((0, _toConsumableArray2.default)(_selectedDecorations), (0, _toConsumableArray2.default)(dangerPreviewDecorations)));
|
|
165
234
|
}
|
|
166
235
|
return undefined;
|
|
167
236
|
},
|
|
@@ -8,6 +8,8 @@ exports.pluginKey = exports.default = void 0;
|
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
12
|
+
var _coreUtils = require("@atlaskit/editor-common/core-utils");
|
|
11
13
|
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
|
|
12
14
|
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
13
15
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
@@ -26,6 +28,28 @@ var pluginKey = exports.pluginKey = new _state.PluginKey('layoutResizingPlugin')
|
|
|
26
28
|
* (e.g. setting flex-basis to give real-time visual feedback without dispatching
|
|
27
29
|
* PM transactions) are not "corrected" back by ProseMirror's DOM reconciliation.
|
|
28
30
|
*/
|
|
31
|
+
var isLayoutElementLike = function isLayoutElementLike(element) {
|
|
32
|
+
if ((0, _coreUtils.isSSR)() && (0, _coreUtils.isSSRStreaming)()) {
|
|
33
|
+
// In SSR environments, `HTMLElement` is undefined globally so a plain
|
|
34
|
+
// `instanceof HTMLElement` check is always `false`. That makes the
|
|
35
|
+
// `DOMSerializer.renderSpec(...)` result get rejected by the guard below and
|
|
36
|
+
// the NodeView falls back to a bare `<div>`, losing every schema-defined
|
|
37
|
+
// attribute (`data-layout-column`, `style="flex-basis:..."`,
|
|
38
|
+
// `data-column-width`, plus the inner `<div data-layout-content="true">`
|
|
39
|
+
// wrapper) and breaking the layout's flex sizing in SSR output.
|
|
40
|
+
//
|
|
41
|
+
// To unblock SSR streaming without changing CSR semantics, we gate the check:
|
|
42
|
+
// - In SSR (and only when `platform_editor_editor_ssr_streaming` is enabled),
|
|
43
|
+
// use a duck-typed check that mirrors `safe-plugin`'s `isHTMLElement`.
|
|
44
|
+
// - Everywhere else, keep the original `instanceof HTMLElement` check exactly
|
|
45
|
+
// as it was so we don't accidentally widen acceptance in CSR.
|
|
46
|
+
if (element === null || element === undefined) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return (0, _typeof2.default)(element) === 'object' && 'innerHTML' in element && 'style' in element && 'classList' in element;
|
|
50
|
+
}
|
|
51
|
+
return element instanceof HTMLElement;
|
|
52
|
+
};
|
|
29
53
|
var LayoutColumnView = /*#__PURE__*/function () {
|
|
30
54
|
function LayoutColumnView(node, view, getPos) {
|
|
31
55
|
(0, _classCallCheck2.default)(this, LayoutColumnView);
|
|
@@ -43,7 +67,7 @@ var LayoutColumnView = /*#__PURE__*/function () {
|
|
|
43
67
|
var _DOMSerializer$render = _model.DOMSerializer.renderSpec(document, nodeType.spec.toDOM(node)),
|
|
44
68
|
dom = _DOMSerializer$render.dom,
|
|
45
69
|
contentDOM = _DOMSerializer$render.contentDOM;
|
|
46
|
-
if (!(dom
|
|
70
|
+
if (!isLayoutElementLike(dom) || !isLayoutElementLike(contentDOM)) {
|
|
47
71
|
var _fallbackDiv = document.createElement('div');
|
|
48
72
|
this.dom = _fallbackDiv;
|
|
49
73
|
this.contentDOM = _fallbackDiv;
|
|
@@ -71,7 +95,7 @@ var LayoutColumnView = /*#__PURE__*/function () {
|
|
|
71
95
|
}
|
|
72
96
|
}]);
|
|
73
97
|
}();
|
|
74
|
-
var _default = exports.default = function _default(options, pluginInjectionApi, portalProviderAPI, eventDispatcher) {
|
|
98
|
+
var _default = exports.default = function _default(options, pluginInjectionApi, portalProviderAPI, eventDispatcher, intl) {
|
|
75
99
|
return new _safePlugin.SafePlugin({
|
|
76
100
|
key: pluginKey,
|
|
77
101
|
props: {
|
|
@@ -84,10 +108,11 @@ var _default = exports.default = function _default(options, pluginInjectionApi,
|
|
|
84
108
|
portalProviderAPI: portalProviderAPI,
|
|
85
109
|
eventDispatcher: eventDispatcher,
|
|
86
110
|
pluginInjectionApi: pluginInjectionApi,
|
|
87
|
-
options: options
|
|
111
|
+
options: options,
|
|
112
|
+
intl: intl
|
|
88
113
|
}).init();
|
|
89
114
|
}
|
|
90
|
-
}, (0, _experiments.editorExperiment)('platform_editor_layout_column_resize_handle', true) ? {
|
|
115
|
+
}, (0, _experiments.editorExperiment)('platform_editor_layout_column_resize_handle', true) || (0, _coreUtils.isSSR)() && (0, _coreUtils.isSSRStreaming)() ? {
|
|
91
116
|
layoutColumn: function layoutColumn(node, view, getPos) {
|
|
92
117
|
return new LayoutColumnView(node, view, getPos);
|
|
93
118
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getSelectedLayoutColumnsFromSelection = exports.getLayoutColumnValign = exports.getLayoutColumnMenuAnchorPos = exports.getAllLayoutColumnsFromSelection = void 0;
|
|
6
|
+
exports.getSelectedLayoutColumnsFromSelection = exports.getLayoutColumnsFromContentSelection = exports.getLayoutColumnValign = exports.getLayoutColumnMenuAnchorPos = exports.getAllLayoutColumnsFromSelection = void 0;
|
|
7
7
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
8
8
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
9
9
|
var findLayoutSectionFromSelection = function findLayoutSectionFromSelection(selection) {
|
|
@@ -28,7 +28,7 @@ var findLayoutColumnsFromLayoutSection = function findLayoutColumnsFromLayoutSec
|
|
|
28
28
|
};
|
|
29
29
|
});
|
|
30
30
|
};
|
|
31
|
-
var
|
|
31
|
+
var getSelectedLayoutColumns = function getSelectedLayoutColumns(selection, isColumnSelected) {
|
|
32
32
|
var layoutSection = findLayoutSectionFromSelection(selection);
|
|
33
33
|
if (!layoutSection) {
|
|
34
34
|
return undefined;
|
|
@@ -41,17 +41,15 @@ var getSelectedLayoutColumnsFromSelection = exports.getSelectedLayoutColumnsFrom
|
|
|
41
41
|
}
|
|
42
42
|
var startIndex = -1;
|
|
43
43
|
var endIndex = -1;
|
|
44
|
-
var selectedLayoutColumns = allLayoutColumns.filter(function (
|
|
45
|
-
|
|
46
|
-
pos = _ref2.pos;
|
|
47
|
-
var isSelected = selection.from <= pos && selection.to >= pos + node.nodeSize;
|
|
48
|
-
if (isSelected) {
|
|
44
|
+
var selectedLayoutColumns = allLayoutColumns.filter(function (column, index) {
|
|
45
|
+
if (isColumnSelected(column, index)) {
|
|
49
46
|
if (startIndex === -1) {
|
|
50
47
|
startIndex = index;
|
|
51
48
|
}
|
|
52
49
|
endIndex = index;
|
|
50
|
+
return true;
|
|
53
51
|
}
|
|
54
|
-
return
|
|
52
|
+
return false;
|
|
55
53
|
});
|
|
56
54
|
return {
|
|
57
55
|
layoutSectionNode: layoutSectionNode,
|
|
@@ -61,6 +59,32 @@ var getSelectedLayoutColumnsFromSelection = exports.getSelectedLayoutColumnsFrom
|
|
|
61
59
|
endIndex: endIndex
|
|
62
60
|
};
|
|
63
61
|
};
|
|
62
|
+
var getSelectedLayoutColumnsFromSelection = exports.getSelectedLayoutColumnsFromSelection = function getSelectedLayoutColumnsFromSelection(selection) {
|
|
63
|
+
return getSelectedLayoutColumns(selection, function (_ref2) {
|
|
64
|
+
var node = _ref2.node,
|
|
65
|
+
pos = _ref2.pos;
|
|
66
|
+
// NodeSelection on a layout column is clearly selected.
|
|
67
|
+
if (selection instanceof _state.NodeSelection && selection.node === node) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// For TextSelection, only count columns that are fully contained within the selection
|
|
72
|
+
// (not partial text selections inside a column).
|
|
73
|
+
var nodeEndPos = pos + node.nodeSize;
|
|
74
|
+
return !selection.empty && selection.from <= pos && selection.to >= nodeEndPos;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
var getLayoutColumnsFromContentSelection = exports.getLayoutColumnsFromContentSelection = function getLayoutColumnsFromContentSelection(selection) {
|
|
78
|
+
return getSelectedLayoutColumns(selection, function (_ref3) {
|
|
79
|
+
var node = _ref3.node,
|
|
80
|
+
pos = _ref3.pos;
|
|
81
|
+
if (selection instanceof _state.NodeSelection && selection.node === node) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
var nodeEndPos = pos + node.nodeSize;
|
|
85
|
+
return selection.empty ? selection.from > pos && selection.from < nodeEndPos : selection.from < nodeEndPos && selection.to > pos;
|
|
86
|
+
});
|
|
87
|
+
};
|
|
64
88
|
var getAllLayoutColumnsFromSelection = exports.getAllLayoutColumnsFromSelection = function getAllLayoutColumnsFromSelection(selection) {
|
|
65
89
|
var layoutSection = findLayoutSectionFromSelection(selection);
|
|
66
90
|
if (!layoutSection) {
|
|
@@ -79,8 +103,8 @@ var getAllLayoutColumnsFromSelection = exports.getAllLayoutColumnsFromSelection
|
|
|
79
103
|
};
|
|
80
104
|
};
|
|
81
105
|
var getLayoutColumnValign = exports.getLayoutColumnValign = function getLayoutColumnValign(layoutColumn) {
|
|
82
|
-
var
|
|
83
|
-
return layoutColumn ? (
|
|
106
|
+
var _ref4;
|
|
107
|
+
return layoutColumn ? (_ref4 = layoutColumn.attrs.valign) !== null && _ref4 !== void 0 ? _ref4 : 'top' : undefined;
|
|
84
108
|
};
|
|
85
109
|
var getLayoutColumnMenuAnchorPos = exports.getLayoutColumnMenuAnchorPos = function getLayoutColumnMenuAnchorPos(selection, anchorPosFromHandle) {
|
|
86
110
|
var _clickedSelectedColum, _selectedLayoutColumn;
|
|
@@ -88,8 +112,8 @@ var getLayoutColumnMenuAnchorPos = exports.getLayoutColumnMenuAnchorPos = functi
|
|
|
88
112
|
if (!selectedLayoutColumns) {
|
|
89
113
|
return undefined;
|
|
90
114
|
}
|
|
91
|
-
var clickedSelectedColumn = selectedLayoutColumns.selectedLayoutColumns.find(function (
|
|
92
|
-
var pos =
|
|
115
|
+
var clickedSelectedColumn = selectedLayoutColumns.selectedLayoutColumns.find(function (_ref5) {
|
|
116
|
+
var pos = _ref5.pos;
|
|
93
117
|
return pos === anchorPosFromHandle;
|
|
94
118
|
});
|
|
95
119
|
return (_clickedSelectedColum = clickedSelectedColumn === null || clickedSelectedColumn === void 0 ? void 0 : clickedSelectedColumn.pos) !== null && _clickedSelectedColum !== void 0 ? _clickedSelectedColum : (_selectedLayoutColumn = selectedLayoutColumns.selectedLayoutColumns[0]) === null || _selectedLayoutColumn === void 0 ? void 0 : _selectedLayoutColumn.pos;
|