mongoku 2.4.4 → 2.4.5

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 (190) hide show
  1. package/build/client/_app/immutable/assets/0.CEIWAdGZ.css +1 -0
  2. package/build/client/_app/immutable/assets/0.CEIWAdGZ.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.CEIWAdGZ.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{CI_ovvBu.js → 3LgOwb59.js} +1 -1
  5. package/build/client/_app/immutable/chunks/3LgOwb59.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/3LgOwb59.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{0x2tqDge.js → BNF3TSWe.js} +1 -1
  8. package/build/client/_app/immutable/chunks/BNF3TSWe.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/BNF3TSWe.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/CH4IMlv6.js +4 -0
  11. package/build/client/_app/immutable/chunks/CH4IMlv6.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CH4IMlv6.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{DqFgKUuF.js → CMu1ND4u.js} +1 -1
  14. package/build/client/_app/immutable/chunks/CMu1ND4u.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/CMu1ND4u.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/CeBnCdu0.js +1 -0
  17. package/build/client/_app/immutable/chunks/CeBnCdu0.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/CeBnCdu0.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{m9KJhr2i.js → CrvogBCO.js} +1 -1
  20. package/build/client/_app/immutable/chunks/CrvogBCO.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/CrvogBCO.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/{SENhER8Y.js → DL_7eGCj.js} +6 -6
  23. package/build/client/_app/immutable/chunks/DL_7eGCj.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/DL_7eGCj.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/YVSmS-BO.js +1 -0
  26. package/build/client/_app/immutable/chunks/YVSmS-BO.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/YVSmS-BO.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/{app.6kvAGzFx.js → app.Bn63r6jq.js} +2 -2
  29. package/build/client/_app/immutable/entry/app.Bn63r6jq.js.br +0 -0
  30. package/build/client/_app/immutable/entry/app.Bn63r6jq.js.gz +0 -0
  31. package/build/client/_app/immutable/entry/start.D-zzQzHa.js +1 -0
  32. package/build/client/_app/immutable/entry/start.D-zzQzHa.js.br +2 -0
  33. package/build/client/_app/immutable/entry/start.D-zzQzHa.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/0._Ka7l4G7.js +1 -0
  35. package/build/client/_app/immutable/nodes/0._Ka7l4G7.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/0._Ka7l4G7.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{1.C6-lRSct.js → 1.C_RZUfKy.js} +1 -1
  38. package/build/client/_app/immutable/nodes/1.C_RZUfKy.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/1.C_RZUfKy.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/10.P_2uCVkV.js +3 -0
  41. package/build/client/_app/immutable/nodes/10.P_2uCVkV.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/10.P_2uCVkV.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{11.D6PMR4JE.js → 11.B9LD_pR3.js} +1 -1
  44. package/build/client/_app/immutable/nodes/11.B9LD_pR3.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/11.B9LD_pR3.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{12.BaG9yS23.js → 12.DtrR4t5w.js} +1 -1
  47. package/build/client/_app/immutable/nodes/12.DtrR4t5w.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/12.DtrR4t5w.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/{13.ClrBypIt.js → 13.BYagUX2D.js} +1 -1
  50. package/build/client/_app/immutable/nodes/13.BYagUX2D.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/13.BYagUX2D.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{7.C2cwruWu.js → 7.XwiZ31H4.js} +1 -1
  53. package/build/client/_app/immutable/nodes/7.XwiZ31H4.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/7.XwiZ31H4.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/8.Cgq8c1Pf.js +1 -0
  56. package/build/client/_app/immutable/nodes/8.Cgq8c1Pf.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/8.Cgq8c1Pf.js.gz +0 -0
  58. package/build/client/_app/immutable/nodes/9.ClN4Gbvd.js +2 -0
  59. package/build/client/_app/immutable/nodes/9.ClN4Gbvd.js.br +0 -0
  60. package/build/client/_app/immutable/nodes/9.ClN4Gbvd.js.gz +0 -0
  61. package/build/client/_app/version.json +1 -1
  62. package/build/client/_app/version.json.br +0 -0
  63. package/build/client/_app/version.json.gz +0 -0
  64. package/build/server/chunks/{0-5-SDX-d2.js → 0-DNH-F5x0.js} +4 -4
  65. package/build/server/chunks/{0-5-SDX-d2.js.map → 0-DNH-F5x0.js.map} +1 -1
  66. package/build/server/chunks/{1-Cck2Jrzo.js → 1-1_OQTf0e.js} +2 -2
  67. package/build/server/chunks/{1-Cck2Jrzo.js.map → 1-1_OQTf0e.js.map} +1 -1
  68. package/build/server/chunks/{10-BV4HPibI.js → 10-4E_aVzT4.js} +58 -36
  69. package/build/server/chunks/10-4E_aVzT4.js.map +1 -0
  70. package/build/server/chunks/{11-iazI-4Kb.js → 11-DTyCG8Xj.js} +3 -3
  71. package/build/server/chunks/{11-iazI-4Kb.js.map → 11-DTyCG8Xj.js.map} +1 -1
  72. package/build/server/chunks/{12-B0JxHwKO.js → 12-O3oSmD2o.js} +3 -3
  73. package/build/server/chunks/{12-B0JxHwKO.js.map → 12-O3oSmD2o.js.map} +1 -1
  74. package/build/server/chunks/{13-IcujVjLI.js → 13-Drp2sCYG.js} +3 -3
  75. package/build/server/chunks/{13-IcujVjLI.js.map → 13-Drp2sCYG.js.map} +1 -1
  76. package/build/server/chunks/{7-uVKBumqv.js → 7-DL7-ZmZ2.js} +3 -3
  77. package/build/server/chunks/{7-uVKBumqv.js.map → 7-DL7-ZmZ2.js.map} +1 -1
  78. package/build/server/chunks/{8-eWNgFGi6.js → 8-GUonP2Zy.js} +3 -3
  79. package/build/server/chunks/{8-eWNgFGi6.js.map → 8-GUonP2Zy.js.map} +1 -1
  80. package/build/server/chunks/{9-C8GLDx_s.js → 9-DQhrhu5o.js} +3 -3
  81. package/build/server/chunks/{9-C8GLDx_s.js.map → 9-DQhrhu5o.js.map} +1 -1
  82. package/build/server/chunks/{JsonValue-DiECF6Zd.js → JsonValue-DoGRvQnG.js} +3 -3
  83. package/build/server/chunks/{JsonValue-DiECF6Zd.js.map → JsonValue-DoGRvQnG.js.map} +1 -1
  84. package/build/server/chunks/{Panel-DEP08QXV.js → Panel-BHGtM9Vw.js} +2 -2
  85. package/build/server/chunks/{Panel-DEP08QXV.js.map → Panel-BHGtM9Vw.js.map} +1 -1
  86. package/build/server/chunks/{PrettyJson-ElzPxPF4.js → PrettyJson-Bnmo1PGg.js} +5 -5
  87. package/build/server/chunks/{PrettyJson-ElzPxPF4.js.map → PrettyJson-Bnmo1PGg.js.map} +1 -1
  88. package/build/server/chunks/{Tooltip-DK6Aok7l.js → Tooltip-DAE2mkm6.js} +2 -2
  89. package/build/server/chunks/{Tooltip-DK6Aok7l.js.map → Tooltip-DAE2mkm6.js.map} +1 -1
  90. package/build/server/chunks/TooltipTable-xo_OEG9c.js +64 -0
  91. package/build/server/chunks/TooltipTable-xo_OEG9c.js.map +1 -0
  92. package/build/server/chunks/{_layout.svelte-CCi6mq1k.js → _layout.svelte-Dji2JJ9X.js} +29 -20
  93. package/build/server/chunks/_layout.svelte-Dji2JJ9X.js.map +1 -0
  94. package/build/server/chunks/{_page.svelte-BvjNfjgw.js → _page.svelte-C4rGFSYL.js} +7 -7
  95. package/build/server/chunks/{_page.svelte-BvjNfjgw.js.map → _page.svelte-C4rGFSYL.js.map} +1 -1
  96. package/build/server/chunks/{_page.svelte-B4BL5PJR.js → _page.svelte-CJ5HzoD0.js} +4 -4
  97. package/build/server/chunks/{_page.svelte-B4BL5PJR.js.map → _page.svelte-CJ5HzoD0.js.map} +1 -1
  98. package/build/server/chunks/{_page.svelte-DJFPwyij.js → _page.svelte-ClvvVxpD.js} +101 -35
  99. package/build/server/chunks/_page.svelte-ClvvVxpD.js.map +1 -0
  100. package/build/server/chunks/{_page.svelte-DDe4hyAB.js → _page.svelte-D3jyb8d9.js} +6 -6
  101. package/build/server/chunks/{_page.svelte-DDe4hyAB.js.map → _page.svelte-D3jyb8d9.js.map} +1 -1
  102. package/build/server/chunks/{_page.svelte-BUheieJ5.js → _page.svelte-D9IvgJO5.js} +6 -6
  103. package/build/server/chunks/{_page.svelte-BUheieJ5.js.map → _page.svelte-D9IvgJO5.js.map} +1 -1
  104. package/build/server/chunks/{_page.svelte-DEe2Kbbw.js → _page.svelte-be8sxgGt.js} +6 -6
  105. package/build/server/chunks/{_page.svelte-DEe2Kbbw.js.map → _page.svelte-be8sxgGt.js.map} +1 -1
  106. package/build/server/chunks/{_page.svelte-Bj297hp1.js → _page.svelte-x1L5xjgQ.js} +6 -6
  107. package/build/server/chunks/{_page.svelte-Bj297hp1.js.map → _page.svelte-x1L5xjgQ.js.map} +1 -1
  108. package/build/server/chunks/{index2-DzKnqQNM.js → index2-eSFyMQpS.js} +2 -2
  109. package/build/server/chunks/{index2-DzKnqQNM.js.map → index2-eSFyMQpS.js.map} +1 -1
  110. package/build/server/chunks/{remote-xxtqbu-DBe3CqEJ.js → remote-xxtqbu-ETLGkdRu.js} +2 -2
  111. package/build/server/chunks/remote-xxtqbu-ETLGkdRu.js.map +1 -0
  112. package/build/server/chunks/{servers.remote-HDmNH7n4.js → servers.remote-CGies_Na.js} +85 -6
  113. package/build/server/chunks/servers.remote-CGies_Na.js.map +1 -0
  114. package/build/server/index.js +2 -2
  115. package/build/server/index.js.map +1 -1
  116. package/build/server/manifest.js +11 -11
  117. package/build/server/manifest.js.map +1 -1
  118. package/package.json +1 -1
  119. package/src/api/servers.remote.ts +91 -2
  120. package/src/app.css +5 -0
  121. package/src/lib/actions/clickOutside.ts +24 -0
  122. package/src/lib/components/Breadcrumbs.svelte +5 -19
  123. package/src/lib/components/SearchBox.svelte +161 -62
  124. package/src/lib/components/TooltipTable.svelte +4 -2
  125. package/src/lib/icons/IconChevronDown.svelte +20 -0
  126. package/src/lib/icons/IconCopy.svelte +21 -0
  127. package/src/lib/icons/IconEdit.svelte +21 -0
  128. package/src/lib/icons/IconPlus.svelte +20 -0
  129. package/src/lib/icons/IconSortReverse.svelte +23 -0
  130. package/src/lib/stores/breadcrumbs.svelte.ts +17 -0
  131. package/src/lib/types.ts +2 -0
  132. package/src/routes/+layout.svelte +12 -1
  133. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/+page.server.ts +67 -34
  134. package/src/routes/servers/[server]/databases/[database]/collections/[collection]/documents/+page.svelte +259 -44
  135. package/build/client/_app/immutable/assets/0.C-Y-CVnr.css +0 -1
  136. package/build/client/_app/immutable/assets/0.C-Y-CVnr.css.br +0 -0
  137. package/build/client/_app/immutable/assets/0.C-Y-CVnr.css.gz +0 -0
  138. package/build/client/_app/immutable/chunks/0x2tqDge.js.br +0 -0
  139. package/build/client/_app/immutable/chunks/0x2tqDge.js.gz +0 -0
  140. package/build/client/_app/immutable/chunks/CI_ovvBu.js.br +0 -0
  141. package/build/client/_app/immutable/chunks/CI_ovvBu.js.gz +0 -0
  142. package/build/client/_app/immutable/chunks/Cp0n7wR5.js +0 -4
  143. package/build/client/_app/immutable/chunks/Cp0n7wR5.js.br +0 -0
  144. package/build/client/_app/immutable/chunks/Cp0n7wR5.js.gz +0 -0
  145. package/build/client/_app/immutable/chunks/DqFgKUuF.js.br +0 -0
  146. package/build/client/_app/immutable/chunks/DqFgKUuF.js.gz +0 -0
  147. package/build/client/_app/immutable/chunks/MW_nrxc3.js +0 -1
  148. package/build/client/_app/immutable/chunks/MW_nrxc3.js.br +0 -0
  149. package/build/client/_app/immutable/chunks/MW_nrxc3.js.gz +0 -0
  150. package/build/client/_app/immutable/chunks/SENhER8Y.js.br +0 -0
  151. package/build/client/_app/immutable/chunks/SENhER8Y.js.gz +0 -0
  152. package/build/client/_app/immutable/chunks/m9KJhr2i.js.br +0 -0
  153. package/build/client/_app/immutable/chunks/m9KJhr2i.js.gz +0 -0
  154. package/build/client/_app/immutable/chunks/vsNApJWQ.js +0 -1
  155. package/build/client/_app/immutable/chunks/vsNApJWQ.js.br +0 -0
  156. package/build/client/_app/immutable/chunks/vsNApJWQ.js.gz +0 -0
  157. package/build/client/_app/immutable/entry/app.6kvAGzFx.js.br +0 -0
  158. package/build/client/_app/immutable/entry/app.6kvAGzFx.js.gz +0 -0
  159. package/build/client/_app/immutable/entry/start.CNBjelhv.js +0 -1
  160. package/build/client/_app/immutable/entry/start.CNBjelhv.js.br +0 -2
  161. package/build/client/_app/immutable/entry/start.CNBjelhv.js.gz +0 -0
  162. package/build/client/_app/immutable/nodes/0.ClgWJHZK.js +0 -1
  163. package/build/client/_app/immutable/nodes/0.ClgWJHZK.js.br +0 -0
  164. package/build/client/_app/immutable/nodes/0.ClgWJHZK.js.gz +0 -0
  165. package/build/client/_app/immutable/nodes/1.C6-lRSct.js.br +0 -0
  166. package/build/client/_app/immutable/nodes/1.C6-lRSct.js.gz +0 -0
  167. package/build/client/_app/immutable/nodes/10.DIGWL6eC.js +0 -1
  168. package/build/client/_app/immutable/nodes/10.DIGWL6eC.js.br +0 -0
  169. package/build/client/_app/immutable/nodes/10.DIGWL6eC.js.gz +0 -0
  170. package/build/client/_app/immutable/nodes/11.D6PMR4JE.js.br +0 -0
  171. package/build/client/_app/immutable/nodes/11.D6PMR4JE.js.gz +0 -0
  172. package/build/client/_app/immutable/nodes/12.BaG9yS23.js.br +0 -0
  173. package/build/client/_app/immutable/nodes/12.BaG9yS23.js.gz +0 -0
  174. package/build/client/_app/immutable/nodes/13.ClrBypIt.js.br +0 -0
  175. package/build/client/_app/immutable/nodes/13.ClrBypIt.js.gz +0 -0
  176. package/build/client/_app/immutable/nodes/7.C2cwruWu.js.br +0 -0
  177. package/build/client/_app/immutable/nodes/7.C2cwruWu.js.gz +0 -0
  178. package/build/client/_app/immutable/nodes/8.CRDgVKjB.js +0 -1
  179. package/build/client/_app/immutable/nodes/8.CRDgVKjB.js.br +0 -0
  180. package/build/client/_app/immutable/nodes/8.CRDgVKjB.js.gz +0 -0
  181. package/build/client/_app/immutable/nodes/9.X5vwJ8aD.js +0 -2
  182. package/build/client/_app/immutable/nodes/9.X5vwJ8aD.js.br +0 -0
  183. package/build/client/_app/immutable/nodes/9.X5vwJ8aD.js.gz +0 -0
  184. package/build/server/chunks/10-BV4HPibI.js.map +0 -1
  185. package/build/server/chunks/TooltipTable-DUYKVtrh.js +0 -60
  186. package/build/server/chunks/TooltipTable-DUYKVtrh.js.map +0 -1
  187. package/build/server/chunks/_layout.svelte-CCi6mq1k.js.map +0 -1
  188. package/build/server/chunks/_page.svelte-DJFPwyij.js.map +0 -1
  189. package/build/server/chunks/remote-xxtqbu-DBe3CqEJ.js.map +0 -1
  190. package/build/server/chunks/servers.remote-HDmNH7n4.js.map +0 -1
