| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/node_modules/prosemirror-commands/dist/ |
Upload File : |
{"version":3,"file":"index.js","sources":["../src/commands.js"],"sourcesContent":["import {joinPoint, canJoin, findWrapping, liftTarget, canSplit, ReplaceAroundStep} from \"prosemirror-transform\"\nimport {Slice, Fragment} from \"prosemirror-model\"\nimport {Selection, TextSelection, NodeSelection, AllSelection} from \"prosemirror-state\"\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Delete the selection, if there is one.\nexport function deleteSelection(state, dispatch) {\n if (state.selection.empty) return false\n if (dispatch) dispatch(state.tr.deleteSelection().scrollIntoView())\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and at the start of a textblock, try to\n// reduce the distance between that block and the one before it—if\n// there's a block directly before it that can be joined, join them.\n// If not, try to move the selected block closer to the next one in\n// the document structure by lifting it out of its parent or moving it\n// into a parent of the previous block. Will use the view for accurate\n// (bidi-aware) start-of-textblock detection if given.\nexport function joinBackward(state, dispatch, view) {\n let {$cursor} = state.selection\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return false\n\n let $cut = findCutBefore($cursor)\n\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range)\n if (target == null) return false\n if (dispatch) dispatch(state.tr.lift(range, target).scrollIntoView())\n return true\n }\n\n let before = $cut.nodeBefore\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n return true\n\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n if (dispatch) {\n let tr = state.tr.deleteRange($cursor.before(), $cursor.after())\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize))\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView())\n return true\n }\n\n return false\n}\n\nfunction textblockAt(node, side) {\n for (; node; node = (side == \"start\" ? node.firstChild : node.lastChild))\n if (node.isTextblock) return true\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the start of a textblock, select\n// the node before that textblock, if possible. This is intended to be\n// bound to keys like backspace, after\n// [`joinBackward`](#commands.joinBackward) or other deleting\n// commands, as a fall-back behavior when the schema doesn't allow\n// deletion at the selected point.\nexport function selectNodeBackward(state, dispatch, view) {\n let {$head, empty} = state.selection, $cut = $head\n if (!empty) return false\n\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0) return false\n $cut = findCutBefore($head)\n }\n let node = $cut && $cut.nodeBefore\n if (!node || !NodeSelection.isSelectable(node)) return false\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView())\n return true\n}\n\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating) for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0) return $pos.doc.resolve($pos.before(i + 1))\n if ($pos.node(i).type.spec.isolating) break\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// If the selection is empty and the cursor is at the end of a\n// textblock, try to reduce or remove the boundary between that block\n// and the one after it, either by joining them or by moving the other\n// block closer to this one in the tree structure. Will use the view\n// for accurate start-of-textblock detection if given.\nexport function joinForward(state, dispatch, view) {\n let {$cursor} = state.selection\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return false\n\n let $cut = findCutAfter($cursor)\n\n // If there is no node after this, there's nothing to do\n if (!$cut) return false\n\n let after = $cut.nodeAfter\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch)) return true\n\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n if (dispatch) {\n let tr = state.tr.deleteRange($cursor.before(), $cursor.after())\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)))\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch) dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView())\n return true\n }\n\n return false\n}\n\n// :: (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// When the selection is empty and at the end of a textblock, select\n// the node coming after that textblock, if possible. This is intended\n// to be bound to keys like delete, after\n// [`joinForward`](#commands.joinForward) and similar deleting\n// commands, to provide a fall-back behavior when the schema doesn't\n// allow deletion at the selected point.\nexport function selectNodeForward(state, dispatch, view) {\n let {$head, empty} = state.selection, $cut = $head\n if (!empty) return false\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false\n $cut = findCutAfter($head)\n }\n let node = $cut && $cut.nodeAfter\n if (!node || !NodeSelection.isSelectable(node)) return false\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView())\n return true\n}\n\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating) for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i)\n if ($pos.index(i) + 1 < parent.childCount) return $pos.doc.resolve($pos.after(i + 1))\n if (parent.type.spec.isolating) break\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block or, if there is a text selection, the\n// closest ancestor block of the selection that can be joined, with\n// the sibling above it.\nexport function joinUp(state, dispatch) {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from)) return false\n point = sel.from\n } else {\n point = joinPoint(state.doc, sel.from, -1)\n if (point == null) return false\n }\n if (dispatch) {\n let tr = state.tr.join(point)\n if (nodeSel) tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize))\n dispatch(tr.scrollIntoView())\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Join the selected block, or the closest ancestor of the selection\n// that can be joined, with the sibling after it.\nexport function joinDown(state, dispatch) {\n let sel = state.selection, point\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to)) return false\n point = sel.to\n } else {\n point = joinPoint(state.doc, sel.to, 1)\n if (point == null) return false\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView())\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Lift the selected block, or the closest ancestor block of the\n// selection that can be lifted, out of its parent node.\nexport function lift(state, dispatch) {\n let {$from, $to} = state.selection\n let range = $from.blockRange($to), target = range && liftTarget(range)\n if (target == null) return false\n if (dispatch) dispatch(state.tr.lift(range, target).scrollIntoView())\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the selection is in a node whose type has a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, replace the\n// selection with a newline character.\nexport function newlineInCode(state, dispatch) {\n let {$head, $anchor} = state.selection\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) return false\n if (dispatch) dispatch(state.tr.insertText(\"\\n\").scrollIntoView())\n return true\n}\n\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let {type} = match.edge(i)\n if (type.isTextblock && !type.hasRequiredAttrs()) return type\n }\n return null\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// When the selection is in a node with a truthy\n// [`code`](#model.NodeSpec.code) property in its spec, create a\n// default block after the code block, and move the cursor there.\nexport function exitCode(state, dispatch) {\n let {$head, $anchor} = state.selection\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor)) return false\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after))\n if (!above.canReplaceWith(after, after, type)) return false\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill())\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1))\n dispatch(tr.scrollIntoView())\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If a block node is selected, create an empty paragraph before (if\n// it is its parent's first child) or after it.\nexport function createParagraphNear(state, dispatch) {\n let sel = state.selection, {$from, $to} = sel\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent) return false\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()))\n if (!type || !type.isTextblock) return false\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos\n let tr = state.tr.insert(side, type.createAndFill())\n tr.setSelection(TextSelection.create(tr.doc, side + 1))\n dispatch(tr.scrollIntoView())\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// If the cursor is in an empty textblock that can be lifted, lift the\n// block.\nexport function liftEmptyBlock(state, dispatch) {\n let {$cursor} = state.selection\n if (!$cursor || $cursor.parent.content.size) return false\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before()\n if (canSplit(state.doc, before)) {\n if (dispatch) dispatch(state.tr.split(before).scrollIntoView())\n return true\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range)\n if (target == null) return false\n if (dispatch) dispatch(state.tr.lift(range, target).scrollIntoView())\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Split the parent block of the selection. If the selection is a text\n// selection, also delete its content.\nexport function splitBlock(state, dispatch) {\n let {$from, $to} = state.selection\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos)) return false\n if (dispatch) dispatch(state.tr.split($from.pos).scrollIntoView())\n return true\n }\n\n if (!$from.parent.isBlock) return false\n\n if (dispatch) {\n let atEnd = $to.parentOffset == $to.parent.content.size\n let tr = state.tr\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection) tr.deleteSelection()\n let deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)))\n let types = atEnd && deflt ? [{type: deflt}] : null\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types)\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt && [{type: deflt}])) {\n types = [{type: deflt}]\n can = true\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types)\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n let first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first)\n if ($from.parent.canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt)\n }\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Acts like [`splitBlock`](#commands.splitBlock), but without\n// resetting the set of active marks at the cursor.\nexport function splitBlockKeepMarks(state, dispatch) {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks())\n if (marks) tr.ensureMarks(marks)\n dispatch(tr)\n }))\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Move the selection to the node wrapping the current selection, if\n// any. (Will not select the document node.)\nexport function selectParentNode(state, dispatch) {\n let {$from, to} = state.selection, pos\n let same = $from.sharedDepth(to)\n if (same == 0) return false\n pos = $from.before(same)\n if (dispatch) dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)))\n return true\n}\n\n// :: (EditorState, ?(tr: Transaction)) → bool\n// Select the whole document.\nexport function selectAll(state, dispatch) {\n if (dispatch) dispatch(state.tr.setSelection(new AllSelection(state.doc)))\n return true\n}\n\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index()\n if (!before || !after || !before.type.compatibleContent(after.type)) return false\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch) dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView())\n return true\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false\n if (dispatch)\n dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView())\n return true\n}\n\nfunction deleteBarrier(state, $cut, dispatch) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match\n if (before.type.spec.isolating || after.type.spec.isolating) return false\n if (joinMaybeClear(state, $cut, dispatch)) return true\n\n let canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1)\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap))\n wrap = Fragment.from(before.copy(wrap))\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true))\n let joinAt = end + 2 * conn.length\n if (canJoin(tr.doc, joinAt)) tr.join(joinAt)\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n\n let selAfter = Selection.findFrom($cut, 1)\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range)\n if (target != null && target >= $cut.depth) {\n if (dispatch) dispatch(state.tr.lift(range, target).scrollIntoView())\n return true\n }\n\n if (canDelAfter && after.isTextblock && textblockAt(before, \"end\")) {\n let at = before, wrap = []\n for (;;) {\n wrap.push(at)\n if (at.isTextblock) break\n at = at.lastChild\n }\n if (at.canReplace(at.childCount, at.childCount, after.content)) {\n if (dispatch) {\n let end = Fragment.empty\n for (let i = wrap.length - 1; i >= 0; i--) end = Fragment.from(wrap[i].copy(end))\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize,\n $cut.pos + 1, $cut.pos + after.nodeSize - 1,\n new Slice(end, wrap.length, 0), 0, true))\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n }\n\n return false\n}\n\n// Parameterized commands\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Wrap the selection in a node of the given type with the given\n// attributes.\nexport function wrapIn(nodeType, attrs) {\n return function(state, dispatch) {\n let {$from, $to} = state.selection\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs)\n if (!wrapping) return false\n if (dispatch) dispatch(state.tr.wrap(range, wrapping).scrollIntoView())\n return true\n }\n}\n\n// :: (NodeType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Returns a command that tries to set the selected textblocks to the\n// given node type with the given attributes.\nexport function setBlockType(nodeType, attrs) {\n return function(state, dispatch) {\n let {from, to} = state.selection\n let applicable = false\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable) return false\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs)) return\n if (node.type == nodeType) {\n applicable = true\n } else {\n let $pos = state.doc.resolve(pos), index = $pos.index()\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType)\n }\n })\n if (!applicable) return false\n if (dispatch) dispatch(state.tr.setBlockType(from, to, nodeType, attrs).scrollIntoView())\n return true\n }\n}\n\nfunction markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let {$from, $to} = ranges[i]\n let can = $from.depth == 0 ? doc.type.allowsMarkType(type) : false\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can) return false\n can = node.inlineContent && node.type.allowsMarkType(type)\n })\n if (can) return true\n }\n return false\n}\n\n// :: (MarkType, ?Object) → (state: EditorState, dispatch: ?(tr: Transaction)) → bool\n// Create a command function that toggles the given mark with the\n// given attributes. Will return `false` when the current selection\n// doesn't support that mark. This will remove the mark if any marks\n// of that type exist in the selection, or add it otherwise. If the\n// selection is empty, this applies to the [stored\n// marks](#state.EditorState.storedMarks) instead of a range of the\n// document.\nexport function toggleMark(markType, attrs) {\n return function(state, dispatch) {\n let {empty, $cursor, ranges} = state.selection\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) return false\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType))\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)))\n } else {\n let has = false, tr = state.tr\n for (let i = 0; !has && i < ranges.length; i++) {\n let {$from, $to} = ranges[i]\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType)\n }\n for (let i = 0; i < ranges.length; i++) {\n let {$from, $to} = ranges[i]\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType)\n } else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore\n let spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0\n let spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0\n if (from + spaceStart < to) { from += spaceStart; to -= spaceEnd }\n tr.addMark(from, to, markType.create(attrs))\n }\n }\n dispatch(tr.scrollIntoView())\n }\n }\n return true\n }\n}\n\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return tr => {\n if (!tr.isGeneric) return dispatch(tr)\n\n let ranges = []\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i]\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j])\n map.forEach((_s, _e, from, to) => ranges.push(from, to))\n }\n\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = []\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1]\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth)\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index)\n if (!after) break\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1)\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos)\n }\n pos += after.nodeSize\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b)\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i])) tr.join(joinable[i])\n }\n dispatch(tr)\n }\n}\n\n// :: ((state: EditorState, ?(tr: Transaction)) → bool, union<(before: Node, after: Node) → bool, [string]>) → (state: EditorState, ?(tr: Transaction)) → bool\n// Wrap a command so that, when it produces a transform that causes\n// two joinable nodes to end up next to each other, those are joined.\n// Nodes are considered joinable when they are of the same type and\n// when the `isJoinable` predicate returns true for them or, if an\n// array of strings was passed, if their node type name is in that\n// array.\nexport function autoJoin(command, isJoinable) {\n if (Array.isArray(isJoinable)) {\n let types = isJoinable\n isJoinable = node => types.indexOf(node.type.name) > -1\n }\n return (state, dispatch) => command(state, dispatch && wrapDispatchForJoin(dispatch, isJoinable))\n}\n\n// :: (...[(EditorState, ?(tr: Transaction), ?EditorView) → bool]) → (EditorState, ?(tr: Transaction), ?EditorView) → bool\n// Combine a number of command functions into a single function (which\n// calls them one by one until one returns true).\nexport function chainCommands(...commands) {\n return function(state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view)) return true\n return false\n }\n}\n\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward)\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward)\n\n// :: Object\n// A basic keymap containing bindings not specific to any schema.\n// Binds the following keys (when multiple commands are listed, they\n// are chained with [`chainCommands`](#commands.chainCommands)):\n//\n// * **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n// * **Mod-Enter** to `exitCode`\n// * **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n// * **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n// * **Mod-a** to `selectAll`\nexport let pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n}\n\n// :: Object\n// A copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n// **Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n// **Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\n// Ctrl-Delete.\nexport let macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"]\n}\nfor (let key in pcBaseKeymap) macBaseKeymap[key] = pcBaseKeymap[key]\n\n// declare global: os, navigator\nconst mac = typeof navigator != \"undefined\" ? /Mac/.test(navigator.platform)\n : typeof os != \"undefined\" ? os.platform() == \"darwin\" : false\n\n// :: Object\n// Depending on the detected platform, this will hold\n// [`pcBasekeymap`](#commands.pcBaseKeymap) or\n// [`macBaseKeymap`](#commands.macBaseKeymap).\nexport let baseKeymap = mac ? macBaseKeymap : pcBaseKeymap\n"],"names":["let","liftTarget","NodeSelection","Selection","canJoin","joinPoint","AllSelection","TextSelection","canSplit","Fragment","ReplaceAroundStep","Slice","wrap","end","i","tr","findWrapping","$from","$to","const"],"mappings":"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"}