@atlaskit/editor-plugin-layout 10.5.0 → 10.6.1
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 +17 -0
- package/dist/cjs/layoutPlugin.js +4 -1
- package/dist/cjs/pm-plugins/actions.js +87 -64
- package/dist/cjs/pm-plugins/main.js +4 -2
- package/dist/cjs/pm-plugins/utils/layout-column-selection.js +128 -0
- package/dist/cjs/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +7 -4
- package/dist/cjs/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +5 -6
- package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +9 -7
- package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +15 -6
- package/dist/cjs/ui/LayoutColumnMenu/index.js +17 -7
- package/dist/cjs/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +14 -0
- package/dist/es2019/layoutPlugin.js +4 -1
- package/dist/es2019/pm-plugins/actions.js +73 -58
- package/dist/es2019/pm-plugins/main.js +4 -2
- package/dist/es2019/pm-plugins/utils/layout-column-selection.js +118 -0
- package/dist/es2019/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +7 -4
- package/dist/es2019/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +5 -6
- package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +9 -6
- package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +15 -5
- package/dist/es2019/ui/LayoutColumnMenu/index.js +16 -6
- package/dist/es2019/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +6 -0
- package/dist/esm/layoutPlugin.js +5 -2
- package/dist/esm/pm-plugins/actions.js +87 -64
- package/dist/esm/pm-plugins/main.js +4 -2
- package/dist/esm/pm-plugins/utils/layout-column-selection.js +122 -0
- package/dist/esm/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +7 -4
- package/dist/esm/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +5 -6
- package/dist/esm/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +10 -8
- package/dist/esm/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +15 -6
- package/dist/esm/ui/LayoutColumnMenu/index.js +17 -7
- package/dist/esm/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +8 -0
- package/dist/types/layoutPluginType.d.ts +1 -1
- package/dist/types/pm-plugins/actions.d.ts +3 -2
- package/dist/types/pm-plugins/types.d.ts +1 -0
- package/dist/types/pm-plugins/utils/layout-column-selection.d.ts +18 -0
- package/dist/types/ui/LayoutColumnMenu/useSelectedLayoutColumns.d.ts +4 -0
- package/dist/types-ts4.5/layoutPluginType.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/actions.d.ts +3 -2
- package/dist/types-ts4.5/pm-plugins/types.d.ts +1 -0
- package/dist/types-ts4.5/pm-plugins/utils/layout-column-selection.d.ts +18 -0
- package/dist/types-ts4.5/ui/LayoutColumnMenu/useSelectedLayoutColumns.d.ts +4 -0
- package/package.json +6 -6
- package/dist/cjs/ui/LayoutColumnMenu/layoutColumnSelection.js +0 -21
- package/dist/cjs/ui/LayoutColumnMenu/useCurrentLayoutColumn.js +0 -20
- package/dist/es2019/ui/LayoutColumnMenu/layoutColumnSelection.js +0 -9
- package/dist/es2019/ui/LayoutColumnMenu/useCurrentLayoutColumn.js +0 -10
- package/dist/esm/ui/LayoutColumnMenu/layoutColumnSelection.js +0 -15
- package/dist/esm/ui/LayoutColumnMenu/useCurrentLayoutColumn.js +0 -14
- package/dist/types/ui/LayoutColumnMenu/layoutColumnSelection.d.ts +0 -7
- package/dist/types/ui/LayoutColumnMenu/useCurrentLayoutColumn.d.ts +0 -5
- package/dist/types-ts4.5/ui/LayoutColumnMenu/layoutColumnSelection.d.ts +0 -7
- package/dist/types-ts4.5/ui/LayoutColumnMenu/useCurrentLayoutColumn.d.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-layout
|
|
2
2
|
|
|
3
|
+
## 10.6.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
|
|
9
|
+
## 10.6.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [`71eaad00529a1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/71eaad00529a1) -
|
|
14
|
+
Support multi-column layout column menu selections
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 10.5.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
package/dist/cjs/layoutPlugin.js
CHANGED
|
@@ -385,7 +385,10 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
385
385
|
var _api$analytics5;
|
|
386
386
|
return (0, _actions.insertLayoutColumn)(side, api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions);
|
|
387
387
|
},
|
|
388
|
-
setLayoutColumnValign:
|
|
388
|
+
setLayoutColumnValign: function setLayoutColumnValign(valign) {
|
|
389
|
+
var _api$analytics6;
|
|
390
|
+
return (0, _actions.setLayoutColumnValign)(valign, api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions);
|
|
391
|
+
},
|
|
389
392
|
toggleLayoutColumnMenu: _actions.toggleLayoutColumnMenu
|
|
390
393
|
}
|
|
391
394
|
};
|
|
@@ -20,6 +20,7 @@ var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equa
|
|
|
20
20
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
21
21
|
var _consts = require("./consts");
|
|
22
22
|
var _pluginKey = require("./plugin-key");
|
|
23
|
+
var _layoutColumnSelection = require("./utils/layout-column-selection");
|
|
23
24
|
var _redistributeProportionally = require("./utils/redistribute-proportionally");
|
|
24
25
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
25
26
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -557,44 +558,24 @@ var formatLayoutName = function formatLayoutName(layout) {
|
|
|
557
558
|
function getEffectiveMaxLayoutColumns() {
|
|
558
559
|
return (0, _experiments.editorExperiment)('advanced_layouts', true) ? _consts.MAX_LAYOUT_COLUMNS : _consts.MAX_STANDARD_LAYOUT_COLUMNS;
|
|
559
560
|
}
|
|
560
|
-
var getSelectedLayoutColumnInSection = function getSelectedLayoutColumnInSection(_ref4) {
|
|
561
|
-
var doc = _ref4.doc,
|
|
562
|
-
selection = _ref4.selection;
|
|
563
|
-
var _doc$type$schema$node = doc.type.schema.nodes,
|
|
564
|
-
layoutColumn = _doc$type$schema$node.layoutColumn,
|
|
565
|
-
layoutSection = _doc$type$schema$node.layoutSection;
|
|
566
|
-
if (!(selection instanceof _state.NodeSelection) || selection.node.type !== layoutColumn) {
|
|
567
|
-
return;
|
|
568
|
-
}
|
|
569
|
-
var $from = selection.$from;
|
|
570
|
-
if ($from.parent.type !== layoutSection) {
|
|
571
|
-
return;
|
|
572
|
-
}
|
|
573
|
-
var selectedColumnIndex = $from.index($from.depth);
|
|
574
|
-
var selectedColumnNode = selection.node;
|
|
575
|
-
var selectedColumnPos = selection.from;
|
|
576
|
-
var layoutSectionPos = $from.before($from.depth);
|
|
577
|
-
return {
|
|
578
|
-
layoutSectionNode: $from.parent,
|
|
579
|
-
layoutSectionPos: layoutSectionPos,
|
|
580
|
-
selectedColumnIndex: selectedColumnIndex,
|
|
581
|
-
selectedColumnNode: selectedColumnNode,
|
|
582
|
-
selectedColumnPos: selectedColumnPos
|
|
583
|
-
};
|
|
584
|
-
};
|
|
585
561
|
var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAPI) {
|
|
586
|
-
return function (
|
|
587
|
-
var tr =
|
|
562
|
+
return function (_ref4) {
|
|
563
|
+
var tr = _ref4.tr;
|
|
588
564
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
589
565
|
return null;
|
|
590
566
|
}
|
|
591
|
-
var
|
|
592
|
-
if (!
|
|
567
|
+
var selectedLayoutColumns = (0, _layoutColumnSelection.getSelectedLayoutColumns)(tr.selection);
|
|
568
|
+
if (!selectedLayoutColumns) {
|
|
593
569
|
return null;
|
|
594
570
|
}
|
|
595
|
-
var layoutSectionNode =
|
|
596
|
-
layoutSectionPos =
|
|
597
|
-
|
|
571
|
+
var layoutSectionNode = selectedLayoutColumns.layoutSectionNode,
|
|
572
|
+
layoutSectionPos = selectedLayoutColumns.layoutSectionPos,
|
|
573
|
+
selectedColumnIndices = selectedLayoutColumns.selectedColumnIndices,
|
|
574
|
+
selectedColumns = selectedLayoutColumns.selectedColumns;
|
|
575
|
+
var startIndex = selectedColumnIndices[0];
|
|
576
|
+
var endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
|
|
577
|
+
var selectedColumnIndex = side === 'left' ? startIndex : endIndex;
|
|
578
|
+
var selectedColumnCount = selectedColumns.length;
|
|
598
579
|
if (layoutSectionNode.childCount >= getEffectiveMaxLayoutColumns()) {
|
|
599
580
|
return null;
|
|
600
581
|
}
|
|
@@ -631,9 +612,11 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
|
|
|
631
612
|
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT_COLUMN,
|
|
632
613
|
attributes: {
|
|
633
614
|
columnCount: redistributedWidths.length,
|
|
615
|
+
endIndex: endIndex,
|
|
634
616
|
inputMethod: _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU,
|
|
635
|
-
|
|
636
|
-
side: side
|
|
617
|
+
selectedCount: selectedColumnCount,
|
|
618
|
+
side: side,
|
|
619
|
+
startIndex: startIndex
|
|
637
620
|
},
|
|
638
621
|
eventType: _analytics.EVENT_TYPE.TRACK
|
|
639
622
|
})(tr);
|
|
@@ -644,35 +627,61 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
|
|
|
644
627
|
var insertLayoutColumn = exports.insertLayoutColumn = function insertLayoutColumn(side, editorAnalyticsAPI) {
|
|
645
628
|
return insertLayoutColumnAt(side, editorAnalyticsAPI);
|
|
646
629
|
};
|
|
647
|
-
var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutColumnValign(valign) {
|
|
648
|
-
return function (
|
|
649
|
-
var tr =
|
|
630
|
+
var setLayoutColumnValign = exports.setLayoutColumnValign = function setLayoutColumnValign(valign, editorAnalyticsAPI) {
|
|
631
|
+
return function (_ref5) {
|
|
632
|
+
var tr = _ref5.tr;
|
|
650
633
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
651
634
|
return null;
|
|
652
635
|
}
|
|
653
|
-
var
|
|
654
|
-
|
|
655
|
-
node: tr.selection.node,
|
|
656
|
-
pos: tr.selection.from
|
|
657
|
-
} : undefined;
|
|
658
|
-
if (!selectedColumn) {
|
|
636
|
+
var selectedLayoutColumns = (0, _layoutColumnSelection.getSelectedLayoutColumns)(tr.selection);
|
|
637
|
+
if (!selectedLayoutColumns) {
|
|
659
638
|
return null;
|
|
660
639
|
}
|
|
661
|
-
|
|
640
|
+
var selectedColumnIndices = selectedLayoutColumns.selectedColumnIndices,
|
|
641
|
+
selectedColumns = selectedLayoutColumns.selectedColumns;
|
|
642
|
+
var columnsToUpdate = selectedColumns.filter(function (_ref6) {
|
|
643
|
+
var node = _ref6.node;
|
|
644
|
+
return node.attrs.valign !== valign;
|
|
645
|
+
});
|
|
646
|
+
if (columnsToUpdate.length === 0) {
|
|
662
647
|
return null;
|
|
663
648
|
}
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
649
|
+
var startIndex = selectedColumnIndices[0];
|
|
650
|
+
var endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
|
|
651
|
+
var selectedColumnCount = selectedColumns.length;
|
|
652
|
+
var updatedColumnCount = columnsToUpdate.length;
|
|
653
|
+
columnsToUpdate.forEach(function (_ref7) {
|
|
654
|
+
var node = _ref7.node,
|
|
655
|
+
pos = _ref7.pos;
|
|
656
|
+
tr.setNodeMarkup(pos, node.type, _objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
657
|
+
valign: valign
|
|
658
|
+
}));
|
|
659
|
+
});
|
|
660
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
|
|
661
|
+
action: _analytics.ACTION.UPDATED,
|
|
662
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
663
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT_COLUMN,
|
|
664
|
+
attributes: {
|
|
665
|
+
endIndex: endIndex,
|
|
666
|
+
inputMethod: _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU,
|
|
667
|
+
selectedCount: selectedColumnCount,
|
|
668
|
+
startIndex: startIndex,
|
|
669
|
+
updatedCount: updatedColumnCount,
|
|
670
|
+
valign: valign
|
|
671
|
+
},
|
|
672
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
673
|
+
})(tr);
|
|
667
674
|
tr.setMeta('scrollIntoView', false);
|
|
668
675
|
return tr;
|
|
669
676
|
};
|
|
670
677
|
};
|
|
671
|
-
var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLayoutColumnMenu(
|
|
672
|
-
var
|
|
673
|
-
|
|
674
|
-
|
|
678
|
+
var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLayoutColumnMenu(_ref8) {
|
|
679
|
+
var anchorPos = _ref8.anchorPos,
|
|
680
|
+
isOpen = _ref8.isOpen;
|
|
681
|
+
return function (_ref9) {
|
|
682
|
+
var tr = _ref9.tr;
|
|
675
683
|
tr.setMeta('toggleLayoutColumnMenu', {
|
|
684
|
+
anchorPos: anchorPos,
|
|
676
685
|
isOpen: isOpen
|
|
677
686
|
});
|
|
678
687
|
tr.setMeta('scrollIntoView', false);
|
|
@@ -680,18 +689,23 @@ var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLay
|
|
|
680
689
|
};
|
|
681
690
|
};
|
|
682
691
|
var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColumn(editorAnalyticsAPI) {
|
|
683
|
-
return function (
|
|
684
|
-
var tr =
|
|
692
|
+
return function (_ref0) {
|
|
693
|
+
var tr = _ref0.tr;
|
|
685
694
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
686
695
|
return null;
|
|
687
696
|
}
|
|
688
|
-
var
|
|
689
|
-
if (!
|
|
697
|
+
var selectedLayoutColumns = (0, _layoutColumnSelection.getSelectedLayoutColumns)(tr.selection);
|
|
698
|
+
if (!selectedLayoutColumns) {
|
|
690
699
|
return null;
|
|
691
700
|
}
|
|
692
|
-
var layoutSectionNode =
|
|
693
|
-
layoutSectionPos =
|
|
694
|
-
|
|
701
|
+
var layoutSectionNode = selectedLayoutColumns.layoutSectionNode,
|
|
702
|
+
layoutSectionPos = selectedLayoutColumns.layoutSectionPos,
|
|
703
|
+
selectedColumnIndices = selectedLayoutColumns.selectedColumnIndices,
|
|
704
|
+
selectedColumns = selectedLayoutColumns.selectedColumns;
|
|
705
|
+
var startIndex = selectedColumnIndices[0];
|
|
706
|
+
var endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
|
|
707
|
+
var selectedColumnCount = selectedColumns.length;
|
|
708
|
+
var selectedColumnIndexSet = new Set(selectedColumnIndices);
|
|
695
709
|
var emitDeleteColumnAnalytics = function emitDeleteColumnAnalytics(columnCount) {
|
|
696
710
|
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
|
|
697
711
|
action: _analytics.ACTION.DELETED,
|
|
@@ -699,25 +713,27 @@ var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColum
|
|
|
699
713
|
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT_COLUMN,
|
|
700
714
|
attributes: {
|
|
701
715
|
columnCount: columnCount,
|
|
716
|
+
endIndex: endIndex,
|
|
702
717
|
inputMethod: _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU,
|
|
703
|
-
|
|
718
|
+
selectedCount: selectedColumnCount,
|
|
719
|
+
startIndex: startIndex
|
|
704
720
|
},
|
|
705
721
|
eventType: _analytics.EVENT_TYPE.TRACK
|
|
706
722
|
})(tr);
|
|
707
723
|
};
|
|
708
724
|
|
|
709
|
-
// If
|
|
710
|
-
if (layoutSectionNode.childCount
|
|
725
|
+
// If all columns are selected, remove the entire layoutSection
|
|
726
|
+
if (selectedColumnCount === layoutSectionNode.childCount) {
|
|
711
727
|
tr.delete(layoutSectionPos, layoutSectionPos + layoutSectionNode.nodeSize);
|
|
712
728
|
emitDeleteColumnAnalytics(0);
|
|
713
729
|
tr.setMeta('scrollIntoView', false);
|
|
714
730
|
return tr;
|
|
715
731
|
}
|
|
716
732
|
|
|
717
|
-
// Build new column list without the selected
|
|
733
|
+
// Build new column list without the selected columns
|
|
718
734
|
var remainingColumns = [];
|
|
719
735
|
layoutSectionNode.forEach(function (column, _offset, index) {
|
|
720
|
-
if (index
|
|
736
|
+
if (!selectedColumnIndexSet.has(index)) {
|
|
721
737
|
remainingColumns.push(column);
|
|
722
738
|
}
|
|
723
739
|
});
|
|
@@ -726,7 +742,14 @@ var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColum
|
|
|
726
742
|
var existingWidths = (0, _utils.mapChildren)(layoutSectionNode, function (column) {
|
|
727
743
|
return column.attrs.width;
|
|
728
744
|
});
|
|
729
|
-
var redistributed =
|
|
745
|
+
var redistributed = selectedColumnIndices.slice()
|
|
746
|
+
// Delete highest indices first so lower original indices still point at the same columns
|
|
747
|
+
// as each redistribution step shrinks the widths array.
|
|
748
|
+
.sort(function (a, b) {
|
|
749
|
+
return b - a;
|
|
750
|
+
}).reduce(function (widths, selectedIndex) {
|
|
751
|
+
return (0, _redistributeProportionally.redistributeAfterDeletion)(widths, selectedIndex, _consts.MIN_LAYOUT_COLUMN_WIDTH_PERCENT);
|
|
752
|
+
}, existingWidths);
|
|
730
753
|
var updatedLayoutSectionNode = layoutSectionNode.copy(_model.Fragment.fromArray(remainingColumns));
|
|
731
754
|
tr.replaceWith(layoutSectionPos + 1, layoutSectionPos + layoutSectionNode.nodeSize - 1, columnWidth(updatedLayoutSectionNode, tr.doc.type.schema, redistributed));
|
|
732
755
|
emitDeleteColumnAnalytics(redistributed.length);
|
|
@@ -73,7 +73,8 @@ var getInitialPluginState = function getInitialPluginState(options, state) {
|
|
|
73
73
|
selectedLayout: selectedLayout,
|
|
74
74
|
allowSingleColumnLayout: allowSingleColumnLayout,
|
|
75
75
|
isResizing: false,
|
|
76
|
-
isLayoutColumnMenuOpen: false
|
|
76
|
+
isLayoutColumnMenuOpen: false,
|
|
77
|
+
layoutColumnMenuAnchorPos: undefined
|
|
77
78
|
};
|
|
78
79
|
};
|
|
79
80
|
|
|
@@ -125,7 +126,8 @@ var _default = exports.default = function _default(options) {
|
|
|
125
126
|
var _columnMenuMeta$isOpe, _tr$getMeta, _pluginKey$getState;
|
|
126
127
|
var columnMenuMeta = tr.getMeta('toggleLayoutColumnMenu');
|
|
127
128
|
var nextPluginState = columnMenuMeta ? _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
128
|
-
isLayoutColumnMenuOpen: (_columnMenuMeta$isOpe = columnMenuMeta.isOpen) !== null && _columnMenuMeta$isOpe !== void 0 ? _columnMenuMeta$isOpe : !pluginState.isLayoutColumnMenuOpen
|
|
129
|
+
isLayoutColumnMenuOpen: (_columnMenuMeta$isOpe = columnMenuMeta.isOpen) !== null && _columnMenuMeta$isOpe !== void 0 ? _columnMenuMeta$isOpe : !pluginState.isLayoutColumnMenuOpen,
|
|
130
|
+
layoutColumnMenuAnchorPos: columnMenuMeta.isOpen === false ? undefined : columnMenuMeta.anchorPos
|
|
129
131
|
}) : pluginState;
|
|
130
132
|
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;
|
|
131
133
|
if (tr.docChanged || tr.selectionSet) {
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getSelectedLayoutColumns = exports.getLayoutSectionColumnCount = exports.getLayoutColumnValign = exports.getLayoutColumnMenuAnchorPos = void 0;
|
|
7
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
8
|
+
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
9
|
+
var isLayoutColumn = function isLayoutColumn(node) {
|
|
10
|
+
return (node === null || node === void 0 ? void 0 : node.type.name) === 'layoutColumn';
|
|
11
|
+
};
|
|
12
|
+
var isLayoutSection = function isLayoutSection(node) {
|
|
13
|
+
return (node === null || node === void 0 ? void 0 : node.type.name) === 'layoutSection';
|
|
14
|
+
};
|
|
15
|
+
var getLayoutColumnIndexAtPos = function getLayoutColumnIndexAtPos($pos) {
|
|
16
|
+
for (var depth = $pos.depth; depth > 0; depth--) {
|
|
17
|
+
if (isLayoutColumn($pos.node(depth)) && isLayoutSection($pos.node(depth - 1))) {
|
|
18
|
+
return $pos.index(depth - 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
};
|
|
23
|
+
var getLayoutSectionDepth = function getLayoutSectionDepth(selection) {
|
|
24
|
+
var $from = selection.$from,
|
|
25
|
+
$to = selection.$to;
|
|
26
|
+
var sharedDepth = $from.sharedDepth($to.pos);
|
|
27
|
+
for (var depth = sharedDepth; depth > 0; depth--) {
|
|
28
|
+
if (isLayoutSection($from.node(depth))) {
|
|
29
|
+
return depth;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
};
|
|
34
|
+
var getSelectedLayoutColumns = exports.getSelectedLayoutColumns = function getSelectedLayoutColumns(selection) {
|
|
35
|
+
if (!selection) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (selection instanceof _state.NodeSelection && isLayoutColumn(selection.node)) {
|
|
39
|
+
var _$from = selection.$from;
|
|
40
|
+
var _layoutSectionNode = _$from.parent;
|
|
41
|
+
if (!isLayoutSection(_layoutSectionNode)) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
var selectedColumnIndex = _$from.index(_$from.depth);
|
|
45
|
+
return {
|
|
46
|
+
layoutSectionNode: _layoutSectionNode,
|
|
47
|
+
layoutSectionPos: _$from.before(_$from.depth),
|
|
48
|
+
selectedColumnIndices: [selectedColumnIndex],
|
|
49
|
+
selectedColumns: [{
|
|
50
|
+
index: selectedColumnIndex,
|
|
51
|
+
node: selection.node,
|
|
52
|
+
pos: selection.from
|
|
53
|
+
}]
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (selection.empty) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
if (!(0, _experiments.editorExperiment)('platform_editor_block_menu', true)) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
var layoutSectionDepth = getLayoutSectionDepth(selection);
|
|
63
|
+
if (layoutSectionDepth === undefined) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
var $from = selection.$from,
|
|
67
|
+
$to = selection.$to;
|
|
68
|
+
var layoutSectionNode = $from.node(layoutSectionDepth);
|
|
69
|
+
var layoutSectionPos = $from.before(layoutSectionDepth);
|
|
70
|
+
var selectedColumns = [];
|
|
71
|
+
var invalidSelection = false;
|
|
72
|
+
layoutSectionNode.forEach(function (column, offset, index) {
|
|
73
|
+
var columnStart = layoutSectionPos + 1 + offset;
|
|
74
|
+
var columnEnd = columnStart + column.nodeSize;
|
|
75
|
+
var intersectsColumn = selection.from < columnEnd && selection.to > columnStart;
|
|
76
|
+
if (!intersectsColumn) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!isLayoutColumn(column)) {
|
|
80
|
+
invalidSelection = true;
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
selectedColumns.push({
|
|
84
|
+
index: index,
|
|
85
|
+
node: column,
|
|
86
|
+
pos: columnStart
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// TextSelection inside a single column is normal text editing, not a selected column set.
|
|
91
|
+
if (invalidSelection || selectedColumns.length < 2) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
var firstColumn = selectedColumns[0];
|
|
95
|
+
var lastColumn = selectedColumns[selectedColumns.length - 1];
|
|
96
|
+
var startColumnIndex = getLayoutColumnIndexAtPos($from);
|
|
97
|
+
var endColumnIndex = getLayoutColumnIndexAtPos($to);
|
|
98
|
+
if (startColumnIndex !== undefined && startColumnIndex !== firstColumn.index || endColumnIndex !== undefined && endColumnIndex !== lastColumn.index) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
layoutSectionNode: layoutSectionNode,
|
|
103
|
+
layoutSectionPos: layoutSectionPos,
|
|
104
|
+
selectedColumnIndices: selectedColumns.map(function (_ref) {
|
|
105
|
+
var index = _ref.index;
|
|
106
|
+
return index;
|
|
107
|
+
}),
|
|
108
|
+
selectedColumns: selectedColumns
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
var getLayoutSectionColumnCount = exports.getLayoutSectionColumnCount = function getLayoutSectionColumnCount(layoutSection) {
|
|
112
|
+
return (layoutSection === null || layoutSection === void 0 ? void 0 : layoutSection.type.name) === 'layoutSection' ? layoutSection.childCount : 0;
|
|
113
|
+
};
|
|
114
|
+
var getLayoutColumnValign = exports.getLayoutColumnValign = function getLayoutColumnValign(layoutColumn) {
|
|
115
|
+
return layoutColumn === null || layoutColumn === void 0 ? void 0 : layoutColumn.attrs.valign;
|
|
116
|
+
};
|
|
117
|
+
var getLayoutColumnMenuAnchorPos = exports.getLayoutColumnMenuAnchorPos = function getLayoutColumnMenuAnchorPos(selection, anchorPosFromHandle) {
|
|
118
|
+
var _clickedSelectedColum, _selectedLayoutColumn;
|
|
119
|
+
var selectedLayoutColumns = getSelectedLayoutColumns(selection);
|
|
120
|
+
if (!selectedLayoutColumns) {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
var clickedSelectedColumn = selectedLayoutColumns.selectedColumns.find(function (_ref2) {
|
|
124
|
+
var pos = _ref2.pos;
|
|
125
|
+
return pos === anchorPosFromHandle;
|
|
126
|
+
});
|
|
127
|
+
return (_clickedSelectedColum = clickedSelectedColumn === null || clickedSelectedColumn === void 0 ? void 0 : clickedSelectedColumn.pos) !== null && _clickedSelectedColum !== void 0 ? _clickedSelectedColum : (_selectedLayoutColumn = selectedLayoutColumns.selectedColumns[0]) === null || _selectedLayoutColumn === void 0 ? void 0 : _selectedLayoutColumn.pos;
|
|
128
|
+
};
|
|
@@ -9,13 +9,13 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactIntl = require("react-intl");
|
|
10
10
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
11
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
12
|
-
var
|
|
12
|
+
var _useSelectedLayoutColumns = require("./useSelectedLayoutColumns");
|
|
13
13
|
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); }
|
|
14
14
|
var DeleteColumnDropdownItem = exports.DeleteColumnDropdownItem = function DeleteColumnDropdownItem(_ref) {
|
|
15
15
|
var api = _ref.api;
|
|
16
16
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
17
17
|
formatMessage = _useIntl.formatMessage;
|
|
18
|
-
var
|
|
18
|
+
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
19
19
|
var onClick = (0, _react.useCallback)(function () {
|
|
20
20
|
var _api$layout, _api$core;
|
|
21
21
|
var deleteCommand = api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.deleteLayoutColumn;
|
|
@@ -33,10 +33,13 @@ var DeleteColumnDropdownItem = exports.DeleteColumnDropdownItem = function Delet
|
|
|
33
33
|
return tr;
|
|
34
34
|
});
|
|
35
35
|
}, [api]);
|
|
36
|
-
if (
|
|
36
|
+
if (selectedLayoutColumns === undefined) {
|
|
37
37
|
return null;
|
|
38
38
|
}
|
|
39
|
+
var selectedColumnCount = selectedLayoutColumns.selectedColumns.length;
|
|
39
40
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
|
|
40
41
|
onClick: onClick
|
|
41
|
-
}, formatMessage(_messages.layoutMessages.deleteColumn
|
|
42
|
+
}, formatMessage(_messages.layoutMessages.deleteColumn, {
|
|
43
|
+
count: selectedColumnCount
|
|
44
|
+
}));
|
|
42
45
|
};
|
|
@@ -10,8 +10,8 @@ var _reactIntl = require("react-intl");
|
|
|
10
10
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
11
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
12
12
|
var _actions = require("../../pm-plugins/actions");
|
|
13
|
-
var _layoutColumnSelection = require("
|
|
14
|
-
var
|
|
13
|
+
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
14
|
+
var _useSelectedLayoutColumns = require("./useSelectedLayoutColumns");
|
|
15
15
|
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); }
|
|
16
16
|
var INSERT_COLUMN_OPTIONS = {
|
|
17
17
|
left: {
|
|
@@ -33,11 +33,10 @@ var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function Inser
|
|
|
33
33
|
var _INSERT_COLUMN_OPTION = INSERT_COLUMN_OPTIONS[side],
|
|
34
34
|
Icon = _INSERT_COLUMN_OPTION.Icon,
|
|
35
35
|
label = _INSERT_COLUMN_OPTION.label;
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var columnCount = (0, _layoutColumnSelection.getLayoutSectionColumnCount)(currentLayoutSection);
|
|
36
|
+
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
37
|
+
var columnCount = (0, _layoutColumnSelection.getLayoutSectionColumnCount)(selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.layoutSectionNode);
|
|
39
38
|
var maxColumnCount = (0, _actions.getEffectiveMaxLayoutColumns)();
|
|
40
|
-
var canInsertColumn =
|
|
39
|
+
var canInsertColumn = selectedLayoutColumns !== undefined && columnCount < maxColumnCount;
|
|
41
40
|
var onClick = (0, _react.useCallback)(function () {
|
|
42
41
|
var _api$layout, _api$core;
|
|
43
42
|
var insertCommand = api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.insertLayoutColumn(side);
|
|
@@ -8,20 +8,22 @@ exports.VerticalAlignDropdownItem = void 0;
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _reactIntl = require("react-intl");
|
|
10
10
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
11
|
-
var _layoutColumnSelection = require("
|
|
12
|
-
var
|
|
11
|
+
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
12
|
+
var _useSelectedLayoutColumns = require("./useSelectedLayoutColumns");
|
|
13
13
|
var _verticalAlignIcons = require("./verticalAlignIcons");
|
|
14
14
|
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); }
|
|
15
15
|
var VerticalAlignDropdownItem = exports.VerticalAlignDropdownItem = function VerticalAlignDropdownItem(_ref) {
|
|
16
|
+
var _selectedLayoutColumn;
|
|
16
17
|
var api = _ref.api,
|
|
17
18
|
label = _ref.label,
|
|
18
19
|
value = _ref.value;
|
|
19
20
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
20
21
|
formatMessage = _useIntl.formatMessage;
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
23
|
+
var isSelected = (_selectedLayoutColumn = selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.selectedColumns.every(function (_ref2) {
|
|
24
|
+
var node = _ref2.node;
|
|
25
|
+
return (0, _layoutColumnSelection.getLayoutColumnValign)(node) === value;
|
|
26
|
+
})) !== null && _selectedLayoutColumn !== void 0 ? _selectedLayoutColumn : false;
|
|
25
27
|
var Icon = _verticalAlignIcons.VERTICAL_ALIGN_ICONS[value];
|
|
26
28
|
var onClick = (0, _react.useCallback)(function () {
|
|
27
29
|
var _api$core, _api$layout;
|
|
@@ -32,7 +34,7 @@ var VerticalAlignDropdownItem = exports.VerticalAlignDropdownItem = function Ver
|
|
|
32
34
|
label: "",
|
|
33
35
|
size: "small"
|
|
34
36
|
}),
|
|
35
|
-
isSelected:
|
|
37
|
+
isSelected: isSelected,
|
|
36
38
|
onClick: onClick
|
|
37
39
|
}, formatMessage(label));
|
|
38
40
|
};
|
|
@@ -9,8 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
var _reactIntl = require("react-intl");
|
|
10
10
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
11
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
12
|
-
var _layoutColumnSelection = require("
|
|
13
|
-
var
|
|
12
|
+
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
13
|
+
var _useSelectedLayoutColumns = require("./useSelectedLayoutColumns");
|
|
14
14
|
var _verticalAlignIcons = require("./verticalAlignIcons");
|
|
15
15
|
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); }
|
|
16
16
|
var VerticalAlignNestedMenu = exports.VerticalAlignNestedMenu = function VerticalAlignNestedMenu(_ref) {
|
|
@@ -18,12 +18,21 @@ var VerticalAlignNestedMenu = exports.VerticalAlignNestedMenu = function Vertica
|
|
|
18
18
|
children = _ref.children;
|
|
19
19
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
20
20
|
formatMessage = _useIntl.formatMessage;
|
|
21
|
-
var
|
|
21
|
+
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
22
22
|
var currentValign = (0, _react.useMemo)(function () {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
var selectedColumns = selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.selectedColumns;
|
|
24
|
+
var firstColumn = selectedColumns === null || selectedColumns === void 0 ? void 0 : selectedColumns[0];
|
|
25
|
+
var firstValign = (0, _layoutColumnSelection.getLayoutColumnValign)(firstColumn === null || firstColumn === void 0 ? void 0 : firstColumn.node);
|
|
26
|
+
if (!firstValign || !(selectedColumns !== null && selectedColumns !== void 0 && selectedColumns.every(function (_ref2) {
|
|
27
|
+
var node = _ref2.node;
|
|
28
|
+
return (0, _layoutColumnSelection.getLayoutColumnValign)(node) === firstValign;
|
|
29
|
+
}))) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return firstValign;
|
|
33
|
+
}, [selectedLayoutColumns]);
|
|
25
34
|
var TriggerIcon = currentValign ? _verticalAlignIcons.VERTICAL_ALIGN_ICONS[currentValign] : _editorToolbar.LayoutIcon;
|
|
26
|
-
if (!
|
|
35
|
+
if (!selectedLayoutColumns) {
|
|
27
36
|
return null;
|
|
28
37
|
}
|
|
29
38
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarNestedDropdownMenu, {
|
|
@@ -16,9 +16,9 @@ var _uiReact = require("@atlaskit/editor-common/ui-react");
|
|
|
16
16
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
17
17
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
18
18
|
var _editorUiControlModel = require("@atlaskit/editor-ui-control-model");
|
|
19
|
+
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
19
20
|
var _components = require("./components");
|
|
20
21
|
var _keys = require("./keys");
|
|
21
|
-
var _layoutColumnSelection = require("./layoutColumnSelection");
|
|
22
22
|
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); }
|
|
23
23
|
var PopupWithListeners = (0, _uiReact.withReactEditorViewOuterListeners)(_ui.Popup);
|
|
24
24
|
var FALLBACK_MENU_HEIGHT = 300;
|
|
@@ -27,12 +27,13 @@ var LAYOUT_COLUMN_MENU_POPUP_OFFSET = [0, 4];
|
|
|
27
27
|
/**
|
|
28
28
|
* Returns the drag handle button for the selected layout column.
|
|
29
29
|
*/
|
|
30
|
-
var getLayoutColumnMenuTarget = function getLayoutColumnMenuTarget(editorView, selection) {
|
|
30
|
+
var getLayoutColumnMenuTarget = function getLayoutColumnMenuTarget(editorView, selection, anchorPosFromHandle) {
|
|
31
31
|
var _columnDomRef$parentE;
|
|
32
|
-
|
|
32
|
+
var anchorPos = (0, _layoutColumnSelection.getLayoutColumnMenuAnchorPos)(selection, anchorPosFromHandle);
|
|
33
|
+
if (anchorPos === undefined) {
|
|
33
34
|
return null;
|
|
34
35
|
}
|
|
35
|
-
var columnDomRef = editorView.nodeDOM(
|
|
36
|
+
var columnDomRef = editorView.nodeDOM(anchorPos);
|
|
36
37
|
if (!(columnDomRef instanceof HTMLElement)) {
|
|
37
38
|
return null;
|
|
38
39
|
}
|
|
@@ -47,13 +48,15 @@ var LayoutColumnMenu = exports.LayoutColumnMenu = /*#__PURE__*/_react.default.me
|
|
|
47
48
|
boundariesElement = _ref.boundariesElement,
|
|
48
49
|
scrollableElement = _ref.scrollableElement;
|
|
49
50
|
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['layout', 'selection'], function (states) {
|
|
50
|
-
var _states$layoutState$i, _states$layoutState, _states$selectionStat;
|
|
51
|
+
var _states$layoutState$i, _states$layoutState, _states$layoutState2, _states$selectionStat;
|
|
51
52
|
return {
|
|
52
53
|
isLayoutColumnMenuOpen: (_states$layoutState$i = (_states$layoutState = states.layoutState) === null || _states$layoutState === void 0 ? void 0 : _states$layoutState.isLayoutColumnMenuOpen) !== null && _states$layoutState$i !== void 0 ? _states$layoutState$i : false,
|
|
54
|
+
layoutColumnMenuAnchorPos: (_states$layoutState2 = states.layoutState) === null || _states$layoutState2 === void 0 ? void 0 : _states$layoutState2.layoutColumnMenuAnchorPos,
|
|
53
55
|
selection: (_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection
|
|
54
56
|
};
|
|
55
57
|
}),
|
|
56
58
|
isLayoutColumnMenuOpen = _useSharedPluginState.isLayoutColumnMenuOpen,
|
|
59
|
+
layoutColumnMenuAnchorPos = _useSharedPluginState.layoutColumnMenuAnchorPos,
|
|
57
60
|
selection = _useSharedPluginState.selection;
|
|
58
61
|
var setOutsideClickTargetRef = (0, _react.useContext)(_uiReact.OutsideClickTargetRefContext);
|
|
59
62
|
var menuRef = (0, _react.useRef)(null);
|
|
@@ -83,6 +86,13 @@ var LayoutColumnMenu = exports.LayoutColumnMenu = /*#__PURE__*/_react.default.me
|
|
|
83
86
|
if (event.target instanceof Element && event.target.closest('[data-toolbar-nested-dropdown-menu]')) {
|
|
84
87
|
return;
|
|
85
88
|
}
|
|
89
|
+
|
|
90
|
+
// Clicking a drag handle should let the drag handle's own click handler
|
|
91
|
+
// update selection/menu state. Treating it as a generic outside click
|
|
92
|
+
// races that transaction and can immediately close the layout column menu.
|
|
93
|
+
if (event.target instanceof Element && event.target.closest(_styles.DRAG_HANDLE_SELECTOR)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
86
96
|
closeLayoutColumnMenu();
|
|
87
97
|
}, [closeLayoutColumnMenu]);
|
|
88
98
|
var handleSetIsOpen = (0, _react.useCallback)(function (isOpen) {
|
|
@@ -99,8 +109,8 @@ var LayoutColumnMenu = exports.LayoutColumnMenu = /*#__PURE__*/_react.default.me
|
|
|
99
109
|
}, [setOutsideClickTargetRef]);
|
|
100
110
|
var components = (_api$uiControlRegistr = api === null || api === void 0 || (_api$uiControlRegistr2 = api.uiControlRegistry) === null || _api$uiControlRegistr2 === void 0 ? void 0 : _api$uiControlRegistr2.actions.getComponents(_keys.LAYOUT_COLUMN_MENU.key)) !== null && _api$uiControlRegistr !== void 0 ? _api$uiControlRegistr : [];
|
|
101
111
|
var target = (0, _react.useMemo)(function () {
|
|
102
|
-
return isLayoutColumnMenuOpen ? getLayoutColumnMenuTarget(editorView, selection) : null;
|
|
103
|
-
}, [editorView, isLayoutColumnMenuOpen, selection]);
|
|
112
|
+
return isLayoutColumnMenuOpen ? getLayoutColumnMenuTarget(editorView, selection, layoutColumnMenuAnchorPos) : null;
|
|
113
|
+
}, [editorView, isLayoutColumnMenuOpen, layoutColumnMenuAnchorPos, selection]);
|
|
104
114
|
var hasValidTarget = target instanceof HTMLElement;
|
|
105
115
|
(0, _react.useEffect)(function () {
|
|
106
116
|
if (isLayoutColumnMenuOpen && (!hasValidTarget || components.length === 0)) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSelectedLayoutColumns = void 0;
|
|
7
|
+
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
8
|
+
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
9
|
+
var useSelectedLayoutColumns = exports.useSelectedLayoutColumns = function useSelectedLayoutColumns(api) {
|
|
10
|
+
return (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection'], function (states) {
|
|
11
|
+
var _states$selectionStat;
|
|
12
|
+
return (0, _layoutColumnSelection.getSelectedLayoutColumns)((_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection);
|
|
13
|
+
});
|
|
14
|
+
};
|