code-battles 1.5.6 → 1.5.8

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 (62) hide show
  1. package/dist/cjs/index.js +13 -20
  2. package/dist/esm/index.js +13 -20
  3. package/package.json +9 -8
  4. package/dist/code_battles/__init__.py +0 -31
  5. package/dist/code_battles/__pycache__/__init__.cpython-312.pyc +0 -0
  6. package/dist/code_battles/__pycache__/battles.cpython-312.pyc +0 -0
  7. package/dist/code_battles/__pycache__/utilities.cpython-312.pyc +0 -0
  8. package/dist/code_battles/battles.py +0 -970
  9. package/dist/code_battles/js.pyi +0 -136
  10. package/dist/code_battles/pyodide/ffi/__init__.pyi +0 -2
  11. package/dist/code_battles/pyscript/__init__.pyi +0 -4
  12. package/dist/code_battles/pyscript/ffi/__init__.pyi +0 -3
  13. package/dist/code_battles/utilities.py +0 -321
  14. package/dist/code_battles/worker.py +0 -6
  15. package/dist/pyscript/codemirror-BEtcgaoQ.js +0 -2
  16. package/dist/pyscript/codemirror-BEtcgaoQ.js.map +0 -1
  17. package/dist/pyscript/codemirror_commands-DDxffOmd.js +0 -2
  18. package/dist/pyscript/codemirror_commands-DDxffOmd.js.map +0 -1
  19. package/dist/pyscript/codemirror_lang-python-CnWnFqxD.js +0 -2
  20. package/dist/pyscript/codemirror_lang-python-CnWnFqxD.js.map +0 -1
  21. package/dist/pyscript/codemirror_language-CjmvX4ix.js +0 -2
  22. package/dist/pyscript/codemirror_language-CjmvX4ix.js.map +0 -1
  23. package/dist/pyscript/codemirror_state-D1qTXrff.js +0 -2
  24. package/dist/pyscript/codemirror_state-D1qTXrff.js.map +0 -1
  25. package/dist/pyscript/codemirror_view-DVb8uYMr.js +0 -2
  26. package/dist/pyscript/codemirror_view-DVb8uYMr.js.map +0 -1
  27. package/dist/pyscript/core-CjO3FOKB.js +0 -2
  28. package/dist/pyscript/core-CjO3FOKB.js.map +0 -1
  29. package/dist/pyscript/core.css +0 -1
  30. package/dist/pyscript/core.js +0 -2
  31. package/dist/pyscript/core.js.map +0 -1
  32. package/dist/pyscript/deprecations-manager-pFtn19mE.js +0 -2
  33. package/dist/pyscript/deprecations-manager-pFtn19mE.js.map +0 -1
  34. package/dist/pyscript/error-tq-z48YI.js +0 -2
  35. package/dist/pyscript/error-tq-z48YI.js.map +0 -1
  36. package/dist/pyscript/index-S1Do43bx.js +0 -2
  37. package/dist/pyscript/index-S1Do43bx.js.map +0 -1
  38. package/dist/pyscript/mpy-DovD7Qjy.js +0 -2
  39. package/dist/pyscript/mpy-DovD7Qjy.js.map +0 -1
  40. package/dist/pyscript/py-BUsUWVJg.js +0 -2
  41. package/dist/pyscript/py-BUsUWVJg.js.map +0 -1
  42. package/dist/pyscript/py-editor-CeySmmer.js +0 -2
  43. package/dist/pyscript/py-editor-CeySmmer.js.map +0 -1
  44. package/dist/pyscript/py-terminal-CH_wV7wQ.js +0 -2
  45. package/dist/pyscript/py-terminal-CH_wV7wQ.js.map +0 -1
  46. package/dist/pyscript/storage.js +0 -2
  47. package/dist/pyscript/storage.js.map +0 -1
  48. package/dist/pyscript/toml-CvAfdf9_.js +0 -3
  49. package/dist/pyscript/toml-CvAfdf9_.js.map +0 -1
  50. package/dist/pyscript/toml-DiUM0_qs.js +0 -3
  51. package/dist/pyscript/toml-DiUM0_qs.js.map +0 -1
  52. package/dist/pyscript/xterm-BY7uk_OU.js +0 -2
  53. package/dist/pyscript/xterm-BY7uk_OU.js.map +0 -1
  54. package/dist/pyscript/xterm-readline-CZfBw7ic.js +0 -2
  55. package/dist/pyscript/xterm-readline-CZfBw7ic.js.map +0 -1
  56. package/dist/pyscript/xterm.css +0 -7
  57. package/dist/pyscript/xterm_addon-fit--gyF3PcZ.js +0 -2
  58. package/dist/pyscript/xterm_addon-fit--gyF3PcZ.js.map +0 -1
  59. package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js +0 -2
  60. package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js.map +0 -1
  61. package/dist/pyscript/zip-DrwYHuF9.js +0 -2
  62. package/dist/pyscript/zip-DrwYHuF9.js.map +0 -1
