code-battles 1.7.12 → 1.7.13

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 (175) hide show
  1. package/dist/cjs/index.js +0 -1
  2. package/dist/code_battles/__init__.py +2 -2
  3. package/dist/code_battles/__pycache__/__init__.cpython-314.pyc +0 -0
  4. package/dist/code_battles/__pycache__/battles.cpython-314.pyc +0 -0
  5. package/dist/code_battles/__pycache__/utilities.cpython-314.pyc +0 -0
  6. package/dist/code_battles/battles.py +1 -1
  7. package/dist/esm/index.js +0 -1
  8. package/package.json +1 -1
  9. package/dist/cjs/types/components/ResultStaticsTable.d.ts +0 -3
  10. package/dist/cjs/types/particles.d.ts +0 -2
  11. package/dist/code_battles/js.pyi +0 -144
  12. package/dist/code_battles/pyodide/ffi/__init__.pyi +0 -2
  13. package/dist/code_battles/pyscript/__init__.pyi +0 -7
  14. package/dist/code_battles/pyscript/ffi/__init__.pyi +0 -3
  15. package/dist/code_battles/testing.py +0 -51
  16. package/dist/esm/types/components/ResultStaticsTable.d.ts +0 -3
  17. package/dist/esm/types/particles.d.ts +0 -2
  18. package/dist/pyscript/codemirror-BL6UELQn.js +0 -2
  19. package/dist/pyscript/codemirror-BL6UELQn.js.map +0 -1
  20. package/dist/pyscript/codemirror-Cxby0EOW.js +0 -2
  21. package/dist/pyscript/codemirror-Cxby0EOW.js.map +0 -1
  22. package/dist/pyscript/codemirror-DtxT3fWl.js +0 -2
  23. package/dist/pyscript/codemirror-DtxT3fWl.js.map +0 -1
  24. package/dist/pyscript/codemirror-eKulCBrd.js +0 -2
  25. package/dist/pyscript/codemirror-eKulCBrd.js.map +0 -1
  26. package/dist/pyscript/codemirror_commands-BVu_0Pnj.js +0 -2
  27. package/dist/pyscript/codemirror_commands-BVu_0Pnj.js.map +0 -1
  28. package/dist/pyscript/codemirror_commands-CkvdNQxZ.js +0 -2
  29. package/dist/pyscript/codemirror_commands-CkvdNQxZ.js.map +0 -1
  30. package/dist/pyscript/codemirror_commands-CmeJ70sL.js +0 -2
  31. package/dist/pyscript/codemirror_commands-CmeJ70sL.js.map +0 -1
  32. package/dist/pyscript/codemirror_commands-DEH2ednO.js +0 -2
  33. package/dist/pyscript/codemirror_commands-DEH2ednO.js.map +0 -1
  34. package/dist/pyscript/codemirror_lang-python-B9xSeck3.js +0 -2
  35. package/dist/pyscript/codemirror_lang-python-B9xSeck3.js.map +0 -1
  36. package/dist/pyscript/codemirror_lang-python-BmOE5ND1.js +0 -2
  37. package/dist/pyscript/codemirror_lang-python-BmOE5ND1.js.map +0 -1
  38. package/dist/pyscript/codemirror_lang-python-C4eeLuBs.js +0 -2
  39. package/dist/pyscript/codemirror_lang-python-C4eeLuBs.js.map +0 -1
  40. package/dist/pyscript/codemirror_lang-python-a2LxSo5G.js +0 -2
  41. package/dist/pyscript/codemirror_lang-python-a2LxSo5G.js.map +0 -1
  42. package/dist/pyscript/codemirror_language-Bq5O0hUR.js +0 -2
  43. package/dist/pyscript/codemirror_language-Bq5O0hUR.js.map +0 -1
  44. package/dist/pyscript/codemirror_language-DbhkgEi1.js +0 -2
  45. package/dist/pyscript/codemirror_language-DbhkgEi1.js.map +0 -1
  46. package/dist/pyscript/codemirror_language-_2pXlKJ9.js +0 -2
  47. package/dist/pyscript/codemirror_language-_2pXlKJ9.js.map +0 -1
  48. package/dist/pyscript/codemirror_language-bz5_3ooB.js +0 -2
  49. package/dist/pyscript/codemirror_language-bz5_3ooB.js.map +0 -1
  50. package/dist/pyscript/codemirror_state-1UkzIAPK.js +0 -2
  51. package/dist/pyscript/codemirror_state-1UkzIAPK.js.map +0 -1
  52. package/dist/pyscript/codemirror_view-BwC4I3hj.js +0 -2
  53. package/dist/pyscript/codemirror_view-BwC4I3hj.js.map +0 -1
  54. package/dist/pyscript/codemirror_view-DMW9kQlJ.js +0 -2
  55. package/dist/pyscript/codemirror_view-DMW9kQlJ.js.map +0 -1
  56. package/dist/pyscript/codemirror_view-DNx7dL5k.js +0 -2
  57. package/dist/pyscript/codemirror_view-DNx7dL5k.js.map +0 -1
  58. package/dist/pyscript/codemirror_view-qh1qPB30.js +0 -2
  59. package/dist/pyscript/codemirror_view-qh1qPB30.js.map +0 -1
  60. package/dist/pyscript/core-3crqT3rt.js +0 -4
  61. package/dist/pyscript/core-3crqT3rt.js.map +0 -1
  62. package/dist/pyscript/core-BAg8axiz.js +0 -4
  63. package/dist/pyscript/core-BAg8axiz.js.map +0 -1
  64. package/dist/pyscript/core-D_Y2i5wV.js +0 -4
  65. package/dist/pyscript/core-D_Y2i5wV.js.map +0 -1
  66. package/dist/pyscript/core-DezwbZpG.js +0 -4
  67. package/dist/pyscript/core-DezwbZpG.js.map +0 -1
  68. package/dist/pyscript/core-ZERPM6xU.js +0 -4
  69. package/dist/pyscript/core-ZERPM6xU.js.map +0 -1
  70. package/dist/pyscript/deprecations-manager-B1bDno27.js +0 -2
  71. package/dist/pyscript/deprecations-manager-B1bDno27.js.map +0 -1
  72. package/dist/pyscript/deprecations-manager-C-kM_OOK.js +0 -2
  73. package/dist/pyscript/deprecations-manager-C-kM_OOK.js.map +0 -1
  74. package/dist/pyscript/deprecations-manager-DFWBNz_j.js +0 -2
  75. package/dist/pyscript/deprecations-manager-DFWBNz_j.js.map +0 -1
  76. package/dist/pyscript/deprecations-manager-DK3ieDyl.js +0 -2
  77. package/dist/pyscript/deprecations-manager-DK3ieDyl.js.map +0 -1
  78. package/dist/pyscript/deprecations-manager-DdXs-cNg.js +0 -2
  79. package/dist/pyscript/deprecations-manager-DdXs-cNg.js.map +0 -1
  80. package/dist/pyscript/donkey--RgkMgKe.js +0 -2
  81. package/dist/pyscript/donkey--RgkMgKe.js.map +0 -1
  82. package/dist/pyscript/donkey-9sgzITrF.js +0 -2
  83. package/dist/pyscript/donkey-9sgzITrF.js.map +0 -1
  84. package/dist/pyscript/donkey-DNl0ASkM.js +0 -2
  85. package/dist/pyscript/donkey-DNl0ASkM.js.map +0 -1
  86. package/dist/pyscript/donkey-Dh8cjx4z.js +0 -2
  87. package/dist/pyscript/donkey-Dh8cjx4z.js.map +0 -1
  88. package/dist/pyscript/donkey-DvYy_z4S.js +0 -2
  89. package/dist/pyscript/donkey-DvYy_z4S.js.map +0 -1
  90. package/dist/pyscript/error-ADoJa5BE.js +0 -2
  91. package/dist/pyscript/error-ADoJa5BE.js.map +0 -1
  92. package/dist/pyscript/error-BHehssqp.js +0 -2
  93. package/dist/pyscript/error-BHehssqp.js.map +0 -1
  94. package/dist/pyscript/error-Dc0g2_oA.js +0 -2
  95. package/dist/pyscript/error-Dc0g2_oA.js.map +0 -1
  96. package/dist/pyscript/error-DmRE4Y-7.js +0 -2
  97. package/dist/pyscript/error-DmRE4Y-7.js.map +0 -1
  98. package/dist/pyscript/error-X7dWXDEj.js +0 -2
  99. package/dist/pyscript/error-X7dWXDEj.js.map +0 -1
  100. package/dist/pyscript/index-1itZOIGg.js +0 -2
  101. package/dist/pyscript/index-1itZOIGg.js.map +0 -1
  102. package/dist/pyscript/index-B25jxAgK.js +0 -2
  103. package/dist/pyscript/index-B25jxAgK.js.map +0 -1
  104. package/dist/pyscript/index-BtkFDJPe.js +0 -2
  105. package/dist/pyscript/index-BtkFDJPe.js.map +0 -1
  106. package/dist/pyscript/index-DkgvWIf-.js +0 -2
  107. package/dist/pyscript/index-DkgvWIf-.js.map +0 -1
  108. package/dist/pyscript/mpy-BOCRQK6f.js +0 -2
  109. package/dist/pyscript/mpy-BOCRQK6f.js.map +0 -1
  110. package/dist/pyscript/mpy-BoY0tVRD.js +0 -2
  111. package/dist/pyscript/mpy-BoY0tVRD.js.map +0 -1
  112. package/dist/pyscript/mpy-CJb45DuK.js +0 -2
  113. package/dist/pyscript/mpy-CJb45DuK.js.map +0 -1
  114. package/dist/pyscript/mpy-PutLL-8K.js +0 -2
  115. package/dist/pyscript/mpy-PutLL-8K.js.map +0 -1
  116. package/dist/pyscript/mpy-lpj2Tqw5.js +0 -2
  117. package/dist/pyscript/mpy-lpj2Tqw5.js.map +0 -1
  118. package/dist/pyscript/py-ByqLLyxS.js +0 -2
  119. package/dist/pyscript/py-ByqLLyxS.js.map +0 -1
  120. package/dist/pyscript/py-C5u4njlg.js +0 -2
  121. package/dist/pyscript/py-C5u4njlg.js.map +0 -1
  122. package/dist/pyscript/py-CbCpu0Nu.js +0 -2
  123. package/dist/pyscript/py-CbCpu0Nu.js.map +0 -1
  124. package/dist/pyscript/py-DsQqgZuM.js +0 -2
  125. package/dist/pyscript/py-DsQqgZuM.js.map +0 -1
  126. package/dist/pyscript/py-M84r6p_z.js +0 -2
  127. package/dist/pyscript/py-M84r6p_z.js.map +0 -1
  128. package/dist/pyscript/py-editor-BSEgUf3R.js +0 -2
  129. package/dist/pyscript/py-editor-BSEgUf3R.js.map +0 -1
  130. package/dist/pyscript/py-editor-DZkG_or6.js +0 -2
  131. package/dist/pyscript/py-editor-DZkG_or6.js.map +0 -1
  132. package/dist/pyscript/py-editor-Dpcrdhky.js +0 -2
  133. package/dist/pyscript/py-editor-Dpcrdhky.js.map +0 -1
  134. package/dist/pyscript/py-editor-JsJIlo51.js +0 -2
  135. package/dist/pyscript/py-editor-JsJIlo51.js.map +0 -1
  136. package/dist/pyscript/py-editor-rQyrU9ml.js +0 -2
  137. package/dist/pyscript/py-editor-rQyrU9ml.js.map +0 -1
  138. package/dist/pyscript/py-game-CqGV5glf.js +0 -2
  139. package/dist/pyscript/py-game-CqGV5glf.js.map +0 -1
  140. package/dist/pyscript/py-game-D0Z4YnzZ.js +0 -2
  141. package/dist/pyscript/py-game-D0Z4YnzZ.js.map +0 -1
  142. package/dist/pyscript/py-game-D3nLvq_1.js +0 -2
  143. package/dist/pyscript/py-game-D3nLvq_1.js.map +0 -1
  144. package/dist/pyscript/py-game-DC-XdrKH.js +0 -2
  145. package/dist/pyscript/py-game-DC-XdrKH.js.map +0 -1
  146. package/dist/pyscript/py-game-DzlIl7pw.js +0 -2
  147. package/dist/pyscript/py-game-DzlIl7pw.js.map +0 -1
  148. package/dist/pyscript/py-terminal-CEeXlsXC.js +0 -2
  149. package/dist/pyscript/py-terminal-CEeXlsXC.js.map +0 -1
  150. package/dist/pyscript/py-terminal-CH3PYUc-.js +0 -2
  151. package/dist/pyscript/py-terminal-CH3PYUc-.js.map +0 -1
  152. package/dist/pyscript/py-terminal-CNqBj7Ns.js +0 -2
  153. package/dist/pyscript/py-terminal-CNqBj7Ns.js.map +0 -1
  154. package/dist/pyscript/py-terminal-DYHK7LJ0.js +0 -2
  155. package/dist/pyscript/py-terminal-DYHK7LJ0.js.map +0 -1
  156. package/dist/pyscript/py-terminal-qT02HXWZ.js +0 -2
  157. package/dist/pyscript/py-terminal-qT02HXWZ.js.map +0 -1
  158. package/dist/pyscript/toml-BLBSZ43A.js +0 -3
  159. package/dist/pyscript/toml-BLBSZ43A.js.map +0 -1
  160. package/dist/pyscript/toml-DiUM0_qs.js +0 -3
  161. package/dist/pyscript/toml-DiUM0_qs.js.map +0 -1
  162. package/dist/pyscript/xterm-7LwxAMsn.js +0 -2
  163. package/dist/pyscript/xterm-7LwxAMsn.js.map +0 -1
  164. package/dist/pyscript/xterm-CVv2fC4I.js +0 -2
  165. package/dist/pyscript/xterm-CVv2fC4I.js.map +0 -1
  166. package/dist/pyscript/xterm-readline-e8QPhSrm.js +0 -2
  167. package/dist/pyscript/xterm-readline-e8QPhSrm.js.map +0 -1
  168. package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js +0 -2
  169. package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js.map +0 -1
  170. package/dist/pyscript/zip-BKVoQflw.js +0 -2
  171. package/dist/pyscript/zip-BKVoQflw.js.map +0 -1
  172. package/dist/pyscript/zip-D13-hp9W.js +0 -2
  173. package/dist/pyscript/zip-D13-hp9W.js.map +0 -1
  174. package/dist/pyscript/zip-DxlTOqbw.js +0 -2
  175. package/dist/pyscript/zip-DxlTOqbw.js.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -2660,7 +2660,6 @@ const RunSimulationBlock = () => {
2660
2660
  icon: React.createElement("i", { className: "fa-solid fa-crown" }),
2661
2661
  autoClose: false,
2662
2662
  });
