@vantran-se/openchamber-web 2.1.1 → 2.2.0

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 (442) hide show
  1. package/README.md +32 -24
  2. package/bin/cli.js +1 -3
  3. package/bin/cli.test.js +40 -16
  4. package/bin/lib/DOCUMENTATION.md +6 -5
  5. package/bin/lib/cli-args.js +6 -1
  6. package/bin/lib/cli-args.test.js +34 -0
  7. package/bin/lib/cli-lifecycle.js +0 -1
  8. package/bin/lib/cli-network.js +8 -2
  9. package/bin/lib/cli-process.js +1 -1
  10. package/bin/lib/cli-settings-accessors.test.js +21 -13
  11. package/bin/lib/cli-startup.js +17 -11
  12. package/bin/lib/cli-startup.test.js +92 -2
  13. package/bin/lib/commands-connect-url.js +8 -1
  14. package/bin/lib/commands-schedule.js +8 -2
  15. package/bin/lib/commands-serve.js +15 -21
  16. package/bin/lib/commands-update.js +12 -24
  17. package/bin/lib/commands-update.test.js +14 -46
  18. package/dist/assets/DiffView-Cv9MSXl1.js +4 -0
  19. package/dist/assets/FilePreviewCommentMenu-D4kLseHj.js +4 -0
  20. package/dist/assets/FilesView-BVoD8I2x.js +14 -0
  21. package/dist/assets/{GitView-DzuzhIPx.js → GitView-Bzb8p-ew.js} +4 -4
  22. package/dist/assets/GuestSurfacePane-Crdbvsxo.js +1 -0
  23. package/dist/assets/InProgressOperationBanner-CwMjNQgk.js +2 -0
  24. package/dist/assets/{JsonTreeView-B_EPRjzy.js → JsonTreeView-DRKHZfsn.js} +1 -1
  25. package/dist/assets/MarkdownImageGallery-DZtqT1Zn.js +1 -0
  26. package/dist/assets/MarkdownRendererImpl-CqG7HCNd.js +10 -0
  27. package/dist/assets/OnboardingScreen-DMIxwYK5.js +1 -0
  28. package/dist/assets/{PatchDiff-6yh1csza.js → PatchDiff-CUcCg1jk.js} +1 -1
  29. package/dist/assets/PierreDiffViewer-CnnR-dnD.js +228 -0
  30. package/dist/assets/PlanView-RCBadcY7.js +5 -0
  31. package/dist/assets/SettingsView-CjBjZFRO.js +30 -0
  32. package/dist/assets/SettingsWindow-DyM7QuhI.js +1 -0
  33. package/dist/assets/SubmoduleDiffSummary-BWIfgMED.js +1 -0
  34. package/dist/assets/ToolOutputDialog-Q0P3FuAi.js +15 -0
  35. package/dist/assets/ToolPartDiffPreview-p7qR9FpU.js +8 -0
  36. package/dist/assets/{VirtualizedFileDiff-BTJVRkyo.js → VirtualizedFileDiff-CFpjL8Ns.js} +3 -3
  37. package/dist/assets/{Virtualizer-xCEYz34p.js → Virtualizer-C0IsclZn.js} +1 -1
  38. package/dist/assets/WalkthroughView-DI31zD02.js +4 -0
  39. package/dist/assets/appThemeRegistry-B9gkFq9i.js +1 -0
  40. package/dist/assets/{computeVirtualFileMetrics-CmPe29DM.js → computeVirtualFileMetrics-C2WM6JC2.js} +2 -2
  41. package/dist/assets/de-YKfk5MmC.js +14 -0
  42. package/dist/assets/es-_gwT0kr-.js +20 -0
  43. package/dist/assets/fileTreeStatus-D438yi8M.js +1 -0
  44. package/dist/assets/fr-DqzvXmIm.js +18 -0
  45. package/dist/assets/index-BLaHKdtx.js +1 -0
  46. package/dist/assets/index-BkMXRrVQ.css +1 -0
  47. package/dist/assets/index-DxNa7xYB.js +65 -0
  48. package/dist/assets/initializeSharedPreferences-Bck5EAWP.js +1 -0
  49. package/dist/assets/{isDiffPlainText-CQmDCnEv.js → isDiffPlainText-Dgbw8VKk.js} +1 -1
  50. package/dist/assets/{isFilePlainText-CYBUzW4I.js → isFilePlainText-_ZS5UYRj.js} +1 -1
  51. package/dist/assets/ja-B-GFYhQE.js +20 -0
  52. package/dist/assets/ko-mzksfqDC.js +20 -0
  53. package/dist/assets/main-C5Xx8dn_.js +2 -0
  54. package/dist/assets/main-CfBSQM1H.js +990 -0
  55. package/dist/assets/markdownCore-BmWwW1ll.js +7 -0
  56. package/dist/assets/miniChat-mnKwy4vQ.js +2 -0
  57. package/dist/assets/mobile-DeEQd0wZ.js +2 -0
  58. package/dist/assets/nl-CWQr6NSq.js +20 -0
  59. package/dist/assets/{parseDiffFromFile-Cy0PNxun.js → parseDiffFromFile-BUgn-T9p.js} +2 -2
  60. package/dist/assets/patchFileDiff-Dt8LhgBh.js +13 -0
  61. package/dist/assets/pl-UmRcDUX2.js +20 -0
  62. package/dist/assets/pt-BR-BSLybvVF.js +20 -0
  63. package/dist/assets/relocateRestoredSession-B5E9xb3T.js +1 -0
  64. package/dist/assets/renderElectronMiniChatApp-C0a9A5_J.js +2 -0
  65. package/dist/assets/renderMobileApp-BNncg3Pk.js +25 -0
  66. package/dist/assets/runtimeEndpointReset-CZ5aafpl.js +62 -0
  67. package/dist/assets/{selectionMarkdown-TkYk5h9l.js → selectionMarkdown-CUN3wUld.js} +9 -9
  68. package/dist/assets/{sessionOwnership-Bs1xbRfB.js → sessionOwnership-BSuxCEhb.js} +1 -1
  69. package/dist/assets/shikiHighlight-DHDx-6eM.js +1 -0
  70. package/dist/assets/space-apply-DM_2pRW7.js +1 -0
  71. package/dist/assets/space-close-Bpomt8z0.js +1 -0
  72. package/dist/assets/{surface-B6n7wJtt.js → surface-C-jQaGnL.js} +1 -1
  73. package/dist/assets/{textMateThemeFromAppTheme-CDlKffWz.js → textMateThemeFromAppTheme-DlsTphbY.js} +1 -1
  74. package/dist/assets/tr-gaTrX_HK.js +11 -0
  75. package/dist/assets/uk-CnJF6ykl.js +20 -0
  76. package/dist/assets/{useAppFontEffects-DCqCVGlT.js → useAppFontEffects-DGlvOqP_.js} +194 -233
  77. package/dist/assets/useInlineCommentController-kMN4Wg_D.js +2 -0
  78. package/dist/assets/{useRootScrollLock-BowwS8kq.js → useRootScrollLock-DMPpvpNP.js} +2 -2
  79. package/dist/assets/{vendor-base-ui-DX96QhTP.js → vendor-base-ui-Det7U81h.js} +1 -1
  80. package/dist/assets/{vendor-codemirror-autocomplete-DW1FQz9_.js → vendor-codemirror-autocomplete-BSHQHbKu.js} +1 -1
  81. package/dist/assets/{vendor-codemirror-commands-DpmhalwN.js → vendor-codemirror-commands-C4G_dPWe.js} +1 -1
  82. package/dist/assets/{vendor-codemirror-lang-angular-BqExbN1M.js → vendor-codemirror-lang-angular-B6LbBGHB.js} +1 -1
  83. package/dist/assets/{vendor-codemirror-lang-cpp-DZA36HfS.js → vendor-codemirror-lang-cpp-BWWXBx7W.js} +1 -1
  84. package/dist/assets/{vendor-codemirror-lang-css-B07blnnZ.js → vendor-codemirror-lang-css-Cayfb29q.js} +1 -1
  85. package/dist/assets/{vendor-codemirror-lang-go-BM8K9D1-.js → vendor-codemirror-lang-go-BoKlCNKw.js} +1 -1
  86. package/dist/assets/{vendor-codemirror-lang-html-DaH9adfE.js → vendor-codemirror-lang-html-BQWerHsJ.js} +1 -1
  87. package/dist/assets/{vendor-codemirror-lang-java-CsdC0viz.js → vendor-codemirror-lang-java-DWX7Fq_K.js} +1 -1
  88. package/dist/assets/{vendor-codemirror-lang-javascript-CpGYXGuo.js → vendor-codemirror-lang-javascript-DbpEcZM0.js} +2 -2
  89. package/dist/assets/{vendor-codemirror-lang-jinja-BBeGzXw5.js → vendor-codemirror-lang-jinja-D1JIJRA7.js} +1 -1
  90. package/dist/assets/{vendor-codemirror-lang-json-58T70Hqs.js → vendor-codemirror-lang-json-BzgckzmB.js} +1 -1
  91. package/dist/assets/{vendor-codemirror-lang-less-BI-xCA59.js → vendor-codemirror-lang-less-B9EpDXFi.js} +1 -1
  92. package/dist/assets/{vendor-codemirror-lang-liquid-zEcMa-zy.js → vendor-codemirror-lang-liquid-9U7kRbSf.js} +1 -1
  93. package/dist/assets/{vendor-codemirror-lang-markdown-BLKnlLP4.js → vendor-codemirror-lang-markdown-D2TEBIvZ.js} +1 -1
  94. package/dist/assets/{vendor-codemirror-lang-php-9f35M83-.js → vendor-codemirror-lang-php-BT6sDVzE.js} +1 -1
  95. package/dist/assets/vendor-codemirror-lang-python-jAMtYiA9.js +3 -0
  96. package/dist/assets/{vendor-codemirror-lang-rust-MNDL_jZQ.js → vendor-codemirror-lang-rust-CVO56EiL.js} +1 -1
  97. package/dist/assets/{vendor-codemirror-lang-sass-p9epsSNm.js → vendor-codemirror-lang-sass-DZlOoUWu.js} +1 -1
  98. package/dist/assets/{vendor-codemirror-lang-sql-Bqzh0EXX.js → vendor-codemirror-lang-sql-fZ6t1DPw.js} +1 -1
  99. package/dist/assets/{vendor-codemirror-lang-vue-BnNUWV-p.js → vendor-codemirror-lang-vue-DxbqrLiE.js} +1 -1
  100. package/dist/assets/{vendor-codemirror-lang-wast-C2a-oLmk.js → vendor-codemirror-lang-wast-DyU1Gt-I.js} +1 -1
  101. package/dist/assets/vendor-codemirror-lang-xml-C9a_K5_p.js +1 -0
  102. package/dist/assets/{vendor-codemirror-lang-yaml-C0sjswB0.js → vendor-codemirror-lang-yaml-Cptq8l0e.js} +1 -1
  103. package/dist/assets/{vendor-codemirror-language-ByBn5zIW.js → vendor-codemirror-language-DufXoQvE.js} +2 -2
  104. package/dist/assets/vendor-codemirror-language-data-CtwSWKtX.js +2 -0
  105. package/dist/assets/{vendor-codemirror-search-ib-sHD5W.js → vendor-codemirror-search-CvXM_pZg.js} +1 -1
  106. package/dist/assets/{vendor-codemirror-state-G3UuR-be.js → vendor-codemirror-state-Dek9sMtw.js} +1 -1
  107. package/dist/assets/{vendor-codemirror-view-Bniqp7p5.js → vendor-codemirror-view-1e0FQ6Wn.js} +1 -1
  108. package/dist/assets/vendor-framer-motion-DxDVhOLc.js +9 -0
  109. package/dist/assets/vendor-katex-CuQvj9-L.js +257 -0
  110. package/dist/assets/vendor-katex-DdZNUVNG.css +1 -0
  111. package/dist/assets/{vendor-motion-dom-DcCgeG69.js → vendor-motion-dom-HXPOMxb7.js} +1 -1
  112. package/dist/assets/{vendor-opencode-client-DHzhmLwV.js → vendor-opencode-client-BmFcUkbQ.js} +1 -1
  113. package/dist/assets/{vendor-replit-codemirror-vim-DkzqxN2H.js → vendor-replit-codemirror-vim-BlJRn-cW.js} +2 -2
  114. package/dist/assets/{vendor-tanstack-react-virtual-H_JmXOFV.js → vendor-tanstack-react-virtual-CvuLsk7D.js} +1 -1
  115. package/dist/assets/{vendor-tanstack-virtual-core-Dxc8hSTB.js → vendor-tanstack-virtual-core-DPaNcJcT.js} +1 -1
  116. package/dist/assets/zh-CN-t2vigSB1.js +20 -0
  117. package/dist/assets/zh-TW-jAgqBokB.js +20 -0
  118. package/dist/index.html +6 -6
  119. package/dist/mini-chat.html +6 -6
  120. package/dist/mobile.html +6 -6
  121. package/package.json +8 -5
  122. package/server/index.js +80 -36
  123. package/server/lib/agent-memory/actions.js +1 -6
  124. package/server/lib/agent-memory/routes.js +1 -2
  125. package/server/lib/agent-memory/runtime.js +1 -8
  126. package/server/lib/agent-tool/DOCUMENTATION.md +7 -3
  127. package/server/lib/agent-tool/runtime.js +3 -6
  128. package/server/lib/agent-tool/runtime.test.js +0 -2
  129. package/server/lib/browser-control/DOCUMENTATION.md +6 -0
  130. package/server/lib/changelog/update-notes.js +1 -1
  131. package/server/lib/context-obligatory/runtime.js +1 -2
  132. package/server/lib/dev-tunnel/DOCUMENTATION.md +8 -0
  133. package/server/lib/dev-tunnel/client.js +21 -10
  134. package/server/lib/dev-tunnel/tunnel.test.js +34 -0
  135. package/server/lib/dispatch-results/runtime.js +1 -1
  136. package/server/lib/enterprise-mode.d.ts +1 -0
  137. package/server/lib/enterprise-mode.js +13 -2
  138. package/server/lib/enterprise-mode.test.js +21 -0
  139. package/server/lib/event-stream/DOCUMENTATION.md +2 -2
  140. package/server/lib/event-stream/index.js +1 -3
  141. package/server/lib/event-stream/translate-v2.js +1 -9
  142. package/server/lib/event-stream/translate-v2.test.js +0 -11
  143. package/server/lib/fs/DOCUMENTATION.md +5 -2
  144. package/server/lib/fs/routes.js +62 -15
  145. package/server/lib/fs/routes.test.js +278 -48
  146. package/server/lib/fs/workspace-file-names.js +104 -0
  147. package/server/lib/fs/workspace-file-names.test.js +62 -0
  148. package/server/lib/git/DOCUMENTATION.md +17 -5
  149. package/server/lib/git/contributor-provenance-storage.js +9 -6
  150. package/server/lib/git/contributor-provenance-storage.test.js +29 -0
  151. package/server/lib/git/credential-broker.js +1 -1
  152. package/server/lib/git/credential-resolver.js +1 -4
  153. package/server/lib/git/credentials.js +1 -0
  154. package/server/lib/git/discovery-endpoint.js +1 -1
  155. package/server/lib/git/identity-provisioning.js +2 -1
  156. package/server/lib/git/identity-storage.js +3 -4
  157. package/server/lib/git/lfs-discovery.js +14 -14
  158. package/server/lib/git/lfs-discovery.test.js +16 -6
  159. package/server/lib/git/network-operation-plan.js +50 -62
  160. package/server/lib/git/network-operation-plan.test.js +103 -1
  161. package/server/lib/git/network-operation-registry.js +4 -6
  162. package/server/lib/git/network-operation-storage.js +4 -6
  163. package/server/lib/git/network-operations.js +12 -4
  164. package/server/lib/git/network-operations.test.js +19 -6
  165. package/server/lib/git/redaction.js +2 -1
  166. package/server/lib/git/repository-credential-runtime.js +5 -3
  167. package/server/lib/git/repository-credential-runtime.test.js +22 -0
  168. package/server/lib/git/routes.js +31 -137
  169. package/server/lib/git/routes.test.js +2 -2
  170. package/server/lib/git/service.js +143 -27
  171. package/server/lib/git/service.test.js +215 -1
  172. package/server/lib/git/ssh-credential-storage.js +1 -4
  173. package/server/lib/git/submodule-discovery.js +1 -1
  174. package/server/lib/git/worktree-bootstrap-storage.js +3 -4
  175. package/server/lib/git/worktree-bootstrap-storage.test.js +15 -0
  176. package/server/lib/git/worktree-creation.js +194 -0
  177. package/server/lib/git/worktree-creation.test.js +155 -0
  178. package/server/lib/github/DOCUMENTATION.md +11 -6
  179. package/server/lib/github/auth.js +2 -4
  180. package/server/lib/github/device-flow.js +2 -2
  181. package/server/lib/github/gh-cli-credential.js +1 -0
  182. package/server/lib/github/octokit.js +31 -0
  183. package/server/lib/github/pr-status.js +35 -18
  184. package/server/lib/github/pr-status.test.js +271 -3
  185. package/server/lib/github/reference-search.js +102 -13
  186. package/server/lib/github/reference-search.test.js +48 -7
  187. package/server/lib/github/routes.auth.test.js +18 -0
  188. package/server/lib/github/routes.js +360 -6
  189. package/server/lib/github/routes.mutations.test.js +239 -0
  190. package/server/lib/github/routes.test.js +134 -2
  191. package/server/lib/gitlab/DOCUMENTATION.md +5 -1
  192. package/server/lib/gitlab/auth-storage.test.js +1 -0
  193. package/server/lib/gitlab/mappers.js +30 -1
  194. package/server/lib/gitlab/resources.js +230 -6
  195. package/server/lib/gitlab/resources.test.js +179 -0
  196. package/server/lib/gitlab/routes.js +200 -6
  197. package/server/lib/gitlab/routes.test.js +186 -2
  198. package/server/lib/gitlab/validation.js +1 -5
  199. package/server/lib/guests/DOCUMENTATION.md +1 -1
  200. package/server/lib/guests/oauth.js +2 -2
  201. package/server/lib/guests/service.js +1 -1
  202. package/server/lib/guests/sockets.js +1 -1
  203. package/server/lib/injected-env.d.ts +8 -0
  204. package/server/lib/injected-env.js +50 -0
  205. package/server/lib/injected-env.test.js +56 -0
  206. package/server/lib/linear/DOCUMENTATION.md +5 -6
  207. package/server/lib/linear/issues.js +62 -4
  208. package/server/lib/linear/issues.test.js +68 -0
  209. package/server/lib/linear/oauth.js +5 -5
  210. package/server/lib/linear/parse.js +2 -9
  211. package/server/lib/message-queue/DOCUMENTATION.md +23 -1
  212. package/server/lib/message-queue/runtime.js +85 -12
  213. package/server/lib/message-queue/runtime.test.js +172 -2
  214. package/server/lib/notifications/apns-runtime.js +5 -6
  215. package/server/lib/notifications/apns-runtime.test.js +20 -4
  216. package/server/lib/openchamber-control/DOCUMENTATION.md +19 -1
  217. package/server/lib/openchamber-control/actions.js +2 -1
  218. package/server/lib/openchamber-control/service.js +119 -20
  219. package/server/lib/openchamber-control/service.test.js +166 -0
  220. package/server/lib/openchamber-sessions/archive-store.js +1 -6
  221. package/server/lib/openchamber-sessions/routes.js +47 -12
  222. package/server/lib/openchamber-sessions/routes.test.js +65 -2
  223. package/server/lib/openchamber-sessions/session-metadata-store.js +1 -6
  224. package/server/lib/opencode/DOCUMENTATION.md +22 -8
  225. package/server/lib/opencode/agents.js +62 -0
  226. package/server/lib/opencode/auth-state-runtime.js +3 -1
  227. package/server/lib/opencode/auth.d.ts +1 -1
  228. package/server/lib/opencode/auth.js +8 -0
  229. package/server/lib/opencode/auth.test.js +31 -0
  230. package/server/lib/opencode/config-entity-routes.js +16 -0
  231. package/server/lib/opencode/config-entity-v2.test.js +16 -1
  232. package/server/lib/opencode/config-paths.test.js +2 -2
  233. package/server/lib/opencode/config-v2.js +2 -4
  234. package/server/lib/opencode/feature-routes-runtime.js +89 -49
  235. package/server/lib/opencode/lifecycle.js +41 -21
  236. package/server/lib/opencode/lifecycle.test.js +50 -2
  237. package/server/lib/opencode/model-discovery.js +1 -1
  238. package/server/lib/opencode/model-discovery.test.js +17 -0
  239. package/server/lib/opencode/models-metadata.js +0 -2
  240. package/server/lib/opencode/openchamber-routes.test.js +3 -3
  241. package/server/lib/opencode/plugins.js +6 -9
  242. package/server/lib/opencode/provider-source-route.test.js +101 -3
  243. package/server/lib/opencode/providers-disabled.test.js +59 -0
  244. package/server/lib/opencode/providers.js +34 -0
  245. package/server/lib/opencode/proxy.js +11 -3
  246. package/server/lib/opencode/routes.js +40 -2
  247. package/server/lib/opencode/settings-helpers.js +27 -1
  248. package/server/lib/opencode/settings-helpers.test.js +19 -7
  249. package/server/lib/opencode/settings-registry.json +27 -16
  250. package/server/lib/opencode/settings-runtime.test.js +18 -0
  251. package/server/lib/opencode/shared-service-runtime.js +23 -104
  252. package/server/lib/opencode/shared.js +77 -46
  253. package/server/lib/opencode/shared.test.js +12 -12
  254. package/server/lib/opencode/shutdown-runtime.test.js +2 -3
  255. package/server/lib/opencode/skill-routes.js +123 -38
  256. package/server/lib/opencode/skill-routes.test.js +201 -0
  257. package/server/lib/opencode/skills.js +81 -34
  258. package/server/lib/opencode/skills.test.js +176 -21
  259. package/server/lib/opencode/startup-pipeline-runtime.js +6 -3
  260. package/server/lib/opencode/startup-pipeline-runtime.test.js +2 -1
  261. package/server/lib/opencode/watcher.test.js +0 -54
  262. package/server/lib/outbound-proxy.js +52 -0
  263. package/server/lib/outbound-proxy.test.js +55 -0
  264. package/server/lib/package-manager.js +23 -17
  265. package/server/lib/package-manager.test.js +5 -18
  266. package/server/lib/permission-auto-accept/DOCUMENTATION.md +1 -1
  267. package/server/lib/permission-auto-accept/runtime.js +19 -47
  268. package/server/lib/permission-auto-accept/runtime.test.js +2 -2
  269. package/server/lib/project-context/DOCUMENTATION.md +7 -1
  270. package/server/lib/project-context/routes.js +1 -2
  271. package/server/lib/project-context/runtime.js +12 -14
  272. package/server/lib/project-context/runtime.test.js +78 -2
  273. package/server/lib/projects/project-config.js +30 -15
  274. package/server/lib/projects/project-config.test.js +30 -0
  275. package/server/lib/projects/project-setup.js +1 -2
  276. package/server/lib/projects/routes.js +1 -2
  277. package/server/lib/quota/DOCUMENTATION.md +35 -7
  278. package/server/lib/quota/index.js +1 -0
  279. package/server/lib/quota/providers/claude/index.js +1 -1
  280. package/server/lib/quota/providers/cline-pass.js +1 -1
  281. package/server/lib/quota/providers/exe-dev.js +1 -1
  282. package/server/lib/quota/providers/google/index.js +1 -1
  283. package/server/lib/quota/providers/hyper.js +1 -1
  284. package/server/lib/quota/providers/kimi.js +116 -36
  285. package/server/lib/quota/providers/kimi.test.js +128 -3
  286. package/server/lib/quota/providers/opencode-go.js +144 -21
  287. package/server/lib/quota/providers/opencode-go.test.js +229 -6
  288. package/server/lib/quota/providers/openrouter.js +1 -1
  289. package/server/lib/quota/providers/zenmux.js +1 -1
  290. package/server/lib/quota/utils/auth.js +1 -0
  291. package/server/lib/quota/utils/transformers.js +2 -6
  292. package/server/lib/relay/DOCUMENTATION.md +18 -3
  293. package/server/lib/relay/e2ee.js +7 -7
  294. package/server/lib/relay/host-client.js +84 -13
  295. package/server/lib/relay/host-client.test.js +201 -1
  296. package/server/lib/relay/identity.js +6 -29
  297. package/server/lib/relay/identity.test.js +18 -28
  298. package/server/lib/relay/key-store.js +141 -0
  299. package/server/lib/relay/key-store.test.js +138 -0
  300. package/server/lib/relay/service.js +8 -8
  301. package/server/lib/relay/service.test.js +10 -5
  302. package/server/lib/relay/signing-key.js +13 -36
  303. package/server/lib/relay/tunnel-codec.js +10 -10
  304. package/server/lib/route-module-exports.test.js +22 -0
  305. package/server/lib/routing/DOCUMENTATION.md +23 -3
  306. package/server/lib/routing/cache.js +87 -0
  307. package/server/lib/routing/defaults.js +11 -0
  308. package/server/lib/routing/history.js +12 -4
  309. package/server/lib/routing/runtime.js +39 -3
  310. package/server/lib/routing/runtime.test.js +81 -2
  311. package/server/lib/routing/store.js +12 -1
  312. package/server/lib/routing/store.test.js +13 -0
  313. package/server/lib/scheduled-tasks/DOCUMENTATION.md +59 -1
  314. package/server/lib/scheduled-tasks/existing-session.js +119 -0
  315. package/server/lib/scheduled-tasks/existing-session.test.js +350 -0
  316. package/server/lib/scheduled-tasks/loops.js +1 -8
  317. package/server/lib/scheduled-tasks/routes.js +8 -8
  318. package/server/lib/scheduled-tasks/runtime.js +103 -13
  319. package/server/lib/scheduled-tasks/runtime.test.js +48 -0
  320. package/server/lib/scheduled-tasks/service.js +33 -11
  321. package/server/lib/scheduled-tasks/service.test.js +128 -2
  322. package/server/lib/scheduled-tasks/session-defaults.js +27 -0
  323. package/server/lib/scheduled-tasks/session-defaults.test.js +19 -0
  324. package/server/lib/session-assist/context.js +1 -0
  325. package/server/lib/session-folders/routes.js +2 -2
  326. package/server/lib/session-goal/objectives.js +1 -1
  327. package/server/lib/session-knowledge/routes.js +2 -2
  328. package/server/lib/session-knowledge/runtime.js +1 -2
  329. package/server/lib/session-work/DOCUMENTATION.md +39 -14
  330. package/server/lib/session-work/questions.js +31 -2
  331. package/server/lib/session-work/runtime.js +22 -13
  332. package/server/lib/session-work/runtime.test.js +43 -26
  333. package/server/lib/session-work/state.js +10 -4
  334. package/server/lib/session-work/state.test.js +8 -1
  335. package/server/lib/shared/DOCUMENTATION.md +89 -0
  336. package/server/lib/shared/guards.js +53 -0
  337. package/server/lib/shared/guards.test.js +112 -0
  338. package/server/lib/skills-catalog/DOCUMENTATION.md +10 -8
  339. package/server/lib/skills-catalog/cache.js +3 -2
  340. package/server/lib/skills-catalog/curated-sources.js +5 -1
  341. package/server/lib/skills-catalog/git.js +107 -20
  342. package/server/lib/skills-catalog/git.test.js +78 -0
  343. package/server/lib/skills-catalog/install.js +21 -12
  344. package/server/lib/skills-catalog/scan.js +25 -15
  345. package/server/lib/skills-catalog/source.js +26 -1
  346. package/server/lib/skills-catalog/source.test.js +27 -0
  347. package/server/lib/source-control/DOCUMENTATION.md +2 -1
  348. package/server/lib/source-control/audit-storage.js +7 -6
  349. package/server/lib/source-control/audit-storage.test.js +11 -0
  350. package/server/lib/source-control/binding-service.js +2 -5
  351. package/server/lib/source-control/change-request-worktree.js +90 -0
  352. package/server/lib/source-control/change-request-worktree.test.js +121 -0
  353. package/server/lib/source-control/mutation-executor.js +1 -1
  354. package/server/lib/source-control/mutation-storage.js +11 -5
  355. package/server/lib/source-control/provider-instance.js +1 -2
  356. package/server/lib/source-control/repository-identity.js +1 -1
  357. package/server/lib/source-control/routes.js +14 -2
  358. package/server/lib/spaces/DOCUMENTATION.md +42 -17
  359. package/server/lib/spaces/command-stream.test.js +15 -0
  360. package/server/lib/spaces/dispatcher.js +7 -0
  361. package/server/lib/spaces/dispatcher.test.js +17 -0
  362. package/server/lib/spaces/hardening.js +2 -2
  363. package/server/lib/spaces/hardening.test.js +1 -1
  364. package/server/lib/spaces/host.js +2 -0
  365. package/server/lib/spaces/journey.js +66 -5
  366. package/server/lib/spaces/journey.test.js +95 -4
  367. package/server/lib/spaces/layout.js +1 -1
  368. package/server/lib/spaces/places/docker-disk.js +38 -14
  369. package/server/lib/spaces/places/docker-disk.test.js +80 -1
  370. package/server/lib/spaces/places/docker.js +35 -11
  371. package/server/lib/spaces/places/fake-docker.js +22 -3
  372. package/server/lib/spaces/places/memory-place.js +3 -0
  373. package/server/lib/spaces/places/packed.docker.live.test.js +1 -1
  374. package/server/lib/spaces/routes.js +5 -0
  375. package/server/lib/spaces/routes.test.js +4 -2
  376. package/server/lib/spaces/run-command.js +9 -2
  377. package/server/lib/spaces/tools.js +4 -5
  378. package/server/lib/spaces/tools.test.js +2 -2
  379. package/server/lib/terminal/runtime.js +18 -6
  380. package/server/lib/terminal/runtime.test.js +66 -0
  381. package/server/lib/tts/index.js +3 -0
  382. package/server/lib/tts/service.js +4 -2
  383. package/server/lib/walkthrough/DOCUMENTATION.md +3 -1
  384. package/server/lib/walkthrough/index.js +2 -3
  385. package/server/lib/walkthrough/pr-source.test.js +22 -0
  386. package/server/lib/walkthrough/sources.js +6 -1
  387. package/server/opencode-proxy.test.js +127 -0
  388. package/bin/lib/commands-startup.test.js +0 -15
  389. package/dist/assets/CodeMirrorCommentWidgets-CVDSjcrP.js +0 -1
  390. package/dist/assets/DiffView-Ct7vL3fD.js +0 -4
  391. package/dist/assets/FilesView-DT0uEYgT.js +0 -17
  392. package/dist/assets/GuestSurfacePane-DVvk1VPu.js +0 -1
  393. package/dist/assets/LinearIssuesView-C10MwA9h.js +0 -1
  394. package/dist/assets/MarkdownImageGallery-BbN_K_3d.js +0 -1
  395. package/dist/assets/MarkdownRendererImpl-BLt2Tkk9.js +0 -10
  396. package/dist/assets/OnboardingScreen-Bgp5A3WB.js +0 -1
  397. package/dist/assets/PierreDiffViewer-CWJLj-S-.js +0 -210
  398. package/dist/assets/PlanView-DsRWnsOI.js +0 -5
  399. package/dist/assets/PublishDialog-CCeKloRu.js +0 -2
  400. package/dist/assets/SettingsView-BuPPsNPp.js +0 -30
  401. package/dist/assets/SettingsWindow-CM5fL8Ot.js +0 -1
  402. package/dist/assets/SubmoduleDiffSummary-CfsMcfiQ.js +0 -1
  403. package/dist/assets/ToolOutputDialog-mZrfSofz.js +0 -15
  404. package/dist/assets/ToolPartDiffPreview-BUGCRYEL.js +0 -8
  405. package/dist/assets/WalkthroughView-ClBo7PPd.js +0 -4
  406. package/dist/assets/appThemeRegistry-CxzMxR-H.js +0 -1
  407. package/dist/assets/de-CBla4hjd.js +0 -14
  408. package/dist/assets/es-BmnZtxTD.js +0 -20
  409. package/dist/assets/fileTreeStatus-BSHFIGEg.js +0 -1
  410. package/dist/assets/fr-OVKIBUZO.js +0 -18
  411. package/dist/assets/index-CKCFKmjF.js +0 -1
  412. package/dist/assets/index-Dbx4V4GN.css +0 -1
  413. package/dist/assets/index-vQ1Pg1cr.js +0 -61
  414. package/dist/assets/ja-6v-yr-gE.js +0 -20
  415. package/dist/assets/ko-I_ZLvgQ9.js +0 -20
  416. package/dist/assets/main-CmO4dRtR.js +0 -2
  417. package/dist/assets/main-b9vqhlYM.js +0 -999
  418. package/dist/assets/markdownCore-BPEZRQfP.js +0 -7
  419. package/dist/assets/miniChat-B5Oi7B-6.js +0 -2
  420. package/dist/assets/mobile-CVtShif9.js +0 -2
  421. package/dist/assets/nl-DcvIJf46.js +0 -20
  422. package/dist/assets/patchFileDiff-CW3wCH1O.js +0 -13
  423. package/dist/assets/pl-JxCUl0sd.js +0 -20
  424. package/dist/assets/pt-BR-L89mjja2.js +0 -20
  425. package/dist/assets/relocateRestoredSession-DYh_9oBa.js +0 -1
  426. package/dist/assets/renderElectronMiniChatApp-BD-1JHSg.js +0 -2
  427. package/dist/assets/renderMobileApp-7s5InXt1.js +0 -25
  428. package/dist/assets/runtimeEndpointReset-DqLJC6L1.js +0 -53
  429. package/dist/assets/shikiHighlight-CXgZnvHh.js +0 -1
  430. package/dist/assets/space-apply-1trGVIl8.js +0 -1
  431. package/dist/assets/space-close-y7j-NuBv.js +0 -1
  432. package/dist/assets/tr-ka5J1flt.js +0 -11
  433. package/dist/assets/uk-PyGe6Q_u.js +0 -20
  434. package/dist/assets/useInlineCommentController-CrjSGCpi.js +0 -2
  435. package/dist/assets/vendor-codemirror-lang-python-B7ClrMIT.js +0 -3
  436. package/dist/assets/vendor-codemirror-lang-xml-C8tGnS64.js +0 -1
  437. package/dist/assets/vendor-codemirror-language-data-q2bKO1EM.js +0 -2
  438. package/dist/assets/vendor-framer-motion-Bq3iTZ6r.js +0 -1
  439. package/dist/assets/vendor-katex-CHD9BdDO.js +0 -257
  440. package/dist/assets/vendor-katex-Cp579UoJ.css +0 -1
  441. package/dist/assets/zh-CN-B0P2tybJ.js +0 -20
  442. package/dist/assets/zh-TW-Bs9C5cN8.js +0 -20
