code-battles 1.7.11 → 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 (109) hide show
  1. package/dist/cjs/index.js +8 -8
  2. package/dist/cjs/types/components/ResultWinnerChart.d.ts +2 -1
  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 +31 -18
  7. package/dist/code_battles/utilities.py +7 -7
  8. package/dist/esm/index.js +8 -8
  9. package/dist/esm/types/components/ResultWinnerChart.d.ts +2 -1
  10. package/dist/pyscript/{codemirror-BL6UELQn.js → codemirror-7OB423u7.js} +2 -2
  11. package/dist/pyscript/{codemirror-BL6UELQn.js.map → codemirror-7OB423u7.js.map} +1 -1
  12. package/dist/pyscript/{codemirror_commands-CkvdNQxZ.js → codemirror_commands-DboG9iWt.js} +2 -2
  13. package/dist/pyscript/{codemirror_commands-CkvdNQxZ.js.map → codemirror_commands-DboG9iWt.js.map} +1 -1
  14. package/dist/pyscript/{codemirror_lang-python-B9xSeck3.js → codemirror_lang-python-B1HhJPn9.js} +2 -2
  15. package/dist/pyscript/{codemirror_lang-python-B9xSeck3.js.map → codemirror_lang-python-B1HhJPn9.js.map} +1 -1
  16. package/dist/pyscript/{codemirror_language-bz5_3ooB.js → codemirror_language-BZEymLIM.js} +2 -2
  17. package/dist/pyscript/{codemirror_language-bz5_3ooB.js.map → codemirror_language-BZEymLIM.js.map} +1 -1
  18. package/dist/pyscript/codemirror_state-BIAL8JKm.js.map +1 -1
  19. package/dist/pyscript/codemirror_view-B-yd5KcV.js +2 -0
  20. package/dist/pyscript/codemirror_view-B-yd5KcV.js.map +1 -0
  21. package/dist/pyscript/core-BL6RO8cs.js +4 -0
  22. package/dist/pyscript/core-BL6RO8cs.js.map +1 -0
  23. package/dist/pyscript/core.js +1 -1
  24. package/dist/pyscript/{deprecations-manager-B1bDno27.js → deprecations-manager-D1JCaoik.js} +2 -2
  25. package/dist/pyscript/{deprecations-manager-B1bDno27.js.map → deprecations-manager-D1JCaoik.js.map} +1 -1
  26. package/dist/pyscript/{donkey-Dh8cjx4z.js → donkey-CM92-SJF.js} +2 -2
  27. package/dist/pyscript/{donkey-Dh8cjx4z.js.map → donkey-CM92-SJF.js.map} +1 -1
  28. package/dist/pyscript/{error-X7dWXDEj.js → error-BkHvnmyu.js} +2 -2
  29. package/dist/pyscript/{error-X7dWXDEj.js.map → error-BkHvnmyu.js.map} +1 -1
  30. package/dist/pyscript/{index-1itZOIGg.js → index-DyZ04Mez.js} +2 -2
  31. package/dist/pyscript/{index-1itZOIGg.js.map → index-DyZ04Mez.js.map} +1 -1
  32. package/dist/pyscript/{mpy-CJb45DuK.js → mpy-61tR9ZQz.js} +2 -2
  33. package/dist/pyscript/{mpy-CJb45DuK.js.map → mpy-61tR9ZQz.js.map} +1 -1
  34. package/dist/pyscript/{py-M84r6p_z.js → py-CzEKg5Vq.js} +2 -2
  35. package/dist/pyscript/{py-M84r6p_z.js.map → py-CzEKg5Vq.js.map} +1 -1
  36. package/dist/pyscript/py-editor-C_VolMVE.js +2 -0
  37. package/dist/pyscript/py-editor-C_VolMVE.js.map +1 -0
  38. package/dist/pyscript/{py-game-DzlIl7pw.js → py-game-TYE6CZwh.js} +2 -2
  39. package/dist/pyscript/{py-game-DzlIl7pw.js.map → py-game-TYE6CZwh.js.map} +1 -1
  40. package/dist/pyscript/{py-terminal-CH3PYUc-.js → py-terminal-Bjixd_gx.js} +2 -2
  41. package/dist/pyscript/{py-terminal-CH3PYUc-.js.map → py-terminal-Bjixd_gx.js.map} +1 -1
  42. package/dist/pyscript/storage.js.map +1 -1
  43. package/dist/pyscript/toml-BK2RWy-G.js.map +1 -1
  44. package/dist/pyscript/xterm-DrSYbXEP.js.map +1 -1
  45. package/dist/pyscript/xterm-readline-CYfUpnbV.js.map +1 -1
  46. package/dist/pyscript/xterm.css +1 -1
  47. package/dist/pyscript/xterm_addon-fit--gyF3PcZ.js.map +1 -1
  48. package/dist/pyscript/xterm_addon-web-links-D95xh2la.js.map +1 -1
  49. package/dist/pyscript/zip-BU7PvvcW.js +2 -0
  50. package/dist/pyscript/zip-BU7PvvcW.js.map +1 -0
  51. package/package.json +2 -2
  52. package/dist/code_battles/js.pyi +0 -136
  53. package/dist/code_battles/pyodide/ffi/__init__.pyi +0 -2
  54. package/dist/code_battles/pyscript/__init__.pyi +0 -4
  55. package/dist/code_battles/pyscript/ffi/__init__.pyi +0 -3
  56. package/dist/pyscript/codemirror-eKulCBrd.js +0 -2
  57. package/dist/pyscript/codemirror-eKulCBrd.js.map +0 -1
  58. package/dist/pyscript/codemirror_commands-BVu_0Pnj.js +0 -2
  59. package/dist/pyscript/codemirror_commands-BVu_0Pnj.js.map +0 -1
  60. package/dist/pyscript/codemirror_lang-python-a2LxSo5G.js +0 -2
  61. package/dist/pyscript/codemirror_lang-python-a2LxSo5G.js.map +0 -1
  62. package/dist/pyscript/codemirror_language-_2pXlKJ9.js +0 -2
  63. package/dist/pyscript/codemirror_language-_2pXlKJ9.js.map +0 -1
  64. package/dist/pyscript/codemirror_state-1UkzIAPK.js +0 -2
  65. package/dist/pyscript/codemirror_state-1UkzIAPK.js.map +0 -1
  66. package/dist/pyscript/codemirror_view-DMW9kQlJ.js +0 -2
  67. package/dist/pyscript/codemirror_view-DMW9kQlJ.js.map +0 -1
  68. package/dist/pyscript/codemirror_view-qh1qPB30.js +0 -2
  69. package/dist/pyscript/codemirror_view-qh1qPB30.js.map +0 -1
  70. package/dist/pyscript/core-3crqT3rt.js +0 -4
  71. package/dist/pyscript/core-3crqT3rt.js.map +0 -1
  72. package/dist/pyscript/core-DezwbZpG.js +0 -4
  73. package/dist/pyscript/core-DezwbZpG.js.map +0 -1
  74. package/dist/pyscript/deprecations-manager-DK3ieDyl.js +0 -2
  75. package/dist/pyscript/deprecations-manager-DK3ieDyl.js.map +0 -1
  76. package/dist/pyscript/donkey-DNl0ASkM.js +0 -2
  77. package/dist/pyscript/donkey-DNl0ASkM.js.map +0 -1
  78. package/dist/pyscript/error-DmRE4Y-7.js +0 -2
  79. package/dist/pyscript/error-DmRE4Y-7.js.map +0 -1
  80. package/dist/pyscript/index-DkgvWIf-.js +0 -2
  81. package/dist/pyscript/index-DkgvWIf-.js.map +0 -1
  82. package/dist/pyscript/mpy-BoY0tVRD.js +0 -2
  83. package/dist/pyscript/mpy-BoY0tVRD.js.map +0 -1
  84. package/dist/pyscript/py-DsQqgZuM.js +0 -2
  85. package/dist/pyscript/py-DsQqgZuM.js.map +0 -1
  86. package/dist/pyscript/py-editor-DZkG_or6.js +0 -2
  87. package/dist/pyscript/py-editor-DZkG_or6.js.map +0 -1
  88. package/dist/pyscript/py-editor-Dpcrdhky.js +0 -2
  89. package/dist/pyscript/py-editor-Dpcrdhky.js.map +0 -1
  90. package/dist/pyscript/py-game-D0Z4YnzZ.js +0 -2
  91. package/dist/pyscript/py-game-D0Z4YnzZ.js.map +0 -1
  92. package/dist/pyscript/py-terminal-DYHK7LJ0.js +0 -2
  93. package/dist/pyscript/py-terminal-DYHK7LJ0.js.map +0 -1
  94. package/dist/pyscript/toml-BLBSZ43A.js +0 -3
  95. package/dist/pyscript/toml-BLBSZ43A.js.map +0 -1
  96. package/dist/pyscript/toml-DiUM0_qs.js +0 -3
  97. package/dist/pyscript/toml-DiUM0_qs.js.map +0 -1
  98. package/dist/pyscript/xterm-CVv2fC4I.js +0 -2
  99. package/dist/pyscript/xterm-CVv2fC4I.js.map +0 -1
  100. package/dist/pyscript/xterm-readline-e8QPhSrm.js +0 -2
  101. package/dist/pyscript/xterm-readline-e8QPhSrm.js.map +0 -1
  102. package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js +0 -2
  103. package/dist/pyscript/xterm_addon-web-links-Cnej-nJ6.js.map +0 -1
  104. package/dist/pyscript/zip-BKVoQflw.js +0 -2
  105. package/dist/pyscript/zip-BKVoQflw.js.map +0 -1
  106. package/dist/pyscript/zip-D13-hp9W.js +0 -2
  107. package/dist/pyscript/zip-D13-hp9W.js.map +0 -1
  108. /package/dist/cjs/types/components/{ResultStaticsTable.d.ts → ResultStatisticsTable.d.ts} +0 -0
  109. /package/dist/esm/types/components/{ResultStaticsTable.d.ts → ResultStatisticsTable.d.ts} +0 -0