@@ -1,6 +1,8 @@
1
1
  <script lang="ts">
2
2
  import {
3
+ countDocuments,
3
4
  deleteDocument as deleteDocumentCommand,
5
+ deleteMany as deleteManyCommand,
4
6
  insertDocument as insertDocumentCommand,
5
7
  loadDocuments,
6
8
  updateDocument as updateDocumentCommand,
@@ -12,6 +14,9 @@
12
14
  import Panel from "$lib/components/Panel.svelte";
13
15
  import PrettyJson from "$lib/components/PrettyJson.svelte";
14
16
  import SearchBox from "$lib/components/SearchBox.svelte";
17
+ import IconCopy from "$lib/icons/IconCopy.svelte";
18
+ import IconPlus from "$lib/icons/IconPlus.svelte";
19
+ import IconSortReverse from "$lib/icons/IconSortReverse.svelte";
15
20
  import { notificationStore } from "$lib/stores/notifications.svelte";
16
21
  import type { MongoDocument, SearchParams } from "$lib/types";
17
22
  import { formatNumber } from "$lib/utils/filters";
@@ -21,7 +26,6 @@
21
26
 
22
27
  let { data }: { data: PageData } = $props();
23
28
 
24
- /* eslint-disable-next-line svelte/prefer-writable-derived */
25
29
  let params = $state<SearchParams>({ ...data.params });
26
30
  let dataPromise = $derived(data.results);
27
31
  let editMode = $state(false);
@@ -29,11 +33,22 @@
29
33
  let isUpdating = $state(false);
30
34
  let showInsertEditor = $state(false);
31
35
 
36
+ let deleteState = $state({
37
+ countChecked: false,
38
+ count: null as number | null,
39
+ countError: null as string | null,
40
+ confirmText: "",
41
+ isCounting: false,
42
+ countQuery: null as string | null,
43
+ });
44
+
32
45
  let finalCount = $state<number | null>(null);
33
46
  let countCount = 0;
34
47
 
35
48
  $effect(() => {
36
49
  params = { ...data.params };
50
+ // Reset delete confirmation when params change
51
+ resetDeleteConfirmation();
37
52
  });
38
53
 
39
54
  $effect(() => {
@@ -112,8 +127,10 @@
112
127
  }
113
128
 
114
129
  async function removeDocument(_id: { $value?: string } | undefined, items: MongoDocument[]) {
115
- const documentId = _id?.$value;
116
- if (!documentId) return;
130
+ const documentId = _id?.$value ?? _id;
131
+ if (!documentId || typeof documentId !== "string") {
132
+ return;
133
+ }
117
134
 
118
135
  try {
119
136
  await deleteDocumentCommand({
@@ -124,7 +141,7 @@
124
141
  });
125
142
 
126
143
  notificationStore.notifySuccess("Document removed successfully");
127
- modifiedItems = items.filter((item) => item._id?.$value !== documentId);
144
+ modifiedItems = items.filter((item) => (item._id?.$value ?? item._id) !== documentId);
128
145
  } catch (error) {
129
146
  notificationStore.notifyError(error, "Failed to remove document");
130
147
  }
@@ -159,6 +176,8 @@
159
176
  project: params.project,
160
177
  skip: params.skip,
161
178
  limit: params.limit,
179
+ mode: params.mode,
180
+ field: params.field,
162
181
  });
163
182
  }
164
183
 
@@ -177,6 +196,8 @@
177
196
  project: params.project,
178
197
  skip: params.skip,
179
198
  limit: params.limit,
199
+ mode: params.mode,
200
+ field: params.field,
180
201
  });
181
202
  }
182
203
 
@@ -205,6 +226,74 @@
205
226
  }
206
227
  }
207
228
 