2663
- setLocalStorage("Results", {});
2664
2663
  }
2665
2664
  else {
2666
2665
  runNoUI(getFullParameters(), apis, playerBots, seed.toString(), false);
@@ -2,8 +2,8 @@ from __future__ import annotations
2
2
 
3
3
  import sys
4
4
 
5
- from battles import CodeBattles
6
- from utilities import Alignment, GameCanvas, is_web, is_worker
5
+ from code_battles.battles import CodeBattles
6
+ from code_battles.utilities import Alignment, GameCanvas, is_web, is_worker
7
7
 
8
8
 
9
9
  def run_game(battles: CodeBattles):
@@ -18,7 +18,7 @@ from random import Random
18
18
  from typing import Any, Dict, Generic, List, Optional, Set, Tuple, TypeVar, Union
19
19
  from urllib.parse import quote
20
20
 
21
- from utilities import (
21
+ from code_battles.utilities import (
22
22
  GameCanvas,
23
23
  console_log,
24
24
  download_image,
package/dist/esm/index.js CHANGED
@@ -2658,7 +2658,6 @@ const RunSimulationBlock = () => {
2658
2658
  icon: React.createElement("i", { className: "fa-solid fa-crown" }),
2659
2659
  autoClose: false,
2660
2660
  });
2661
- setLocalStorage("Results", {});
2662
2661
  }
2663
2662
  else {
2664
2663
  runNoUI(getFullParameters(), apis, playerBots, seed.toString(), false);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-battles",
3
- "version": "1.7.12",
3
+ "version": "1.7.13",
4
4
  "description": "A library for building interactive competitive coding battles",
5
5
  "repository": "https://github.com/noamzaks/code-battles",
6
6
  "homepage": "https://code-battles.readthedocs.org",
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- declare const ResultStatisticsTable: () => React.JSX.Element;
3
- export default ResultStatisticsTable;
@@ -1,2 +0,0 @@
1
- export declare const parallax: any;
2
- export declare const confetti: any;
@@ -1,144 +0,0 @@
1
- """
2
- Basic type hints for JavaScript, used in Pyodide and PyScript.
3
- A lot of properties are missing.
4
- """
5
-
6
- from typing import Any, Callable, List, Literal, Optional
7
-
8
- class JsCallable:
9
- pass
10
-
11
- class CanvasRenderingContext2D:
12
- textAlign: Literal["left", "right", "center", "start", "end"]
13
- textBaseline: Literal[
14
- "top", "hanging", "middle", "alphabetic", "ideographic", "bottom"
15
- ]
16
- font: str
17
- fillStyle: str
18
- strokeStyle: str
19
- lineWidth: float
20
-
21
- @staticmethod
22
- def beginPath(): ...
23
- @staticmethod
24
- def arc(
25
- x: float,
26
- y: float,
27
- radius: float,
28
- startAngle: float,
29
- endAngle: float,
30
- counterclockwise=False,
31
- ): ...
32
- @staticmethod
33
- def moveTo(x: float, y: float): ...
34
- @staticmethod
35
- def lineTo(x: float, y: float): ...
36
- @staticmethod
37
- def stroke(): ...
38
- @staticmethod
39
- def fill(): ...
40
- @staticmethod
41
- def fillText(text: str, x: float, y: float): ...
42
- @staticmethod
43
- def fillRect(x: float, y: float, width: float, height: float): ...
44
- @staticmethod
45
- def drawImage(image: "Image", x: float, y: float, width: float, height: float): ...
46
- @staticmethod
47
- def clearRect(startX: float, endX: float, width: float, height: float): ...
48
- @staticmethod
49
- def rect(startX: float, endX: float, width: float, height: float): ...
50
- @staticmethod
51
- def save(): ...
52
- @staticmethod
53
- def restore(): ...
54
- @staticmethod
55
- def translate(x: float, y: float): ...
56
- @staticmethod
57
- def rotate(radians: float): ...
58
-
59
- class Styles:
60
- width: str
61
- height: str
62
- display: str
63
-
64
- class Element:
65
- id: str
66
- value: str
67
- textContent: str
68
- ariaValueNow: str
69
- onclick: JsCallable
70
- width: float
71
- height: float
72
- clientWidth: Optional[float]
73
- clientHeight: Optional[float]
74
- style: Styles
75
-
76
- @staticmethod
77
- def getContext(dimensions: str) -> CanvasRenderingContext2D: ...
78
- @staticmethod
79
- def click(): ...
80
- @staticmethod
81
- def getElementsByClassName(classname: str) -> "HTMLCollection": ...
82
-
83
- class document:
84
- body: Element
85
- fonts: FontFaceSet
86
-
87
- @staticmethod
88
- def getElementById(id: str) -> Element: ...
89
-
90
- class FontFaceSet:
91
- @staticmethod
92
- def add(font: FontFace) -> FontFaceSet: ...
93
-
94
- class Matches:
95
- matches: bool
96
-
97
- class Event: ...
98
-
99
- class LocalStorage:
100
- @staticmethod
101
- def getItem(key: str) -> Optional[str]: ...
102
- @staticmethod
103
- def setItem(key: str, value: str) -> None: ...
104
-
105
- class window(Any):
106
- devicePixelRatio: float
107
- localStorage: LocalStorage
108
-
109
- @staticmethod
110
- def matchMedia(media: str) -> Matches: ...
111
- @staticmethod
112
- def createEventListener(event: str, callable: JsCallable) -> None: ...
113
-
114
- class Audio:
115
- volume: float
116
-
117
- @staticmethod
118
- def new(src: str) -> "Audio": ...
119
- @staticmethod
120
- def cloneNode(p: bool) -> "Audio": ...
121
- @staticmethod
122
- def play() -> None: ...
123
-
124
- class HTMLCollection:
125
- @staticmethod
126
- def to_py() -> List[Element]: ...
127
-
128
- class Image(Element):
129
- @staticmethod
130
- def new() -> "Image": ...
131
-
132
- src: str
133
- onload: Callable[[Event], None]
134
- onerror: Callable[[Event], None]
135
-
136
- def clearInterval(id: int) -> None: ...
137
- def setInterval(fn: JsCallable, period: float) -> int: ...
138
- def setTimeout(fn: JsCallable, period: float) -> None: ...
139
-
140
- class FontFace:
141
- @staticmethod
142
- def new(name: str, url: str): ...
143
- @staticmethod
144
- def load(): ...
@@ -1,2 +0,0 @@
1
- class JsCallable:
2
- pass
@@ -1,7 +0,0 @@
1
- from typing import Any, Literal
2
-
3
- class PyWorker:
4
- def __init__(self, path: str, type: Literal["micropython", "pyodide"]): ...
5
-
6
- sync: Any
7
- workers: Any
@@ -1,3 +0,0 @@
1
- from typing import Callable
2
-
3
- def create_proxy(f: Callable): ...
@@ -1,51 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import json
4
- import os
5
- import sys
6
- from pathlib import Path
7
- from typing import Dict, List
8
-
9
- from battles import CodeBattles, Simulation
10
- from pytest import MonkeyPatch
11
-
12
-
13
- def snapshot_test(
14
- monkeypatch: MonkeyPatch,
15
- battles: CodeBattles,
16
- seed: int,
17
- parameters: Dict[str, str],
18
- bots: List[str],
19
- name: str,
20
- tmp_path: Path,
21
- ):
22
- output_path = tmp_path / "output.btl"
23
- test_path = Path("__snapshots__") / (name + ".snapshot.btl")
24
- with monkeypatch.context() as m:
25
- m.setattr(
26
- sys,
27
- "argv",
28
- [
29
- "code-battles",
30
- "simulate",
31
- str(seed),
32
- str(output_path),
33
- json.dumps(parameters),
34
- ]
35
- + [os.path.abspath(bot) for bot in bots],
36
- )
37
-
38
- battles._run_local_simulation()
39
- assert output_path.exists()
40
- output_simulation = output_path.read_text()
41
- simulation = Simulation.load(output_simulation)
42
- assert simulation.seed == seed
43
- assert simulation.parameters == parameters
44
-
45
- if not test_path.exists():
46
- os.makedirs(test_path.parent, exist_ok=True)
47
- test_path.write_text(output_simulation)
48
- else:
49
- assert (
50
- simulation.decisions == Simulation.load(test_path.read_text()).decisions
51
- ), "Wrong decisions!"
@@ -1,3 +0,0 @@
1
- import React from "react";
2
- declare const ResultStatisticsTable: () => React.JSX.Element;
3
- export default ResultStatisticsTable;
@@ -1,2 +0,0 @@
1
- export declare const parallax: any;
2
- export declare const confetti: any;
@@ -1,2 +0,0 @@
1
- import{E as e,V as t,b as i,a as s,c as n,d as o,r,h as l,W as a,e as c,f as h,i as d,j as u,m as f,n as m,o as p,p as g,k as v}from"./codemirror_view-qh1qPB30.js";import{StateField as x,StateEffect as b,Prec as w,EditorSelection as k,Facet as y,combineConfig as M,codePointAt as S,fromCodePoint as C,codePointSize as L,CharCategory as q,EditorState as A,RangeSetBuilder as R,findClusterBreak as D}from"./codemirror_state-BIAL8JKm.js";import{f as W,a as F,b as I,c as P,d as E,e as $}from"./codemirror_language-bz5_3ooB.js";import{history as O,defaultKeymap as z,historyKeymap as T}from"./codemirror_commands-CkvdNQxZ.js";import{c as B,a as j,b as _,d as V}from"./index-1itZOIGg.js";const H="function"==typeof String.prototype.normalize?e=>e.normalize("NFKD"):e=>e;class N{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(H(e)):H,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 S(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=C(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=L(e);let s=this.normalize(t);if(s.length)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&&(N.prototype[Symbol.iterator]=function(){return this});const K={from:-1,to:-1,match:/.*/.exec("")},Q="gm"+(null==/x/.unicode?"":"u");class U{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 Z(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=J(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=J(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 G=new WeakMap;class Y{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,i){let s=G.get(e);if(!s||s.from>=i||s.to<=t){let s=new Y(t,e.sliceString(t,i));return G.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)),G.set(e,new Y(o,n)),new Y(t,n.slice(t-o,i-o))}}class Z{constructor(e,t,i,s,n){this.text=e,this.to=n,this.done=!1,this.value=K,this.matchPos=J(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=Y.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=J(this.text,i+(e==i?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Y.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function J(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 X(t){let i=String(t.state.doc.lineAt(t.state.selection.main.head).number),s=o("input",{class:"cm-textfield",name:"line",value:i});function n(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(s.value);if(!i)return;let{state:n}=t,o=n.doc.lineAt(n.selection.main.head),[,r,l,a,c]=i,h=a?+a.slice(1):0,d=l?+l:o.number;if(l&&c){let e=d/100;r&&(e=e*("-"==r?-1:1)+o.number/n.doc.lines),d=Math.round(n.doc.lines*e)}else l&&r&&(d=d*("-"==r?-1:1)+o.number);let u=n.doc.line(Math.max(1,Math.min(n.doc.lines,d))),f=k.cursor(u.from+Math.max(0,Math.min(h,u.length)));t.dispatch({effects:[ee.of(!1),e.scrollIntoView(f.from,{y:"center"})],selection:f}),t.focus()}return{dom:o("form",{class:"cm-gotoLine",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),t.dispatch({effects:ee.of(!1)}),t.focus()):13==e.keyCode&&(e.preventDefault(),n())},onsubmit:e=>{e.preventDefault(),n()}},o("label",t.state.phrase("Go to line"),": ",s)," ",o("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),o("button",{name:"close",onclick:()=>{t.dispatch({effects:ee.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]))}}"undefined"!=typeof Symbol&&(U.prototype[Symbol.iterator]=Z.prototype[Symbol.iterator]=function(){return this});const ee=b.define(),te=x.define({create:()=>!0,update(e,t){for(let i of t.effects)i.is(ee)&&(e=i.value);return e},provide:e=>n.from(e,e=>e?X:null)}),ie=e.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),se={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},ne=y.define({combine:e=>M(e,se,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})});const oe=s.mark({class:"cm-selectionMatch"}),re=s.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function le(e,t,i,s){return!(0!=i&&e(t.sliceDoc(i-1,i))==q.Word||s!=t.doc.length&&e(t.sliceDoc(s,s+1))==q.Word)}const ae=t.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 t=e.state.facet(ne),{state:i}=e,n=i.selection;if(n.ranges.length>1)return s.none;let o,r=n.main,l=null;if(r.empty){if(!t.highlightWordAroundCursor)return s.none;let e=i.wordAt(r.head);if(!e)return s.none;l=i.charCategorizer(r.head),o=i.sliceDoc(e.from,e.to)}else{let e=r.to-r.from;if(e<t.minSelectionLength||e>200)return s.none;if(t.wholeWords){if(o=i.sliceDoc(r.from,r.to),l=i.charCategorizer(r.head),!le(l,i,r.from,r.to)||!function(e,t,i,s){return e(t.sliceDoc(i,i+1))==q.Word&&e(t.sliceDoc(s-1,s))==q.Word}(l,i,r.from,r.to))return s.none}else if(o=i.sliceDoc(r.from,r.to),!o)return s.none}let a=[];for(let n of e.visibleRanges){let e=new N(i.doc,o,n.from,n.to);for(;!e.next().done;){let{from:n,to:o}=e.value;if((!l||le(l,i,n,o))&&(r.empty&&n<=r.from&&o>=r.to?a.push(re.range(n,o)):(n>=r.to||o<=r.from)&&a.push(oe.range(n,o)),a.length>t.maxMatches))return s.none}}return s.set(a)}},{decorations:e=>e.decorations}),ce=e.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}});const he=y.define({combine:t=>M(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Te(e),scrollToMatch:t=>e.scrollIntoView(t)})});class de{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 xe(this):new me(this)}getCursor(e,t=0,i){let s=e.doc?e:A.create({doc:e});return null==i&&(i=s.doc.length),this.regexp?pe(this,s,t,i):fe(this,s,t,i)}}class ue{constructor(e){this.spec=e}}function fe(e,t,i,s){return new N(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(ge(i,e-s))==q.Word&&o(ve(i,e-s))==q.Word||o(ve(i,t-s))==q.Word&&o(ge(i,t-s))==q.Word))):void 0);var n,o}class me extends ue{constructor(e){super(e)}nextMatch(e,t,i){let s=fe(this.spec,e,i,e.doc.length).nextOverlapping();if(s.done){let i=Math.min(e.doc.length,t+this.spec.unquoted.length);s=fe(this.spec,e,0,i).nextOverlapping()}return s.done||s.value.from==t&&s.value.to==i?null:s.value}prevMatchInRange(e,t,i){for(let s=i;;){let i=Math.max(t,s-1e4-this.spec.unquoted.length),n=fe(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){let s=this.prevMatchInRange(e,0,t);return s||(s=this.prevMatchInRange(e,Math.max(0,i-this.spec.unquoted.length),e.doc.length)),!s||s.from==t&&s.to==i?null:s}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let i=fe(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=fe(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 pe(e,t,i,s){return new U(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:e.wholeWord?(n=t.charCategorizer(t.selection.main.head),(e,t,i)=>!i[0].length||(n(ge(i.input,i.index))!=q.Word||n(ve(i.input,i.index))!=q.Word)&&(n(ve(i.input,i.index+i[0].length))!=q.Word||n(ge(i.input,i.index+i[0].length))!=q.Word)):void 0},i,s);var n}function ge(e,t){return e.slice(D(e,t,!1),t)}function ve(e,t){return e.slice(t,D(e,t))}class xe extends ue{nextMatch(e,t,i){let s=pe(this.spec,e,i,e.doc.length).next();return s.done&&(s=pe(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=pe(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)=>{if("&"==i)return e.match[0];if("$"==i)return"$";for(let t=i.length;t>0;t--){let s=+i.slice(0,t);if(s>0&&s<e.match.length)return e.match[s]+i.slice(t)}return t})}matchAll(e,t){let i=pe(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=pe(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 be=b.define(),we=b.define(),ke=x.define({create:e=>new ye(Ie(e).create(),null),update(e,t){for(let i of t.effects)i.is(be)?e=new ye(i.value.create(),e.panel):i.is(we)&&(e=new ye(e.query,i.value?Fe:null));return e},provide:e=>n.from(e,e=>e.panel)});class ye{constructor(e,t){this.query=e,this.panel=t}}const Me=s.mark({class:"cm-searchMatch"}),Se=s.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Ce=t.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:t}){if(!t||!e.spec.valid)return s.none;let{view:i}=this,n=new R;for(let t=0,s=i.visibleRanges,o=s.length;t<o;t++){let{from:r,to:l}=s[t];for(;t<o-1&&l>s[t+1].from-500;)l=s[++t].to;e.highlight(i.state,r,l,(e,t)=>{let s=i.state.selection.ranges.some(i=>i.from==e&&i.to==t);n.add(e,t,s?Se: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):$e(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=k.single(s.from,s.to),o=e.state.facet(he);return e.dispatch({selection:n,effects:[Ve(e,s),o.scrollToMatch(n.main,e)],userEvent:"select.search"}),Ee(e),!0}),Ae=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=k.single(n.from,n.to),r=e.state.facet(he);return e.dispatch({selection:o,effects:[Ve(e,n),r.scrollToMatch(o.main,e)],userEvent:"select.search"}),Ee(e),!0}),Re=Le((e,{query:t})=>{let i=t.matchAll(e.state,1e3);return!(!i||!i.length)&&(e.dispatch({selection:k.create(i.map(e=>k.range(e.from,e.to))),userEvent:"select.search.matches"}),!0)}),De=Le((t,{query:i})=>{let{state:s}=t,{from:n,to:o}=s.selection.main;if(s.readOnly)return!1;let r=i.nextMatch(s,n,n);if(!r)return!1;let l,a,c=r,h=[],d=[];c.from==n&&c.to==o&&(a=s.toText(i.getReplacement(c)),h.push({from:c.from,to:c.to,insert:a}),c=i.nextMatch(s,c.from,c.to),d.push(e.announce.of(s.phrase("replaced match on line $",s.doc.lineAt(n).number)+".")));let u=t.state.changes(h);return c&&(l=k.single(c.from,c.to).map(u),d.push(Ve(t,c)),d.push(s.facet(he).scrollToMatch(l.main,t))),t.dispatch({changes:u,selection:l,effects:d,userEvent:"input.replace"}),!0}),We=Le((t,{query:i})=>{if(t.state.readOnly)return!1;let s=i.matchAll(t.state,1e9).map(e=>{let{from:t,to:s}=e;return{from:t,to:s,insert:i.getReplacement(e)}});if(!s.length)return!1;let n=t.state.phrase("replaced $ matches",s.length)+".";return t.dispatch({changes:s,effects:e.announce.of(n),userEvent:"input.replace.all"}),!0});function Fe(e){return e.state.facet(he).createPanel(e)}function Ie(e,t){var i,s,n,o,r;let l=e.selection.main,a=l.empty||l.to>l.from+100?"":e.sliceDoc(l.from,l.to);if(t&&!a)return t;let c=e.facet(he);return new de({search:(null!==(i=null==t?void 0:t.literal)&&void 0!==i?i:c.literal)?a:a.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 Pe(e){let t=i(e,Fe);return t&&t.dom.querySelector("[main-field]")}function Ee(e){let t=Pe(e);t&&t==e.root.activeElement&&t.select()}const $e=e=>{let t=e.state.field(ke,!1);if(t&&t.panel){let i=Pe(e);if(i&&i!=e.root.activeElement){let s=Ie(e.state,t.query.spec);s.valid&&e.dispatch({effects:be.of(s)}),i.focus(),i.select()}}else e.dispatch({effects:[we.of(!0),t?be.of(Ie(e.state,t.query.spec)):b.appendConfig.of(Ne)]});return!0},Oe=e=>{let t=e.state.field(ke,!1);if(!t||!t.panel)return!1;let s=i(e,Fe);return s&&s.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:we.of(!1)}),!0},ze=[{key:"Mod-f",run:$e,scope:"editor search-panel"},{key:"F3",run:qe,shift:Ae,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:qe,shift:Ae,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Oe,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 N(e.doc,e.sliceDoc(s,n));!t.next().done;){if(o.length>1e3)return!1;t.value.from==s&&(r=o.length),o.push(k.range(t.value.from,t.value.to))}return t(e.update({selection:k.create(o,r),userEvent:"select.search.matches"})),!0}},{key:"Mod-Alt-g",run:e=>{let t=i(e,X);if(!t){let s=[ee.of(!0)];null==e.state.field(te,!1)&&s.push(b.appendConfig.of([te,ie])),e.dispatch({effects:s}),t=i(e,X)}return t&&t.dom.querySelector("input").select(),!0}},{key:"Mod-d",run:({state:t,dispatch:i})=>{let{ranges:s}=t.selection;if(s.some(e=>e.from===e.to))return(({state:e,dispatch:t})=>{let{selection:i}=e,s=k.create(i.ranges.map(t=>e.wordAt(t.head)||k.cursor(t.head)),i.mainIndex);return!s.eq(i)&&(t(e.update({selection:s})),!0)})({state:t,dispatch:i});let n=t.sliceDoc(s[0].from,s[0].to);if(t.selection.ranges.some(e=>t.sliceDoc(e.from,e.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 N(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 N(e.doc,t,0,Math.max(0,s[s.length-1].from-1)),i=!0}}(t,n);return!!o&&(i(t.update({selection:t.selection.addRange(k.range(o.from,o.to),!1),effects:e.scrollIntoView(o.to)})),!0)},preventDefault:!0}];class Te{constructor(e){this.view=e;let t=this.query=e.state.field(ke).query.spec;function i(e,t,i){return o("button",{class:"cm-button",name:e,onclick:t,type:"button"},i)}this.commit=this.commit.bind(this),this.searchField=o("input",{value:t.search,placeholder:Be(e,"Find"),"aria-label":Be(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=o("input",{value:t.replace,placeholder:Be(e,"Replace"),"aria-label":Be(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=o("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=o("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=o("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit}),this.dom=o("div",{onkeydown:e=>this.keydown(e),class:"cm-search"},[this.searchField,i("next",()=>qe(e),[Be(e,"next")]),i("prev",()=>Ae(e),[Be(e,"previous")]),i("select",()=>Re(e),[Be(e,"all")]),o("label",null,[this.caseField,Be(e,"match case")]),o("label",null,[this.reField,Be(e,"regexp")]),o("label",null,[this.wordField,Be(e,"by word")]),...e.state.readOnly?[]:[o("br"),this.replaceField,i("replace",()=>De(e),[Be(e,"replace")]),i("replaceAll",()=>We(e),[Be(e,"replace all")])],o("button",{name:"close",onclick:()=>Oe(e),"aria-label":Be(e,"close"),type:"button"},["×"])])}commit(){let e=new de({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:be.of(e)}))}keydown(e){r(this.view,e,"search-panel")?e.preventDefault():13==e.keyCode&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?Ae:qe)(this.view)):13==e.keyCode&&e.target==this.replaceField&&(e.preventDefault(),De(this.view))}update(e){for(let t of e.transactions)for(let e of t.effects)e.is(be)&&!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(he).top}}function Be(e,t){return e.state.phrase(t)}const je=30,_e=/[\s\.,:;?!]/;function Ve(t,{from:i,to:s}){let n=t.state.doc.lineAt(i),o=t.state.doc.lineAt(s).to,r=Math.max(n.from,i-je),l=Math.min(o,s+je),a=t.state.sliceDoc(r,l);if(r!=n.from)for(let e=0;e<je;e++)if(!_e.test(a[e+1])&&_e.test(a[e])){a=a.slice(e);break}if(l!=o)for(let e=a.length-1;e>a.length-je;e--)if(!_e.test(a[e-1])&&_e.test(a[e])){a=a.slice(0,e);break}return e.announce.of(`${t.state.phrase("current match")}. ${a} ${t.state.phrase("on line")} ${n.number}.`)}const He=e.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"}}),Ne=[ke,w.low(Ce),He];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,t,i){let n=i.facet(nt).markerFilter;n&&(e=n(e,i));let o=e.slice().sort((e,t)=>e.from-t.from||e.to-t.to),r=new R,l=[],a=0;for(let e=0;;){let t,n,c=e==o.length?null:o[e];if(!c&&!l.length)break;for(l.length?(t=a,n=l.reduce((e,t)=>Math.min(e,t.to),c&&c.from>t?c.from:1e8)):(t=c.from,n=c.to,l.push(c),e++);e<o.length;){let i=o[e];if(i.from!=t||!(i.to>i.from||i.to==t)){n=Math.min(i.from,n);break}l.push(i),e++,n=Math.min(i.to,n)}let h=ft(l);if(l.some(e=>e.from==e.to||e.from==e.to-1&&i.doc.lineAt(e.from).to==e.from))r.add(t,t,s.widget({widget:new lt(h),diagnostics:l.slice()}));else{let e=l.reduce((e,t)=>t.markClass?e+" "+t.markClass:e,"");r.add(t,n,s.mark({class:"cm-lintRange cm-lintRange-"+h+e,diagnostics:l.slice(),inclusiveEnd:l.some(e=>e.to>n)}))}a=n;for(let e=0;e<l.length;e++)l[e].to<=a&&l.splice(e--,1)}let c=r.finish();return new Qe(c,t,Ue(c))}}function Ue(e,t=null,i=0){let s=null;return e.between(i,1e9,(e,i,{spec:n})=>{if(!(t&&n.diagnostics.indexOf(t)<0))if(s){if(n.diagnostics.indexOf(s.diagnostic)<0)return!1;s=new Ke(s.from,i,s.diagnostic)}else s=new Ke(e,i,t||n.diagnostics[0])}),s}const Ge=b.define(),Ye=b.define(),Ze=b.define(),Je=x.define({create:()=>new Qe(s.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=Ue(i,e.selected.diagnostic,n)||Ue(i,null,n)}!i.size&&n&&t.state.facet(nt).autoPanel&&(n=null),e=new Qe(i,n,s)}for(let i of t.effects)if(i.is(Ge)){let s=t.state.facet(nt).autoPanel?i.value.length?ct.open:null:e.panel;e=Qe.init(i.value,s,t.state)}else i.is(Ye)?e=new Qe(e.diagnostics,i.value?ct.open:null,e.selected):i.is(Ze)&&(e=new Qe(e.diagnostics,e.panel,i.value));return e},provide:t=>[n.from(t,e=>e.panel),e.decorations.from(t,e=>e.diagnostics)]}),Xe=s.mark({class:"cm-lintRange cm-lintRange-active"});function et(e,t,i){let s,{diagnostics:n}=e.state.field(Je),o=-1,r=-1;n.between(t-(i<0?1:0),t+(i>0?1:0),(e,n,{spec:l})=>{if(t>=e&&t<=n&&(e==n||(t>e||i>0)&&(t<n||i<0)))return s=l.diagnostics,o=e,r=n,!1});let l=e.state.facet(nt).tooltipFilter;return s&&l&&(s=l(s,e.state)),s?{pos:o,end:r,above:e.state.doc.lineAt(o).to<r,create:()=>({dom:tt(e,s)})}:null}function tt(e,t){return o("ul",{class:"cm-tooltip-lint"},t.map(t=>rt(e,t,!1)))}const it=e=>{let t=e.state.field(Je,!1);return!(!t||!t.panel)&&(e.dispatch({effects:Ye.of(!1)}),!0)},st=[{key:"Mod-Shift-m",run:e=>{let t=e.state.field(Je,!1);var s,n;t&&t.panel||e.dispatch({effects:(s=e.state,n=[Ye.of(!0)],s.field(Je,!1)?n:n.concat(b.appendConfig.of(mt)))});let o=i(e,ct.open);return o&&o.dom.querySelector(".cm-panel-lint ul").focus(),!0},preventDefault:!0},{key:"F8",run:e=>{let t=e.state.field(Je,!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)}}],nt=y.define({combine:e=>Object.assign({sources:e.map(e=>e.source).filter(e=>null!=e)},M(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 ot(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 rt(e,t,i){var s;let n=i?ot(t.actions):[];return o("li",{class:"cm-diagnostic cm-diagnostic-"+t.severity},o("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 r=!1,l=s=>{if(s.preventDefault(),r)return;r=!0;let n=Ue(e.state.field(Je).diagnostics,t);n&&i.apply(e,n.from,n.to)},{name:a}=i,c=n[s]?a.indexOf(n[s]):-1,h=c<0?a:[a.slice(0,c),o("u",a.slice(c,c+1)),a.slice(c+1)];return o("button",{type:"button",class:"cm-diagnosticAction",onclick:l,onmousedown:l,"aria-label":` Action: ${a}${c<0?"":` (access key "${n[s]})"`}.`},h)}),t.source&&o("div",{class:"cm-diagnosticSource"},t.source))}class lt extends a{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return o("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class at{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(4294967295*Math.random()).toString(16),this.dom=rt(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class ct{constructor(e){this.view=e,this.items=[];this.list=o("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:t=>{if(27==t.keyCode)it(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=ot(i.actions);for(let n=0;n<s.length;n++)if(s[n].toUpperCase().charCodeAt(0)==t.keyCode){let t=Ue(this.view.state.field(Je).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=o("div",{class:"cm-panel-lint"},this.list,o("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>it(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Je).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(Je),i=0,s=!1,n=null,o=new Set;for(e.between(0,this.view.state.doc.length,(e,r,{spec:l})=>{for(let e of l.diagnostics){if(o.has(e))continue;o.add(e);let r,l=-1;for(let t=i;t<this.items.length;t++)if(this.items[t].diagnostic==e){l=t;break}l<0?(r=new at(this.view,e),this.items.splice(i,0,r),s=!0):(r=this.items[l],l>i&&(this.items.splice(i,l-i),s=!0)),t&&r.diagnostic==t.diagnostic?r.dom.hasAttribute("aria-selected")||(r.dom.setAttribute("aria-selected","true"),n=r):r.dom.hasAttribute("aria-selected")&&r.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 at(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=Ue(this.view.state.field(Je).diagnostics,this.items[e].diagnostic);t&&this.view.dispatch({selection:{anchor:t.from,head:t.to},scrollIntoView:!0,effects:Ze.of(t)})}static open(e){return new ct(e)}}function ht(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 dt=e.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:ht("#d11")},".cm-lintRange-warning":{backgroundImage:ht("orange")},".cm-lintRange-info":{backgroundImage:ht("#999")},".cm-lintRange-hint":{backgroundImage:ht("#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}}});function ut(e){return"error"==e?4:"warning"==e?3:"info"==e?2:1}function ft(e){let t="hint",i=1;for(let s of e){let e=ut(s.severity);e>i&&(i=e,t=s.severity)}return t}const mt=[Je,e.decorations.compute([Je],e=>{let{selected:t,panel:i}=e.field(Je);return t&&i&&t.from!=t.to?s.set([Xe.range(t.from,t.to)]):s.none}),l(et,{hideOn:function(e,t){let i=t.pos,s=t.end||i,n=e.state.facet(nt).hideOn(e,i,s);if(null!=n)return n;let o=e.startState.doc.lineAt(t.pos);return!(!e.effects.some(e=>e.is(Ge))&&!e.changes.touchesRange(o.from,Math.max(o.to,s)))}}),dt],pt=(()=>[c(),h(),d(),O(),W(),u(),f(),A.allowMultipleSelections.of(!0),F(),I(E,{fallback:!0}),P(),B(),j(),m(),p(),g(),[ce,ae],v.of([..._,...z,...ze,...T,...$,...V,...st])])(),gt=(()=>[d(),O(),u(),I(E,{fallback:!0}),v.of([...z,...T])])();export{e as EditorView,pt as basicSetup,gt as minimalSetup};
2
- //# sourceMappingURL=codemirror-BL6UELQn.js.map