package/dist/cjs/index.js CHANGED
@@ -2494,7 +2494,7 @@ const PickBotBlock = () => {
2494
2494
  } })));
2495
2495
  };
2496
2496
 
2497
- const ResultWinnerChart = ({ results: currentResults }) => {
2497
+ const ResultWinnerChart = ({ results: currentResults, players, }) => {
2498
2498
  var _a;
2499
2499
  const [results] = useLocalStorage({
2500
2500
  key: "Results",
@@ -2518,7 +2518,7 @@ const ResultWinnerChart = ({ results: currentResults }) => {
2518
2518
  }
2519
2519
  const winCounts = {};
2520
2520
  for (const result of currentResults) {
2521
- const winner = round.players[result.places[0]];
2521
+ const winner = (players !== null && players !== void 0 ? players : round.players)[result.places[0]];
2522
2522
  if (!winCounts[winner]) {
2523
2523
  winCounts[winner] = 1;
2524
2524
  }
@@ -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);
@@ -2687,7 +2686,7 @@ const RunSimulationBlock = () => {
2687
2686
  "Remaining Simulations: ",
2688
2687
  remaining)),
2689
2688
  React.createElement("p", { style: { textAlign: "center", display: "none", marginTop: 10 }, id: "noui-progress" }),
2690
- React.createElement(ResultWinnerChart, { results: currentResults }),
2689
+ React.createElement(ResultWinnerChart, { results: currentResults, players: playerBots }),
2691
2690
  React.createElement(dropzone.Dropzone, { mt: "xs", multiple: false, onDrop: (files) => __awaiter(void 0, void 0, void 0, function* () {
2692
2691
  if (files.length !== 1) {
2693
2692
  return;
@@ -2983,7 +2982,7 @@ const ResultStatisticsTable = () => {
2983
2982
  key: "Current Round",
2984
2983
  defaultValue: 0,
2985
2984
  });
2986
- const navigate = reactRouterDom.useNavigate();
2985
+ reactRouterDom.useNavigate();
2987
2986
  const round = rounds[currentRound];
2988
2987
  if (!round) {
2989
2988
  return React.createElement(React.Fragment, null);
@@ -2993,6 +2992,7 @@ const ResultStatisticsTable = () => {
2993
2992
  if (!roundResults) {
2994
2993
  return React.createElement(React.Fragment, null);
2995
2994
  }
2995
+ const uniqueRoundResults = roundResults.filter((result, index, self) => self.findIndex((r) => r.seed === result.seed) === index);
2996
2996
  return (React.createElement("div", { style: {
2997
2997
  display: "flex",
2998
2998
  flexDirection: "column",
@@ -3001,12 +3001,12 @@ const ResultStatisticsTable = () => {
3001
3001
  } },
3002
3002
  React.createElement(DataTable, { tableName: "Results", data: {
3003
3003
  head: ["Seed"].concat(statistics),
3004
- body: roundResults.map((result) => [result.seed].concat(statistics.map((statistic) => { var _a; return ((_a = result === null || result === void 0 ? void 0 : result.statistics) !== null && _a !== void 0 ? _a : {})[statistic].toString(); }))),
3004
+ body: uniqueRoundResults.map((result) => [result.seed].concat(statistics.map((statistic) => { var _a; return ((_a = result === null || result === void 0 ? void 0 : result.statistics) !== null && _a !== void 0 ? _a : {})[statistic].toString(); }))),
3005
3005
  }, renderValue: (rowIndex, columnName, value) => {
3006
3006
  if (columnName === "Seed") {
3007
- return (React.createElement(core.Button, { leftSection: React.createElement("i", { className: "fa-solid fa-play" }), onClick: () => navigate(`/simulation/${round.players.map(encodeURIComponent).join(",")}?seed=${value}&${Object.keys(round.parameters)
3007
+ return (React.createElement(core.Button, { component: "a", leftSection: React.createElement("i", { className: "fa-solid fa-play" }), href: `/simulation/${round.players.map(encodeURIComponent).join(",")}?seed=${value}&${Object.keys(round.parameters)
3008
3008
  .map((p) => `${p}=${encodeURIComponent(round.parameters[p])}`)
3009
- .join("&")}`) }, "Play"));
3009
+ .join("&")}` }, "Play"));
3010
3010
  }
3011
3011
  return React.createElement(React.Fragment, { key: rowIndex }, value);
3012
3012
  } })));
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- declare const ResultWinnerChart: ({ results: currentResults }: {
2
+ declare const ResultWinnerChart: ({ results: currentResults, players, }: {
3
3
  results?: any;
4
+ players?: string[];
4
5
  }) => React.JSX.Element;
5
6
  export default ResultWinnerChart;
@@ -12,6 +12,7 @@ import sys
12
12
  import time
13
13
  import traceback
14
14
  import typing
15
+ from contextlib import contextmanager
15
16
  from dataclasses import dataclass
16
17
  from random import Random
17
18
  from typing import Any, Dict, Generic, List, Optional, Set, Tuple, TypeVar, Union
@@ -326,7 +327,7 @@ class CodeBattles(
326
327
  def download_image(self, url: str) -> "asyncio.Future[js.Image]":
327
328
  from js import Image
328
329
 
329
- result = asyncio.Future()
330
+ result = asyncio.Future[Image]()
330
331
  image = Image.new()
331
332
  image.onload = lambda _: result.set_result(image)
332
333
  image.src = url
@@ -343,7 +344,7 @@ class CodeBattles(
343
344
  from js import Image
344
345
 
345
346
  remaining_images: List[str] = []
346
- result = asyncio.Future()
347
+ result = asyncio.Future[Dict[str, Image]]()
347
348
 
348
349
  images: Dict[str, Image] = {}
349
350
  remaining = len(sources)
@@ -505,7 +506,7 @@ class CodeBattles(
505
506
  if sound not in self._sounds:
506
507
  self._sounds[sound] = Audio.new(self.configure_sound_url(sound))
507
508
 
508
- volume = window.localStorage.getItem("Volume") or 0
509
+ volume = float(window.localStorage.getItem("Volume") or "0")
509
510
  s = self._sounds[sound].cloneNode(True)
510
511
  s.volume = volume
511
512
 
@@ -560,8 +561,8 @@ class CodeBattles(
560
561
  ):
561
562
  if seed is None:
562
563
  seed = Random().randint(0, 2**128)
563
- self._logs = []
564
- self._alerts = []
564
+ self._logs: List[Any] = []
565
+ self._alerts: List[Any] = []
565
566
  self._decisions = []
566
567
  self._breakpoints = set()
567
568
  self._decision_index = 0
@@ -585,7 +586,7 @@ class CodeBattles(
585
586
 
586
587
  def _run_webworker_simulation(
587
588
  self,
588
- parameters: Dict[str, str],
589
+ parameters_str: str,
589
590
  player_names_str: str,
590
591
  player_codes_str: str,
591
592
  seed: Optional[int] = None,
@@ -593,12 +594,12 @@ class CodeBattles(
593
594
  from pyscript import sync
594
595
 
595
596
  # JS to Python
596
- parameters = json.loads(parameters)
597
+ parameters: Dict[str, str] = json.loads(parameters_str)
597
598
  player_names = json.loads(player_names_str)
598
599
  player_codes = json.loads(player_codes_str)
599
600
 
600
601
  self.parameters = parameters
601
- self.map = parameters.get("map")
602
+ self.map = parameters["map"]
602
603
  self.player_names = player_names
603
604
  self.background = True
604
605
  self.console_visible = False
@@ -611,10 +612,9 @@ class CodeBattles(
611
612
  decisions = self._make_decisions()
612
613
  logs = self._logs
613
614
  alerts = self._alerts
614
- log = self.log
615
- self.log = lambda *args, **kwargs: None
616
- self.apply_decisions(decisions)
617
- self.log = log
615
+
616
+ with self._without_log():
617
+ self.apply_decisions(decisions)
618
618
 
619
619
  sync.update_step(
620
620
  base64.b64encode(decisions).decode(),
@@ -627,6 +627,17 @@ class CodeBattles(
627
627
  if not self.over:
628
628
  self.step += 1
629
629
 
630
+ @contextmanager
631
+ def _without_log(self):
632
+ log = getattr(self, "log")
633
+
634
+ def do_nothing(*args, **kwargs):
635
+ pass
636
+
637
+ setattr(self, "log", do_nothing)
638
+ yield
639
+ setattr(self, "log", log)
640
+
630
641
  def _run_local_simulation(self):
631
642
  command = sys.argv[1]
632
643
  output_file = None
@@ -741,7 +752,7 @@ class CodeBattles(
741
752
  await asyncio.sleep(0.01)
742
753
  self._initialize()
743
754
  self.parameters = simulation.parameters
744
- self.map = self.parameters.get("map")
755
+ self.map = self.parameters["map"]
745
756
  self.map_image = await download_image(
746
757
  self.configure_map_image_url(self.map)
747
758
  )
@@ -787,7 +798,7 @@ class CodeBattles(
787
798
  # JS to Python
788
799
  player_names = [str(x) for x in player_names]
789
800
  player_codes = [str(x) for x in player_codes]
790
- parameters = parameters.to_py()
801
+ parameters = parameters.to_py() # type: ignore
791
802
 
792
803
  try:
793
804
  render_status = document.getElementById("render-status")
@@ -795,7 +806,7 @@ class CodeBattles(
795
806
  render_status.textContent = "Rendering: Initializing..."
796
807
 
797
808
  self.parameters = parameters
798
- self.map = parameters.get("map")
809
+ self.map = parameters["map"]
799
810
  self.player_names = player_names
800
811
  self.map_image = await download_image(
801
812
  self.configure_map_image_url(self.map)
@@ -975,10 +986,12 @@ class CodeBattles(
975
986
  else line
976
987
  for line in api_code.splitlines()
977
988
  ]
978
- lines = "\n".join(lines)
979
- lines = lines.replace("class MyBot", f"class Player{index}Bot")
989
+ player_code = "\n".join(lines)
990
+ player_code = player_code.replace(
991
+ "class MyBot", f"class Player{index}Bot"
992
+ )
980
993
  try:
981
- exec(lines, player_globals[index])
994
+ exec(player_code, player_globals[index])
982
995
  exec(
983
996
  f"player_api = Player{index}Bot(context)",
984
997
  player_globals[index],
@@ -52,7 +52,7 @@ class Alignment(Enum):
52
52
  def download_image(src: str):
53
53
  from js import Image
54
54
 
55
- result = asyncio.Future()
55
+ result = asyncio.Future[Image]()
56
56
  image = Image.new()
57
57
  image.onload = lambda _: result.set_result(image)
58
58
  image.src = src
@@ -173,8 +173,8 @@ class GameCanvas:
173
173
  def draw_element(
174
174
  self,
175
175
  image: "js.Image",
176
- x: int,
177
- y: int,
176
+ x: float,
177
+ y: float,
178
178
  width: int,
179
179
  board_index=0,
180
180
  direction: Union[float, None] = None,
@@ -252,10 +252,10 @@ class GameCanvas:
252
252
 
253
253
  def draw_rectangle(
254
254
  self,
255
- start_x: int,
256
- start_y: int,
257
- width: int,
258
- height: int,
255
+ start_x: float,
256
+ start_y: float,
257
+ width: float,
258
+ height: float,
259
259
  fill="black",
260
260
  stroke="transparent",
261
261
  stroke_width=2,
package/dist/esm/index.js CHANGED
@@ -2492,7 +2492,7 @@ const PickBotBlock = () => {
2492
2492
  } })));
2493
2493
  };
2494
2494
 
2495
- const ResultWinnerChart = ({ results: currentResults }) => {
2495
+ const ResultWinnerChart = ({ results: currentResults, players, }) => {
2496
2496
  var _a;
2497
2497
  const [results] = useLocalStorage({
2498
2498
  key: "Results",
@@ -2516,7 +2516,7 @@ const ResultWinnerChart = ({ results: currentResults }) => {
2516
2516
  }
2517
2517
  const winCounts = {};
2518
2518
  for (const result of currentResults) {
2519
- const winner = round.players[result.places[0]];
2519
+ const winner = (players !== null && players !== void 0 ? players : round.players)[result.places[0]];
2520
2520
  if (!winCounts[winner]) {
2521
2521
  winCounts[winner] = 1;
2522
2522
  }
@@ -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);
@@ -2685,7 +2684,7 @@ const RunSimulationBlock = () => {
2685
2684
  "Remaining Simulations: ",
2686
2685
  remaining)),
2687
2686
  React.createElement("p", { style: { textAlign: "center", display: "none", marginTop: 10 }, id: "noui-progress" }),
2688
- React.createElement(ResultWinnerChart, { results: currentResults }),
2687
+ React.createElement(ResultWinnerChart, { results: currentResults, players: playerBots }),
2689
2688
  React.createElement(Dropzone, { mt: "xs", multiple: false, onDrop: (files) => __awaiter(void 0, void 0, void 0, function* () {
2690
2689
  if (files.length !== 1) {
2691
2690
  return;
@@ -2981,7 +2980,7 @@ const ResultStatisticsTable = () => {
2981
2980
  key: "Current Round",
2982
2981
  defaultValue: 0,
2983
2982
  });
2984
- const navigate = useNavigate();
2983
+ useNavigate();
2985
2984
  const round = rounds[currentRound];
2986
2985
  if (!round) {
2987
2986
  return React.createElement(React.Fragment, null);
@@ -2991,6 +2990,7 @@ const ResultStatisticsTable = () => {
2991
2990
  if (!roundResults) {
2992
2991
  return React.createElement(React.Fragment, null);
2993
2992
  }
2993
+ const uniqueRoundResults = roundResults.filter((result, index, self) => self.findIndex((r) => r.seed === result.seed) === index);
2994
2994
  return (React.createElement("div", { style: {
2995
2995
  display: "flex",
2996
2996
  flexDirection: "column",
@@ -2999,12 +2999,12 @@ const ResultStatisticsTable = () => {
2999
2999
  } },
3000
3000
  React.createElement(DataTable, { tableName: "Results", data: {
3001
3001
  head: ["Seed"].concat(statistics),
3002
- body: roundResults.map((result) => [result.seed].concat(statistics.map((statistic) => { var _a; return ((_a = result === null || result === void 0 ? void 0 : result.statistics) !== null && _a !== void 0 ? _a : {})[statistic].toString(); }))),
3002
+ body: uniqueRoundResults.map((result) => [result.seed].concat(statistics.map((statistic) => { var _a; return ((_a = result === null || result === void 0 ? void 0 : result.statistics) !== null && _a !== void 0 ? _a : {})[statistic].toString(); }))),
3003
3003
  }, renderValue: (rowIndex, columnName, value) => {
3004
3004
  if (columnName === "Seed") {
3005
- return (React.createElement(Button, { leftSection: React.createElement("i", { className: "fa-solid fa-play" }), onClick: () => navigate(`/simulation/${round.players.map(encodeURIComponent).join(",")}?seed=${value}&${Object.keys(round.parameters)
3005
+ return (React.createElement(Button, { component: "a", leftSection: React.createElement("i", { className: "fa-solid fa-play" }), href: `/simulation/${round.players.map(encodeURIComponent).join(",")}?seed=${value}&${Object.keys(round.parameters)
3006
3006
  .map((p) => `${p}=${encodeURIComponent(round.parameters[p])}`)
3007
- .join("&")}`) }, "Play"));
3007
+ .join("&")}` }, "Play"));
3008
3008
  }
3009
3009
  return React.createElement(React.Fragment, { key: rowIndex }, value);
3010
3010
  } })));
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- declare const ResultWinnerChart: ({ results: currentResults }: {
2
+ declare const ResultWinnerChart: ({ results: currentResults, players, }: {
3
3
  results?: any;
4
+ players?: string[];
4
5
  }) => React.JSX.Element;
5
6
  export default ResultWinnerChart;
@@ -1,2 +1,2 @@
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
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-B-yd5KcV.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-BZEymLIM.js";import{history as O,defaultKeymap as z,historyKeymap as T}from"./codemirror_commands-DboG9iWt.js";import{c as B,a as j,b as _,d as V}from"./index-DyZ04Mez.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-7OB423u7.js.map