@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
247 lines (244 loc) • 7.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "GapBookmark", {
enumerable: true,
get: function get() {
return _selection.GapBookmark;
}
});
Object.defineProperty(exports, "GapCursorSelection", {
enumerable: true,
get: function get() {
return _selection.GapCursorSelection;
}
});
Object.defineProperty(exports, "JSON_ID", {
enumerable: true,
get: function get() {
return _selection.JSON_ID;
}
});
Object.defineProperty(exports, "RelativeSelectionPos", {
enumerable: true,
get: function get() {
return _types.RelativeSelectionPos;
}
});
Object.defineProperty(exports, "Side", {
enumerable: true,
get: function get() {
return _selection.Side;
}
});
Object.defineProperty(exports, "atTheBeginningOfBlock", {
enumerable: true,
get: function get() {
return _utils3.atTheBeginningOfBlock;
}
});
Object.defineProperty(exports, "atTheBeginningOfDoc", {
enumerable: true,
get: function get() {
return _utils3.atTheBeginningOfDoc;
}
});
Object.defineProperty(exports, "atTheEndOfBlock", {
enumerable: true,
get: function get() {
return _utils3.atTheEndOfBlock;
}
});
Object.defineProperty(exports, "atTheEndOfDoc", {
enumerable: true,
get: function get() {
return _utils3.atTheEndOfDoc;
}
});
exports.createSelectionClickHandler = createSelectionClickHandler;
Object.defineProperty(exports, "endPositionOfParent", {
enumerable: true,
get: function get() {
return _utils3.endPositionOfParent;
}
});
Object.defineProperty(exports, "gapCursorStyles", {
enumerable: true,
get: function get() {
return _styles.gapCursorStyles;
}
});
exports.getAllSelectionAnalyticsPayload = getAllSelectionAnalyticsPayload;
exports.getCellSelectionAnalyticsPayload = getCellSelectionAnalyticsPayload;
exports.getNodeSelectionAnalyticsPayload = getNodeSelectionAnalyticsPayload;
exports.getRangeSelectionAnalyticsPayload = getRangeSelectionAnalyticsPayload;
Object.defineProperty(exports, "hideCaretModifier", {
enumerable: true,
get: function get() {
return _styles.hideCaretModifier;
}
});
Object.defineProperty(exports, "isIgnored", {
enumerable: true,
get: function get() {
return _utils2.isIgnored;
}
});
Object.defineProperty(exports, "isSelectionAtEndOfNode", {
enumerable: true,
get: function get() {
return _utils3.isSelectionAtEndOfNode;
}
});
Object.defineProperty(exports, "isSelectionAtStartOfNode", {
enumerable: true,
get: function get() {
return _utils3.isSelectionAtStartOfNode;
}
});
Object.defineProperty(exports, "isValidTargetNode", {
enumerable: true,
get: function get() {
return _utils2.isValidTargetNode;
}
});
exports.selectNode = void 0;
Object.defineProperty(exports, "setGapCursorAtPos", {
enumerable: true,
get: function get() {
return _actions.setGapCursorAtPos;
}
});
Object.defineProperty(exports, "setGapCursorSelection", {
enumerable: true,
get: function get() {
return _setGapCursorSelection.setGapCursorSelection;
}
});
Object.defineProperty(exports, "setSelectionTopLevelBlocks", {
enumerable: true,
get: function get() {
return _actions.setSelectionTopLevelBlocks;
}
});
Object.defineProperty(exports, "startPositionOfParent", {
enumerable: true,
get: function get() {
return _utils3.startPositionOfParent;
}
});
var _state = require("@atlaskit/editor-prosemirror/state");
var _editorTables = require("@atlaskit/editor-tables");
var _utils = require("@atlaskit/editor-tables/utils");
var _analytics = require("../analytics");
var _types = require("./types");
var _selection = require("./gap-cursor/selection");
var _actions = require("./gap-cursor/actions");
var _utils2 = require("./gap-cursor/utils");
var _setGapCursorSelection = require("./gap-cursor/utils/setGapCursorSelection");
var _styles = require("./gap-cursor/styles");
var _utils3 = require("./utils");
function getNodeSelectionAnalyticsPayload(selection) {
if (selection instanceof _state.NodeSelection) {
return {
action: _analytics.ACTION.SELECTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.NODE,
eventType: _analytics.EVENT_TYPE.TRACK,
attributes: {
node: selection.node.type.name
}
};
}
}
function getAllSelectionAnalyticsPayload(selection) {
if (selection instanceof _state.AllSelection) {
return {
action: _analytics.ACTION.SELECTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.ALL,
eventType: _analytics.EVENT_TYPE.TRACK
};
}
}
function getCellSelectionAnalyticsPayload(state) {
if (state.selection instanceof _editorTables.CellSelection) {
var rect = (0, _utils.selectedRect)(state);
var selectedCells = rect.map.cellsInRect(rect).length;
var totalCells = rect.map.map.length;
return {
action: _analytics.ACTION.SELECTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.CELL,
eventType: _analytics.EVENT_TYPE.TRACK,
attributes: {
selectedCells: selectedCells,
totalCells: totalCells
}
};
}
}
function getRangeSelectionAnalyticsPayload(selection, doc) {
if (selection instanceof _state.TextSelection && selection.from !== selection.to) {
var from = selection.from,
to = selection.to,
anchor = selection.anchor,
head = selection.head;
var nodes = [];
doc.nodesBetween(from, to, function (node, pos) {
// We want to send top-level nodes only, ie.the nodes that would have the selection styling
// We allow text nodes that are not fully covered as they are a special case
if (node.isText || pos >= from && pos + node.nodeSize <= to) {
nodes.push(node.type.name);
return false;
}
});
return {
action: _analytics.ACTION.SELECTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.RANGE,
eventType: _analytics.EVENT_TYPE.TRACK,
attributes: {
from: anchor,
to: head,
nodes: nodes
}
};
}
}
/**
* Insert content, delete a range and create a new selection
* This function automatically handles the mapping of positions for insertion and deletion.
* The new selection is handled as a function since it may not always be necessary to resolve a position to the transactions mapping
*
* @param getSelectionResolvedPos get the resolved position to create a new selection
* @param insertions content to insert at the specified position
* @param deletions the ranges to delete
*/
var selectNode = exports.selectNode = function selectNode(pos) {
return function (state, dispatch) {
if (dispatch) {
dispatch(state.tr.setSelection(new _state.NodeSelection(state.doc.resolve(pos))));
}
return true;
};
};
function createSelectionClickHandler(nodes, isValidTarget, options) {
return function handleClickOn(view, pos, node, nodePos, event, direct) {
if (options.useLongPressSelection) {
return false;
}
if (direct && nodes.indexOf(node.type.name) !== -1) {
if (event.target) {
var _target = event.target;
if (isValidTarget(_target)) {
var selectionPos = options.getNodeSelectionPos ? options.getNodeSelectionPos(view.state, nodePos) : nodePos;
selectNode(selectionPos)(view.state, view.dispatch);
return true;
}
}
}
return false;
};
}