| 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 : /home/bitnami/htdocs/app/node_modules/prosemirror-gapcursor/dist/ |
Upload File : |
{"version":3,"file":"index.es.js","sources":["../src/gapcursor.js","../src/index.js"],"sourcesContent":["import {Selection, NodeSelection} from \"prosemirror-state\"\nimport {Slice} from \"prosemirror-model\"\n\n// ::- Gap cursor selections are represented using this class. Its\n// `$anchor` and `$head` properties both point at the cursor position.\nexport class GapCursor extends Selection {\n // : (ResolvedPos)\n constructor($pos) {\n super($pos, $pos)\n }\n\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head))\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos)\n }\n\n content() { return Slice.empty }\n\n eq(other) {\n return other instanceof GapCursor && other.head == this.head\n }\n\n toJSON() {\n return {type: \"gapcursor\", pos: this.head}\n }\n\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\") throw new RangeError(\"Invalid input for GapCursor.fromJSON\")\n return new GapCursor(doc.resolve(json.pos))\n }\n\n getBookmark() { return new GapBookmark(this.anchor) }\n\n static valid($pos) {\n let parent = $pos.parent\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos)) return false\n let override = parent.type.spec.allowGapCursor\n if (override != null) return override\n let deflt = parent.contentMatchAt($pos.index()).defaultType\n return deflt && deflt.isTextblock\n }\n\n static findFrom($pos, dir, mustMove) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos)) return $pos\n let pos = $pos.pos, next = null\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d)\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1)\n break\n } else if (d == 0) {\n return null\n }\n pos += dir\n let $cur = $pos.doc.resolve(pos)\n if (GapCursor.valid($cur)) return $cur\n }\n\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir)\n mustMove = false\n continue search\n }\n break\n }\n next = inside\n pos += dir\n let $cur = $pos.doc.resolve(pos)\n if (GapCursor.valid($cur)) return $cur\n }\n\n return null\n }\n }\n}\n\nGapCursor.prototype.visible = false\n\nSelection.jsonID(\"gapcursor\", GapCursor)\n\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos))\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos)\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos)\n }\n}\n\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d)\n // At the start of this parent, look at next one\n if (index == 0) continue\n // See if the node before (or its first ancestor) is closed\n for (let before = $pos.node(d).child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating) return true\n if (before.inlineContent) return false\n }\n }\n // Hit start of document\n return true\n}\n\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d)\n if (index == parent.childCount) continue\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating) return true\n if (after.inlineContent) return false\n }\n }\n return true\n}\n","import {keydownHandler} from \"prosemirror-keymap\"\nimport {TextSelection, NodeSelection, Plugin} from \"prosemirror-state\"\nimport {Decoration, DecorationSet} from \"prosemirror-view\"\n\nimport {GapCursor} from \"./gapcursor\"\n\n// :: () → Plugin\n// Create a gap cursor plugin. When enabled, this will capture clicks\n// near and arrow-key-motion past places that don't have a normally\n// selectable position nearby, and create a gap cursor selection for\n// them. The cursor is drawn as an element with class\n// `ProseMirror-gapcursor`. You can either include\n// `style/gapcursor.css` from the package's directory or add your own\n// styles to make it visible.\nexport const gapCursor = function() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n\n createSelectionBetween(_view, $anchor, $head) {\n if ($anchor.pos == $head.pos && GapCursor.valid($head)) return new GapCursor($head)\n },\n\n handleClick,\n handleKeyDown\n }\n })\n}\n\nexport {GapCursor}\n\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n})\n\nfunction arrow(axis, dir) {\n let dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\")\n return function(state, dispatch, view) {\n let sel = state.selection\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0) return false\n mustMove = false\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before())\n }\n let $found = GapCursor.findFrom($start, dir, mustMove)\n if (!$found) return false\n if (dispatch) dispatch(state.tr.setSelection(new GapCursor($found)))\n return true\n }\n}\n\nfunction handleClick(view, pos, event) {\n if (!view.editable) return false\n let $pos = view.state.doc.resolve(pos)\n if (!GapCursor.valid($pos)) return false\n let {inside} = view.posAtCoords({left: event.clientX, top: event.clientY})\n if (inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(inside))) return false\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)))\n return true\n}\n\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor)) return null\n let node = document.createElement(\"div\")\n node.className = \"ProseMirror-gapcursor\"\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, {key: \"gapcursor\"})])\n}\n"],"names":["super","let","$cur","const"],"mappings":";;;;;;;AAKA,IAAa,SAAS;EAEpB,kBAAW,CAAC,IAAI,EAAE;IAChBA,cAAK,OAAC,IAAI,EAAE,IAAI,EAAC;;;;;8CAClB;;sBAED,oBAAI,GAAG,EAAE,OAAO,EAAE;IAChBC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;IAC9C,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1E;;sBAED,8BAAU,EAAE,OAAO,KAAK,CAAC,KAAK,GAAE;;sBAEhC,kBAAG,KAAK,EAAE;IACR,OAAO,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;IAC7D;;sBAED,4BAAS;IACP,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;IAC3C;;EAED,UAAO,8BAAS,GAAG,EAAE,IAAI,EAAE;IACzB,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,QAAQ,IAAE,MAAM,IAAI,UAAU,CAAC,sCAAsC,GAAC;IAC7F,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C;;sBAED,sCAAc,EAAE,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAE;;EAErD,UAAO,wBAAM,IAAI,EAAE;IACjBA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAM;IACxB,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAE,OAAO,OAAK;IACjFA,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAc;IAC9C,IAAI,QAAQ,IAAI,IAAI,IAAE,OAAO,UAAQ;IACrCA,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,YAAW;IAC3D,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW;IAClC;;EAED,UAAO,8BAAS,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;IACnC,MAAM,EAAE,SAAS;MACf,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAE,OAAO,MAAI;MACnDA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,KAAI;;MAE/B,KAAKA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE;QAC7BA,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;QACzB,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;UACxE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC;UACrE,KAAK;SACN,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE;UACjB,OAAO,IAAI;SACZ;QACD,GAAG,IAAI,IAAG;QACVA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAC;QAChC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAE,OAAO,MAAI;OACvC;;;MAGD,SAAS;QACPA,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAS;QACvD,IAAI,CAAC,MAAM,EAAE;UACX,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YACpE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAC;YAClD,QAAQ,GAAG,MAAK;YAChB,SAAS,MAAM;WAChB;UACD,KAAK;SACN;QACD,IAAI,GAAG,OAAM;QACb,GAAG,IAAI,IAAG;QACVA,IAAIC,MAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAC;QAChC,IAAI,SAAS,CAAC,KAAK,CAACA,MAAI,CAAC,IAAE,OAAOA,QAAI;OACvC;;MAED,OAAO,IAAI;KACZ;GACF;;;EA1E4B,YA2E9B;;AAED,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,MAAK;;AAEnC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAC;;AAExC,IAAM,WAAW,GACf,oBAAW,CAAC,GAAG,EAAE;EACf,IAAI,CAAC,GAAG,GAAG,IAAG;EACf;AACH,sBAAE,oBAAI,OAAO,EAAE;EACX,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C;AACH,sBAAE,4BAAQ,GAAG,EAAE;EACb,IAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAC;EAChC,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;CAC1E,CACF;;AAED,SAAS,YAAY,CAAC,IAAI,EAAE;EAC1B,KAAKD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACpCA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC;;IAEzB,IAAI,KAAK,IAAI,CAAC,IAAE,UAAQ;;IAExB,KAAKA,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;MAC3E,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAE,OAAO,MAAI;MACjH,IAAI,MAAM,CAAC,aAAa,IAAE,OAAO,OAAK;KACvC;GACF;;EAED,OAAO,IAAI;CACZ;;AAED,SAAS,WAAW,CAAC,IAAI,EAAE;EACzB,KAAKA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACpCA,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;IACrD,IAAI,KAAK,IAAI,MAAM,CAAC,UAAU,IAAE,UAAQ;IACxC,KAAKA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE;MAC/D,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAE,OAAO,MAAI;MAC7G,IAAI,KAAK,CAAC,aAAa,IAAE,OAAO,OAAK;KACtC;GACF;EACD,OAAO,IAAI;CACZ;;;;;;;;;;AC9GD,AAAY,IAAC,SAAS,GAAG,WAAW;EAClC,OAAO,IAAI,MAAM,CAAC;IAChB,KAAK,EAAE;MACL,WAAW,EAAE,aAAa;;MAE1B,uDAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;QAC5C,IAAI,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAE,OAAO,IAAI,SAAS,CAAC,KAAK,GAAC;OACpF;;mBAED,WAAW;qBACX,aAAa;KACd;GACF,CAAC;EACH;;AAIDE,IAAM,aAAa,GAAG,cAAc,CAAC;EACnC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EAC/B,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;EAC/B,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC5B,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9B,EAAC;;AAEF,SAAS,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;EACxBF,IAAI,MAAM,GAAG,IAAI,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,EAAC;EACtF,OAAO,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACrCA,IAAI,GAAG,GAAG,KAAK,CAAC,UAAS;IACzBA,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAK;IAChE,IAAI,GAAG,YAAY,aAAa,EAAE;MAChC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,IAAE,OAAO,OAAK;MACnE,QAAQ,GAAG,MAAK;MAChB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAC;KACvE;IACDA,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAC;IACtD,IAAI,CAAC,MAAM,IAAE,OAAO,OAAK;IACzB,IAAI,QAAQ,IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,IAAC;IACpE,OAAO,IAAI;GACZ;CACF;;AAED,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;EACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAE,OAAO,OAAK;EAChCA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAC;EACtC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAE,OAAO,OAAK;EACxC,OAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;EAApE,wBAAqE;EAC1E,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAE,OAAO,OAAK;EAC1F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAC;EAC9D,OAAO,IAAI;CACZ;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE;EAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,YAAY,SAAS,CAAC,IAAE,OAAO,MAAI;EACxDA,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAC;EACxC,IAAI,CAAC,SAAS,GAAG,wBAAuB;EACxC,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC5G;;;;"}