229
+ async function checkDeleteCount() {
230
+ deleteState.isCounting = true;
231
+ deleteState.countError = null;
232
+ const currentQuery = params.query || "{}";
233
+
234
+ try {
235
+ const result = await countDocuments({
236
+ server: data.server,
237
+ database: data.database,
238
+ collection: data.collection,
239
+ filter: currentQuery,
240
+ });
241
+
242
+ deleteState.count = result.data;
243
+ deleteState.countError = result.error;
244
+ deleteState.countChecked = true;
245
+ deleteState.countQuery = currentQuery;
246
+ } catch (error) {
247
+ notificationStore.notifyError(error, "Failed to count documents");
248
+ deleteState.countError = error instanceof Error ? error.message : String(error);
249
+ } finally {
250
+ deleteState.isCounting = false;
251
+ }
252
+ }
253
+
254
+ function resetDeleteConfirmation() {
255
+ deleteState.countChecked = false;
256
+ deleteState.count = null;
257
+ deleteState.countError = null;
258
+ deleteState.confirmText = "";
259
+ deleteState.countQuery = null;
260
+ }
261
+
262
+ // Check if current query matches the query used for counting
263
+ let isQueryChanged = $derived(deleteState.countChecked && deleteState.countQuery !== (params.query || "{}"));
264
+
265
+ // Reset confirmation text when query changes
266
+ $effect(() => {
267
+ if (isQueryChanged) {
268
+ deleteState.confirmText = "";
269
+ }
270
+ });
271
+
272
+ async function executeDeleteMany() {
273
+ isUpdating = true;
274
+ try {
275
+ const result = await deleteManyCommand({
276
+ server: data.server,
277
+ database: data.database,
278
+ collection: data.collection,
279
+ filter: params.query || "{}",
280
+ });
281
+
282
+ if (result.ok) {
283
+ notificationStore.notifySuccess(`Deleted ${result.deletedCount} document(s)`);
284
+ // Reset the modified items to force a refresh
285
+ modifiedItems = null;
286
+ editMode = false;
287
+ resetDeleteConfirmation();
288
+ }
289
+ } catch (error) {
290
+ console.error(error);
291
+ notificationStore.notifyError(error, "Failed to delete documents");
292
+ } finally {
293
+ isUpdating = false;
294
+ }
295
+ }
296
+
208
297
  let insertJson = $state("{}");
209
298
 
210
299
  async function executeInsert() {
@@ -302,8 +391,23 @@
302
391
  project: params.project,
303
392
  skip: 0,
304
393
  limit: params.limit,
394
+ mode: params.mode,
395
+ field: params.field,
305
396
  });
306
397
  }
398
+
399
+ async function copyDistinctValues(items: MongoDocument[]) {
400
+ try {
401
+ // Extract the values from the {value: ...} wrapper
402
+ const values = items.map((item) => item.value);
403
+ const jsonString = serializeForEditing(values);
404
+ await navigator.clipboard.writeText(jsonString);
405
+ notificationStore.notifySuccess("Copied distinct values to clipboard");
406
+ } catch (error) {
407
+ console.error(error);
408
+ notificationStore.notifyError(error, "Failed to copy to clipboard");
409
+ }
410
+ }
307
411
  </script>
308
412
 
