@notmrabhi/flowforge 0.1.32 → 0.1.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/GatewayBranchEdge-9YF32wwN.js +1 -0
  2. package/dist/GatewayBranchEdge-9YF32wwN.js.map +1 -0
  3. package/dist/GatewayBranchEdge-Dxoy5B1A.js +1 -0
  4. package/dist/GatewayBranchEdge-Dxoy5B1A.js.map +1 -0
  5. package/dist/SchemaBuilderDrawer-B1dLgTM1.js +1 -0
  6. package/dist/SchemaBuilderDrawer-B1dLgTM1.js.map +1 -0
  7. package/dist/SchemaBuilderDrawer-CkUfYbGB.js +1 -0
  8. package/dist/SchemaBuilderDrawer-CkUfYbGB.js.map +1 -0
  9. package/dist/bpmn-CcuE2X_Q.js +1 -0
  10. package/dist/bpmn-CcuE2X_Q.js.map +1 -0
  11. package/dist/bpmn-CtfWDaOY.js +1 -0
  12. package/dist/bpmn-CtfWDaOY.js.map +1 -0
  13. package/dist/canvas.cjs +1 -0
  14. package/dist/canvas.cjs.map +1 -0
  15. package/dist/canvas.js +1 -0
  16. package/dist/canvas.js.map +1 -0
  17. package/dist/canvasTokens-CAD6G24b.js +1 -0
  18. package/dist/canvasTokens-CAD6G24b.js.map +1 -0
  19. package/dist/canvasTokens-gKNYrPl4.js +1 -0
  20. package/dist/canvasTokens-gKNYrPl4.js.map +1 -0
  21. package/dist/core.cjs +1 -0
  22. package/dist/core.cjs.map +1 -0
  23. package/dist/core.js +1 -0
  24. package/dist/core.js.map +1 -0
  25. package/dist/defaultUi.cjs +1 -0
  26. package/dist/defaultUi.cjs.map +1 -0
  27. package/dist/defaultUi.js +1 -0
  28. package/dist/defaultUi.js.map +1 -0
  29. package/dist/form.cjs +1 -0
  30. package/dist/form.cjs.map +1 -0
  31. package/dist/form.js +1 -0
  32. package/dist/form.js.map +1 -0
  33. package/dist/index-8bqYHvzi.js +1 -0
  34. package/dist/index-8bqYHvzi.js.map +1 -0
  35. package/dist/index-B31-Y5uO.js +1 -0
  36. package/dist/index-B31-Y5uO.js.map +1 -0
  37. package/dist/index-B3aHpb84.js +1 -0
  38. package/dist/index-B3aHpb84.js.map +1 -0
  39. package/dist/index-BAg_DA8n.js +1 -0
  40. package/dist/index-BAg_DA8n.js.map +1 -0
  41. package/dist/index-BAiSdZW3.js +1 -0
  42. package/dist/index-BAiSdZW3.js.map +1 -0
  43. package/dist/index-BnzttJ4w.js +1 -0
  44. package/dist/index-BnzttJ4w.js.map +1 -0
  45. package/dist/index-BysKSEtZ.js +1 -0
  46. package/dist/index-BysKSEtZ.js.map +1 -0
  47. package/dist/index-CkjEllpd.js +1 -0
  48. package/dist/index-CkjEllpd.js.map +1 -0
  49. package/dist/index-Cw9DC-tf.js +1 -0
  50. package/dist/index-Cw9DC-tf.js.map +1 -0
  51. package/dist/index-CzPi8KQC.js +1 -0
  52. package/dist/index-CzPi8KQC.js.map +1 -0
  53. package/dist/index-D14V8rKX.js +1 -0
  54. package/dist/index-D14V8rKX.js.map +1 -0
  55. package/dist/index-DNDp8nLT.js +1 -0
  56. package/dist/index-DNDp8nLT.js.map +1 -0
  57. package/dist/index-Dlw7CMau.js +1 -0
  58. package/dist/index-Dlw7CMau.js.map +1 -0
  59. package/dist/index-Dpl-Q8a4.js +1 -0
  60. package/dist/index-Dpl-Q8a4.js.map +1 -0
  61. package/dist/index-gtgq_241.js +1 -0
  62. package/dist/index-gtgq_241.js.map +1 -0
  63. package/dist/index-l6kvDx-m.js +1 -0
  64. package/dist/index-l6kvDx-m.js.map +1 -0
  65. package/dist/index-lcviy90e.js +1 -0
  66. package/dist/index-lcviy90e.js.map +1 -0
  67. package/dist/index-wOnYb3DO.js +1 -0
  68. package/dist/index-wOnYb3DO.js.map +1 -0
  69. package/dist/index.cjs +1 -0
  70. package/dist/index.cjs.map +1 -0
  71. package/dist/index.js +1 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/messages-CO299wPN.js +1 -0
  74. package/dist/messages-CO299wPN.js.map +1 -0
  75. package/dist/messages-O9Tw_XXR.js +1 -0
  76. package/dist/messages-O9Tw_XXR.js.map +1 -0
  77. package/dist/nodeRegistry.cjs +1 -0
  78. package/dist/nodeRegistry.cjs.map +1 -0
  79. package/dist/nodeRegistry.js +1 -0
  80. package/dist/nodeRegistry.js.map +1 -0
  81. package/dist/templateRegistry.cjs +1 -0
  82. package/dist/templateRegistry.cjs.map +1 -0
  83. package/dist/templateRegistry.js +1 -0
  84. package/dist/templateRegistry.js.map +1 -0
  85. package/dist/templateSkeletons-B5x8nV9i.js +1 -0
  86. package/dist/templateSkeletons-B5x8nV9i.js.map +1 -0
  87. package/dist/templateSkeletons-BdFN__gr.js +1 -0
  88. package/dist/templateSkeletons-BdFN__gr.js.map +1 -0
  89. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D14V8rKX.js","sources":["../node_modules/@lezer/lr/dist/index.js"],"sourcesContent":["import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */ && this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n if (type < parser.minRepeatTerm && this.reducePos < this.pos)\n this.reducePos = this.pos;\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from;\n if (type < parser.minRepeatTerm && start == this.reducePos && this.reducePos < this.pos)\n this.reducePos = this.pos;\n let size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let top = this.buffer.length;\n if (top > 0 && this.buffer[top - 4] == 0 /* Term.Err */ && this.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (this.buffer[top - 2] >= start) {\n this.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && (this.buffer[index - 4] != 0 /* Term.Err */ || this.buffer[index - 1] < 0)) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n this.pos = end;\n let skipped = parser.stateFlag(nextState, 1 /* StateFlag.Skipped */);\n // Skipped or zero-length non-tree tokens don't move reducePos\n if (!skipped && (end > start || type <= parser.maxNode))\n this.reducePos = end;\n this.pushState(nextState, skipped ? start : Math.min(start, this.reducePos));\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Leave off top error node, if there, because that might be\n // merged with other nodes.\n if (off && parent.buffer[off - 4] == 0 /* Term.Err */)\n off -= 4;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead <= this.lookAhead)\n return false;\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n return true;\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */) {\n newStacks.sort((a, b) => b.score - a.score);\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; j < 10 /* Rec.ForceReduceLimit */ && force.forceReduce(); j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < force.score) {\n finished = force;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n"],"names":["Stack","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","_","i","cx","StackContext","start","action","_a","depth","type","parser","lookaheadRecord","dPrec","base","size","count","baseStateID","term","end","mustSink","top","index","mustMove","scan","nextState","skipped","next","nextStart","nextEnd","value","off","isNode","sim","SimulatedStack","nextStates","best","s","v","result","reduce","target","backup","seen","explore","rDepth","found","other","dialectID","last","context","newCx","tracker","goto","StackBufferCursor","decodeArray","input","Type","array","out","stop","digit","CachedToken","nullToken","InputStream","ranges","offset","assoc","range","idx","resolved","token","endOffset","endPos","chunk","chunkPos","nextChunk","n","from","to","r","TokenGroup","data","id","readToken","LocalTokenGroup","precTable","elseToken","atEof","nextPos","ExternalTokenizer","options","group","precOffset","groupMask","dialect","accEnd","overrides","low","high","mid","findOffset","prev","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","tree","side","cursor","IterMode","FragmentCursor","fragments","nodeSet","fr","Tree","NodeProp","TokenCache","stream","actionIndex","main","tokenizers","mask","tokenizer","startIndex","set","pair","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","a","b","outer","j","split","strictCx","cxHash","cached","match","inner","defaultReduce","actions","localStack","pushStackDedup","tokens","restarted","tokenEnd","force","forceBase","insert","Dialect","source","flags","disabled","x","ContextTracker","spec","LRParser","Parser","nodeNames","topTerms","nodeProps","setProp","nodeID","prop","propSpec","NodeSet","name","NodeType","DefaultBufferLength","tokenArray","getSpecializer","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","config","copy","info","t","prec","values","part"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,3 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const je=require("./index-BAg_DA8n.js"),b=require("react"),l=require("./index-B31-Y5uO.js"),ce=require("./index-CkjEllpd.js"),Sn=require("react/jsx-runtime"),kn=t=>{let{state:e}=t,r=e.doc.lineAt(e.selection.main.from),n=Ue(t.state,r.from);return n.line?xn(t):n.block?bn(t):!1};function He(t,e){return({state:r,dispatch:n})=>{if(r.readOnly)return!1;let i=t(e,r);return i?(n(r.update(i)),!0):!1}}const xn=He(Mn,0),Cn=He(yt,0),bn=He((t,e)=>yt(t,e,En(e)),0);function Ue(t,e){let r=t.languageDataAt("commentTokens",e,1);return r.length?r[0]:{}}const te=50;function vn(t,{open:e,close:r},n,i){let o=t.sliceDoc(n-te,n),s=t.sliceDoc(i,i+te),a=/\s*$/.exec(o)[0].length,c=/^\s*/.exec(s)[0].length,h=o.length-a;if(o.slice(h-e.length,h)==e&&s.slice(c,c+r.length)==r)return{open:{pos:n-a,margin:a&&1},close:{pos:i+c,margin:c&&1}};let u,f;i-n<=2*te?u=f=t.sliceDoc(n,i):(u=t.sliceDoc(n,n+te),f=t.sliceDoc(i-te,i));let d=/^\s*/.exec(u)[0].length,m=/\s*$/.exec(f)[0].length,g=f.length-m-r.length;return u.slice(d,d+e.length)==e&&f.slice(g,g+r.length)==r?{open:{pos:n+d+e.length,margin:/\s/.test(u.charAt(d+e.length))?1:0},close:{pos:i-m-r.length,margin:/\s/.test(f.charAt(g-1))?1:0}}:null}function En(t){let e=[];for(let r of t.selection.ranges){let n=t.doc.lineAt(r.from),i=r.to<=n.to?n:t.doc.lineAt(r.to);i.from>n.from&&i.from==r.to&&(i=r.to==n.to+1?n:t.doc.lineAt(r.to-1));let o=e.length-1;o>=0&&e[o].to>n.from?e[o].to=i.to:e.push({from:n.from+/^\s*/.exec(n.text)[0].length,to:i.to})}return e}function yt(t,e,r=e.selection.ranges){let n=r.map(o=>Ue(e,o.from).block);if(!n.every(o=>o))return null;let i=r.map((o,s)=>vn(e,n[s],o.from,o.to));if(t!=2&&!i.every(o=>o))return{changes:e.changes(r.map((o,s)=>i[s]?[]:[{from:o.from,insert:n[s].open+" "},{from:o.to,insert:" "+n[s].close}]))};if(t!=1&&i.some(o=>o)){let o=[];for(let s=0,a;s<i.length;s++)if(a=i[s]){let c=n[s],{open:h,close:u}=a;o.push({from:h.pos-c.open.length,to:h.pos+h.margin},{from:u.pos-u.margin,to:u.pos+c.close.length})}return{changes:o}}return null}function Mn(t,e,r=e.selection.ranges){let n=[],i=-1;e:for(let{from:o,to:s}of r){let a=n.length,c=1e9,h;for(let u=o;u<=s;){let f=e.doc.lineAt(u);if(h==null&&(h=Ue(e,f.from).line,!h))continue e;if(f.from>i&&(o==s||s>f.from)){i=f.from;let d=/^\s*/.exec(f.text)[0].length,m=d==f.length,g=f.text.slice(d,d+h.length)==h?d:-1;d<f.text.length&&d<c&&(c=d),n.push({line:f,comment:g,token:h,indent:d,empty:m,single:!1})}u=f.to+1}if(c<1e9)for(let u=a;u<n.length;u++)n[u].indent<n[u].line.text.length&&(n[u].indent=c);n.length==a+1&&(n[a].single=!0)}if(t!=2&&n.some(o=>o.comment<0&&(!o.empty||o.single))){let o=[];for(let{line:a,token:c,indent:h,empty:u,single:f}of n)(f||!u)&&o.push({from:a.from+h,insert:c+" "});let s=e.changes(o);return{changes:s,selection:e.selection.map(s,1)}}else if(t!=1&&n.some(o=>o.comment>=0)){let o=[];for(let{line:s,comment:a,token:c}of n)if(a>=0){let h=s.from+a,u=h+c.length;s.text[u-s.from]==" "&&u++,o.push({from:h,to:u})}return{changes:o}}return null}const Pe=l.Annotation.define(),An=l.Annotation.define(),Dn=l.Facet.define(),St=l.Facet.define({combine(t){return l.combineConfig(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,r)=>r},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,r)=>(n,i)=>e(n,i)||r(n,i)})}}),kt=l.StateField.define({create(){return R.empty},update(t,e){let r=e.state.facet(St),n=e.annotation(Pe);if(n){let c=v.fromTransaction(e,n.selection),h=n.side,u=h==0?t.undone:t.done;return c?u=ge(u,u.length,r.minDepth,c):u=bt(u,e.startState.selection),new R(h==0?n.rest:u,h==0?u:n.rest)}let i=e.annotation(An);if((i=="full"||i=="before")&&(t=t.isolate()),e.annotation(l.Transaction.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let o=v.fromTransaction(e),s=e.annotation(l.Transaction.time),a=e.annotation(l.Transaction.userEvent);return o?t=t.addChanges(o,s,a,r,e):e.selection&&(t=t.addSelection(e.startState.selection,s,a,r.newGroupDelay)),(i=="full"||i=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new R(t.done.map(v.fromJSON),t.undone.map(v.fromJSON))}});function Bn(t={}){return[kt,St.of(t),l.EditorView.domEventHandlers({beforeinput(e,r){let n=e.inputType=="historyUndo"?xt:e.inputType=="historyRedo"?Ie:null;return n?(e.preventDefault(),n(r)):!1}})]}function Ce(t,e){return function({state:r,dispatch:n}){if(!e&&r.readOnly)return!1;let i=r.field(kt,!1);if(!i)return!1;let o=i.pop(t,r,e);return o?(n(o),!0):!1}}const xt=Ce(0,!1),Ie=Ce(1,!1),Ln=Ce(0,!0),wn=Ce(1,!0);class v{constructor(e,r,n,i,o){this.changes=e,this.effects=r,this.mapped=n,this.startSelection=i,this.selectionsAfter=o}setSelAfter(e){return new v(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,r,n;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(r=this.mapped)===null||r===void 0?void 0:r.toJSON(),startSelection:(n=this.startSelection)===null||n===void 0?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(i=>i.toJSON())}}static fromJSON(e){return new v(e.changes&&l.ChangeSet.fromJSON(e.changes),[],e.mapped&&l.ChangeDesc.fromJSON(e.mapped),e.startSelection&&l.EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(l.EditorSelection.fromJSON))}static fromTransaction(e,r){let n=D;for(let i of e.startState.facet(Dn)){let o=i(e);o.length&&(n=n.concat(o))}return!n.length&&e.changes.empty?null:new v(e.changes.invert(e.startState.doc),n,void 0,r||e.startState.selection,D)}static selection(e){return new v(void 0,D,void 0,void 0,e)}}function ge(t,e,r,n){let i=e+1>r+20?e-r-1:0,o=t.slice(i,e);return o.push(n),o}function Tn(t,e){let r=[],n=!1;return t.iterChangedRanges((i,o)=>r.push(i,o)),e.iterChangedRanges((i,o,s,a)=>{for(let c=0;c<r.length;){let h=r[c++],u=r[c++];a>=h&&s<=u&&(n=!0)}}),n}function Rn(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((r,n)=>r.empty!=e.ranges[n].empty).length===0}function Ct(t,e){return t.length?e.length?t.concat(e):t:e}const D=[],Pn=200;function bt(t,e){if(t.length){let r=t[t.length-1],n=r.selectionsAfter.slice(Math.max(0,r.selectionsAfter.length-Pn));return n.length&&n[n.length-1].eq(e)?t:(n.push(e),ge(t,t.length-1,1e9,r.setSelAfter(n)))}else return[v.selection([e])]}function In(t){let e=t[t.length-1],r=t.slice();return r[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),r}function Be(t,e){if(!t.length)return t;let r=t.length,n=D;for(;r;){let i=On(t[r-1],e,n);if(i.changes&&!i.changes.empty||i.effects.length){let o=t.slice(0,r);return o[r-1]=i,o}else e=i.mapped,r--,n=i.selectionsAfter}return n.length?[v.selection(n)]:D}function On(t,e,r){let n=Ct(t.selectionsAfter.length?t.selectionsAfter.map(a=>a.map(e)):D,r);if(!t.changes)return v.selection(n);let i=t.changes.map(e),o=e.mapDesc(t.changes,!0),s=t.mapped?t.mapped.composeDesc(o):o;return new v(i,l.StateEffect.mapEffects(t.effects,e),s,t.startSelection.map(o),n)}const Wn=/^(input\.type|delete)($|\.)/;class R{constructor(e,r,n=0,i=void 0){this.done=e,this.undone=r,this.prevTime=n,this.prevUserEvent=i}isolate(){return this.prevTime?new R(this.done,this.undone):this}addChanges(e,r,n,i,o){let s=this.done,a=s[s.length-1];return a&&a.changes&&!a.changes.empty&&e.changes&&(!n||Wn.test(n))&&(!a.selectionsAfter.length&&r-this.prevTime<i.newGroupDelay&&i.joinToEvent(o,Tn(a.changes,e.changes))||n=="input.type.compose")?s=ge(s,s.length-1,i.minDepth,new v(e.changes.compose(a.changes),Ct(l.StateEffect.mapEffects(e.effects,a.changes),a.effects),a.mapped,a.startSelection,D)):s=ge(s,s.length,i.minDepth,e),new R(s,D,r,n)}addSelection(e,r,n,i){let o=this.done.length?this.done[this.done.length-1].selectionsAfter:D;return o.length>0&&r-this.prevTime<i&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&Rn(o[o.length-1],e)?this:new R(bt(this.done,e),this.undone,r,n)}addMapping(e){return new R(Be(this.done,e),Be(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,r,n){let i=e==0?this.done:this.undone;if(i.length==0)return null;let o=i[i.length-1],s=o.selectionsAfter[0]||(o.startSelection?o.startSelection.map(o.changes.invertedDesc,1):r.selection);if(n&&o.selectionsAfter.length)return r.update({selection:o.selectionsAfter[o.selectionsAfter.length-1],annotations:Pe.of({side:e,rest:In(i),selection:s}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(o.changes){let a=i.length==1?D:i.slice(0,i.length-1);return o.mapped&&(a=Be(a,o.mapped)),r.update({changes:o.changes,selection:o.startSelection,effects:o.effects,annotations:Pe.of({side:e,rest:a,selection:s}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}}R.empty=new R(D,D);const Vn=[{key:"Mod-z",run:xt,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Ie,preventDefault:!0},{linux:"Ctrl-Shift-z",run:Ie,preventDefault:!0},{key:"Mod-u",run:Ln,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:wn,preventDefault:!0}];function Y(t,e){return l.EditorSelection.create(t.ranges.map(e),t.mainIndex)}function L(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function w({state:t,dispatch:e},r){let n=Y(t.selection,r);return n.eq(t.selection,!0)?!1:(e(L(t,n)),!0)}function be(t,e){return l.EditorSelection.cursor(e?t.to:t.from)}function vt(t,e){return w(t,r=>r.empty?t.moveByChar(r,e):be(r,e))}function x(t){return t.textDirectionAt(t.state.selection.main.head)==l.Direction.LTR}const Et=t=>vt(t,!x(t)),Mt=t=>vt(t,x(t));function At(t,e){return w(t,r=>r.empty?t.moveByGroup(r,e):be(r,e))}const Fn=t=>At(t,!x(t)),Nn=t=>At(t,x(t));function qn(t,e,r){if(e.type.prop(r))return!0;let n=e.to-e.from;return n&&(n>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function ve(t,e,r){let n=l.syntaxTree(t).resolveInner(e.head),i=r?l.NodeProp.closedBy:l.NodeProp.openedBy;for(let c=e.head;;){let h=r?n.childAfter(c):n.childBefore(c);if(!h)break;qn(t,h,i)?n=h:c=r?h.to:h.from}let o=n.type.prop(i),s,a;return o&&(s=r?l.matchBrackets(t,n.from,1):l.matchBrackets(t,n.to,-1))&&s.matched?a=r?s.end.to:s.end.from:a=r?n.to:n.from,l.EditorSelection.cursor(a,r?-1:1)}const Hn=t=>w(t,e=>ve(t.state,e,!x(t))),Un=t=>w(t,e=>ve(t.state,e,x(t)));function Dt(t,e){return w(t,r=>{if(!r.empty)return be(r,e);let n=t.moveVertically(r,e);return n.head!=r.head?n:t.moveToLineBoundary(r,e)})}const Bt=t=>Dt(t,!1),Lt=t=>Dt(t,!0);function wt(t){let e=t.scrollDOM.clientHeight<t.scrollDOM.scrollHeight-2,r=0,n=0,i;if(e){for(let o of t.state.facet(l.EditorView.scrollMargins)){let s=o(t);s!=null&&s.top&&(r=Math.max(s==null?void 0:s.top,r)),s!=null&&s.bottom&&(n=Math.max(s==null?void 0:s.bottom,n))}i=t.scrollDOM.clientHeight-r-n}else i=(t.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:r,marginBottom:n,selfScroll:e,height:Math.max(t.defaultLineHeight,i-5)}}function Tt(t,e){let r=wt(t),{state:n}=t,i=Y(n.selection,s=>s.empty?t.moveVertically(s,e,r.height):be(s,e));if(i.eq(n.selection))return!1;let o;if(r.selfScroll){let s=t.coordsAtPos(n.selection.main.head),a=t.scrollDOM.getBoundingClientRect(),c=a.top+r.marginTop,h=a.bottom-r.marginBottom;s&&s.top>c&&s.bottom<h&&(o=l.EditorView.scrollIntoView(i.main.head,{y:"start",yMargin:s.top-c}))}return t.dispatch(L(n,i),{effects:o}),!0}const Qe=t=>Tt(t,!1),Oe=t=>Tt(t,!0);function V(t,e,r){let n=t.lineBlockAt(e.head),i=t.moveToLineBoundary(e,r);if(i.head==e.head&&i.head!=(r?n.to:n.from)&&(i=t.moveToLineBoundary(e,r,!1)),!r&&i.head==n.from&&n.length){let o=/^\s*/.exec(t.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length;o&&e.head!=n.from+o&&(i=l.EditorSelection.cursor(n.from+o))}return i}const zn=t=>w(t,e=>V(t,e,!0)),Gn=t=>w(t,e=>V(t,e,!1)),Kn=t=>w(t,e=>V(t,e,!x(t))),$n=t=>w(t,e=>V(t,e,x(t))),Jn=t=>w(t,e=>l.EditorSelection.cursor(t.lineBlockAt(e.head).from,1)),_n=t=>w(t,e=>l.EditorSelection.cursor(t.lineBlockAt(e.head).to,-1));function jn(t,e,r){let n=!1,i=Y(t.selection,o=>{let s=l.matchBrackets(t,o.head,-1)||l.matchBrackets(t,o.head,1)||o.head>0&&l.matchBrackets(t,o.head-1,1)||o.head<t.doc.length&&l.matchBrackets(t,o.head+1,-1);if(!s||!s.end)return o;n=!0;let a=s.start.from==o.head?s.end.to:s.end.from;return l.EditorSelection.cursor(a)});return n?(e(L(t,i)),!0):!1}const Qn=({state:t,dispatch:e})=>jn(t,e);function B(t,e){let r=Y(t.state.selection,n=>{let i=e(n);return l.EditorSelection.range(n.anchor,i.head,i.goalColumn,i.bidiLevel||void 0,i.assoc)});return r.eq(t.state.selection)?!1:(t.dispatch(L(t.state,r)),!0)}function Rt(t,e){return B(t,r=>t.moveByChar(r,e))}const Pt=t=>Rt(t,!x(t)),It=t=>Rt(t,x(t));function Ot(t,e){return B(t,r=>t.moveByGroup(r,e))}const Yn=t=>Ot(t,!x(t)),Zn=t=>Ot(t,x(t)),Xn=t=>B(t,e=>ve(t.state,e,!x(t))),er=t=>B(t,e=>ve(t.state,e,x(t)));function Wt(t,e){return B(t,r=>t.moveVertically(r,e))}const Vt=t=>Wt(t,!1),Ft=t=>Wt(t,!0);function Nt(t,e){return B(t,r=>t.moveVertically(r,e,wt(t).height))}const Ye=t=>Nt(t,!1),Ze=t=>Nt(t,!0),tr=t=>B(t,e=>V(t,e,!0)),nr=t=>B(t,e=>V(t,e,!1)),rr=t=>B(t,e=>V(t,e,!x(t))),ir=t=>B(t,e=>V(t,e,x(t))),or=t=>B(t,e=>l.EditorSelection.cursor(t.lineBlockAt(e.head).from)),lr=t=>B(t,e=>l.EditorSelection.cursor(t.lineBlockAt(e.head).to)),Xe=({state:t,dispatch:e})=>(e(L(t,{anchor:0})),!0),et=({state:t,dispatch:e})=>(e(L(t,{anchor:t.doc.length})),!0),tt=({state:t,dispatch:e})=>(e(L(t,{anchor:t.selection.main.anchor,head:0})),!0),nt=({state:t,dispatch:e})=>(e(L(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),sr=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),ar=({state:t,dispatch:e})=>{let r=Ee(t).map(({from:n,to:i})=>l.EditorSelection.range(n,Math.min(i+1,t.doc.length)));return e(t.update({selection:l.EditorSelection.create(r),userEvent:"select"})),!0},cr=({state:t,dispatch:e})=>{let r=Y(t.selection,n=>{let i=l.syntaxTree(t),o=i.resolveStack(n.from,1);if(n.empty){let s=i.resolveStack(n.from,-1);s.node.from>=o.node.from&&s.node.to<=o.node.to&&(o=s)}for(let s=o;s;s=s.next){let{node:a}=s;if((a.from<n.from&&a.to>=n.to||a.to>n.to&&a.from<=n.from)&&s.next)return l.EditorSelection.range(a.to,a.from)}return n});return r.eq(t.selection)?!1:(e(L(t,r)),!0)};function qt(t,e){let{state:r}=t,n=r.selection,i=r.selection.ranges.slice();for(let o of r.selection.ranges){let s=r.doc.lineAt(o.head);if(e?s.to<t.state.doc.length:s.from>0)for(let a=o;;){let c=t.moveVertically(a,e);if(c.head<s.from||c.head>s.to){i.some(h=>h.head==c.head)||i.push(c);break}else{if(c.head==a.head)break;a=c}}}return i.length==n.ranges.length?!1:(t.dispatch(L(r,l.EditorSelection.create(i,i.length-1))),!0)}const hr=t=>qt(t,!1),ur=t=>qt(t,!0),fr=({state:t,dispatch:e})=>{let r=t.selection,n=null;return r.ranges.length>1?n=l.EditorSelection.create([r.main]):r.main.empty||(n=l.EditorSelection.create([l.EditorSelection.cursor(r.main.head)])),n?(e(L(t,n)),!0):!1};function oe(t,e){if(t.state.readOnly)return!1;let r="delete.selection",{state:n}=t,i=n.changeByRange(o=>{let{from:s,to:a}=o;if(s==a){let c=e(o);c<s?(r="delete.backward",c=he(t,c,!1)):c>s&&(r="delete.forward",c=he(t,c,!0)),s=Math.min(s,c),a=Math.max(a,c)}else s=he(t,s,!1),a=he(t,a,!0);return s==a?{range:o}:{changes:{from:s,to:a},range:l.EditorSelection.cursor(s,s<o.head?-1:1)}});return i.changes.empty?!1:(t.dispatch(n.update(i,{scrollIntoView:!0,userEvent:r,effects:r=="delete.selection"?l.EditorView.announce.of(n.phrase("Selection deleted")):void 0})),!0)}function he(t,e,r){if(t instanceof l.EditorView)for(let n of t.state.facet(l.EditorView.atomicRanges).map(i=>i(t)))n.between(e,e,(i,o)=>{i<e&&o>e&&(e=r?o:i)});return e}const Ht=(t,e,r)=>oe(t,n=>{let i=n.from,{state:o}=t,s=o.doc.lineAt(i),a,c;if(r&&!e&&i>s.from&&i<s.from+200&&!/[^ \t]/.test(a=s.text.slice(0,i-s.from))){if(a[a.length-1]==" ")return i-1;let h=l.countColumn(a,o.tabSize),u=h%l.getIndentUnit(o)||l.getIndentUnit(o);for(let f=0;f<u&&a[a.length-1-f]==" ";f++)i--;c=i}else c=l.findClusterBreak(s.text,i-s.from,e,e)+s.from,c==i&&s.number!=(e?o.doc.lines:1)?c+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(s.text.slice(c-s.from,i-s.from))&&(c=l.findClusterBreak(s.text,c-s.from,!1,!1)+s.from);return c}),We=t=>Ht(t,!1,!0),Ut=t=>Ht(t,!0,!1),zt=(t,e)=>oe(t,r=>{let n=r.head,{state:i}=t,o=i.doc.lineAt(n),s=i.charCategorizer(n);for(let a=null;;){if(n==(e?o.to:o.from)){n==r.head&&o.number!=(e?i.doc.lines:1)&&(n+=e?1:-1);break}let c=l.findClusterBreak(o.text,n-o.from,e)+o.from,h=o.text.slice(Math.min(n,c)-o.from,Math.max(n,c)-o.from),u=s(h);if(a!=null&&u!=a)break;(h!=" "||n!=r.head)&&(a=u),n=c}return n}),Gt=t=>zt(t,!1),dr=t=>zt(t,!0),mr=t=>oe(t,e=>{let r=t.lineBlockAt(e.head).to;return e.head<r?r:Math.min(t.state.doc.length,e.head+1)}),gr=t=>oe(t,e=>{let r=t.moveToLineBoundary(e,!1).head;return e.head>r?r:Math.max(0,e.head-1)}),pr=t=>oe(t,e=>{let r=t.moveToLineBoundary(e,!0).head;return e.head<r?r:Math.min(t.state.doc.length,e.head+1)}),yr=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:l.Text.of(["",""])},range:l.EditorSelection.cursor(n.from)}));return e(t.update(r,{scrollIntoView:!0,userEvent:"input"})),!0},Sr=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{if(!n.empty||n.from==0||n.from==t.doc.length)return{range:n};let i=n.from,o=t.doc.lineAt(i),s=i==o.from?i-1:l.findClusterBreak(o.text,i-o.from,!1)+o.from,a=i==o.to?i+1:l.findClusterBreak(o.text,i-o.from,!0)+o.from;return{changes:{from:s,to:a,insert:t.doc.slice(i,a).append(t.doc.slice(s,i))},range:l.EditorSelection.cursor(a)}});return r.changes.empty?!1:(e(t.update(r,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Ee(t){let e=[],r=-1;for(let n of t.selection.ranges){let i=t.doc.lineAt(n.from),o=t.doc.lineAt(n.to);if(!n.empty&&n.to==o.from&&(o=t.doc.lineAt(n.to-1)),r>=i.number){let s=e[e.length-1];s.to=o.to,s.ranges.push(n)}else e.push({from:i.from,to:o.to,ranges:[n]});r=o.number+1}return e}function Kt(t,e,r){if(t.readOnly)return!1;let n=[],i=[];for(let o of Ee(t)){if(r?o.to==t.doc.length:o.from==0)continue;let s=t.doc.lineAt(r?o.to+1:o.from-1),a=s.length+1;if(r){n.push({from:o.to,to:s.to},{from:o.from,insert:s.text+t.lineBreak});for(let c of o.ranges)i.push(l.EditorSelection.range(Math.min(t.doc.length,c.anchor+a),Math.min(t.doc.length,c.head+a)))}else{n.push({from:s.from,to:o.from},{from:o.to,insert:t.lineBreak+s.text});for(let c of o.ranges)i.push(l.EditorSelection.range(c.anchor-a,c.head-a))}}return n.length?(e(t.update({changes:n,scrollIntoView:!0,selection:l.EditorSelection.create(i,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const kr=({state:t,dispatch:e})=>Kt(t,e,!1),xr=({state:t,dispatch:e})=>Kt(t,e,!0);function $t(t,e,r){if(t.readOnly)return!1;let n=[];for(let o of Ee(t))r?n.push({from:o.from,insert:t.doc.slice(o.from,o.to)+t.lineBreak}):n.push({from:o.to,insert:t.lineBreak+t.doc.slice(o.from,o.to)});let i=t.changes(n);return e(t.update({changes:i,selection:t.selection.map(i,r?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Cr=({state:t,dispatch:e})=>$t(t,e,!1),br=({state:t,dispatch:e})=>$t(t,e,!0),vr=t=>{if(t.state.readOnly)return!1;let{state:e}=t,r=e.changes(Ee(e).map(({from:i,to:o})=>(i>0?i--:o<e.doc.length&&o++,{from:i,to:o}))),n=Y(e.selection,i=>{let o;if(t.lineWrapping){let s=t.lineBlockAt(i.head),a=t.coordsAtPos(i.head,i.assoc||1);a&&(o=s.bottom+t.documentTop-a.bottom+t.defaultLineHeight/2)}return t.moveVertically(i,!0,o)}).map(r);return t.dispatch({changes:r,selection:n,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Er(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let r=l.syntaxTree(t).resolveInner(e),n=r.childBefore(e),i=r.childAfter(e),o;return n&&i&&n.to<=e&&i.from>=e&&(o=n.type.prop(l.NodeProp.closedBy))&&o.indexOf(i.name)>-1&&t.doc.lineAt(n.to).from==t.doc.lineAt(i.from).from&&!/\S/.test(t.sliceDoc(n.to,i.from))?{from:n.to,to:i.from}:null}const rt=Jt(!1),Mr=Jt(!0);function Jt(t){return({state:e,dispatch:r})=>{if(e.readOnly)return!1;let n=e.changeByRange(i=>{let{from:o,to:s}=i,a=e.doc.lineAt(o),c=!t&&o==s&&Er(e,o);t&&(o=s=(s<=a.to?a:e.doc.lineAt(s)).to);let h=new l.IndentContext(e,{simulateBreak:o,simulateDoubleBreak:!!c}),u=l.getIndentation(h,o);for(u==null&&(u=l.countColumn(/^\s*/.exec(e.doc.lineAt(o).text)[0],e.tabSize));s<a.to&&/\s/.test(a.text[s-a.from]);)s++;c?{from:o,to:s}=c:o>a.from&&o<a.from+100&&!/\S/.test(a.text.slice(0,o))&&(o=a.from);let f=["",l.indentString(e,u)];return c&&f.push(l.indentString(e,h.lineIndent(a.from,-1))),{changes:{from:o,to:s,insert:l.Text.of(f)},range:l.EditorSelection.cursor(o+1+f[1].length)}});return r(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}}function ze(t,e){let r=-1;return t.changeByRange(n=>{let i=[];for(let s=n.from;s<=n.to;){let a=t.doc.lineAt(s);a.number>r&&(n.empty||n.to>a.from)&&(e(a,i,n),r=a.number),s=a.to+1}let o=t.changes(i);return{changes:i,range:l.EditorSelection.range(o.mapPos(n.anchor,1),o.mapPos(n.head,1))}})}const Ar=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=Object.create(null),n=new l.IndentContext(t,{overrideIndentation:o=>{let s=r[o];return s??-1}}),i=ze(t,(o,s,a)=>{let c=l.getIndentation(n,o.from);if(c==null)return;/\S/.test(o.text)||(c=0);let h=/^\s*/.exec(o.text)[0],u=l.indentString(t,c);(h!=u||a.from<o.from+h.length)&&(r[o.from]=c,s.push({from:o.from,to:o.from+h.length,insert:u}))});return i.changes.empty||e(t.update(i,{userEvent:"indent"})),!0},_t=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(ze(t,(r,n)=>{n.push({from:r.from,insert:t.facet(l.indentUnit)})}),{userEvent:"input.indent"})),!0),jt=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(ze(t,(r,n)=>{let i=/^\s*/.exec(r.text)[0];if(!i)return;let o=l.countColumn(i,t.tabSize),s=0,a=l.indentString(t,Math.max(0,o-l.getIndentUnit(t)));for(;s<i.length&&s<a.length&&i.charCodeAt(s)==a.charCodeAt(s);)s++;n.push({from:r.from+s,to:r.from+i.length,insert:a.slice(s)})}),{userEvent:"delete.dedent"})),!0),Dr=t=>(t.setTabFocusMode(),!0),Br=[{key:"Ctrl-b",run:Et,shift:Pt,preventDefault:!0},{key:"Ctrl-f",run:Mt,shift:It},{key:"Ctrl-p",run:Bt,shift:Vt},{key:"Ctrl-n",run:Lt,shift:Ft},{key:"Ctrl-a",run:Jn,shift:or},{key:"Ctrl-e",run:_n,shift:lr},{key:"Ctrl-d",run:Ut},{key:"Ctrl-h",run:We},{key:"Ctrl-k",run:mr},{key:"Ctrl-Alt-h",run:Gt},{key:"Ctrl-o",run:yr},{key:"Ctrl-t",run:Sr},{key:"Ctrl-v",run:Oe}],Lr=[{key:"ArrowLeft",run:Et,shift:Pt,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Fn,shift:Yn,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Kn,shift:rr,preventDefault:!0},{key:"ArrowRight",run:Mt,shift:It,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Nn,shift:Zn,preventDefault:!0},{mac:"Cmd-ArrowRight",run:$n,shift:ir,preventDefault:!0},{key:"ArrowUp",run:Bt,shift:Vt,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Xe,shift:tt},{mac:"Ctrl-ArrowUp",run:Qe,shift:Ye},{key:"ArrowDown",run:Lt,shift:Ft,preventDefault:!0},{mac:"Cmd-ArrowDown",run:et,shift:nt},{mac:"Ctrl-ArrowDown",run:Oe,shift:Ze},{key:"PageUp",run:Qe,shift:Ye},{key:"PageDown",run:Oe,shift:Ze},{key:"Home",run:Gn,shift:nr,preventDefault:!0},{key:"Mod-Home",run:Xe,shift:tt},{key:"End",run:zn,shift:tr,preventDefault:!0},{key:"Mod-End",run:et,shift:nt},{key:"Enter",run:rt,shift:rt},{key:"Mod-a",run:sr},{key:"Backspace",run:We,shift:We,preventDefault:!0},{key:"Delete",run:Ut,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Gt,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:dr,preventDefault:!0},{mac:"Mod-Backspace",run:gr,preventDefault:!0},{mac:"Mod-Delete",run:pr,preventDefault:!0}].concat(Br.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),wr=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Hn,shift:Xn},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Un,shift:er},{key:"Alt-ArrowUp",run:kr},{key:"Shift-Alt-ArrowUp",run:Cr},{key:"Alt-ArrowDown",run:xr},{key:"Shift-Alt-ArrowDown",run:br},{key:"Mod-Alt-ArrowUp",run:hr},{key:"Mod-Alt-ArrowDown",run:ur},{key:"Escape",run:fr},{key:"Mod-Enter",run:Mr},{key:"Alt-l",mac:"Ctrl-l",run:ar},{key:"Mod-i",run:cr,preventDefault:!0},{key:"Mod-[",run:jt},{key:"Mod-]",run:_t},{key:"Mod-Alt-\\",run:Ar},{key:"Shift-Mod-k",run:vr},{key:"Shift-Mod-\\",run:Qn},{key:"Mod-/",run:kn},{key:"Alt-A",run:Cn},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Dr}].concat(Lr),Tr={key:"Tab",run:_t,shift:jt},it=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class Q{constructor(e,r,n=0,i=e.length,o,s){this.test=s,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(n,i),this.bufferStart=n,this.normalize=o?a=>o(it(a)):it,this.query=this.normalize(r)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return l.codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let r=l.fromCodePoint(e),n=this.bufferStart+this.bufferPos;this.bufferPos+=l.codePointSize(e);let i=this.normalize(r);if(i.length)for(let o=0,s=n,a=!0;;o++){let c=i.charCodeAt(o),h=this.match(c,s,a,this.bufferPos+this.bufferStart,o==i.length-1);if(h)return this.value=h,this;if(o==i.length-1)break;a&&o<r.length&&r.charCodeAt(o)==c?s++:a=!1}}}match(e,r,n,i,o){let s=null;for(let a=0;a<this.matches.length;){let c=this.matches[a],h=!1;this.query.charCodeAt(c.index)==e&&(c.index==this.query.length-1?s={from:c.from,to:i,precise:o&&c.precise}:(c.index++,h=!0)),h?a++:this.matches.splice(a,1)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:r,to:i,precise:n&&o}:this.matches.push({from:r,index:1,precise:n})),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(Q.prototype[Symbol.iterator]=function(){return this});const Qt={from:-1,to:-1,match:/.*/.exec(""),precise:!0},Ge="gm"+(/x/.unicode==null?"":"u");class Yt{constructor(e,r,n,i=0,o=e.length){if(this.text=e,this.to=o,this.curLine="",this.done=!1,this.value=Qt,/\\[sWDnr]|\n|\r|\[\^/.test(r))return new Zt(e,r,n,i,o);this.re=new RegExp(r,Ge+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.iter=e.iter();let s=e.lineAt(i);this.curLineStart=s.from,this.matchPos=pe(e,i),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let r=this.matchPos<=this.to&&this.re.exec(this.curLine);if(r){let n=this.curLineStart+r.index,i=n+r[0].length;if(this.matchPos=pe(this.text,i+(n==i?1:0)),n==this.curLineStart+this.curLine.length&&this.nextLine(),(n<i||n>this.value.to)&&(!this.test||this.test(n,i,r)))return this.value={from:n,to:i,precise:!0,match:r},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const Le=new WeakMap;class j{constructor(e,r){this.from=e,this.text=r}get to(){return this.from+this.text.length}static get(e,r,n){let i=Le.get(e);if(!i||i.from>=n||i.to<=r){let a=new j(r,e.sliceString(r,n));return Le.set(e,a),a}if(i.from==r&&i.to==n)return i;let{text:o,from:s}=i;return s>r&&(o=e.sliceString(r,s)+o,s=r),i.to<n&&(o+=e.sliceString(i.to,n)),Le.set(e,new j(s,o)),new j(r,o.slice(r-s,n-s))}}class Zt{constructor(e,r,n,i,o){this.text=e,this.to=o,this.done=!1,this.value=Qt,this.matchPos=pe(e,i),this.re=new RegExp(r,Ge+(n!=null&&n.ignoreCase?"i":"")),this.test=n==null?void 0:n.test,this.flat=j.get(e,i,this.chunkEnd(i+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,r=this.re.exec(this.flat.text);if(r&&!r[0]&&r.index==e&&(this.re.lastIndex=e+1,r=this.re.exec(this.flat.text)),r){let n=this.flat.from+r.index,i=n+r[0].length;if((this.flat.to>=this.to||r.index+r[0].length<=this.flat.text.length-10)&&(!this.test||this.test(n,i,r)))return this.value={from:n,to:i,precise:!0,match:r},this.matchPos=pe(this.text,i+(n==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=j.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(Yt.prototype[Symbol.iterator]=Zt.prototype[Symbol.iterator]=function(){return this});function Rr(t){try{return new RegExp(t,Ge),!0}catch{return!1}}function pe(t,e){if(e>=t.length)return e;let r=t.lineAt(e),n;for(;e<r.to&&(n=r.text.charCodeAt(e-r.from))>=56320&&n<57344;)e++;return e}const Pr=t=>{let{state:e}=t,r=String(e.doc.lineAt(t.state.selection.main.head).number),{close:n,result:i}=l.showDialog(t,{label:e.phrase("Go to line"),input:{type:"text",name:"line",value:r},focus:!0,submitLabel:e.phrase("go")});return i.then(o=>{let s=o&&/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(o.elements.line.value);if(!s){t.dispatch({effects:n});return}let a=e.doc.lineAt(e.selection.main.head),[,c,h,u,f]=s,d=u?+u.slice(1):0,m=h?+h:a.number;if(h&&f){let y=m/100;c&&(y=y*(c=="-"?-1:1)+a.number/e.doc.lines),m=Math.round(e.doc.lines*y)}else h&&c&&(m=m*(c=="-"?-1:1)+a.number);let g=e.doc.line(Math.max(1,Math.min(e.doc.lines,m))),S=l.EditorSelection.cursor(g.from+Math.max(0,Math.min(d,g.length)));t.dispatch({effects:[n,l.EditorView.scrollIntoView(S.from,{y:"center"})],selection:S})}),!0},Ir={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Or=l.Facet.define({combine(t){return l.combineConfig(t,Ir,{highlightWordAroundCursor:(e,r)=>e||r,minSelectionLength:Math.min,maxMatches:Math.min})}});function Wr(t){return[Hr,qr]}const Vr=l.Decoration.mark({class:"cm-selectionMatch"}),Fr=l.Decoration.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function ot(t,e,r,n){return(r==0||t(e.sliceDoc(r-1,r))!=l.CharCategory.Word)&&(n==e.doc.length||t(e.sliceDoc(n,n+1))!=l.CharCategory.Word)}function Nr(t,e,r,n){return t(e.sliceDoc(r,r+1))==l.CharCategory.Word&&t(e.sliceDoc(n-1,n))==l.CharCategory.Word}const qr=l.ViewPlugin.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Or),{state:r}=t,n=r.selection;if(n.ranges.length>1)return l.Decoration.none;let i=n.main,o,s=null;if(i.empty){if(!e.highlightWordAroundCursor)return l.Decoration.none;let c=r.wordAt(i.head);if(!c)return l.Decoration.none;s=r.charCategorizer(i.head),o=r.sliceDoc(c.from,c.to)}else{let c=i.to-i.from;if(c<e.minSelectionLength||c>200)return l.Decoration.none;if(e.wholeWords){if(o=r.sliceDoc(i.from,i.to),s=r.charCategorizer(i.head),!(ot(s,r,i.from,i.to)&&Nr(s,r,i.from,i.to)))return l.Decoration.none}else if(o=r.sliceDoc(i.from,i.to),!o)return l.Decoration.none}let a=[];for(let c of t.visibleRanges){let h=new Q(r.doc,o,c.from,c.to);for(;!h.next().done;){let{from:u,to:f}=h.value;if((!s||ot(s,r,u,f))&&(i.empty&&u<=i.from&&f>=i.to?a.push(Fr.range(u,f)):(u>=i.to||f<=i.from)&&a.push(Vr.range(u,f)),a.length>e.maxMatches))return l.Decoration.none}}return l.Decoration.set(a)}},{decorations:t=>t.decorations}),Hr=l.EditorView.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),Ur=({state:t,dispatch:e})=>{let{selection:r}=t,n=l.EditorSelection.create(r.ranges.map(i=>t.wordAt(i.head)||l.EditorSelection.cursor(i.head)),r.mainIndex);return n.eq(r)?!1:(e(t.update({selection:n})),!0)};function zr(t,e){let{main:r,ranges:n}=t.selection,i=t.wordAt(r.head),o=i&&i.from==r.from&&i.to==r.to;for(let s=!1,a=new Q(t.doc,e,n[n.length-1].to);;)if(a.next(),a.done){if(s)return null;a=new Q(t.doc,e,0,Math.max(0,n[n.length-1].from-1)),s=!0}else{if(s&&n.some(c=>c.from==a.value.from))continue;if(o){let c=t.wordAt(a.value.from);if(!c||c.from!=a.value.from||c.to!=a.value.to)continue}return a.value}}const Gr=({state:t,dispatch:e})=>{let{ranges:r}=t.selection;if(r.some(o=>o.from===o.to))return Ur({state:t,dispatch:e});let n=t.sliceDoc(r[0].from,r[0].to);if(t.selection.ranges.some(o=>t.sliceDoc(o.from,o.to)!=n))return!1;let i=zr(t,n);return i?(e(t.update({selection:t.selection.addRange(l.EditorSelection.range(i.from,i.to),!1),effects:l.EditorView.scrollIntoView(i.to)})),!0):!1},Z=l.Facet.define({combine(t){return l.combineConfig(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new ii(e),scrollToMatch:e=>l.EditorView.scrollIntoView(e)})}});class Xt{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Rr(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord,this.test=e.test}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(r,n)=>n=="n"?`
2
2
  `:n=="r"?"\r":n=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new Qr(this):new Jr(this)}getCursor(e,r=0,n){let i=e.doc?e:l.EditorState.create({doc:e});return n==null&&(n=i.doc.length),this.regexp?_(this,i,r,n):J(this,i,r,n)}}class en{constructor(e){this.spec=e}}function Kr(t,e,r){return(n,i,o,s)=>{if(r&&!r(n,i,o,s))return!1;let a=n>=s&&i<=s+o.length?o.slice(n-s,i-s):e.doc.sliceString(n,i);return t(a,e,n,i)}}function J(t,e,r,n){let i;return t.wholeWord&&(i=$r(e.doc,e.charCategorizer(e.selection.main.head))),t.test&&(i=Kr(t.test,e,i)),new Q(e.doc,t.unquoted,r,n,t.caseSensitive?void 0:o=>o.toLowerCase(),i)}function $r(t,e){return(r,n,i,o)=>((o>r||o+i.length<n)&&(o=Math.max(0,r-2),i=t.sliceString(o,Math.min(t.length,n+2))),(e(ye(i,r-o))!=l.CharCategory.Word||e(Se(i,r-o))!=l.CharCategory.Word)&&(e(Se(i,n-o))!=l.CharCategory.Word||e(ye(i,n-o))!=l.CharCategory.Word))}class Jr extends en{constructor(e){super(e)}nextMatch(e,r,n){let i=J(this.spec,e,n,e.doc.length).nextOverlapping();if(i.done){let o=Math.min(e.doc.length,r+this.spec.unquoted.length);i=J(this.spec,e,0,o).nextOverlapping()}return i.done||i.value.from==r&&i.value.to==n?null:i.value}prevMatchInRange(e,r,n){for(let i=n;;){let o=Math.max(r,i-1e4-this.spec.unquoted.length),s=J(this.spec,e,o,i),a=null;for(;!s.nextOverlapping().done;)a=s.value;if(a)return a;if(o==r)return null;i-=1e4}}prevMatch(e,r,n){let i=this.prevMatchInRange(e,0,r);return i||(i=this.prevMatchInRange(e,Math.max(0,n-this.spec.unquoted.length),e.doc.length)),i&&(i.from!=r||i.to!=n)?i:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,r){let n=J(this.spec,e,0,e.doc.length),i=[];for(;!n.next().done;){if(i.length>=r)return null;i.push(n.value)}return i}highlight(e,r,n,i){let o=J(this.spec,e,Math.max(0,r-this.spec.unquoted.length),Math.min(n+this.spec.unquoted.length,e.doc.length));for(;!o.next().done;)i(o.value.from,o.value.to)}}function _r(t,e,r){return(n,i,o)=>(!r||r(n,i,o))&&t(o[0],e,n,i)}function _(t,e,r,n){let i;return t.wholeWord&&(i=jr(e.charCategorizer(e.selection.main.head))),t.test&&(i=_r(t.test,e,i)),new Yt(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:i},r,n)}function ye(t,e){return t.slice(l.findClusterBreak(t,e,!1),e)}function Se(t,e){return t.slice(e,l.findClusterBreak(t,e))}function jr(t){return(e,r,n)=>!n[0].length||(t(ye(n.input,n.index))!=l.CharCategory.Word||t(Se(n.input,n.index))!=l.CharCategory.Word)&&(t(Se(n.input,n.index+n[0].length))!=l.CharCategory.Word||t(ye(n.input,n.index+n[0].length))!=l.CharCategory.Word)}class Qr extends en{nextMatch(e,r,n){let i=_(this.spec,e,n,e.doc.length).next();return i.done&&(i=_(this.spec,e,0,r).next()),i.done?null:i.value}prevMatchInRange(e,r,n){for(let i=1;;i++){let o=Math.max(r,n-i*1e4),s=_(this.spec,e,o,n),a=null;for(;!s.next().done;)a=s.value;if(a&&(o==r||a.from>o+10))return a;if(o==r)return null}}prevMatch(e,r,n){return this.prevMatchInRange(e,0,r)||this.prevMatchInRange(e,n,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(r,n)=>{if(n=="&")return e.match[0];if(n=="$")return"$";for(let i=n.length;i>0;i--){let o=+n.slice(0,i);if(o>0&&o<e.match.length)return e.match[o]+n.slice(i)}return r})}matchAll(e,r){let n=_(this.spec,e,0,e.doc.length),i=[];for(;!n.next().done;){if(i.length>=r)return null;i.push(n.value)}return i}highlight(e,r,n,i){let o=_(this.spec,e,Math.max(0,r-250),Math.min(n+250,e.doc.length));for(;!o.next().done;)i(o.value.from,o.value.to)}}const ne=l.StateEffect.define(),Ke=l.StateEffect.define(),O=l.StateField.define({create(t){return new we(Ve(t).create(),null)},update(t,e){for(let r of e.effects)r.is(ne)?t=new we(r.value.create(),t.panel):r.is(Ke)&&(t=new we(t.query,r.value?$e:null));return t},provide:t=>l.showPanel.from(t,e=>e.panel)});class we{constructor(e,r){this.query=e,this.panel=r}}const Yr=l.Decoration.mark({class:"cm-searchMatch"}),Zr=l.Decoration.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Xr=l.ViewPlugin.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(O))}update(t){let e=t.state.field(O);(e!=t.startState.field(O)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return l.Decoration.none;let{view:r}=this,n=new l.RangeSetBuilder;for(let i=0,o=r.visibleRanges,s=o.length;i<s;i++){let{from:a,to:c}=o[i];for(;i<s-1&&c>o[i+1].from-2*250;)c=o[++i].to;t.highlight(r.state,a,c,(h,u)=>{let f=r.state.selection.ranges.some(d=>d.from==h&&d.to==u);n.add(h,u,f?Zr:Yr)})}return n.finish()}},{decorations:t=>t.decorations});function le(t){return e=>{let r=e.state.field(O,!1);return r&&r.query.spec.valid?t(e,r):rn(e)}}const ke=le((t,{query:e})=>{let{to:r}=t.state.selection.main,n=e.nextMatch(t.state,r,r);if(!n)return!1;let i=l.EditorSelection.single(n.from,n.to),o=t.state.facet(Z);return t.dispatch({selection:i,effects:[Je(t,n),o.scrollToMatch(i.main,t)],userEvent:"select.search"}),nn(t),!0}),xe=le((t,{query:e})=>{let{state:r}=t,{from:n}=r.selection.main,i=e.prevMatch(r,n,n);if(!i)return!1;let o=l.EditorSelection.single(i.from,i.to),s=t.state.facet(Z);return t.dispatch({selection:o,effects:[Je(t,i),s.scrollToMatch(o.main,t)],userEvent:"select.search"}),nn(t),!0}),ei=le((t,{query:e})=>{let r=e.matchAll(t.state,1e3);return!r||!r.length?!1:(t.dispatch({selection:l.EditorSelection.create(r.map(n=>l.EditorSelection.range(n.from,n.to))),userEvent:"select.search.matches"}),!0)}),ti=({state:t,dispatch:e})=>{let r=t.selection;if(r.ranges.length>1||r.main.empty)return!1;let{from:n,to:i}=r.main,o=[],s=0;for(let a=new Q(t.doc,t.sliceDoc(n,i));!a.next().done;){if(o.length>1e3)return!1;a.value.from==n&&(s=o.length),o.push(l.EditorSelection.range(a.value.from,a.value.to))}return e(t.update({selection:l.EditorSelection.create(o,s),userEvent:"select.search.matches"})),!0},lt=le((t,{query:e})=>{let{state:r}=t,{from:n,to:i}=r.selection.main;if(r.readOnly)return!1;let o=e.nextMatch(r,n,n);if(!o)return!1;let s=o,a=[],c,h,u=[];s.precise?s.from==n&&s.to==i&&(h=r.toText(e.getReplacement(s)),a.push({from:s.from,to:s.to,insert:h}),u.push(l.EditorView.announce.of(r.phrase("replaced match on line $",r.doc.lineAt(n).number)+"."))):s=e.nextMatch(r,s.from,s.to);let f=t.state.changes(a);return s&&(c=l.EditorSelection.single(s.from,s.to).map(f),u.push(Je(t,s)),u.push(r.facet(Z).scrollToMatch(c.main,t))),t.dispatch({changes:f,selection:c,effects:u,userEvent:"input.replace"}),!0}),ni=le((t,{query:e})=>{if(t.state.readOnly)return!1;let r=[];for(let i of e.matchAll(t.state,1e9)){let{from:o,to:s,precise:a}=i;a&&r.push({from:o,to:s,insert:e.getReplacement(i)})}if(!r.length)return!1;let n=t.state.phrase("replaced $ matches",r.length)+".";return t.dispatch({changes:r,effects:l.EditorView.announce.of(n),userEvent:"input.replace.all"}),!0});function $e(t){return t.state.facet(Z).createPanel(t)}function Ve(t,e){var r,n,i,o,s;let a=t.selection.main,c=a.empty||a.to>a.from+100?"":t.sliceDoc(a.from,a.to);if(e&&!c)return e;let h=t.facet(Z);return new Xt({search:((r=e==null?void 0:e.literal)!==null&&r!==void 0?r:h.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(n=e==null?void 0:e.caseSensitive)!==null&&n!==void 0?n:h.caseSensitive,literal:(i=e==null?void 0:e.literal)!==null&&i!==void 0?i:h.literal,regexp:(o=e==null?void 0:e.regexp)!==null&&o!==void 0?o:h.regexp,wholeWord:(s=e==null?void 0:e.wholeWord)!==null&&s!==void 0?s:h.wholeWord})}function tn(t){let e=l.getPanel(t,$e);return e&&e.dom.querySelector("[main-field]")}function nn(t){let e=tn(t);e&&e==t.root.activeElement&&e.select()}const rn=t=>{let e=t.state.field(O,!1);if(e&&e.panel){let r=tn(t);if(r&&r!=t.root.activeElement){let n=Ve(t.state,e.query.spec);n.valid&&t.dispatch({effects:ne.of(n)}),r.focus(),r.select()}}else t.dispatch({effects:[Ke.of(!0),e?ne.of(Ve(t.state,e.query.spec)):l.StateEffect.appendConfig.of(li)]});return!0},on=t=>{let e=t.state.field(O,!1);if(!e||!e.panel)return!1;let r=l.getPanel(t,$e);return r&&r.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:Ke.of(!1)}),!0},ri=[{key:"Mod-f",run:rn,scope:"editor search-panel"},{key:"F3",run:ke,shift:xe,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:ke,shift:xe,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:on,scope:"editor search-panel"},{key:"Mod-Shift-l",run:ti},{key:"Mod-Alt-g",run:Pr},{key:"Mod-d",run:Gr,preventDefault:!0}];class ii{constructor(e){this.view=e;let r=this.query=e.state.field(O).query.spec;this.commit=this.commit.bind(this),this.searchField=l.crelt("input",{value:r.search,placeholder:E(e,"Find"),"aria-label":E(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=l.crelt("input",{value:r.replace,placeholder:E(e,"Replace"),"aria-label":E(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=l.crelt("input",{type:"checkbox",name:"case",form:"",checked:r.caseSensitive,onchange:this.commit}),this.reField=l.crelt("input",{type:"checkbox",name:"re",form:"",checked:r.regexp,onchange:this.commit}),this.wordField=l.crelt("input",{type:"checkbox",name:"word",form:"",checked:r.wholeWord,onchange:this.commit});function n(i,o,s){return l.crelt("button",{class:"cm-button",name:i,onclick:o,type:"button"},s)}this.dom=l.crelt("div",{onkeydown:i=>this.keydown(i),class:"cm-search"},[this.searchField,n("next",()=>ke(e),[E(e,"next")]),n("prev",()=>xe(e),[E(e,"previous")]),n("select",()=>ei(e),[E(e,"all")]),l.crelt("label",null,[this.caseField,E(e,"match case")]),l.crelt("label",null,[this.reField,E(e,"regexp")]),l.crelt("label",null,[this.wordField,E(e,"by word")]),...e.state.readOnly?[]:[l.crelt("br"),this.replaceField,n("replace",()=>lt(e),[E(e,"replace")]),n("replaceAll",()=>ni(e),[E(e,"replace all")])],l.crelt("button",{name:"close",onclick:()=>on(e),"aria-label":E(e,"close"),type:"button"},["×"])])}commit(){let e=new Xt({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:ne.of(e)}))}keydown(e){l.runScopeHandlers(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?xe:ke)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),lt(this.view))}update(e){for(let r of e.transactions)for(let n of r.effects)n.is(ne)&&!n.value.eq(this.query)&&this.setQuery(n.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Z).top}}function E(t,e){return t.state.phrase(e)}const ue=30,fe=/[\s\.,:;?!]/;function Je(t,{from:e,to:r}){let n=t.state.doc.lineAt(e),i=t.state.doc.lineAt(r).to,o=Math.max(n.from,e-ue),s=Math.min(i,r+ue),a=t.state.sliceDoc(o,s);if(o!=n.from){for(let c=0;c<ue;c++)if(!fe.test(a[c+1])&&fe.test(a[c])){a=a.slice(c);break}}if(s!=i){for(let c=a.length-1;c>a.length-ue;c--)if(!fe.test(a[c-1])&&fe.test(a[c])){a=a.slice(0,c);break}}return l.EditorView.announce.of(`${t.state.phrase("current match")}. ${a} ${t.state.phrase("on line")} ${n.number}.`)}const oi=l.EditorView.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),li=[O,l.Prec.low(Xr),oi];class st{constructor(e,r,n){this.from=e,this.to=r,this.diagnostic=n}}class U{constructor(e,r,n){this.diagnostics=e,this.panel=r,this.selected=n}static init(e,r,n){let i=n.facet(re).markerFilter;i&&(e=i(e,n));let o=e.slice().sort((m,g)=>m.from-g.from||m.to-g.to),s=new l.RangeSetBuilder,a=[],c=0,h=n.doc.iter(),u=0,f=n.doc.length;for(let m=0;;){let g=m==o.length?null:o[m];if(!g&&!a.length)break;let S,y;if(a.length)S=c,y=a.reduce((p,C)=>Math.min(p,C.to),g&&g.from>S?g.from:1e8);else{if(S=g.from,S>f)break;y=g.to,a.push(g),m++}for(;m<o.length;){let p=o[m];if(p.from==S&&(p.to>p.from||p.to==S))a.push(p),m++,y=Math.min(p.to,y);else{y=Math.min(p.from,y);break}}y=Math.min(y,f);let P=!1;if(a.some(p=>p.from==S&&(p.to==y||y==f))&&(P=S==y,!P&&y-S<10)){let p=S-(u+h.value.length);p>0&&(h.next(p),u=S);for(let C=S;;){if(C>=y){P=!0;break}if(!h.lineBreak&&u+h.value.length>C)break;C=u+h.value.length,u+=h.value.length,h.next()}}let F=ki(a);if(P)s.add(S,S,l.Decoration.widget({widget:new gi(F),diagnostics:a.slice()}));else{let p=a.reduce((C,z)=>z.markClass?C+" "+z.markClass:C,"");s.add(S,y,l.Decoration.mark({class:"cm-lintRange cm-lintRange-"+F+p,diagnostics:a.slice(),inclusiveEnd:a.some(C=>C.to>y)}))}if(c=y,c==f)break;for(let p=0;p<a.length;p++)a[p].to<=c&&a.splice(p--,1)}let d=s.finish();return new U(d,r,W(d))}}function W(t,e=null,r=0){let n=null;return t.between(r,1e9,(i,o,{spec:s})=>{if(!(e&&s.diagnostics.indexOf(e)<0))if(!n)n=new st(i,o,e||s.diagnostics[0]);else{if(s.diagnostics.indexOf(n.diagnostic)<0)return!1;n=new st(n.from,o,n.diagnostic)}}),n}function si(t,e){let r=e.pos,n=e.end||r,i=t.state.facet(re).hideOn(t,r,n);if(i!=null)return i;let o=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(s=>s.is(ln))||t.changes.touchesRange(o.from,Math.max(o.to,n)))}function ai(t,e){return t.field(M,!1)?e:e.concat(l.StateEffect.appendConfig.of(xi))}const ln=l.StateEffect.define(),_e=l.StateEffect.define(),sn=l.StateEffect.define(),M=l.StateField.define({create(){return new U(l.Decoration.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let r=t.diagnostics.map(e.changes),n=null,i=t.panel;if(t.selected){let o=e.changes.mapPos(t.selected.from,1);n=W(r,t.selected.diagnostic,o)||W(r,null,o)}!r.size&&i&&e.state.facet(re).autoPanel&&(i=null),t=new U(r,i,n)}for(let r of e.effects)if(r.is(ln)){let n=e.state.facet(re).autoPanel?r.value.length?ie.open:null:t.panel;t=U.init(r.value,n,e.state)}else r.is(_e)?t=new U(t.diagnostics,r.value?ie.open:null,t.selected):r.is(sn)&&(t=new U(t.diagnostics,t.panel,r.value));return t},provide:t=>[l.showPanel.from(t,e=>e.panel),l.EditorView.decorations.from(t,e=>e.diagnostics)]}),ci=l.Decoration.mark({class:"cm-lintRange cm-lintRange-active"});function hi(t,e,r){let{diagnostics:n}=t.state.field(M),i,o=-1,s=-1;n.between(e-(r<0?1:0),e+(r>0?1:0),(c,h,{spec:u})=>{if(e>=c&&e<=h&&(c==h||(e>c||r>0)&&(e<h||r<0)))return i=u.diagnostics,o=c,s=h,!1});let a=t.state.facet(re).tooltipFilter;return i&&a&&(i=a(i,t.state)),i?{pos:o,end:s,above:t.state.doc.lineAt(o).to<s,create(){return{dom:ui(t,i)}}}:null}function ui(t,e){return l.crelt("ul",{class:"cm-tooltip-lint"},e.map(r=>cn(t,r,!1)))}const fi=t=>{let e=t.state.field(M,!1);(!e||!e.panel)&&t.dispatch({effects:ai(t.state,[_e.of(!0)])});let r=l.getPanel(t,ie.open);return r&&r.dom.querySelector(".cm-panel-lint ul").focus(),!0},at=t=>{let e=t.state.field(M,!1);return!e||!e.panel?!1:(t.dispatch({effects:_e.of(!1)}),!0)},di=t=>{let e=t.state.field(M,!1);if(!e)return!1;let r=t.state.selection.main,n=W(e.diagnostics,null,r.to+1);return!n&&(n=W(e.diagnostics,null,0),!n||n.from==r.from&&n.to==r.to)?!1:(t.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0}),!0)},mi=[{key:"Mod-Shift-m",run:fi,preventDefault:!0},{key:"F8",run:di}],re=l.Facet.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...l.combineConfig(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:ct,tooltipFilter:ct,needsRefresh:(e,r)=>e?r?n=>e(n)||r(n):e:r,hideOn:(e,r)=>e?r?(n,i,o)=>e(n,i,o)||r(n,i,o):e:r,autoPanel:(e,r)=>e||r})}}});function ct(t,e){return t?e?(r,n)=>e(t(r,n),n):t:e}function an(t){let e=[];if(t)e:for(let{name:r}of t){for(let n=0;n<r.length;n++){let i=r[n];if(/[a-zA-Z]/.test(i)&&!e.some(o=>o.toLowerCase()==i.toLowerCase())){e.push(i);continue e}}e.push("")}return e}function cn(t,e,r){var n;let i=r?an(e.actions):[];return l.crelt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},l.crelt("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(n=e.actions)===null||n===void 0?void 0:n.map((o,s)=>{let a=!1,c=m=>{if(m.preventDefault(),a)return;a=!0;let g=W(t.state.field(M).diagnostics,e);g&&o.apply(t,g.from,g.to)},{name:h}=o,u=i[s]?h.indexOf(i[s]):-1,f=u<0?h:[h.slice(0,u),l.crelt("u",h.slice(u,u+1)),h.slice(u+1)],d=o.markClass?" "+o.markClass:"";return l.crelt("button",{type:"button",class:"cm-diagnosticAction"+d,onclick:c,onmousedown:c,"aria-label":` Action: ${h}${u<0?"":` (access key "${i[s]})"`}.`},f)}),e.source&&l.crelt("div",{class:"cm-diagnosticSource"},e.source))}class gi extends l.WidgetType{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return l.crelt("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class ht{constructor(e,r){this.diagnostic=r,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=cn(e,r,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class ie{constructor(e){this.view=e,this.items=[];let r=i=>{if(!(i.ctrlKey||i.altKey||i.metaKey)){if(i.keyCode==27)at(this.view),this.view.focus();else if(i.keyCode==38||i.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(i.keyCode==40||i.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(i.keyCode==36)this.moveSelection(0);else if(i.keyCode==35)this.moveSelection(this.items.length-1);else if(i.keyCode==13)this.view.focus();else if(i.keyCode>=65&&i.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:o}=this.items[this.selectedIndex],s=an(o.actions);for(let a=0;a<s.length;a++)if(s[a].toUpperCase().charCodeAt(0)==i.keyCode){let c=W(this.view.state.field(M).diagnostics,o);c&&o.actions[a].apply(e,c.from,c.to)}}else return;i.preventDefault()}},n=i=>{for(let o=0;o<this.items.length;o++)this.items[o].dom.contains(i.target)&&this.moveSelection(o)};this.list=l.crelt("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:r,onclick:n}),this.dom=l.crelt("div",{class:"cm-panel-lint"},this.list,l.crelt("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>at(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(M).selected;if(!e)return-1;for(let r=0;r<this.items.length;r++)if(this.items[r].diagnostic==e.diagnostic)return r;return-1}update(){let{diagnostics:e,selected:r}=this.view.state.field(M),n=0,i=!1,o=null,s=new Set;for(e.between(0,this.view.state.doc.length,(a,c,{spec:h})=>{for(let u of h.diagnostics){if(s.has(u))continue;s.add(u);let f=-1,d;for(let m=n;m<this.items.length;m++)if(this.items[m].diagnostic==u){f=m;break}f<0?(d=new ht(this.view,u),this.items.splice(n,0,d),i=!0):(d=this.items[f],f>n&&(this.items.splice(n,f-n),i=!0)),r&&d.diagnostic==r.diagnostic?d.dom.hasAttribute("aria-selected")||(d.dom.setAttribute("aria-selected","true"),o=d):d.dom.hasAttribute("aria-selected")&&d.dom.removeAttribute("aria-selected"),n++}});n<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)i=!0,this.items.pop();this.items.length==0&&(this.items.push(new ht(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),i=!0),o?(this.list.setAttribute("aria-activedescendant",o.id),this.view.requestMeasure({key:this,read:()=>({sel:o.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:a,panel:c})=>{let h=c.height/this.list.offsetHeight;a.top<c.top?this.list.scrollTop-=(c.top-a.top)/h:a.bottom>c.bottom&&(this.list.scrollTop+=(a.bottom-c.bottom)/h)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),i&&this.sync()}sync(){let e=this.list.firstChild;function r(){let n=e;e=n.nextSibling,n.remove()}for(let n of this.items)if(n.dom.parentNode==this.list){for(;e!=n.dom;)r();e=n.dom.nextSibling}else this.list.insertBefore(n.dom,e);for(;e;)r()}moveSelection(e){if(this.selectedIndex<0)return;let r=this.view.state.field(M),n=W(r.diagnostics,this.items[e].diagnostic);n&&this.view.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0,effects:sn.of(n)})}static open(e){return new ie(e)}}function pi(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(t)}</svg>')`}function de(t){return pi(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${t}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const yi=l.EditorView.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:de("#d11")},".cm-lintRange-warning":{backgroundImage:de("orange")},".cm-lintRange-info":{backgroundImage:de("#999")},".cm-lintRange-hint":{backgroundImage:de("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}},"&dark .cm-lintRange-active":{backgroundColor:"#86714a80"},"&dark .cm-panel.cm-panel-lint ul":{"& [aria-selected]":{backgroundColor:"#2e343e"}}});function Si(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function ki(t){let e="hint",r=1;for(let n of t){let i=Si(n.severity);i>r&&(r=i,e=n.severity)}return e}const xi=[M,l.EditorView.decorations.compute([M],t=>{let{selected:e,panel:r}=t.field(M);return!e||!r||e.from==e.to?l.Decoration.none:l.Decoration.set([ci.range(e.from,e.to)])}),l.hoverTooltip(hi,{hideOn:si}),yi];var Fe=function(e){e===void 0&&(e={});var{crosshairCursor:r=!1}=e,n=[];e.closeBracketsKeymap!==!1&&(n=n.concat(ce.closeBracketsKeymap)),e.defaultKeymap!==!1&&(n=n.concat(wr)),e.searchKeymap!==!1&&(n=n.concat(ri)),e.historyKeymap!==!1&&(n=n.concat(Vn)),e.foldKeymap!==!1&&(n=n.concat(l.foldKeymap)),e.completionKeymap!==!1&&(n=n.concat(ce.completionKeymap)),e.lintKeymap!==!1&&(n=n.concat(mi));var i=[];return e.lineNumbers!==!1&&i.push(l.lineNumbers()),e.highlightActiveLineGutter!==!1&&i.push(l.highlightActiveLineGutter()),e.highlightSpecialChars!==!1&&i.push(l.highlightSpecialChars()),e.history!==!1&&i.push(Bn()),e.foldGutter!==!1&&i.push(l.foldGutter()),e.drawSelection!==!1&&i.push(l.drawSelection()),e.dropCursor!==!1&&i.push(l.dropCursor()),e.allowMultipleSelections!==!1&&i.push(l.EditorState.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&i.push(l.indentOnInput()),e.syntaxHighlighting!==!1&&i.push(l.syntaxHighlighting(l.defaultHighlightStyle,{fallback:!0})),e.bracketMatching!==!1&&i.push(l.bracketMatching()),e.closeBrackets!==!1&&i.push(ce.closeBrackets()),e.autocompletion!==!1&&i.push(ce.autocompletion()),e.rectangularSelection!==!1&&i.push(l.rectangularSelection()),r!==!1&&i.push(l.crosshairCursor()),e.highlightActiveLine!==!1&&i.push(l.highlightActiveLine()),e.highlightSelectionMatches!==!1&&i.push(Wr()),e.tabSize&&typeof e.tabSize=="number"&&i.push(l.indentUnit.of(" ".repeat(e.tabSize))),i.concat([l.keymap.of(n.flat())]).filter(Boolean)};const Ci="#e5c07b",ut="#e06c75",bi="#56b6c2",vi="#ffffff",me="#abb2bf",Ne="#7d8799",Ei="#61afef",Mi="#98c379",ft="#d19a66",Ai="#c678dd",Di="#21252b",dt="#2c313a",mt="#282c34",Te="#353a42",Bi="#3E4451",gt="#528bff",hn=l.EditorView.theme({"&":{color:me,backgroundColor:mt},".cm-content":{caretColor:gt},".cm-cursor, .cm-dropCursor":{borderLeftColor:gt},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Bi},".cm-panels":{backgroundColor:Di,color:me},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:mt,color:Ne,border:"none"},".cm-activeLineGutter":{backgroundColor:dt},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Te},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Te,borderBottomColor:Te},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:dt,color:me}}},{dark:!0}),un=l.HighlightStyle.define([{tag:l.tags.keyword,color:Ai},{tag:[l.tags.name,l.tags.deleted,l.tags.character,l.tags.propertyName,l.tags.macroName],color:ut},{tag:[l.tags.function(l.tags.variableName),l.tags.labelName],color:Ei},{tag:[l.tags.color,l.tags.constant(l.tags.name),l.tags.standard(l.tags.name)],color:ft},{tag:[l.tags.definition(l.tags.name),l.tags.separator],color:me},{tag:[l.tags.typeName,l.tags.className,l.tags.number,l.tags.changed,l.tags.annotation,l.tags.modifier,l.tags.self,l.tags.namespace],color:Ci},{tag:[l.tags.operator,l.tags.operatorKeyword,l.tags.url,l.tags.escape,l.tags.regexp,l.tags.link,l.tags.special(l.tags.string)],color:bi},{tag:[l.tags.meta,l.tags.comment],color:Ne},{tag:l.tags.strong,fontWeight:"bold"},{tag:l.tags.emphasis,fontStyle:"italic"},{tag:l.tags.strikethrough,textDecoration:"line-through"},{tag:l.tags.link,color:Ne,textDecoration:"underline"},{tag:l.tags.heading,fontWeight:"bold",color:ut},{tag:[l.tags.atom,l.tags.bool,l.tags.special(l.tags.variableName)],color:ft},{tag:[l.tags.processingInstruction,l.tags.string,l.tags.inserted],color:Mi},{tag:l.tags.invalid,color:vi}]),fn=[hn,l.syntaxHighlighting(un)];var dn=l.EditorView.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),mn=function(e){e===void 0&&(e={});var{indentWithTab:r=!0,editable:n=!0,readOnly:i=!1,theme:o="light",placeholder:s="",basicSetup:a=!0}=e,c=[];switch(r&&c.unshift(l.keymap.of([Tr])),a&&(typeof a=="boolean"?c.unshift(Fe()):c.unshift(Fe(a))),s&&c.unshift(l.placeholder(s)),o){case"light":c.push(dn);break;case"dark":c.push(fn);break;case"none":break;default:c.push(o);break}return n===!1&&c.push(l.EditorView.editable.of(!1)),i&&c.push(l.EditorState.readOnly.of(!0)),[...c]},gn=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Li{constructor(e,r){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=r,this.timeoutMS=r,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(r=>{try{r()}catch(n){console.error("TimeoutLatch callback error:",n)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class pt{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var Re=null,wi=()=>typeof window>"u"?new pt:(Re||(Re=new pt),Re),qe=l.Annotation.define(),Ti=200,Ri=[];function pn(t){var{value:e,selection:r,onChange:n,onStatistics:i,onCreateEditor:o,onUpdate:s,extensions:a=Ri,autoFocus:c,theme:h="light",height:u=null,minHeight:f=null,maxHeight:d=null,width:m=null,minWidth:g=null,maxWidth:S=null,placeholder:y="",editable:P=!0,readOnly:F=!1,indentWithTab:p=!0,basicSetup:C=!0,root:z,initialState:X}=t,[G,se]=b.useState(),[k,I]=b.useState(),[K,$]=b.useState(),A=b.useState(()=>({current:null}))[0],N=b.useState(()=>({current:null}))[0],Me=l.EditorView.theme({"&":{height:u,minHeight:f,maxHeight:d,width:m,minWidth:g,maxWidth:S},"& .cm-scroller":{height:"100% !important"}}),Ae=l.EditorView.updateListener.of(T=>{if(T.docChanged&&typeof n=="function"&&!T.transactions.some(De=>De.annotation(qe))){A.current?A.current.reset():(A.current=new Li(()=>{if(N.current){var De=N.current;N.current=null,De()}A.current=null},Ti),wi().add(A.current));var q=T.state.doc,H=q.toString();n(H,T)}i&&i(gn(T))}),ae=mn({theme:h,editable:P,readOnly:F,placeholder:y,indentWithTab:p,basicSetup:C}),ee=[Ae,Me,...ae];return s&&typeof s=="function"&&ee.push(l.EditorView.updateListener.of(s)),ee=ee.concat(a),b.useLayoutEffect(()=>{if(G&&!K){var T={doc:e,selection:r,extensions:ee},q=X?l.EditorState.fromJSON(X.json,T,X.fields):l.EditorState.create(T);if($(q),!k){var H=new l.EditorView({state:q,parent:G,root:z});I(H),o&&o(H,q)}}return()=>{k&&($(void 0),I(void 0))}},[G,K]),b.useEffect(()=>{t.container&&se(t.container)},[t.container]),b.useEffect(()=>()=>{k&&(k.destroy(),I(void 0)),A.current&&(A.current.cancel(),A.current=null)},[k]),b.useEffect(()=>{c&&k&&k.focus()},[c,k]),b.useEffect(()=>{k&&k.dispatch({effects:l.StateEffect.reconfigure.of(ee)})},[h,a,u,f,d,m,g,S,y,P,F,p,C,n,s]),b.useEffect(()=>{if(e!==void 0){var T=k?k.state.doc.toString():"";if(k&&e!==T){var q=A.current&&!A.current.isDone,H=()=>{k&&e!==k.state.doc.toString()&&k.dispatch({changes:{from:0,to:k.state.doc.toString().length,insert:e||""},annotations:[qe.of(!0)]})};q?N.current=H:H()}}},[e,k]),{state:K,setState:$,view:k,setView:I,container:G,setContainer:se}}var Pi=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],yn=b.forwardRef((t,e)=>{var{className:r,value:n="",selection:i,extensions:o=[],onChange:s,onStatistics:a,onCreateEditor:c,onUpdate:h,autoFocus:u,theme:f="light",height:d,minHeight:m,maxHeight:g,width:S,minWidth:y,maxWidth:P,basicSetup:F,placeholder:p,indentWithTab:C,editable:z,readOnly:X,root:G,initialState:se}=t,k=je._objectWithoutPropertiesLoose(t,Pi),I=b.useRef(null),{state:K,view:$,container:A,setContainer:N}=pn({root:G,value:n,autoFocus:u,theme:f,height:d,minHeight:m,maxHeight:g,width:S,minWidth:y,maxWidth:P,basicSetup:F,placeholder:p,indentWithTab:C,editable:z,readOnly:X,selection:i,onChange:s,onStatistics:a,onCreateEditor:c,onUpdate:h,extensions:o,initialState:se});b.useImperativeHandle(e,()=>({editor:I.current,state:K,view:$}),[I,A,K,$]);var Me=b.useCallback(ae=>{I.current=ae,N(ae)},[N]);if(typeof n!="string")throw new Error("value must be typeof string but got "+typeof n);var Ae=typeof f=="string"?"cm-theme-"+f:"cm-theme";return Sn.jsx("div",je._extends({ref:Me,className:""+Ae+(r?" "+r:"")},k))});yn.displayName="CodeMirror";exports.Annotation=l.Annotation;exports.AnnotationType=l.AnnotationType;exports.BidiSpan=l.BidiSpan;exports.BlockInfo=l.BlockInfo;Object.defineProperty(exports,"BlockType",{enumerable:!0,get:()=>l.BlockType});exports.BlockWrapper=l.BlockWrapper;exports.ChangeDesc=l.ChangeDesc;exports.ChangeSet=l.ChangeSet;Object.defineProperty(exports,"CharCategory",{enumerable:!0,get:()=>l.CharCategory});exports.Compartment=l.Compartment;exports.Decoration=l.Decoration;Object.defineProperty(exports,"Direction",{enumerable:!0,get:()=>l.Direction});exports.EditorSelection=l.EditorSelection;exports.EditorState=l.EditorState;exports.EditorView=l.EditorView;exports.Facet=l.Facet;exports.GutterMarker=l.GutterMarker;exports.Line=l.Line;Object.defineProperty(exports,"MapMode",{enumerable:!0,get:()=>l.MapMode});exports.MatchDecorator=l.MatchDecorator;exports.Prec=l.Prec;exports.Range=l.Range;exports.RangeSet=l.RangeSet;exports.RangeSetBuilder=l.RangeSetBuilder;exports.RangeValue=l.RangeValue;exports.RectangleMarker=l.RectangleMarker;exports.SelectionRange=l.SelectionRange;exports.StateEffect=l.StateEffect;exports.StateEffectType=l.StateEffectType;exports.StateField=l.StateField;exports.Text=l.Text;exports.Transaction=l.Transaction;exports.ViewPlugin=l.ViewPlugin;exports.ViewUpdate=l.ViewUpdate;exports.WidgetType=l.WidgetType;exports.codePointAt=l.codePointAt;exports.codePointSize=l.codePointSize;exports.combineConfig=l.combineConfig;exports.countColumn=l.countColumn;exports.crosshairCursor=l.crosshairCursor;exports.drawSelection=l.drawSelection;exports.dropCursor=l.dropCursor;exports.findClusterBreak=l.findClusterBreak;exports.findColumn=l.findColumn;exports.fromCodePoint=l.fromCodePoint;exports.getPanel=l.getPanel;exports.getTooltip=l.getTooltip;exports.gutter=l.gutter;exports.gutterLineClass=l.gutterLineClass;exports.gutterWidgetClass=l.gutterWidgetClass;exports.gutters=l.gutters;exports.highlightActiveLine=l.highlightActiveLine;exports.highlightActiveLineGutter=l.highlightActiveLineGutter;exports.highlightSpecialChars=l.highlightSpecialChars;exports.hoverTooltip=l.hoverTooltip;exports.keymap=l.keymap;exports.layer=l.layer;exports.lineNumberMarkers=l.lineNumberMarkers;exports.lineNumberWidgetMarker=l.lineNumberWidgetMarker;exports.lineNumbers=l.lineNumbers;exports.logException=l.logException;exports.placeholder=l.placeholder;exports.rectangularSelection=l.rectangularSelection;exports.runScopeHandlers=l.runScopeHandlers;exports.showDialog=l.showDialog;exports.showPanel=l.showPanel;exports.showTooltip=l.showTooltip;exports.ExternalChange=qe;exports.basicSetup=Fe;exports.default=yn;exports.defaultLightThemeOption=dn;exports.getDefaultExtensions=mn;exports.getStatistics=gn;exports.oneDark=fn;exports.oneDarkHighlightStyle=un;exports.oneDarkTheme=hn;exports.useCodeMirror=pn;
3
+ //# sourceMappingURL=index-DNDp8nLT.js.map