@@ -1,136 +0,0 @@
1
- """
2
- Basic type hints for JavaScript in PyOdide and PyScript.
3
- A lot of properties are missing.
4
- """
5
-
6
- from typing import Callable, List, Literal, Optional
7
-
8
- from pyodide.ffi import JsCallable
9
-
10
- class TwoDContext:
11
- textAlign: Literal["left", "right", "center", "start", "end"]
12
- textBaseline: Literal[
13
- "top", "hanging", "middle", "alphabetic", "ideographic", "bottom"
14
- ]
15
- font: str
16
- fillStyle: str
17
- strokeStyle: str
18
- lineWidth: int
19
-
20
- @staticmethod
21
- def beginPath(): ...
22
- @staticmethod
23
- def arc(
24
- x: int,
25
- y: int,
26
- radius: float,
27
- startAngle: float,
28
- endAngle: float,
29
- counterclockwise=False,
30
- ): ...
31
- @staticmethod
32
- def moveTo(x: int, y: int): ...
33
- @staticmethod
34
- def lineTo(x: int, y: int): ...
35
- @staticmethod
36
- def stroke(): ...
37
- @staticmethod
38
- def fill(): ...
39
- @staticmethod
40
- def fillText(text: str, x: int, y: int): ...
41
- @staticmethod
42
- def fillRect(x: int, y: int, width: int, height: int): ...
43
- @staticmethod
44
- def drawImage(image: "Image", x: int, y: int, width: int, height: int): ...
45
- @staticmethod
46
- def clearRect(startX: int, endX: int, width: int, height: int): ...
47
- @staticmethod
48
- def save(): ...
49
- @staticmethod
50
- def restore(): ...
51
- @staticmethod
52
- def translate(x: float, y: float): ...
53
- @staticmethod
54
- def rotate(radians: float): ...
55
-
56
- class Styles:
57
- width: str
58
- height: str
59
- display: str
60
-
61
- class Element:
62
- id: str
63
- value: str
64
- textContent: str
65
- ariaValueNow: str
66
- onclick: JsCallable
67
- width: float
68
- height: float
69
- clientWidth: Optional[int]
70
- clientHeight: Optional[int]
71
- style: Styles
72
-
73
- @staticmethod
74
- def getContext(dimensions: str) -> TwoDContext: ...
75
- @staticmethod
76
- def click(): ...
77
- @staticmethod
78
- def getElementsByClassName(classname: str) -> "HTMLCollection": ...
79
-
80
- class document:
81
- body: Element
82
-
83
- @staticmethod
84
- def getElementById(id: str) -> Element: ...
85
-
86
- class Matches:
87
- matches: bool
88
-
89
- class Event: ...
90
-
91
- class LocalStorage:
92
- @staticmethod
93
- def getItem(key: str) -> Optional[str]: ...
94
- @staticmethod
95
- def setItem(key: str, value: str) -> None: ...
96
-
97
- class window:
98
- devicePixelRatio: float
99
- localStorage: LocalStorage
100
-
101
- @staticmethod
102
- def matchMedia(media: str) -> Matches: ...
103
- @staticmethod
104
- def createEventListener(event: str, callable: JsCallable) -> None: ...
105
-
106
- class Audio:
107
- volume: float
108
-
109
- @staticmethod
110
- def new(src: str) -> "Audio": ...
111
- @staticmethod
112
- def cloneNode(p: bool) -> "Audio": ...
113
- @staticmethod
114
- def play() -> None: ...
115
-
116
- class HTMLCollection:
117
- @staticmethod
118
- def to_py() -> List[Element]: ...
119
-
120
- class Image(Element):
121
- @staticmethod
122
- def new() -> "Image": ...
123
-
124
- src: str
125
- onload: Callable[[Event], None]
126
- onerror: Callable[[Event], None]
127
-
128
- def clearInterval(id: int) -> None: ...
129
- def setInterval(fn: JsCallable, period: int) -> int: ...
130
- def setTimeout(fn: JsCallable, period: int) -> None: ...
131
-
132
- class FontFace:
133
- @staticmethod
134
- def new(name: str, url: str): ...
135
- @staticmethod
136
- def load(): ...
@@ -1,2 +0,0 @@
1
- class JsCallable:
2
- pass
@@ -1,4 +0,0 @@
1
- from typing import Literal
2
-
3
- class PyWorker:
4
- def __init__(self, path: str, type: Literal["micropython", "pyodide"]): ...
@@ -1,3 +0,0 @@
1
- from typing import Callable
2
-
3
- def create_proxy(f: Callable): ...
@@ -1,321 +0,0 @@
1
- """Generic useful utilities for creating games with PyScript."""
2
-
3
- import asyncio
4
- import math
5
- import sys
6
- from typing import Callable, List, Union
7
- from enum import Enum
8
-
9
- try:
10
- import js
11
- except Exception:
12
- pass
13
-
14
-
15
- def is_worker():
16
- try:
17
- from js import window # noqa: F401
18
-
19
- return False
20
- except Exception:
21
- return is_web_or_worker()
22
-
23
-
24
- def is_web_or_worker():
25
- return "MicroPython" in sys.version or "pyodide" in sys.executable
26
-
27
-
28
- def is_web():
29
- return is_web_or_worker() and not is_worker()
30
-
31
-
32
- def web_only(method):
33
- if is_web():
34
- return method
35
-
36
- def wrapper(*args, **kwargs):
37
- print(f"Warning: {method.__name__} should only be called in a web context.")
38
-
39
- return wrapper
40
-
41
-
42
- class Alignment(Enum):
43
- CENTER = 0
44
- TOP_LEFT = 1
45
-
46
-
47
- @web_only
48
- def download_image(src: str):
49
- from js import Image
50
-
51
- result = asyncio.Future()
52
- image = Image.new()
53
- image.onload = lambda _: result.set_result(image)
54
- image.src = src
55
- return result
56
-
57
-
58
- def show_alert(
59
- title: str, alert: str, color: str, icon: str, limit_time: int = 5000, is_code=True
60
- ):
61
- if is_web():
62
- from js import window
63
-
64
- if hasattr(window, "showAlert"):
65
- try:
66
- window.showAlert(title, alert, color, icon, limit_time, is_code)
67
- except Exception as e:
68
- print(e)
69
- else:
70
- print(f"[ALERT] {title}: {alert}")
71
-
72
-
73
- @web_only
74
- def set_results(player_names: List[str], places: List[int], map: str, verbose: bool):
75
- from js import window
76
-
77
- if hasattr(window, "setResults"):
78
- try:
79
- window.setResults(player_names, places, map, verbose)
80
- except Exception as e:
81
- print(e)
82
-
83
-
84
- @web_only
85
- def show_download():
86
- from js import window
87
-
88
- if hasattr(window, "showDownload"):
89
- try:
90
- window.showDownload()
91
- except Exception as e:
92
- print(e)
93
-
94
-
95
- @web_only
96
- def navigate(route: str):
97
- from js import window
98
-
99
- if hasattr(window, "_navigate"):
100
- try:
101
- window._navigate(route)
102
- except Exception as e:
103
- print(e)
104
-
105
-
106
- @web_only
107
- def download_json(filename: str, contents: str):
108
- from js import window
109
-
110
- if hasattr(window, "downloadJson"):
111
- try:
112
- window.downloadJson(filename, contents)
113
- except Exception as e:
114
- print(e)
115
-
116
-
117
- @web_only
118
- def console_log(player_index: int, text: str, color: str):
119
- from js import window
120
-
121
- if hasattr(window, "consoleLog"):
122
- try:
123
- window.consoleLog(player_index, text, color)
124
- except Exception as e:
125
- print(e)
126
-
127
-
128
- async def with_timeout(fn: Callable[[], None], timeout_seconds: float):
129
- async def f():
130
- fn()
131
-
132
- await asyncio.wait_for(f(), timeout_seconds)
133
-
134
-
135
- class GameCanvas:
136
- """
137
- A nice wrapper around HTML Canvas for drawing map-based multiplayer games.
138
- """
139
-
140
- _scale: float
141
-
142
- def __init__(
143
- self,
144
- canvas: "js.Element",
145
- player_count: int,
146
- map_image: "js.Image",
147
- max_width: int,
148
- max_height: int,
149
- extra_width: int,
150
- extra_height: int,
151
- ):
152
- self.canvas = canvas
153
- self.player_count = player_count
154
- self.map_image = map_image
155
- self.extra_height = extra_height
156
- self.extra_width = extra_width
157
-
158
- self._fit_into(max_width, max_height)
159
-
160
- def draw_element(
161
- self,
162
- image: "js.Image",
163
- x: int,
164
- y: int,
165
- width: int,
166
- board_index=0,
167
- direction: Union[float, None] = None,
168
- alignment=Alignment.CENTER,
169
- ):
170
- """
171
- Draws the given image on the specified board.
172
-
173
- Scaled to fit `width` in map pixels, be on position ``(x, y)`` in map pixels and face `direction`
174
- where 0 is no rotation and the direction is clockwise positive.
175
- """
176
-
177
- if direction is None:
178
- direction = 0
179
-
180
- x, y = self._translate_position(board_index, x, y)
181
- width, height = self._translate_width(width, image.width / image.height)
182
-
183
- if alignment == Alignment.TOP_LEFT:
184
- x += width / 2
185
- y += height / 2
186
-
187
- self.context.save()
188
- self.context.translate(x, y)
189
- self.context.rotate(direction)
190
- self.context.translate(-width / 2, -height / 2)
191
- self.context.drawImage(image, 0, 0, width, height)
192
- self.context.restore()
193
-
194
- def draw_text(
195
- self,
196
- text: str,
197
- x: int,
198
- y: int,
199
- color="black",
200
- board_index=0,
201
- text_size=15,
202
- font="",
203
- ):
204
- """
205
- Draws the given text in the given coordinates (in map pixels).
206
- """
207
-
208
- if font != "":
209
- font += ", "
210
-
211
- x, y = self._translate_position(board_index, x, y)
212
- self.context.font = f"{text_size * self._scale}pt {font}system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif, 'Noto Emoji'"
213
- self.context.fillStyle = color
214
- self.context.fillText(text, x, y)
215
-
216
- def draw_line(
217
- self,
218
- start_x: int,
219
- start_y: int,
220
- end_x: int,
221
- end_y: int,
222
- stroke="black",
223
- stroke_width=10,
224
- board_index=0,
225
- ):
226
- start_x, start_y = self._translate_position(board_index, start_x, start_y)
227
- end_x, end_y = self._translate_position(board_index, end_x, end_y)
228
-
229
- self.context.strokeStyle = stroke
230
- self.context.lineWidth = stroke_width * self._scale
231
- self.context.beginPath()
232
- self.context.moveTo(start_x, start_y)
233
- self.context.lineTo(end_x, end_y)
234
- self.context.stroke()
235
-
236
- def draw_circle(
237
- self,
238
- x: int,
239
- y: int,
240
- radius: float,
241
- fill="black",
242
- stroke="transparent",
243
- stroke_width=2,
244
- board_index=0,
245
- ):
246
- """
247
- Draws the given circle (with the given stroke and fill) in the given coordinates and with the given radius (in map pixels).
248
- """
249
-
250
- x, y = self._translate_position(board_index, x, y)
251
-
252
- self.context.fillStyle = fill
253
- self.context.strokeStyle = stroke
254
- self.context.lineWidth = stroke_width * self._scale
255
- self.context.beginPath()
256
- self.context.arc(x, y, radius * self._scale, 0, 2 * math.pi)
257
- self.context.stroke()
258
- self.context.fill()
259
-
260
- def clear(self):
261
- """Clears the canvas and re-draws the players' maps."""
262
-
263
- self.context.clearRect(0, 0, self.canvas.width, self.canvas.height)
264
- self.context.fillStyle = "#fff"
265
- self.context.fillRect(0, 0, self.canvas.width, self.canvas.height)
266
-
267
- for i in range(self.player_count):
268
- self.context.drawImage(
269
- self.map_image,
270
- i * self.canvas.width / self.player_count,
271
- 0,
272
- self.map_image.width * self._scale,
273
- self.map_image.height * self._scale,
274
- )
275
-
276
- @property
277
- def total_width(self) -> float:
278
- """The total width of the canvas (in map pixels)."""
279
-
280
- return self.map_image.width * self.player_count
281
-
282
- def _fit_into(self, max_width: int, max_height: int):
283
- from js import window
284
-
285
- if self.map_image.width == 0 or self.map_image.height == 0:
286
- raise Exception("Map image invalid!")
287
- aspect_ratio = (self.map_image.width * self.player_count + self.extra_width) / (
288
- self.map_image.height + self.extra_height
289
- )
290
- width = min(max_width, max_height * aspect_ratio)
291
- height = width / aspect_ratio
292
- self.canvas.style.width = f"{width}px"
293
- self.canvas.style.height = f"{height}px"
294
- self.canvas.width = width * window.devicePixelRatio
295
- self.canvas.height = height * window.devicePixelRatio
296
- self._scale = self.canvas.width / (
297
- self.player_count * self.map_image.width + self.extra_width
298
- )
299
- self.context = self.canvas.getContext("2d")
300
- self.context.textAlign = "center"
301
- self.context.textBaseline = "middle"
302
-
303
- self.canvas_map_width = (
304
- self.canvas.width - self._scale * self.extra_width
305
- ) / self.player_count
306
- self.canvas_map_height = (
307
- self.canvas_map_width * self.map_image.height / self.map_image.width
308
- )
309
-
310
- def _translate_position(self, board_index: int, x: float, y: float):
311
- x *= self._scale
312
- y *= self._scale
313
- x += board_index * self.map_image.width * self._scale
314
-
315
- return x, y
316
-
317
- def _translate_width(self, width: float, aspect_ratio: float):
318
- """Aspect ratio: w/h"""
319
- width *= self._scale
320
- height = width / aspect_ratio
321
- return width, height
@@ -1,6 +0,0 @@
1
- def run_game(game):
2
- # game = pickle.loads(game)
3
- print("Hi", game, type(game)) # game.player_names)
4
-
5
-
6
- __export__ = ["run_game"]
@@ -1,2 +0,0 @@
1
- import{V as e,a as t,E as i,b as s,c as n,r as o,h as r,W as a,d as l,e as c,f as h,i as d,j as u,m as f,n as m,o as p,k as g}from"./codemirror_view-DVb8uYMr.js";import{codePointAt as v,fromCodePoint as x,codePointSize as b,StateEffect as w,Facet as y,combineConfig as k,CharCategory as S,EditorSelection as M,Prec as C,StateField as A,EditorState as L,findClusterBreak as q,RangeSetBuilder as R}from"./codemirror_state-D1qTXrff.js";import{k as D,l as W,m as F,n as I,o as P,p as E}from"./codemirror_language-CjmvX4ix.js";import{history as $,defaultKeymap as O,historyKeymap as T}from"./codemirror_commands-DDxffOmd.js";import{a as z,b as B,d as j,e as _}from"./index-S1Do43bx.js";function V(){var e=arguments[0];"string"==typeof e&&(e=document.createElement(e));var t=1,i=arguments[1];if(i&&"object"==typeof i&&null==i.nodeType&&!Array.isArray(i)){for(var s in i)if(Object.prototype.hasOwnProperty.call(i,s)){var n=i[s];"string"==typeof n?e.setAttribute(s,n):null!=n&&(e[s]=n)}t++}for(;t<arguments.length;t++)H(e,arguments[t]);return e}function H(e,t){if("string"==typeof t)e.appendChild(document.createTextNode(t));else if(null==t);else if(null!=t.nodeType)e.appendChild(t);else{if(!Array.isArray(t))throw new RangeError("Unsupported child node: "+t);for(var i=0;i<t.length;i++)H(e,t[i])}}const N="function"==typeof String.prototype.normalize?e=>e.normalize("NFKD"):e=>e;class U{constructor(e,t,i=0,s=e.length,n,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,s),this.bufferStart=i,this.normalize=n?e=>n(N(e)):N,this.query=this.normalize(t)}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 v(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 t=x(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=b(e);let s=this.normalize(t);for(let e=0,n=i;;e++){let o=s.charCodeAt(e),r=this.match(o,n,this.bufferPos+this.bufferStart);if(e==s.length-1){if(r)return this.value=r,this;break}n==i&&e<t.length&&t.charCodeAt(e)==o&&n++}}}match(e,t,i){let s=null;for(let t=0;t<this.matches.length;t+=2){let n=this.matches[t],o=!1;this.query.charCodeAt(n)==e&&(n==this.query.length-1?s={from:this.matches[t+1],to:i}:(this.matches[t]++,o=!0)),o||(this.matches.splice(t,2),t-=2)}return this.query.charCodeAt(0)==e&&(1==this.query.length?s={from:t,to:i}:this.matches.push(1,t)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}"undefined"!=typeof Symbol&&(U.prototype[Symbol.iterator]=function(){return this});const K={from:-1,to:-1,match:/.*/.exec("")},Q="gm"+(null==/x/.unicode?"":"u");class G{constructor(e,t,i,s=0,n=e.length){if(this.text=e,this.to=n,this.curLine="",this.done=!1,this.value=K,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new J(e,t,i,s,n);this.re=new RegExp(t,Q+((null==i?void 0:i.ignoreCase)?"i":"")),this.test=null==i?void 0:i.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=X(e,s),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 t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let i=this.curLineStart+t.index,s=i+t[0].length;if(this.matchPos=X(this.text,s+(i==s?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<s||i>this.value.to)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this;e=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length<this.to))return this.done=!0,this;this.nextLine(),e=0}}}}const Y=new WeakMap;class Z{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,i){let s=Y.get(e);if(!s||s.from>=i||s.to<=t){let s=new Z(t,e.sliceString(t,i));return Y.set(e,s),s}if(s.from==t&&s.to==i)return s;let{text:n,from:o}=s;return o>t&&(n=e.sliceString(t,o)+n,o=t),s.to<i&&(n+=e.sliceString(s.to,i)),Y.set(e,new Z(o,n)),new Z(t,n.slice(t-o,i-o))}}class J{constructor(e,t,i,s,n){this.text=e,this.to=n,this.done=!1,this.value=K,this.matchPos=X(e,s),this.re=new RegExp(t,Q+((null==i?void 0:i.ignoreCase)?"i":"")),this.test=null==i?void 0:i.test,this.flat=Z.get(e,s,this.chunkEnd(s+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,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let e=this.flat.from+t.index,i=e+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(e,i,t)))return this.value={from:e,to:i,match:t},this.matchPos=X(this.text,i+(e==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Z.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function X(e,t){if(t>=e.length)return t;let i,s=e.lineAt(t);for(;t<s.to&&(i=s.text.charCodeAt(t-s.from))>=56320&&i<57344;)t++;return t}function ee(e){let t=V("input",{class:"cm-textfield",name:"line",value:String(e.state.doc.lineAt(e.state.selection.main.head).number)});function s(){let s=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(t.value);if(!s)return;let{state:n}=e,o=n.doc.lineAt(n.selection.main.head),[,r,a,l,c]=s,h=l?+l.slice(1):0,d=a?+a:o.number;if(a&&c){let e=d/100;r&&(e=e*("-"==r?-1:1)+o.number/n.doc.lines),d=Math.round(n.doc.lines*e)}else a&&r&&(d=d*("-"==r?-1:1)+o.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,d))),f=M.cursor(u.from+Math.max(0,Math.min(h,u.length)));e.dispatch({effects:[te.of(!1),i.scrollIntoView(f.from,{y:"center"})],selection:f}),e.focus()}return{dom:V("form",{class:"cm-gotoLine",onkeydown:t=>{27==t.keyCode?(t.preventDefault(),e.dispatch({effects:te.of(!1)}),e.focus()):13==t.keyCode&&(t.preventDefault(),s())},onsubmit:e=>{e.preventDefault(),s()}},V("label",e.state.phrase("Go to line"),": ",t)," ",V("button",{class:"cm-button",type:"submit"},e.state.phrase("go")))}}"undefined"!=typeof Symbol&&(G.prototype[Symbol.iterator]=J.prototype[Symbol.iterator]=function(){return this});const te=w.define(),ie=A.define({create:()=>!0,update(e,t){for(let i of t.effects)i.is(te)&&(e=i.value);return e},provide:e=>n.from(e,(e=>e?ee:null))}),se=i.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),ne={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},oe=y.define({combine:e=>k(e,ne,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})});const re=t.mark({class:"cm-selectionMatch"}),ae=t.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function le(e,t,i,s){return!(0!=i&&e(t.sliceDoc(i-1,i))==S.Word||s!=t.doc.length&&e(t.sliceDoc(s,s+1))==S.Word)}const ce=e.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.selectionSet||e.docChanged||e.viewportChanged)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let i=e.state.facet(oe),{state:s}=e,n=s.selection;if(n.ranges.length>1)return t.none;let o,r=n.main,a=null;if(r.empty){if(!i.highlightWordAroundCursor)return t.none;let e=s.wordAt(r.head);if(!e)return t.none;a=s.charCategorizer(r.head),o=s.sliceDoc(e.from,e.to)}else{let e=r.to-r.from;if(e<i.minSelectionLength||e>200)return t.none;if(i.wholeWords){if(o=s.sliceDoc(r.from,r.to),a=s.charCategorizer(r.head),!le(a,s,r.from,r.to)||!function(e,t,i,s){return e(t.sliceDoc(i,i+1))==S.Word&&e(t.sliceDoc(s-1,s))==S.Word}(a,s,r.from,r.to))return t.none}else if(o=s.sliceDoc(r.from,r.to),!o)return t.none}let l=[];for(let n of e.visibleRanges){let e=new U(s.doc,o,n.from,n.to);for(;!e.next().done;){let{from:n,to:o}=e.value;if((!a||le(a,s,n,o))&&(r.empty&&n<=r.from&&o>=r.to?l.push(ae.range(n,o)):(n>=r.to||o<=r.from)&&l.push(re.range(n,o)),l.length>i.maxMatches))return t.none}}return t.set(l)}},{decorations:e=>e.decorations}),he=i.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}});const de=y.define({combine:e=>k(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Be(e),scrollToMatch:e=>i.scrollIntoView(e)})});class ue{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||function(e){try{return new RegExp(e,Q),!0}catch(e){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,((e,t)=>"n"==t?"\n":"r"==t?"\r":"t"==t?"\t":"\\"))}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new be(this):new pe(this)}getCursor(e,t=0,i){let s=e.doc?e:L.create({doc:e});return null==i&&(i=s.doc.length),this.regexp?ge(this,s,t,i):me(this,s,t,i)}}class fe{constructor(e){this.spec=e}}function me(e,t,i,s){return new U(t.doc,e.unquoted,i,s,e.caseSensitive?void 0:e=>e.toLowerCase(),e.wholeWord?(n=t.doc,o=t.charCategorizer(t.selection.main.head),(e,t,i,s)=>((s>e||s+i.length<t)&&(s=Math.max(0,e-2),i=n.sliceString(s,Math.min(n.length,t+2))),!(o(ve(i,e-s))==S.Word&&o(xe(i,e-s))==S.Word||o(xe(i,t-s))==S.Word&&o(ve(i,t-s))==S.Word))):void 0);var n,o}class pe extends fe{constructor(e){super(e)}nextMatch(e,t,i){let s=me(this.spec,e,i,e.doc.length).nextOverlapping();return s.done&&(s=me(this.spec,e,0,t).nextOverlapping()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=i;;){let i=Math.max(t,s-1e4-this.spec.unquoted.length),n=me(this.spec,e,i,s),o=null;for(;!n.nextOverlapping().done;)o=n.value;if(o)return o;if(i==t)return null;s-=1e4}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let i=me(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let n=me(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!n.next().done;)s(n.value.from,n.value.to)}}function ge(e,t,i,s){return new G(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:e.wholeWord?(n=t.charCategorizer(t.selection.main.head),(e,t,i)=>!i[0].length||(n(ve(i.input,i.index))!=S.Word||n(xe(i.input,i.index))!=S.Word)&&(n(xe(i.input,i.index+i[0].length))!=S.Word||n(ve(i.input,i.index+i[0].length))!=S.Word)):void 0},i,s);var n}function ve(e,t){return e.slice(q(e,t,!1),t)}function xe(e,t){return e.slice(t,q(e,t))}class be extends fe{nextMatch(e,t,i){let s=ge(this.spec,e,i,e.doc.length).next();return s.done&&(s=ge(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=1;;s++){let n=Math.max(t,i-1e4*s),o=ge(this.spec,e,n,i),r=null;for(;!o.next().done;)r=o.value;if(r&&(n==t||r.from>n+10))return r;if(n==t)return null}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&\d+])/g,((t,i)=>"$"==i?"$":"&"==i?e.match[0]:"0"!=i&&+i<e.match.length?e.match[i]:t))}matchAll(e,t){let i=ge(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let n=ge(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));for(;!n.next().done;)s(n.value.from,n.value.to)}}const we=w.define(),ye=w.define(),ke=A.define({create:e=>new Se(Pe(e).create(),null),update(e,t){for(let i of t.effects)i.is(we)?e=new Se(i.value.create(),e.panel):i.is(ye)&&(e=new Se(e.query,i.value?Ie:null));return e},provide:e=>n.from(e,(e=>e.panel))});class Se{constructor(e,t){this.query=e,this.panel=t}}const Me=t.mark({class:"cm-searchMatch"}),Ce=t.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Ae=e.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(ke))}update(e){let t=e.state.field(ke);(t!=e.startState.field(ke)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:e,panel:i}){if(!i||!e.spec.valid)return t.none;let{view:s}=this,n=new R;for(let t=0,i=s.visibleRanges,o=i.length;t<o;t++){let{from:r,to:a}=i[t];for(;t<o-1&&a>i[t+1].from-500;)a=i[++t].to;e.highlight(s.state,r,a,((e,t)=>{let i=s.state.selection.ranges.some((i=>i.from==e&&i.to==t));n.add(e,t,i?Ce:Me)}))}return n.finish()}},{decorations:e=>e.decorations});function Le(e){return t=>{let i=t.state.field(ke,!1);return i&&i.query.spec.valid?e(t,i):Oe(t)}}const qe=Le(((e,{query:t})=>{let{to:i}=e.state.selection.main,s=t.nextMatch(e.state,i,i);if(!s)return!1;let n=M.single(s.from,s.to),o=e.state.facet(de);return e.dispatch({selection:n,effects:[He(e,s),o.scrollToMatch(n.main,e)],userEvent:"select.search"}),$e(e),!0})),Re=Le(((e,{query:t})=>{let{state:i}=e,{from:s}=i.selection.main,n=t.prevMatch(i,s,s);if(!n)return!1;let o=M.single(n.from,n.to),r=e.state.facet(de);return e.dispatch({selection:o,effects:[He(e,n),r.scrollToMatch(o.main,e)],userEvent:"select.search"}),$e(e),!0})),De=Le(((e,{query:t})=>{let i=t.matchAll(e.state,1e3);return!(!i||!i.length)&&(e.dispatch({selection:M.create(i.map((e=>M.range(e.from,e.to)))),userEvent:"select.search.matches"}),!0)})),We=Le(((e,{query:t})=>{let{state:s}=e,{from:n,to:o}=s.selection.main;if(s.readOnly)return!1;let r=t.nextMatch(s,n,n);if(!r)return!1;let a,l,c=[],h=[];if(r.from==n&&r.to==o&&(l=s.toText(t.getReplacement(r)),c.push({from:r.from,to:r.to,insert:l}),r=t.nextMatch(s,r.from,r.to),h.push(i.announce.of(s.phrase("replaced match on line $",s.doc.lineAt(n).number)+"."))),r){let t=0==c.length||c[0].from>=r.to?0:r.to-r.from-l.length;a=M.single(r.from-t,r.to-t),h.push(He(e,r)),h.push(s.facet(de).scrollToMatch(a.main,e))}return e.dispatch({changes:c,selection:a,effects:h,userEvent:"input.replace"}),!0})),Fe=Le(((e,{query:t})=>{if(e.state.readOnly)return!1;let s=t.matchAll(e.state,1e9).map((e=>{let{from:i,to:s}=e;return{from:i,to:s,insert:t.getReplacement(e)}}));if(!s.length)return!1;let n=e.state.phrase("replaced $ matches",s.length)+".";return e.dispatch({changes:s,effects:i.announce.of(n),userEvent:"input.replace.all"}),!0}));function Ie(e){return e.state.facet(de).createPanel(e)}function Pe(e,t){var i,s,n,o,r;let a=e.selection.main,l=a.empty||a.to>a.from+100?"":e.sliceDoc(a.from,a.to);if(t&&!l)return t;let c=e.facet(de);return new ue({search:(null!==(i=null==t?void 0:t.literal)&&void 0!==i?i:c.literal)?l:l.replace(/\n/g,"\\n"),caseSensitive:null!==(s=null==t?void 0:t.caseSensitive)&&void 0!==s?s:c.caseSensitive,literal:null!==(n=null==t?void 0:t.literal)&&void 0!==n?n:c.literal,regexp:null!==(o=null==t?void 0:t.regexp)&&void 0!==o?o:c.regexp,wholeWord:null!==(r=null==t?void 0:t.wholeWord)&&void 0!==r?r:c.wholeWord})}function Ee(e){let t=s(e,Ie);return t&&t.dom.querySelector("[main-field]")}function $e(e){let t=Ee(e);t&&t==e.root.activeElement&&t.select()}const Oe=e=>{let t=e.state.field(ke,!1);if(t&&t.panel){let i=Ee(e);if(i&&i!=e.root.activeElement){let s=Pe(e.state,t.query.spec);s.valid&&e.dispatch({effects:we.of(s)}),i.focus(),i.select()}}else e.dispatch({effects:[ye.of(!0),t?we.of(Pe(e.state,t.query.spec)):w.appendConfig.of(Ue)]});return!0},Te=e=>{let t=e.state.field(ke,!1);if(!t||!t.panel)return!1;let i=s(e,Ie);return i&&i.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:ye.of(!1)}),!0},ze=[{key:"Mod-f",run:Oe,scope:"editor search-panel"},{key:"F3",run:qe,shift:Re,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:qe,shift:Re,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Te,scope:"editor search-panel"},{key:"Mod-Shift-l",run:({state:e,dispatch:t})=>{let i=e.selection;if(i.ranges.length>1||i.main.empty)return!1;let{from:s,to:n}=i.main,o=[],r=0;for(let t=new U(e.doc,e.sliceDoc(s,n));!t.next().done;){if(o.length>1e3)return!1;t.value.from==s&&(r=o.length),o.push(M.range(t.value.from,t.value.to))}return t(e.update({selection:M.create(o,r),userEvent:"select.search.matches"})),!0}},{key:"Mod-Alt-g",run:e=>{let t=s(e,ee);if(!t){let i=[te.of(!0)];null==e.state.field(ie,!1)&&i.push(w.appendConfig.of([ie,se])),e.dispatch({effects:i}),t=s(e,ee)}return t&&t.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:e,dispatch:t})=>{let{ranges:s}=e.selection;if(s.some((e=>e.from===e.to)))return(({state:e,dispatch:t})=>{let{selection:i}=e,s=M.create(i.ranges.map((t=>e.wordAt(t.head)||M.cursor(t.head))),i.mainIndex);return!s.eq(i)&&(t(e.update({selection:s})),!0)})({state:e,dispatch:t});let n=e.sliceDoc(s[0].from,s[0].to);if(e.selection.ranges.some((t=>e.sliceDoc(t.from,t.to)!=n)))return!1;let o=function(e,t){let{main:i,ranges:s}=e.selection,n=e.wordAt(i.head),o=n&&n.from==i.from&&n.to==i.to;for(let i=!1,n=new U(e.doc,t,s[s.length-1].to);;){if(n.next(),!n.done){if(i&&s.some((e=>e.from==n.value.from)))continue;if(o){let t=e.wordAt(n.value.from);if(!t||t.from!=n.value.from||t.to!=n.value.to)continue}return n.value}if(i)return null;n=new U(e.doc,t,0,Math.max(0,s[s.length-1].from-1)),i=!0}}(e,n);return!!o&&(t(e.update({selection:e.selection.addRange(M.range(o.from,o.to),!1),effects:i.scrollIntoView(o.to)})),!0)},preventDefault:!0}];class Be{constructor(e){this.view=e;let t=this.query=e.state.field(ke).query.spec;function i(e,t,i){return V("button",{class:"cm-button",name:e,onclick:t,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=V("input",{value:t.search,placeholder:je(e,"Find"),"aria-label":je(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=V("input",{value:t.replace,placeholder:je(e,"Replace"),"aria-label":je(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=V("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=V("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=V("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit}),this.dom=V("div",{onkeydown:e=>this.keydown(e),class:"cm-search"},[this.searchField,i("next",(()=>qe(e)),[je(e,"next")]),i("prev",(()=>Re(e)),[je(e,"previous")]),i("select",(()=>De(e)),[je(e,"all")]),V("label",null,[this.caseField,je(e,"match case")]),V("label",null,[this.reField,je(e,"regexp")]),V("label",null,[this.wordField,je(e,"by word")]),...e.state.readOnly?[]:[V("br"),this.replaceField,i("replace",(()=>We(e)),[je(e,"replace")]),i("replaceAll",(()=>Fe(e)),[je(e,"replace all")])],V("button",{name:"close",onclick:()=>Te(e),"aria-label":je(e,"close"),type:"button"},["×"])])}commit(){let e=new ue({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:we.of(e)}))}keydown(e){o(this.view,e,"search-panel")?e.preventDefault():13==e.keyCode&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Re:qe)(this.view)):13==e.keyCode&&e.target==this.replaceField&&(e.preventDefault(),We(this.view))}update(e){for(let t of e.transactions)for(let e of t.effects)e.is(we)&&!e.value.eq(this.query)&&this.setQuery(e.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(de).top}}function je(e,t){return e.state.phrase(t)}const _e=30,Ve=/[\s\.,:;?!]/;function He(e,{from:t,to:s}){let n=e.state.doc.lineAt(t),o=e.state.doc.lineAt(s).to,r=Math.max(n.from,t-_e),a=Math.min(o,s+_e),l=e.state.sliceDoc(r,a);if(r!=n.from)for(let e=0;e<_e;e++)if(!Ve.test(l[e+1])&&Ve.test(l[e])){l=l.slice(e);break}if(a!=o)for(let e=l.length-1;e>l.length-_e;e--)if(!Ve.test(l[e-1])&&Ve.test(l[e])){l=l.slice(0,e);break}return i.announce.of(`${e.state.phrase("current match")}. ${l} ${e.state.phrase("on line")} ${n.number}.`)}const Ne=i.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"}}),Ue=[ke,C.low(Ae),Ne];class Ke{constructor(e,t,i){this.from=e,this.to=t,this.diagnostic=i}}class Qe{constructor(e,t,i){this.diagnostics=e,this.panel=t,this.selected=i}static init(e,i,s){let n=e,o=s.facet(ot).markerFilter;o&&(n=o(n,s));let r=t.set(n.map((e=>e.from==e.to||e.from==e.to-1&&s.doc.lineAt(e.from).to==e.from?t.widget({widget:new lt(e),diagnostic:e}).range(e.from):t.mark({attributes:{class:"cm-lintRange cm-lintRange-"+e.severity+(e.markClass?" "+e.markClass:"")},diagnostic:e}).range(e.from,e.to))),!0);return new Qe(r,i,Ge(r))}}function Ge(e,t=null,i=0){let s=null;return e.between(i,1e9,((e,i,{spec:n})=>{if(!t||n.diagnostic==t)return s=new Ke(e,i,n.diagnostic),!1})),s}const Ye=w.define(),Ze=w.define(),Je=w.define(),Xe=A.define({create:()=>new Qe(t.none,null,null),update(e,t){if(t.docChanged&&e.diagnostics.size){let i=e.diagnostics.map(t.changes),s=null,n=e.panel;if(e.selected){let n=t.changes.mapPos(e.selected.from,1);s=Ge(i,e.selected.diagnostic,n)||Ge(i,null,n)}!i.size&&n&&t.state.facet(ot).autoPanel&&(n=null),e=new Qe(i,n,s)}for(let i of t.effects)if(i.is(Ye)){let s=t.state.facet(ot).autoPanel?i.value.length?ht.open:null:e.panel;e=Qe.init(i.value,s,t.state)}else i.is(Ze)?e=new Qe(e.diagnostics,i.value?ht.open:null,e.selected):i.is(Je)&&(e=new Qe(e.diagnostics,e.panel,i.value));return e},provide:e=>[n.from(e,(e=>e.panel)),i.decorations.from(e,(e=>e.diagnostics))]}),et=t.mark({class:"cm-lintRange cm-lintRange-active"});function tt(e,t,i){let{diagnostics:s}=e.state.field(Xe),n=[],o=2e8,r=0;s.between(t-(i<0?1:0),t+(i>0?1:0),((e,s,{spec:a})=>{t>=e&&t<=s&&(e==s||(t>e||i>0)&&(t<s||i<0))&&(n.push(a.diagnostic),o=Math.min(e,o),r=Math.max(s,r))}));let a=e.state.facet(ot).tooltipFilter;return a&&(n=a(n,e.state)),n.length?{pos:o,end:r,above:e.state.doc.lineAt(o).to<r,create:()=>({dom:it(e,n)})}:null}function it(e,t){return V("ul",{class:"cm-tooltip-lint"},t.map((t=>at(e,t,!1))))}const st=e=>{let t=e.state.field(Xe,!1);return!(!t||!t.panel)&&(e.dispatch({effects:Ze.of(!1)}),!0)},nt=[{key:"Mod-Shift-m",run:e=>{let t=e.state.field(Xe,!1);var i,n;t&&t.panel||e.dispatch({effects:(i=e.state,n=[Ze.of(!0)],i.field(Xe,!1)?n:n.concat(w.appendConfig.of(ft)))});let o=s(e,ht.open);return o&&o.dom.querySelector(".cm-panel-lint ul").focus(),!0},preventDefault:!0},{key:"F8",run:e=>{let t=e.state.field(Xe,!1);if(!t)return!1;let i=e.state.selection.main,s=t.diagnostics.iter(i.to+1);return!(!s.value&&(s=t.diagnostics.iter(0),!s.value||s.from==i.from&&s.to==i.to))&&(e.dispatch({selection:{anchor:s.from,head:s.to},scrollIntoView:!0}),!0)}}],ot=y.define({combine:e=>Object.assign({sources:e.map((e=>e.source)).filter((e=>null!=e))},k(e.map((e=>e.config)),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{needsRefresh:(e,t)=>e?t?i=>e(i)||t(i):e:t}))});function rt(e){let t=[];if(e)e:for(let{name:i}of e){for(let e=0;e<i.length;e++){let s=i[e];if(/[a-zA-Z]/.test(s)&&!t.some((e=>e.toLowerCase()==s.toLowerCase()))){t.push(s);continue e}}t.push("")}return t}function at(e,t,i){var s;let n=i?rt(t.actions):[];return V("li",{class:"cm-diagnostic cm-diagnostic-"+t.severity},V("span",{class:"cm-diagnosticText"},t.renderMessage?t.renderMessage(e):t.message),null===(s=t.actions)||void 0===s?void 0:s.map(((i,s)=>{let o=!1,r=s=>{if(s.preventDefault(),o)return;o=!0;let n=Ge(e.state.field(Xe).diagnostics,t);n&&i.apply(e,n.from,n.to)},{name:a}=i,l=n[s]?a.indexOf(n[s]):-1,c=l<0?a:[a.slice(0,l),V("u",a.slice(l,l+1)),a.slice(l+1)];return V("button",{type:"button",class:"cm-diagnosticAction",onclick:r,onmousedown:r,"aria-label":` Action: ${a}${l<0?"":` (access key "${n[s]})"`}.`},c)})),t.source&&V("div",{class:"cm-diagnosticSource"},t.source))}class lt extends a{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return V("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class ct{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(4294967295*Math.random()).toString(16),this.dom=at(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class ht{constructor(e){this.view=e,this.items=[];this.list=V("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t=>{if(27==t.keyCode)st(this.view),this.view.focus();else if(38==t.keyCode||33==t.keyCode)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(40==t.keyCode||34==t.keyCode)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(36==t.keyCode)this.moveSelection(0);else if(35==t.keyCode)this.moveSelection(this.items.length-1);else if(13==t.keyCode)this.view.focus();else{if(!(t.keyCode>=65&&t.keyCode<=90&&this.selectedIndex>=0))return;{let{diagnostic:i}=this.items[this.selectedIndex],s=rt(i.actions);for(let n=0;n<s.length;n++)if(s[n].toUpperCase().charCodeAt(0)==t.keyCode){let t=Ge(this.view.state.field(Xe).diagnostics,i);t&&i.actions[n].apply(e,t.from,t.to)}}}t.preventDefault()},onclick:e=>{for(let t=0;t<this.items.length;t++)this.items[t].dom.contains(e.target)&&this.moveSelection(t)}}),this.dom=V("div",{class:"cm-panel-lint"},this.list,V("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>st(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Xe).selected;if(!e)return-1;for(let t=0;t<this.items.length;t++)if(this.items[t].diagnostic==e.diagnostic)return t;return-1}update(){let{diagnostics:e,selected:t}=this.view.state.field(Xe),i=0,s=!1,n=null;for(e.between(0,this.view.state.doc.length,((e,o,{spec:r})=>{let a,l=-1;for(let e=i;e<this.items.length;e++)if(this.items[e].diagnostic==r.diagnostic){l=e;break}l<0?(a=new ct(this.view,r.diagnostic),this.items.splice(i,0,a),s=!0):(a=this.items[l],l>i&&(this.items.splice(i,l-i),s=!0)),t&&a.diagnostic==t.diagnostic?a.dom.hasAttribute("aria-selected")||(a.dom.setAttribute("aria-selected","true"),n=a):a.dom.hasAttribute("aria-selected")&&a.dom.removeAttribute("aria-selected"),i++}));i<this.items.length&&!(1==this.items.length&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();0==this.items.length&&(this.items.push(new ct(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),n?(this.list.setAttribute("aria-activedescendant",n.id),this.view.requestMeasure({key:this,read:()=>({sel:n.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:e,panel:t})=>{let i=t.height/this.list.offsetHeight;e.top<t.top?this.list.scrollTop-=(t.top-e.top)/i:e.bottom>t.bottom&&(this.list.scrollTop+=(e.bottom-t.bottom)/i)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let t=e;e=t.nextSibling,t.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)t();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=Ge(this.view.state.field(Xe).diagnostics,this.items[e].diagnostic);t&&this.view.dispatch({selection:{anchor:t.from,head:t.to},scrollIntoView:!0,effects:Je.of(t)})}static open(e){return new ht(e)}}function dt(e){return function(e,t='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${t}>${encodeURIComponent(e)}</svg>')`}(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${e}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const ut=i.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:dt("#d11")},".cm-lintRange-warning":{backgroundImage:dt("orange")},".cm-lintRange-info":{backgroundImage:dt("#999")},".cm-lintRange-hint":{backgroundImage:dt("#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}}}),ft=[Xe,i.decorations.compute([Xe],(e=>{let{selected:i,panel:s}=e.field(Xe);return i&&s&&i.from!=i.to?t.set([et.range(i.from,i.to)]):t.none})),r(tt,{hideOn:function(e,t){let i=t.pos,s=t.end||i,n=e.state.facet(ot).hideOn(e,i,s);if(null!=n)return n;let o=e.startState.doc.lineAt(t.pos);return!(!e.effects.some((e=>e.is(Ye)))&&!e.changes.touchesRange(o.from,Math.max(o.to,s)))}}),ut],mt=(()=>[l(),c(),h(),$(),D(),d(),u(),L.allowMultipleSelections.of(!0),W(),F(I,{fallback:!0}),P(),z(),B(),f(),m(),p(),[he,ce],g.of([...j,...O,...ze,...T,...E,..._,...nt])])(),pt=(()=>[h(),$(),d(),F(I,{fallback:!0}),g.of([...O,...T])])();export{i as EditorView,mt as basicSetup,pt as minimalSetup};
2
- //# sourceMappingURL=codemirror-BEtcgaoQ.js.map