@@ -0,0 +1 @@
1
+ import{R as i,j as u}from"./vendor-react-BUCujlKS.js";import{mO as Z,f as _,cv as ee,km as te,h as S,B as q,g as ne,mP as re,mQ as L}from"./useAppFontEffects-DGlvOqP_.js";import{cN as se,bs as ie,bt as oe,au as ce,aq as ae}from"./index-DxNa7xYB.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-CxRSdNoV.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-Det7U81h.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-tanstack-react-virtual-CvuLsk7D.js";import"./vendor-tanstack-virtual-core-DPaNcJcT.js";import"./vendor-framer-motion-DxDVhOLc.js";import"./vendor-motion-dom-HXPOMxb7.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-codemirror-commands-C4G_dPWe.js";import"./vendor-codemirror-state-Dek9sMtw.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-1e0FQ6Wn.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-language-DufXoQvE.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-DbpEcZM0.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-BSHQHbKu.js";import"./vendor-codemirror-lang-json-BzgckzmB.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-Cayfb29q.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-BQWerHsJ.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-D2TEBIvZ.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CtwSWKtX.js";import"./vendor-codemirror-lang-python-jAMtYiA9.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-capacitor-core-B4EWRrHz.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-BmFcUkbQ.js";const ue=1,le=8e3,de=6e4,he={refreshAuth:ie,clearUrlAuthToken:se,openSocket:s=>oe(ce().websocket(`/api/guests/${s}/surface/ws`)),isPaused:()=>document.visibilityState==="hidden"||!navigator.onLine,onWake:s=>(window.addEventListener("online",s),document.addEventListener("visibilitychange",s),()=>{window.removeEventListener("online",s),document.removeEventListener("visibilitychange",s)})};class pe{constructor(r,n,c=he){this.guestId=r,this.handlers=n,this.dependencies=c}socket=null;pendingFrame=null;reconnectTimer=null;wakeCleanup=null;failures=0;generation=0;disposed=!1;ended=!1;start(){this.handlers.onConnection({status:"connecting"}),this.connect()}dispose(){this.disposed=!0,this.generation+=1,this.cancelReconnect();const r=this.socket;if(this.socket=null,r)try{r.close()}catch{}}ack(r){this.send({type:"ack",seq:r})}sendInput(r){return r.length===0?!1:this.send({type:"input",events:r})}release(){this.send({type:"release"})}resize(r,n){this.send({type:"resize",width:r,height:n})}requestClipboard(r){this.send({type:"clipboard-read",id:r})}send(r){const n=this.socket;if(!n||n.readyState!==ue)return!1;try{return n.send(JSON.stringify(r)),!0}catch{return!1}}async connect(){if(this.disposed||this.ended)return;const r=this.generation;try{await this.dependencies.refreshAuth()}catch{this.scheduleReconnect();return}if(r!==this.generation||this.disposed)return;let n;try{n=this.dependencies.openSocket(this.guestId)}catch{this.scheduleReconnect();return}n.binaryType="arraybuffer",this.socket=n;let c=!1;n.onopen=()=>{this.socket===n&&(c=!0,this.failures=0,this.pendingFrame=null,this.handlers.onConnection({status:"open"}))},n.onmessage=p=>{this.socket===n&&this.handleMessage(p.data)},n.onerror=()=>{},n.onclose=()=>{this.socket===n&&(this.socket=null,this.pendingFrame=null,!(this.disposed||this.ended)&&(c||this.dependencies.clearUrlAuthToken(),this.scheduleReconnect()))}}handleMessage(r){if(r instanceof ArrayBuffer){const c=this.pendingFrame;if(this.pendingFrame=null,!c)return;this.handlers.onFrame({...c,bytes:r});return}let n;try{const c=Z.safeParse(JSON.parse(r));if(!c.success)return;n=c.data}catch{return}switch(n.type){case"hello":this.handlers.onViewer?.(n.viewerId);return;case"frame":this.pendingFrame={seq:n.seq,width:n.width,height:n.height,mime:n.mime,agentActive:n.agentActive},n.title&&(this.pendingFrame.title=n.title);return;case"control":this.handlers.onControl({controller:n.controller,mine:n.mine});return;case"resized":this.handlers.onResized?.({width:n.width,height:n.height});return;case"clipboard":this.handlers.onClipboard?.(n.id,n.text);return;case"error":this.handlers.onError?.(n.code,n.message);return;case"ended":this.ended=!0,this.cancelReconnect(),this.handlers.onConnection({status:"ended",reason:n.reason});return}}retry(){this.disposed||(this.ended=!1,this.failures=0,this.handlers.onConnection({status:"connecting"}),this.connect())}scheduleReconnect(){if(this.reconnectTimer||this.disposed||this.ended)return;this.failures+=1;const r=this.dependencies.isPaused()?de:Math.min(500*2**Math.min(this.failures-1,10),le);this.handlers.onConnection({status:"reconnecting",attempt:this.failures});const n=()=>{this.dependencies.isPaused()||(this.cancelReconnect(),this.connect())};this.wakeCleanup=this.dependencies.onWake(n),this.reconnectTimer=setTimeout(n,r)}cancelReconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.wakeCleanup?.(),this.wakeCleanup=null}}const me=250,F=s=>({alt:s.altKey,ctrl:s.ctrlKey,meta:s.metaKey,shift:s.shiftKey}),fe=s=>(s.metaKey||s.ctrlKey)&&!s.altKey&&s.key.toLowerCase()==="c",ge=s=>(s.metaKey||s.ctrlKey)&&!s.altKey&&s.key.toLowerCase()==="v",$t=({mode:s})=>{const{t:r}=_(),n=ae(s),c=ee(t=>t.guests.find(e=>e.id===n)??null),p=c!==null&&te(c)&&c.service?.surface===!0,w=i.useRef(null),b=i.useRef(null),l=i.useRef(null),k=i.useRef(null),y=i.useRef([]),m=i.useRef(null),T=i.useRef(0),C=i.useRef(!1),R=i.useRef({controller:"none",mine:!1}),[d,U]=i.useState({status:"connecting"}),[h,W]=i.useState({controller:"none",mine:!1}),A=i.useCallback(t=>{R.current=t,W(t)},[]),[I,$]=i.useState(""),[V,X]=i.useState(!1),[f,K]=i.useState(!1),[M,j]=i.useState(!1),E=i.useCallback(async t=>{const e=b.current,o=l.current;if(!(!e||!o))try{const a=await createImageBitmap(new Blob([t.bytes],{type:t.mime}));(e.width!==t.width||e.height!==t.height)&&(e.width=t.width,e.height=t.height),e.getContext("2d")?.drawImage(a,0,0,t.width,t.height),a.close(),k.current={width:t.width,height:t.height},K(!0),$(t.title??""),X(t.agentActive)}catch{}finally{o.ack(t.seq)}},[]);i.useEffect(()=>{if(!p)return;let t=null;const e=new pe(n,{onViewer:o=>{t&&L(n,t),t=o,re(n,o)},onFrame:o=>{E(o)},onControl:A,onConnection:U,onClipboard:(o,a)=>{ne(a)}});return l.current=e,e.start(),()=>{t&&L(n,t),e.dispose(),l.current===e&&(l.current=null),m.current!==null&&cancelAnimationFrame(m.current),m.current=null,y.current=[],k.current=null,K(!1)}},[p,E,n,A]),i.useEffect(()=>{const t=w.current;if(!t||!p)return;let e=null;const o=new ResizeObserver(a=>{const g=a[0];if(!g)return;const{width:v,height:Q}=g.contentRect;e&&clearTimeout(e),e=setTimeout(()=>{e=null;const D=window.devicePixelRatio||1,O=Math.round(v*D),z=Math.round(Q*D);O>0&&z>0&&l.current?.resize(O,z)},me)});return o.observe(t),()=>{o.disconnect(),e&&clearTimeout(e)}},[p]);const x=i.useCallback(t=>{y.current.push(t),m.current===null&&(m.current=requestAnimationFrame(()=>{m.current=null;const e=y.current;y.current=[],l.current?.sendInput(e),C.current&&(C.current=!1,T.current+=1,l.current?.requestClipboard(`copy-${T.current}`))}))},[]),N=i.useCallback(t=>{const e=b.current,o=k.current;if(!e||!o)return null;const a=e.getBoundingClientRect();if(a.width===0||a.height===0)return null;const g=(t.clientX-a.left)/a.width*o.width,v=(t.clientY-a.top)/a.height*o.height;return{x:Math.round(g),y:Math.round(v)}},[]),P=t=>e=>{if(!f||t==="move"&&e.buttons===0&&!(R.current.controller==="user"&&R.current.mine))return;const o=N(e);o&&(t==="down"?(w.current?.focus(),e.currentTarget.setPointerCapture(e.pointerId)):t==="up"&&e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),e.preventDefault(),x({type:"pointer",action:t,x:o.x,y:o.y,button:t==="move"?-1:e.button,buttons:e.buttons,modifiers:F(e)}))},G=t=>{if(!f)return;const e=N(t);e&&(t.preventDefault(),x({type:"wheel",x:e.x,y:e.y,deltaX:t.deltaX,deltaY:t.deltaY,modifiers:F(t)}))},B=t=>e=>{f&&(ge(e)||(e.preventDefault(),e.stopPropagation(),t==="down"&&fe(e)&&(C.current=!0),x({type:"key",action:t,key:e.key,code:e.code,modifiers:F(e)})))},Y=t=>{if(!f)return;const e=t.clipboardData.getData("text/plain");t.preventDefault(),e&&x({type:"text",text:e})},H=()=>{l.current?.release()};if(!c)return null;if(!p)return u.jsx("div",{className:"flex h-full items-center justify-center px-6 text-sm text-muted-foreground",children:r("contextPanel.surface.unavailable")});const J=d.status==="connecting"?"contextPanel.surface.status.connecting":d.status==="reconnecting"?"contextPanel.surface.status.reconnecting":d.status==="ended"?`contextPanel.surface.ended.${d.reason}`:h.controller==="user"?h.mine?"contextPanel.surface.status.youControl":"contextPanel.surface.status.otherControls":h.controller==="agent"||V?"contextPanel.surface.status.agentWorking":M?"contextPanel.surface.status.readyFocused":"contextPanel.surface.status.ready";return u.jsxs("div",{className:"flex h-full flex-col bg-[var(--surface-background)]",children:[u.jsxs("div",{className:"flex h-8 shrink-0 items-center gap-2 border-b border-border px-3",children:[u.jsx("span",{className:"typography-meta min-w-0 flex-1 truncate text-foreground",title:I||c.name,children:I||c.name}),u.jsx("span",{className:S("typography-meta shrink-0 truncate",h.controller==="user"&&h.mine?"text-foreground":"text-muted-foreground"),"aria-live":"polite",children:r(J)}),h.controller==="user"&&h.mine?u.jsx(q,{size:"xs",variant:"outline",onClick:H,children:r("contextPanel.surface.handBack")}):null,d.status==="ended"?u.jsx(q,{size:"xs",variant:"outline",onClick:()=>l.current?.retry(),children:r("contextPanel.surface.retry")}):null]}),u.jsxs("div",{ref:w,tabIndex:0,role:"application","aria-label":r("contextPanel.surface.canvasAria",{name:c.name}),"data-terminal-owner":`surface:${n}`,className:S("relative flex min-h-0 flex-1 items-center justify-center overflow-hidden outline-none",M?"ring-1 ring-inset ring-[var(--interactive-selection-border)]":""),onFocus:()=>j(!0),onBlur:()=>j(!1),onKeyDown:B("down"),onKeyUp:B("up"),onPaste:Y,children:[u.jsx("canvas",{ref:b,className:S("max-h-full max-w-full",f?"block":"hidden",h.controller==="user"&&!h.mine?"cursor-not-allowed":"cursor-default"),onPointerDown:P("down"),onPointerMove:P("move"),onPointerUp:P("up"),onWheel:G,onContextMenu:t=>t.preventDefault()}),!f||d.status!=="open"?u.jsx("div",{className:"absolute inset-0 flex items-center justify-center px-6 text-center text-sm text-muted-foreground",children:r(d.status==="ended"?`contextPanel.surface.ended.${d.reason}`:d.status==="reconnecting"?"contextPanel.surface.status.reconnecting":"contextPanel.surface.status.connecting")}):null]})]})};export{$t as GuestSurfacePane};
@@ -0,0 +1,2 @@
1
+ import{R as w,f as be,j as t}from"./vendor-react-BUCujlKS.js";import{u as Ct}from"./vendor-tanstack-react-virtual-CvuLsk7D.js";import{f as de,at as Ye,au as Qe,I as M,av as et,b1 as St,h as ae,eS as Vt,B as X,al as kt,li as At,b_ as De,bZ as Te,bW as ze,bU as Re,bV as Oe,cz as Xe,bJ as It,z as tt,dr as it,lj as Et,gS as st,t as ve,fT as Dt,N as mt,aI as ut,aD as ft,aE as ht,aF as pt,iv as Tt,aX as gt,gg as Me,aC as zt,aG as xt,gr as Rt,jM as Ot,iC as yt,iD as bt,i2 as Be,cY as nt,cZ as at,gf as lt,c_ as rt,c$ as ot,d0 as ct,lk as Pt,V as Ft,eZ as Pe,hi as Lt}from"./useAppFontEffects-DGlvOqP_.js";import{u as $e,E as vt,be as Mt,a as Ge}from"./index-DxNa7xYB.js";import{bs as $t,n as Ie,I as wt,y as jt,t as Gt,be as Ht,bf as _t,bg as Bt,G as Kt,bt as Ut,bu as qt}from"./runtimeEndpointReset-CZ5aafpl.js";import{b as Jt,c as Wt,f as Zt,T as Ke}from"./changesTree-CePHbFcj.js";const Xt=w.memo(function(e){const i=be.c(69),{file:a,actionLabel:h,actionSymbol:u,onAction:m,onViewDiff:d,onRevert:c,isReverting:p,stats:k,rowPaddingClassName:v,indentPx:o,actionAtStart:A,nameOnly:V,showRevert:T}=e,N=o===void 0?0:o,b=A===void 0?!1:A,l=V===void 0?!1:V,g=T===void 0?!0:T;let F;i[0]!==a?(F=$t(a),i[0]=a,i[1]=F):F=i[1];const E=F,{t:$}=de();let B;i[2]!==E.descriptionKey||i[3]!==$?(B=$(E.descriptionKey),i[2]=E.descriptionKey,i[3]=$,i[4]=B):B=i[4];const z=B,O=k?.insertions??0,C=k?.deletions??0;let y;i[5]!==m||i[6]!==d?(y=W=>{W.key===" "?(W.preventDefault(),m()):W.key==="Enter"&&(W.preventDefault(),d())},i[5]=m,i[6]=d,i[7]=y):y=i[7];const P=y;let j;i[8]!==m?(j=W=>{W.preventDefault(),W.stopPropagation(),m()},i[8]=m,i[9]=j):j=i[9];const D=j;let G;i[10]!==c?(G=W=>{W.preventDefault(),W.stopPropagation(),c()},i[10]=c,i[11]=G):G=i[11];const H=G;let q;i[12]!==h||i[13]!==u||i[14]!==D?(q=t.jsx("button",{type:"button",onClick:D,className:"flex size-5 shrink-0 items-center justify-center rounded typography-micro font-semibold text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":h,title:h,children:u}),i[12]=h,i[13]=u,i[14]=D,i[15]=q):q=i[15];const J=q;let _;i[16]===Symbol.for("react.memo_cache_sentinel")?(_={color:"var(--status-success)"},i[16]=_):_=i[16];let S;i[17]!==O?(S=t.jsxs("span",{style:_,children:["+",O]}),i[17]=O,i[18]=S):S=i[18];let K,R;i[19]===Symbol.for("react.memo_cache_sentinel")?(K=t.jsx("span",{className:"text-muted-foreground mx-0.5",children:"/"}),R={color:"var(--status-error)"},i[19]=K,i[20]=R):(K=i[19],R=i[20]);let U;i[21]!==C?(U=t.jsxs("span",{style:R,children:["-",C]}),i[21]=C,i[22]=U):U=i[22];let Y;i[23]!==S||i[24]!==U?(Y=t.jsxs("span",{className:"shrink-0 typography-micro",children:[S,K,U]}),i[23]=S,i[24]=U,i[25]=Y):Y=i[25];const te=Y;let ie;i[26]!==a.path||i[27]!==H||i[28]!==p||i[29]!==g||i[30]!==$?(ie=g?t.jsxs(Ye,{children:[t.jsx(Qe,{asChild:!0,children:t.jsx("button",{type:"button",onClick:H,disabled:p,className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50","aria-label":$("gitView.changes.revertFileAria",{path:a.path}),children:p?t.jsx(M,{name:"loader-4",className:"size-3.5 animate-spin"}):t.jsx(M,{name:"arrow-go-back",className:"size-3.5"})})}),t.jsx(et,{sideOffset:8,children:$("gitView.changes.revertFileTooltip")})]}):null,i[26]=a.path,i[27]=H,i[28]=p,i[29]=g,i[30]=$,i[31]=ie):ie=i[31];const Q=ie,n=`group flex items-center gap-2 py-1.5 cursor-pointer ${v??"px-3"}`;let r;i[32]!==N?(r=N>0?{paddingLeft:`${N}px`}:void 0,i[32]=N,i[33]=r):r=i[33];const s=b?J:null;let x;i[34]!==E.color?(x={color:E.color},i[34]=E.color,i[35]=x):x=i[35];let I;i[36]!==E.code||i[37]!==z||i[38]!==x?(I=t.jsx("span",{className:"typography-micro font-semibold w-4 text-center uppercase",style:x,title:z,"aria-label":z,children:E.code}),i[36]=E.code,i[37]=z,i[38]=x,i[39]=I):I=i[39];let L;i[40]!==a.path?(L=t.jsx(St,{filePath:a.path,className:"h-3.5 w-3.5 shrink-0"}),i[40]=a.path,i[41]=L):L=i[41];let se;if(i[42]!==a.path||i[43]!==l){e:{const W=a.path.lastIndexOf("/");if(W===-1||l){let ce;i[45]===Symbol.for("react.memo_cache_sentinel")?(ce={direction:"rtl",textAlign:"left",unicodeBidi:"plaintext"},i[45]=ce):ce=i[45];const pe=a.path,ge=a.path.slice(W+1);let Z;i[46]!==a.path||i[47]!==ge?(Z=t.jsx("span",{className:"flex-1 min-w-0 truncate typography-ui-label text-foreground",style:ce,title:pe,children:ge}),i[46]=a.path,i[47]=ge,i[48]=Z):Z=i[48],se=Z;break e}const fe=a.path.slice(0,W),he=a.path.slice(W);let le;i[49]===Symbol.for("react.memo_cache_sentinel")?(le={direction:"rtl",textAlign:"left",unicodeBidi:"plaintext"},i[49]=le):le=i[49];let re;i[50]===Symbol.for("react.memo_cache_sentinel")?(re=t.jsx("span",{className:"text-muted-foreground",children:"/"}),i[50]=re):re=i[50];const me=t.jsx("span",{className:"text-foreground",children:he.slice(1)});let oe;i[51]!==me?(oe=t.jsxs("span",{className:"flex-shrink-0 typography-ui-label",children:[re,me]}),i[51]=me,i[52]=oe):oe=i[52],se=t.jsxs("span",{className:"flex-1 min-w-0 flex items-baseline overflow-hidden",title:a.path,children:[t.jsx("span",{className:"min-w-0 truncate typography-ui-label text-muted-foreground",style:le,children:fe}),oe]})}i[42]=a.path,i[43]=l,i[44]=se}else se=i[44];let ee;i[53]!==b||i[54]!==J||i[55]!==p||i[56]!==Q||i[57]!==te?(ee=b?t.jsxs(t.Fragment,{children:[te,Q]}):t.jsxs("span",{className:"flex shrink-0 items-center justify-items-end gap-2 md:grid",children:[t.jsx("span",{className:ae("md:col-start-1 md:row-start-1",p?"md:invisible":"md:group-hover:invisible md:group-focus-within:invisible"),children:te}),t.jsxs("span",{className:ae("flex items-center gap-2 md:col-start-1 md:row-start-1",!p&&"md:invisible md:group-hover:visible md:group-focus-within:visible"),children:[Q,J]})]}),i[53]=b,i[54]=J,i[55]=p,i[56]=Q,i[57]=te,i[58]=ee):ee=i[58];let ne;return i[59]!==P||i[60]!==d||i[61]!==n||i[62]!==r||i[63]!==s||i[64]!==I||i[65]!==L||i[66]!==se||i[67]!==ee?(ne=t.jsxs("div",{className:n,role:"button",tabIndex:0,onClick:d,onKeyDown:P,style:r,children:[s,I,L,se,ee]}),i[59]=P,i[60]=d,i[61]=n,i[62]=r,i[63]=s,i[64]=I,i[65]=L,i[66]=se,i[67]=ee,i[68]=ne):ne=i[68],ne}),Yt=1e3,dt=34,Ue=30,Fe="pl-0 pr-2",qe=(f,e)=>`${f} ${e}`,Ci=({groups:f,diffStats:e,revertingPaths:i,isRevertingAll:a=!1,headerBackgroundClassName:h="bg-sidebar",onVisiblePathsChange:u,onRevertAll:m,onRevertDirectory:d})=>{const{t:c}=de(),p=w.useRef(null),v=$e(n=>n.gitChangesViewMode)==="tree",o=w.useMemo(()=>f.filter(n=>n.entries.length>0),[f]),[A,V]=w.useState(new Set),[T,N]=w.useState(new Set),[b,l]=w.useState(!1),[g,F]=w.useState(null),E=Vt(),{confirm:$}=E,B=w.useCallback(async(n,r)=>{await $({title:c("gitView.changes.revertFileDialogTitle"),message:c("gitView.changes.revertFileDescription",{path:r}),action:c("gitView.changes.revertFileConfirm"),destructive:!0})&&n.onRevertFile(r)},[$,c]),z=w.useMemo(()=>o.map(n=>Jt(n.entries)),[o]),O=w.useMemo(()=>{const n=[];return o.forEach((r,s)=>{Array.from(z[s]?.children.values()??[]).forEach(x=>{n.push(qe(r.id,Wt(x).node.path))})}),n},[z,o]);w.useEffect(()=>{v&&N(n=>{const r=new Set,s=new Set(O);return n.forEach(x=>{(x.slice(x.indexOf(" ")+1).includes("/")||s.has(x))&&r.add(x)}),O.forEach(x=>r.add(x)),r})},[v,O]);const C=w.useMemo(()=>{const n=[];return o.forEach((r,s)=>{if(n.push({type:"header",key:`header:${r.id}`,groupIndex:s}),!A.has(r.id)){if(v){const x=new Set;T.forEach(L=>{L.startsWith(`${r.id} `)&&x.add(L.slice(r.id.length+1))}),Zt(z[s],x).forEach(L=>{L.kind==="file"?n.push({type:"file",key:`${r.id}:${L.key}`,groupIndex:s,file:L.file,depth:L.depth}):n.push({type:"directory",key:`${r.id}:${L.key}`,groupIndex:s,directory:L.directory,label:L.label,depth:L.depth})});return}r.entries.forEach(x=>{n.push({type:"file",key:`${r.id}:file:${x.path}`,groupIndex:s,file:x,depth:0})})}}),m&&o.length>0&&n.push({type:"revert-all",key:"revert-all"}),n},[A,T,v,m,z,o]),y=C.length,P=y>=Yt,j=Ct({count:y,enabled:P,getScrollElement:()=>p.current,estimateSize:()=>dt,overscan:12,getItemKey:n=>C[n]?.key??n}),D=j.getVirtualItems(),G=w.useMemo(()=>{if(!P)return 0;const n=p.current?.scrollTop??0;return D.find(s=>s.end>n)?.index??0},[P,D,p]);w.useEffect(()=>{if(!u)return;const n=r=>r&&r.type==="file"?r.file.path:null;if(y===0){u([]);return}if(!P){const r=[];for(const s of C)if(s.type==="file"&&(r.push(s.file.path),r.length>=Ue))break;u(r);return}u(C.slice(G,G+Math.ceil((p.current?.clientHeight??0)/dt)+Ue).map(r=>n(r)).filter(r=>!!r).slice(0,Ue))},[u,y,C,P,G]);const H=w.useCallback(n=>{V(r=>{const s=new Set(r);return s.has(n)?s.delete(n):s.add(n),s})},[]),q=w.useCallback((n,r)=>{N(s=>{const x=new Set(s),I=qe(n,r);return x.has(I)?x.delete(I):x.add(I),x})},[]),J=w.useMemo(()=>{const n=new Set;return o.forEach(r=>r.entries.forEach(s=>n.add(s.path))),Array.from(n)},[o]),_=J.length,S=g?a||g.paths.some(n=>i.has(n)):!1,K=w.useCallback(async()=>{!m||a||J.length===0||(await m(J),l(!1))},[J,a,m]),R=w.useCallback(async()=>{!d||!g||S||(await d(g.paths),F(null))},[S,d,g]),U=w.useCallback((n,r)=>{const s=A.has(n.id),x=n.entries.length;return t.jsxs("div",{className:ae("sticky top-0 z-10 flex items-center gap-2 py-2",h,Fe,!r&&"mt-1 border-t border-border/40"),children:[t.jsx("button",{type:"button",onClick:()=>n.onActionAll(n.entries.map(I=>I.path)),className:"flex size-5 shrink-0 items-center justify-center rounded typography-micro font-semibold text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":n.actionAllLabel,title:n.actionAllLabel,children:n.actionSymbol}),t.jsxs("button",{type:"button",onClick:()=>H(n.id),className:"flex min-w-0 flex-1 items-center gap-2 rounded text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-expanded":!s,children:[t.jsx("h3",{className:"truncate typography-ui-header font-semibold text-foreground",children:n.title}),t.jsx("span",{className:"typography-meta text-muted-foreground",children:x}),t.jsx(M,{name:"arrow-down-s",className:ae("size-3.5 shrink-0 text-muted-foreground transition-transform",s&&"-rotate-90")})]})]})},[A,h,H]),Y=w.useCallback((n,r,s,x)=>{const I=T.has(qe(n.id,r.path)),L=r.files.map(ee=>ee.path),se=a||L.some(ee=>i.has(ee));return t.jsxs("div",{className:ae("group flex items-center gap-2 py-1.5 text-muted-foreground hover:text-foreground",Fe),style:{paddingLeft:`${x*Ke}px`},children:[t.jsxs("button",{type:"button",onClick:()=>q(n.id,r.path),"aria-expanded":I,className:"flex min-w-0 flex-1 items-center gap-1.5 rounded text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":I?c("gitView.changes.collapseDirectoryAria",{path:r.path}):c("gitView.changes.expandDirectoryAria",{path:r.path}),children:[t.jsx("span",{className:"flex w-4 shrink-0 items-center justify-center",children:t.jsx(M,{name:"arrow-right-s",className:ae("size-3.5 transition-transform",I&&"rotate-90")})}),t.jsx("span",{className:"min-w-0 truncate typography-ui-label",title:r.path,children:s}),I?null:t.jsx("span",{className:"shrink-0 typography-micro tabular-nums text-muted-foreground/70",children:r.files.length})]}),t.jsxs("span",{className:ae("flex shrink-0 items-center gap-2 transition-opacity",!se&&"md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100"),children:[n.showRevertActions!==!1&&d?t.jsx("button",{type:"button",onClick:()=>F({path:r.path,paths:L,count:L.length}),disabled:se,className:"flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50","aria-label":c("gitView.changes.revertDirectoryAria",{path:r.path}),title:c("gitView.changes.revertDirectoryTooltip"),children:se?t.jsx(M,{name:"loader-4",className:"size-3.5 animate-spin"}):t.jsx(M,{name:"arrow-go-back",className:"size-3.5"})}):null,t.jsx("button",{type:"button",onClick:()=>n.onActionAll(r.files.map(ee=>ee.path)),className:"flex size-5 shrink-0 items-center justify-center rounded typography-micro font-semibold text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":c(n.actionSymbol==="+"?"gitView.changes.stageDirectoryAria":"gitView.changes.unstageDirectoryAria",{path:r.path}),title:c(n.actionSymbol==="+"?"gitView.changes.stageDirectoryAria":"gitView.changes.unstageDirectoryAria",{path:r.path}),children:n.actionSymbol})]})]})},[T,a,d,i,c,q]),te=w.useCallback((n,r)=>{if(n.type==="revert-all")return t.jsx("div",{className:ae("flex justify-end py-2",Fe),children:t.jsxs(X,{variant:"ghost",size:"sm",onClick:()=>l(!0),disabled:a,className:"gap-1.5 text-[var(--status-error)] hover:bg-[var(--status-error)]/10 hover:text-[var(--status-error)]",children:[t.jsx(M,{name:"arrow-go-back",className:"size-3.5"}),c("gitView.changes.revertAll")]})});const s=o[n.groupIndex];if(!s)return null;if(n.type==="header")return U(s,r);if(n.type==="directory")return Y(s,n.directory,n.label,n.depth);const x=n.file;return t.jsx(Xt,{file:x,actionLabel:s.getActionLabel(x.path),actionSymbol:s.actionSymbol,onAction:()=>s.onActionFile(x.path),stats:e?.[s.statsScope]?.[x.path],onViewDiff:()=>s.onViewDiff(x.path),onRevert:()=>{B(s,x.path)},isReverting:i.has(x.path)||a,rowPaddingClassName:Fe,indentPx:n.depth*Ke,actionAtStart:!v,nameOnly:v,showRevert:s.showRevertActions!==!1})},[e,a,v,Y,U,B,i,c,o]),ie=n=>n.type!=="file"&&n.type!=="directory"?null:Array.from({length:n.depth},(r,s)=>t.jsx("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-y-0 w-px bg-border/50",style:{left:`${s*Ke+8}px`}},s)),Q=w.useCallback(n=>{if(v)return!1;const r=C[n],s=C[n-1];return!r||!s||r.type!=="file"&&r.type!=="directory"||s.type!=="file"&&s.type!=="directory"?!1:s.groupIndex===r.groupIndex},[v,C]);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"relative flex h-full min-h-0 w-full flex-col overflow-hidden",children:[t.jsx(kt,{ref:p,className:"overlay-scrollbar-target overlay-scrollbar-container min-h-0 w-full flex-1 overflow-x-hidden overflow-y-auto",children:P?t.jsx("div",{style:{height:j.getTotalSize(),position:"relative"},children:D.map(n=>{const r=C[n.index];return r?t.jsxs("div",{"data-index":n.index,ref:j.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${n.start}px)`},className:ae(Q(n.index)&&"before:pointer-events-none before:absolute before:left-0 before:right-2 before:top-0 before:border-t before:border-border/60"),children:[ie(r),te(r,n.index===0)]},r.key):null})}):t.jsx("div",{role:"list","aria-label":c("gitView.changes.changedFilesAria"),children:C.map((n,r)=>t.jsxs("div",{className:ae("relative",Q(r)&&"before:pointer-events-none before:absolute before:left-0 before:right-2 before:top-0 before:border-t before:border-border/60"),children:[ie(n),te(n,r===0)]},n.key))})}),t.jsx(At,{containerRef:p,disableHorizontal:!0})]}),E.dialog,t.jsx(De,{open:b,onOpenChange:n=>{!a&&!n&&l(!1)},children:t.jsxs(Te,{className:"max-w-md",children:[t.jsxs(ze,{children:[t.jsx(Re,{children:c("gitView.changes.revertAllDialogTitle")}),t.jsx(Oe,{children:_===1?c("gitView.changes.revertAllDescriptionSingle",{count:_}):c("gitView.changes.revertAllDescriptionPlural",{count:_})})]}),t.jsxs(Xe,{children:[t.jsx(X,{variant:"outline",size:"sm",onClick:()=>l(!1),disabled:a,children:c("gitView.common.cancel")}),t.jsx(X,{variant:"destructive",size:"sm",onClick:()=>{K()},disabled:a,children:c(a?"gitView.changes.reverting":"gitView.changes.revertAll")})]})]})}),t.jsx(De,{open:!!g,onOpenChange:n=>{!S&&!n&&F(null)},children:t.jsxs(Te,{className:"max-w-md",children:[t.jsxs(ze,{children:[t.jsx(Re,{children:c("gitView.changes.revertDirectoryDialogTitle")}),t.jsx(Oe,{children:g?g.count===1?c("gitView.changes.revertDirectoryDescriptionSingle",{count:g.count,path:g.path}):c("gitView.changes.revertDirectoryDescriptionPlural",{count:g.count,path:g.path}):null})]}),t.jsxs(Xe,{children:[t.jsx(X,{variant:"outline",size:"sm",onClick:()=>F(null),disabled:S,children:c("gitView.common.cancel")}),t.jsx(X,{variant:"destructive",size:"sm",onClick:()=>{R()},disabled:S||!g,children:c(S?"gitView.changes.reverting":"gitView.changes.revertDirectory")})]})]})})]})},Je=38,Le=200,Qt=f=>{const e=be.c(23),{value:i,onChange:a,onSubmit:h,placeholder:u,disabled:m,hasTouchInput:d,isMobile:c}=f,p=m===void 0?!1:m,k=d===void 0?!1:d,v=c===void 0?!1:c,{t:o}=de(),A=w.useRef(null),V=$e(ei);let T;e[0]===Symbol.for("react.memo_cache_sentinel")?(T=()=>{const y=A.current;if(!y)return;const P=document.activeElement===y,j=()=>{y.style.height=`${Je}px`;const G=y.scrollHeight,H=Math.min(Math.max(G,Je),Le);y.style.height=`${H}px`,y.style.overflowY=G>Le?"auto":"hidden",G>Le&&!P&&(y.scrollTop=y.scrollHeight)};j();const D=window.requestAnimationFrame(j);return()=>{window.cancelAnimationFrame(D)}},e[0]=T):T=e[0];let N;e[1]!==i?(N=[i],e[1]=i,e[2]=N):N=e[2],w.useLayoutEffect(T,N);let b;e[3]!==a?(b=y=>a(y.target.value),e[3]=a,e[4]=b):b=e[4];let l;e[5]!==h?(l=y=>{y.key==="Enter"&&(y.metaKey||y.ctrlKey)&&!y.shiftKey&&!y.altKey&&(y.preventDefault(),h?.())},e[5]=h,e[6]=l):l=e[6];let g;e[7]!==u||e[8]!==o?(g=u??o("gitView.commit.messagePlaceholder"),e[7]=u,e[8]=o,e[9]=g):g=e[9];const F=k?"on":"off",E=k?"sentences":"off",$=v||V,B=p&&"opacity-50";let z;e[10]!==B?(z=ae("w-full rounded-lg border border-border/60 bg-surface-elevated px-3 py-2 typography-ui-label text-foreground placeholder:text-muted-foreground","resize-none outline-none transition-[border-color,box-shadow] duration-150","focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]",B),e[10]=B,e[11]=z):z=e[11];let O;e[12]===Symbol.for("react.memo_cache_sentinel")?(O={minHeight:Je,maxHeight:Le},e[12]=O):O=e[12];let C;return e[13]!==p||e[14]!==E||e[15]!==$||e[16]!==z||e[17]!==b||e[18]!==l||e[19]!==g||e[20]!==F||e[21]!==i?(C=t.jsx("textarea",{ref:A,value:i,onChange:b,onKeyDown:l,placeholder:g,rows:1,disabled:p,autoCorrect:F,autoCapitalize:E,spellCheck:$,className:z,style:O}),e[13]=p,e[14]=E,e[15]=$,e[16]=z,e[17]=b,e[18]=l,e[19]=g,e[20]=F,e[21]=i,e[22]=C):C=e[22],C};function ei(f){return f.inputSpellcheckEnabled}const ti=f=>{const e=be.c(30),{highlights:i,onInsert:a}=f,{t:h}=de();if(i.length===0)return null;let u;e[0]!==i||e[1]!==a?(u=()=>{a(i)},e[0]=i,e[1]=a,e[2]=u):u=e[2];const m=u;let d;e[3]!==h?(d=h("gitView.commit.aiHighlights.title"),e[3]=h,e[4]=d):d=e[4];let c;e[5]!==d?(c=t.jsx("p",{className:"typography-micro text-muted-foreground",children:d}),e[5]=d,e[6]=c):c=e[6];let p;e[7]!==h?(p=h("gitView.commit.aiHighlights.insertAria"),e[7]=h,e[8]=p):p=e[8];let k;e[9]===Symbol.for("react.memo_cache_sentinel")?(k=t.jsx(M,{name:"arrow-down",className:"size-4"}),e[9]=k):k=e[9];let v;e[10]!==m||e[11]!==p?(v=t.jsx(Qe,{asChild:!0,children:t.jsx(X,{variant:"ghost",size:"icon",className:"size-6",onClick:m,"aria-label":p,children:k})}),e[10]=m,e[11]=p,e[12]=v):v=e[12];let o;e[13]!==h?(o=h("gitView.commit.aiHighlights.insertTooltip"),e[13]=h,e[14]=o):o=e[14];let A;e[15]!==o?(A=t.jsx(et,{sideOffset:8,children:o}),e[15]=o,e[16]=A):A=e[16];let V;e[17]!==v||e[18]!==A?(V=t.jsxs(Ye,{children:[v,A]}),e[17]=v,e[18]=A,e[19]=V):V=e[19];let T;e[20]!==c||e[21]!==V?(T=t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[c,V]}),e[20]=c,e[21]=V,e[22]=T):T=e[22];let N;e[23]!==i?(N=i.map(ii),e[23]=i,e[24]=N):N=e[24];let b;e[25]!==N?(b=t.jsx("ul",{className:"space-y-1",children:N}),e[25]=N,e[26]=b):b=e[26];let l;return e[27]!==T||e[28]!==b?(l=t.jsxs("div",{className:"space-y-2 rounded-xl border border-border/60 bg-transparent px-3 py-2",children:[T,b]}),e[27]=T,e[28]=b,e[29]=l):l=e[29],l};function ii(f,e){return t.jsx("li",{className:"typography-meta text-foreground",children:f},`${f}-${e}`)}const Si=f=>{const e=be.c(81),{stagedCount:i,commitMessage:a,onCommitMessageChange:h,generatedHighlights:u,onInsertHighlights:m,onGenerateMessage:d,isGeneratingMessage:c,onCommit:p,onCommitAndPush:k,commitAction:v,networkOperationBlocked:o,hasPendingIndexMutation:A,gitmojiEnabled:V,onOpenGitmojiPicker:T}=f,N=o===void 0?!1:o,b=A===void 0?!1:A,{t:l}=de(),g=i>0;let F;e[0]!==v||e[1]!==a||e[2]!==b||e[3]!==g?(F=a.trim()&&g&&v===null&&!b,e[0]=v,e[1]=a,e[2]=b,e[3]=g,e[4]=F):F=e[4];const E=F,{isMobile:$,hasTouchInput:B}=It();let z;e[5]!==l?(z=l("gitView.commit.title"),e[5]=l,e[6]=z):z=e[6];let O;e[7]!==z?(O=t.jsx("h3",{className:"typography-ui-header font-semibold text-foreground",children:z}),e[7]=z,e[8]=O):O=e[8];let C;e[9]!==g||e[10]!==l?(C=g?null:t.jsx("span",{className:"min-w-0 truncate typography-meta text-muted-foreground",children:l("gitView.commit.stageFilesHint")}),e[9]=g,e[10]=l,e[11]=C):C=e[11];let y;e[12]!==O||e[13]!==C?(y=t.jsxs("div",{className:"flex w-full items-baseline gap-2 px-0 pt-2 pb-1",children:[O,C]}),e[12]=O,e[13]=C,e[14]=y):y=e[14];let P;e[15]!==u||e[16]!==m?(P=t.jsx(ti,{highlights:u,onInsert:m}),e[15]=u,e[16]=m,e[17]=P):P=e[17];let j;e[18]!==E||e[19]!==c||e[20]!==p?(j=()=>{E&&!c&&p()},e[18]=E,e[19]=c,e[20]=p,e[21]=j):j=e[21];let D;e[22]!==l?(D=l("gitView.commit.messagePlaceholder"),e[22]=l,e[23]=D):D=e[23];const G=v!==null;let H;e[24]!==a||e[25]!==B||e[26]!==$||e[27]!==h||e[28]!==D||e[29]!==G||e[30]!==j?(H=t.jsx(Qt,{value:a,onChange:h,onSubmit:j,placeholder:D,disabled:G,hasTouchInput:B,isMobile:$}),e[24]=a,e[25]=B,e[26]=$,e[27]=h,e[28]=D,e[29]=G,e[30]=j,e[31]=H):H=e[31];let q;e[32]!==V||e[33]!==T||e[34]!==l?(q=V&&t.jsxs(X,{variant:"outline",size:"sm",onClick:T,className:"w-fit",type:"button",children:[t.jsx(M,{name:"emotion-happy",className:"size-4"}),l("gitView.commit.addGitmoji")]}),e[32]=V,e[33]=T,e[34]=l,e[35]=q):q=e[35];const J=c||v!==null||b||i===0;let _;e[36]!==l?(_=l("gitView.commit.generateAria"),e[36]=l,e[37]=_):_=e[37];let S;e[38]!==c?(S=c?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"ai-generate-2",className:"size-4 text-primary"}),e[38]=c,e[39]=S):S=e[39];let K;e[40]!==l?(K=l("gitView.commit.generate"),e[40]=l,e[41]=K):K=e[41];let R;e[42]!==K?(R=t.jsx("span",{className:"commit-actions__label",children:K}),e[42]=K,e[43]=R):R=e[43];let U;e[44]!==d||e[45]!==J||e[46]!==_||e[47]!==S||e[48]!==R?(U=t.jsxs(X,{variant:"outline",size:"sm",onClick:d,disabled:J,type:"button","aria-label":_,className:"commit-actions__btn",children:[S,R]}),e[44]=d,e[45]=J,e[46]=_,e[47]=S,e[48]=R,e[49]=U):U=e[49];let Y;e[50]===Symbol.for("react.memo_cache_sentinel")?(Y=t.jsx("div",{className:"flex-1"}),e[50]=Y):Y=e[50];const te=!E||c;let ie;e[51]!==l?(ie=l("gitView.commit.commitAria"),e[51]=l,e[52]=ie):ie=e[52];let Q;e[53]!==v||e[54]!==l?(Q=v==="commit"?t.jsxs(t.Fragment,{children:[t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}),t.jsx("span",{className:"commit-actions__label",children:l("gitView.commit.committing")})]}):t.jsxs(t.Fragment,{children:[t.jsx(M,{name:"git-commit",className:"size-4"}),t.jsx("span",{className:"commit-actions__label",children:l("gitView.commit.commit")})]}),e[53]=v,e[54]=l,e[55]=Q):Q=e[55];let n;e[56]!==p||e[57]!==te||e[58]!==ie||e[59]!==Q?(n=t.jsx(X,{size:"sm",variant:"outline",onClick:p,disabled:te,className:"commit-actions__btn whitespace-nowrap","aria-label":ie,children:Q}),e[56]=p,e[57]=te,e[58]=ie,e[59]=Q,e[60]=n):n=e[60];let r;e[61]!==E||e[62]!==v||e[63]!==c||e[64]!==$||e[65]!==N||e[66]!==k||e[67]!==l?(r=$?t.jsxs(Ye,{children:[t.jsx(Qe,{asChild:!0,children:t.jsx(X,{variant:"default",size:"sm",onClick:()=>k(),disabled:!E||c||N,className:"h-7 w-7 p-0","aria-label":l("gitView.commit.pushAria"),children:v==="commitAndPush"?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"arrow-up",className:"size-3.5"})})}),t.jsx(et,{side:"top",children:t.jsx("p",{children:l("gitView.commit.push")})})]}):t.jsx(X,{size:"sm",variant:"default",onClick:()=>k(),disabled:!E||c||N,className:"commit-actions__btn","aria-label":l("gitView.commit.pushAria"),children:v==="commitAndPush"?t.jsxs(t.Fragment,{children:[t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}),t.jsx("span",{className:"commit-actions__label commit-actions__label--push",children:l("gitView.commit.pushing")})]}):t.jsxs(t.Fragment,{children:[t.jsx(M,{name:"arrow-up",className:"size-3.5"}),t.jsx("span",{className:"commit-actions__label commit-actions__label--push",children:l("gitView.commit.push")})]})}),e[61]=E,e[62]=v,e[63]=c,e[64]=$,e[65]=N,e[66]=k,e[67]=l,e[68]=r):r=e[68];let s;e[69]!==U||e[70]!==n||e[71]!==r?(s=t.jsxs("div",{className:"@container/commit-actions flex items-center gap-2 min-w-0",children:[U,Y,n,r]}),e[69]=U,e[70]=n,e[71]=r,e[72]=s):s=e[72];let x;e[73]!==H||e[74]!==q||e[75]!==s||e[76]!==P?(x=t.jsxs("div",{className:"flex flex-col gap-3 px-0 pt-1 pb-3",children:[P,H,q,s]}),e[73]=H,e[74]=q,e[75]=s,e[76]=P,e[77]=x):x=e[77];let I;return e[78]!==x||e[79]!==y?(I=t.jsxs("section",{className:"border-0 bg-transparent rounded-none",children:[y,x]}),e[78]=x,e[79]=y,e[80]=I):I=e[80],I},Vi=f=>{const e=be.c(150),{open:i,onOpenChange:a,conflictFiles:h,directory:u,operation:m,onAbort:d,onClearState:c,onNavigatedToChat:p}=f;let k;e[0]!==h?(k=h===void 0?[]:h,e[0]=h,e[1]=k):k=e[1];const v=k,{t:o}=de(),A=tt(si),V=tt(ni),T=it(ai),N=it(li),[b,l]=w.useState(!1),[g,F]=w.useState(null),[E,$]=w.useState(null);let B,z;e[2]!==u||e[3]!==i||e[4]!==o?(B=()=>{!i||!u||(l(!0),$(null),F(null),Et(u).then(Z=>{F(Z)}).catch(Z=>{const ue=Z instanceof Error?Z.message:o("gitView.conflict.loadFailed");$(ue)}).finally(()=>{l(!1)}))},z=[i,u,o],e[2]=u,e[3]=i,e[4]=o,e[5]=B,e[6]=z):(B=e[5],z=e[6]),w.useEffect(B,z);let O;e[7]!==g||e[8]!==u||e[9]!==m?(O=async()=>{if(!g)return null;const Z=m==="merge"?"merge":"rebase",ue=g.headInfo||(m==="merge"?"MERGE_HEAD":"REBASE_HEAD"),we=m==="merge"?"git commit --no-edit":"git rebase --continue",Ee=await st("git.conflict.resolve.visible",{operation_label:Z,head_ref:ue}),xe=await st("git.conflict.resolve.instructions",{operation_label:Z,directory:u,operation:m,head_info:g.headInfo||"N/A",continue_cmd:we}),ye=`${Z} conflict context (JSON)
2
+ ${JSON.stringify({directory:u,operation:g.operation,headInfo:g.headInfo,statusPorcelain:g.statusPorcelain,unmergedFiles:g.unmergedFiles,diff:g.diff},null,2)}`;return{visibleText:Ee,instructionsText:xe,payloadText:ye}},e[7]=g,e[8]=u,e[9]=m,e[10]=O):O=e[10];const C=O;let y;e[11]!==d||e[12]!==a?(y=()=>{d(),a(!1)},e[11]=d,e[12]=a,e[13]=y):y=e[13];const P=y;let j;e[14]!==c||e[15]!==a?(j=()=>{c?.(),a(!1)},e[14]=c,e[15]=a,e[16]=j):j=e[16];const D=j;let G;e[17]!==C||e[18]!==V||e[19]!==c||e[20]!==p||e[21]!==a||e[22]!==T||e[23]!==N||e[24]!==o?(G=async()=>{const Z=await C();if(!Z){ve.error(o("gitView.conflict.noDetailsAvailable"));return}if(!V){ve.error(o("gitView.conflict.noActiveSession"),{description:o("gitView.conflict.noActiveSessionDescription")});return}T(Z.visibleText,"replace"),N([{text:Z.instructionsText,synthetic:!0},{text:Z.payloadText,synthetic:!0}]),c?.(),a(!1),p?.()},e[17]=C,e[18]=V,e[19]=c,e[20]=p,e[21]=a,e[22]=T,e[23]=N,e[24]=o,e[25]=G):G=e[25];const H=G;let q;e[26]!==C||e[27]!==u||e[28]!==c||e[29]!==p||e[30]!==a||e[31]!==A||e[32]!==o?(q=async()=>{const Z=await C();if(!Z){ve.error(o("gitView.conflict.noDetailsAvailable"));return}A({directoryOverride:u,initialPrompt:Z.visibleText,syntheticParts:[{text:Z.instructionsText,synthetic:!0},{text:Z.payloadText,synthetic:!0}]}),c?.(),a(!1),p?.()},e[26]=C,e[27]=u,e[28]=c,e[29]=p,e[30]=a,e[31]=A,e[32]=o,e[33]=q):q=e[33];const J=q;let _,S,K,R,U,Y,te,ie,Q,n,r,s,x,I,L,se,ee,ne,W,fe,he,le;if(e[34]!==g||e[35]!==v||e[36]!==V||e[37]!==P||e[38]!==D||e[39]!==H||e[40]!==J||e[41]!==b||e[42]!==E||e[43]!==a||e[44]!==i||e[45]!==m||e[46]!==o){const Z=o(m==="merge"?"gitView.operation.merge":"gitView.operation.rebase"),ue=g?.unmergedFiles||v;K=De,he=i,le=a,S=Te,fe="max-w-md w-[calc(100vw-2rem)]",I="flex flex-col gap-4 overflow-hidden";let we;e[69]===Symbol.for("react.memo_cache_sentinel")?(we=t.jsx(M,{name:"alert",className:"size-5 shrink-0 text-[var(--status-warning)]"}),e[69]=we):we=e[69];const Ee=t.jsxs("div",{className:"flex items-center gap-2",children:[we,t.jsx(Re,{children:o("gitView.conflict.detectedTitle",{operation:Z})})]});let xe;e[70]!==m||e[71]!==o?(xe=o("gitView.conflict.detectedDescription",{operation:m}),e[70]=m,e[71]=o,e[72]=xe):xe=e[72];let ye;e[73]!==xe?(ye=t.jsx(Oe,{children:xe}),e[73]=xe,e[74]=ye):ye=e[74],e[75]!==Ee||e[76]!==ye?(L=t.jsxs(ze,{children:[Ee,ye]}),e[75]=Ee,e[76]=ye,e[77]=L):L=e[77],e[78]!==b||e[79]!==o?(se=b&&t.jsxs("div",{className:"flex items-center justify-center gap-2 py-4 text-muted-foreground",children:[t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}),t.jsx("span",{className:"typography-meta",children:o("gitView.conflict.loading")})]}),e[78]=b,e[79]=o,e[80]=se):se=e[80],e[81]!==E||e[82]!==o?(ee=E&&t.jsx("div",{className:"rounded-lg bg-[var(--status-error-bg)] p-3 text-[var(--status-error)] typography-meta break-words",children:o("gitView.conflict.errorLoadingDetails",{message:E})}),e[81]=E,e[82]=o,e[83]=ee):ee=e[83],e[84]!==ue||e[85]!==o?(ne=ue.length>0&&t.jsxs("div",{className:"space-y-2 overflow-hidden",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("p",{className:"typography-meta text-muted-foreground",children:o("gitView.conflict.conflictedFiles")}),t.jsx("span",{className:"typography-micro px-1.5 py-0.5 rounded bg-[var(--surface-elevated)] text-muted-foreground",children:ue.length})]}),t.jsx("div",{className:"bg-[var(--surface-elevated)] rounded-lg p-3 max-h-40 overflow-y-auto overflow-x-hidden",children:t.jsx("ul",{className:"space-y-1",children:ue.map(ri)})})]}),e[84]=ue,e[85]=o,e[86]=ne):ne=e[86],e[87]!==g||e[88]!==o?(W=g?.headInfo&&t.jsxs("div",{className:"space-y-1 overflow-hidden",children:[t.jsx("p",{className:"typography-meta text-muted-foreground",children:o("gitView.conflict.headInfo")}),t.jsx("div",{className:"typography-micro text-foreground font-mono bg-[var(--surface-elevated)] rounded-lg p-3 max-h-24 overflow-y-auto break-words whitespace-pre-wrap",children:g.headInfo})]}),e[87]=g,e[88]=o,e[89]=W):W=e[89],r="flex flex-col gap-2 pt-2";let je;e[90]!==J?(je=()=>{J()},e[90]=J,e[91]=je):je=e[91];const He=b||!g;let Ne;e[92]!==b?(Ne=b?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"add",className:"size-4"}),e[92]=b,e[93]=Ne):Ne=e[93];let Ce;e[94]!==o?(Ce=o("gitView.conflict.resolveNewSession"),e[94]=o,e[95]=Ce):Ce=e[95],e[96]!==je||e[97]!==He||e[98]!==Ne||e[99]!==Ce?(s=t.jsxs(X,{variant:"default",onClick:je,disabled:He,className:"w-full gap-2",children:[Ne,Ce]}),e[96]=je,e[97]=He,e[98]=Ne,e[99]=Ce,e[100]=s):s=e[100];let Se;e[101]!==H?(Se=()=>{H()},e[101]=H,e[102]=Se):Se=e[102];const _e=b||!g||!V;let Ve;e[103]!==b?(Ve=b?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"chat-1",className:"size-4"}),e[103]=b,e[104]=Ve):Ve=e[104];let ke;e[105]!==o?(ke=o("gitView.conflict.resolveCurrentSession"),e[105]=o,e[106]=ke):ke=e[106],e[107]!==Se||e[108]!==_e||e[109]!==Ve||e[110]!==ke?(x=t.jsxs(X,{variant:"outline",onClick:Se,disabled:_e,className:"w-full gap-2",children:[Ve,ke]}),e[107]=Se,e[108]=_e,e[109]=Ve,e[110]=ke,e[111]=x):x=e[111],Q="flex gap-2 pt-1";let Ae;e[112]!==o?(Ae=o("gitView.conflict.continueLater"),e[112]=o,e[113]=Ae):Ae=e[113],e[114]!==D||e[115]!==Ae?(n=t.jsx(X,{variant:"ghost",size:"sm",onClick:D,className:"flex-1",children:Ae}),e[114]=D,e[115]=Ae,e[116]=n):n=e[116],_=X,R="destructive",U="sm",Y=P,te="flex-1",ie=o("gitView.conflict.abortOperation",{operation:Z}),e[34]=g,e[35]=v,e[36]=V,e[37]=P,e[38]=D,e[39]=H,e[40]=J,e[41]=b,e[42]=E,e[43]=a,e[44]=i,e[45]=m,e[46]=o,e[47]=_,e[48]=S,e[49]=K,e[50]=R,e[51]=U,e[52]=Y,e[53]=te,e[54]=ie,e[55]=Q,e[56]=n,e[57]=r,e[58]=s,e[59]=x,e[60]=I,e[61]=L,e[62]=se,e[63]=ee,e[64]=ne,e[65]=W,e[66]=fe,e[67]=he,e[68]=le}else _=e[47],S=e[48],K=e[49],R=e[50],U=e[51],Y=e[52],te=e[53],ie=e[54],Q=e[55],n=e[56],r=e[57],s=e[58],x=e[59],I=e[60],L=e[61],se=e[62],ee=e[63],ne=e[64],W=e[65],fe=e[66],he=e[67],le=e[68];let re;e[117]!==_||e[118]!==R||e[119]!==U||e[120]!==Y||e[121]!==te||e[122]!==ie?(re=t.jsx(_,{variant:R,size:U,onClick:Y,className:te,children:ie}),e[117]=_,e[118]=R,e[119]=U,e[120]=Y,e[121]=te,e[122]=ie,e[123]=re):re=e[123];let me;e[124]!==Q||e[125]!==n||e[126]!==re?(me=t.jsxs("div",{className:Q,children:[n,re]}),e[124]=Q,e[125]=n,e[126]=re,e[127]=me):me=e[127];let oe;e[128]!==r||e[129]!==s||e[130]!==x||e[131]!==me?(oe=t.jsxs("div",{className:r,children:[s,x,me]}),e[128]=r,e[129]=s,e[130]=x,e[131]=me,e[132]=oe):oe=e[132];let ce;e[133]!==I||e[134]!==L||e[135]!==se||e[136]!==ee||e[137]!==ne||e[138]!==W||e[139]!==oe?(ce=t.jsxs("div",{className:I,children:[L,se,ee,ne,W,oe]}),e[133]=I,e[134]=L,e[135]=se,e[136]=ee,e[137]=ne,e[138]=W,e[139]=oe,e[140]=ce):ce=e[140];let pe;e[141]!==S||e[142]!==fe||e[143]!==ce?(pe=t.jsx(S,{className:fe,children:ce}),e[141]=S,e[142]=fe,e[143]=ce,e[144]=pe):pe=e[144];let ge;return e[145]!==K||e[146]!==he||e[147]!==le||e[148]!==pe?(ge=t.jsx(K,{open:he,onOpenChange:le,children:pe}),e[145]=K,e[146]=he,e[147]=le,e[148]=pe,e[149]=ge):ge=e[149],ge};function si(f){return f.openNewSessionDraft}function ni(f){return f.currentSessionId}function ai(f){return f.setPendingInputText}function li(f){return f.setPendingSyntheticParts}function ri(f){return t.jsx("li",{className:"typography-micro text-foreground font-mono truncate block",title:f,children:f},f)}const ki=({open:f,onOpenChange:e,targetBranch:i,changedFileCount:a,onCommitAndSwitch:h,onGenerateMessage:u,onRevertAndSwitch:m})=>{const{t:d}=de(),[c,p]=w.useState(""),[k,v]=w.useState(null),[o,A]=w.useState(!1),V=k!==null;w.useEffect(()=>{f||(p(""),A(!1))},[f]);const T=async()=>{v("generate");try{const l=await u();l&&p(l)}catch(l){ve.error(l instanceof Error?l.message:d("gitView.dirtySwitch.actionFailed"))}finally{v(null)}},N=async()=>{v("commit");try{let l=c.trim();if(!l){if(l=(await u()).trim(),!l){ve.error(d("gitView.toast.enterCommitMessage"));return}p(l)}await h(l,o)}catch(l){ve.error(l instanceof Error?l.message:d("gitView.dirtySwitch.actionFailed"))}finally{v(null)}},b=async()=>{v("revert");try{await m()}catch(l){ve.error(l instanceof Error?l.message:d("gitView.dirtySwitch.actionFailed"))}finally{v(null)}};return t.jsx(De,{open:f,onOpenChange:l=>{V||e(l)},children:t.jsx(Te,{className:"max-w-md w-[calc(100vw-2rem)]",children:t.jsxs("div",{className:"flex flex-col gap-4",children:[t.jsxs(ze,{children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(M,{name:"alert",className:"size-5 shrink-0 text-[var(--status-warning)]"}),t.jsx(Re,{children:d("gitView.dirtySwitch.title")})]}),t.jsx(Oe,{children:a===1?d("gitView.dirtySwitch.descriptionSingle",{branch:i}):d("gitView.dirtySwitch.descriptionPlural",{branch:i,count:a})})]}),t.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-border/60 px-3 py-2 focus-within:border-border",children:[t.jsx("input",{value:c,onChange:l=>p(l.target.value),placeholder:d("gitView.commit.messagePlaceholder"),disabled:V,onKeyDown:l=>{l.key==="Enter"&&!V&&(l.preventDefault(),N())},className:"min-w-0 flex-1 bg-transparent typography-meta text-foreground outline-none placeholder:text-muted-foreground"}),t.jsx("button",{type:"button",onClick:()=>{T()},disabled:V,"aria-label":d("gitView.commit.generate"),title:d("gitView.commit.generate"),className:"shrink-0 text-muted-foreground hover:text-foreground disabled:opacity-50",children:k==="generate"?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"ai-generate-2",className:"size-4 text-primary"})})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Dt,{checked:o,onChange:A,disabled:V,ariaLabel:d("gitView.dirtySwitch.pushAfterCommit")}),t.jsx("span",{className:"typography-ui-label text-foreground cursor-pointer select-none",onClick:()=>!V&&A(!o),children:d("gitView.dirtySwitch.pushAfterCommit")})]}),t.jsxs("div",{className:"flex items-center justify-between gap-2 pt-1",children:[t.jsxs(X,{variant:"destructive",size:"sm",onClick:()=>{b()},disabled:V,className:"gap-2",children:[k==="revert"?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):null,d("gitView.dirtySwitch.revertAndSwitch")]}),t.jsxs(X,{variant:"default",size:"sm",onClick:()=>{N()},disabled:V,className:"gap-2",children:[k==="commit"?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):null,d("gitView.dirtySwitch.commitAndSwitch")]})]})]})})})},We="max-w-none",oi="flex flex-wrap items-center gap-2",Nt=f=>{const e=be.c(6),{error:i,children:a}=f,h=i?"alert":void 0,u=i&&"text-[var(--status-error)]";let m;e[0]!==u?(m=ae(Me,u),e[0]=u,e[1]=m):m=e[1];let d;return e[2]!==a||e[3]!==h||e[4]!==m?(d=t.jsx("p",{role:h,className:m,children:a}),e[2]=a,e[3]=h,e[4]=m,e[5]=d):d=e[5],d},ci=f=>{if(!f||f.target.operation!=="checkout-hydration")return[];const e=[...f.target.requirements],i=[...(f.hydration?.submodules??[]).map(a=>({kind:"submodule",item:a})),...(f.hydration?.lfs??[]).map(a=>({kind:"lfs",item:a}))];for(const{kind:a,item:h}of i){const u=h.endpoint;u&&(e.some(m=>m.kind===a&&m.path===h.path&&m.endpoint.fingerprint===u.fingerprint)||e.push({kind:a,path:h.path,endpoint:u}))}return e},di=f=>{const e=be.c(45),{directory:i,className:a}=f,{t:h}=de(),{git:u,sourceControl:m}=mt(),d=ut(i,m),c=Ie(ui),p=Ie(fi),k=ft(),v=ht(hi),[o,A]=w.useState(""),[V,T]=w.useState(!1),N=w.useRef(0);let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=()=>(N.current=N.current+1,A(""),T(!1),()=>{N.current=N.current+1}),e[0]=b):b=e[0];let l;e[1]!==d.scope||e[2]!==u||e[3]!==m?(l=[d.scope,u,m],e[1]=d.scope,e[2]=u,e[3]=m,e[4]=l):l=e[4],w.useLayoutEffect(b,l);const g=d.read;let F;e[5]!==k?(F=H=>vt(H)&&xt(H,k),e[5]=k,e[6]=F):F=e[6];let E;e[7]!==c||e[8]!==p||e[9]!==F?(E=pt(c,p,F),e[7]=c,e[8]=p,e[9]=F,e[10]=E):E=e[10];const $=E;let B,z,O,C,y,P,j;if(e[11]!==a||e[12]!==i||e[13]!==u||e[14]!==c||e[15]!==$||e[16]!==o||e[17]!==g||e[18]!==v||e[19]!==m||e[20]!==h){z=Symbol.for("react.early_return_sentinel");e:{const H=g?Tt(g):null,q=H?.providers[0]?.primaryRemote??H?.remotes[0]?.name??"origin",J=(g?.repository.remotes??[]).filter(S=>S.name!==q&&H?.remotes.find(K=>K.name===S.name)?.readiness!=="ready"),_=async(S,K)=>{if(o)return;const R=N.current,U=Ge(),Y=()=>N.current===R&&U===Ge();A(S),T(!1);const te=await Ut({directory:i,identity:K,remoteName:S},{git:u,sourceControl:m});Y()&&(te.status!=="applied"&&T(!0),A(""))};if(!J.length||!u.configureTransportBinding){z=null;break e}B=yt,e[28]!==h?(O=h("gitView.remotes.title"),e[28]=h,e[29]=O):O=e[29],e[30]!==h?(C=h("gitView.remotes.description"),e[30]=h,e[31]=C):C=e[31],e[32]!==a?(y=ae("min-w-0",a),e[32]=a,e[33]=y):y=e[33],P=bt,j=J.map(S=>{const K=gt(S.fetch.displayUrl);return t.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"truncate typography-ui-label text-foreground",children:S.name}),t.jsx("p",{className:ae(Me,"truncate"),title:S.fetch.displayUrl,children:S.fetch.displayUrl})]}),t.jsx(wt,{activeProfile:null,identities:$,onSelect:R=>{_(S.name,R)},isApplying:o===S.name,applicability:R=>jt(R,K),triggerClassName:"shrink-0 border border-border",onOpen:()=>{v(m,c.map(pi))}})]},S.name)})}e[11]=a,e[12]=i,e[13]=u,e[14]=c,e[15]=$,e[16]=o,e[17]=g,e[18]=v,e[19]=m,e[20]=h,e[21]=B,e[22]=z,e[23]=O,e[24]=C,e[25]=y,e[26]=P,e[27]=j}else B=e[21],z=e[22],O=e[23],C=e[24],y=e[25],P=e[26],j=e[27];if(z!==Symbol.for("react.early_return_sentinel"))return z;let D;e[34]!==V||e[35]!==h?(D=V?t.jsx(Nt,{error:!0,children:h("settings.gitlab.status.operationFailed")}):null,e[34]=V,e[35]=h,e[36]=D):D=e[36];let G;return e[37]!==B||e[38]!==D||e[39]!==O||e[40]!==C||e[41]!==y||e[42]!==P||e[43]!==j?(G=t.jsxs(B,{title:O,description:C,className:y,contentClassName:P,children:[j,D]}),e[37]=B,e[38]=D,e[39]=O,e[40]=C,e[41]=y,e[42]=P,e[43]=j,e[44]=G):G=e[44],G},mi=({directory:f,className:e})=>{const{t:i}=de(),{git:a,sourceControl:h}=mt(),u=ut(f,h),m=Gt(f,a,h),[d,c]=w.useState(""),[p,k]=w.useState(""),[v,o]=w.useState(null),[A,V]=w.useState(!1),[T,N]=w.useState(!1),[b,l]=w.useState(!1),g=w.useRef(0),F=Ie(s=>s.profiles),E=Ie(s=>s.globalIdentity),$=Ie(s=>s.loadProfiles),B=Ie(s=>s.loadGlobalIdentity),z=ft(),O=ht(s=>s.refreshIdentityAccounts),C=zt(f),y=m.entry?.reads.at(-1)?.operation,P=y?.target.operation==="checkout-hydration"&&y.target.remote.name===d?ci(y):[],j=P.find(s=>JSON.stringify([s.kind,s.path,s.endpoint.fingerprint])===p),D=u.read,G=D?.repository.remotes.find(s=>s.name===d),H=j&&D?.binding?.auxiliary.find(s=>s.kind===j.kind&&s.endpoint.fingerprint===j.endpoint.fingerprint);w.useLayoutEffect(()=>(g.current+=1,c(""),k(""),o(null),V(!1),N(!1),l(!1),()=>{g.current+=1}),[u.scope,a,h]),w.useLayoutEffect(()=>{},[j?.endpoint.fingerprint]),w.useEffect(()=>{b&&($(),B())},[$,B,b]);const q=w.useMemo(()=>pt(F,E,s=>vt(s)&&xt(s,z)),[z,F,E]),J=j?.endpoint.displayUrl??"",_=w.useMemo(()=>J?gt(J):null,[J]),S=w.useCallback(s=>_?jt(s,_):{applicable:!0},[_]),K=w.useMemo(()=>{const s=q.filter(I=>S(I).applicable);return(C?.userName&&C.userEmail?s.find(I=>I.userName===C.userName&&I.userEmail===C.userEmail):void 0)??s.find(I=>I.account&&_?.host&&Rt(I.account.instance)===_.host)??null},[S,q,_,C]),R=(v?.endpoint===j?.endpoint.fingerprint?q.find(s=>s.id===v?.id):null)??K,U=R?Mt(R):null,Y=!!(u.status==="ready"&&D?.binding&&G&&j&&a.configureAuxiliaryBinding&&!A&&R&&S(R).applicable&&(U!=="account"||R?.account)&&(U!=="ssh"||R?.sshCredentialId)),te=!!(u.status==="ready"&&H&&G&&a.configureAuxiliaryBinding&&!A),ie=async()=>{if(!d||m.blocked)return;const s=m.start();if(s){N(!1);try{await Pt({directory:f,git:a,sourceControl:h,parentRemoteName:d,onOperation:s.onOperation})}catch(x){x instanceof Ft||N(!0)}finally{s.finish()}}},Q=async s=>{if(s==="configure"&&!Y||s==="remove"&&!te||!u.isCurrent()||!D?.binding||!G||!j||!a.configureAuxiliaryBinding)return;const x=g.current,I=Ge(),L=()=>g.current===x&&I===Ge(),se={directory:f,expectedRepositoryId:D.repository.repositoryId,expectedRevision:D.revision,expectedConfigRevision:D.repository.configRevision,parentRemote:d,expectedParentFingerprint:G.fetch.fingerprint,kind:j.kind,path:j.path,expectedEndpointFingerprint:j.endpoint.fingerprint},ee=s==="remove"?{...se,operation:s}:R&&qt(R,se);if(!ee)return;const ne=Pe.captureMutation(u.scope,D);V(!0),N(!1);try{const W=await a.configureAuxiliaryBinding(ee);Pe.setMutationResult(ne,W.binding)||await Pe.reconcile(ne,h)}catch{L()&&N(!0),await Pe.reconcile(ne,h)}finally{ne.release(),L()&&V(!1)}},n=!!(P.length&&y&&"error"in y&&y.error.code==="AUTHENTICATION_REQUIRED"),r=s=>i(s==="submodule"?"gitView.hydration.kind.submodule":"gitView.hydration.kind.lfs");return t.jsxs(Ht,{open:b,onOpenChange:l,className:ae("min-w-0",e),children:[t.jsxs(_t,{className:"w-auto justify-start gap-1.5",children:[t.jsx(Ot,{children:i("gitView.hydration.title")}),t.jsx(M,{name:b?"arrow-up-s":"arrow-down-s",className:"h-4 w-4 text-muted-foreground"})]}),t.jsx(Bt,{children:t.jsxs(yt,{description:i("gitView.hydration.description"),className:"min-w-0 pt-2",contentClassName:bt,children:[t.jsx(Be,{label:i("gitView.hydration.parentRemote"),controlClassName:We,children:t.jsxs(nt,{value:d,onValueChange:s=>{c(s),k(""),o(null)},disabled:!D?.binding||A||m.blocked,children:[t.jsx(at,{size:lt,className:"w-full","aria-label":i("gitView.hydration.parentRemote"),children:t.jsx(rt,{placeholder:i("settings.sourceControl.transport.remoteLabel")})}),t.jsx(ot,{children:D?.binding?.remotes.filter(s=>s.readiness==="ready").map(s=>t.jsx(ct,{value:s.name,children:s.name},s.name))})]})}),t.jsx(Kt,{entry:m.entry,onRefresh:()=>{m.refresh()},onCancel:()=>{m.cancel()}}),n?t.jsx("p",{className:Me,children:i("gitView.hydration.authorizationNeeded")}):null,P.length?t.jsx(Be,{label:i("gitView.hydration.endpoint"),controlClassName:We,children:t.jsxs(nt,{value:p,onValueChange:k,disabled:A,children:[t.jsx(at,{size:lt,className:"w-full","aria-label":i("gitView.hydration.endpoint"),children:t.jsx(rt,{placeholder:i("gitView.hydration.chooseEndpoint"),children:j?`${j.path} · ${r(j.kind)} · ${j.endpoint.displayUrl}`:void 0})}),t.jsx(ot,{children:P.map(s=>{const x=JSON.stringify([s.kind,s.path,s.endpoint.fingerprint]);return t.jsxs(ct,{value:x,children:[s.path," · ",r(s.kind)," · ",s.endpoint.displayUrl]},x)})})]})}):null,j?t.jsx(t.Fragment,{children:t.jsx(Be,{label:i("gitView.hydration.identity"),controlClassName:We,children:t.jsx(wt,{activeProfile:R,identities:q,onSelect:s=>o({endpoint:j.endpoint.fingerprint,id:s.id}),isApplying:A,applicability:S,triggerClassName:"w-full max-w-none border border-border",menuAlign:"start",onOpen:()=>{O(h,F.map(s=>s.account))}})})}):null,y?.hydration?.status==="client-missing"?t.jsx("p",{role:"alert",className:ae(Me,"text-[var(--status-warning)]"),children:i("gitView.hydration.lfsMissing")}):null,T?t.jsx(Nt,{error:!0,children:i("settings.gitlab.status.operationFailed")}):null,t.jsxs("div",{className:oi,children:[t.jsx(X,{size:"sm",variant:"outline",disabled:!d||m.blocked||A,onClick:()=>{ie()},children:i("gitView.hydration.retry")}),j?t.jsxs(t.Fragment,{children:[t.jsx(X,{size:"sm",disabled:!Y,onClick:()=>{Q("configure")},children:i("settings.common.actions.saveChanges")}),H?t.jsx(X,{size:"sm",variant:"ghost",disabled:!te,onClick:()=>{Q("remove")},children:i("settings.common.actions.delete")}):null]}):null]})]})})]})};function ui(f){return f.profiles}function fi(f){return f.globalIdentity}function hi(f){return f.refreshIdentityAccounts}function pi(f){return f.account}const Ze="border-t border-border/60 pt-4",Ai=f=>{const e=be.c(12),{open:i,onOpenChange:a,directory:h}=f,{t:u}=de(),m=Lt(),d=$e(gi),c=$e(xi);let p;e[0]!==h||e[1]!==m||e[2]!==a||e[3]!==i||e[4]!==c||e[5]!==d||e[6]!==u?(p=i?t.jsxs(Te,{className:"@container min-w-0 max-h-[85dvh] overflow-y-auto",children:[t.jsxs(ze,{children:[t.jsx(Re,{children:u("gitView.context.configure")}),t.jsx(Oe,{children:u("gitView.context.description")})]}),t.jsx(di,{directory:h,className:Ze}),t.jsx(mi,{directory:h,className:Ze}),t.jsxs(Xe,{className:Ze,children:[t.jsx(X,{size:"sm",variant:"ghost",onClick:()=>{a(!1),d("git"),m?m.openSettings():c(!0)},children:u("gitView.context.settings")}),t.jsx(X,{size:"sm",variant:"outline",onClick:()=>a(!1),children:u("dialog.common.actions.close")})]})]}):null,e[0]=h,e[1]=m,e[2]=a,e[3]=i,e[4]=c,e[5]=d,e[6]=u,e[7]=p):p=e[7];let k;return e[8]!==a||e[9]!==i||e[10]!==p?(k=t.jsx(De,{open:i,onOpenChange:a,children:p}),e[8]=a,e[9]=i,e[10]=p,e[11]=k):k=e[11],k};function gi(f){return f.setSettingsPage}function xi(f){return f.setSettingsDialogOpen}const Ii=({mergeInProgress:f,rebaseInProgress:e,onContinue:i,onAbort:a,onResolveWithAI:h,conflictCount:u=0,isLoading:m=!1})=>{const{t:d}=de(),[c,p]=w.useState(null),k=f&&f.head,v=e&&(e.headName||e.onto),o=k?"merge":v?"rebase":null;if(!o)return null;const A=async()=>{p("continue");try{await i()}finally{p(null)}},V=async()=>{p("abort");try{await a()}finally{p(null)}},T=c!==null,N=u>0,b=d(o==="merge"?"gitView.operation.merge":"gitView.operation.rebase");let l="";f?l=f.message?d("gitView.operation.mergingMessage",{message:f.message}):d("gitView.operation.mergeInProgressWithHead",{head:f.head}):e&&(l=e.headName?d("gitView.operation.rebasingOnto",{headName:e.headName,onto:e.onto||""}):d("gitView.operation.rebaseInProgress"));const g=N?u===1?d("gitView.operation.inProgressTitleOneConflict",{operation:b,count:u}):d("gitView.operation.inProgressTitleManyConflicts",{operation:b,count:u}):d("gitView.operation.inProgressTitle",{operation:b}),F=d(N?"gitView.operation.resolveConflictsHint":"gitView.operation.readyToContinueHint");return t.jsx("div",{className:"mx-4 mt-3 overflow-hidden rounded-lg border border-[var(--status-warning-border)]",children:t.jsxs("div",{className:"flex flex-col gap-3 p-3",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"typography-label text-[var(--status-warning)]",children:g}),l&&t.jsx("p",{className:"typography-micro break-words text-muted-foreground",children:l})]}),t.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[t.jsx("p",{className:"typography-micro min-w-[12rem] flex-1 text-muted-foreground",children:F}),t.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[t.jsxs(X,{variant:"ghost",size:"sm",onClick:V,disabled:T||m,className:"gap-1.5",children:[c==="abort"?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"close",className:"size-4"}),d("gitView.operation.abort")]}),N?h&&t.jsx(X,{variant:"default",size:"sm",onClick:h,disabled:T||m,children:d("gitView.operation.resolveWithAi")}):t.jsxs(X,{variant:"default",size:"sm",onClick:A,disabled:T||m,className:"gap-1.5",children:[c==="continue"?t.jsx(M,{name:"loader-4",className:"size-4 animate-spin"}):t.jsx(M,{name:"check",className:"size-4"}),d("gitView.operation.continue")]})]})]})]})})};export{Ci as C,ki as D,Ii as I,Ai as R,Si as a,Vi as b};
@@ -1 +1 @@
1
- import{ih as B,l3 as ae,l4 as Ie,kP as Te,kQ as Ve,kR as Pe,kS as De,l5 as _e,kX as Be,f as Ue,B as le,I as he,lw as We}from"./useAppFontEffects-DCqCVGlT.js";import{g as F,b as Ge,f as Ae,i as je,s as we,k as Ke,d as de,l as $e,j as qe,e as Je,h as Ye,m as Xe,R as Qe,I as Ze,n as ce,r as et,t as ue,w as tt,q as it,v as nt,x as st,z as rt,A as ot,B as fe,C as at,K as lt,D as ht,E as dt,G as ct,F as ut,y as pe,S as ft,H as pt,J as gt,L as mt,a as He,M as St,N as Ct}from"./parseDiffFromFile-Cy0PNxun.js";import{a as R,G as vt,u as Rt,W as yt,b as Lt,c as W,n as ge,t as Tt}from"./Virtualizer-CGNyscoc.js";import{j as v,r as x,R as I}from"./vendor-react-BUCujlKS.js";import{u as G,w as ie,i as Y,e as me,a as Ee,x as Se,z as At,k as Ce,d as be,y as ve,b as wt,C as Ht,A as j,B as Re}from"./computeVirtualFileMetrics-CmPe29DM.js";import{a as b,i as X,l as K,h as Et,r as bt}from"./isFilePlainText-CYBUzW4I.js";import{t as V}from"./vendor-hast-util-to-html-BKBhbTDb.js";import"./index-vQ1Pg1cr.js";function $(i,e){return e.cacheKey==null?i.file===e&&i.sourceContents===e.contents:i.cacheKey===e.cacheKey}let xt=-1;var Mt=class{options;annotationSlotName;onRenderUpdate;workerManager;__id=`file-renderer:${++xt}`;highlighter;file;renderCache;pendingHighlightResult;computedLang="text";lineAnnotations={};lineCache;pendingStructuralRows;textDocumentCache=new WeakMap;editSessionActive=!1;get fileCache(){return this.renderCache?.file}constructor(i={theme:B},e=F,t,n){this.options=i,this.annotationSlotName=e,this.onRenderUpdate=t,this.workerManager=n,n?.isWorkingPool()!==!0&&(this.highlighter=G(i.theme??B)?ie():void 0)}setOptions(i){this.options=i}mergeOptions(i){this.options={...this.options,...i}}setLineAnnotations(i){this.lineAnnotations={};for(const e of i){const t=this.lineAnnotations[e.lineNumber]??[];this.lineAnnotations[e.lineNumber]=t,t.push(e)}}cleanUp(){this.endEditSession(),this.recycle(),this.workerManager=void 0,this.onRenderUpdate=void 0}beginEditSession(i,e){const{editSessionActive:t,renderCache:n}=this;if(this.editSessionActive=!0,t||(this.pendingHighlightResult=void 0),this.file=i,n==null||t&&n.file===i)return;if(t){this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap;return}const{options:r}=this.getRenderOptions(i),s=n.file===i,o=e!=null&&R(n.file,e),{result:a}=n;if(!n.highlighted||a==null||!b(n.options,r)||!s&&!o){this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap;return}if(s)return;this.renderCache={...n,file:i,result:{...a,code:[...a.code]}};const{lineCache:l}=this;l!=null&&e!=null&&$(l,e)?this.lineCache={cacheKey:void 0,file:i,sourceContents:i.contents,lines:l.lines}:this.lineCache=void 0}endEditSession(i){if(this.editSessionActive=!1,this.pendingHighlightResult=void 0,this.file==null){this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap;return}const{renderCache:e}=this;i==null||e==null||e.file===i||!R(e.file,i)||(e.file=i)}editorRenderReady(){return this.renderCache?.options.useTokenTransformer===!0&&this.renderCache.highlighted&&this.renderCache.result!=null}recycle(){this.editSessionActive?(this.renderCache!=null&&(this.renderCache.renderRange=void 0),this.pendingHighlightResult=void 0,this.pendingStructuralRows=void 0):(this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap),this.highlighter=void 0,this.workerManager?.cleanUpTasks(this),this.file=void 0}clearRenderCache(){this.pendingStructuralRows=void 0,this.renderCache=void 0,this.pendingHighlightResult=void 0}hydrate(i){this.file=i;const{options:e}=this.getRenderOptions(i),t=q(this.getOrCreateLineCache(i).length,this.getTokenizeMaxLength());let n=this.workerManager?.getFileResultCache(i);n!=null&&!b(e,n.options)&&(n=void 0),this.renderCache??={file:i,hydrated:!0,options:e,highlighted:!t&&!X(i),result:t?void 0:n?.result,renderRange:void 0},!this.editSessionActive&&this.workerManager?.isWorkingPool()===!0?this.renderCache.result==null&&!t&&this.workerManager.highlightFileAST(this,i):this.highlighter==null&&(this.computedLang=i.lang??Y(i.name),this.initializeHighlighter())}getLocalHighlightTheme(){return this.workerManager?.getFileRenderOptions().theme??this.options.theme??B}getEffectiveCodeOptions(){const i=this.workerManager?.isWorkingPool()===!0?this.workerManager.getFileRenderOptions():void 0;return{theme:this.getLocalHighlightTheme(),tokenizeMaxLineLength:i?.tokenizeMaxLineLength??this.options.tokenizeMaxLineLength}}getRenderOptions(i){const e=(()=>{if(this.workerManager?.isWorkingPool()===!0){const r=this.workerManager.getFileRenderOptions();return this.editSessionActive&&r.useTokenTransformer!==!0?{...r,useTokenTransformer:!0}:r}const{tokenizeMaxLineLength:n=1e3}=this.options;return{theme:this.getLocalHighlightTheme(),useTokenTransformer:this.editSessionActive||this.options.useTokenTransformer===!0,tokenizeMaxLineLength:n}})(),{renderCache:t}=this;return t?.result==null?{options:e,forceHighlight:!0}:!R(i,t.file)||!b(e,t.options)?{options:e,forceHighlight:!0}:{options:e,forceHighlight:!1}}getFileForNextRender(i){const{options:e}=this.getRenderOptions(i);if(this.getReadyRenderResult(i,e)!=null)return i;const{renderCache:t}=this;if(t==null)return i;if(R(t.file,i))return t.file;const n=K(i.contents),r=i.contents.length===0||X(i)||q(n.length,this.getTokenizeMaxLength());return this.canRenderFile(i,e,r)?i:t.file}canRenderFile(i,e,t){const{renderCache:n}=this;return n==null||R(n.file,i)?!0:t?n.result==null&&n.hydrated!==!0||this.workerManager?.isWorkingPool()===!0||this.highlighter!=null&&G(e.theme):n.result==null&&n.hydrated!==!0?!0:!this.editSessionActive&&this.workerManager?.isWorkingPool()===!0?!n.highlighted:this.highlighter!=null&&G(e.theme)}getOrCreateLineCache(i){let{lineCache:e}=this;return(e==null||!$(e,i))&&(e={cacheKey:i.cacheKey,file:i,sourceContents:i.contents,lines:K(i.contents)}),this.lineCache=e,e.lines}getLineCount(i){const e=this.getOrCreateLineCache(i);return this.textDocumentCache.get(i)?.lineCount??e.length}updateRenderCache(i,e,t=!1){this.pendingStructuralRows=void 0;const{renderCache:n}=this;if(n==null)return;const{file:r,result:s}=n;if(s==null)return;const o=t?new Map:void 0;this.pendingStructuralRows=o;const a=this.lineCache!=null&&$(this.lineCache,r)?this.lineCache:void 0;for(const[l,h]of i){if(o==null&&a!=null&&l<a.lines.length){const u=h.map(d=>d[2]).join("");a.lines[l]=Ge(a.lines[l]??"",u)}const c={type:"element",tagName:"div",properties:{"data-line":l+1,"data-line-type":"context","data-line-index":l},children:h.map(([u,d,f])=>u===0&&d===""?f===""?{type:"element",tagName:"br",properties:{},children:[]}:{type:"text",value:f}:{type:"element",tagName:"span",properties:{"data-char":u,style:`color:${d};`},children:[{type:"text",value:f}]})};o!=null?o.set(l,c):s.code[l]=c}s.baseThemeType=e,n.isDirty=!0,o==null&&a!=null&&(r.contents=a.lines.join(""),a.sourceContents=r.contents)}applyDocumentChange(i){const{pendingStructuralRows:e,renderCache:t}=this;this.pendingStructuralRows=void 0;const n=this.file??t?.file;if(n==null)return;const r=t?.result,s=this.lineCache!=null&&$(this.lineCache,n)?this.lineCache.lines:K(n.contents),o=K(i.getText());if(r!=null&&s.length!==o.length){const l=Math.min(s.length,o.length);let h=0;for(;h<l&&s[h]===o[h];)h++;let c=0;for(;c<l-h&&s[s.length-1-c]===o[o.length-1-c];)c++;const u=r.code;r.code=new Array(o.length);for(let d=0;d<h;d++)r.code[d]=u[d];for(let d=0;d<c;d++)r.code[o.length-1-d]=u[s.length-1-d];if(e!==void 0)for(const[d,f]of e)d<o.length&&(r.code[d]=f);for(let d=h;d<o.length-c;d++)r.code[d]??={type:"element",tagName:"div",properties:{"data-line":d+1,"data-line-type":"context","data-line-index":d},children:[{type:"element",tagName:"span",properties:{"data-char":0},children:[{type:"text",value:i.getLineText(d)}]}]};for(let d=0;d<r.code.length;d++){const f=r.code[d];f?.type==="element"&&(f.properties["data-line"]=d+1,f.properties["data-line-index"]=d)}t!=null&&(t.isDirty=!0)}const a=i.getText();this.lineCache={cacheKey:n.cacheKey,file:n,sourceContents:a,lines:o},this.textDocumentCache.set(n,i),n.contents=a}renderFile(i=this.file,e=ae){if(this.file=i,i==null){this.pendingHighlightResult=void 0;return}let{options:t,forceHighlight:n}=this.getRenderOptions(i);const r=this.getReadyRenderResult(i,t);this.pendingHighlightResult=void 0,r!=null&&(this.renderCache={...r,file:i,renderRange:void 0},n=!1),this.renderCache??={file:i,highlighted:!1,options:t,result:void 0,renderRange:void 0};const s=this.getOrCreateLineCache(i),o=i.contents.length>0,a=!o||X(i)||q(s.length,this.getTokenizeMaxLength()),l=this.canRenderFile(i,t,a),h=!R(i,this.renderCache.file),c=!Ae(this.renderCache.renderRange,e);if(!this.editSessionActive&&this.workerManager?.isWorkingPool()===!0){const u=this.renderCache.result==null&&this.renderCache.highlighted&&!a&&!h&&je(e);l&&!u&&(a||this.renderCache.result==null||!this.renderCache.highlighted&&(h||c))&&(this.renderCache.file=i,this.renderCache.options=t,this.renderCache.highlighted=!1,(this.renderCache.result==null||h||c||n)&&(this.renderCache.result=this.workerManager.getPlainFileAST(i,e.startingLine,e.totalLines,s)),this.renderCache.renderRange=e),!a&&o&&(!this.renderCache.highlighted||n)&&this.workerManager.highlightFileAST(this,i)}else{this.computedLang=i.lang??Y(i.name),this.highlighter??=ie();const u=this.highlighter!=null&&G(t.theme),d=this.highlighter!=null&&me(this.computedLang),f=!a&&d;if(l&&this.highlighter!=null&&u&&(n||a||!this.renderCache.highlighted&&f||this.renderCache.result==null)){const{result:m,options:p}=this.renderFileWithHighlighter(i,this.highlighter,a||!d);this.renderCache={file:i,options:p,highlighted:f,result:m,renderRange:void 0}}(!u||!a&&!d)&&this.asyncHighlight(i).then(({result:m,options:p})=>{this.applyHighlightResult(i,m,p,!a)})}return this.renderCache.result!=null?this.processFileResult(this.renderCache.file,e,this.renderCache.result):void 0}async asyncRender(i,e=ae){this.file=i;const{result:t}=await this.asyncHighlight(i);return this.processFileResult(i,e,t)}async asyncHighlight(i){const e=q(this.getOrCreateLineCache(i).length,this.getTokenizeMaxLength());this.computedLang=e?"text":i.lang??Y(i.name);const t=this.highlighter!=null&&Et(Ee(this.getLocalHighlightTheme())),n=e||this.highlighter!=null&&me(this.computedLang);return(this.highlighter==null||!t||!n)&&(this.highlighter=await this.initializeHighlighter()),this.renderFileWithHighlighter(i,this.highlighter,e)}renderFileWithHighlighter(i,e,t=!1){const{options:n}=this.getRenderOptions(i);return{result:bt(i,e,n,{forcePlainText:t}),options:n}}processFileResult(i,e,{code:t,themeStyles:n,baseThemeType:r}){const s=this.getLineCount(i),{disableFileHeader:o=!1}=this.options,a=[],l=ve(),h=Math.min(e.startingLine+e.totalLines,s);let c=0;const u=we(e)?Ke(this.lineAnnotations):void 0;u!=null&&(l.children.push(Se("context","annotation",1)),a.push(de({hunkIndex:-1,lineIndex:-1,annotations:u.map(d=>this.annotationSlotName(d))})),c++);for(let d=e.startingLine;d<h;d++){const f=d+1,m=t[d];if(m==null){const S="FileRenderer.processFileResult: Line doesnt exist";throw console.error(S,{name:i.name,lineIndex:d,lineNumber:f}),new Error(S)}l.children.push(At("context",f,`${d}`)),a.push(m),c++;const p=this.lineAnnotations[f];p!=null&&(l.children.push(Se("context","annotation",1)),a.push(de({hunkIndex:0,lineIndex:f,annotations:p.map(S=>this.annotationSlotName(S))})),c++)}return l.properties.style=`grid-row: span ${c}`,{file:i,gutterAST:l.children??[],contentAST:a,preAST:this.createPreElement(s),headerAST:o?void 0:this.renderHeader(i),totalLines:s,rowCount:c,themeStyles:n,baseThemeType:r,bufferBefore:e.bufferBefore,bufferAfter:e.bufferAfter,css:""}}renderHeader(i){const{headerRenderMode:e="default",stickyHeader:t=!1}=this.options;return $e({fileOrDiff:i,mode:e,stickyHeader:t})}renderFullHTML(i){return V(this.renderFullAST(i))}renderFullAST(i,e=[]){return e.push(Ce({tagName:"code",children:this.renderCodeAST(i),properties:{"data-code":""}})),{...i.preAST,children:e}}renderCodeAST(i){const e=ve();return e.children=i.gutterAST,e.properties.style=`grid-row: span ${i.rowCount}`,[e,qe(i.contentAST,i.rowCount)]}renderPartialHTML(i,e=!1){return e?V(Ce({tagName:"code",children:i,properties:{"data-code":""}})):V(i)}async initializeHighlighter(){return this.highlighter=await be(Je(this.computedLang,{theme:this.getLocalHighlightTheme(),preferredHighlighter:this.workerManager?.getPreferredHighlighter()??this.options.preferredHighlighter})),this.highlighter}onHighlightSuccess(i,e,t,n=!0){this.editSessionActive||this.applyHighlightResult(i,e,t,n)}applyHighlightResult(i,e,t,n=!0){const{file:r,renderCache:s}=this;r==null||s==null||!R(i,r)||!b(t,this.getRenderOptions(r).options)||(s.result==null||!s.highlighted||!b(s.options,t)||!R(s.file,r))&&(this.pendingHighlightResult={file:r,options:t,highlighted:n,result:e},this.onRenderUpdate?.())}getMatchingWorkerResultCache(i,e){if(this.editSessionActive)return;const t=this.workerManager?.getFileResultCache(i);if(!(t==null||!b(e,t.options)))return t}getReadyRenderResult(i,e){const{pendingHighlightResult:t}=this;if(t!=null&&R(t.file,i)&&b(t.options,e))return t;const n=this.getMatchingWorkerResultCache(i,e);if(!(n==null||this.hasHighlightedRenderCache(i,e)))return{file:i,highlighted:!0,...n}}hasHighlightedRenderCache(i,e){const{renderCache:t}=this;return t?.result!=null&&t.highlighted&&R(i,t.file)&&b(e,t.options)}onHighlightError(i){console.error(i)}getTokenizeMaxLength(){return this.options.tokenizeMaxLength??1e5}createPreElement(i){const{disableLineNumbers:e=!1,overflow:t="scroll"}=this.options;return Ye({type:"file",diffIndicators:"none",disableBackground:!0,disableLineNumbers:e,overflow:t,split:!1,totalLines:i})}};function q(i,e){return i>e}function Ft(i,e){return i.lineNumber===e.lineNumber&&i.metadata===e.metadata}function ye(i){return{theme:i?.theme,disableLineNumbers:i?.disableLineNumbers,overflow:i?.overflow,themeType:i?.themeType,collapsed:i?.collapsed,disableFileHeader:i?.disableFileHeader,disableVirtualizationBuffers:i?.disableVirtualizationBuffers,stickyHeader:i?.stickyHeader,preferredHighlighter:i?.preferredHighlighter,useCSSClasses:i?.useCSSClasses,useTokenTransformer:Xe(i),tokenizeMaxLineLength:i?.tokenizeMaxLineLength,tokenizeMaxLength:i?.tokenizeMaxLength,unsafeCSS:i?.unsafeCSS,headerRenderMode:i?.renderCustomHeader!=null?"custom":"default"}}const kt=[""];function zt(i){const e={...i};return delete e.cacheKey,e}let Nt=-1;var xe=class{options;workerManager;isContainerManaged;static LoadedCustomComponent=!0;__id=`file:${++Nt}`;type="file";fileContainer;spriteSVG;pre;code;bufferBefore;bufferAfter;themeCSSStyle;appliedThemeCSS;hasAdoptedThemeCSS=!1;unsafeCSSStyle;appliedUnsafeCSS;gutterUtilityContent;errorWrapper;placeHolder;lastRenderedHeaderHTML;cachedHeaderHTML;appliedPreAttributes;lastRowCount;mounted=!1;headerElement;headerCustom;headerPrefix;headerFilenameSuffix;headerMetadata;fileRenderer;resizeManager;interactionManager;annotationCache=new Map;lineAnnotations=[];managersDirty=!1;file;editSession;renderedFile;renderRange;enabled=!0;editor;constructor(e={theme:B},t,n=!1){this.options=e,this.workerManager=t,this.isContainerManaged=n,this.fileRenderer=new Mt(e,this.getAnnotationSlotName,this.handleHighlightRender,this.workerManager),this.resizeManager=new Qe,this.interactionManager=new Ze("file",ce(e)),this.workerManager?.subscribeToThemeChanges(this)}getAnnotationSlotName=e=>et(this.editSession?.annotations,e,F);handleHighlightRender=()=>{this.rerender()};rerender(){!this.enabled||this.file==null||this.render({file:this.file,forceRender:!0,renderRange:this.renderRange})}getTheme(){return this.workerManager?.getFileRenderOptions().theme??this.options.theme??B}getLatestFile(e=this.file){return this.editSession?.file??e}getRenderedFile(){return this.renderedFile}getLatestAnnotations(){return this.editSession?.annotations?.current??this.lineAnnotations}isNewAnnotations(e){const t=this.editSession?.annotations;return e===this.lineAnnotations?!1:t==null||e!==t.provided&&e!==t.current}updateExternalFile(e,t){if(R(this.file,e))return!1;const n=this.editSession!=null;return this.file=e,n||this.editor!=null?this.installEditSession(e,n?void 0:this.editor?.__getDocumentContents(e),!0):this.editSession=void 0,this.editSession?.annotations!=null&&t!=null&&(this.lineAnnotations=t,this.editSession.annotations=ue(t,F,this.editSession.annotations)),!0}installEditSession(e,t,n=!1){const r=t==null||t.name===e.name&&t.lang===e.lang&&t.contents===e.contents,s=zt(t??e);this.editSession={file:s,externalReplacement:n&&r,annotations:this.editSession?.annotations??ue(this.lineAnnotations,F)},this.fileRenderer.beginEditSession(s,r?e:void 0)}onThemeChange(){this.fileRenderer.clearRenderCache(),this.rerender()}setOptions(e){e!=null&&(this.options=e,this.cachedHeaderHTML=void 0,this.syncInteractionOptions())}syncInteractionOptions(){this.interactionManager.setOptions(ce(this.options))}mergeOptions(e){this.options={...this.options,...e}}setThemeType(e){(this.options.themeType??"system")!==e&&(this.mergeOptions({themeType:e}),this.applyCachedThemeState(e))}applyCachedThemeState(e){if(typeof this.options.theme=="string"||this.fileContainer==null||this.appliedThemeCSS==null)return!1;const t=this.appliedThemeCSS.baseThemeType??e;return this.appliedThemeCSS.themeType===t?!1:(this.applyThemeState(this.fileContainer,this.appliedThemeCSS.themeStyles,e,this.appliedThemeCSS.baseThemeType),!0)}hasThemeChanged(){return this.appliedThemeCSS!=null&&!wt(this.appliedThemeCSS.theme,this.getTheme())}getHoveredLine=()=>this.interactionManager.getHoveredLine();setLineAnnotations(e){const t=this.editSession?.annotations;if(t==null){this.lineAnnotations=e;return}this.isNewAnnotations(e)&&(this.lineAnnotations=e,tt(t,e,F))}syncEditSessionAnnotationsFromEditor(e){const t=this.editSession?.annotations;return t==null||e===t.current?!1:(t.current=e,this.fileRenderer.setLineAnnotations(e),this.renderAnnotations(),!0)}setSelectedLines(e,t){this.interactionManager.setSelection(e,t)}setEditorActiveLine(e,t){this.interactionManager.setEditorActiveLine(e,{lineNumberOnly:t?.lineNumberOnly,side:t?.side??"additions"})}getCodeScrollLeft(){return this.code?.scrollLeft??0}setCodeScrollLeft(e){this.code!=null&&(this.code.scrollLeft=e)}__getEffectiveCodeOptions(){return{...this.options,...this.fileRenderer.getEffectiveCodeOptions()}}flushManagers(){if(!this.managersDirty||this.pre==null){this.managersDirty=!1;return}const{overflow:e="scroll"}=this.options;this.interactionManager.setup(this.pre),this.resizeManager.setup(this.pre,{disableAnnotations:e==="wrap",columnVariables:this.shouldApplyColumnVariables(e)?"apply":"measure"}),this.managersDirty=!1}shouldApplyColumnVariables(e){return e==="scroll"&&this.getLatestAnnotations().length>0}cleanUp(e=!1){const t=this.editor;this.emitPostRender(!0),t?.cleanUp(e?"recycle":"discard"),e||(this.editor=void 0),this.resizeManager.cleanUp(),this.interactionManager.cleanUp(),this.managersDirty=!1,this.workerManager?.unsubscribeToThemeChanges(this),this.renderRange=void 0,this.isContainerManaged||this.fileContainer?.remove(),this.fileContainer=void 0,this.mounted=!1,e||(this.lineAnnotations=[]),this.clearAuxiliaryNodes(),this.pre=void 0,this.code=void 0,this.bufferBefore?.remove(),this.bufferBefore=void 0,this.bufferAfter?.remove(),this.bufferAfter=void 0,this.appliedPreAttributes=void 0,this.lastRowCount=void 0,this.headerElement=void 0,this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0,this.headerCustom=void 0,this.lastRenderedHeaderHTML=void 0,e||(this.cachedHeaderHTML=void 0),this.errorWrapper?.remove(),this.errorWrapper=void 0,this.spriteSVG=void 0,this.themeCSSStyle=void 0,this.appliedThemeCSS=void 0,this.hasAdoptedThemeCSS=!1,this.unsafeCSSStyle=void 0,this.appliedUnsafeCSS=void 0,this.placeHolder?.remove(),this.placeHolder=void 0,e?this.fileRenderer.recycle():(this.fileRenderer.cleanUp(),this.workerManager=void 0,this.file=void 0,this.editSession=void 0,this.renderedFile=void 0),this.enabled=!1}virtualizedSetup(){this.enabled=!0,this.workerManager?.subscribeToThemeChanges(this)}hydrate(e){const{fileContainer:t,prerenderedHTML:n,preventEmit:r=!1,file:s,lineAnnotations:o}=e;if(!this.enabled)throw new Error("File.hydrate: attempting to call hydrate after cleaned up");if(this.fileContainer!=null)throw new Error("File.hydrate: hydrate can only be called before the instance has rendered or hydrated");this.hydrateElements(t,n);const a=this.editor!=null;a||Ot(this.pre,s,this.options.collapsed)||It(this.headerElement,s,this.options.disableFileHeader)?this.render({...e,forceRender:a||e.forceRender,preventEmit:!0}):this.hydrationSetup({file:s,lineAnnotations:o}),r||this.emitPostRender()}hydrateElements(e,t){this.fileContainer!==e&&this.emitPostRender(!0),it(e,t);for(const n of Array.from(e.shadowRoot?.children??[])){if(n instanceof SVGElement){this.spriteSVG=n;continue}if(n instanceof HTMLElement){if(n instanceof HTMLPreElement){this.pre=n,this.appliedPreAttributes=void 0;continue}if(n instanceof HTMLStyleElement&&n.hasAttribute("data-theme-css")){this.themeCSSStyle=n;continue}if(n instanceof HTMLStyleElement&&n.hasAttribute("data-unsafe-css")){this.unsafeCSSStyle=n,this.appliedUnsafeCSS=n.textContent;continue}if("diffsHeader"in n.dataset){this.headerElement=n,this.lastRenderedHeaderHTML=void 0;continue}}}this.pre!=null&&(this.syncCodeNodeFromPre(this.pre),this.pre.removeAttribute("data-dehydrated")),this.fileContainer=e,this.hydrateMeasuredScrollbar()}hydrationSetup({file:e,lineAnnotations:t}){this.lineAnnotations=t??this.lineAnnotations,this.file=e,this.fileRenderer.setOptions(ye(this.options)),this.syncInteractionOptions(),this.pre!=null&&(this.fileRenderer.hydrate(e),this.renderedFile=e,this.renderAnnotations(),this.renderGutterUtility(),this.injectUnsafeCSS(),this.managersDirty=!0,this.flushManagers())}getOrCreateLineCache(e=this.getLatestFile()){return e!=null?this.fileRenderer.getOrCreateLineCache(e):kt}updateBuffers(e){this.pre!=null&&this.applyBuffers(this.pre,e)}syncRenderViewToEditor(){const{editor:e,fileContainer:t,renderRange:n}=this,r=this.getLatestAnnotations(),s=this.getLatestFile();if(e==null||t==null||s==null)return;const o=c=>{!this.enabled||this.editor!==e||this.fileContainer!==t||this.getLatestFile()!==s||e.__syncRenderView({highlighter:c,fileContainer:t,file:s,lineAnnotations:r,renderRange:n,externalDocument:this.editSession?.externalReplacement===!0})},a=this.getTheme(),l=s.lang??Y(s.name),h=ie({theme:a,lang:l});h!=null?o(h):be({themes:Ee(a),langs:Array.from(new Set(["text",l])),preferredHighlighter:this.workerManager?.getPreferredHighlighter()??this.options.preferredHighlighter}).then(o)}__acknowledgeDocumentUpdate(){this.editSession!=null&&(this.editSession.externalReplacement=!1)}__acceptEditorChange(e){const{lineAnnotations:t}=e;t!=null&&this.syncEditSessionAnnotationsFromEditor(t)}emitEditChange(e){const{onEditChange:t}=this.options;t?.(e)}__captureDocumentSessionState(){}__attachEditor(e){if(this.editor!=null)throw new Error("File.__attachEditor: an editor is already attached");this.editor=e;const t=()=>{this.editor=void 0,this.fileRenderer.endEditSession()};try{return this.resumeEditorRendering(e),t}catch(n){throw t(),n}}__resumeEditor(e){if(this.editor!==e)throw new Error("File.__resumeEditor: editor association changed");this.resumeEditorRendering(e)}resumeEditorRendering(e){this.editSession!=null?this.fileRenderer.beginEditSession(this.editSession.file):this.file!=null&&this.installEditSession(this.file,e.__getDocumentContents(this.file));const t=this.editSession?.file;this.fileRenderer.editorRenderReady()?(this.fileRenderer.fileCache===t&&(this.renderedFile=t),this.syncRenderViewToEditor()):this.rerender()}__completeEditSession(e,t){this.settleEditSession(t==="install",e)}settleEditSession(e,t){const{editSession:n,file:r,lineAnnotations:s}=this;if(n==null||r==null)return;const{file:o,annotations:a}=n;if(this.editor!=null)throw new Error("File.__completeEditSession: detach the editor before completing the session");const l=a?.current;let h,c=!1,u;if(t==null)throw new Error("File.__completeEditSession: editor is required for completion");const d={...o},f={file:d,editor:t,originalFile:r,lineAnnotations:l,originalLineAnnotations:s};Object.freeze(f);try{if(t.__emitEditComplete(f),this.options.onEditComplete?.(f)==="accept"){if(d.cacheKey!=null&&d.cacheKey===r.cacheKey)throw new Error("File.__completeEditSession: an accepted file must not reuse the replaced file cacheKey");h=d}}catch(S){c=!0,u=S}e&&h!=null&&(this.file=h,l!=null&&(this.lineAnnotations=l)),this.editSession=void 0;const{renderedFile:m,file:p}=this;if(this.fileRenderer.endEditSession(p),m!=null&&p!=null&&m!==p&&R(m,p)&&(this.renderedFile=p),e&&this.fileContainer!=null&&this.rerender(),c)throw u}applyDocumentChange(e,t){const n=this.editSession?.file;if(n==null)throw new Error("File.applyDocumentChange: requires an active edit session");this.fileRenderer.beginEditSession(n),this.fileRenderer.applyDocumentChange(e),t!=null&&this.syncEditSessionAnnotationsFromEditor(t)}applySuspendedDocumentChange(e,t){this.editSession!=null&&(this.applyDocumentChange(e,t),this.fileRenderer.clearRenderCache())}updateRenderCache(e,t,n){const r=this.editSession?.file;if(r==null)throw new Error("File.updateRenderCache: requires an active edit session");this.fileRenderer.beginEditSession(r),this.fileRenderer.updateRenderCache(e,t,n?.lineCountChangeInFlight)}render({file:e,fileContainer:t,forceRender:n=!1,preventEmit:r=!1,containerWrapper:s,deferManagers:o=!1,lineAnnotations:a,renderRange:l}){if(!this.enabled)throw new Error("File.render: attempting to call render after cleaned up");this.editor?.__postponeBgTokenizeToNextFrame();const{collapsed:h=!1,themeType:c="system"}=this.options,u=h?void 0:l,d=this.renderRange,f=this.hasThemeChanged(),m=a!=null&&(a.length>0||this.getLatestAnnotations().length>0)?this.isNewAnnotations(a):!1,p=!R(this.file,e);p&&this.updateExternalFile(e,a);const S=this.getLatestFile(e)??e;if(!h&&!n&&Ae(u,this.renderRange)&&!p&&!m&&!f){const g=this.applyCachedThemeState(c);return g&&this.finalizeRender(),g}this.renderRange=u,p&&(this.cachedHeaderHTML=void 0),this.fileRenderer.setOptions(ye(this.options)),this.syncInteractionOptions(),a!=null&&this.setLineAnnotations(a),this.fileRenderer.setLineAnnotations(this.getLatestAnnotations());const{disableErrorHandling:H=!1,disableFileHeader:A=!1}=this.options;if(A&&(this.headerElement!=null&&(this.headerElement.remove(),this.headerElement=void 0,this.lastRenderedHeaderHTML=void 0),this.clearHeaderSlots()),t=this.getOrCreateFileContainerNode(t,s),this.applyCachedThemeState(c),h){this.removeRenderedCode(),this.clearAuxiliaryNodes();try{const g=this.fileRenderer.renderFile(S,Ie);g!=null&&this.applyThemeState(t,g.themeStyles,c,g.baseThemeType),g?.headerAST!=null&&this.applyHeaderToDOM(g.headerAST,t,g.file),this.renderedFile=g?.file??S,this.injectUnsafeCSS()}catch(g){if(H)throw g;console.error(g),g instanceof Error&&this.applyErrorToDOM(g,t)}return this.finalizeRender(),r||this.emitPostRender(),!0}try{const g=this.getOrCreatePreNode(t);if(!this.canPartiallyRender(n,m,p||f||!R(this.renderedFile,S))||!this.applyPartialRender(S,d,u)){const y=this.fileRenderer.renderFile(S,u);if(y==null)return this.workerManager?.isInitialized()===!1&&this.workerManager.isWorkingPool()&&this.workerManager.initialize().catch(()=>{}).then(()=>this.rerender()),!1;this.applyThemeState(t,y.themeStyles,c,y.baseThemeType),y.headerAST!=null&&this.applyHeaderToDOM(y.headerAST,t,y.file),this.applyFullRender(y,g),this.renderedFile=y.file}this.applyBuffers(g,u),this.injectUnsafeCSS(),this.renderAnnotations(),this.renderGutterUtility(),this.managersDirty=!0,o||this.flushManagers(),this.finalizeRender(),this.editor!=null&&this.syncRenderViewToEditor()}catch(g){if(H)throw g;console.error(g),g instanceof Error&&this.applyErrorToDOM(g,t)}return r||this.emitPostRender(),!0}finalizeRender(){}emitPostRender(e=!1){const{fileContainer:t,options:{onPostRender:n}}=this;if(e){if(!this.mounted||(this.mounted=!1,t==null))return;n?.(t,this,"unmount");return}if(t==null)return;const r=this.mounted?"update":"mount";this.mounted=!0,n?.(t,this,r)}removeRenderedCode(){this.resizeManager.cleanUp(),this.interactionManager.cleanUp(),this.bufferBefore?.remove(),this.bufferBefore=void 0,this.bufferAfter?.remove(),this.bufferAfter=void 0,this.code?.remove(),this.code=void 0,this.pre?.remove(),this.pre=void 0,this.appliedPreAttributes=void 0,this.lastRowCount=void 0}clearAuxiliaryNodes(){for(const{element:e}of this.annotationCache.values())e.remove();this.annotationCache.clear(),this.gutterUtilityContent?.remove(),this.gutterUtilityContent=void 0}canPartiallyRender(e,t,n){return!(e||t||n)}renderPlaceholder(e){if(this.fileContainer==null)return!1;if(this.emitPostRender(!0),this.cleanChildNodes(),this.placeHolder==null){const t=this.fileContainer.shadowRoot??this.fileContainer.attachShadow({mode:"open"});this.placeHolder=document.createElement("div"),this.placeHolder.dataset.placeholder="",t.appendChild(this.placeHolder)}return this.setPlaceholderHeight(e)}setPlaceholderHeight(e){return this.placeHolder==null?!1:(this.placeHolder.style.setProperty("height",`${e}px`),!0)}async primeHighlightCache(e=this.file){const{workerManager:t}=this;if(e==null||t==null||!t.isWorkingPool()||e.cacheKey==null||X(e))return;const n=this.options.tokenizeMaxLength??1e5;this.fileRenderer.getOrCreateLineCache(e).length>n||await t.primeFileHighlightCache(e).catch(r=>{console.error(r)})}cleanChildNodes(){this.resizeManager.cleanUp(),this.interactionManager.cleanUp(),this.clearAuxiliaryNodes(),this.bufferAfter?.remove(),this.bufferBefore?.remove(),this.code?.remove(),this.errorWrapper?.remove(),this.headerElement?.remove(),this.headerPrefix?.remove(),this.headerFilenameSuffix?.remove(),this.headerMetadata?.remove(),this.headerCustom?.remove(),this.pre?.remove(),this.spriteSVG?.remove(),this.themeCSSStyle?.remove(),this.unsafeCSSStyle?.remove(),this.bufferAfter=void 0,this.bufferBefore=void 0,this.code=void 0,this.errorWrapper=void 0,this.headerElement=void 0,this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0,this.headerCustom=void 0,this.pre=void 0,this.spriteSVG=void 0,this.themeCSSStyle=void 0,this.appliedThemeCSS=void 0,this.hasAdoptedThemeCSS=!1,this.unsafeCSSStyle=void 0,this.appliedUnsafeCSS=void 0,this.lastRenderedHeaderHTML=void 0,this.lastRowCount=void 0,this.mounted=!1}renderAnnotations(){if(this.isContainerManaged||this.fileContainer==null){for(const{element:r}of this.annotationCache.values())r.remove();this.annotationCache.clear();return}const e=new Map(this.annotationCache),{renderAnnotation:t}=this.options,n=this.getLatestAnnotations();if(t!=null&&n.length>0)for(const[r,s]of n.entries()){const o=this.getAnnotationSlotName(s),a=`${r}-${o}`;let l=this.annotationCache.get(a);if(l==null||!Ft(s,l.annotation)){l?.element.remove();const h=t(s);if(h==null)continue;l={element:nt(o),annotation:s},l.element.appendChild(h),this.fileContainer.appendChild(l.element),this.annotationCache.set(a,l)}e.delete(a)}for(const[r,{element:s}]of e.entries())this.annotationCache.delete(r),s.remove()}renderGutterUtility(){const{renderGutterUtility:e}=this.options;if(this.fileContainer==null||e==null){this.gutterUtilityContent?.remove(),this.gutterUtilityContent=void 0;return}const t=e(this.interactionManager.getHoveredLine);if(t!=null&&this.gutterUtilityContent!=null)return;if(t==null){this.gutterUtilityContent?.remove(),this.gutterUtilityContent=void 0;return}const n=st();n.appendChild(t),this.fileContainer.appendChild(n),this.gutterUtilityContent=n}injectUnsafeCSS(){const{unsafeCSS:e}=this.options,t=this.fileContainer?.shadowRoot;if(t!=null){if(e==null||e===""){this.unsafeCSSStyle!=null&&(this.unsafeCSSStyle.remove(),this.unsafeCSSStyle=void 0),this.appliedUnsafeCSS=void 0;return}this.unsafeCSSStyle?.parentNode===t&&this.appliedUnsafeCSS===e||(this.unsafeCSSStyle??=rt(),this.unsafeCSSStyle.parentNode!==t&&t.appendChild(this.unsafeCSSStyle),this.unsafeCSSStyle.textContent=ot(e),this.appliedUnsafeCSS=e)}}applyThemeState(e,t,n,r){const s=e.shadowRoot??e.attachShadow({mode:"open"}),o=r??n,a=this.getTheme(),l=typeof a=="string"?a:{...a},h=fe(s);if(this.themeCSSStyle?.parentNode===s&&this.appliedThemeCSS?.themeStyles===t&&this.appliedThemeCSS.themeType===o&&this.appliedThemeCSS.scrollbarGutter===h){this.appliedThemeCSS.theme=l;return}if(this.hasAdoptedThemeCSS&&this.themeCSSStyle?.parentNode===s){this.hasAdoptedThemeCSS=!1,this.appliedThemeCSS={theme:l,themeStyles:t,themeType:o,baseThemeType:r,scrollbarGutter:h};return}this.themeCSSStyle=at({shadowRoot:s,currentNode:this.themeCSSStyle,themeCSS:lt(t,o,h)}),this.appliedThemeCSS=this.themeCSSStyle!=null?{theme:l,themeStyles:t,themeType:o,baseThemeType:r,scrollbarGutter:h}:void 0}hydrateMeasuredScrollbar(){const e=this.fileContainer?.shadowRoot;e==null||this.themeCSSStyle==null||(this.themeCSSStyle.textContent=ht(this.themeCSSStyle.textContent??"",fe(e)))}shouldGuardRebuildScroll(){return this.editor!=null&&dt()}applyFullRender(e,t){this.cleanupErrorWrapper(),this.applyPreNodeAttributes(t,e);const n=this.code=ct({code:this.code}),r=this.fileRenderer.renderCodeAST(e);this.editor?.__captureFocusForDOMReplacement();const s=()=>{if(n.childElementCount>=2)for(let o=0;o<2;o++){const a=n.children[o],l=r[o];a.innerHTML=V(l.children),a.style.cssText=l.properties.style}else n.innerHTML=V(r);t.contains(n)||t.replaceChildren(n)};this.shouldGuardRebuildScroll()?ut(t,s):s(),this.lastRowCount=e.rowCount}applyPartialRender(e,t,n){if(t==null||n==null)return!1;const{code:r}=this,s=r!=null?this.getColumns(r):void 0;if(r==null||s==null)return!1;const o=t.startingLine,a=n.startingLine,l=t.totalLines===1/0?Number.POSITIVE_INFINITY:o+t.totalLines,h=n.totalLines===1/0?Number.POSITIVE_INFINITY:a+n.totalLines,c=Math.max(o,a),u=Math.min(l,h);if(u<=c)return!1;if(!this.trimDOMToOverlap(s.gutter,c,u)||!this.trimDOMToOverlap(s.content,c,u))throw new Error("File.applyPartialRender: failed to trim to overlap");let{length:d}=s.content.children;const f=(H,A)=>{if(!(A<=0))return this.fileRenderer.renderFile(e,{startingLine:H,totalLines:A,bufferBefore:0,bufferAfter:0})},m=a<c?f(a,c-a):void 0;if(m===void 0&&a<c)return!1;const p=h===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:Math.max(0,h-u),S=h>u?f(u,p):void 0;return S===void 0&&h>u?!1:(this.cleanupErrorWrapper(),m!=null&&(s.gutter.insertAdjacentHTML("afterbegin",this.fileRenderer.renderPartialHTML(m.gutterAST)),s.content.insertAdjacentHTML("afterbegin",this.fileRenderer.renderPartialHTML(m.contentAST)),d+=m.rowCount),S!=null&&(s.gutter.insertAdjacentHTML("beforeend",this.fileRenderer.renderPartialHTML(S.gutterAST)),s.content.insertAdjacentHTML("beforeend",this.fileRenderer.renderPartialHTML(S.contentAST)),d+=S.rowCount),this.lastRowCount!==d&&(s.gutter.style.setProperty("grid-row",`span ${d}`),s.content.style.setProperty("grid-row",`span ${d}`),this.lastRowCount=d),!0)}getColumns(e){const t=e.children[0],n=e.children[1];if(!(!(t instanceof HTMLElement)||!(n instanceof HTMLElement)||t.dataset.gutter==null||n.dataset.content==null))return{gutter:t,content:n}}trimDOMToOverlap(e,t,n){const r=this.getDOMBoundaryIndices(e,[t,n]),s=r.get(t)??e.children.length,o=r.get(n)??e.children.length;if(s>o)return!1;for(let a=e.children.length-1;a>=o;a-=1)e.children[a]?.remove();for(let a=s-1;a>=0;a-=1)e.children[a]?.remove();return!0}getDOMBoundaryIndices(e,t){const n=[...new Set(t)].sort((l,h)=>l-h),r=new Map;if(n.length===0)return r;let s=0,o=n[s];const{children:a}=e;o===0&&(r.set(0,0),s+=1,o=n[s]);for(let l=0;l<a.length;l+=1){const h=a[l];if(!(h instanceof HTMLElement))continue;const c=this.getLineIndexFromDOMNode(h);if(c!=null){for(;o!=null&&c>=o;)r.set(o,l),s+=1,o=n[s];if(s>=n.length)break}}for(const l of n)r.has(l)||r.set(l,a.length);return r}getLineIndexFromDOMNode(e){const t=e.dataset.lineIndex;if(t==null)return;const n=Number(t);return Number.isNaN(n)?void 0:n}applyBuffers(e,t){if(t==null||this.shouldDisableVirtualizationBuffers()){this.bufferBefore!=null&&(this.bufferBefore.remove(),this.bufferBefore=void 0),this.bufferAfter!=null&&(this.bufferAfter.remove(),this.bufferAfter=void 0);return}t.bufferBefore>0?(this.bufferBefore==null&&(this.bufferBefore=document.createElement("div"),this.bufferBefore.dataset.virtualizerBuffer="before",e.before(this.bufferBefore)),this.bufferBefore.style.setProperty("height",`${t.bufferBefore}px`),this.bufferBefore.style.setProperty("contain","strict")):this.bufferBefore!=null&&(this.bufferBefore.remove(),this.bufferBefore=void 0),t.bufferAfter>0?(this.bufferAfter==null&&(this.bufferAfter=document.createElement("div"),this.bufferAfter.dataset.virtualizerBuffer="after",e.after(this.bufferAfter)),this.bufferAfter.style.setProperty("height",`${t.bufferAfter}px`),this.bufferAfter.style.setProperty("contain","strict")):this.bufferAfter!=null&&(this.bufferAfter.remove(),this.bufferAfter=void 0)}shouldDisableVirtualizationBuffers(){return this.options.disableVirtualizationBuffers??!1}applyHeaderToDOM(e,t,n){this.cleanupErrorWrapper(),this.placeHolder?.remove(),this.placeHolder=void 0;const r=this.cachedHeaderHTML??V(e);if(this.cachedHeaderHTML=r,r!==this.lastRenderedHeaderHTML){const h=document.createElement("div");h.innerHTML=r;const c=h.firstElementChild;if(!(c instanceof HTMLElement))return;this.headerElement!=null?t.shadowRoot?.replaceChild(c,this.headerElement):t.shadowRoot?.prepend(c),this.headerElement=c,this.lastRenderedHeaderHTML=r}if(this.isContainerManaged)return;const{renderHeaderPrefix:s,renderHeaderFilenameSuffix:o,renderCustomHeader:a,renderHeaderMetadata:l}=this.options;if(a!=null){const h=a(n)??void 0;this.headerCustom=this.upsertHeaderSlotElement(t,this.headerCustom,Te,h),this.headerPrefix?.remove(),this.headerFilenameSuffix?.remove(),this.headerMetadata?.remove(),this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0}else{const h=s?.(n)??void 0,c=o?.(n)??void 0,u=l?.(n)??void 0;this.headerPrefix=this.upsertHeaderSlotElement(t,this.headerPrefix,Ve,h),this.headerFilenameSuffix=this.upsertHeaderSlotElement(t,this.headerFilenameSuffix,Pe,c),this.headerMetadata=this.upsertHeaderSlotElement(t,this.headerMetadata,De,u),this.headerCustom?.remove(),this.headerCustom=void 0}}clearHeaderSlots(){this.headerPrefix?.remove(),this.headerFilenameSuffix?.remove(),this.headerMetadata?.remove(),this.headerCustom?.remove(),this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0,this.headerCustom=void 0}upsertHeaderSlotElement(e,t,n,r){if(r==null){t?.remove();return}const s=t??this.createHeaderSlotElement(n);return t==null&&e.appendChild(s),this.replaceHeaderSlotContent(s,r),s}replaceHeaderSlotContent(e,t){e.replaceChildren(),t instanceof Element?e.appendChild(t):e.innerText=`${t}`}createHeaderSlotElement(e){const t=document.createElement("div");return t.slot=e,t}getOrCreateFileContainerNode(e,t){const{fileContainer:n}=this,r=e??n??document.createElement("diffs-container"),s=n!==r;return n!=null&&s&&this.editor?.__captureFocusForDOMReplacement(),s&&this.emitPostRender(!0),this.fileContainer=r,n!=null&&s&&(this.lastRenderedHeaderHTML=void 0,this.headerElement=void 0),t!=null&&this.fileContainer.parentNode!==t&&t.appendChild(this.fileContainer),s&&this.adoptReusableShellElements(this.fileContainer),this.ensureSpriteSVG(this.fileContainer),this.fileContainer}adoptReusableShellElements(e){const{shadowRoot:t}=e;if(t!=null)for(const n of t.children)n instanceof SVGElement?this.spriteSVG??=n:pe(n)&&n.hasAttribute("data-theme-css")?(this.themeCSSStyle??=n,this.hasAdoptedThemeCSS=!0):pe(n)&&n.hasAttribute("data-unsafe-css")&&(this.unsafeCSSStyle??=n,this.appliedUnsafeCSS??=this.options.unsafeCSS??void 0)}ensureSpriteSVG(e){const t=e.shadowRoot??e.attachShadow({mode:"open"});if(this.spriteSVG==null){const n=document.createElement("div");n.innerHTML=ft;const r=n.firstChild;r instanceof SVGElement&&(this.spriteSVG=r)}this.spriteSVG!=null&&this.spriteSVG.parentNode!==t&&t.appendChild(this.spriteSVG)}getOrCreatePreNode(e){const t=e.shadowRoot??e.attachShadow({mode:"open"});return this.pre==null?(this.pre=document.createElement("pre"),this.appliedPreAttributes=void 0,this.code=void 0,t.appendChild(this.pre)):this.pre.parentNode!==t&&(this.editor?.__captureFocusForDOMReplacement(),e.shadowRoot?.appendChild(this.pre),this.appliedPreAttributes=void 0),this.placeHolder?.remove(),this.placeHolder=void 0,this.pre}syncCodeNodeFromPre(e){this.code=void 0;for(const t of Array.from(e.children))if(t instanceof HTMLElement&&t.hasAttribute("data-code")){this.code=t;return}}applyPreNodeAttributes(e,{totalLines:t}){const{overflow:n="scroll",disableLineNumbers:r=!1}=this.options,s={type:"file",split:!1,overflow:n,disableLineNumbers:r,diffIndicators:"none",disableBackground:!0,totalLines:t};pt(s,this.appliedPreAttributes)||(gt(e,s),this.appliedPreAttributes=s)}applyErrorToDOM(e,t){this.cleanupErrorWrapper(),this.pre?.remove(),this.pre=void 0,this.appliedPreAttributes=void 0;const n=t.shadowRoot??t.attachShadow({mode:"open"});this.errorWrapper??=document.createElement("div"),this.errorWrapper.dataset.errorWrapper="",this.errorWrapper.textContent="",n.appendChild(this.errorWrapper);const r=document.createElement("div");r.dataset.errorMessage="",r.innerText=e.message,this.errorWrapper.appendChild(r);const s=document.createElement("pre");s.dataset.errorStack="",s.innerText=e.stack??"No Error Stack",this.errorWrapper.appendChild(s)}cleanupErrorWrapper(){this.errorWrapper?.remove(),this.errorWrapper=void 0}};function Ot(i,e,t=!1){return!t&&i==null&&e!=null}function It(i,e,t=!1){return i==null&&e!=null&&!t}const Vt=5e3,J=new Map;let Pt=-1;function Dt(i,e){return(i.overflow??"scroll")!==(e.overflow??"scroll")||(i.collapsed??!1)!==(e.collapsed??!1)||(i.disableLineNumbers??!1)!==(e.disableLineNumbers??!1)||(i.disableFileHeader??!1)!==(e.disableFileHeader??!1)||i.unsafeCSS!==e.unsafeCSS}var _t=class extends xe{virtualizer;metrics;__id=`virtualized-file:${++Pt}`;renderType="virtualized";top;height=0;cache={heights:new Map,checkpoints:[],fileAnnotationHeight:0,ghostTextRows:J};pendingRender;isVisible=!1;isSetup=!1;layoutDirty=!0;forceRenderOverride;currentCollapsed;constructor(i,e,t=_e,n,r=!1){super(i,n,r),this.virtualizer=e,this.metrics=t}setMetrics(i,e=!1){const t=Ht(i);!e&&mt(this.metrics,t)||(this.metrics=t,this.resetLayoutCache())}setLineAnnotations(i){this.syncLineAnnotations(i)&&(this.forceRenderOverride=!0)}syncLineAnnotations(i){return i==null||!this.isNewAnnotations(i)||i.length===0&&this.getLatestAnnotations().length===0?!1:(super.setLineAnnotations(i),!0)}syncEditSessionAnnotationsFromEditor(i){return super.syncEditSessionAnnotationsFromEditor(i)?(this.forceRenderOverride=!0,!0):!1}hasLineAnnotations(){return this.getLatestAnnotations().some(i=>i.lineNumber>0)}hasUniformLineHeights(){const{overflow:i="scroll"}=this.options;return i==="scroll"&&!this.hasLineAnnotations()&&this.cache.heights.size===0}getLineHeight(i,e=!1){const t=this.cache.heights.get(i);if(t!=null)return t;const n=e?2:1;return this.metrics.lineHeight*n}setOptions(i){if(this.isAdvancedMode())throw new Error("VirtualizedFile.setOptions cannot be used inside CodeView. Update CodeView options instead.");if(i==null)return;const{options:e}=this,t=!He(e,i),n=Dt(e,i);super.setOptions(i),n&&this.resetLayoutCache(!0),t&&(this.forceRenderOverride=!0),t&&this.virtualizer.instanceChanged(this,n)}setThemeType(i){if(this.isAdvancedMode())throw new Error("VirtualizedFile.setThemeType cannot be used inside CodeView. Update CodeView options instead.");super.setThemeType(i)}resetLayoutCache(i=!1,e=!0){this.layoutDirty=!0,this.cache.fileAnnotationHeight=0,this.cache.heights.size>0&&this.cache.heights.clear(),this.cache.checkpoints.length>0&&(this.cache.checkpoints.length=0),this.cache.ghostTextRows=J,this.renderRange!=null&&e&&(this.renderRange=void 0),i&&this.isSimpleMode()&&this.computeApproximateSize()}applyGhostTextRows(i){const{heights:e,ghostTextRows:t}=this.cache;if(t===i)return!1;const{lineHeight:n}=this.metrics;let r=!1;for(const s of new Set([...t.keys(),...i.keys()])){const o=t.get(s)??0,a=i.get(s)??0;if(a===o)continue;const l=(e.get(s)??n)-o*n+a*n;l===n?e.delete(s):e.set(s,l),r=!0}return this.cache.ghostTextRows=i,r}reconcileHeights(){let i=!1;if(this.fileContainer==null||this.getLayoutFile()==null)return this.height!==0&&(i=!0),this.height=0,i;const{overflow:e="scroll"}=this.options;this.top=this.getVirtualizedTop();const t=this.editor?.__getGhostTextRows()??J;i=this.applyGhostTextRows(t);const n=e!=="scroll"||this.getLatestAnnotations().length>0||this.isResizeDebuggingEnabled();if(this.placeHolder!=null||!n&&this.cache.heights.size===0&&this.cache.fileAnnotationHeight===0)return i&&(this.computeApproximateSize(!0),this.setPlaceholderHeight(this.height)),i;const{lineHeight:r}=this.metrics;if(this.code==null)return i;const s=this.code.children[1];if(!(s instanceof HTMLElement))return i;if(this.renderRange!=null&&we(this.renderRange)){const o=Bt(s)??0;o!==this.cache.fileAnnotationHeight&&(this.cache.fileAnnotationHeight=o,i=!0)}for(const o of s.children){if(!(o instanceof HTMLElement))continue;const a=o.dataset.lineIndex;if(a==null)continue;const l=Number(a),h=(t.get(l)??0)*r,c=this.cache.heights.get(l);if(!n&&(c==null||c===r+h))continue;let u=o.getBoundingClientRect().height+h,d=!1;o.nextElementSibling instanceof HTMLElement&&("lineAnnotation"in o.nextElementSibling.dataset||"noNewline"in o.nextElementSibling.dataset)&&("noNewline"in o.nextElementSibling.dataset&&(d=!0),u+=o.nextElementSibling.getBoundingClientRect().height);const f=this.getLineHeight(l,d);u!==f&&(i=!0,u===this.metrics.lineHeight*(d?2:1)?this.cache.heights.delete(l):this.cache.heights.set(l,u))}return(i||this.isResizeDebuggingEnabled())&&this.computeApproximateSize(!0),i}onRender=i=>this.fileContainer==null||this.file==null?!1:(i&&(this.top=this.getVirtualizedTop()),this.render({file:this.file}));updateCodeViewLayout(i,e,t,n){const r=!R(this.file,i);r&&this.updateExternalFile(i,n);const{pendingRenderFile:s,layoutFileChanged:o,renderedFileChanged:a,annotationsChanged:l}=this.updatePendingRender(i,n);let h=t?.resetFileLayoutCache===!0||o;t?.metrics!=null&&(this.metrics=t.metrics,h=!0);const{collapsed:c=!1}=this.options;return this.currentCollapsed!==c&&(this.currentCollapsed=c,h=!0),h&&this.resetLayoutCache(),r&&(this.layoutDirty=!0),!this.forceRenderOverride&&(r||a||l)&&(this.forceRenderOverride=!0),this.top=e,this.computeApproximateSize(!1,s),this.height}getLayoutFile(){return this.pendingRender?.file??this.getRenderedFile()}getLinePosition(i){const e=this.getLayoutFile();if(e==null||i<1)return;const{disableFileHeader:t=!1,collapsed:n=!1}=this.options,r=this.fileRenderer.getLineCount(e)-1;let s=j(this.metrics,t);if(n||r<0)return{top:s,height:0};const o=Math.min(Math.max(i-1,0),r),{lineHeight:a}=this.metrics;if(s+=this.cache.fileAnnotationHeight,this.hasUniformLineHeights())return{top:s+o*a,height:a};const l=this.getLayoutCheckpointBeforeLineIndex(o);s=l?.top??s;for(let h=l?.lineIndex??0;h<o;h++)s+=this.getLineHeight(h,!1);return{top:s,height:this.getLineHeight(o,!1)}}getEditorViewport(){return this.virtualizer.type==="simple"?this.virtualizer.getRoot():this.virtualizer.getContainerElement()}getNumericScrollAnchor(i){const e=this.getLayoutFile();if(e==null||this.renderRange==null)return;const{disableFileHeader:t=!1,collapsed:n=!1}=this.options;if(n||this.renderRange.totalLines<=0)return;const r=this.fileRenderer.getLineCount(e)-1;if(r<0)return;const s=j(this.metrics,t),o=Math.min(this.renderRange.startingLine,r),a=Math.min(o+this.renderRange.totalLines-1,r);if(a<o)return;const{fileAnnotationHeight:l}=this.cache;if(this.hasUniformLineHeights()){const{lineHeight:c}=this.metrics,u=s+(o===0?l:this.renderRange.bufferBefore),d=o+Math.max(Math.ceil((i-u)/c),0);return d>a?void 0:{lineNumber:d+1,top:s+l+d*c}}let h=s+(o===0?l:this.renderRange.bufferBefore);for(let c=o;c<=a;c++){if(h>=i)return{lineNumber:c+1,top:h};h+=this.getLineHeight(c)}}getVirtualizedHeight(){return this.height}getAdvancedStickySpecs(i){const e=this.getLayoutFile();if(this.top==null||e==null)return;if(this.options.collapsed===!0)return{topOffset:this.top,height:this.height};const t=i!=null?this.computeRenderRangeFromWindow(e,this.top,i):this.renderRange;if(t==null)return;const{bufferBefore:n,bufferAfter:r,totalLines:s}=t;let o=0;if(s===0){const a=i??this.virtualizer.getWindowSpecs();this.top<a.top&&(o=r)}return{topOffset:this.top+n+o,height:this.height-(n+r)}}cleanUp(i=!1){const e=this.cache.ghostTextRows.size>0;e&&(this.layoutDirty=!0);const t=i&&this.isAdvancedMode()&&this.fileContainer!=null&&(e||!R(this.getRenderedFile(),this.getLatestFile()));this.fileContainer!=null&&this.isSimpleMode()&&this.getSimpleVirtualizer()?.disconnect(this.fileContainer),i||this.resetLayoutCache(),this.pendingRender=void 0,this.isSetup=!1,super.cleanUp(i),t&&this.virtualizer.instanceChanged(this,!0)}computeApproximateSize(i=!1,e=this.getLayoutFile()){const t=this.isResizeDebuggingEnabled();if(!i&&!this.layoutDirty&&!t)return;const n=this.height===0;if(this.height=0,this.cache.checkpoints=[],e==null){this.layoutDirty=!1;return}this.applyGhostTextRows(this.editor?.__getGhostTextRows()??J);const{disableFileHeader:r=!1,collapsed:s=!1}=this.options,{lineHeight:o}=this.metrics,a=this.fileRenderer.getLineCount(e),l=j(this.metrics,r),h=Re(this.metrics);if(this.height+=l,s){this.layoutDirty=!1;return}if(this.height+=this.cache.fileAnnotationHeight,this.hasUniformLineHeights())this.height+=a*o;else for(let c=0;c<a;c++)this.addLayoutCheckpoint(c,this.height),this.height+=this.getLineHeight(c,!1);if(a>0&&(this.height+=h),this.fileContainer!=null&&t&&!n){const c=this.fileContainer.getBoundingClientRect();c.height!==this.height?console.log("VirtualizedFile.computeApproximateSize: computed height doesnt match",{name:e.name,elementHeight:c.height,computedHeight:this.height}):console.log("VirtualizedFile.computeApproximateSize: computed height IS CORRECT")}this.layoutDirty=!1}setVisibility(i){this.isAdvancedMode()||this.fileContainer==null||(this.renderRange=void 0,i&&!this.isVisible?(this.top=this.getVirtualizedTop(),this.isVisible=!0):!i&&this.isVisible&&(this.isVisible=!1,this.rerender()))}rerender(){if(!this.enabled||this.file==null)return;const i=this.getLatestFile(),e=i==null?void 0:this.fileRenderer.getFileForNextRender(i);this.isSimpleMode()&&(this.pendingRender=void 0),this.forceRenderOverride=!0,this.virtualizer.instanceChanged(this,!R(this.getRenderedFile(),e))}syncGhostTextRows(){const i=this.getAdvancedVirtualizer();i!=null?(i.capturePendingLayoutAnchor(),this.layoutDirty=!0,i.instanceChanged(this,!0)):this.getSimpleVirtualizer()?.requestHeightReconcile(this)}applyDocumentChange(i,e,t=!1){const{renderRange:n}=this;this.getAdvancedVirtualizer()?.capturePendingLayoutAnchor(),super.applyDocumentChange(i,e),this.getSimpleVirtualizer()?.markDOMDirty(),this.resetLayoutCache(this.isSimpleMode(),!1);const r=this.getRenderedFile();if(!this.isSimpleMode())this.computeApproximateSize(!0);else if(t&&n!=null&&r!=null){const s=this.virtualizer.getWindowSpecs(),o=this.computeRenderRangeFromWindow(r,this.top??0,s);o.bufferAfter!==n.bufferAfter&&this.updateBuffers(o)}this.forceRenderOverride=!0,this.virtualizer.instanceChanged(this,!0)}render({fileContainer:i,file:e,forceRender:t=!1,lineAnnotations:n,...r}){const s=!R(this.file,e);s&&(this.updateExternalFile(e,n),this.cachedHeaderHTML=void 0);const{pendingRenderFile:o,layoutFileChanged:a,renderedFileChanged:l,annotationsChanged:h}=this.pendingRender!=null&&this.pendingRender.latestFile===(this.getLatestFile(e)??e)?{pendingRenderFile:this.pendingRender.file,layoutFileChanged:!1,renderedFileChanged:!1,annotationsChanged:this.syncLineAnnotations(n)}:this.updatePendingRender(e,n),{forceRenderOverride:c,isSetup:u}=this;if(this.forceRenderOverride=void 0,a&&this.resetLayoutCache(),i=this.getOrCreateFileContainerNode(i),u)this.top??=this.getVirtualizedTop(),this.layoutDirty&&this.isSimpleMode()&&(this.getSimpleVirtualizer()?.markDOMDirty(),this.computeApproximateSize(!1,o));else{this.computeApproximateSize(!1,o);const p=this.getSimpleVirtualizer();if(this.top??=this.getVirtualizedTop(),this.isAdvancedMode())this.isVisible=!0;else{if(p==null)throw new Error("VirtualizedFile.render: simple virtualizer is not available");p.connect(i,this),this.isVisible=p.isInstanceVisible(this.top??0,this.height)}this.isSetup=!0}if(!this.isVisible&&this.isSimpleMode()&&(!s||!u))return this.renderPlaceholder(this.height);const d=this.virtualizer.getWindowSpecs(),f=this.top??0,m=this.computeRenderRangeFromWindow(o,f,d);return super.render({file:e,fileContainer:i,renderRange:m,lineAnnotations:n,forceRender:(c??t)||h||l||s,...r})}finalizeRender(){if(this.getRenderedFile()!==this.pendingRender?.file)throw new Error("VirtualizedFile.render: rendered a different file than its prepared layout");this.pendingRender=void 0,this.isSimpleMode()&&this.getSimpleVirtualizer()?.requestHeightReconcile(this)}updatePendingRender(i,e){const t=this.getLatestFile(i)??i,n=this.getRenderedFile(),r=this.pendingRender?.file??n,s=this.fileRenderer.getFileForNextRender(t);return this.pendingRender={latestFile:t,file:s},{pendingRenderFile:s,annotationsChanged:this.syncLineAnnotations(e),layoutFileChanged:!R(r,s),renderedFileChanged:!R(n,s)}}syncVirtualizedTop(){this.top=this.getVirtualizedTop()}shouldDisableVirtualizationBuffers(){return this.isAdvancedMode()||super.shouldDisableVirtualizationBuffers()}shouldGuardRebuildScroll(){return!1}isSimpleMode(){return this.virtualizer.type==="simple"}isAdvancedMode(){return this.virtualizer.type==="advanced"}addLayoutCheckpoint(i,e){i%Vt===0&&this.cache.checkpoints.push({lineIndex:i,top:e})}getLayoutCheckpointBeforeLineIndex(i){if(i<=0||this.cache.checkpoints.length===0)return;let e=0,t=this.cache.checkpoints.length-1,n;for(;e<=t;){const r=e+t>>1,s=this.cache.checkpoints[r];if(s==null)throw new Error("VirtualizedFile: invalid checkpoint index");s.lineIndex<=i?(n=s,e=r+1):t=r-1}return n}getLayoutCheckpointBeforeTop(i,e){let t=0,n=this.cache.checkpoints.length-1,r=-1;for(;t<=n;){const s=t+n>>1,o=this.cache.checkpoints[s];if(o==null)throw new Error("VirtualizedFile: invalid checkpoint index");o.top<=i?(r=s,t=s+1):n=s-1}if(e==null)return r>=0?this.cache.checkpoints[r]:void 0;for(let s=r;s>=0;s--){const o=this.cache.checkpoints[s];if(o==null)throw new Error("VirtualizedFile: invalid checkpoint index");if(o.lineIndex%e===0)return o}}getVirtualizedTop(){return this.virtualizer.type==="advanced"?this.virtualizer.getLocalTopForInstance(this):this.fileContainer!=null?this.virtualizer.getOffsetInScrollContainer(this.fileContainer):0}getSimpleVirtualizer(){return this.virtualizer.type==="simple"?this.virtualizer:void 0}getAdvancedVirtualizer(){return this.virtualizer.type==="advanced"?this.virtualizer:void 0}isResizeDebuggingEnabled(){return this.getSimpleVirtualizer()?.config.resizeDebugging??!1}computeRenderRangeFromWindow(i,e,{top:t,bottom:n}){const{disableFileHeader:r=!1}=this.options,{hunkLineCount:s,lineHeight:o}=this.metrics,a=this.fileRenderer.getLineCount(i),l=this.height,h=j(this.metrics,r),c=a>0?Re(this.metrics):0,{fileAnnotationHeight:u}=this.cache,d=h+u,f=Math.max(0,l-h-u-c),m=St(this.getLatestAnnotations()),p=e+h,S=u>0&&m&&p<n&&p+u>t;if(e<t-l||e>n)return{startingLine:0,totalLines:0,bufferBefore:0,bufferAfter:l-h-c};if(a<=s)return{startingLine:0,totalLines:s,bufferBefore:0,bufferAfter:0};const H=Math.ceil(Math.max(n-t,0)/o),A=Math.ceil(H/s)*s+s,g=A/s,y=(t+n)/2;if(this.hasUniformLineHeights()){const O=e+d,U=O+f;if(!S&&!(O<n&&U>t))return{startingLine:0,totalLines:0,bufferBefore:0,bufferAfter:l-h-c};const D=Math.floor(S&&y<e+d?0:(y-(e+d))/o),M=Math.floor(D/s)-Math.floor(g/2),ze=Math.ceil(a/s),_=Math.max(0,Math.min(M,ze))*s,oe=M<0?A+M*s:A,Ne=_===0?0:u+_*o,Oe=Math.min(oe,a-_);return{startingLine:_,totalLines:oe,bufferBefore:Ne,bufferAfter:Math.max(0,(a-_-Oe)*o)}}const P=g,E=[],L=this.getLayoutCheckpointBeforeTop(Math.max(0,t-e-A*o*2),s);let T=e+(L?.top??d),k=L?.lineIndex??0,z,C,w;const Q=L?.lineIndex??0;for(let O=Q;O<a;O++){const U=k%s===0,D=Math.floor(k/s);if(U&&(E[D]=T-(e+d),w!=null)){if(w<=0)break;w--}const M=this.getLineHeight(O,!1);T>t-M&&T<n&&(z??=D),T+M>y&&(C??=D),w==null&&T>=n&&U&&(w=P),k++,T+=M}if(z==null)if(S)z=0,C=0;else return{startingLine:0,totalLines:0,bufferBefore:0,bufferAfter:l-h-c};C??=z;const N=Math.round(C-g/2),Z=Math.max(0,Math.ceil(a/s)-g),ee=Math.max(0,Math.min(N,Z)),ne=ee*s,se=N<0?A+N*s:A,Me=E[ee]??0,Fe=ne===0?0:u+Me,re=ee+se/s,ke=re<E.length?f-E[re]:f-(T-e-d);return{startingLine:ne,totalLines:se,bufferBefore:Fe,bufferAfter:Math.max(0,ke)}}};function Bt(i){let e;for(const t of i.children)t instanceof HTMLElement&&t.dataset.lineAnnotation===Ct&&(e=Math.max(e??0,t.getBoundingClientRect().height));return e}function Ut({file:i,renderCustomHeader:e,renderHeaderPrefix:t,renderHeaderFilenameSuffix:n,renderHeaderMetadata:r,renderAnnotation:s,lineAnnotations:o,renderGutterUtility:a,getHoveredLine:l,getAnnotationSlotName:h=F}){const c=e?.(i),u=t?.(i),d=n?.(i),f=r?.(i);return v.jsxs(v.Fragment,{children:[c!=null?v.jsx("div",{slot:Te,children:c}):v.jsxs(v.Fragment,{children:[u!=null&&v.jsx("div",{slot:"header-prefix",children:u}),d!=null&&v.jsx("div",{slot:"header-filename-suffix",children:d}),f!=null&&v.jsx("div",{slot:"header-metadata",children:f})]}),s!=null&&o?.map((m,p)=>v.jsx("div",{slot:h(m),children:s(m)},p)),a!=null&&v.jsx("div",{slot:"gutter-utility-slot",style:vt,children:a(l)})]})}const Wt=typeof window>"u"?x.useEffect:x.useLayoutEffect;function Gt({file:i,options:e,editorOptions:t,editStateKey:n,lineAnnotations:r,selectedLines:s,prerenderedHTML:o,metrics:a,hasGutterRenderUtility:l,hasCustomHeader:h,disableWorkerPool:c,edit:u,onEditChange:d,onEditComplete:f}){const m=Rt(),p=s!==void 0,S=x.useContext(yt),H=Lt(),A=W(C=>d?.(C)),g=d!=null?A:void 0,y=x.useRef(null),P=W(C=>{const w=f?.(C)??"reject";return w==="accept"&&(y.current={file:{installed:C.file,stale:C.originalFile},annotations:{installed:C.lineAnnotations,stale:C.originalLineAnnotations}}),w}),E=f!=null?P:void 0,L=x.useRef(null),T=x.useRef(null),k=W(()=>{if(H==null)throw new Error("File: EditContext is not attached");return H("file",t??{},n)}),z=W(C=>{if(C!=null){if(L.current!=null)throw new Error("File: An instance should not already exist when a node is created");m!=null?L.current=new _t(te({controlledSelection:p,hasCustomHeader:h,hasGutterRenderUtility:l,onEditChange:g,onEditComplete:E,options:e}),m,a,c?void 0:S,!0):L.current=new xe(te({controlledSelection:p,hasCustomHeader:h,hasGutterRenderUtility:l,onEditChange:g,onEditComplete:E,options:e}),c?void 0:S,!0),u&&T.current==null&&(T.current=Le(L.current,k)),L.current.hydrate({file:i,fileContainer:C,lineAnnotations:r,prerenderedHTML:o})}else{if(L.current==null)throw new Error("File: A File instance should exist when unmounting");L.current.cleanUp(),L.current=null,T.current=null}});return Wt(()=>{const{current:C}=L;if(C==null)return;const w=te({controlledSelection:p,hasCustomHeader:h,hasGutterRenderUtility:l,onEditChange:g,onEditComplete:E,options:e}),Q=w!==void 0&&!He(C.options,w);if(C.setOptions(w),!u&&T.current!=null){const{current:Z}=T;T.current=null,Z()}const N=jt(i,r,y);C.render({file:N.file,lineAnnotations:N.lineAnnotations,forceRender:Q}),s!==void 0&&C.setSelectedLines(s),u&&T.current==null&&(T.current=Le(C,k))}),{ref:z,getHoveredLine:x.useCallback(()=>L.current?.getHoveredLine(),[]),getAnnotationSlotName:x.useCallback(C=>L.current?.getAnnotationSlotName(C)??F(C),[])}}function jt(i,e,t){const{current:n}=t;if(n==null)return{file:i,lineAnnotations:e};const{file:r,annotations:s}=n;let o=i;r!=null&&(R(i,r.stale)?o=r.installed:n.file=null);let a=e;return s!=null&&(e===s.stale?a=s.installed:n.annotations=null),n.file==null&&n.annotations==null&&(t.current=null),{file:o,lineAnnotations:a}}function te({options:i,controlledSelection:e,hasCustomHeader:t,hasGutterRenderUtility:n,onEditChange:r,onEditComplete:s}){return e||n||t||r!=null||s!=null?{...i,controlledSelection:e,renderCustomHeader:t?ge:i?.renderCustomHeader,renderGutterUtility:n?ge:i?.renderGutterUtility,onEditChange:r,onEditComplete:s}:i}function Le(i,e){const t=e();try{return t.edit(i)}catch(n){throw t.cleanUp(),n}}function ti({file:i,lineAnnotations:e,selectedLines:t,options:n,editorOptions:r,editStateKey:s,metrics:o,className:a,style:l,renderAnnotation:h,renderCustomHeader:c,renderHeaderPrefix:u,renderHeaderFilenameSuffix:d,renderHeaderMetadata:f,prerenderedHTML:m,renderGutterUtility:p,disableWorkerPool:S=!1,edit:H=!1,onEditChange:A,onEditComplete:g}){const{ref:y,getHoveredLine:P,getAnnotationSlotName:E}=Gt({file:i,options:n,editorOptions:r,editStateKey:s,metrics:o,lineAnnotations:e,selectedLines:t,prerenderedHTML:m,hasGutterRenderUtility:p!=null,hasCustomHeader:c!=null,disableWorkerPool:S,edit:H,onEditChange:A,onEditComplete:g}),L=Ut({file:i,renderAnnotation:h,renderCustomHeader:c,renderHeaderPrefix:u,renderHeaderFilenameSuffix:d,renderHeaderMetadata:f,renderGutterUtility:p,lineAnnotations:e,getHoveredLine:P,getAnnotationSlotName:E});return v.jsx(Be,{ref:y,className:a,style:l,children:Tt(L,m)})}const ii=I.memo(function({jsonString:e,className:t,maxHeight:n="100%",initiallyExpandedDepth:r=2}){const{t:s}=Ue(),o=I.useRef(null),[a,l]=I.useState(null),h=I.useMemo(()=>{try{const d=e.trim();if(!d)return l(s("jsonTreeView.error.emptyJson")),null;const f=JSON.parse(d);return l(null),f}catch(d){return l(d instanceof Error?d.message:s("jsonTreeView.error.invalidJson")),null}},[e,s]),c=I.useCallback(()=>{o.current?.expandAll()},[]),u=I.useCallback(()=>{o.current?.collapseAll()},[]);return a?v.jsx("div",{className:t,children:v.jsxs("div",{className:"oc-surface-code rounded-md border border-[var(--interactive-border)] bg-[var(--syntax-background)] p-4",children:[v.jsx("div",{className:"mb-1 font-medium text-foreground",children:s("jsonTreeView.error.invalidJsonTitle")}),v.jsx("div",{className:"font-mono text-xs text-muted-foreground",children:a})]})}):h===null?null:v.jsxs("div",{className:t,children:[v.jsxs("div",{className:"flex items-center gap-1 border-b border-[var(--interactive-border)] px-2 py-1",children:[v.jsxs(le,{variant:"ghost",size:"xs",onClick:c,className:"gap-1 text-xs text-muted-foreground",children:[v.jsx(he,{name:"arrow-down-s",className:"h-3 w-3"}),s("jsonTreeView.actions.expandAll")]}),v.jsxs(le,{variant:"ghost",size:"xs",onClick:u,className:"gap-1 text-xs text-muted-foreground",children:[v.jsx(he,{name:"arrow-up-s",className:"h-3 w-3"}),s("jsonTreeView.actions.collapseAll")]})]}),v.jsx("div",{className:"oc-surface-code bg-[var(--syntax-background)] py-1",style:{maxHeight:n,overflow:"auto"},children:v.jsx(We,{ref:o,data:h,maxHeight:n,initiallyExpandedDepth:r})})]})});export{ti as F,ii as J,_t as V};
1
+ import{j2 as B,lN as ae,lO as Ie,lx as Te,ly as Ve,lz as Pe,lA as De,lP as _e,lF as Be,f as Ue,B as le,I as he,mf as We}from"./useAppFontEffects-DGlvOqP_.js";import{g as F,b as Ge,f as Ae,i as je,s as we,k as Ke,d as de,l as $e,j as qe,e as Je,h as Ye,m as Xe,R as Qe,I as Ze,n as ce,r as et,t as ue,w as tt,q as it,v as nt,x as st,z as rt,A as ot,B as fe,C as at,K as lt,D as ht,E as dt,G as ct,F as ut,y as pe,S as ft,H as pt,J as gt,L as mt,a as He,M as St,N as Ct}from"./parseDiffFromFile-BUgn-T9p.js";import{a as R,G as vt,u as Rt,W as yt,b as Lt,c as W,n as ge,t as Tt}from"./Virtualizer-CGNyscoc.js";import{j as v,r as b,R as I}from"./vendor-react-BUCujlKS.js";import{u as G,w as ie,i as Y,e as me,a as Ee,x as Se,z as At,k as Ce,d as xe,y as ve,b as wt,C as Ht,A as j,B as Re}from"./computeVirtualFileMetrics-C2WM6JC2.js";import{a as x,i as X,l as K,h as Et,r as xt}from"./isFilePlainText-_ZS5UYRj.js";import{t as V}from"./vendor-hast-util-to-html-BKBhbTDb.js";import"./index-DxNa7xYB.js";function $(i,e){return e.cacheKey==null?i.file===e&&i.sourceContents===e.contents:i.cacheKey===e.cacheKey}let bt=-1;var Mt=class{options;annotationSlotName;onRenderUpdate;workerManager;__id=`file-renderer:${++bt}`;highlighter;file;renderCache;pendingHighlightResult;computedLang="text";lineAnnotations={};lineCache;pendingStructuralRows;textDocumentCache=new WeakMap;editSessionActive=!1;get fileCache(){return this.renderCache?.file}constructor(i={theme:B},e=F,t,n){this.options=i,this.annotationSlotName=e,this.onRenderUpdate=t,this.workerManager=n,n?.isWorkingPool()!==!0&&(this.highlighter=G(i.theme??B)?ie():void 0)}setOptions(i){this.options=i}mergeOptions(i){this.options={...this.options,...i}}setLineAnnotations(i){this.lineAnnotations={};for(const e of i){const t=this.lineAnnotations[e.lineNumber]??[];this.lineAnnotations[e.lineNumber]=t,t.push(e)}}cleanUp(){this.endEditSession(),this.recycle(),this.workerManager=void 0,this.onRenderUpdate=void 0}beginEditSession(i,e){const{editSessionActive:t,renderCache:n}=this;if(this.editSessionActive=!0,t||(this.pendingHighlightResult=void 0),this.file=i,n==null||t&&n.file===i)return;if(t){this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap;return}const{options:r}=this.getRenderOptions(i),s=n.file===i,o=e!=null&&R(n.file,e),{result:a}=n;if(!n.highlighted||a==null||!x(n.options,r)||!s&&!o){this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap;return}if(s)return;this.renderCache={...n,file:i,result:{...a,code:[...a.code]}};const{lineCache:l}=this;l!=null&&e!=null&&$(l,e)?this.lineCache={cacheKey:void 0,file:i,sourceContents:i.contents,lines:l.lines}:this.lineCache=void 0}endEditSession(i){if(this.editSessionActive=!1,this.pendingHighlightResult=void 0,this.file==null){this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap;return}const{renderCache:e}=this;i==null||e==null||e.file===i||!R(e.file,i)||(e.file=i)}editorRenderReady(){return this.renderCache?.options.useTokenTransformer===!0&&this.renderCache.highlighted&&this.renderCache.result!=null}recycle(){this.editSessionActive?(this.renderCache!=null&&(this.renderCache.renderRange=void 0),this.pendingHighlightResult=void 0,this.pendingStructuralRows=void 0):(this.clearRenderCache(),this.lineCache=void 0,this.textDocumentCache=new WeakMap),this.highlighter=void 0,this.workerManager?.cleanUpTasks(this),this.file=void 0}clearRenderCache(){this.pendingStructuralRows=void 0,this.renderCache=void 0,this.pendingHighlightResult=void 0}hydrate(i){this.file=i;const{options:e}=this.getRenderOptions(i),t=q(this.getOrCreateLineCache(i).length,this.getTokenizeMaxLength());let n=this.workerManager?.getFileResultCache(i);n!=null&&!x(e,n.options)&&(n=void 0),this.renderCache??={file:i,hydrated:!0,options:e,highlighted:!t&&!X(i),result:t?void 0:n?.result,renderRange:void 0},!this.editSessionActive&&this.workerManager?.isWorkingPool()===!0?this.renderCache.result==null&&!t&&this.workerManager.highlightFileAST(this,i):this.highlighter==null&&(this.computedLang=i.lang??Y(i.name),this.initializeHighlighter())}getLocalHighlightTheme(){return this.workerManager?.getFileRenderOptions().theme??this.options.theme??B}getEffectiveCodeOptions(){const i=this.workerManager?.isWorkingPool()===!0?this.workerManager.getFileRenderOptions():void 0;return{theme:this.getLocalHighlightTheme(),tokenizeMaxLineLength:i?.tokenizeMaxLineLength??this.options.tokenizeMaxLineLength}}getRenderOptions(i){const e=(()=>{if(this.workerManager?.isWorkingPool()===!0){const r=this.workerManager.getFileRenderOptions();return this.editSessionActive&&r.useTokenTransformer!==!0?{...r,useTokenTransformer:!0}:r}const{tokenizeMaxLineLength:n=1e3}=this.options;return{theme:this.getLocalHighlightTheme(),useTokenTransformer:this.editSessionActive||this.options.useTokenTransformer===!0,tokenizeMaxLineLength:n}})(),{renderCache:t}=this;return t?.result==null?{options:e,forceHighlight:!0}:!R(i,t.file)||!x(e,t.options)?{options:e,forceHighlight:!0}:{options:e,forceHighlight:!1}}getFileForNextRender(i){const{options:e}=this.getRenderOptions(i);if(this.getReadyRenderResult(i,e)!=null)return i;const{renderCache:t}=this;if(t==null)return i;if(R(t.file,i))return t.file;const n=K(i.contents),r=i.contents.length===0||X(i)||q(n.length,this.getTokenizeMaxLength());return this.canRenderFile(i,e,r)?i:t.file}canRenderFile(i,e,t){const{renderCache:n}=this;return n==null||R(n.file,i)?!0:t?n.result==null&&n.hydrated!==!0||this.workerManager?.isWorkingPool()===!0||this.highlighter!=null&&G(e.theme):n.result==null&&n.hydrated!==!0?!0:!this.editSessionActive&&this.workerManager?.isWorkingPool()===!0?!n.highlighted:this.highlighter!=null&&G(e.theme)}getOrCreateLineCache(i){let{lineCache:e}=this;return(e==null||!$(e,i))&&(e={cacheKey:i.cacheKey,file:i,sourceContents:i.contents,lines:K(i.contents)}),this.lineCache=e,e.lines}getLineCount(i){const e=this.getOrCreateLineCache(i);return this.textDocumentCache.get(i)?.lineCount??e.length}updateRenderCache(i,e,t=!1){this.pendingStructuralRows=void 0;const{renderCache:n}=this;if(n==null)return;const{file:r,result:s}=n;if(s==null)return;const o=t?new Map:void 0;this.pendingStructuralRows=o;const a=this.lineCache!=null&&$(this.lineCache,r)?this.lineCache:void 0;for(const[l,h]of i){if(o==null&&a!=null&&l<a.lines.length){const u=h.map(d=>d[2]).join("");a.lines[l]=Ge(a.lines[l]??"",u)}const c={type:"element",tagName:"div",properties:{"data-line":l+1,"data-line-type":"context","data-line-index":l},children:h.map(([u,d,f])=>u===0&&d===""?f===""?{type:"element",tagName:"br",properties:{},children:[]}:{type:"text",value:f}:{type:"element",tagName:"span",properties:{"data-char":u,style:`color:${d};`},children:[{type:"text",value:f}]})};o!=null?o.set(l,c):s.code[l]=c}s.baseThemeType=e,n.isDirty=!0,o==null&&a!=null&&(r.contents=a.lines.join(""),a.sourceContents=r.contents)}applyDocumentChange(i){const{pendingStructuralRows:e,renderCache:t}=this;this.pendingStructuralRows=void 0;const n=this.file??t?.file;if(n==null)return;const r=t?.result,s=this.lineCache!=null&&$(this.lineCache,n)?this.lineCache.lines:K(n.contents),o=K(i.getText());if(r!=null&&s.length!==o.length){const l=Math.min(s.length,o.length);let h=0;for(;h<l&&s[h]===o[h];)h++;let c=0;for(;c<l-h&&s[s.length-1-c]===o[o.length-1-c];)c++;const u=r.code;r.code=new Array(o.length);for(let d=0;d<h;d++)r.code[d]=u[d];for(let d=0;d<c;d++)r.code[o.length-1-d]=u[s.length-1-d];if(e!==void 0)for(const[d,f]of e)d<o.length&&(r.code[d]=f);for(let d=h;d<o.length-c;d++)r.code[d]??={type:"element",tagName:"div",properties:{"data-line":d+1,"data-line-type":"context","data-line-index":d},children:[{type:"element",tagName:"span",properties:{"data-char":0},children:[{type:"text",value:i.getLineText(d)}]}]};for(let d=0;d<r.code.length;d++){const f=r.code[d];f?.type==="element"&&(f.properties["data-line"]=d+1,f.properties["data-line-index"]=d)}t!=null&&(t.isDirty=!0)}const a=i.getText();this.lineCache={cacheKey:n.cacheKey,file:n,sourceContents:a,lines:o},this.textDocumentCache.set(n,i),n.contents=a}renderFile(i=this.file,e=ae){if(this.file=i,i==null){this.pendingHighlightResult=void 0;return}let{options:t,forceHighlight:n}=this.getRenderOptions(i);const r=this.getReadyRenderResult(i,t);this.pendingHighlightResult=void 0,r!=null&&(this.renderCache={...r,file:i,renderRange:void 0},n=!1),this.renderCache??={file:i,highlighted:!1,options:t,result:void 0,renderRange:void 0};const s=this.getOrCreateLineCache(i),o=i.contents.length>0,a=!o||X(i)||q(s.length,this.getTokenizeMaxLength()),l=this.canRenderFile(i,t,a),h=!R(i,this.renderCache.file),c=!Ae(this.renderCache.renderRange,e);if(!this.editSessionActive&&this.workerManager?.isWorkingPool()===!0){const u=this.renderCache.result==null&&this.renderCache.highlighted&&!a&&!h&&je(e);l&&!u&&(a||this.renderCache.result==null||!this.renderCache.highlighted&&(h||c))&&(this.renderCache.file=i,this.renderCache.options=t,this.renderCache.highlighted=!1,(this.renderCache.result==null||h||c||n)&&(this.renderCache.result=this.workerManager.getPlainFileAST(i,e.startingLine,e.totalLines,s)),this.renderCache.renderRange=e),!a&&o&&(!this.renderCache.highlighted||n)&&this.workerManager.highlightFileAST(this,i)}else{this.computedLang=i.lang??Y(i.name),this.highlighter??=ie();const u=this.highlighter!=null&&G(t.theme),d=this.highlighter!=null&&me(this.computedLang),f=!a&&d;if(l&&this.highlighter!=null&&u&&(n||a||!this.renderCache.highlighted&&f||this.renderCache.result==null)){const{result:m,options:p}=this.renderFileWithHighlighter(i,this.highlighter,a||!d);this.renderCache={file:i,options:p,highlighted:f,result:m,renderRange:void 0}}(!u||!a&&!d)&&this.asyncHighlight(i).then(({result:m,options:p})=>{this.applyHighlightResult(i,m,p,!a)})}return this.renderCache.result!=null?this.processFileResult(this.renderCache.file,e,this.renderCache.result):void 0}async asyncRender(i,e=ae){this.file=i;const{result:t}=await this.asyncHighlight(i);return this.processFileResult(i,e,t)}async asyncHighlight(i){const e=q(this.getOrCreateLineCache(i).length,this.getTokenizeMaxLength());this.computedLang=e?"text":i.lang??Y(i.name);const t=this.highlighter!=null&&Et(Ee(this.getLocalHighlightTheme())),n=e||this.highlighter!=null&&me(this.computedLang);return(this.highlighter==null||!t||!n)&&(this.highlighter=await this.initializeHighlighter()),this.renderFileWithHighlighter(i,this.highlighter,e)}renderFileWithHighlighter(i,e,t=!1){const{options:n}=this.getRenderOptions(i);return{result:xt(i,e,n,{forcePlainText:t}),options:n}}processFileResult(i,e,{code:t,themeStyles:n,baseThemeType:r}){const s=this.getLineCount(i),{disableFileHeader:o=!1}=this.options,a=[],l=ve(),h=Math.min(e.startingLine+e.totalLines,s);let c=0;const u=we(e)?Ke(this.lineAnnotations):void 0;u!=null&&(l.children.push(Se("context","annotation",1)),a.push(de({hunkIndex:-1,lineIndex:-1,annotations:u.map(d=>this.annotationSlotName(d))})),c++);for(let d=e.startingLine;d<h;d++){const f=d+1,m=t[d];if(m==null){const S="FileRenderer.processFileResult: Line doesnt exist";throw console.error(S,{name:i.name,lineIndex:d,lineNumber:f}),new Error(S)}l.children.push(At("context",f,`${d}`)),a.push(m),c++;const p=this.lineAnnotations[f];p!=null&&(l.children.push(Se("context","annotation",1)),a.push(de({hunkIndex:0,lineIndex:f,annotations:p.map(S=>this.annotationSlotName(S))})),c++)}return l.properties.style=`grid-row: span ${c}`,{file:i,gutterAST:l.children??[],contentAST:a,preAST:this.createPreElement(s),headerAST:o?void 0:this.renderHeader(i),totalLines:s,rowCount:c,themeStyles:n,baseThemeType:r,bufferBefore:e.bufferBefore,bufferAfter:e.bufferAfter,css:""}}renderHeader(i){const{headerRenderMode:e="default",stickyHeader:t=!1}=this.options;return $e({fileOrDiff:i,mode:e,stickyHeader:t})}renderFullHTML(i){return V(this.renderFullAST(i))}renderFullAST(i,e=[]){return e.push(Ce({tagName:"code",children:this.renderCodeAST(i),properties:{"data-code":""}})),{...i.preAST,children:e}}renderCodeAST(i){const e=ve();return e.children=i.gutterAST,e.properties.style=`grid-row: span ${i.rowCount}`,[e,qe(i.contentAST,i.rowCount)]}renderPartialHTML(i,e=!1){return e?V(Ce({tagName:"code",children:i,properties:{"data-code":""}})):V(i)}async initializeHighlighter(){return this.highlighter=await xe(Je(this.computedLang,{theme:this.getLocalHighlightTheme(),preferredHighlighter:this.workerManager?.getPreferredHighlighter()??this.options.preferredHighlighter})),this.highlighter}onHighlightSuccess(i,e,t,n=!0){this.editSessionActive||this.applyHighlightResult(i,e,t,n)}applyHighlightResult(i,e,t,n=!0){const{file:r,renderCache:s}=this;r==null||s==null||!R(i,r)||!x(t,this.getRenderOptions(r).options)||(s.result==null||!s.highlighted||!x(s.options,t)||!R(s.file,r))&&(this.pendingHighlightResult={file:r,options:t,highlighted:n,result:e},this.onRenderUpdate?.())}getMatchingWorkerResultCache(i,e){if(this.editSessionActive)return;const t=this.workerManager?.getFileResultCache(i);if(!(t==null||!x(e,t.options)))return t}getReadyRenderResult(i,e){const{pendingHighlightResult:t}=this;if(t!=null&&R(t.file,i)&&x(t.options,e))return t;const n=this.getMatchingWorkerResultCache(i,e);if(!(n==null||this.hasHighlightedRenderCache(i,e)))return{file:i,highlighted:!0,...n}}hasHighlightedRenderCache(i,e){const{renderCache:t}=this;return t?.result!=null&&t.highlighted&&R(i,t.file)&&x(e,t.options)}onHighlightError(i){console.error(i)}getTokenizeMaxLength(){return this.options.tokenizeMaxLength??1e5}createPreElement(i){const{disableLineNumbers:e=!1,overflow:t="scroll"}=this.options;return Ye({type:"file",diffIndicators:"none",disableBackground:!0,disableLineNumbers:e,overflow:t,split:!1,totalLines:i})}};function q(i,e){return i>e}function Ft(i,e){return i.lineNumber===e.lineNumber&&i.metadata===e.metadata}function ye(i){return{theme:i?.theme,disableLineNumbers:i?.disableLineNumbers,overflow:i?.overflow,themeType:i?.themeType,collapsed:i?.collapsed,disableFileHeader:i?.disableFileHeader,disableVirtualizationBuffers:i?.disableVirtualizationBuffers,stickyHeader:i?.stickyHeader,preferredHighlighter:i?.preferredHighlighter,useCSSClasses:i?.useCSSClasses,useTokenTransformer:Xe(i),tokenizeMaxLineLength:i?.tokenizeMaxLineLength,tokenizeMaxLength:i?.tokenizeMaxLength,unsafeCSS:i?.unsafeCSS,headerRenderMode:i?.renderCustomHeader!=null?"custom":"default"}}const kt=[""];function zt(i){const e={...i};return delete e.cacheKey,e}let Nt=-1;var be=class{options;workerManager;isContainerManaged;static LoadedCustomComponent=!0;__id=`file:${++Nt}`;type="file";fileContainer;spriteSVG;pre;code;bufferBefore;bufferAfter;themeCSSStyle;appliedThemeCSS;hasAdoptedThemeCSS=!1;unsafeCSSStyle;appliedUnsafeCSS;gutterUtilityContent;errorWrapper;placeHolder;lastRenderedHeaderHTML;cachedHeaderHTML;appliedPreAttributes;lastRowCount;mounted=!1;headerElement;headerCustom;headerPrefix;headerFilenameSuffix;headerMetadata;fileRenderer;resizeManager;interactionManager;annotationCache=new Map;lineAnnotations=[];managersDirty=!1;file;editSession;renderedFile;renderRange;enabled=!0;editor;constructor(e={theme:B},t,n=!1){this.options=e,this.workerManager=t,this.isContainerManaged=n,this.fileRenderer=new Mt(e,this.getAnnotationSlotName,this.handleHighlightRender,this.workerManager),this.resizeManager=new Qe,this.interactionManager=new Ze("file",ce(e)),this.workerManager?.subscribeToThemeChanges(this)}getAnnotationSlotName=e=>et(this.editSession?.annotations,e,F);handleHighlightRender=()=>{this.rerender()};rerender(){!this.enabled||this.file==null||this.render({file:this.file,forceRender:!0,renderRange:this.renderRange})}getTheme(){return this.workerManager?.getFileRenderOptions().theme??this.options.theme??B}getLatestFile(e=this.file){return this.editSession?.file??e}getRenderedFile(){return this.renderedFile}getLatestAnnotations(){return this.editSession?.annotations?.current??this.lineAnnotations}isNewAnnotations(e){const t=this.editSession?.annotations;return e===this.lineAnnotations?!1:t==null||e!==t.provided&&e!==t.current}updateExternalFile(e,t){if(R(this.file,e))return!1;const n=this.editSession!=null;return this.file=e,n||this.editor!=null?this.installEditSession(e,n?void 0:this.editor?.__getDocumentContents(e),!0):this.editSession=void 0,this.editSession?.annotations!=null&&t!=null&&(this.lineAnnotations=t,this.editSession.annotations=ue(t,F,this.editSession.annotations)),!0}installEditSession(e,t,n=!1){const r=t==null||t.name===e.name&&t.lang===e.lang&&t.contents===e.contents,s=zt(t??e);this.editSession={file:s,externalReplacement:n&&r,annotations:this.editSession?.annotations??ue(this.lineAnnotations,F)},this.fileRenderer.beginEditSession(s,r?e:void 0)}onThemeChange(){this.fileRenderer.clearRenderCache(),this.rerender()}setOptions(e){e!=null&&(this.options=e,this.cachedHeaderHTML=void 0,this.syncInteractionOptions())}syncInteractionOptions(){this.interactionManager.setOptions(ce(this.options))}mergeOptions(e){this.options={...this.options,...e}}setThemeType(e){(this.options.themeType??"system")!==e&&(this.mergeOptions({themeType:e}),this.applyCachedThemeState(e))}applyCachedThemeState(e){if(typeof this.options.theme=="string"||this.fileContainer==null||this.appliedThemeCSS==null)return!1;const t=this.appliedThemeCSS.baseThemeType??e;return this.appliedThemeCSS.themeType===t?!1:(this.applyThemeState(this.fileContainer,this.appliedThemeCSS.themeStyles,e,this.appliedThemeCSS.baseThemeType),!0)}hasThemeChanged(){return this.appliedThemeCSS!=null&&!wt(this.appliedThemeCSS.theme,this.getTheme())}getHoveredLine=()=>this.interactionManager.getHoveredLine();setLineAnnotations(e){const t=this.editSession?.annotations;if(t==null){this.lineAnnotations=e;return}this.isNewAnnotations(e)&&(this.lineAnnotations=e,tt(t,e,F))}syncEditSessionAnnotationsFromEditor(e){const t=this.editSession?.annotations;return t==null||e===t.current?!1:(t.current=e,this.fileRenderer.setLineAnnotations(e),this.renderAnnotations(),!0)}setSelectedLines(e,t){this.interactionManager.setSelection(e,t)}setEditorActiveLine(e,t){this.interactionManager.setEditorActiveLine(e,{lineNumberOnly:t?.lineNumberOnly,side:t?.side??"additions"})}getCodeScrollLeft(){return this.code?.scrollLeft??0}setCodeScrollLeft(e){this.code!=null&&(this.code.scrollLeft=e)}__getEffectiveCodeOptions(){return{...this.options,...this.fileRenderer.getEffectiveCodeOptions()}}flushManagers(){if(!this.managersDirty||this.pre==null){this.managersDirty=!1;return}const{overflow:e="scroll"}=this.options;this.interactionManager.setup(this.pre),this.resizeManager.setup(this.pre,{disableAnnotations:e==="wrap",columnVariables:this.shouldApplyColumnVariables(e)?"apply":"measure"}),this.managersDirty=!1}shouldApplyColumnVariables(e){return e==="scroll"&&this.getLatestAnnotations().length>0}cleanUp(e=!1){const t=this.editor;this.emitPostRender(!0),t?.cleanUp(e?"recycle":"discard"),e||(this.editor=void 0),this.resizeManager.cleanUp(),this.interactionManager.cleanUp(),this.managersDirty=!1,this.workerManager?.unsubscribeToThemeChanges(this),this.renderRange=void 0,this.isContainerManaged||this.fileContainer?.remove(),this.fileContainer=void 0,this.mounted=!1,e||(this.lineAnnotations=[]),this.clearAuxiliaryNodes(),this.pre=void 0,this.code=void 0,this.bufferBefore?.remove(),this.bufferBefore=void 0,this.bufferAfter?.remove(),this.bufferAfter=void 0,this.appliedPreAttributes=void 0,this.lastRowCount=void 0,this.headerElement=void 0,this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0,this.headerCustom=void 0,this.lastRenderedHeaderHTML=void 0,e||(this.cachedHeaderHTML=void 0),this.errorWrapper?.remove(),this.errorWrapper=void 0,this.spriteSVG=void 0,this.themeCSSStyle=void 0,this.appliedThemeCSS=void 0,this.hasAdoptedThemeCSS=!1,this.unsafeCSSStyle=void 0,this.appliedUnsafeCSS=void 0,this.placeHolder?.remove(),this.placeHolder=void 0,e?this.fileRenderer.recycle():(this.fileRenderer.cleanUp(),this.workerManager=void 0,this.file=void 0,this.editSession=void 0,this.renderedFile=void 0),this.enabled=!1}virtualizedSetup(){this.enabled=!0,this.workerManager?.subscribeToThemeChanges(this)}hydrate(e){const{fileContainer:t,prerenderedHTML:n,preventEmit:r=!1,file:s,lineAnnotations:o}=e;if(!this.enabled)throw new Error("File.hydrate: attempting to call hydrate after cleaned up");if(this.fileContainer!=null)throw new Error("File.hydrate: hydrate can only be called before the instance has rendered or hydrated");this.hydrateElements(t,n);const a=this.editor!=null;a||Ot(this.pre,s,this.options.collapsed)||It(this.headerElement,s,this.options.disableFileHeader)?this.render({...e,forceRender:a||e.forceRender,preventEmit:!0}):this.hydrationSetup({file:s,lineAnnotations:o}),r||this.emitPostRender()}hydrateElements(e,t){this.fileContainer!==e&&this.emitPostRender(!0),it(e,t);for(const n of Array.from(e.shadowRoot?.children??[])){if(n instanceof SVGElement){this.spriteSVG=n;continue}if(n instanceof HTMLElement){if(n instanceof HTMLPreElement){this.pre=n,this.appliedPreAttributes=void 0;continue}if(n instanceof HTMLStyleElement&&n.hasAttribute("data-theme-css")){this.themeCSSStyle=n;continue}if(n instanceof HTMLStyleElement&&n.hasAttribute("data-unsafe-css")){this.unsafeCSSStyle=n,this.appliedUnsafeCSS=n.textContent;continue}if("diffsHeader"in n.dataset){this.headerElement=n,this.lastRenderedHeaderHTML=void 0;continue}}}this.pre!=null&&(this.syncCodeNodeFromPre(this.pre),this.pre.removeAttribute("data-dehydrated")),this.fileContainer=e,this.hydrateMeasuredScrollbar()}hydrationSetup({file:e,lineAnnotations:t}){this.lineAnnotations=t??this.lineAnnotations,this.file=e,this.fileRenderer.setOptions(ye(this.options)),this.syncInteractionOptions(),this.pre!=null&&(this.fileRenderer.hydrate(e),this.renderedFile=e,this.renderAnnotations(),this.renderGutterUtility(),this.injectUnsafeCSS(),this.managersDirty=!0,this.flushManagers())}getOrCreateLineCache(e=this.getLatestFile()){return e!=null?this.fileRenderer.getOrCreateLineCache(e):kt}updateBuffers(e){this.pre!=null&&this.applyBuffers(this.pre,e)}syncRenderViewToEditor(){const{editor:e,fileContainer:t,renderRange:n}=this,r=this.getLatestAnnotations(),s=this.getLatestFile();if(e==null||t==null||s==null)return;const o=c=>{!this.enabled||this.editor!==e||this.fileContainer!==t||this.getLatestFile()!==s||e.__syncRenderView({highlighter:c,fileContainer:t,file:s,lineAnnotations:r,renderRange:n,externalDocument:this.editSession?.externalReplacement===!0})},a=this.getTheme(),l=s.lang??Y(s.name),h=ie({theme:a,lang:l});h!=null?o(h):xe({themes:Ee(a),langs:Array.from(new Set(["text",l])),preferredHighlighter:this.workerManager?.getPreferredHighlighter()??this.options.preferredHighlighter}).then(o)}__acknowledgeDocumentUpdate(){this.editSession!=null&&(this.editSession.externalReplacement=!1)}__acceptEditorChange(e){const{lineAnnotations:t}=e;t!=null&&this.syncEditSessionAnnotationsFromEditor(t)}emitEditChange(e){const{onEditChange:t}=this.options;t?.(e)}__captureDocumentSessionState(){}__attachEditor(e){if(this.editor!=null)throw new Error("File.__attachEditor: an editor is already attached");this.editor=e;const t=()=>{this.editor=void 0,this.fileRenderer.endEditSession()};try{return this.resumeEditorRendering(e),t}catch(n){throw t(),n}}__resumeEditor(e){if(this.editor!==e)throw new Error("File.__resumeEditor: editor association changed");this.resumeEditorRendering(e)}resumeEditorRendering(e){this.editSession!=null?this.fileRenderer.beginEditSession(this.editSession.file):this.file!=null&&this.installEditSession(this.file,e.__getDocumentContents(this.file));const t=this.editSession?.file;this.fileRenderer.editorRenderReady()?(this.fileRenderer.fileCache===t&&(this.renderedFile=t),this.syncRenderViewToEditor()):this.rerender()}__completeEditSession(e,t){this.settleEditSession(t==="install",e)}settleEditSession(e,t){const{editSession:n,file:r,lineAnnotations:s}=this;if(n==null||r==null)return;const{file:o,annotations:a}=n;if(this.editor!=null)throw new Error("File.__completeEditSession: detach the editor before completing the session");const l=a?.current;let h,c=!1,u;if(t==null)throw new Error("File.__completeEditSession: editor is required for completion");const d={...o},f={file:d,editor:t,originalFile:r,lineAnnotations:l,originalLineAnnotations:s};Object.freeze(f);try{if(t.__emitEditComplete(f),this.options.onEditComplete?.(f)==="accept"){if(d.cacheKey!=null&&d.cacheKey===r.cacheKey)throw new Error("File.__completeEditSession: an accepted file must not reuse the replaced file cacheKey");h=d}}catch(S){c=!0,u=S}e&&h!=null&&(this.file=h,l!=null&&(this.lineAnnotations=l)),this.editSession=void 0;const{renderedFile:m,file:p}=this;if(this.fileRenderer.endEditSession(p),m!=null&&p!=null&&m!==p&&R(m,p)&&(this.renderedFile=p),e&&this.fileContainer!=null&&this.rerender(),c)throw u}applyDocumentChange(e,t){const n=this.editSession?.file;if(n==null)throw new Error("File.applyDocumentChange: requires an active edit session");this.fileRenderer.beginEditSession(n),this.fileRenderer.applyDocumentChange(e),t!=null&&this.syncEditSessionAnnotationsFromEditor(t)}applySuspendedDocumentChange(e,t){this.editSession!=null&&(this.applyDocumentChange(e,t),this.fileRenderer.clearRenderCache())}updateRenderCache(e,t,n){const r=this.editSession?.file;if(r==null)throw new Error("File.updateRenderCache: requires an active edit session");this.fileRenderer.beginEditSession(r),this.fileRenderer.updateRenderCache(e,t,n?.lineCountChangeInFlight)}render({file:e,fileContainer:t,forceRender:n=!1,preventEmit:r=!1,containerWrapper:s,deferManagers:o=!1,lineAnnotations:a,renderRange:l}){if(!this.enabled)throw new Error("File.render: attempting to call render after cleaned up");this.editor?.__postponeBgTokenizeToNextFrame();const{collapsed:h=!1,themeType:c="system"}=this.options,u=h?void 0:l,d=this.renderRange,f=this.hasThemeChanged(),m=a!=null&&(a.length>0||this.getLatestAnnotations().length>0)?this.isNewAnnotations(a):!1,p=!R(this.file,e);p&&this.updateExternalFile(e,a);const S=this.getLatestFile(e)??e;if(!h&&!n&&Ae(u,this.renderRange)&&!p&&!m&&!f){const g=this.applyCachedThemeState(c);return g&&this.finalizeRender(),g}this.renderRange=u,p&&(this.cachedHeaderHTML=void 0),this.fileRenderer.setOptions(ye(this.options)),this.syncInteractionOptions(),a!=null&&this.setLineAnnotations(a),this.fileRenderer.setLineAnnotations(this.getLatestAnnotations());const{disableErrorHandling:H=!1,disableFileHeader:A=!1}=this.options;if(A&&(this.headerElement!=null&&(this.headerElement.remove(),this.headerElement=void 0,this.lastRenderedHeaderHTML=void 0),this.clearHeaderSlots()),t=this.getOrCreateFileContainerNode(t,s),this.applyCachedThemeState(c),h){this.removeRenderedCode(),this.clearAuxiliaryNodes();try{const g=this.fileRenderer.renderFile(S,Ie);g!=null&&this.applyThemeState(t,g.themeStyles,c,g.baseThemeType),g?.headerAST!=null&&this.applyHeaderToDOM(g.headerAST,t,g.file),this.renderedFile=g?.file??S,this.injectUnsafeCSS()}catch(g){if(H)throw g;console.error(g),g instanceof Error&&this.applyErrorToDOM(g,t)}return this.finalizeRender(),r||this.emitPostRender(),!0}try{const g=this.getOrCreatePreNode(t);if(!this.canPartiallyRender(n,m,p||f||!R(this.renderedFile,S))||!this.applyPartialRender(S,d,u)){const y=this.fileRenderer.renderFile(S,u);if(y==null)return this.workerManager?.isInitialized()===!1&&this.workerManager.isWorkingPool()&&this.workerManager.initialize().catch(()=>{}).then(()=>this.rerender()),!1;this.applyThemeState(t,y.themeStyles,c,y.baseThemeType),y.headerAST!=null&&this.applyHeaderToDOM(y.headerAST,t,y.file),this.applyFullRender(y,g),this.renderedFile=y.file}this.applyBuffers(g,u),this.injectUnsafeCSS(),this.renderAnnotations(),this.renderGutterUtility(),this.managersDirty=!0,o||this.flushManagers(),this.finalizeRender(),this.editor!=null&&this.syncRenderViewToEditor()}catch(g){if(H)throw g;console.error(g),g instanceof Error&&this.applyErrorToDOM(g,t)}return r||this.emitPostRender(),!0}finalizeRender(){}emitPostRender(e=!1){const{fileContainer:t,options:{onPostRender:n}}=this;if(e){if(!this.mounted||(this.mounted=!1,t==null))return;n?.(t,this,"unmount");return}if(t==null)return;const r=this.mounted?"update":"mount";this.mounted=!0,n?.(t,this,r)}removeRenderedCode(){this.resizeManager.cleanUp(),this.interactionManager.cleanUp(),this.bufferBefore?.remove(),this.bufferBefore=void 0,this.bufferAfter?.remove(),this.bufferAfter=void 0,this.code?.remove(),this.code=void 0,this.pre?.remove(),this.pre=void 0,this.appliedPreAttributes=void 0,this.lastRowCount=void 0}clearAuxiliaryNodes(){for(const{element:e}of this.annotationCache.values())e.remove();this.annotationCache.clear(),this.gutterUtilityContent?.remove(),this.gutterUtilityContent=void 0}canPartiallyRender(e,t,n){return!(e||t||n)}renderPlaceholder(e){if(this.fileContainer==null)return!1;if(this.emitPostRender(!0),this.cleanChildNodes(),this.placeHolder==null){const t=this.fileContainer.shadowRoot??this.fileContainer.attachShadow({mode:"open"});this.placeHolder=document.createElement("div"),this.placeHolder.dataset.placeholder="",t.appendChild(this.placeHolder)}return this.setPlaceholderHeight(e)}setPlaceholderHeight(e){return this.placeHolder==null?!1:(this.placeHolder.style.setProperty("height",`${e}px`),!0)}async primeHighlightCache(e=this.file){const{workerManager:t}=this;if(e==null||t==null||!t.isWorkingPool()||e.cacheKey==null||X(e))return;const n=this.options.tokenizeMaxLength??1e5;this.fileRenderer.getOrCreateLineCache(e).length>n||await t.primeFileHighlightCache(e).catch(r=>{console.error(r)})}cleanChildNodes(){this.resizeManager.cleanUp(),this.interactionManager.cleanUp(),this.clearAuxiliaryNodes(),this.bufferAfter?.remove(),this.bufferBefore?.remove(),this.code?.remove(),this.errorWrapper?.remove(),this.headerElement?.remove(),this.headerPrefix?.remove(),this.headerFilenameSuffix?.remove(),this.headerMetadata?.remove(),this.headerCustom?.remove(),this.pre?.remove(),this.spriteSVG?.remove(),this.themeCSSStyle?.remove(),this.unsafeCSSStyle?.remove(),this.bufferAfter=void 0,this.bufferBefore=void 0,this.code=void 0,this.errorWrapper=void 0,this.headerElement=void 0,this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0,this.headerCustom=void 0,this.pre=void 0,this.spriteSVG=void 0,this.themeCSSStyle=void 0,this.appliedThemeCSS=void 0,this.hasAdoptedThemeCSS=!1,this.unsafeCSSStyle=void 0,this.appliedUnsafeCSS=void 0,this.lastRenderedHeaderHTML=void 0,this.lastRowCount=void 0,this.mounted=!1}renderAnnotations(){if(this.isContainerManaged||this.fileContainer==null){for(const{element:r}of this.annotationCache.values())r.remove();this.annotationCache.clear();return}const e=new Map(this.annotationCache),{renderAnnotation:t}=this.options,n=this.getLatestAnnotations();if(t!=null&&n.length>0)for(const[r,s]of n.entries()){const o=this.getAnnotationSlotName(s),a=`${r}-${o}`;let l=this.annotationCache.get(a);if(l==null||!Ft(s,l.annotation)){l?.element.remove();const h=t(s);if(h==null)continue;l={element:nt(o),annotation:s},l.element.appendChild(h),this.fileContainer.appendChild(l.element),this.annotationCache.set(a,l)}e.delete(a)}for(const[r,{element:s}]of e.entries())this.annotationCache.delete(r),s.remove()}renderGutterUtility(){const{renderGutterUtility:e}=this.options;if(this.fileContainer==null||e==null){this.gutterUtilityContent?.remove(),this.gutterUtilityContent=void 0;return}const t=e(this.interactionManager.getHoveredLine);if(t!=null&&this.gutterUtilityContent!=null)return;if(t==null){this.gutterUtilityContent?.remove(),this.gutterUtilityContent=void 0;return}const n=st();n.appendChild(t),this.fileContainer.appendChild(n),this.gutterUtilityContent=n}injectUnsafeCSS(){const{unsafeCSS:e}=this.options,t=this.fileContainer?.shadowRoot;if(t!=null){if(e==null||e===""){this.unsafeCSSStyle!=null&&(this.unsafeCSSStyle.remove(),this.unsafeCSSStyle=void 0),this.appliedUnsafeCSS=void 0;return}this.unsafeCSSStyle?.parentNode===t&&this.appliedUnsafeCSS===e||(this.unsafeCSSStyle??=rt(),this.unsafeCSSStyle.parentNode!==t&&t.appendChild(this.unsafeCSSStyle),this.unsafeCSSStyle.textContent=ot(e),this.appliedUnsafeCSS=e)}}applyThemeState(e,t,n,r){const s=e.shadowRoot??e.attachShadow({mode:"open"}),o=r??n,a=this.getTheme(),l=typeof a=="string"?a:{...a},h=fe(s);if(this.themeCSSStyle?.parentNode===s&&this.appliedThemeCSS?.themeStyles===t&&this.appliedThemeCSS.themeType===o&&this.appliedThemeCSS.scrollbarGutter===h){this.appliedThemeCSS.theme=l;return}if(this.hasAdoptedThemeCSS&&this.themeCSSStyle?.parentNode===s){this.hasAdoptedThemeCSS=!1,this.appliedThemeCSS={theme:l,themeStyles:t,themeType:o,baseThemeType:r,scrollbarGutter:h};return}this.themeCSSStyle=at({shadowRoot:s,currentNode:this.themeCSSStyle,themeCSS:lt(t,o,h)}),this.appliedThemeCSS=this.themeCSSStyle!=null?{theme:l,themeStyles:t,themeType:o,baseThemeType:r,scrollbarGutter:h}:void 0}hydrateMeasuredScrollbar(){const e=this.fileContainer?.shadowRoot;e==null||this.themeCSSStyle==null||(this.themeCSSStyle.textContent=ht(this.themeCSSStyle.textContent??"",fe(e)))}shouldGuardRebuildScroll(){return this.editor!=null&&dt()}applyFullRender(e,t){this.cleanupErrorWrapper(),this.applyPreNodeAttributes(t,e);const n=this.code=ct({code:this.code}),r=this.fileRenderer.renderCodeAST(e);this.editor?.__captureFocusForDOMReplacement();const s=()=>{if(n.childElementCount>=2)for(let o=0;o<2;o++){const a=n.children[o],l=r[o];a.innerHTML=V(l.children),a.style.cssText=l.properties.style}else n.innerHTML=V(r);t.contains(n)||t.replaceChildren(n)};this.shouldGuardRebuildScroll()?ut(t,s):s(),this.lastRowCount=e.rowCount}applyPartialRender(e,t,n){if(t==null||n==null)return!1;const{code:r}=this,s=r!=null?this.getColumns(r):void 0;if(r==null||s==null)return!1;const o=t.startingLine,a=n.startingLine,l=t.totalLines===1/0?Number.POSITIVE_INFINITY:o+t.totalLines,h=n.totalLines===1/0?Number.POSITIVE_INFINITY:a+n.totalLines,c=Math.max(o,a),u=Math.min(l,h);if(u<=c)return!1;if(!this.trimDOMToOverlap(s.gutter,c,u)||!this.trimDOMToOverlap(s.content,c,u))throw new Error("File.applyPartialRender: failed to trim to overlap");let{length:d}=s.content.children;const f=(H,A)=>{if(!(A<=0))return this.fileRenderer.renderFile(e,{startingLine:H,totalLines:A,bufferBefore:0,bufferAfter:0})},m=a<c?f(a,c-a):void 0;if(m===void 0&&a<c)return!1;const p=h===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:Math.max(0,h-u),S=h>u?f(u,p):void 0;return S===void 0&&h>u?!1:(this.cleanupErrorWrapper(),m!=null&&(s.gutter.insertAdjacentHTML("afterbegin",this.fileRenderer.renderPartialHTML(m.gutterAST)),s.content.insertAdjacentHTML("afterbegin",this.fileRenderer.renderPartialHTML(m.contentAST)),d+=m.rowCount),S!=null&&(s.gutter.insertAdjacentHTML("beforeend",this.fileRenderer.renderPartialHTML(S.gutterAST)),s.content.insertAdjacentHTML("beforeend",this.fileRenderer.renderPartialHTML(S.contentAST)),d+=S.rowCount),this.lastRowCount!==d&&(s.gutter.style.setProperty("grid-row",`span ${d}`),s.content.style.setProperty("grid-row",`span ${d}`),this.lastRowCount=d),!0)}getColumns(e){const t=e.children[0],n=e.children[1];if(!(!(t instanceof HTMLElement)||!(n instanceof HTMLElement)||t.dataset.gutter==null||n.dataset.content==null))return{gutter:t,content:n}}trimDOMToOverlap(e,t,n){const r=this.getDOMBoundaryIndices(e,[t,n]),s=r.get(t)??e.children.length,o=r.get(n)??e.children.length;if(s>o)return!1;for(let a=e.children.length-1;a>=o;a-=1)e.children[a]?.remove();for(let a=s-1;a>=0;a-=1)e.children[a]?.remove();return!0}getDOMBoundaryIndices(e,t){const n=[...new Set(t)].sort((l,h)=>l-h),r=new Map;if(n.length===0)return r;let s=0,o=n[s];const{children:a}=e;o===0&&(r.set(0,0),s+=1,o=n[s]);for(let l=0;l<a.length;l+=1){const h=a[l];if(!(h instanceof HTMLElement))continue;const c=this.getLineIndexFromDOMNode(h);if(c!=null){for(;o!=null&&c>=o;)r.set(o,l),s+=1,o=n[s];if(s>=n.length)break}}for(const l of n)r.has(l)||r.set(l,a.length);return r}getLineIndexFromDOMNode(e){const t=e.dataset.lineIndex;if(t==null)return;const n=Number(t);return Number.isNaN(n)?void 0:n}applyBuffers(e,t){if(t==null||this.shouldDisableVirtualizationBuffers()){this.bufferBefore!=null&&(this.bufferBefore.remove(),this.bufferBefore=void 0),this.bufferAfter!=null&&(this.bufferAfter.remove(),this.bufferAfter=void 0);return}t.bufferBefore>0?(this.bufferBefore==null&&(this.bufferBefore=document.createElement("div"),this.bufferBefore.dataset.virtualizerBuffer="before",e.before(this.bufferBefore)),this.bufferBefore.style.setProperty("height",`${t.bufferBefore}px`),this.bufferBefore.style.setProperty("contain","strict")):this.bufferBefore!=null&&(this.bufferBefore.remove(),this.bufferBefore=void 0),t.bufferAfter>0?(this.bufferAfter==null&&(this.bufferAfter=document.createElement("div"),this.bufferAfter.dataset.virtualizerBuffer="after",e.after(this.bufferAfter)),this.bufferAfter.style.setProperty("height",`${t.bufferAfter}px`),this.bufferAfter.style.setProperty("contain","strict")):this.bufferAfter!=null&&(this.bufferAfter.remove(),this.bufferAfter=void 0)}shouldDisableVirtualizationBuffers(){return this.options.disableVirtualizationBuffers??!1}applyHeaderToDOM(e,t,n){this.cleanupErrorWrapper(),this.placeHolder?.remove(),this.placeHolder=void 0;const r=this.cachedHeaderHTML??V(e);if(this.cachedHeaderHTML=r,r!==this.lastRenderedHeaderHTML){const h=document.createElement("div");h.innerHTML=r;const c=h.firstElementChild;if(!(c instanceof HTMLElement))return;this.headerElement!=null?t.shadowRoot?.replaceChild(c,this.headerElement):t.shadowRoot?.prepend(c),this.headerElement=c,this.lastRenderedHeaderHTML=r}if(this.isContainerManaged)return;const{renderHeaderPrefix:s,renderHeaderFilenameSuffix:o,renderCustomHeader:a,renderHeaderMetadata:l}=this.options;if(a!=null){const h=a(n)??void 0;this.headerCustom=this.upsertHeaderSlotElement(t,this.headerCustom,Te,h),this.headerPrefix?.remove(),this.headerFilenameSuffix?.remove(),this.headerMetadata?.remove(),this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0}else{const h=s?.(n)??void 0,c=o?.(n)??void 0,u=l?.(n)??void 0;this.headerPrefix=this.upsertHeaderSlotElement(t,this.headerPrefix,Ve,h),this.headerFilenameSuffix=this.upsertHeaderSlotElement(t,this.headerFilenameSuffix,Pe,c),this.headerMetadata=this.upsertHeaderSlotElement(t,this.headerMetadata,De,u),this.headerCustom?.remove(),this.headerCustom=void 0}}clearHeaderSlots(){this.headerPrefix?.remove(),this.headerFilenameSuffix?.remove(),this.headerMetadata?.remove(),this.headerCustom?.remove(),this.headerPrefix=void 0,this.headerFilenameSuffix=void 0,this.headerMetadata=void 0,this.headerCustom=void 0}upsertHeaderSlotElement(e,t,n,r){if(r==null){t?.remove();return}const s=t??this.createHeaderSlotElement(n);return t==null&&e.appendChild(s),this.replaceHeaderSlotContent(s,r),s}replaceHeaderSlotContent(e,t){e.replaceChildren(),t instanceof Element?e.appendChild(t):e.innerText=`${t}`}createHeaderSlotElement(e){const t=document.createElement("div");return t.slot=e,t}getOrCreateFileContainerNode(e,t){const{fileContainer:n}=this,r=e??n??document.createElement("diffs-container"),s=n!==r;return n!=null&&s&&this.editor?.__captureFocusForDOMReplacement(),s&&this.emitPostRender(!0),this.fileContainer=r,n!=null&&s&&(this.lastRenderedHeaderHTML=void 0,this.headerElement=void 0),t!=null&&this.fileContainer.parentNode!==t&&t.appendChild(this.fileContainer),s&&this.adoptReusableShellElements(this.fileContainer),this.ensureSpriteSVG(this.fileContainer),this.fileContainer}adoptReusableShellElements(e){const{shadowRoot:t}=e;if(t!=null)for(const n of t.children)n instanceof SVGElement?this.spriteSVG??=n:pe(n)&&n.hasAttribute("data-theme-css")?(this.themeCSSStyle??=n,this.hasAdoptedThemeCSS=!0):pe(n)&&n.hasAttribute("data-unsafe-css")&&(this.unsafeCSSStyle??=n,this.appliedUnsafeCSS??=this.options.unsafeCSS??void 0)}ensureSpriteSVG(e){const t=e.shadowRoot??e.attachShadow({mode:"open"});if(this.spriteSVG==null){const n=document.createElement("div");n.innerHTML=ft;const r=n.firstChild;r instanceof SVGElement&&(this.spriteSVG=r)}this.spriteSVG!=null&&this.spriteSVG.parentNode!==t&&t.appendChild(this.spriteSVG)}getOrCreatePreNode(e){const t=e.shadowRoot??e.attachShadow({mode:"open"});return this.pre==null?(this.pre=document.createElement("pre"),this.appliedPreAttributes=void 0,this.code=void 0,t.appendChild(this.pre)):this.pre.parentNode!==t&&(this.editor?.__captureFocusForDOMReplacement(),e.shadowRoot?.appendChild(this.pre),this.appliedPreAttributes=void 0),this.placeHolder?.remove(),this.placeHolder=void 0,this.pre}syncCodeNodeFromPre(e){this.code=void 0;for(const t of Array.from(e.children))if(t instanceof HTMLElement&&t.hasAttribute("data-code")){this.code=t;return}}applyPreNodeAttributes(e,{totalLines:t}){const{overflow:n="scroll",disableLineNumbers:r=!1}=this.options,s={type:"file",split:!1,overflow:n,disableLineNumbers:r,diffIndicators:"none",disableBackground:!0,totalLines:t};pt(s,this.appliedPreAttributes)||(gt(e,s),this.appliedPreAttributes=s)}applyErrorToDOM(e,t){this.cleanupErrorWrapper(),this.pre?.remove(),this.pre=void 0,this.appliedPreAttributes=void 0;const n=t.shadowRoot??t.attachShadow({mode:"open"});this.errorWrapper??=document.createElement("div"),this.errorWrapper.dataset.errorWrapper="",this.errorWrapper.textContent="",n.appendChild(this.errorWrapper);const r=document.createElement("div");r.dataset.errorMessage="",r.innerText=e.message,this.errorWrapper.appendChild(r);const s=document.createElement("pre");s.dataset.errorStack="",s.innerText=e.stack??"No Error Stack",this.errorWrapper.appendChild(s)}cleanupErrorWrapper(){this.errorWrapper?.remove(),this.errorWrapper=void 0}};function Ot(i,e,t=!1){return!t&&i==null&&e!=null}function It(i,e,t=!1){return i==null&&e!=null&&!t}const Vt=5e3,J=new Map;let Pt=-1;function Dt(i,e){return(i.overflow??"scroll")!==(e.overflow??"scroll")||(i.collapsed??!1)!==(e.collapsed??!1)||(i.disableLineNumbers??!1)!==(e.disableLineNumbers??!1)||(i.disableFileHeader??!1)!==(e.disableFileHeader??!1)||i.unsafeCSS!==e.unsafeCSS}var _t=class extends be{virtualizer;metrics;__id=`virtualized-file:${++Pt}`;renderType="virtualized";top;height=0;cache={heights:new Map,checkpoints:[],fileAnnotationHeight:0,ghostTextRows:J};pendingRender;isVisible=!1;isSetup=!1;layoutDirty=!0;forceRenderOverride;currentCollapsed;constructor(i,e,t=_e,n,r=!1){super(i,n,r),this.virtualizer=e,this.metrics=t}setMetrics(i,e=!1){const t=Ht(i);!e&&mt(this.metrics,t)||(this.metrics=t,this.resetLayoutCache())}setLineAnnotations(i){this.syncLineAnnotations(i)&&(this.forceRenderOverride=!0)}syncLineAnnotations(i){return i==null||!this.isNewAnnotations(i)||i.length===0&&this.getLatestAnnotations().length===0?!1:(super.setLineAnnotations(i),!0)}syncEditSessionAnnotationsFromEditor(i){return super.syncEditSessionAnnotationsFromEditor(i)?(this.forceRenderOverride=!0,!0):!1}hasLineAnnotations(){return this.getLatestAnnotations().some(i=>i.lineNumber>0)}hasUniformLineHeights(){const{overflow:i="scroll"}=this.options;return i==="scroll"&&!this.hasLineAnnotations()&&this.cache.heights.size===0}getLineHeight(i,e=!1){const t=this.cache.heights.get(i);if(t!=null)return t;const n=e?2:1;return this.metrics.lineHeight*n}setOptions(i){if(this.isAdvancedMode())throw new Error("VirtualizedFile.setOptions cannot be used inside CodeView. Update CodeView options instead.");if(i==null)return;const{options:e}=this,t=!He(e,i),n=Dt(e,i);super.setOptions(i),n&&this.resetLayoutCache(!0),t&&(this.forceRenderOverride=!0),t&&this.virtualizer.instanceChanged(this,n)}setThemeType(i){if(this.isAdvancedMode())throw new Error("VirtualizedFile.setThemeType cannot be used inside CodeView. Update CodeView options instead.");super.setThemeType(i)}resetLayoutCache(i=!1,e=!0){this.layoutDirty=!0,this.cache.fileAnnotationHeight=0,this.cache.heights.size>0&&this.cache.heights.clear(),this.cache.checkpoints.length>0&&(this.cache.checkpoints.length=0),this.cache.ghostTextRows=J,this.renderRange!=null&&e&&(this.renderRange=void 0),i&&this.isSimpleMode()&&this.computeApproximateSize()}applyGhostTextRows(i){const{heights:e,ghostTextRows:t}=this.cache;if(t===i)return!1;const{lineHeight:n}=this.metrics;let r=!1;for(const s of new Set([...t.keys(),...i.keys()])){const o=t.get(s)??0,a=i.get(s)??0;if(a===o)continue;const l=(e.get(s)??n)-o*n+a*n;l===n?e.delete(s):e.set(s,l),r=!0}return this.cache.ghostTextRows=i,r}reconcileHeights(){let i=!1;if(this.fileContainer==null||this.getLayoutFile()==null)return this.height!==0&&(i=!0),this.height=0,i;const{overflow:e="scroll"}=this.options;this.top=this.getVirtualizedTop();const t=this.editor?.__getGhostTextRows()??J;i=this.applyGhostTextRows(t);const n=e!=="scroll"||this.getLatestAnnotations().length>0||this.isResizeDebuggingEnabled();if(this.placeHolder!=null||!n&&this.cache.heights.size===0&&this.cache.fileAnnotationHeight===0)return i&&(this.computeApproximateSize(!0),this.setPlaceholderHeight(this.height)),i;const{lineHeight:r}=this.metrics;if(this.code==null)return i;const s=this.code.children[1];if(!(s instanceof HTMLElement))return i;if(this.renderRange!=null&&we(this.renderRange)){const o=Bt(s)??0;o!==this.cache.fileAnnotationHeight&&(this.cache.fileAnnotationHeight=o,i=!0)}for(const o of s.children){if(!(o instanceof HTMLElement))continue;const a=o.dataset.lineIndex;if(a==null)continue;const l=Number(a),h=(t.get(l)??0)*r,c=this.cache.heights.get(l);if(!n&&(c==null||c===r+h))continue;let u=o.getBoundingClientRect().height+h,d=!1;o.nextElementSibling instanceof HTMLElement&&("lineAnnotation"in o.nextElementSibling.dataset||"noNewline"in o.nextElementSibling.dataset)&&("noNewline"in o.nextElementSibling.dataset&&(d=!0),u+=o.nextElementSibling.getBoundingClientRect().height);const f=this.getLineHeight(l,d);u!==f&&(i=!0,u===this.metrics.lineHeight*(d?2:1)?this.cache.heights.delete(l):this.cache.heights.set(l,u))}return(i||this.isResizeDebuggingEnabled())&&this.computeApproximateSize(!0),i}onRender=i=>this.fileContainer==null||this.file==null?!1:(i&&(this.top=this.getVirtualizedTop()),this.render({file:this.file}));updateCodeViewLayout(i,e,t,n){const r=!R(this.file,i);r&&this.updateExternalFile(i,n);const{pendingRenderFile:s,layoutFileChanged:o,renderedFileChanged:a,annotationsChanged:l}=this.updatePendingRender(i,n);let h=t?.resetFileLayoutCache===!0||o;t?.metrics!=null&&(this.metrics=t.metrics,h=!0);const{collapsed:c=!1}=this.options;return this.currentCollapsed!==c&&(this.currentCollapsed=c,h=!0),h&&this.resetLayoutCache(),r&&(this.layoutDirty=!0),!this.forceRenderOverride&&(r||a||l)&&(this.forceRenderOverride=!0),this.top=e,this.computeApproximateSize(!1,s),this.height}getLayoutFile(){return this.pendingRender?.file??this.getRenderedFile()}getLinePosition(i){const e=this.getLayoutFile();if(e==null||i<1)return;const{disableFileHeader:t=!1,collapsed:n=!1}=this.options,r=this.fileRenderer.getLineCount(e)-1;let s=j(this.metrics,t);if(n||r<0)return{top:s,height:0};const o=Math.min(Math.max(i-1,0),r),{lineHeight:a}=this.metrics;if(s+=this.cache.fileAnnotationHeight,this.hasUniformLineHeights())return{top:s+o*a,height:a};const l=this.getLayoutCheckpointBeforeLineIndex(o);s=l?.top??s;for(let h=l?.lineIndex??0;h<o;h++)s+=this.getLineHeight(h,!1);return{top:s,height:this.getLineHeight(o,!1)}}getEditorViewport(){return this.virtualizer.type==="simple"?this.virtualizer.getRoot():this.virtualizer.getContainerElement()}getNumericScrollAnchor(i){const e=this.getLayoutFile();if(e==null||this.renderRange==null)return;const{disableFileHeader:t=!1,collapsed:n=!1}=this.options;if(n||this.renderRange.totalLines<=0)return;const r=this.fileRenderer.getLineCount(e)-1;if(r<0)return;const s=j(this.metrics,t),o=Math.min(this.renderRange.startingLine,r),a=Math.min(o+this.renderRange.totalLines-1,r);if(a<o)return;const{fileAnnotationHeight:l}=this.cache;if(this.hasUniformLineHeights()){const{lineHeight:c}=this.metrics,u=s+(o===0?l:this.renderRange.bufferBefore),d=o+Math.max(Math.ceil((i-u)/c),0);return d>a?void 0:{lineNumber:d+1,top:s+l+d*c}}let h=s+(o===0?l:this.renderRange.bufferBefore);for(let c=o;c<=a;c++){if(h>=i)return{lineNumber:c+1,top:h};h+=this.getLineHeight(c)}}getVirtualizedHeight(){return this.height}getAdvancedStickySpecs(i){const e=this.getLayoutFile();if(this.top==null||e==null)return;if(this.options.collapsed===!0)return{topOffset:this.top,height:this.height};const t=i!=null?this.computeRenderRangeFromWindow(e,this.top,i):this.renderRange;if(t==null)return;const{bufferBefore:n,bufferAfter:r,totalLines:s}=t;let o=0;if(s===0){const a=i??this.virtualizer.getWindowSpecs();this.top<a.top&&(o=r)}return{topOffset:this.top+n+o,height:this.height-(n+r)}}cleanUp(i=!1){const e=this.cache.ghostTextRows.size>0;e&&(this.layoutDirty=!0);const t=i&&this.isAdvancedMode()&&this.fileContainer!=null&&(e||!R(this.getRenderedFile(),this.getLatestFile()));this.fileContainer!=null&&this.isSimpleMode()&&this.getSimpleVirtualizer()?.disconnect(this.fileContainer),i||this.resetLayoutCache(),this.pendingRender=void 0,this.isSetup=!1,super.cleanUp(i),t&&this.virtualizer.instanceChanged(this,!0)}computeApproximateSize(i=!1,e=this.getLayoutFile()){const t=this.isResizeDebuggingEnabled();if(!i&&!this.layoutDirty&&!t)return;const n=this.height===0;if(this.height=0,this.cache.checkpoints=[],e==null){this.layoutDirty=!1;return}this.applyGhostTextRows(this.editor?.__getGhostTextRows()??J);const{disableFileHeader:r=!1,collapsed:s=!1}=this.options,{lineHeight:o}=this.metrics,a=this.fileRenderer.getLineCount(e),l=j(this.metrics,r),h=Re(this.metrics);if(this.height+=l,s){this.layoutDirty=!1;return}if(this.height+=this.cache.fileAnnotationHeight,this.hasUniformLineHeights())this.height+=a*o;else for(let c=0;c<a;c++)this.addLayoutCheckpoint(c,this.height),this.height+=this.getLineHeight(c,!1);if(a>0&&(this.height+=h),this.fileContainer!=null&&t&&!n){const c=this.fileContainer.getBoundingClientRect();c.height!==this.height?console.log("VirtualizedFile.computeApproximateSize: computed height doesnt match",{name:e.name,elementHeight:c.height,computedHeight:this.height}):console.log("VirtualizedFile.computeApproximateSize: computed height IS CORRECT")}this.layoutDirty=!1}setVisibility(i){this.isAdvancedMode()||this.fileContainer==null||(this.renderRange=void 0,i&&!this.isVisible?(this.top=this.getVirtualizedTop(),this.isVisible=!0):!i&&this.isVisible&&(this.isVisible=!1,this.rerender()))}rerender(){if(!this.enabled||this.file==null)return;const i=this.getLatestFile(),e=i==null?void 0:this.fileRenderer.getFileForNextRender(i);this.isSimpleMode()&&(this.pendingRender=void 0),this.forceRenderOverride=!0,this.virtualizer.instanceChanged(this,!R(this.getRenderedFile(),e))}syncGhostTextRows(){const i=this.getAdvancedVirtualizer();i!=null?(i.capturePendingLayoutAnchor(),this.layoutDirty=!0,i.instanceChanged(this,!0)):this.getSimpleVirtualizer()?.requestHeightReconcile(this)}applyDocumentChange(i,e,t=!1){const{renderRange:n}=this;this.getAdvancedVirtualizer()?.capturePendingLayoutAnchor(),super.applyDocumentChange(i,e),this.getSimpleVirtualizer()?.markDOMDirty(),this.resetLayoutCache(this.isSimpleMode(),!1);const r=this.getRenderedFile();if(!this.isSimpleMode())this.computeApproximateSize(!0);else if(t&&n!=null&&r!=null){const s=this.virtualizer.getWindowSpecs(),o=this.computeRenderRangeFromWindow(r,this.top??0,s);o.bufferAfter!==n.bufferAfter&&this.updateBuffers(o)}this.forceRenderOverride=!0,this.virtualizer.instanceChanged(this,!0)}render({fileContainer:i,file:e,forceRender:t=!1,lineAnnotations:n,...r}){const s=!R(this.file,e);s&&(this.updateExternalFile(e,n),this.cachedHeaderHTML=void 0);const{pendingRenderFile:o,layoutFileChanged:a,renderedFileChanged:l,annotationsChanged:h}=this.pendingRender!=null&&this.pendingRender.latestFile===(this.getLatestFile(e)??e)?{pendingRenderFile:this.pendingRender.file,layoutFileChanged:!1,renderedFileChanged:!1,annotationsChanged:this.syncLineAnnotations(n)}:this.updatePendingRender(e,n),{forceRenderOverride:c,isSetup:u}=this;if(this.forceRenderOverride=void 0,a&&this.resetLayoutCache(),i=this.getOrCreateFileContainerNode(i),u)this.top??=this.getVirtualizedTop(),this.layoutDirty&&this.isSimpleMode()&&(this.getSimpleVirtualizer()?.markDOMDirty(),this.computeApproximateSize(!1,o));else{this.computeApproximateSize(!1,o);const p=this.getSimpleVirtualizer();if(this.top??=this.getVirtualizedTop(),this.isAdvancedMode())this.isVisible=!0;else{if(p==null)throw new Error("VirtualizedFile.render: simple virtualizer is not available");p.connect(i,this),this.isVisible=p.isInstanceVisible(this.top??0,this.height)}this.isSetup=!0}if(!this.isVisible&&this.isSimpleMode()&&(!s||!u))return this.renderPlaceholder(this.height);const d=this.virtualizer.getWindowSpecs(),f=this.top??0,m=this.computeRenderRangeFromWindow(o,f,d);return super.render({file:e,fileContainer:i,renderRange:m,lineAnnotations:n,forceRender:(c??t)||h||l||s,...r})}finalizeRender(){if(this.getRenderedFile()!==this.pendingRender?.file)throw new Error("VirtualizedFile.render: rendered a different file than its prepared layout");this.pendingRender=void 0,this.isSimpleMode()&&this.getSimpleVirtualizer()?.requestHeightReconcile(this)}updatePendingRender(i,e){const t=this.getLatestFile(i)??i,n=this.getRenderedFile(),r=this.pendingRender?.file??n,s=this.fileRenderer.getFileForNextRender(t);return this.pendingRender={latestFile:t,file:s},{pendingRenderFile:s,annotationsChanged:this.syncLineAnnotations(e),layoutFileChanged:!R(r,s),renderedFileChanged:!R(n,s)}}syncVirtualizedTop(){this.top=this.getVirtualizedTop()}shouldDisableVirtualizationBuffers(){return this.isAdvancedMode()||super.shouldDisableVirtualizationBuffers()}shouldGuardRebuildScroll(){return!1}isSimpleMode(){return this.virtualizer.type==="simple"}isAdvancedMode(){return this.virtualizer.type==="advanced"}addLayoutCheckpoint(i,e){i%Vt===0&&this.cache.checkpoints.push({lineIndex:i,top:e})}getLayoutCheckpointBeforeLineIndex(i){if(i<=0||this.cache.checkpoints.length===0)return;let e=0,t=this.cache.checkpoints.length-1,n;for(;e<=t;){const r=e+t>>1,s=this.cache.checkpoints[r];if(s==null)throw new Error("VirtualizedFile: invalid checkpoint index");s.lineIndex<=i?(n=s,e=r+1):t=r-1}return n}getLayoutCheckpointBeforeTop(i,e){let t=0,n=this.cache.checkpoints.length-1,r=-1;for(;t<=n;){const s=t+n>>1,o=this.cache.checkpoints[s];if(o==null)throw new Error("VirtualizedFile: invalid checkpoint index");o.top<=i?(r=s,t=s+1):n=s-1}if(e==null)return r>=0?this.cache.checkpoints[r]:void 0;for(let s=r;s>=0;s--){const o=this.cache.checkpoints[s];if(o==null)throw new Error("VirtualizedFile: invalid checkpoint index");if(o.lineIndex%e===0)return o}}getVirtualizedTop(){return this.virtualizer.type==="advanced"?this.virtualizer.getLocalTopForInstance(this):this.fileContainer!=null?this.virtualizer.getOffsetInScrollContainer(this.fileContainer):0}getSimpleVirtualizer(){return this.virtualizer.type==="simple"?this.virtualizer:void 0}getAdvancedVirtualizer(){return this.virtualizer.type==="advanced"?this.virtualizer:void 0}isResizeDebuggingEnabled(){return this.getSimpleVirtualizer()?.config.resizeDebugging??!1}computeRenderRangeFromWindow(i,e,{top:t,bottom:n}){const{disableFileHeader:r=!1}=this.options,{hunkLineCount:s,lineHeight:o}=this.metrics,a=this.fileRenderer.getLineCount(i),l=this.height,h=j(this.metrics,r),c=a>0?Re(this.metrics):0,{fileAnnotationHeight:u}=this.cache,d=h+u,f=Math.max(0,l-h-u-c),m=St(this.getLatestAnnotations()),p=e+h,S=u>0&&m&&p<n&&p+u>t;if(e<t-l||e>n)return{startingLine:0,totalLines:0,bufferBefore:0,bufferAfter:l-h-c};if(a<=s)return{startingLine:0,totalLines:s,bufferBefore:0,bufferAfter:0};const H=Math.ceil(Math.max(n-t,0)/o),A=Math.ceil(H/s)*s+s,g=A/s,y=(t+n)/2;if(this.hasUniformLineHeights()){const O=e+d,U=O+f;if(!S&&!(O<n&&U>t))return{startingLine:0,totalLines:0,bufferBefore:0,bufferAfter:l-h-c};const D=Math.floor(S&&y<e+d?0:(y-(e+d))/o),M=Math.floor(D/s)-Math.floor(g/2),ze=Math.ceil(a/s),_=Math.max(0,Math.min(M,ze))*s,oe=M<0?A+M*s:A,Ne=_===0?0:u+_*o,Oe=Math.min(oe,a-_);return{startingLine:_,totalLines:oe,bufferBefore:Ne,bufferAfter:Math.max(0,(a-_-Oe)*o)}}const P=g,E=[],L=this.getLayoutCheckpointBeforeTop(Math.max(0,t-e-A*o*2),s);let T=e+(L?.top??d),k=L?.lineIndex??0,z,C,w;const Q=L?.lineIndex??0;for(let O=Q;O<a;O++){const U=k%s===0,D=Math.floor(k/s);if(U&&(E[D]=T-(e+d),w!=null)){if(w<=0)break;w--}const M=this.getLineHeight(O,!1);T>t-M&&T<n&&(z??=D),T+M>y&&(C??=D),w==null&&T>=n&&U&&(w=P),k++,T+=M}if(z==null)if(S)z=0,C=0;else return{startingLine:0,totalLines:0,bufferBefore:0,bufferAfter:l-h-c};C??=z;const N=Math.round(C-g/2),Z=Math.max(0,Math.ceil(a/s)-g),ee=Math.max(0,Math.min(N,Z)),ne=ee*s,se=N<0?A+N*s:A,Me=E[ee]??0,Fe=ne===0?0:u+Me,re=ee+se/s,ke=re<E.length?f-E[re]:f-(T-e-d);return{startingLine:ne,totalLines:se,bufferBefore:Fe,bufferAfter:Math.max(0,ke)}}};function Bt(i){let e;for(const t of i.children)t instanceof HTMLElement&&t.dataset.lineAnnotation===Ct&&(e=Math.max(e??0,t.getBoundingClientRect().height));return e}function Ut({file:i,renderCustomHeader:e,renderHeaderPrefix:t,renderHeaderFilenameSuffix:n,renderHeaderMetadata:r,renderAnnotation:s,lineAnnotations:o,renderGutterUtility:a,getHoveredLine:l,getAnnotationSlotName:h=F}){const c=e?.(i),u=t?.(i),d=n?.(i),f=r?.(i);return v.jsxs(v.Fragment,{children:[c!=null?v.jsx("div",{slot:Te,children:c}):v.jsxs(v.Fragment,{children:[u!=null&&v.jsx("div",{slot:"header-prefix",children:u}),d!=null&&v.jsx("div",{slot:"header-filename-suffix",children:d}),f!=null&&v.jsx("div",{slot:"header-metadata",children:f})]}),s!=null&&o?.map((m,p)=>v.jsx("div",{slot:h(m),children:s(m)},p)),a!=null&&v.jsx("div",{slot:"gutter-utility-slot",style:vt,children:a(l)})]})}const Wt=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Gt({file:i,options:e,editorOptions:t,editStateKey:n,lineAnnotations:r,selectedLines:s,prerenderedHTML:o,metrics:a,hasGutterRenderUtility:l,hasCustomHeader:h,disableWorkerPool:c,edit:u,onEditChange:d,onEditComplete:f}){const m=Rt(),p=s!==void 0,S=b.useContext(yt),H=Lt(),A=W(C=>d?.(C)),g=d!=null?A:void 0,y=b.useRef(null),P=W(C=>{const w=f?.(C)??"reject";return w==="accept"&&(y.current={file:{installed:C.file,stale:C.originalFile},annotations:{installed:C.lineAnnotations,stale:C.originalLineAnnotations}}),w}),E=f!=null?P:void 0,L=b.useRef(null),T=b.useRef(null),k=W(()=>{if(H==null)throw new Error("File: EditContext is not attached");return H("file",t??{},n)}),z=W(C=>{if(C!=null){if(L.current!=null)throw new Error("File: An instance should not already exist when a node is created");m!=null?L.current=new _t(te({controlledSelection:p,hasCustomHeader:h,hasGutterRenderUtility:l,onEditChange:g,onEditComplete:E,options:e}),m,a,c?void 0:S,!0):L.current=new be(te({controlledSelection:p,hasCustomHeader:h,hasGutterRenderUtility:l,onEditChange:g,onEditComplete:E,options:e}),c?void 0:S,!0),u&&T.current==null&&(T.current=Le(L.current,k)),L.current.hydrate({file:i,fileContainer:C,lineAnnotations:r,prerenderedHTML:o})}else{if(L.current==null)throw new Error("File: A File instance should exist when unmounting");L.current.cleanUp(),L.current=null,T.current=null}});return Wt(()=>{const{current:C}=L;if(C==null)return;const w=te({controlledSelection:p,hasCustomHeader:h,hasGutterRenderUtility:l,onEditChange:g,onEditComplete:E,options:e}),Q=w!==void 0&&!He(C.options,w);if(C.setOptions(w),!u&&T.current!=null){const{current:Z}=T;T.current=null,Z()}const N=jt(i,r,y);C.render({file:N.file,lineAnnotations:N.lineAnnotations,forceRender:Q}),s!==void 0&&C.setSelectedLines(s),u&&T.current==null&&(T.current=Le(C,k))}),{ref:z,getHoveredLine:b.useCallback(()=>L.current?.getHoveredLine(),[]),getAnnotationSlotName:b.useCallback(C=>L.current?.getAnnotationSlotName(C)??F(C),[])}}function jt(i,e,t){const{current:n}=t;if(n==null)return{file:i,lineAnnotations:e};const{file:r,annotations:s}=n;let o=i;r!=null&&(R(i,r.stale)?o=r.installed:n.file=null);let a=e;return s!=null&&(e===s.stale?a=s.installed:n.annotations=null),n.file==null&&n.annotations==null&&(t.current=null),{file:o,lineAnnotations:a}}function te({options:i,controlledSelection:e,hasCustomHeader:t,hasGutterRenderUtility:n,onEditChange:r,onEditComplete:s}){return e||n||t||r!=null||s!=null?{...i,controlledSelection:e,renderCustomHeader:t?ge:i?.renderCustomHeader,renderGutterUtility:n?ge:i?.renderGutterUtility,onEditChange:r,onEditComplete:s}:i}function Le(i,e){const t=e();try{return t.edit(i)}catch(n){throw t.cleanUp(),n}}function ti({file:i,lineAnnotations:e,selectedLines:t,options:n,editorOptions:r,editStateKey:s,metrics:o,className:a,style:l,renderAnnotation:h,renderCustomHeader:c,renderHeaderPrefix:u,renderHeaderFilenameSuffix:d,renderHeaderMetadata:f,prerenderedHTML:m,renderGutterUtility:p,disableWorkerPool:S=!1,edit:H=!1,onEditChange:A,onEditComplete:g}){const{ref:y,getHoveredLine:P,getAnnotationSlotName:E}=Gt({file:i,options:n,editorOptions:r,editStateKey:s,metrics:o,lineAnnotations:e,selectedLines:t,prerenderedHTML:m,hasGutterRenderUtility:p!=null,hasCustomHeader:c!=null,disableWorkerPool:S,edit:H,onEditChange:A,onEditComplete:g}),L=Ut({file:i,renderAnnotation:h,renderCustomHeader:c,renderHeaderPrefix:u,renderHeaderFilenameSuffix:d,renderHeaderMetadata:f,renderGutterUtility:p,lineAnnotations:e,getHoveredLine:P,getAnnotationSlotName:E});return v.jsx(Be,{ref:y,className:a,style:l,children:Tt(L,m)})}const ii=I.memo(function({jsonString:e,className:t,maxHeight:n="100%",initiallyExpandedDepth:r=2}){const{t:s}=Ue(),o=I.useRef(null),[a,l]=I.useState(null),h=I.useMemo(()=>{try{const d=e.trim();if(!d)return l(s("jsonTreeView.error.emptyJson")),null;const f=JSON.parse(d);return l(null),f}catch(d){return l(d instanceof Error?d.message:s("jsonTreeView.error.invalidJson")),null}},[e,s]),c=I.useCallback(()=>{o.current?.expandAll()},[]),u=I.useCallback(()=>{o.current?.collapseAll()},[]);return a?v.jsx("div",{className:t,children:v.jsxs("div",{className:"oc-surface-code rounded-md border border-[var(--interactive-border)] bg-[var(--syntax-background)] p-4",children:[v.jsx("div",{className:"mb-1 font-medium text-foreground",children:s("jsonTreeView.error.invalidJsonTitle")}),v.jsx("div",{className:"font-mono text-xs text-muted-foreground",children:a})]})}):h===null?null:v.jsxs("div",{className:t,children:[v.jsxs("div",{className:"flex items-center gap-1 border-b border-[var(--interactive-border)] px-2 py-1",children:[v.jsxs(le,{variant:"ghost",size:"xs",onClick:c,className:"gap-1 text-xs text-muted-foreground",children:[v.jsx(he,{name:"arrow-down-s",className:"h-3 w-3"}),s("jsonTreeView.actions.expandAll")]}),v.jsxs(le,{variant:"ghost",size:"xs",onClick:u,className:"gap-1 text-xs text-muted-foreground",children:[v.jsx(he,{name:"arrow-up-s",className:"h-3 w-3"}),s("jsonTreeView.actions.collapseAll")]})]}),v.jsx("div",{className:"oc-surface-code bg-[var(--syntax-background)] py-1",style:{maxHeight:n,overflow:"auto"},children:v.jsx(We,{ref:o,data:h,maxHeight:n,initiallyExpandedDepth:r})})]})});export{ti as F,ii as J,_t as V};
@@ -0,0 +1 @@
1
+ import{f as B,R as h,j as P}from"./vendor-react-BUCujlKS.js";import{toast as H}from"./vendor-sonner-DFyL3AvE.js";import{jg as K,da as J,ay as Z,f as Q,I as W}from"./useAppFontEffects-DGlvOqP_.js";import{h as G,au as V,g4 as ee,V as te,e as re,g5 as oe,g6 as ae,bs as se}from"./index-DxNa7xYB.js";import{extractMarkdownImageCandidates as ne,isRemoteMarkdownImageSource as ie,MAX_MARKDOWN_IMAGE_COUNT as le}from"./markdownCore-BmWwW1ll.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-CxRSdNoV.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-Det7U81h.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-tanstack-react-virtual-CvuLsk7D.js";import"./vendor-tanstack-virtual-core-DPaNcJcT.js";import"./vendor-framer-motion-DxDVhOLc.js";import"./vendor-motion-dom-HXPOMxb7.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-codemirror-commands-C4G_dPWe.js";import"./vendor-codemirror-state-Dek9sMtw.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-1e0FQ6Wn.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-language-DufXoQvE.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-DbpEcZM0.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-BSHQHbKu.js";import"./vendor-codemirror-lang-json-BzgckzmB.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-Cayfb29q.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-BQWerHsJ.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-D2TEBIvZ.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CtwSWKtX.js";import"./vendor-codemirror-lang-python-jAMtYiA9.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-capacitor-core-B4EWRrHz.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-BmFcUkbQ.js";import"./vendor-marked-CX41MkDF.js";import"./vendor-marked-linkify-it-CXI_LHIE.js";import"./vendor-linkify-it-DZCzzDkK.js";import"./vendor-uc.micro-BAd0H0z4.js";import"./vendor-remend-DcBOpbSu.js";import"./vendor-katex-CuQvj9-L.js";import"./vendor-dompurify-r8glNMJW.js";const L=10*1024*1024,ce=1024,me=3e4,ue=new Set(["image/png","image/jpeg","image/gif","image/webp"]),z=new WeakMap,$=r=>{if(r.aborted)throw new DOMException("Image load aborted","AbortError")},pe=r=>{let e=r;if(/^file:\/\//i.test(e))try{const o=new URL(e);if(o.protocol!=="file:")return"";e=o.host&&o.host!=="localhost"?`//${o.host}${o.pathname}`:o.pathname,/^\/[A-Za-z]:\//.test(e)&&(e=e.slice(1))}catch{return""}const t=e.split(/[?#]/,1)[0]??"";try{return decodeURIComponent(t)}catch{return t}},fe=r=>new Promise((e,t)=>{const o=new FileReader;o.onload=()=>{typeof o.result=="string"?e(o.result):t(new Error("Unable to encode image"))},o.onerror=()=>t(o.error??new Error("Unable to encode image")),o.readAsDataURL(r)}),de=async(r,e)=>{const t=new Uint8Array(await r.slice(0,12).arrayBuffer()),o=(n,u)=>String.fromCharCode(...t.slice(n,u));switch(e){case"image/png":return t[0]===137&&o(1,4)==="PNG"&&t[4]===13&&t[5]===10&&t[6]===26&&t[7]===10;case"image/jpeg":return t[0]===255&&t[1]===216&&t[2]===255;case"image/gif":{const n=o(0,6);return n==="GIF87a"||n==="GIF89a"}case"image/webp":return o(0,4)==="RIFF"&&o(8,12)==="WEBP";default:return!1}},Y=async(r,e)=>{if(!ue.has(e))throw new Error("Unsupported image type");if(r.size>L)throw new Error("Image is too large");if(!await de(r,e))throw new Error("Unsupported image data")},ge=async r=>{const e=/^data:(image\/(?:png|jpeg|gif|webp));base64,([\s\S]*)$/i.exec(r);if(!e?.[1]||e[2]===void 0)throw new Error("Invalid image data URL");if(e[2].length>Math.ceil(L*4/3)+4)throw new Error("Image is too large");let t;try{t=atob(e[2])}catch{throw new Error("Invalid image data URL")}const o=Uint8Array.from(t,n=>n.charCodeAt(0));await Y(new Blob([o]),e[1].toLowerCase())},q=r=>!/^(?:https?:)?\/\//i.test(r)&&!/^data:image\/(?:png|jpeg|gif|webp);base64,/i.test(r),he=async({sources:r,directory:e,sessionId:t,messageId:o,signal:n})=>{const u=V();let s=z.get(u);s||(s=new Map,z.set(u,s));const c=`${t}\0${o}\0${e}\0${r.join("\0")}`,i=s.get(c);if(i&&i.expiresAt>Date.now())return s.delete(c),s.set(c,i),i.result;i&&s.delete(c);const p=await G(`/api/openchamber/sessions/${encodeURIComponent(t)}/markdown-image-grants`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({directory:e,messageId:o,sources:r}),directory:e,signal:n});if(!p.ok)throw new Error(`Unable to prepare images (${p.status})`);const m=await p.json(),l=new Map;for(const a of m.results??[])a.source&&(a.status==="ready"&&a.path?l.set(a.source,{status:"ready",path:a.path,outsideFileGrant:a.outsideFileGrant,expiresAt:a.expiresAt}):a.status==="missing"?l.set(a.source,{status:"missing"}):l.set(a.source,{status:"error"}));for(const a of r)l.has(a)||l.set(a,{status:"error"});for(;s.size>=ce;)s.delete(s.keys().next().value);const w=[...l.values()].every(a=>a.status==="ready"),y=Math.min(...[...l.values()].filter(a=>a.status==="ready").map(a=>a.expiresAt??Number.POSITIVE_INFINITY));return s.set(c,{result:l,expiresAt:w?y:Date.now()+me}),l},we=async(r,e)=>{if($(e),/^(?:https?:)?\/\//i.test(r))return r;if(/^data:image\/(?:png|jpeg|gif|webp);base64,/i.test(r))return await ge(r),$(e),r;throw new Error("Local image has not been prepared")},be=async(r,e,t)=>{$(t);const o=pe(r),n=K(e,o);if(!e||!o||!J(n,e))throw new Error("Image path is outside the active workspace");const u=await G("/api/fs/stat",{query:{path:n,directory:e,optional:"true"},signal:t});if(!u.ok)throw new Error(`Unable to inspect image (${u.status})`);const s=await u.json();if(!s.isFile)throw new Error("Image path is not a file");if(typeof s.size=="number"&&s.size>L)throw new Error("Image is too large");const c=await G("/api/fs/raw",{query:{path:n,directory:e},signal:t});if(!c.ok)throw new Error(`Unable to load image (${c.status})`);const i=(c.headers.get("content-type")??"").split(";",1)[0]?.toLowerCase()??"",p=Number(c.headers.get("content-length"));if(Number.isFinite(p)&&p>L)throw new Error("Image is too large");const m=await c.blob();return await Y(m,i),$(t),fe(m)},ye=(r,e)=>V().authenticatedAsset(ee("/api/fs/raw",e),{path:r.path,directory:e,allowOutsideWorkspace:r.outsideFileGrant?"true":void 0,outsideFileGrant:r.outsideFileGrant}),Ie=r=>{const e=B.c(7),[t,o]=h.useState(!1),[n,u]=h.useState(0);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=re(),e[0]=s):s=e[0];const c=s;let i,p;e[1]!==r?(i=()=>{if(!r){o(!1);return}let w=!1,y;const a=oe(c),g=ae(()=>{w||u(Ae)}),I=()=>{se(c).then(()=>{w||o(!0)}).catch(()=>{w||(y=setTimeout(I,1e3))})};return I(),()=>{w=!0,y&&clearTimeout(y),a(),g()}},p=[c,r],e[1]=r,e[2]=i,e[3]=p):(i=e[2],p=e[3]),h.useEffect(i,p);const m=!r||t;let l;return e[4]!==n||e[5]!==m?(l={ready:m,nonce:n},e[4]=n,e[5]=m,e[6]=l):l=e[6],l},Ee=r=>{const e=B.c(46),{candidate:t,preparation:o,directory:n,assetAuthReady:u,assetAuthNonce:s,useWorkspaceFsBridge:c,onShowPopup:i}=r,{t:p}=Q(),m=h.useRef(null),[l,w]=h.useState(!1);let y;e[0]===Symbol.for("react.memo_cache_sentinel")?(y={url:"",status:"loading"},e[0]=y):y=e[0];const[a,g]=h.useState(y);let I;e[1]!==t.source?(I=q(t.source),e[1]=t.source,e[2]=I):I=e[2];const b=I;let x,f;e[3]!==l?(x=()=>{const N=m.current;if(!N||l)return;if(typeof IntersectionObserver>"u"){w(!0);return}const E=new IntersectionObserver(F=>{F.some(xe)&&(w(!0),E.disconnect())},{rootMargin:"200px"});return E.observe(N),()=>E.disconnect()},f=[l],e[3]=l,e[4]=x,e[5]=f):(x=e[4],f=e[5]),h.useEffect(x,f);let v;e[6]!==u||e[7]!==t.source||e[8]!==n||e[9]!==b||e[10]!==o||e[11]!==l||e[12]!==c?(v=()=>{if(!l||b&&!c&&!o)return;if(b&&c){const E=new AbortController;return g({url:"",status:"loading"}),be(t.source,n,E.signal).then(F=>{E.signal.aborted||g({url:F,status:"loading"})}).catch(()=>{E.signal.aborted||g({url:"",status:"error"})}),()=>E.abort()}if(b){if(o?.status!=="ready"){g({url:"",status:"error"});return}if(!u)return;g({url:ye(o,n),status:"loading"});return}const N=new AbortController;return g({url:"",status:"loading"}),we(t.source,N.signal).then(E=>{N.signal.aborted||g({url:E,status:"loading"})}).catch(()=>{N.signal.aborted||g({url:"",status:"error"})}),()=>N.abort()},e[6]=u,e[7]=t.source,e[8]=n,e[9]=b,e[10]=o,e[11]=l,e[12]=c,e[13]=v):v=e[13];let k;e[14]!==s||e[15]!==u||e[16]!==t.source||e[17]!==n||e[18]!==b||e[19]!==o||e[20]!==l||e[21]!==c?(k=[s,u,t.source,n,b,o,l,c],e[14]=s,e[15]=u,e[16]=t.source,e[17]=n,e[18]=b,e[19]=o,e[20]=l,e[21]=c,e[22]=k):k=e[22],h.useEffect(v,k);let R;e[23]!==t.filename||e[24]!==a.status||e[25]!==a.url||e[26]!==i||e[27]!==p?(R=()=>{if(a.status==="error"){H.error(p("filesView.error.previewUnavailable"));return}a.status!=="ready"||!i||i({open:!0,title:t.filename,content:"",metadata:{tool:"markdown-image-preview",filename:t.filename},image:{url:a.url,filename:t.filename}})},e[23]=t.filename,e[24]=a.status,e[25]=a.url,e[26]=i,e[27]=p,e[28]=R):R=e[28];const U=R,j=a.status==="loading";let A;e[29]!==t.filename||e[30]!==a.status||e[31]!==a.url?(A=P.jsx("span",{className:"flex h-[72px] w-[100px] items-center justify-center overflow-hidden rounded-lg border border-border/40 bg-muted/10",children:a.url&&a.status!=="error"?P.jsx("img",{src:a.url,alt:t.filename,className:"h-full w-full object-contain",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer",onLoad:()=>g(ve),onError:()=>g({url:"",status:"error"}),"data-openchamber-markdown-image":"true","data-openchamber-markdown-image-thumbnail":"true","data-openchamber-markdown-image-state":a.status}):P.jsx(W,{name:"file-image",className:"h-5 w-5 text-muted-foreground"})}),e[29]=t.filename,e[30]=a.status,e[31]=a.url,e[32]=A):A=e[32];let _;e[33]===Symbol.for("react.memo_cache_sentinel")?(_=P.jsx(W,{name:"file-image",className:"h-3 w-3 shrink-0"}),e[33]=_):_=e[33];let S;e[34]!==t.filename?(S=P.jsx("span",{className:"min-w-0 truncate typography-meta",children:t.filename}),e[34]=t.filename,e[35]=S):S=e[35];let C;e[36]!==t.filename||e[37]!==S?(C=P.jsxs("span",{className:"mt-1 flex w-[100px] items-center justify-center gap-1 text-muted-foreground",title:t.filename,"data-openchamber-markdown-image-caption":"true",children:[_,S]}),e[36]=t.filename,e[37]=S,e[38]=C):C=e[38];let M;return e[39]!==t.filename||e[40]!==t.source||e[41]!==U||e[42]!==C||e[43]!==j||e[44]!==A?(M=P.jsxs("button",{ref:m,type:"button",className:"w-[100px] shrink-0 text-left outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":t.filename,disabled:j,onClick:U,"data-openchamber-markdown-image-action":"true","data-openchamber-markdown-image-source":t.source,"data-openchamber-markdown-image-filename":t.filename,children:[A,C]}),e[39]=t.filename,e[40]=t.source,e[41]=U,e[42]=C,e[43]=j,e[44]=A,e[45]=M):M=e[45],M},gr=r=>{const e=B.c(34),{sessionId:t,messageId:o,contents:n,onShowPopup:u}=r,s=Z()??"",c=h.useRef(null),[i,p]=h.useState(!1),[m,l]=h.useState(null),[w,y]=h.useState(0);let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=te(),e[0]=a):a=e[0];const g=a;let I;e[1]!==n?(I=ne(n,le).filter(ke),e[1]=n,e[2]=I):I=e[2];const b=I;let x;e[3]!==b?(x=g?[]:b.filter(Re).map(_e),e[3]=b,e[4]=x):x=e[4];const f=x;let v,k;e[5]!==f.length||e[6]!==i?(v=()=>{if(f.length===0||i)return;const d=c.current;if(!d||typeof IntersectionObserver>"u"){p(!0);return}const T=new IntersectionObserver(X=>{X.some(Se)&&(p(!0),T.disconnect())},{rootMargin:"200px"});return T.observe(d),()=>T.disconnect()},k=[f.length,i],e[5]=f.length,e[6]=i,e[7]=v,e[8]=k):(v=e[7],k=e[8]),h.useEffect(v,k);let R;e[9]!==s||e[10]!==o||e[11]!==f||e[12]!==t||e[13]!==i?(R=()=>{if(!i||!t||f.length===0)return;const d=new AbortController;return he({sources:f,directory:s,sessionId:t,messageId:o,signal:d.signal}).then(T=>{d.signal.aborted||l(T)}).catch(()=>{d.signal.aborted||l(new Map(f.map(Me)))}),()=>d.abort()},e[9]=s,e[10]=o,e[11]=f,e[12]=t,e[13]=i,e[14]=R):R=e[14];let U;e[15]!==s||e[16]!==o||e[17]!==w||e[18]!==f||e[19]!==t||e[20]!==i?(U=[s,o,w,f,t,i],e[15]=s,e[16]=o,e[17]=w,e[18]=f,e[19]=t,e[20]=i,e[21]=U):U=e[21],h.useEffect(R,U);let j,A;e[22]!==m?(j=()=>{const d=Math.min(...[...m?.values()??[]].filter(Ne).map(Pe));if(!Number.isFinite(d))return;const T=setTimeout(()=>y(Ue),Math.max(0,d-Date.now()));return()=>clearTimeout(T)},A=[m],e[22]=m,e[23]=j,e[24]=A):(j=e[23],A=e[24]),h.useEffect(j,A);let _;e[25]!==m?(_=d=>m?.get(d.source)?.status!=="missing",e[25]=m,e[26]=_):_=e[26];const S=b.filter(_),C=[...m?.values()??[]].some(je),M=Ie(C);if(S.length===0)return null;const N="mt-3 flex max-w-full gap-2 overflow-x-auto pb-1",E="true";let F;e[27]!==M||e[28]!==s||e[29]!==u||e[30]!==m?(F=d=>P.jsx(Ee,{candidate:d,preparation:m?.get(d.source),directory:s,assetAuthReady:M.ready,assetAuthNonce:M.nonce,useWorkspaceFsBridge:g,onShowPopup:u},d.source),e[27]=M,e[28]=s,e[29]=u,e[30]=m,e[31]=F):F=e[31];const D=S.map(F);let O;return e[32]!==D?(O=P.jsx("div",{ref:c,className:N,"data-openchamber-markdown-image-gallery":E,children:D}),e[32]=D,e[33]=O):O=e[33],O};function Ae(r){return r+1}function xe(r){return r.isIntersecting}function ve(r){return{...r,status:"ready"}}function ke(r){return!ie(r.source)}function Re(r){return q(r.source)}function _e(r){return r.source}function Se(r){return r.isIntersecting}function Me(r){return[r,{status:"error"}]}function Ne(r){return r.status==="ready"}function Pe(r){return r.expiresAt??Number.POSITIVE_INFINITY}function Ue(r){return r+1}function je(r){return r.status==="ready"}export{gr as MarkdownImageGallery};