UNPKG

@atlaskit/editor-plugin-block-controls

Version:

Block controls plugin for @atlaskit/editor-core

63 lines (59 loc) 3.12 kB
/** Document range containing a heading and all content in its section. */ /** Returns the full section range when the heading at this position is collapsed. */ export var getCollapsedHeadingRange = function getCollapsedHeadingRange(api, headingPos) { var _api$blockCollapse; var sectionEnd = api === null || api === void 0 || (_api$blockCollapse = api.blockCollapse) === null || _api$blockCollapse === void 0 || (_api$blockCollapse = _api$blockCollapse.sharedState.currentState()) === null || _api$blockCollapse === void 0 ? void 0 : _api$blockCollapse.collapsedSectionEnds.get(headingPos); return sectionEnd === undefined ? undefined : { from: headingPos, to: sectionEnd }; }; /** Returns whether the heading at this position has a collapsed section. */ export var isCollapsedHeading = function isCollapsedHeading(api, headingPos) { var _api$blockCollapse$sh, _api$blockCollapse2; return (_api$blockCollapse$sh = api === null || api === void 0 || (_api$blockCollapse2 = api.blockCollapse) === null || _api$blockCollapse2 === void 0 || (_api$blockCollapse2 = _api$blockCollapse2.sharedState.currentState()) === null || _api$blockCollapse2 === void 0 ? void 0 : _api$blockCollapse2.collapsedSectionEnds.has(headingPos)) !== null && _api$blockCollapse$sh !== void 0 ? _api$blockCollapse$sh : false; }; /** Selects a collapsed section for drag or block-menu operations, optionally expanding it. */ export var prepareCollapsedHeadingSelection = function prepareCollapsedHeadingSelection(_ref) { var _api$blockControls; var api = _ref.api, expand = _ref.expand, headingPos = _ref.headingPos, tr = _ref.tr; var range = getCollapsedHeadingRange(api, headingPos); if (!range) { return false; } if (expand) { var _api$blockCollapse3; api === null || api === void 0 || (_api$blockCollapse3 = api.blockCollapse) === null || _api$blockCollapse3 === void 0 || _api$blockCollapse3.commands.expandHeading(headingPos)({ tr: tr }); } api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || _api$blockControls.commands.setMultiSelectPositions(range.from, range.to)({ tr: tr }); return true; }; /** Preserves collapse for root moves and expands headings moved into nested containers. */ export var updateCollapsedHeadingAfterMove = function updateCollapsedHeadingAfterMove(_ref2) { var _api$blockCollapse5; var api = _ref2.api, destinationPos = _ref2.destinationPos, isNested = _ref2.isNested, tr = _ref2.tr, wasCollapsed = _ref2.wasCollapsed; if (!wasCollapsed) { return; } if (isNested) { var _api$blockCollapse4; api === null || api === void 0 || (_api$blockCollapse4 = api.blockCollapse) === null || _api$blockCollapse4 === void 0 || _api$blockCollapse4.commands.expandHeading(destinationPos)({ tr: tr }); return; } api === null || api === void 0 || (_api$blockCollapse5 = api.blockCollapse) === null || _api$blockCollapse5 === void 0 || _api$blockCollapse5.commands.collapseHeadingsAtPositions([destinationPos])({ tr: tr }); };