groove-dev 0.22.7 → 0.22.9

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 (125) hide show
  1. package/node_modules/@groove-dev/daemon/src/api.js +12 -2
  2. package/node_modules/@groove-dev/daemon/src/gateways/manager.js +3 -0
  3. package/node_modules/@groove-dev/gui/dist/assets/{index-B6DQvtWt.js → index-BKZQfaOu.js} +19 -19
  4. package/node_modules/@groove-dev/gui/dist/assets/index-CDWObHaG.css +1 -0
  5. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  6. package/node_modules/@groove-dev/gui/src/components/agents/agent-feed.jsx +1 -1
  7. package/node_modules/@groove-dev/gui/src/views/agents.jsx +5 -2
  8. package/package.json +1 -1
  9. package/packages/daemon/src/api.js +12 -2
  10. package/packages/daemon/src/gateways/manager.js +3 -0
  11. package/packages/gui/dist/assets/{index-B6DQvtWt.js → index-BKZQfaOu.js} +19 -19
  12. package/packages/gui/dist/assets/index-CDWObHaG.css +1 -0
  13. package/packages/gui/dist/index.html +2 -2
  14. package/packages/gui/src/components/agents/agent-feed.jsx +1 -1
  15. package/packages/gui/src/views/agents.jsx +5 -2
  16. package/node_modules/@groove-dev/gui/dist/assets/index-DHaSTu1c.css +0 -1
  17. package/packages/gui/dist/assets/index-DHaSTu1c.css +0 -1
  18. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js +0 -68
  19. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js.map +0 -7
  20. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js +0 -1420
  21. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js.map +0 -7
  22. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js +0 -17
  23. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js.map +0 -7
  24. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js +0 -22
  25. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js.map +0 -7
  26. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js +0 -34
  27. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js.map +0 -7
  28. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js +0 -101
  29. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js.map +0 -7
  30. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js +0 -2534
  31. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js.map +0 -7
  32. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js +0 -789
  33. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js.map +0 -7
  34. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js +0 -115
  35. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js.map +0 -7
  36. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js +0 -1136
  37. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js.map +0 -7
  38. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js +0 -63
  39. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js.map +0 -7
  40. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js +0 -179
  41. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js.map +0 -7
  42. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js +0 -104
  43. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js.map +0 -7
  44. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-dialog.js +0 -367
  45. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-dialog.js.map +0 -7
  46. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-scroll-area.js +0 -755
  47. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-scroll-area.js.map +0 -7
  48. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-select.js +0 -1254
  49. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-select.js.map +0 -7
  50. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tabs.js +0 -436
  51. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tabs.js.map +0 -7
  52. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tooltip.js +0 -531
  53. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tooltip.js.map +0 -7
  54. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js +0 -46
  55. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js.map +0 -7
  56. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js +0 -121
  57. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js.map +0 -7
  58. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js +0 -9237
  59. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js.map +0 -7
  60. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js +0 -9934
  61. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js.map +0 -7
  62. package/packages/gui/node_modules/.vite/deps/_metadata.json +0 -265
  63. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js +0 -5169
  64. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js.map +0 -7
  65. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js +0 -2000
  66. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js.map +0 -7
  67. package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js +0 -1115
  68. package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js.map +0 -7
  69. package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js +0 -701
  70. package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js.map +0 -7
  71. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js +0 -1776
  72. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js.map +0 -7
  73. package/packages/gui/node_modules/.vite/deps/chunk-6DLNZUA5.js +0 -142
  74. package/packages/gui/node_modules/.vite/deps/chunk-6DLNZUA5.js.map +0 -7
  75. package/packages/gui/node_modules/.vite/deps/chunk-ACEP5X2F.js +0 -292
  76. package/packages/gui/node_modules/.vite/deps/chunk-ACEP5X2F.js.map +0 -7
  77. package/packages/gui/node_modules/.vite/deps/chunk-AZUN7XMC.js +0 -87
  78. package/packages/gui/node_modules/.vite/deps/chunk-AZUN7XMC.js.map +0 -7
  79. package/packages/gui/node_modules/.vite/deps/chunk-CDLO3JFW.js +0 -1004
  80. package/packages/gui/node_modules/.vite/deps/chunk-CDLO3JFW.js.map +0 -7
  81. package/packages/gui/node_modules/.vite/deps/chunk-HPXOV7QR.js +0 -23
  82. package/packages/gui/node_modules/.vite/deps/chunk-HPXOV7QR.js.map +0 -7
  83. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js +0 -1062
  84. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js.map +0 -7
  85. package/packages/gui/node_modules/.vite/deps/chunk-I2PYXDFH.js +0 -1106
  86. package/packages/gui/node_modules/.vite/deps/chunk-I2PYXDFH.js.map +0 -7
  87. package/packages/gui/node_modules/.vite/deps/chunk-JPXYHBLX.js +0 -306
  88. package/packages/gui/node_modules/.vite/deps/chunk-JPXYHBLX.js.map +0 -7
  89. package/packages/gui/node_modules/.vite/deps/chunk-JYDZ3XIW.js +0 -264
  90. package/packages/gui/node_modules/.vite/deps/chunk-JYDZ3XIW.js.map +0 -7
  91. package/packages/gui/node_modules/.vite/deps/chunk-PR4QN5HX.js +0 -42
  92. package/packages/gui/node_modules/.vite/deps/chunk-PR4QN5HX.js.map +0 -7
  93. package/packages/gui/node_modules/.vite/deps/chunk-QZQGPDRM.js +0 -2328
  94. package/packages/gui/node_modules/.vite/deps/chunk-QZQGPDRM.js.map +0 -7
  95. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js +0 -10985
  96. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js.map +0 -7
  97. package/packages/gui/node_modules/.vite/deps/chunk-UO4Y2XXS.js +0 -105
  98. package/packages/gui/node_modules/.vite/deps/chunk-UO4Y2XXS.js.map +0 -7
  99. package/packages/gui/node_modules/.vite/deps/chunk-VW6LO3QI.js +0 -9
  100. package/packages/gui/node_modules/.vite/deps/chunk-VW6LO3QI.js.map +0 -7
  101. package/packages/gui/node_modules/.vite/deps/chunk-YAD7VOVN.js +0 -280
  102. package/packages/gui/node_modules/.vite/deps/chunk-YAD7VOVN.js.map +0 -7
  103. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js +0 -3459
  104. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js.map +0 -7
  105. package/packages/gui/node_modules/.vite/deps/clsx.js +0 -22
  106. package/packages/gui/node_modules/.vite/deps/clsx.js.map +0 -7
  107. package/packages/gui/node_modules/.vite/deps/framer-motion.js +0 -12732
  108. package/packages/gui/node_modules/.vite/deps/framer-motion.js.map +0 -7
  109. package/packages/gui/node_modules/.vite/deps/lucide-react.js +0 -29653
  110. package/packages/gui/node_modules/.vite/deps/lucide-react.js.map +0 -7
  111. package/packages/gui/node_modules/.vite/deps/package.json +0 -3
  112. package/packages/gui/node_modules/.vite/deps/react-dom.js +0 -6
  113. package/packages/gui/node_modules/.vite/deps/react-dom.js.map +0 -7
  114. package/packages/gui/node_modules/.vite/deps/react-dom_client.js +0 -20217
  115. package/packages/gui/node_modules/.vite/deps/react-dom_client.js.map +0 -7
  116. package/packages/gui/node_modules/.vite/deps/react.js +0 -5
  117. package/packages/gui/node_modules/.vite/deps/react.js.map +0 -7
  118. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js +0 -278
  119. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +0 -7
  120. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js +0 -6
  121. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js.map +0 -7
  122. package/packages/gui/node_modules/.vite/deps/tailwind-merge.js +0 -3263
  123. package/packages/gui/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
  124. package/packages/gui/node_modules/.vite/deps/zustand.js +0 -56
  125. package/packages/gui/node_modules/.vite/deps/zustand.js.map +0 -7
