UNPKG

@atlaskit/editor-plugin-list

Version:

List plugin for @atlaskit/editor-core

79 lines (78 loc) • 3.17 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.joinListItemForward = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _analytics = require("@atlaskit/editor-common/analytics"); var _utils = require("@atlaskit/editor-common/utils"); var _state = require("@atlaskit/editor-prosemirror/state"); var _utils2 = require("@atlaskit/editor-prosemirror/utils"); var _fg = require("@atlaskit/platform-feature-flags/fg"); var _joinListItemsForward = require("../actions/join-list-items-forward"); var joinListItemForward = exports.joinListItemForward = function joinListItemForward(editorAnalyticsAPI) { return function (state, dispatch) { var tr = state.tr, $head = state.selection.$head; var walkNode = (0, _utils.walkNextNode)($head); if (!(0, _utils.isEmptySelectionAtEnd)(state)) { return false; } if ((0, _fg.fg)('platform_editor_blocks_patch_7')) { var interveningSyncBlockPos; // walkNextNode can skip leaf nodes because they have no resolvable content position. state.doc.nodesBetween($head.pos, walkNode.$pos.pos, function (node, pos) { if (interveningSyncBlockPos === undefined && node.type.name === 'syncBlock') { interveningSyncBlockPos = pos; } return interveningSyncBlockPos === undefined; }); if (interveningSyncBlockPos !== undefined) { if (dispatch) { var selection = _state.NodeSelection.create(state.doc, interveningSyncBlockPos); dispatch(tr.setSelection(selection).scrollIntoView()); } return true; } } var scenarios = (0, _joinListItemsForward.calcJoinListScenario)(walkNode, $head); if (!scenarios) { return false; } var _scenarios = (0, _slicedToArray2.default)(scenarios, 2), scenario = _scenarios[0], action = _scenarios[1]; var result = action({ tr: tr, $next: walkNode.$pos, $head: $head }); if (!result) { return false; } var _state$schema$nodes = state.schema.nodes, bulletList = _state$schema$nodes.bulletList, orderedList = _state$schema$nodes.orderedList; var listParent = (0, _utils2.findParentNodeOfType)([bulletList, orderedList])(tr.selection); var actionSubjectId = _analytics.ACTION_SUBJECT_ID.FORMAT_LIST_BULLET; if (listParent && listParent.node.type === orderedList) { actionSubjectId = _analytics.ACTION_SUBJECT_ID.FORMAT_LIST_NUMBER; } editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({ action: _analytics.ACTION.LIST_ITEM_JOINED, actionSubject: _analytics.ACTION_SUBJECT.LIST, actionSubjectId: actionSubjectId, eventType: _analytics.EVENT_TYPE.TRACK, attributes: { inputMethod: _analytics.INPUT_METHOD.KEYBOARD, direction: _analytics.DELETE_DIRECTION.FORWARD, scenario: scenario } })(tr); if (dispatch) { dispatch(tr); } return true; }; };