309
413
  {#snippet previousButton(url: string, onClick: (e: MouseEvent) => void)}
@@ -337,21 +441,18 @@
337
441
  style="color: var(--text); cursor: pointer;"
338
442
  title="Reverse sort order"
339
443
  >
340
- <svg
341
- xmlns="http://www.w3.org/2000/svg"
342
- viewBox="0 0 24 24"
343
- fill="none"
344
- stroke="currentColor"
345
- stroke-width="2"
346
- stroke-linecap="round"
347
- stroke-linejoin="round"
348
- class="w-4 h-4"
349
- >
350
- <path d="M3 6h18" />
351
- <path d="M7 12h10" />
352
- <path d="M10 18h4" />
353
- <path d="m7 16 3 3 3-3" />
354
- </svg>
444
+ <IconSortReverse class="w-4 h-4" />
445
+ </button>
446
+ {/snippet}
447
+
448
+ {#snippet copyButton(items: MongoDocument[])}
449
+ <button
450
+ onclick={() => copyDistinctValues(items)}
451
+ class="px-3 py-1 rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] hover:bg-[var(--color-3)] text-[13px] transition"
452
+ style="color: var(--text); cursor: pointer;"
453
+ title="Copy distinct values"
454
+ >
455
+ <IconCopy class="w-4 h-4" />
355
456
  </button>
356
457
  {/snippet}
357
458
 
@@ -365,18 +466,7 @@
365
466
  <h3 class="text-lg font-semibold mb-3" style="color: var(--text);">Insert New Document</h3>
366
467
  {#if !showInsertEditor}
367
468
  <button class="btn btn-success" onclick={handleInsertClick}>
368
- <svg
369
- xmlns="http://www.w3.org/2000/svg"
370
- viewBox="0 0 24 24"
371
- fill="none"
372
- stroke="currentColor"
373
- stroke-width="2"
374
- stroke-linecap="round"
375
- stroke-linejoin="round"
376
- class="w-4 h-4 inline mr-2"
377
- >
378
- <path d="M12 5v14M5 12h14" />
379
- </svg>
469
+ <IconPlus class="w-4 h-4 inline mr-2" />
380
470
  Insert Document
381
471
  </button>
382
472
  {:else}
@@ -452,6 +542,107 @@
452
542
  </div>
453
543
  </div>
454
544
 
545
+ <!-- Delete Multiple Documents Section -->
546
+ <div class="rounded-xl bg-[var(--color-3)]/30 p-4 border border-[var(--border-color)]">
547
+ <h3 class="text-lg font-semibold mb-3" style="color: var(--text);">Delete Multiple Documents</h3>
548
+ <div class="space-y-4">
549
+ <div>
550
+ <label for="delete-filter" class="block text-sm font-semibold mb-2" style="color: var(--text);">
551
+ Filter (which documents to delete):
552
+ </label>
553
+ <input
554
+ type="text"
555
+ id="delete-filter"
556
+ value={params.query || "{}"}
557
+ readonly
558
+ class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm opacity-75 cursor-not-allowed"
559
+ style="color: var(--text);"
560
+ />
561
+ <p class="text-xs mt-2" style="color: var(--text-secondary);">
562
+ This filter is taken from the query above. Modify the query to change which documents will be deleted.
563
+ </p>
564
+ </div>
565
+
566
+ {#if !deleteState.countChecked}
567
+ <div class="flex gap-3">
568
+ <button class="btn btn-default" disabled={deleteState.isCounting} onclick={checkDeleteCount}>
569
+ {deleteState.isCounting ? "Counting..." : "Check Document Count"}
570
+ </button>
571
+ </div>
572
+ {:else if isQueryChanged}
573
+ <div
574
+ class="text-sm rounded-xl bg-yellow-500/10 p-4 border border-yellow-500/30"
575
+ style="color: var(--text-secondary);"
576
+ >
577
+ <p class="font-semibold text-yellow-600 mb-2">⚠️ Query Changed</p>
578
+ <p style="color: var(--text);">
579
+ The filter has changed since you last checked the count. Please check the document count again before
580
+ proceeding.
581
+ </p>
582
+ </div>
583
+
584
+ <div class="flex gap-3">
585
+ <button class="btn btn-default" disabled={deleteState.isCounting} onclick={checkDeleteCount}>
586
+ {deleteState.isCounting ? "Counting..." : "Check Count Again"}
587
+ </button>
588
+ <button class="btn btn-default" disabled={deleteState.isCounting} onclick={resetDeleteConfirmation}>
589
+ Cancel
590
+ </button>
591
+ </div>
592
+ {:else}
593
+ <div
594
+ class="text-sm rounded-xl bg-red-500/10 p-4 border border-red-500/30"
595
+ style="color: var(--text-secondary);"
596
+ >
597
+ <p class="font-semibold text-red-600 mb-2">⚠️ Warning</p>
598
+ {#if deleteState.countError}
599
+ <p class="mb-2" style="color: var(--text);">
600
+ Unable to count documents: {deleteState.countError}
601
+ </p>
602
+ <p>
603
+ You can still proceed with deletion, but please be cautious. This operation will permanently delete
604
+ all documents matching the filter. This action cannot be undone.
605
+ </p>
606
+ {:else}
607
+ <p class="mb-2" style="color: var(--text);">
608
+ This will delete <strong class="text-red-600">{deleteState.count}</strong>
609
+ document{deleteState.count === 1 ? "" : "s"}.
610
+ </p>
611
+ <p>This operation is permanent and cannot be undone.</p>
612
+ {/if}
613
+ </div>
614
+
615
+ <div>
616
+ <label for="delete-confirm" class="block text-sm font-semibold mb-2" style="color: var(--text);">
617
+ Type <code
618
+ class="bg-[var(--light-background)] px-2 py-1 rounded border border-[var(--border-color)] font-mono text-xs"
619
+ >confirm</code
620
+ > to proceed:
621
+ </label>
622
+ <input
623
+ type="text"
624
+ id="delete-confirm"
625
+ bind:value={deleteState.confirmText}
626
+ placeholder="Type 'confirm' to enable deletion"
627
+ class="w-full p-3 rounded-xl border border-[var(--border-color)] bg-[var(--color-3)] font-mono text-sm focus:outline-none focus:ring-2"
628
+ style="color: var(--text); --tw-ring-color: var(--link);"
629
+ />
630
+ </div>
631
+
632
+ <div class="flex gap-3">
633
+ <button
634
+ class="btn btn-danger hover:bg-red-700"
635
+ disabled={isUpdating || deleteState.confirmText !== "confirm"}
636
+ onclick={executeDeleteMany}
637
+ >
638
+ {isUpdating ? "Deleting..." : "Execute Delete"}
639
+ </button>
640
+ <button class="btn btn-default" disabled={isUpdating} onclick={resetDeleteConfirmation}> Cancel </button>
641
+ </div>
642
+ {/if}
643
+ </div>
644
+ </div>
645
+
455
646
  <!-- Close Edit Mode -->
456
647
  <div class="flex justify-end">
457
648
  <button
@@ -459,6 +650,7 @@
459
650
  onclick={() => {
460
651
  editMode = false;
461
652
  showInsertEditor = false;
653
+ resetDeleteConfirmation();
462
654
  }}
463
655
  >
464
656
  Close Edit Mode
@@ -497,8 +689,12 @@
497
689
  {#await items}
498
690
  <Panel
499
691
  title={finalCount !== null
500
- ? `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + data.params.limit)} of ${formatNumber(finalCount)} documents...`
501
- : "Loading documents..."}
692
+ ? data.params.mode === "distinct"
693
+ ? `${formatNumber(finalCount)} distinct value${finalCount === 1 ? "" : "s"}...`
694
+ : `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + data.params.limit)} of ${formatNumber(finalCount)} documents...`
695
+ : data.params.mode === "distinct"
696
+ ? "Loading distinct values..."
697
+ : "Loading documents..."}
502
698
  titleClass="py-1"
503
699
  >
504
700
  {#snippet actions()}
@@ -509,7 +705,6 @@
509
705
  {#if data.params.skip + data.params.limit < finalCount}
510
706
  {@render nextButton(nextUrl, navigateNext)}
511
707
  {/if}
512
- {@render sortButton()}
513
708
  {/if}
514
709
  {/snippet}
515
710
  </Panel>
@@ -520,8 +715,12 @@
520
715
  <Panel
521
716
  titleClass="py-1"
522
717
  title={items.length > 0
523
- ? `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + items.length)} Documents (counting...)`
524
- : "No documents"}
718
+ ? data.params.mode === "distinct"
719
+ ? `${formatNumber(items.length)} distinct value${items.length === 1 ? "" : "s"} (counting...)`
720
+ : `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + items.length)} Documents (counting...)`
721
+ : data.params.mode === "distinct"
722
+ ? "No distinct values"
723
+ : "No documents"}
525
724
  >
526
725
  {#snippet actions()}
527
726
  {#if data.params.skip > 0}
@@ -530,7 +729,11 @@
530
729
  {#if items.length >= data.params.limit}
531
730
  {@render nextButton(nextUrl, navigateNext)}
532
731
  {/if}
533
- {@render sortButton()}
732
+ {#if data.params.mode === "distinct"}
733
+ {@render copyButton(items)}
734
+ {:else}
735
+ {@render sortButton()}
736
+ {/if}
534
737
  {/snippet}
535
738
  </Panel>
536
739
  {:then countData}
@@ -542,10 +745,14 @@
542
745
  {@const isTimeout = countData.error?.includes("operation exceeded time limit")}
543
746
  <Panel
544
747
  title={items.length > 0
545
- ? count > 0
546
- ? `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + items.length)} of ${formatNumber(count)} documents`
547
- : `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + items.length)} documents (count ${isTimeout ? "timeout" : "unavailable"})`
548
- : "No documents"}
748
+ ? data.params.mode === "distinct"
749
+ ? `${formatNumber(count)} distinct value${count === 1 ? "" : "s"}`
750
+ : count > 0
751
+ ? `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + items.length)} of ${formatNumber(count)} documents`
752
+ : `${formatNumber(data.params.skip + 1)} - ${formatNumber(data.params.skip + items.length)} documents (count ${isTimeout ? "timeout" : "unavailable"})`
753
+ : data.params.mode === "distinct"
754
+ ? "No distinct values"
755
+ : "No documents"}
549
756
  titleClass="py-1"
550
757
  >
551
758
  {#snippet actions()}
@@ -555,7 +762,11 @@
555
762
  {#if hasNext}
556
763
  {@render nextButton(nextUrl, navigateNext)}
557
764
  {/if}
558
- {@render sortButton()}
765
+ {#if data.params.mode === "distinct"}
766
+ {@render copyButton(items)}
767
+ {:else}
768
+ {@render sortButton()}
769
+ {/if}
559
770
  {/snippet}
560
771
  </Panel>
561
772
  {/if}
@@ -565,8 +776,12 @@
565
776
  <PrettyJson
566
777
  json={item}
567
778
  autoCollapse={true}
568
- onedit={data.isAggregation || data.readOnly ? undefined : (json) => editDocument(item._id, json, items)}
569
- onremove={data.isAggregation || data.readOnly ? undefined : () => removeDocument(item._id, items)}
779
+ onedit={data.params.mode === "aggregation" || data.params.mode === "distinct" || data.readOnly
780
+ ? undefined
781
+ : (json) => editDocument(item._id, json, items)}
782
+ onremove={data.params.mode === "aggregation" || data.params.mode === "distinct" || data.readOnly
783
+ ? undefined
784
+ : () => removeDocument(item._id, items)}
570
785
  server={data.server}
571
786
  database={data.database}
572
787
  collection={data.collection}
@@ -1 +0,0 @@
1
- .notifications.svelte-2qov3s{position:fixed;top:90px;right:20px;z-index:1001;display:flex;flex-direction:column;gap:12px}.notification.svelte-2qov3s{padding:14px 18px;border-radius:1rem;box-shadow:0 4px 12px #00000026;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;gap:12px;min-width:320px;max-width:480px;animation:svelte-2qov3s-slideIn .4s cubic-bezier(.16,1,.3,1);border:1px solid rgba(255,255,255,.1);font-size:14px}.notification.svelte-2qov3s button:where(.svelte-2qov3s){background:#fff3;border:none;border-radius:8px;cursor:pointer;opacity:.8;margin-left:auto;padding:4px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;transition:all .2s}.notification.svelte-2qov3s button:where(.svelte-2qov3s):hover{opacity:1;background:#ffffff4d}.notification-error.svelte-2qov3s{background-color:#ff453a;color:#fff}.notification-success.svelte-2qov3s{background-color:#32d74b;color:#fff}.notification-info.svelte-2qov3s{background-color:#0a84ff;color:#fff}@keyframes svelte-2qov3s-slideIn{0%{transform:translate(450px);opacity:0}to{transform:translate(0);opacity:1}}.warning-banner.svelte-1358fs2{background-color:#f59e0b;color:#111827;padding:12px 24px;border-bottom:1px solid #d97706}.warning-content.svelte-1358fs2{display:flex;align-items:center;gap:12px;max-width:1400px;margin:0 auto}.warning-content.svelte-1358fs2 svg:where(.svelte-1358fs2){flex-shrink:0}.warning-content.svelte-1358fs2 span:where(.svelte-1358fs2){flex:1;font-size:14px;line-height:1.5}.warning-content.svelte-1358fs2 code:where(.svelte-1358fs2){background-color:#0000001a;padding:2px 6px;border-radius:3px;font-family:monospace;font-size:13px}.dismiss-button.svelte-1358fs2{background:none;border:none;font-size:24px;cursor:pointer;opacity:.7;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#111827}.dismiss-button.svelte-1358fs2:hover{opacity:1}.theme-content.svelte-u8uo5a{display:none}html[data-theme-mode=light] .theme-light.svelte-u8uo5a,html[data-theme-mode=dark] .theme-dark.svelte-u8uo5a{display:inline-flex;opacity:1}html[data-theme-mode=system][data-theme=light] .theme-system-light.svelte-u8uo5a,html[data-theme-mode=system][data-theme=dark] .theme-system-dark.svelte-u8uo5a{display:inline-flex;opacity:.6}.theme-text-system.svelte-u8uo5a{display:none}html[data-theme-mode=system] .theme-text-system.svelte-u8uo5a{display:inline}html[data-theme-mode=light] .theme-switcher.svelte-u8uo5a button:where(.svelte-u8uo5a):first-child,html[data-theme-mode=dark] .theme-switcher.svelte-u8uo5a button:where(.svelte-u8uo5a):first-child{opacity:1}html[data-theme-mode=system] .theme-switcher.svelte-u8uo5a button:where(.svelte-u8uo5a):first-child{opacity:.6}html[data-theme-mode=system] .theme-switcher.svelte-u8uo5a button:where(.svelte-u8uo5a):last-child{opacity:1}html[data-theme-mode=light] .theme-switcher.svelte-u8uo5a button:where(.svelte-u8uo5a):last-child,html[data-theme-mode=dark] .theme-switcher.svelte-u8uo5a button:where(.svelte-u8uo5a):last-child{opacity:.6}/*! tailwindcss v4.1.15 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-blue-500:oklch(62.3% .214 259.815);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{height:100%}body{background-color:var(--background-color);color:var(--text);tab-size:2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Inter,system-ui,sans-serif}a:hover{text-decoration:underline}input[type=text],input[type=number],textarea{border-radius:var(--radius-2xl);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));background-color:var(--color-3);color:var(--text);border:1px solid var(--color-4);transition:border-color .2s,background-color .2s}input[type=text]:focus,input[type=number]:focus,textarea:focus{border-color:var(--link);background-color:var(--light-background);outline:none}input::placeholder,textarea::placeholder{color:var(--text-secondary);opacity:1}::selection{color:var(--text);background-color:#007aff33}}@layer components{.btn{cursor:pointer;border-radius:var(--radius-xl);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;border-width:1px;font-size:14px;transition-duration:.2s}.btn-sm{padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.btn-default{background-color:var(--light-background);color:var(--text);border-color:var(--color-4)}.btn-default:hover:not(:disabled){background-color:var(--color-1-5);filter:brightness(.98)}.btn-danger{background-color:var(--button-danger);color:#fff;border-color:#0000}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}.btn-success{background-color:var(--button-success);color:#fff;border-color:#0000}.btn-success:hover:not(:disabled){filter:brightness(1.05)}.btn-primary{background-color:var(--link);color:#fff;border-color:#0000}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-outline-danger{color:var(--button-danger);background:0 0;border-color:#ff3b304d}.btn-outline-danger:hover:not(:disabled){background-color:#ff3b301a}.btn-outline-success{color:var(--button-success);background:0 0;border-color:#34c7594d}.btn-outline-success:hover:not(:disabled){background-color:#34c7591a}.btn-outline-light{color:var(--text);border-color:var(--color-4);background:0 0}.btn-outline-light:hover:not(:disabled){background-color:var(--color-3)}.btn-outline-primary{color:var(--link);border-color:var(--link);background:0 0}.btn-outline-primary:hover:not(:disabled){background-color:var(--link);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.table{border-collapse:collapse;width:100%}.table thead tr{background-color:var(--color-3)}.table th,.table td{text-align:left;border-bottom:1px solid var(--border-color);padding:12px}.table th{color:var(--text);font-weight:600}.table tbody tr:hover{background-color:var(--color-1-5)}.badge{border:1px solid var(--color-4);background-color:var(--light-background);border-radius:8px;padding:4px 10px;font-size:12px;display:inline-block}.badge-danger{background-color:var(--button-danger);color:#fff;border-color:#0000}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background-color:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background-color:var(--light-background);border:1px solid var(--color-4);border-radius:1.25rem;width:90%;max-width:500px;box-shadow:0 10px 40px #00000026}.modal-body{padding:24px}.modal-footer{border-top:1px solid var(--color-4);justify-content:flex-end;gap:10px;padding:16px 24px;display:flex}.loading{text-align:center;color:var(--text-darker);padding:40px}}@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-3{top:calc(var(--spacing)*3)}.right-3{right:calc(var(--spacing)*3)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[1000\]{z-index:1000}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing)*-2)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-7{height:calc(var(--spacing)*7)}.h-9{height:calc(var(--spacing)*9)}.h-14{height:calc(var(--spacing)*14)}.h-full{height:100%}.max-h-\[80vh\]{max-height:80vh}.max-h-\[400px\]{max-height:400px}.w-4{width:calc(var(--spacing)*4)}.w-7{width:calc(var(--spacing)*7)}.w-full{width:100%}.w-px{width:1px}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[96rem\]{max-width:96rem}.max-w-\[600px\]{max-width:600px}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--border-color\)\]{border-color:var(--border-color)}.border-\[var\(--color-3\)\]{border-color:var(--color-3)}.border-red-200{border-color:var(--color-red-200)}.bg-\[var\(--background-color\)\]\/80{background-color:var(--background-color)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--background-color\)\]\/80{background-color:color-mix(in oklab,var(--background-color)80%,transparent)}}.bg-\[var\(--border-color\)\]{background-color:var(--border-color)}.bg-\[var\(--button-success\)\]{background-color:var(--button-success)}.bg-\[var\(--color-1\)\]{background-color:var(--color-1)}.bg-\[var\(--color-2\)\]{background-color:var(--color-2)}.bg-\[var\(--color-3\)\],.bg-\[var\(--color-3\)\]\/30{background-color:var(--color-3)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-3\)\]\/30{background-color:color-mix(in oklab,var(--color-3)30%,transparent)}}.bg-\[var\(--color-3\)\]\/50{background-color:var(--color-3)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--color-3\)\]\/50{background-color:color-mix(in oklab,var(--color-3)50%,transparent)}}.bg-\[var\(--color-4\)\]{background-color:var(--color-4)}.bg-\[var\(--light-background\)\],.bg-\[var\(--light-background\)\]\/70{background-color:var(--light-background)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--light-background\)\]\/70{background-color:color-mix(in oklab,var(--light-background)70%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-2{padding-top:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--danger\,\#f44336\)\]{color:var(--danger,#f44336)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-blue-500{color:var(--color-blue-500)}.text-white{color:var(--color-white)}.no-underline{text-decoration-line:none}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-\[inset_0_-1px_0_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:inset 0 -1px 0 var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:inline:is(:where(.group):hover *){display:inline}.hover\:bg-\[rgba\(255\,59\,48\,0\.1\)\]:hover{background-color:#ff3b301a}.hover\:bg-\[var\(--button-success-l\)\]:hover{background-color:var(--button-success-l)}.hover\:bg-\[var\(--color-3\)\]:hover{background-color:var(--color-3)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:brightness-95:active{--tw-brightness:brightness(95%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-\[14px\]{font-size:14px}}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:py-10{padding-block:calc(var(--spacing)*10)}}@media(min-width:64rem){.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}@media(prefers-color-scheme:dark){.dark\:bg-white{background-color:var(--color-white)}.dark\:text-black{color:var(--color-black)}}.dotted{border-bottom:1px dotted var(--text);cursor:help}.error{color:var(--error)}}:root[data-theme=light]{--color-1:#f5f5f7;--color-1-5:#fff;--light-background:#fff;--color-3:#f0f0f2;--color-4:#e5e5e7;--background-color:var(--color-1);--border-color:var(--color-4);--text:#1d1d1f;--text-inverse:#fff;--text-darker:#6e6e73;--text-lighter:#000;--text-secondary:#86868b;--link:#007aff;--error:#ff3b30;--button-danger:#ff3b30;--button-danger-l:#ff6961;--button-success:#34c759;--button-success-l:#5dd879;--button-light:#1d1d1f;--button-light-hover:#000;--code-namespace:#0070c1;--code-boolean:#007aff;--code-null:#007aff;--code-numbers:#098658;--code-string:#d73a49;--code-links:#0451a5;--code-summary:#22863a;--code-regexp:#d16969;--code-function:#6f42c1;--border:1px solid var(--color-4)}:root[data-theme=dark]{--color-1:#1c1c1e;--color-1-5:#2c2c2e;--light-background:#2c2c2e;--color-3:#3a3a3c;--color-4:#48484a;--background-color:var(--color-1);--border-color:var(--color-3);--text:#f5f5f7;--text-inverse:#1c1c1e;--text-darker:#98989d;--text-lighter:#fff;--text-secondary:#8e8e93;--link:#0a84ff;--error:#ff453a;--button-danger:#ff453a;--button-danger-l:#ff6961;--button-success:#32d74b;--button-success-l:#5dd879;--button-light:#f5f5f7;--button-light-hover:#fff;--code-namespace:#9cdcfe;--code-boolean:#0a84ff;--code-null:#0a84ff;--code-numbers:#a5d6a7;--code-string:#ff8a65;--code-links:#4fc3f7;--code-summary:#81c784;--code-regexp:#ef9a9a;--code-function:#dcdcaa;--border:1px solid var(--color-3)}:root:not([data-theme]){--color-1:#f5f5f7;--color-1-5:#fff;--light-background:#fff;--color-3:#f0f0f2;--color-4:#e5e5e7;--background-color:var(--color-1);--border-color:var(--color-4);--text:#1d1d1f;--text-inverse:#fff;--text-darker:#6e6e73;--text-lighter:#000;--text-secondary:#86868b;--link:#007aff;--error:#ff3b30;--button-danger:#ff3b30;--button-danger-l:#ff6961;--button-success:#34c759;--button-success-l:#5dd879;--button-light:#1d1d1f;--button-light-hover:#000;--code-namespace:#0070c1;--code-boolean:#007aff;--code-null:#007aff;--code-numbers:#098658;--code-string:#d73a49;--code-links:#0451a5;--code-summary:#22863a;--code-regexp:#d16969;--code-function:#6f42c1;--border:1px solid var(--color-4)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
@@ -1,4 +0,0 @@
1
- import{o as et,b as Vt}from"./ByCRZ7zS.js";import{l as Ee,a0 as Gt,i as O,h as U,j as P,v as Wt,q as tt}from"./reNJcONQ.js";const q=[];function Be(e,t=Ee){let n=null;const r=new Set;function a(o){if(Gt(e,o)&&(e=o,n)){const l=!q.length;for(const i of r)i[1](),q.push(i,e);if(l){for(let i=0;i<q.length;i+=2)q[i][0](q[i+1]);q.length=0}}}function s(o){a(o(e))}function c(o,l=Ee){const i=[o,l];return r.add(i),r.size===1&&(n=t(a,s)||Ee),o(e),()=>{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:a,update:s,subscribe:c}}class _e{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Me{constructor(t,n){this.status=t,this.location=n}}class Fe extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Yt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Ht(e){return e.split("%25").map(decodeURI).join("%25")}function Jt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function Re({href:e}){return e.split("#")[0]}function zt(e,t,n,r=!1){const a=new URL(e);Object.defineProperty(a,"searchParams",{value:new Proxy(a.searchParams,{get(c,o){if(o==="get"||o==="getAll"||o==="has")return i=>(n(i),c[o](i));t();const l=Reflect.get(c,o);return typeof l=="function"?l.bind(c):l}}),enumerable:!0,configurable:!0});const s=["href","pathname","search","toString","toJSON"];r&&s.push("hash");for(const c of s)Object.defineProperty(a,c,{get(){return t(),e[c]},enumerable:!0,configurable:!0});return a}function Kt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const Xt=new TextDecoder;function Zt(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Qt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const en=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&J.delete(qe(e)),en(e,t));const J=new Map;function tn(e,t){const n=qe(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const c=r.getAttribute("data-ttl");return c&&J.set(n,{body:a,init:s,ttl:1e3*Number(c)}),r.getAttribute("data-b64")!==null&&(a=Qt(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function nn(e,t,n){if(J.size>0){const r=qe(e,n),a=J.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);J.delete(r)}}return window.fetch(t,n)}function qe(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${Kt(...a)}"]`}return r}const rn=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function an(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${dt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const c=r.split(/\[(.+?)\](?!\])/);return"/"+c.map((l,i)=>{if(i%2){if(l.startsWith("x+"))return Te(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return Te(String.fromCharCode(...l.slice(2).split("-").map(w=>parseInt(w,16))));const h=rn.exec(l),[,u,d,f,p]=h;return t.push({name:f,matcher:p,optional:!!u,rest:!!d,chained:d?i===1&&c[0]==="":!1}),d?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Te(l)}).join("")}).join("")}/?$`),params:t}}function on(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function dt(e){return e.slice(1).split("/").filter(on)}function sn(e,t,n){const r={},a=e.slice(1),s=a.filter(o=>o!==void 0);let c=0;for(let o=0;o<t.length;o+=1){const l=t[o];let i=a[o-c];if(l.chained&&l.rest&&c&&(i=a.slice(o-c,o+1).filter(h=>h).join("/"),c=0),i===void 0){l.rest&&(r[l.name]="");continue}if(!l.matcher||n[l.matcher](i)){r[l.name]=i;const h=t[o+1],u=a[o+1];h&&!h.rest&&h.optional&&u&&l.chained&&(c=0),!h&&!u&&Object.keys(r).length===s.length&&(c=0);continue}if(l.optional&&l.chained){c++;continue}return}if(!c)return r}function Te(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}const cn=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function Kn(e,t){const n=dt(e),r=e!="/"&&e.endsWith("/");return"/"+n.map(a=>a.replace(cn,(s,c,o,l)=>{const i=t[l];if(!i){if(c||o&&i!==void 0)return"";throw new Error(`Missing parameter '${l}' in route ${e}`)}if(i.startsWith("/")||i.endsWith("/"))throw new Error(`Parameter '${l}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return i})).filter(Boolean).join("/")+(r?"/":"")}function ln({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[l,i,h]])=>{const{pattern:u,params:d}=an(o),f={id:o,exec:p=>{const w=u.exec(p);if(w)return sn(w,d,r)},errors:[1,...h||[]].map(p=>e[p]),layouts:[0,...i||[]].map(c),leaf:s(l)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function s(o){const l=o<0;return l&&(o=~o),[l,e[o]]}function c(o){return o===void 0?o:[a.has(o),e[o]]}}function ht(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function nt(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const $=globalThis.__sveltekit_8ph25u?.base??"",fn=globalThis.__sveltekit_8ph25u?.assets??$??"",Xn="_app",un="1763073637736",pt="sveltekit:snapshot",gt="sveltekit:scroll",ye="sveltekit:states",Ve="sveltekit:pageurl",N="sveltekit:history",M="sveltekit:navigation",B={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ee=location.origin;function te(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function we(){return{x:pageXOffset,y:pageYOffset}}function V(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const rt={...B,"":B.hover};function mt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function _t(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=mt(e)}}function Le(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||ve(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),c=r?.origin===ee&&e.hasAttribute("download");return{url:r,external:s,target:a,download:c}}function ce(e){let t=null,n=null,r=null,a=null,s=null,c=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=V(o,"preload-code")),a===null&&(a=V(o,"preload-data")),t===null&&(t=V(o,"keepfocus")),n===null&&(n=V(o,"noscroll")),s===null&&(s=V(o,"reload")),c===null&&(c=V(o,"replacestate")),o=mt(o);function l(i){switch(i){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:rt[r??"off"],preload_data:rt[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(s),replace_state:l(c)}}function at(e){const t=Be(e);let n=!0;function r(){n=!0,t.update(c=>c)}function a(c){n=!1,t.set(c)}function s(c){let o;return t.subscribe(l=>{(o===void 0||n&&l!==o)&&c(o=l)})}return{notify:r,set:a,subscribe:s}}const yt={v:()=>{}};function dn(){const{set:e,subscribe:t}=Be(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${fn}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const c=(await a.json()).version!==un;return c&&(e(!0),yt.v(),clearTimeout(n)),c}catch{return!1}}return{subscribe:t,check:r}}function ve(e,t,n){return e.origin!==ee||!e.pathname.startsWith(t)?!0:n?!(e.pathname===t+"/"||e.pathname===t+"/index.html"||e.protocol==="file:"&&e.pathname.replace(/\/[^/]+\.html?$/,"")===t):!1}function Zn(e){}class $e extends Error{constructor(t,n){super(t),this.name="DevalueError",this.path=n.join("")}}function ot(e){return Object(e)!==e}const hn=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function pn(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join("\0")===hn}function gn(e){return Object.prototype.toString.call(e).slice(8,-1)}function mn(e){switch(e){case'"':return'\\"';case"<":return"\\u003C";case"\\":return"\\\\";case`
2
- `:return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e<" "?`\\u${e.charCodeAt(0).toString(16).padStart(4,"0")}`:""}}function j(e){let t="",n=0;const r=e.length;for(let a=0;a<r;a+=1){const s=e[a],c=mn(s);c&&(t+=e.slice(n,a)+c,n=a+1)}return`"${n===0?e:t+e.slice(n)}"`}function _n(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}const yn=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function st(e){return yn.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function wn(e){const t=new DataView(e);let n="";for(let r=0;r<e.byteLength;r++)n+=String.fromCharCode(t.getUint8(r));return Sn(n)}function vn(e){const t=bn(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const wt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function bn(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=wt.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}function Sn(e){let t="";for(let n=0;n<e.length;n+=3){const r=[void 0,void 0,void 0,void 0];r[0]=e.charCodeAt(n)>>2,r[1]=(e.charCodeAt(n)&3)<<4,e.length>n+1&&(r[1]|=e.charCodeAt(n+1)>>4,r[2]=(e.charCodeAt(n+1)&15)<<2),e.length>n+2&&(r[2]|=e.charCodeAt(n+2)>>6,r[3]=e.charCodeAt(n+2)&63);for(let a=0;a<r.length;a++)typeof r[a]>"u"?t+="=":t+=wt[r[a]]}return t}const Ge=-1,vt=-2,bt=-3,St=-4,kt=-5,We=-6;function Qn(e,t){return At(JSON.parse(e),t)}function At(e,t){if(typeof e=="number")return a(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function a(s,c=!1){if(s===Ge)return;if(s===bt)return NaN;if(s===St)return 1/0;if(s===kt)return-1/0;if(s===We)return-0;if(c||typeof s!="number")throw new Error("Invalid input");if(s in r)return r[s];const o=n[s];if(!o||typeof o!="object")r[s]=o;else if(Array.isArray(o))if(typeof o[0]=="string"){const l=o[0],i=t?.[l];if(i)return r[s]=i(a(o[1]));switch(l){case"Date":r[s]=new Date(o[1]);break;case"Set":const h=new Set;r[s]=h;for(let f=1;f<o.length;f+=1)h.add(a(o[f]));break;case"Map":const u=new Map;r[s]=u;for(let f=1;f<o.length;f+=2)u.set(a(o[f]),a(o[f+1]));break;case"RegExp":r[s]=new RegExp(o[1],o[2]);break;case"Object":r[s]=Object(o[1]);break;case"BigInt":r[s]=BigInt(o[1]);break;case"null":const d=Object.create(null);r[s]=d;for(let f=1;f<o.length;f+=2)d[o[f]]=a(o[f+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const f=globalThis[l],p=new f(a(o[1]));r[s]=o[2]!==void 0?p.subarray(o[2],o[3]):p;break}case"ArrayBuffer":{const f=o[1],p=vn(f);r[s]=p;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const f=l.slice(9);r[s]=Temporal[f].from(o[1]);break}case"URL":{const f=new URL(o[1]);r[s]=f;break}case"URLSearchParams":{const f=new URLSearchParams(o[1]);r[s]=f;break}default:throw new Error(`Unknown type ${l}`)}}else{const l=new Array(o.length);r[s]=l;for(let i=0;i<o.length;i+=1){const h=o[i];h!==vt&&(l[i]=a(h))}}else{const l={};r[s]=l;for(const i in o){if(i==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const h=o[i];l[i]=a(h)}}return r[s]}return a(0)}function kn(e,t){const n=[],r=new Map,a=[];if(t)for(const i of Object.getOwnPropertyNames(t))a.push({key:i,fn:t[i]});const s=[];let c=0;function o(i){if(typeof i=="function")throw new $e("Cannot stringify a function",s);if(i===void 0)return Ge;if(Number.isNaN(i))return bt;if(i===1/0)return St;if(i===-1/0)return kt;if(i===0&&1/i<0)return We;if(r.has(i))return r.get(i);const h=c++;r.set(i,h);for(const{key:d,fn:f}of a){const p=f(i);if(p)return n[h]=`["${d}",${o(p)}]`,h}let u="";if(ot(i))u=Ie(i);else{const d=gn(i);switch(d){case"Number":case"String":case"Boolean":u=`["Object",${Ie(i)}]`;break;case"BigInt":u=`["BigInt",${i}]`;break;case"Date":u=`["Date","${!isNaN(i.getDate())?i.toISOString():""}"]`;break;case"URL":u=`["URL",${j(i.toString())}]`;break;case"URLSearchParams":u=`["URLSearchParams",${j(i.toString())}]`;break;case"RegExp":const{source:p,flags:w}=i;u=w?`["RegExp",${j(p)},"${w}"]`:`["RegExp",${j(p)}]`;break;case"Array":u="[";for(let g=0;g<i.length;g+=1)g>0&&(u+=","),g in i?(s.push(`[${g}]`),u+=o(i[g]),s.pop()):u+=vt;u+="]";break;case"Set":u='["Set"';for(const g of i)u+=`,${o(g)}`;u+="]";break;case"Map":u='["Map"';for(const[g,m]of i)s.push(`.get(${ot(g)?Ie(g):"..."})`),u+=`,${o(g)},${o(m)}`,s.pop();u+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const g=i;u='["'+d+'",'+o(g.buffer);const m=i.byteOffset,I=m+i.byteLength;if(m>0||I!==g.buffer.byteLength){const R=+/(\d+)/.exec(d)[1]/8;u+=`,${m/R},${I/R}`}u+="]";break}case"ArrayBuffer":{u=`["ArrayBuffer","${wn(i)}"]`;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":u=`["${d}",${j(i.toString())}]`;break;default:if(!pn(i))throw new $e("Cannot stringify arbitrary non-POJOs",s);if(_n(i).length>0)throw new $e("Cannot stringify POJOs with symbolic keys",s);if(Object.getPrototypeOf(i)===null){u='["null"';for(const g in i)s.push(st(g)),u+=`,${j(g)},${o(i[g])}`,s.pop();u+="]"}else{u="{";let g=!1;for(const m in i)g&&(u+=","),g=!0,s.push(st(m)),u+=`${j(m)}:${o(i[m])}`,s.pop();u+="}"}}}return n[h]=u,h}const l=o(e);return l<0?`${l}`:`[${n.join(",")}]`}function Ie(e){const t=typeof e;return t==="string"?j(e):e instanceof String?j(e.toString()):e===void 0?Ge.toString():e===0&&1/e<0?We.toString():t==="bigint"?`["BigInt","${e}"]`:String(e)}const Et=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Et];const An=new Set([...Et]);[...An];function En(e){return e.filter(t=>t!=null)}const Rn="x-sveltekit-invalidated",Tn="x-sveltekit-trailing-slash";function $n(e,t){const n=Object.fromEntries(Object.entries(t).map(([r,a])=>[r,a.encode]));return kn(e,n)}function er(e,t){if(e===void 0)return"";const n=$n(e,t),r=new TextEncoder().encode(n);return Zt(r).replaceAll("=","").replaceAll("+","-").replaceAll("/","_")}function tr(e,t){return e+"/"+t}function le(e){return e instanceof _e||e instanceof Fe?e.status:500}function In(e){return e instanceof Fe?e.text:"Internal Error"}let k,X,Oe;const On=et.toString().includes("$$")||/function \w+\(\) \{\}/.test(et.toString());On?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},X={current:null},Oe={current:!1}):(k=new class{#e=O({});get data(){return U(this.#e)}set data(t){P(this.#e,t)}#t=O(null);get form(){return U(this.#t)}set form(t){P(this.#t,t)}#n=O(null);get error(){return U(this.#n)}set error(t){P(this.#n,t)}#r=O({});get params(){return U(this.#r)}set params(t){P(this.#r,t)}#a=O({id:null});get route(){return U(this.#a)}set route(t){P(this.#a,t)}#o=O({});get state(){return U(this.#o)}set state(t){P(this.#o,t)}#s=O(-1);get status(){return U(this.#s)}set status(t){P(this.#s,t)}#i=O(new URL("https://example.com"));get url(){return U(this.#i)}set url(t){P(this.#i,t)}},X=new class{#e=O(null);get current(){return U(this.#e)}set current(t){P(this.#e,t)}},Oe=new class{#e=O(!1);get current(){return U(this.#e)}set current(t){P(this.#e,t)}},yt.v=()=>Oe.current=!0);function Rt(e){Object.assign(k,e)}const Un="/__data.json",Pn=".html__data.json";function Ln(e){return e.endsWith(".html")?e.replace(/\.html$/,Pn):e.replace(/\/$/,"")+Un}const it={spanContext(){return jn},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},jn={traceId:"",spanId:"",traceFlags:0},{tick:xn}=Vt,Tt=Wt??(e=>e()),Cn=new Set(["icon","shortcut icon","apple-touch-icon"]),F=ht(gt)??{},Z=ht(pt)??{},D={url:at({}),page:at({}),navigating:Be(null),updated:dn()};function be(e){F[e]=we()}function $t(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;Z[n];)delete Z[n],n+=1}function Y(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function It(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration($||"/");e&&await e.update()}}function je(){}let Ye,xe,fe,x,Ce,A,Ot={};const ue=[],de=[];let L=null;const ie=new Map,Ut=new Set,Nn=new Set,z=new Set;let y={branch:[],error:null,url:null},He=!1,he=!1,ct=!0,Q=!1,H=!1,Je=!1,ne=!1,re,E,T,C;const K=new Set;let Ue;const pe=new Map;async function or(e,t,n){globalThis.__sveltekit_8ph25u?.data&&(Ot=globalThis.__sveltekit_8ph25u.data),document.URL!==location.href&&(location.href=location.href),A=e,await e.hooks.init?.(),Ye=ln(e),x=document.documentElement,Ce=t,xe=e.nodes[0],fe=e.nodes[1],xe(),fe(),E=history.state?.[N],T=history.state?.[M],E||(E=T=Date.now(),history.replaceState({...history.state,[N]:E,[M]:T},""));const r=F[E];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Wn(Ce,n)):(await G({type:"enter",url:te(A.hash?Hn(new URL(location.href)):location.href),replace_state:!0}),a()),Gn()}async function Pt(e=!0,t=!0){if(await(Ue||=Promise.resolve()),!Ue)return;Ue=null;const n=C={},r=await ae(y.url,!0);if(L=null,ne&&pe.forEach(({resource:a})=>{a.refresh?.()}),e){const a=k.state,s=r&&await Ze(r);if(!s||n!==C)return;if(s.type==="redirect")return ze(new URL(s.location,y.url).href,{replaceState:!0},1,n);t||(s.props.page.state=a),Rt(s.props.page),y=s.state,Ne(),re.$set(s.props)}else Ne();await Promise.all([...pe.values()].map(({resource:a})=>a)).catch(je)}function Ne(){ue.length=0,ne=!1}function Lt(e){de.some(t=>t?.snapshot)&&(Z[e]=de.map(t=>t?.snapshot?.capture()))}function jt(e){Z[e]?.forEach((t,n)=>{de[n]?.snapshot?.restore(t)})}function lt(){be(E),nt(gt,F),Lt(T),nt(pt,Z)}async function ze(e,t,n,r){let a;t.invalidateAll&&(L=null),await G({type:"goto",url:te(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(ne=!0,a=[...pe.keys()]),t.invalidate&&t.invalidate.forEach(Bt)}}),t.invalidateAll&&tt().then(tt).then(()=>{pe.forEach(({resource:s},c)=>{a?.includes(c)&&s.refresh?.()})})}async function Dn(e){if(e.id!==L?.id){const t={};K.add(t),L={id:e.id,token:t,promise:Ze({...e,preload:t}).then(n=>(K.delete(t),n.type==="loaded"&&n.state.error&&(L=null),n))}}return L.promise}async function Pe(e){const t=(await ae(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}function xt(e,t,n){y=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(k,e.props.page),re=new A.root({target:t,props:{...e.props,stores:D,components:de},hydrate:n,sync:!1}),jt(T),n){const a={from:null,to:{params:y.params,route:{id:y.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};z.forEach(s=>s(a))}he=!0}function ge({url:e,params:t,branch:n,status:r,error:a,route:s,form:c}){let o="never";if($&&(e.pathname===$||e.pathname===$+"/"))o="always";else for(const f of n)f?.slash!==void 0&&(o=f.slash);e.pathname=Yt(e.pathname,o),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:s},props:{constructors:En(n).map(f=>f.node.component),page:oe(k)}};c!==void 0&&(l.props.form=c);let i={},h=!k,u=0;for(let f=0;f<Math.max(n.length,y.branch.length);f+=1){const p=n[f],w=y.branch[f];p?.data!==w?.data&&(h=!0),p&&(i={...i,...p.data},h&&(l.props[`data_${u}`]=i),u+=1)}return(!y.url||e.href!==y.url.href||y.error!==a||c!==void 0&&c!==k.form||h)&&(l.props.page={error:a,params:t,route:{id:s?.id??null},state:{},status:r,url:new URL(e),form:c??null,data:h?i:k.data}),l}async function Ke({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let c=null,o=!0;const l={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();if(i.universal?.load){let h=function(...d){for(const f of d){const{href:p}=new URL(f,n);l.dependencies.add(p)}};const u={tracing:{enabled:!1,root:it,current:it},route:new Proxy(a,{get:(d,f)=>(o&&(l.route=!0),d[f])}),params:new Proxy(r,{get:(d,f)=>(o&&l.params.add(f),d[f])}),data:s?.data??null,url:zt(n,()=>{o&&(l.url=!0)},d=>{o&&l.search_params.add(d)},A.hash),async fetch(d,f){d instanceof Request&&(f={body:d.method==="GET"||d.method==="HEAD"?void 0:await d.blob(),cache:d.cache,credentials:d.credentials,headers:[...d.headers].length>0?d?.headers:void 0,integrity:d.integrity,keepalive:d.keepalive,method:d.method,mode:d.mode,redirect:d.redirect,referrer:d.referrer,referrerPolicy:d.referrerPolicy,signal:d.signal,...f});const{resolved:p,promise:w}=Ct(d,f,n);return o&&h(p.href),w},setHeaders:()=>{},depends:h,parent(){return o&&(l.parent=!0),t()},untrack(d){o=!1;try{return d()}finally{o=!0}}};c=await i.universal.load.call(null,u)??null}return{node:i,loader:e,server:s,universal:i.universal?.load?{type:"data",data:c,uses:l}:null,data:c??s?.data??null,slash:i.universal?.trailingSlash??s?.slash}}function Ct(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=he?nn(r,a.href,t):tn(r,t);return{resolved:a,promise:s}}function ft(e,t,n,r,a,s){if(ne)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const c of a.search_params)if(r.has(c))return!0;for(const c of a.params)if(s[c]!==y.params[c])return!0;for(const c of a.dependencies)if(ue.some(o=>o(new URL(c))))return!0;return!1}function Xe(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Bn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(c=>s.includes(c))&&s.every(c=>a.includes(c))&&n.delete(r)}return n}function ut({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:oe(k),constructors:[]}}}async function Ze({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(L?.id===e)return K.delete(L.token),L.promise;const{errors:c,layouts:o,leaf:l}=a,i=[...o,l];c.forEach(v=>v?.().catch(()=>{})),i.forEach(v=>v?.[1]().catch(()=>{}));let h=null;const u=y.url?e!==me(y.url):!1,d=y.route?a.id!==y.route.id:!1,f=Bn(y.url,n);let p=!1;const w=i.map((v,_)=>{const b=y.branch[_],S=!!v?.[0]&&(b?.loader!==v[1]||ft(p,d,u,f,b.server?.uses,r));return S&&(p=!0),S});if(w.some(Boolean)){try{h=await Mt(n,w)}catch(v){const _=await W(v,{url:n,params:r,route:{id:e}});return K.has(s)?ut({error:_,url:n,params:r,route:a}):Se({status:le(v),error:_,url:n,route:a})}if(h.type==="redirect")return h}const g=h?.nodes;let m=!1;const I=i.map(async(v,_)=>{if(!v)return;const b=y.branch[_],S=g?.[_];if((!S||S.type==="skip")&&v[1]===b?.loader&&!ft(m,d,u,f,b.universal?.uses,r))return b;if(m=!0,S?.type==="error")throw S;return Ke({loader:v[1],url:n,params:r,route:a,parent:async()=>{const ke={};for(let Ae=0;Ae<_;Ae+=1)Object.assign(ke,(await I[Ae])?.data);return ke},server_data_node:Xe(S===void 0&&v[0]?{type:"skip"}:S??null,v[0]?b?.server:void 0)})});for(const v of I)v.catch(()=>{});const R=[];for(let v=0;v<i.length;v+=1)if(i[v])try{R.push(await I[v])}catch(_){if(_ instanceof Me)return{type:"redirect",location:_.location};if(K.has(s))return ut({error:await W(_,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=le(_),S;if(g?.includes(_))b=_.status??b,S=_.error;else if(_ instanceof _e)S=_.body;else{if(await D.updated.check())return await It(),await Y(n);S=await W(_,{params:r,url:n,route:{id:a.id}})}const se=await Mn(v,R,c);return se?ge({url:n,params:r,branch:R.slice(0,se.idx).concat(se.node),status:b,error:S,route:a}):await Dt(n,{id:a.id},S,b)}else R.push(void 0);return ge({url:n,params:r,branch:R,status:200,error:null,route:a,form:t?void 0:null})}async function Mn(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Se({status:e,error:t,url:n,route:r}){const a={};let s=null;if(A.server_loads[0]===0)try{const o=await Mt(n,[!0]);if(o.type!=="data"||o.nodes[0]&&o.nodes[0].type!=="data")throw 0;s=o.nodes[0]??null}catch{(n.origin!==ee||n.pathname!==location.pathname||He)&&await Y(n)}try{const o=await Ke({loader:xe,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Xe(s)}),l={node:await fe(),loader:fe,universal:null,server:null,data:null};return ge({url:n,params:a,branch:[o,l],status:e,error:t,route:null})}catch(o){if(o instanceof Me)return ze(new URL(o.location,location.href),{},0);throw o}}async function Fn(e){const t=e.href;if(ie.has(t))return ie.get(t);let n;try{const r=(async()=>{let a=await A.hooks.reroute({url:new URL(e),fetch:async(s,c)=>Ct(s,c,e).promise})??e;if(typeof a=="string"){const s=new URL(e);A.hash?s.hash=a:s.pathname=a,a=s}return a})();ie.set(t,r),n=await r}catch{ie.delete(t);return}return n}async function ae(e,t){if(e&&!ve(e,$,A.hash)){const n=await Fn(e);if(!n)return;const r=qn(n);for(const a of Ye){const s=a.exec(r);if(s)return{id:me(e),invalidating:t,route:a,params:Jt(s),url:e}}}}function qn(e){return Ht(A.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice($.length))||"/"}function me(e){return(A.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function Nt({url:e,type:t,intent:n,delta:r,event:a}){let s=!1;const c=Qe(y,n,e,t);r!==void 0&&(c.navigation.delta=r),a!==void 0&&(c.navigation.event=a);const o={...c.navigation,cancel:()=>{s=!0,c.reject(new Error("navigation cancelled"))}};return Q||Ut.forEach(l=>l(o)),s?null:c}async function G({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:c={},redirect_count:o=0,nav_token:l={},accept:i=je,block:h=je,event:u}){Ot={};const d=C;C=l;const f=await ae(t,!1),p=e==="enter"?Qe(y,f,t,e):Nt({url:t,type:e,delta:n?.delta,intent:f,event:u});if(!p){h(),C===l&&(C=d);return}const w=E,g=T;i(),Q=!0,he&&p.navigation.type!=="enter"&&D.navigating.set(X.current=p.navigation);let m=f&&await Ze(f);if(!m){if(ve(t,$,A.hash))return await Y(t,s);m=await Dt(t,{id:null},await W(new Fe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=f?.url||t,C!==l)return p.reject(new Error("navigation aborted")),!1;if(m.type==="redirect"){if(o<20){await G({type:e,url:new URL(m.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:c,redirect_count:o+1,nav_token:l}),p.fulfil(void 0);return}m=await Se({status:500,error:await W(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else m.props.page.status>=400&&await D.updated.check()&&(await It(),await Y(t,s));if(Ne(),be(w),Lt(g),m.props.page.url.pathname!==t.pathname&&(t.pathname=m.props.page.url.pathname),c=n?n.state:c,!n){const _=s?0:1,b={[N]:E+=_,[M]:T+=_,[ye]:c};(s?history.replaceState:history.pushState).call(history,b,"",t),s||$t(E,T)}if(L=null,m.props.page.state=c,he){const _=(await Promise.all(Array.from(Nn,b=>b(p.navigation)))).filter(b=>typeof b=="function");if(_.length>0){let b=function(){_.forEach(S=>{z.delete(S)})};_.push(b),_.forEach(S=>{z.add(S)})}y=m.state,m.props.page&&(m.props.page.url=t),re.$set(m.props),Rt(m.props.page),Je=!0}else xt(m,Ce,!1);const{activeElement:I}=document;await xn();let R=n?n.scroll:a?we():null;if(ct){const _=t.hash&&document.getElementById(qt(t));if(R)scrollTo(R.x,R.y);else if(_){_.scrollIntoView();const{top:b,left:S}=_.getBoundingClientRect();R={x:pageXOffset+S,y:pageYOffset+b}}else scrollTo(0,0)}const v=document.activeElement!==I&&document.activeElement!==document.body;!r&&!v&&Yn(t,R),ct=!0,m.props.page&&Object.assign(k,m.props.page),Q=!1,e==="popstate"&&jt(T),p.fulfil(void 0),z.forEach(_=>_(p.navigation)),D.navigating.set(X.current=null)}async function Dt(e,t,n,r,a){return e.origin===ee&&e.pathname===location.pathname&&!He?await Se({status:r,error:n,url:e,route:t}):await Y(e,a)}function Vn(){let e,t,n;x.addEventListener("mousemove",o=>{const l=o.target;clearTimeout(e),e=setTimeout(()=>{s(l,B.hover)},20)});function r(o){o.defaultPrevented||s(o.composedPath()[0],B.tap)}x.addEventListener("mousedown",r),x.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const l of o)l.isIntersecting&&(Pe(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function s(o,l){const i=_t(o,x),h=i===t&&l>=n;if(!i||h)return;const{url:u,external:d,download:f}=Le(i,$,A.hash);if(d||f)return;const p=ce(i),w=u&&me(y.url)===me(u);if(!(p.reload||w))if(l<=p.preload_data){t=i,n=B.tap;const g=await ae(u,!1);if(!g)return;Dn(g)}else l<=p.preload_code&&(t=i,n=l,Pe(u))}function c(){a.disconnect();for(const o of x.querySelectorAll("a")){const{url:l,external:i,download:h}=Le(o,$,A.hash);if(i||h)continue;const u=ce(o);u.reload||(u.preload_code===B.viewport&&a.observe(o),u.preload_code===B.eager&&Pe(l))}}z.add(c),c()}function W(e,t){if(e instanceof _e)return e.body;const n=le(e),r=In(e);return A.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function sr(e,t={}){return e=new URL(te(e)),e.origin!==ee?Promise.reject(new Error("goto: invalid URL")):ze(e,t,0)}function ir(e){return Bt(e),Pt()}function Bt(e){if(typeof e=="function")ue.push(e);else{const{href:t}=new URL(e,location.href);ue.push(n=>n.href===t)}}function cr(){return ne=!0,Pt()}function lr(e,t){be(E);const n={[N]:E+=1,[M]:T,[Ve]:k.url.href,[ye]:t};history.pushState(n,"",te(e)),Je=!0,k.state=t,re.$set({page:Tt(()=>oe(k))}),$t(E,T)}function fr(e,t){const n={[N]:E,[M]:T,[Ve]:k.url.href,[ye]:t};history.replaceState(n,"",te(e)),k.state=t,re.$set({page:Tt(()=>oe(k))})}function Gn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(lt(),!Q){const r=Qe(y,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};Ut.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&lt()}),navigator.connection?.saveData||Vn(),x.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=_t(t.composedPath()[0],x);if(!n)return;const{url:r,external:a,target:s,download:c}=Le(n,$,A.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const o=ce(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||c)return;const[i,h]=(A.hash?r.hash.replace(/^#/,""):r.href).split("#"),u=i===Re(location);if(a||o.reload&&(!u||!h)){Nt({url:r,type:"link",event:t})?Q=!0:t.preventDefault();return}if(h!==void 0&&u){const[,d]=y.url.href.split("#");if(d===h){if(t.preventDefault(),h===""||h==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const f=n.ownerDocument.getElementById(decodeURIComponent(h));f&&(f.scrollIntoView(),f.focus())}return}if(H=!0,be(E),e(r),!o.replace_state)return;H=!1}t.preventDefault(),await new Promise(d=>{requestAnimationFrame(()=>{setTimeout(d,0)}),setTimeout(d,100)}),await G({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href,event:t})}),x.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const c=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(ve(c,$,!1))return;const o=t.target,l=ce(o);if(l.reload)return;t.preventDefault(),t.stopPropagation();const i=new FormData(o,r);c.search=new URLSearchParams(i).toString(),G({type:"form",url:c,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??c.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!De){if(t.state?.[N]){const n=t.state[N];if(C={},n===E)return;const r=F[n],a=t.state[ye]??{},s=new URL(t.state[Ve]??location.href),c=t.state[M],o=y.url?Re(location)===Re(y.url):!1;if(c===T&&(Je||o)){a!==k.state&&(k.state=a),e(s),F[E]=we(),r&&scrollTo(r.x,r.y),E=n;return}const i=n-E;await G({type:"popstate",url:s,popped:{state:a,scroll:r,delta:i},accept:()=>{E=n,T=c},block:()=>{history.go(-i)},nav_token:C,event:t})}else if(!H){const n=new URL(location.href);e(n),A.hash&&location.reload()}}}),addEventListener("hashchange",()=>{H&&(H=!1,history.replaceState({...history.state,[N]:++E,[M]:T},"",location.href))});for(const t of document.querySelectorAll("link"))Cn.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&D.navigating.set(X.current=null)});function e(t){y.url=k.url=t,D.page.set(oe(k)),D.page.notify()}}async function Wn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:c,data:o,form:l}){He=!0;const i=new URL(location.href);let h;({params:a={},route:s={id:null}}=await ae(i,!1)||{}),h=Ye.find(({id:f})=>f===s.id);let u,d=!0;try{const f=r.map(async(w,g)=>{const m=o[g];return m?.uses&&(m.uses=Ft(m.uses)),Ke({loader:A.nodes[w],url:i,params:a,route:s,parent:async()=>{const I={};for(let R=0;R<g;R+=1)Object.assign(I,(await f[R]).data);return I},server_data_node:Xe(m)})}),p=await Promise.all(f);if(h){const w=h.layouts;for(let g=0;g<w.length;g++)w[g]||p.splice(g,0,void 0)}u=ge({url:i,params:a,branch:p,status:t,error:n,form:l,route:h??null})}catch(f){if(f instanceof Me){await Y(new URL(f.location,location.href));return}u=await Se({status:le(f),error:await W(f,{url:i,params:a,route:s}),url:i,route:s}),e.textContent="",d=!1}u.props.page&&(u.props.page.state={}),xt(u,e,d)}async function Mt(e,t){const n=new URL(e);n.pathname=Ln(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(Tn,"1"),n.searchParams.append(Rn,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new _e(a.status,s)}return new Promise(async s=>{const c=new Map,o=a.body.getReader();function l(h){return At(h,{...A.decoders,Promise:u=>new Promise((d,f)=>{c.set(u,{fulfil:d,reject:f})})})}let i="";for(;;){const{done:h,value:u}=await o.read();if(h&&!i)break;for(i+=!u&&i?`
3
- `:Xt.decode(u,{stream:!0});;){const d=i.indexOf(`
4
- `);if(d===-1)break;const f=JSON.parse(i.slice(0,d));if(i=i.slice(d+1),f.type==="redirect")return s(f);if(f.type==="data")f.nodes?.forEach(p=>{p?.type==="data"&&(p.uses=Ft(p.uses),p.data=l(p.data))}),s(f);else if(f.type==="chunk"){const{id:p,data:w,error:g}=f,m=c.get(p);c.delete(p),g?m.reject(l(g)):m.fulfil(l(w))}}}})}function Ft(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let De=!1;function Yn(e,t=null){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=qt(e);if(r&&document.getElementById(r)){const{x:s,y:c}=t??we();setTimeout(()=>{const o=history.state;De=!0,location.replace(`#${r}`),A.hash&&location.replace(e.hash),history.replaceState(o,"",e.hash),scrollTo(s,c),De=!1})}else{const s=document.body,c=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),c!==null?s.setAttribute("tabindex",c):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let c=0;c<a.rangeCount;c+=1)s.push(a.getRangeAt(c));setTimeout(()=>{if(a.rangeCount===s.length){for(let c=0;c<a.rangeCount;c+=1){const o=s[c],l=a.getRangeAt(c);if(o.commonAncestorContainer!==l.commonAncestorContainer||o.startContainer!==l.startContainer||o.endContainer!==l.endContainer||o.startOffset!==l.startOffset||o.endOffset!==l.endOffset)return}a.removeAllRanges()}})}}}function Qe(e,t,n,r){let a,s;const c=new Promise((l,i)=>{a=l,s=i});return c.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:r,complete:c},fulfil:a,reject:s}}function oe(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Hn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function qt(e){let t;if(A.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{_e as H,Me as R,lr as a,er as b,A as c,tr as d,Qn as e,$ as f,sr as g,Xn as h,cr as i,fr as j,ir as k,Kn as l,or as m,Zn as n,k as p,pe as q,Ot as r,D as s,un as v};