@@ -1,1420 +0,0 @@
1
- import {
2
- IndentContext,
3
- NodeProp,
4
- getIndentUnit,
5
- getIndentation,
6
- indentString,
7
- indentUnit,
8
- matchBrackets,
9
- syntaxTree
10
- } from "./chunk-3EE34IFC.js";
11
- import {
12
- Direction,
13
- EditorView
14
- } from "./chunk-RE2FU7ZU.js";
15
- import {
16
- Annotation,
17
- ChangeDesc,
18
- ChangeSet,
19
- CharCategory,
20
- EditorSelection,
21
- Facet,
22
- StateEffect,
23
- StateField,
24
- Text,
25
- Transaction,
26
- combineConfig,
27
- countColumn,
28
- findClusterBreak
29
- } from "./chunk-YYJMNVCJ.js";
30
- import "./chunk-PR4QN5HX.js";
31
-
32
- // ../../node_modules/@codemirror/commands/dist/index.js
33
- var toggleComment = (target) => {
34
- let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);
35
- return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;
36
- };
37
- function command(f, option) {
38
- return ({ state, dispatch }) => {
39
- if (state.readOnly)
40
- return false;
41
- let tr = f(option, state);
42
- if (!tr)
43
- return false;
44
- dispatch(state.update(tr));
45
- return true;
46
- };
47
- }
48
- var toggleLineComment = command(
49
- changeLineComment,
50
- 0
51
- /* CommentOption.Toggle */
52
- );
53
- var lineComment = command(
54
- changeLineComment,
55
- 1
56
- /* CommentOption.Comment */
57
- );
58
- var lineUncomment = command(
59
- changeLineComment,
60
- 2
61
- /* CommentOption.Uncomment */
62
- );
63
- var toggleBlockComment = command(
64
- changeBlockComment,
65
- 0
66
- /* CommentOption.Toggle */
67
- );
68
- var blockComment = command(
69
- changeBlockComment,
70
- 1
71
- /* CommentOption.Comment */
72
- );
73
- var blockUncomment = command(
74
- changeBlockComment,
75
- 2
76
- /* CommentOption.Uncomment */
77
- );
78
- var toggleBlockCommentByLine = command(
79
- (o, s) => changeBlockComment(o, s, selectedLineRanges(s)),
80
- 0
81
- /* CommentOption.Toggle */
82
- );
83
- function getConfig(state, pos) {
84
- let data = state.languageDataAt("commentTokens", pos, 1);
85
- return data.length ? data[0] : {};
86
- }
87
- var SearchMargin = 50;
88
- function findBlockComment(state, { open, close }, from, to) {
89
- let textBefore = state.sliceDoc(from - SearchMargin, from);
90
- let textAfter = state.sliceDoc(to, to + SearchMargin);
91
- let spaceBefore = /\s*$/.exec(textBefore)[0].length, spaceAfter = /^\s*/.exec(textAfter)[0].length;
92
- let beforeOff = textBefore.length - spaceBefore;
93
- if (textBefore.slice(beforeOff - open.length, beforeOff) == open && textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {
94
- return {
95
- open: { pos: from - spaceBefore, margin: spaceBefore && 1 },
96
- close: { pos: to + spaceAfter, margin: spaceAfter && 1 }
97
- };
98
- }
99
- let startText, endText;
100
- if (to - from <= 2 * SearchMargin) {
101
- startText = endText = state.sliceDoc(from, to);
102
- } else {
103
- startText = state.sliceDoc(from, from + SearchMargin);
104
- endText = state.sliceDoc(to - SearchMargin, to);
105
- }
106
- let startSpace = /^\s*/.exec(startText)[0].length, endSpace = /\s*$/.exec(endText)[0].length;
107
- let endOff = endText.length - endSpace - close.length;
108
- if (startText.slice(startSpace, startSpace + open.length) == open && endText.slice(endOff, endOff + close.length) == close) {
109
- return {
110
- open: {
111
- pos: from + startSpace + open.length,
112
- margin: /\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0
113
- },
114
- close: {
115
- pos: to - endSpace - close.length,
116
- margin: /\s/.test(endText.charAt(endOff - 1)) ? 1 : 0
117
- }
118
- };
119
- }
120
- return null;
121
- }
122
- function selectedLineRanges(state) {
123
- let ranges = [];
124
- for (let r of state.selection.ranges) {
125
- let fromLine = state.doc.lineAt(r.from);
126
- let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);
127
- if (toLine.from > fromLine.from && toLine.from == r.to)
128
- toLine = r.to == fromLine.to + 1 ? fromLine : state.doc.lineAt(r.to - 1);
129
- let last = ranges.length - 1;
130
- if (last >= 0 && ranges[last].to > fromLine.from)
131
- ranges[last].to = toLine.to;
132
- else
133
- ranges.push({ from: fromLine.from + /^\s*/.exec(fromLine.text)[0].length, to: toLine.to });
134
- }
135
- return ranges;
136
- }
137
- function changeBlockComment(option, state, ranges = state.selection.ranges) {
138
- let tokens = ranges.map((r) => getConfig(state, r.from).block);
139
- if (!tokens.every((c) => c))
140
- return null;
141
- let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));
142
- if (option != 2 && !comments.every((c) => c)) {
143
- return { changes: state.changes(ranges.map((range, i) => {
144
- if (comments[i])
145
- return [];
146
- return [{ from: range.from, insert: tokens[i].open + " " }, { from: range.to, insert: " " + tokens[i].close }];
147
- })) };
148
- } else if (option != 1 && comments.some((c) => c)) {
149
- let changes = [];
150
- for (let i = 0, comment; i < comments.length; i++)
151
- if (comment = comments[i]) {
152
- let token = tokens[i], { open, close } = comment;
153
- changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });
154
- }
155
- return { changes };
156
- }
157
- return null;
158
- }
159
- function changeLineComment(option, state, ranges = state.selection.ranges) {
160
- let lines = [];
161
- let prevLine = -1;
162
- ranges: for (let { from, to } of ranges) {
163
- let startI = lines.length, minIndent = 1e9, token;
164
- for (let pos = from; pos <= to; ) {
165
- let line = state.doc.lineAt(pos);
166
- if (token == void 0) {
167
- token = getConfig(state, line.from).line;
168
- if (!token)
169
- continue ranges;
170
- }
171
- if (line.from > prevLine && (from == to || to > line.from)) {
172
- prevLine = line.from;
173
- let indent = /^\s*/.exec(line.text)[0].length;
174
- let empty = indent == line.length;
175
- let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;
176
- if (indent < line.text.length && indent < minIndent)
177
- minIndent = indent;
178
- lines.push({ line, comment, token, indent, empty, single: false });
179
- }
180
- pos = line.to + 1;
181
- }
182
- if (minIndent < 1e9) {
183
- for (let i = startI; i < lines.length; i++)
184
- if (lines[i].indent < lines[i].line.text.length)
185
- lines[i].indent = minIndent;
186
- }
187
- if (lines.length == startI + 1)
188
- lines[startI].single = true;
189
- }
190
- if (option != 2 && lines.some((l) => l.comment < 0 && (!l.empty || l.single))) {
191
- let changes = [];
192
- for (let { line, token, indent, empty, single } of lines)
193
- if (single || !empty)
194
- changes.push({ from: line.from + indent, insert: token + " " });
195
- let changeSet = state.changes(changes);
196
- return { changes: changeSet, selection: state.selection.map(changeSet, 1) };
197
- } else if (option != 1 && lines.some((l) => l.comment >= 0)) {
198
- let changes = [];
199
- for (let { line, comment, token } of lines)
200
- if (comment >= 0) {
201
- let from = line.from + comment, to = from + token.length;
202
- if (line.text[to - line.from] == " ")
203
- to++;
204
- changes.push({ from, to });
205
- }
206
- return { changes };
207
- }
208
- return null;
209
- }
210
- var fromHistory = Annotation.define();
211
- var isolateHistory = Annotation.define();
212
- var invertedEffects = Facet.define();
213
- var historyConfig = Facet.define({
214
- combine(configs) {
215
- return combineConfig(configs, {
216
- minDepth: 100,
217
- newGroupDelay: 500,
218
- joinToEvent: (_t, isAdjacent2) => isAdjacent2
219
- }, {
220
- minDepth: Math.max,
221
- newGroupDelay: Math.min,
222
- joinToEvent: (a, b) => (tr, adj) => a(tr, adj) || b(tr, adj)
223
- });
224
- }
225
- });
226
- var historyField_ = StateField.define({
227
- create() {
228
- return HistoryState.empty;
229
- },
230
- update(state, tr) {
231
- let config = tr.state.facet(historyConfig);
232
- let fromHist = tr.annotation(fromHistory);
233
- if (fromHist) {
234
- let item = HistEvent.fromTransaction(tr, fromHist.selection), from = fromHist.side;
235
- let other = from == 0 ? state.undone : state.done;
236
- if (item)
237
- other = updateBranch(other, other.length, config.minDepth, item);
238
- else
239
- other = addSelection(other, tr.startState.selection);
240
- return new HistoryState(from == 0 ? fromHist.rest : other, from == 0 ? other : fromHist.rest);
241
- }
242
- let isolate = tr.annotation(isolateHistory);
243
- if (isolate == "full" || isolate == "before")
244
- state = state.isolate();
245
- if (tr.annotation(Transaction.addToHistory) === false)
246
- return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state;
247
- let event = HistEvent.fromTransaction(tr);
248
- let time = tr.annotation(Transaction.time), userEvent = tr.annotation(Transaction.userEvent);
249
- if (event)
250
- state = state.addChanges(event, time, userEvent, config, tr);
251
- else if (tr.selection)
252
- state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay);
253
- if (isolate == "full" || isolate == "after")
254
- state = state.isolate();
255
- return state;
256
- },
257
- toJSON(value) {
258
- return { done: value.done.map((e) => e.toJSON()), undone: value.undone.map((e) => e.toJSON()) };
259
- },
260
- fromJSON(json) {
261
- return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON));
262
- }
263
- });
264
- function history(config = {}) {
265
- return [
266
- historyField_,
267
- historyConfig.of(config),
268
- EditorView.domEventHandlers({
269
- beforeinput(e, view) {
270
- let command2 = e.inputType == "historyUndo" ? undo : e.inputType == "historyRedo" ? redo : null;
271
- if (!command2)
272
- return false;
273
- e.preventDefault();
274
- return command2(view);
275
- }
276
- })
277
- ];
278
- }
279
- var historyField = historyField_;
280
- function cmd(side, selection) {
281
- return function({ state, dispatch }) {
282
- if (!selection && state.readOnly)
283
- return false;
284
- let historyState = state.field(historyField_, false);
285
- if (!historyState)
286
- return false;
287
- let tr = historyState.pop(side, state, selection);
288
- if (!tr)
289
- return false;
290
- dispatch(tr);
291
- return true;
292
- };
293
- }
294
- var undo = cmd(0, false);
295
- var redo = cmd(1, false);
296
- var undoSelection = cmd(0, true);
297
- var redoSelection = cmd(1, true);
298
- function depth(side) {
299
- return function(state) {
300
- let histState = state.field(historyField_, false);
301
- if (!histState)
302
- return 0;
303
- let branch = side == 0 ? histState.done : histState.undone;
304
- return branch.length - (branch.length && !branch[0].changes ? 1 : 0);
305
- };
306
- }
307
- var undoDepth = depth(
308
- 0
309
- /* BranchName.Done */
310
- );
311
- var redoDepth = depth(
312
- 1
313
- /* BranchName.Undone */
314
- );
315
- var HistEvent = class _HistEvent {
316
- constructor(changes, effects, mapped, startSelection, selectionsAfter) {
317
- this.changes = changes;
318
- this.effects = effects;
319
- this.mapped = mapped;
320
- this.startSelection = startSelection;
321
- this.selectionsAfter = selectionsAfter;
322
- }
323
- setSelAfter(after) {
324
- return new _HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after);
325
- }
326
- toJSON() {
327
- var _a, _b, _c;
328
- return {
329
- changes: (_a = this.changes) === null || _a === void 0 ? void 0 : _a.toJSON(),
330
- mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(),
331
- startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(),
332
- selectionsAfter: this.selectionsAfter.map((s) => s.toJSON())
333
- };
334
- }
335
- static fromJSON(json) {
336
- return new _HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON));
337
- }
338
- // This does not check `addToHistory` and such, it assumes the
339
- // transaction needs to be converted to an item. Returns null when
340
- // there are no changes or effects in the transaction.
341
- static fromTransaction(tr, selection) {
342
- let effects = none;
343
- for (let invert of tr.startState.facet(invertedEffects)) {
344
- let result = invert(tr);
345
- if (result.length)
346
- effects = effects.concat(result);
347
- }
348
- if (!effects.length && tr.changes.empty)
349
- return null;
350
- return new _HistEvent(tr.changes.invert(tr.startState.doc), effects, void 0, selection || tr.startState.selection, none);
351
- }
352
- static selection(selections) {
353
- return new _HistEvent(void 0, none, void 0, void 0, selections);
354
- }
355
- };
356
- function updateBranch(branch, to, maxLen, newEvent) {
357
- let start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0;
358
- let newBranch = branch.slice(start, to);
359
- newBranch.push(newEvent);
360
- return newBranch;
361
- }
362
- function isAdjacent(a, b) {
363
- let ranges = [], isAdjacent2 = false;
364
- a.iterChangedRanges((f, t) => ranges.push(f, t));
365
- b.iterChangedRanges((_f, _t, f, t) => {
366
- for (let i = 0; i < ranges.length; ) {
367
- let from = ranges[i++], to = ranges[i++];
368
- if (t >= from && f <= to)
369
- isAdjacent2 = true;
370
- }
371
- });
372
- return isAdjacent2;
373
- }
374
- function eqSelectionShape(a, b) {
375
- return a.ranges.length == b.ranges.length && a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0;
376
- }
377
- function conc(a, b) {
378
- return !a.length ? b : !b.length ? a : a.concat(b);
379
- }
380
- var none = [];
381
- var MaxSelectionsPerEvent = 200;
382
- function addSelection(branch, selection) {
383
- if (!branch.length) {
384
- return [HistEvent.selection([selection])];
385
- } else {
386
- let lastEvent = branch[branch.length - 1];
387
- let sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent));
388
- if (sels.length && sels[sels.length - 1].eq(selection))
389
- return branch;
390
- sels.push(selection);
391
- return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels));
392
- }
393
- }
394
- function popSelection(branch) {
395
- let last = branch[branch.length - 1];
396
- let newBranch = branch.slice();
397
- newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1));
398
- return newBranch;
399
- }
400
- function addMappingToBranch(branch, mapping) {
401
- if (!branch.length)
402
- return branch;
403
- let length = branch.length, selections = none;
404
- while (length) {
405
- let event = mapEvent(branch[length - 1], mapping, selections);
406
- if (event.changes && !event.changes.empty || event.effects.length) {
407
- let result = branch.slice(0, length);
408
- result[length - 1] = event;
409
- return result;
410
- } else {
411
- mapping = event.mapped;
412
- length--;
413
- selections = event.selectionsAfter;
414
- }
415
- }
416
- return selections.length ? [HistEvent.selection(selections)] : none;
417
- }
418
- function mapEvent(event, mapping, extraSelections) {
419
- let selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map((s) => s.map(mapping)) : none, extraSelections);
420
- if (!event.changes)
421
- return HistEvent.selection(selections);
422
- let mappedChanges = event.changes.map(mapping), before = mapping.mapDesc(event.changes, true);
423
- let fullMapping = event.mapped ? event.mapped.composeDesc(before) : before;
424
- return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections);
425
- }
426
- var joinableUserEvent = /^(input\.type|delete)($|\.)/;
427
- var HistoryState = class _HistoryState {
428
- constructor(done, undone, prevTime = 0, prevUserEvent = void 0) {
429
- this.done = done;
430
- this.undone = undone;
431
- this.prevTime = prevTime;
432
- this.prevUserEvent = prevUserEvent;
433
- }
434
- isolate() {
435
- return this.prevTime ? new _HistoryState(this.done, this.undone) : this;
436
- }
437
- addChanges(event, time, userEvent, config, tr) {
438
- let done = this.done, lastEvent = done[done.length - 1];
439
- if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes && (!userEvent || joinableUserEvent.test(userEvent)) && (!lastEvent.selectionsAfter.length && time - this.prevTime < config.newGroupDelay && config.joinToEvent(tr, isAdjacent(lastEvent.changes, event.changes)) || // For compose (but not compose.start) events, always join with previous event
440
- userEvent == "input.type.compose")) {
441
- done = updateBranch(done, done.length - 1, config.minDepth, new HistEvent(event.changes.compose(lastEvent.changes), conc(StateEffect.mapEffects(event.effects, lastEvent.changes), lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none));
442
- } else {
443
- done = updateBranch(done, done.length, config.minDepth, event);
444
- }
445
- return new _HistoryState(done, none, time, userEvent);
446
- }
447
- addSelection(selection, time, userEvent, newGroupDelay) {
448
- let last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none;
449
- if (last.length > 0 && time - this.prevTime < newGroupDelay && userEvent == this.prevUserEvent && userEvent && /^select($|\.)/.test(userEvent) && eqSelectionShape(last[last.length - 1], selection))
450
- return this;
451
- return new _HistoryState(addSelection(this.done, selection), this.undone, time, userEvent);
452
- }
453
- addMapping(mapping) {
454
- return new _HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent);
455
- }
456
- pop(side, state, onlySelection) {
457
- let branch = side == 0 ? this.done : this.undone;
458
- if (branch.length == 0)
459
- return null;
460
- let event = branch[branch.length - 1], selection = event.selectionsAfter[0] || (event.startSelection ? event.startSelection.map(event.changes.invertedDesc, 1) : state.selection);
461
- if (onlySelection && event.selectionsAfter.length) {
462
- return state.update({
463
- selection: event.selectionsAfter[event.selectionsAfter.length - 1],
464
- annotations: fromHistory.of({ side, rest: popSelection(branch), selection }),
465
- userEvent: side == 0 ? "select.undo" : "select.redo",
466
- scrollIntoView: true
467
- });
468
- } else if (!event.changes) {
469
- return null;
470
- } else {
471
- let rest = branch.length == 1 ? none : branch.slice(0, branch.length - 1);
472
- if (event.mapped)
473
- rest = addMappingToBranch(rest, event.mapped);
474
- return state.update({
475
- changes: event.changes,
476
- selection: event.startSelection,
477
- effects: event.effects,
478
- annotations: fromHistory.of({ side, rest, selection }),
479
- filter: false,
480
- userEvent: side == 0 ? "undo" : "redo",
481
- scrollIntoView: true
482
- });
483
- }
484
- }
485
- };
486
- HistoryState.empty = new HistoryState(none, none);
487
- var historyKeymap = [
488
- { key: "Mod-z", run: undo, preventDefault: true },
489
- { key: "Mod-y", mac: "Mod-Shift-z", run: redo, preventDefault: true },
490
- { linux: "Ctrl-Shift-z", run: redo, preventDefault: true },
491
- { key: "Mod-u", run: undoSelection, preventDefault: true },
492
- { key: "Alt-u", mac: "Mod-Shift-u", run: redoSelection, preventDefault: true }
493
- ];
494
- function updateSel(sel, by) {
495
- return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);
496
- }
497
- function setSel(state, selection) {
498
- return state.update({ selection, scrollIntoView: true, userEvent: "select" });
499
- }
500
- function moveSel({ state, dispatch }, how) {
501
- let selection = updateSel(state.selection, how);
502
- if (selection.eq(state.selection, true))
503
- return false;
504
- dispatch(setSel(state, selection));
505
- return true;
506
- }
507
- function rangeEnd(range, forward) {
508
- return EditorSelection.cursor(forward ? range.to : range.from);
509
- }
510
- function cursorByChar(view, forward) {
511
- return moveSel(view, (range) => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));
512
- }
513
- function ltrAtCursor(view) {
514
- return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;
515
- }
516
- var cursorCharLeft = (view) => cursorByChar(view, !ltrAtCursor(view));
517
- var cursorCharRight = (view) => cursorByChar(view, ltrAtCursor(view));
518
- var cursorCharForward = (view) => cursorByChar(view, true);
519
- var cursorCharBackward = (view) => cursorByChar(view, false);
520
- function byCharLogical(state, range, forward) {
521
- let pos = range.head, line = state.doc.lineAt(pos);
522
- if (pos == (forward ? line.to : line.from))
523
- pos = forward ? Math.min(state.doc.length, line.to + 1) : Math.max(0, line.from - 1);
524
- else
525
- pos = line.from + findClusterBreak(line.text, pos - line.from, forward);
526
- return EditorSelection.cursor(pos, forward ? -1 : 1);
527
- }
528
- function moveByCharLogical(target, forward) {
529
- return moveSel(target, (range) => range.empty ? byCharLogical(target.state, range, forward) : rangeEnd(range, forward));
530
- }
531
- var cursorCharForwardLogical = (target) => moveByCharLogical(target, true);
532
- var cursorCharBackwardLogical = (target) => moveByCharLogical(target, false);
533
- function cursorByGroup(view, forward) {
534
- return moveSel(view, (range) => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));
535
- }
536
- var cursorGroupLeft = (view) => cursorByGroup(view, !ltrAtCursor(view));
537
- var cursorGroupRight = (view) => cursorByGroup(view, ltrAtCursor(view));
538
- var cursorGroupForward = (view) => cursorByGroup(view, true);
539
- var cursorGroupBackward = (view) => cursorByGroup(view, false);
540
- function toGroupStart(view, pos, start) {
541
- let categorize = view.state.charCategorizer(pos);
542
- let cat = categorize(start), initial = cat != CharCategory.Space;
543
- return (next) => {
544
- let nextCat = categorize(next);
545
- if (nextCat != CharCategory.Space)
546
- return initial && nextCat == cat;
547
- initial = false;
548
- return true;
549
- };
550
- }
551
- var cursorGroupForwardWin = (view) => {
552
- return moveSel(view, (range) => range.empty ? view.moveByChar(range, true, (start) => toGroupStart(view, range.head, start)) : rangeEnd(range, true));
553
- };
554
- var segmenter = typeof Intl != "undefined" && Intl.Segmenter ? new Intl.Segmenter(void 0, { granularity: "word" }) : null;
555
- function moveBySubword(view, range, forward) {
556
- let categorize = view.state.charCategorizer(range.from);
557
- let cat = CharCategory.Space, pos = range.from, steps = 0;
558
- let done = false, sawUpper = false, sawLower = false;
559
- let step = (next) => {
560
- if (done)
561
- return false;
562
- pos += forward ? next.length : -next.length;
563
- let nextCat = categorize(next), ahead;
564
- if (nextCat == CharCategory.Word && next.charCodeAt(0) < 128 && /[\W_]/.test(next))
565
- nextCat = -1;
566
- if (cat == CharCategory.Space)
567
- cat = nextCat;
568
- if (cat != nextCat)
569
- return false;
570
- if (cat == CharCategory.Word) {
571
- if (next.toLowerCase() == next) {
572
- if (!forward && sawUpper)
573
- return false;
574
- sawLower = true;
575
- } else if (sawLower) {
576
- if (forward)
577
- return false;
578
- done = true;
579
- } else {
580
- if (sawUpper && forward && categorize(ahead = view.state.sliceDoc(pos, pos + 1)) == CharCategory.Word && ahead.toLowerCase() == ahead)
581
- return false;
582
- sawUpper = true;
583
- }
584
- }
585
- steps++;
586
- return true;
587
- };
588
- let end = view.moveByChar(range, forward, (start) => {
589
- step(start);
590
- return step;
591
- });
592
- if (segmenter && cat == CharCategory.Word && end.from == range.from + steps * (forward ? 1 : -1)) {
593
- let from = Math.min(range.head, end.head), to = Math.max(range.head, end.head);
594
- let skipped = view.state.sliceDoc(from, to);
595
- if (skipped.length > 1 && /[\u4E00-\uffff]/.test(skipped)) {
596
- let segments = Array.from(segmenter.segment(skipped));
597
- if (segments.length > 1) {
598
- if (forward)
599
- return EditorSelection.cursor(range.head + segments[1].index, -1);
600
- return EditorSelection.cursor(end.head + segments[segments.length - 1].index, 1);
601
- }
602
- }
603
- }
604
- return end;
605
- }
606
- function cursorBySubword(view, forward) {
607
- return moveSel(view, (range) => range.empty ? moveBySubword(view, range, forward) : rangeEnd(range, forward));
608
- }
609
- var cursorSubwordForward = (view) => cursorBySubword(view, true);
610
- var cursorSubwordBackward = (view) => cursorBySubword(view, false);
611
- function interestingNode(state, node, bracketProp) {
612
- if (node.type.prop(bracketProp))
613
- return true;
614
- let len = node.to - node.from;
615
- return len && (len > 2 || /[^\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;
616
- }
617
- function moveBySyntax(state, start, forward) {
618
- let pos = syntaxTree(state).resolveInner(start.head);
619
- let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;
620
- for (let at = start.head; ; ) {
621
- let next = forward ? pos.childAfter(at) : pos.childBefore(at);
622
- if (!next)
623
- break;
624
- if (interestingNode(state, next, bracketProp))
625
- pos = next;
626
- else
627
- at = forward ? next.to : next.from;
628
- }
629
- let bracket = pos.type.prop(bracketProp), match, newPos;
630
- if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)
631
- newPos = forward ? match.end.to : match.end.from;
632
- else
633
- newPos = forward ? pos.to : pos.from;
634
- return EditorSelection.cursor(newPos, forward ? -1 : 1);
635
- }
636
- var cursorSyntaxLeft = (view) => moveSel(view, (range) => moveBySyntax(view.state, range, !ltrAtCursor(view)));
637
- var cursorSyntaxRight = (view) => moveSel(view, (range) => moveBySyntax(view.state, range, ltrAtCursor(view)));
638
- function cursorByLine(view, forward) {
639
- return moveSel(view, (range) => {
640
- if (!range.empty)
641
- return rangeEnd(range, forward);
642
- let moved = view.moveVertically(range, forward);
643
- return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);
644
- });
645
- }
646
- var cursorLineUp = (view) => cursorByLine(view, false);
647
- var cursorLineDown = (view) => cursorByLine(view, true);
648
- function pageInfo(view) {
649
- let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;
650
- let marginTop = 0, marginBottom = 0, height;
651
- if (selfScroll) {
652
- for (let source of view.state.facet(EditorView.scrollMargins)) {
653
- let margins = source(view);
654
- if (margins === null || margins === void 0 ? void 0 : margins.top)
655
- marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);
656
- if (margins === null || margins === void 0 ? void 0 : margins.bottom)
657
- marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);
658
- }
659
- height = view.scrollDOM.clientHeight - marginTop - marginBottom;
660
- } else {
661
- height = (view.dom.ownerDocument.defaultView || window).innerHeight;
662
- }
663
- return {
664
- marginTop,
665
- marginBottom,
666
- selfScroll,
667
- height: Math.max(view.defaultLineHeight, height - 5)
668
- };
669
- }
670
- function cursorByPage(view, forward) {
671
- let page = pageInfo(view);
672
- let { state } = view, selection = updateSel(state.selection, (range) => {
673
- return range.empty ? view.moveVertically(range, forward, page.height) : rangeEnd(range, forward);
674
- });
675
- if (selection.eq(state.selection))
676
- return false;
677
- let effect;
678
- if (page.selfScroll) {
679
- let startPos = view.coordsAtPos(state.selection.main.head);
680
- let scrollRect = view.scrollDOM.getBoundingClientRect();
681
- let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;
682
- if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)
683
- effect = EditorView.scrollIntoView(selection.main.head, { y: "start", yMargin: startPos.top - scrollTop });
684
- }
685
- view.dispatch(setSel(state, selection), { effects: effect });
686
- return true;
687
- }
688
- var cursorPageUp = (view) => cursorByPage(view, false);
689
- var cursorPageDown = (view) => cursorByPage(view, true);
690
- function moveByLineBoundary(view, start, forward) {
691
- let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);
692
- if (moved.head == start.head && moved.head != (forward ? line.to : line.from))
693
- moved = view.moveToLineBoundary(start, forward, false);
694
- if (!forward && moved.head == line.from && line.length) {
695
- let space = /^\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;
696
- if (space && start.head != line.from + space)
697
- moved = EditorSelection.cursor(line.from + space);
698
- }
699
- return moved;
700
- }
701
- var cursorLineBoundaryForward = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, true));
702
- var cursorLineBoundaryBackward = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, false));
703
- var cursorLineBoundaryLeft = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, !ltrAtCursor(view)));
704
- var cursorLineBoundaryRight = (view) => moveSel(view, (range) => moveByLineBoundary(view, range, ltrAtCursor(view)));
705
- var cursorLineStart = (view) => moveSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));
706
- var cursorLineEnd = (view) => moveSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));
707
- function toMatchingBracket(state, dispatch, extend) {
708
- let found = false, selection = updateSel(state.selection, (range) => {
709
- let matching = matchBrackets(state, range.head, -1) || matchBrackets(state, range.head, 1) || range.head > 0 && matchBrackets(state, range.head - 1, 1) || range.head < state.doc.length && matchBrackets(state, range.head + 1, -1);
710
- if (!matching || !matching.end)
711
- return range;
712
- found = true;
713
- let head = matching.start.from == range.head ? matching.end.to : matching.end.from;
714
- return extend ? EditorSelection.range(range.anchor, head) : EditorSelection.cursor(head);
715
- });
716
- if (!found)
717
- return false;
718
- dispatch(setSel(state, selection));
719
- return true;
720
- }
721
- var cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, false);
722
- var selectMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, true);
723
- function extendSel(target, how) {
724
- let selection = updateSel(target.state.selection, (range) => {
725
- let head = how(range);
726
- return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || void 0, head.assoc);
727
- });
728
- if (selection.eq(target.state.selection))
729
- return false;
730
- target.dispatch(setSel(target.state, selection));
731
- return true;
732
- }
733
- function selectByChar(view, forward) {
734
- return extendSel(view, (range) => view.moveByChar(range, forward));
735
- }
736
- var selectCharLeft = (view) => selectByChar(view, !ltrAtCursor(view));
737
- var selectCharRight = (view) => selectByChar(view, ltrAtCursor(view));
738
- var selectCharForward = (view) => selectByChar(view, true);
739
- var selectCharBackward = (view) => selectByChar(view, false);
740
- var selectCharForwardLogical = (target) => extendSel(target, (range) => byCharLogical(target.state, range, true));
741
- var selectCharBackwardLogical = (target) => extendSel(target, (range) => byCharLogical(target.state, range, false));
742
- function selectByGroup(view, forward) {
743
- return extendSel(view, (range) => view.moveByGroup(range, forward));
744
- }
745
- var selectGroupLeft = (view) => selectByGroup(view, !ltrAtCursor(view));
746
- var selectGroupRight = (view) => selectByGroup(view, ltrAtCursor(view));
747
- var selectGroupForward = (view) => selectByGroup(view, true);
748
- var selectGroupBackward = (view) => selectByGroup(view, false);
749
- var selectGroupForwardWin = (view) => {
750
- return extendSel(view, (range) => view.moveByChar(range, true, (start) => toGroupStart(view, range.head, start)));
751
- };
752
- function selectBySubword(view, forward) {
753
- return extendSel(view, (range) => moveBySubword(view, range, forward));
754
- }
755
- var selectSubwordForward = (view) => selectBySubword(view, true);
756
- var selectSubwordBackward = (view) => selectBySubword(view, false);
757
- var selectSyntaxLeft = (view) => extendSel(view, (range) => moveBySyntax(view.state, range, !ltrAtCursor(view)));
758
- var selectSyntaxRight = (view) => extendSel(view, (range) => moveBySyntax(view.state, range, ltrAtCursor(view)));
759
- function selectByLine(view, forward) {
760
- return extendSel(view, (range) => view.moveVertically(range, forward));
761
- }
762
- var selectLineUp = (view) => selectByLine(view, false);
763
- var selectLineDown = (view) => selectByLine(view, true);
764
- function selectByPage(view, forward) {
765
- return extendSel(view, (range) => view.moveVertically(range, forward, pageInfo(view).height));
766
- }
767
- var selectPageUp = (view) => selectByPage(view, false);
768
- var selectPageDown = (view) => selectByPage(view, true);
769
- var selectLineBoundaryForward = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, true));
770
- var selectLineBoundaryBackward = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, false));
771
- var selectLineBoundaryLeft = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, !ltrAtCursor(view)));
772
- var selectLineBoundaryRight = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, ltrAtCursor(view)));
773
- var selectLineStart = (view) => extendSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).from));
774
- var selectLineEnd = (view) => extendSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).to));
775
- var cursorDocStart = ({ state, dispatch }) => {
776
- dispatch(setSel(state, { anchor: 0 }));
777
- return true;
778
- };
779
- var cursorDocEnd = ({ state, dispatch }) => {
780
- dispatch(setSel(state, { anchor: state.doc.length }));
781
- return true;
782
- };
783
- var selectDocStart = ({ state, dispatch }) => {
784
- dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));
785
- return true;
786
- };
787
- var selectDocEnd = ({ state, dispatch }) => {
788
- dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));
789
- return true;
790
- };
791
- var selectAll = ({ state, dispatch }) => {
792
- dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: "select" }));
793
- return true;
794
- };
795
- var selectLine = ({ state, dispatch }) => {
796
- let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));
797
- dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: "select" }));
798
- return true;
799
- };
800
- var selectParentSyntax = ({ state, dispatch }) => {
801
- let selection = updateSel(state.selection, (range) => {
802
- let tree = syntaxTree(state), stack = tree.resolveStack(range.from, 1);
803
- if (range.empty) {
804
- let stackBefore = tree.resolveStack(range.from, -1);
805
- if (stackBefore.node.from >= stack.node.from && stackBefore.node.to <= stack.node.to)
806
- stack = stackBefore;
807
- }
808
- for (let cur = stack; cur; cur = cur.next) {
809
- let { node } = cur;
810
- if ((node.from < range.from && node.to >= range.to || node.to > range.to && node.from <= range.from) && cur.next)
811
- return EditorSelection.range(node.to, node.from);
812
- }
813
- return range;
814
- });
815
- if (selection.eq(state.selection))
816
- return false;
817
- dispatch(setSel(state, selection));
818
- return true;
819
- };
820
- function addCursorVertically(view, forward) {
821
- let { state } = view, sel = state.selection, ranges = state.selection.ranges.slice();
822
- for (let range of state.selection.ranges) {
823
- let line = state.doc.lineAt(range.head);
824
- if (forward ? line.to < view.state.doc.length : line.from > 0)
825
- for (let cur = range; ; ) {
826
- let next = view.moveVertically(cur, forward);
827
- if (next.head < line.from || next.head > line.to) {
828
- if (!ranges.some((r) => r.head == next.head))
829
- ranges.push(next);
830
- break;
831
- } else if (next.head == cur.head) {
832
- break;
833
- } else {
834
- cur = next;
835
- }
836
- }
837
- }
838
- if (ranges.length == sel.ranges.length)
839
- return false;
840
- view.dispatch(setSel(state, EditorSelection.create(ranges, ranges.length - 1)));
841
- return true;
842
- }
843
- var addCursorAbove = (view) => addCursorVertically(view, false);
844
- var addCursorBelow = (view) => addCursorVertically(view, true);
845
- var simplifySelection = ({ state, dispatch }) => {
846
- let cur = state.selection, selection = null;
847
- if (cur.ranges.length > 1)
848
- selection = EditorSelection.create([cur.main]);
849
- else if (!cur.main.empty)
850
- selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);
851
- if (!selection)
852
- return false;
853
- dispatch(setSel(state, selection));
854
- return true;
855
- };
856
- function deleteBy(target, by) {
857
- if (target.state.readOnly)
858
- return false;
859
- let event = "delete.selection", { state } = target;
860
- let changes = state.changeByRange((range) => {
861
- let { from, to } = range;
862
- if (from == to) {
863
- let towards = by(range);
864
- if (towards < from) {
865
- event = "delete.backward";
866
- towards = skipAtomic(target, towards, false);
867
- } else if (towards > from) {
868
- event = "delete.forward";
869
- towards = skipAtomic(target, towards, true);
870
- }
871
- from = Math.min(from, towards);
872
- to = Math.max(to, towards);
873
- } else {
874
- from = skipAtomic(target, from, false);
875
- to = skipAtomic(target, to, true);
876
- }
877
- return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };
878
- });
879
- if (changes.changes.empty)
880
- return false;
881
- target.dispatch(state.update(changes, {
882
- scrollIntoView: true,
883
- userEvent: event,
884
- effects: event == "delete.selection" ? EditorView.announce.of(state.phrase("Selection deleted")) : void 0
885
- }));
886
- return true;
887
- }
888
- function skipAtomic(target, pos, forward) {
889
- if (target instanceof EditorView)
890
- for (let ranges of target.state.facet(EditorView.atomicRanges).map((f) => f(target)))
891
- ranges.between(pos, pos, (from, to) => {
892
- if (from < pos && to > pos)
893
- pos = forward ? to : from;
894
- });
895
- return pos;
896
- }
897
- var deleteByChar = (target, forward, byIndentUnit) => deleteBy(target, (range) => {
898
- let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;
899
- if (byIndentUnit && !forward && pos > line.from && pos < line.from + 200 && !/[^ \t]/.test(before = line.text.slice(0, pos - line.from))) {
900
- if (before[before.length - 1] == " ")
901
- return pos - 1;
902
- let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);
903
- for (let i = 0; i < drop && before[before.length - 1 - i] == " "; i++)
904
- pos--;
905
- targetPos = pos;
906
- } else {
907
- targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;
908
- if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))
909
- targetPos += forward ? 1 : -1;
910
- else if (!forward && /[\ufe00-\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))
911
- targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;
912
- }
913
- return targetPos;
914
- });
915
- var deleteCharBackward = (view) => deleteByChar(view, false, true);
916
- var deleteCharBackwardStrict = (view) => deleteByChar(view, false, false);
917
- var deleteCharForward = (view) => deleteByChar(view, true, false);
918
- var deleteByGroup = (target, forward) => deleteBy(target, (range) => {
919
- let pos = range.head, { state } = target, line = state.doc.lineAt(pos);
920
- let categorize = state.charCategorizer(pos);
921
- for (let cat = null; ; ) {
922
- if (pos == (forward ? line.to : line.from)) {
923
- if (pos == range.head && line.number != (forward ? state.doc.lines : 1))
924
- pos += forward ? 1 : -1;
925
- break;
926
- }
927
- let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;
928
- let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);
929
- let nextCat = categorize(nextChar);
930
- if (cat != null && nextCat != cat)
931
- break;
932
- if (nextChar != " " || pos != range.head)
933
- cat = nextCat;
934
- pos = next;
935
- }
936
- return pos;
937
- });
938
- var deleteGroupBackward = (target) => deleteByGroup(target, false);
939
- var deleteGroupForward = (target) => deleteByGroup(target, true);
940
- var deleteGroupForwardWin = (view) => deleteBy(view, (range) => view.moveByChar(range, true, (start) => toGroupStart(view, range.head, start)).head);
941
- var deleteToLineEnd = (view) => deleteBy(view, (range) => {
942
- let lineEnd = view.lineBlockAt(range.head).to;
943
- return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);
944
- });
945
- var deleteToLineStart = (view) => deleteBy(view, (range) => {
946
- let lineStart = view.lineBlockAt(range.head).from;
947
- return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);
948
- });
949
- var deleteLineBoundaryBackward = (view) => deleteBy(view, (range) => {
950
- let lineStart = view.moveToLineBoundary(range, false).head;
951
- return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);
952
- });
953
- var deleteLineBoundaryForward = (view) => deleteBy(view, (range) => {
954
- let lineStart = view.moveToLineBoundary(range, true).head;
955
- return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);
956
- });
957
- var deleteTrailingWhitespace = ({ state, dispatch }) => {
958
- if (state.readOnly)
959
- return false;
960
- let changes = [];
961
- for (let pos = 0, prev = "", iter = state.doc.iter(); ; ) {
962
- iter.next();
963
- if (iter.lineBreak || iter.done) {
964
- let trailing = prev.search(/\s+$/);
965
- if (trailing > -1)
966
- changes.push({ from: pos - (prev.length - trailing), to: pos });
967
- if (iter.done)
968
- break;
969
- prev = "";
970
- } else {
971
- prev = iter.value;
972
- }
973
- pos += iter.value.length;
974
- }
975
- if (!changes.length)
976
- return false;
977
- dispatch(state.update({ changes, userEvent: "delete" }));
978
- return true;
979
- };
980
- var splitLine = ({ state, dispatch }) => {
981
- if (state.readOnly)
982
- return false;
983
- let changes = state.changeByRange((range) => {
984
- return {
985
- changes: { from: range.from, to: range.to, insert: Text.of(["", ""]) },
986
- range: EditorSelection.cursor(range.from)
987
- };
988
- });
989
- dispatch(state.update(changes, { scrollIntoView: true, userEvent: "input" }));
990
- return true;
991
- };
992
- var transposeChars = ({ state, dispatch }) => {
993
- if (state.readOnly)
994
- return false;
995
- let changes = state.changeByRange((range) => {
996
- if (!range.empty || range.from == 0 || range.from == state.doc.length)
997
- return { range };
998
- let pos = range.from, line = state.doc.lineAt(pos);
999
- let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;
1000
- let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;
1001
- return {
1002
- changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },
1003
- range: EditorSelection.cursor(to)
1004
- };
1005
- });
1006
- if (changes.changes.empty)
1007
- return false;
1008
- dispatch(state.update(changes, { scrollIntoView: true, userEvent: "move.character" }));
1009
- return true;
1010
- };
1011
- function selectedLineBlocks(state) {
1012
- let blocks = [], upto = -1;
1013
- for (let range of state.selection.ranges) {
1014
- let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);
1015
- if (!range.empty && range.to == endLine.from)
1016
- endLine = state.doc.lineAt(range.to - 1);
1017
- if (upto >= startLine.number) {
1018
- let prev = blocks[blocks.length - 1];
1019
- prev.to = endLine.to;
1020
- prev.ranges.push(range);
1021
- } else {
1022
- blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });
1023
- }
1024
- upto = endLine.number + 1;
1025
- }
1026
- return blocks;
1027
- }
1028
- function moveLine(state, dispatch, forward) {
1029
- if (state.readOnly)
1030
- return false;
1031
- let changes = [], ranges = [];
1032
- for (let block of selectedLineBlocks(state)) {
1033
- if (forward ? block.to == state.doc.length : block.from == 0)
1034
- continue;
1035
- let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);
1036
- let size = nextLine.length + 1;
1037
- if (forward) {
1038
- changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });
1039
- for (let r of block.ranges)
1040
- ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));
1041
- } else {
1042
- changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });
1043
- for (let r of block.ranges)
1044
- ranges.push(EditorSelection.range(r.anchor - size, r.head - size));
1045
- }
1046
- }
1047
- if (!changes.length)
1048
- return false;
1049
- dispatch(state.update({
1050
- changes,
1051
- scrollIntoView: true,
1052
- selection: EditorSelection.create(ranges, state.selection.mainIndex),
1053
- userEvent: "move.line"
1054
- }));
1055
- return true;
1056
- }
1057
- var moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);
1058
- var moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);
1059
- function copyLine(state, dispatch, forward) {
1060
- if (state.readOnly)
1061
- return false;
1062
- let changes = [];
1063
- for (let block of selectedLineBlocks(state)) {
1064
- if (forward)
1065
- changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });
1066
- else
1067
- changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });
1068
- }
1069
- let changeSet = state.changes(changes);
1070
- dispatch(state.update({
1071
- changes: changeSet,
1072
- selection: state.selection.map(changeSet, forward ? 1 : -1),
1073
- scrollIntoView: true,
1074
- userEvent: "input.copyline"
1075
- }));
1076
- return true;
1077
- }
1078
- var copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);
1079
- var copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);
1080
- var deleteLine = (view) => {
1081
- if (view.state.readOnly)
1082
- return false;
1083
- let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {
1084
- if (from > 0)
1085
- from--;
1086
- else if (to < state.doc.length)
1087
- to++;
1088
- return { from, to };
1089
- }));
1090
- let selection = updateSel(state.selection, (range) => {
1091
- let dist = void 0;
1092
- if (view.lineWrapping) {
1093
- let block = view.lineBlockAt(range.head), pos = view.coordsAtPos(range.head, range.assoc || 1);
1094
- if (pos)
1095
- dist = block.bottom + view.documentTop - pos.bottom + view.defaultLineHeight / 2;
1096
- }
1097
- return view.moveVertically(range, true, dist);
1098
- }).map(changes);
1099
- view.dispatch({ changes, selection, scrollIntoView: true, userEvent: "delete.line" });
1100
- return true;
1101
- };
1102
- var insertNewline = ({ state, dispatch }) => {
1103
- dispatch(state.update(state.replaceSelection(state.lineBreak), { scrollIntoView: true, userEvent: "input" }));
1104
- return true;
1105
- };
1106
- var insertNewlineKeepIndent = ({ state, dispatch }) => {
1107
- dispatch(state.update(state.changeByRange((range) => {
1108
- let indent = /^\s*/.exec(state.doc.lineAt(range.from).text)[0];
1109
- return {
1110
- changes: { from: range.from, to: range.to, insert: state.lineBreak + indent },
1111
- range: EditorSelection.cursor(range.from + indent.length + 1)
1112
- };
1113
- }), { scrollIntoView: true, userEvent: "input" }));
1114
- return true;
1115
- };
1116
- function isBetweenBrackets(state, pos) {
1117
- if (/\(\)|\[\]|\{\}/.test(state.sliceDoc(pos - 1, pos + 1)))
1118
- return { from: pos, to: pos };
1119
- let context = syntaxTree(state).resolveInner(pos);
1120
- let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;
1121
- if (before && after && before.to <= pos && after.from >= pos && (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 && state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from && !/\S/.test(state.sliceDoc(before.to, after.from)))
1122
- return { from: before.to, to: after.from };
1123
- return null;
1124
- }
1125
- var insertNewlineAndIndent = newlineAndIndent(false);
1126
- var insertBlankLine = newlineAndIndent(true);
1127
- function newlineAndIndent(atEof) {
1128
- return ({ state, dispatch }) => {
1129
- if (state.readOnly)
1130
- return false;
1131
- let changes = state.changeByRange((range) => {
1132
- let { from, to } = range, line = state.doc.lineAt(from);
1133
- let explode = !atEof && from == to && isBetweenBrackets(state, from);
1134
- if (atEof)
1135
- from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;
1136
- let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });
1137
- let indent = getIndentation(cx, from);
1138
- if (indent == null)
1139
- indent = countColumn(/^\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);
1140
- while (to < line.to && /\s/.test(line.text[to - line.from]))
1141
- to++;
1142
- if (explode)
1143
- ({ from, to } = explode);
1144
- else if (from > line.from && from < line.from + 100 && !/\S/.test(line.text.slice(0, from)))
1145
- from = line.from;
1146
- let insert = ["", indentString(state, indent)];
1147
- if (explode)
1148
- insert.push(indentString(state, cx.lineIndent(line.from, -1)));
1149
- return {
1150
- changes: { from, to, insert: Text.of(insert) },
1151
- range: EditorSelection.cursor(from + 1 + insert[1].length)
1152
- };
1153
- });
1154
- dispatch(state.update(changes, { scrollIntoView: true, userEvent: "input" }));
1155
- return true;
1156
- };
1157
- }
1158
- function changeBySelectedLine(state, f) {
1159
- let atLine = -1;
1160
- return state.changeByRange((range) => {
1161
- let changes = [];
1162
- for (let pos = range.from; pos <= range.to; ) {
1163
- let line = state.doc.lineAt(pos);
1164
- if (line.number > atLine && (range.empty || range.to > line.from)) {
1165
- f(line, changes, range);
1166
- atLine = line.number;
1167
- }
1168
- pos = line.to + 1;
1169
- }
1170
- let changeSet = state.changes(changes);
1171
- return {
1172
- changes,
1173
- range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1))
1174
- };
1175
- });
1176
- }
1177
- var indentSelection = ({ state, dispatch }) => {
1178
- if (state.readOnly)
1179
- return false;
1180
- let updated = /* @__PURE__ */ Object.create(null);
1181
- let context = new IndentContext(state, { overrideIndentation: (start) => {
1182
- let found = updated[start];
1183
- return found == null ? -1 : found;
1184
- } });
1185
- let changes = changeBySelectedLine(state, (line, changes2, range) => {
1186
- let indent = getIndentation(context, line.from);
1187
- if (indent == null)
1188
- return;
1189
- if (!/\S/.test(line.text))
1190
- indent = 0;
1191
- let cur = /^\s*/.exec(line.text)[0];
1192
- let norm = indentString(state, indent);
1193
- if (cur != norm || range.from < line.from + cur.length) {
1194
- updated[line.from] = indent;
1195
- changes2.push({ from: line.from, to: line.from + cur.length, insert: norm });
1196
- }
1197
- });
1198
- if (!changes.changes.empty)
1199
- dispatch(state.update(changes, { userEvent: "indent" }));
1200
- return true;
1201
- };
1202
- var indentMore = ({ state, dispatch }) => {
1203
- if (state.readOnly)
1204
- return false;
1205
- dispatch(state.update(changeBySelectedLine(state, (line, changes) => {
1206
- changes.push({ from: line.from, insert: state.facet(indentUnit) });
1207
- }), { userEvent: "input.indent" }));
1208
- return true;
1209
- };
1210
- var indentLess = ({ state, dispatch }) => {
1211
- if (state.readOnly)
1212
- return false;
1213
- dispatch(state.update(changeBySelectedLine(state, (line, changes) => {
1214
- let space = /^\s*/.exec(line.text)[0];
1215
- if (!space)
1216
- return;
1217
- let col = countColumn(space, state.tabSize), keep = 0;
1218
- let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));
1219
- while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))
1220
- keep++;
1221
- changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });
1222
- }), { userEvent: "delete.dedent" }));
1223
- return true;
1224
- };
1225
- var toggleTabFocusMode = (view) => {
1226
- view.setTabFocusMode();
1227
- return true;
1228
- };
1229
- var temporarilySetTabFocusMode = (view) => {
1230
- view.setTabFocusMode(2e3);
1231
- return true;
1232
- };
1233
- var insertTab = ({ state, dispatch }) => {
1234
- if (state.selection.ranges.some((r) => !r.empty))
1235
- return indentMore({ state, dispatch });
1236
- dispatch(state.update(state.replaceSelection(" "), { scrollIntoView: true, userEvent: "input" }));
1237
- return true;
1238
- };
1239
- var emacsStyleKeymap = [
1240
- { key: "Ctrl-b", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },
1241
- { key: "Ctrl-f", run: cursorCharRight, shift: selectCharRight },
1242
- { key: "Ctrl-p", run: cursorLineUp, shift: selectLineUp },
1243
- { key: "Ctrl-n", run: cursorLineDown, shift: selectLineDown },
1244
- { key: "Ctrl-a", run: cursorLineStart, shift: selectLineStart },
1245
- { key: "Ctrl-e", run: cursorLineEnd, shift: selectLineEnd },
1246
- { key: "Ctrl-d", run: deleteCharForward },
1247
- { key: "Ctrl-h", run: deleteCharBackward },
1248
- { key: "Ctrl-k", run: deleteToLineEnd },
1249
- { key: "Ctrl-Alt-h", run: deleteGroupBackward },
1250
- { key: "Ctrl-o", run: splitLine },
1251
- { key: "Ctrl-t", run: transposeChars },
1252
- { key: "Ctrl-v", run: cursorPageDown }
1253
- ];
1254
- var standardKeymap = [
1255
- { key: "ArrowLeft", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },
1256
- { key: "Mod-ArrowLeft", mac: "Alt-ArrowLeft", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },
1257
- { mac: "Cmd-ArrowLeft", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },
1258
- { key: "ArrowRight", run: cursorCharRight, shift: selectCharRight, preventDefault: true },
1259
- { key: "Mod-ArrowRight", mac: "Alt-ArrowRight", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },
1260
- { mac: "Cmd-ArrowRight", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },
1261
- { key: "ArrowUp", run: cursorLineUp, shift: selectLineUp, preventDefault: true },
1262
- { mac: "Cmd-ArrowUp", run: cursorDocStart, shift: selectDocStart },
1263
- { mac: "Ctrl-ArrowUp", run: cursorPageUp, shift: selectPageUp },
1264
- { key: "ArrowDown", run: cursorLineDown, shift: selectLineDown, preventDefault: true },
1265
- { mac: "Cmd-ArrowDown", run: cursorDocEnd, shift: selectDocEnd },
1266
- { mac: "Ctrl-ArrowDown", run: cursorPageDown, shift: selectPageDown },
1267
- { key: "PageUp", run: cursorPageUp, shift: selectPageUp },
1268
- { key: "PageDown", run: cursorPageDown, shift: selectPageDown },
1269
- { key: "Home", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },
1270
- { key: "Mod-Home", run: cursorDocStart, shift: selectDocStart },
1271
- { key: "End", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },
1272
- { key: "Mod-End", run: cursorDocEnd, shift: selectDocEnd },
1273
- { key: "Enter", run: insertNewlineAndIndent, shift: insertNewlineAndIndent },
1274
- { key: "Mod-a", run: selectAll },
1275
- { key: "Backspace", run: deleteCharBackward, shift: deleteCharBackward, preventDefault: true },
1276
- { key: "Delete", run: deleteCharForward, preventDefault: true },
1277
- { key: "Mod-Backspace", mac: "Alt-Backspace", run: deleteGroupBackward, preventDefault: true },
1278
- { key: "Mod-Delete", mac: "Alt-Delete", run: deleteGroupForward, preventDefault: true },
1279
- { mac: "Mod-Backspace", run: deleteLineBoundaryBackward, preventDefault: true },
1280
- { mac: "Mod-Delete", run: deleteLineBoundaryForward, preventDefault: true }
1281
- ].concat(emacsStyleKeymap.map((b) => ({ mac: b.key, run: b.run, shift: b.shift })));
1282
- var defaultKeymap = [
1283
- { key: "Alt-ArrowLeft", mac: "Ctrl-ArrowLeft", run: cursorSyntaxLeft, shift: selectSyntaxLeft },
1284
- { key: "Alt-ArrowRight", mac: "Ctrl-ArrowRight", run: cursorSyntaxRight, shift: selectSyntaxRight },
1285
- { key: "Alt-ArrowUp", run: moveLineUp },
1286
- { key: "Shift-Alt-ArrowUp", run: copyLineUp },
1287
- { key: "Alt-ArrowDown", run: moveLineDown },
1288
- { key: "Shift-Alt-ArrowDown", run: copyLineDown },
1289
- { key: "Mod-Alt-ArrowUp", run: addCursorAbove },
1290
- { key: "Mod-Alt-ArrowDown", run: addCursorBelow },
1291
- { key: "Escape", run: simplifySelection },
1292
- { key: "Mod-Enter", run: insertBlankLine },
1293
- { key: "Alt-l", mac: "Ctrl-l", run: selectLine },
1294
- { key: "Mod-i", run: selectParentSyntax, preventDefault: true },
1295
- { key: "Mod-[", run: indentLess },
1296
- { key: "Mod-]", run: indentMore },
1297
- { key: "Mod-Alt-\\", run: indentSelection },
1298
- { key: "Shift-Mod-k", run: deleteLine },
1299
- { key: "Shift-Mod-\\", run: cursorMatchingBracket },
1300
- { key: "Mod-/", run: toggleComment },
1301
- { key: "Alt-A", run: toggleBlockComment },
1302
- { key: "Ctrl-m", mac: "Shift-Alt-m", run: toggleTabFocusMode }
1303
- ].concat(standardKeymap);
1304
- var indentWithTab = { key: "Tab", run: indentMore, shift: indentLess };
1305
- export {
1306
- addCursorAbove,
1307
- addCursorBelow,
1308
- blockComment,
1309
- blockUncomment,
1310
- copyLineDown,
1311
- copyLineUp,
1312
- cursorCharBackward,
1313
- cursorCharBackwardLogical,
1314
- cursorCharForward,
1315
- cursorCharForwardLogical,
1316
- cursorCharLeft,
1317
- cursorCharRight,
1318
- cursorDocEnd,
1319
- cursorDocStart,
1320
- cursorGroupBackward,
1321
- cursorGroupForward,
1322
- cursorGroupForwardWin,
1323
- cursorGroupLeft,
1324
- cursorGroupRight,
1325
- cursorLineBoundaryBackward,
1326
- cursorLineBoundaryForward,
1327
- cursorLineBoundaryLeft,
1328
- cursorLineBoundaryRight,
1329
- cursorLineDown,
1330
- cursorLineEnd,
1331
- cursorLineStart,
1332
- cursorLineUp,
1333
- cursorMatchingBracket,
1334
- cursorPageDown,
1335
- cursorPageUp,
1336
- cursorSubwordBackward,
1337
- cursorSubwordForward,
1338
- cursorSyntaxLeft,
1339
- cursorSyntaxRight,
1340
- defaultKeymap,
1341
- deleteCharBackward,
1342
- deleteCharBackwardStrict,
1343
- deleteCharForward,
1344
- deleteGroupBackward,
1345
- deleteGroupForward,
1346
- deleteGroupForwardWin,
1347
- deleteLine,
1348
- deleteLineBoundaryBackward,
1349
- deleteLineBoundaryForward,
1350
- deleteToLineEnd,
1351
- deleteToLineStart,
1352
- deleteTrailingWhitespace,
1353
- emacsStyleKeymap,
1354
- history,
1355
- historyField,
1356
- historyKeymap,
1357
- indentLess,
1358
- indentMore,
1359
- indentSelection,
1360
- indentWithTab,
1361
- insertBlankLine,
1362
- insertNewline,
1363
- insertNewlineAndIndent,
1364
- insertNewlineKeepIndent,
1365
- insertTab,
1366
- invertedEffects,
1367
- isolateHistory,
1368
- lineComment,
1369
- lineUncomment,
1370
- moveLineDown,
1371
- moveLineUp,
1372
- redo,
1373
- redoDepth,
1374
- redoSelection,
1375
- selectAll,
1376
- selectCharBackward,
1377
- selectCharBackwardLogical,
1378
- selectCharForward,
1379
- selectCharForwardLogical,
1380
- selectCharLeft,
1381
- selectCharRight,
1382
- selectDocEnd,
1383
- selectDocStart,
1384
- selectGroupBackward,
1385
- selectGroupForward,
1386
- selectGroupForwardWin,
1387
- selectGroupLeft,
1388
- selectGroupRight,
1389
- selectLine,
1390
- selectLineBoundaryBackward,
1391
- selectLineBoundaryForward,
1392
- selectLineBoundaryLeft,
1393
- selectLineBoundaryRight,
1394
- selectLineDown,
1395
- selectLineEnd,
1396
- selectLineStart,
1397
- selectLineUp,
1398
- selectMatchingBracket,
1399
- selectPageDown,
1400
- selectPageUp,
1401
- selectParentSyntax,
1402
- selectSubwordBackward,
1403
- selectSubwordForward,
1404
- selectSyntaxLeft,
1405
- selectSyntaxRight,
1406
- simplifySelection,
1407
- splitLine,
1408
- standardKeymap,
1409
- temporarilySetTabFocusMode,
1410
- toggleBlockComment,
1411
- toggleBlockCommentByLine,
1412
- toggleComment,
1413
- toggleLineComment,
1414
- toggleTabFocusMode,
1415
- transposeChars,
1416
- undo,
1417
- undoDepth,
1418
- undoSelection
1419
- };
1420
- //# sourceMappingURL=@codemirror_commands.js.map