@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.
- package/README.md +32 -24
- package/bin/cli.js +1 -3
- package/bin/cli.test.js +40 -16
- package/bin/lib/DOCUMENTATION.md +6 -5
- package/bin/lib/cli-args.js +6 -1
- package/bin/lib/cli-args.test.js +34 -0
- package/bin/lib/cli-lifecycle.js +0 -1
- package/bin/lib/cli-network.js +8 -2
- package/bin/lib/cli-process.js +1 -1
- package/bin/lib/cli-settings-accessors.test.js +21 -13
- package/bin/lib/cli-startup.js +17 -11
- package/bin/lib/cli-startup.test.js +92 -2
- package/bin/lib/commands-connect-url.js +8 -1
- package/bin/lib/commands-schedule.js +8 -2
- package/bin/lib/commands-serve.js +15 -21
- package/bin/lib/commands-update.js +12 -24
- package/bin/lib/commands-update.test.js +14 -46
- package/dist/assets/DiffView-Cv9MSXl1.js +4 -0
- package/dist/assets/FilePreviewCommentMenu-D4kLseHj.js +4 -0
- package/dist/assets/FilesView-BVoD8I2x.js +14 -0
- package/dist/assets/{GitView-DzuzhIPx.js → GitView-Bzb8p-ew.js} +4 -4
- package/dist/assets/GuestSurfacePane-Crdbvsxo.js +1 -0
- package/dist/assets/InProgressOperationBanner-CwMjNQgk.js +2 -0
- package/dist/assets/{JsonTreeView-B_EPRjzy.js → JsonTreeView-DRKHZfsn.js} +1 -1
- package/dist/assets/MarkdownImageGallery-DZtqT1Zn.js +1 -0
- package/dist/assets/MarkdownRendererImpl-CqG7HCNd.js +10 -0
- package/dist/assets/OnboardingScreen-DMIxwYK5.js +1 -0
- package/dist/assets/{PatchDiff-6yh1csza.js → PatchDiff-CUcCg1jk.js} +1 -1
- package/dist/assets/PierreDiffViewer-CnnR-dnD.js +228 -0
- package/dist/assets/PlanView-RCBadcY7.js +5 -0
- package/dist/assets/SettingsView-CjBjZFRO.js +30 -0
- package/dist/assets/SettingsWindow-DyM7QuhI.js +1 -0
- package/dist/assets/SubmoduleDiffSummary-BWIfgMED.js +1 -0
- package/dist/assets/ToolOutputDialog-Q0P3FuAi.js +15 -0
- package/dist/assets/ToolPartDiffPreview-p7qR9FpU.js +8 -0
- package/dist/assets/{VirtualizedFileDiff-BTJVRkyo.js → VirtualizedFileDiff-CFpjL8Ns.js} +3 -3
- package/dist/assets/{Virtualizer-xCEYz34p.js → Virtualizer-C0IsclZn.js} +1 -1
- package/dist/assets/WalkthroughView-DI31zD02.js +4 -0
- package/dist/assets/appThemeRegistry-B9gkFq9i.js +1 -0
- package/dist/assets/{computeVirtualFileMetrics-CmPe29DM.js → computeVirtualFileMetrics-C2WM6JC2.js} +2 -2
- package/dist/assets/de-YKfk5MmC.js +14 -0
- package/dist/assets/es-_gwT0kr-.js +20 -0
- package/dist/assets/fileTreeStatus-D438yi8M.js +1 -0
- package/dist/assets/fr-DqzvXmIm.js +18 -0
- package/dist/assets/index-BLaHKdtx.js +1 -0
- package/dist/assets/index-BkMXRrVQ.css +1 -0
- package/dist/assets/index-DxNa7xYB.js +65 -0
- package/dist/assets/initializeSharedPreferences-Bck5EAWP.js +1 -0
- package/dist/assets/{isDiffPlainText-CQmDCnEv.js → isDiffPlainText-Dgbw8VKk.js} +1 -1
- package/dist/assets/{isFilePlainText-CYBUzW4I.js → isFilePlainText-_ZS5UYRj.js} +1 -1
- package/dist/assets/ja-B-GFYhQE.js +20 -0
- package/dist/assets/ko-mzksfqDC.js +20 -0
- package/dist/assets/main-C5Xx8dn_.js +2 -0
- package/dist/assets/main-CfBSQM1H.js +990 -0
- package/dist/assets/markdownCore-BmWwW1ll.js +7 -0
- package/dist/assets/miniChat-mnKwy4vQ.js +2 -0
- package/dist/assets/mobile-DeEQd0wZ.js +2 -0
- package/dist/assets/nl-CWQr6NSq.js +20 -0
- package/dist/assets/{parseDiffFromFile-Cy0PNxun.js → parseDiffFromFile-BUgn-T9p.js} +2 -2
- package/dist/assets/patchFileDiff-Dt8LhgBh.js +13 -0
- package/dist/assets/pl-UmRcDUX2.js +20 -0
- package/dist/assets/pt-BR-BSLybvVF.js +20 -0
- package/dist/assets/relocateRestoredSession-B5E9xb3T.js +1 -0
- package/dist/assets/renderElectronMiniChatApp-C0a9A5_J.js +2 -0
- package/dist/assets/renderMobileApp-BNncg3Pk.js +25 -0
- package/dist/assets/runtimeEndpointReset-CZ5aafpl.js +62 -0
- package/dist/assets/{selectionMarkdown-TkYk5h9l.js → selectionMarkdown-CUN3wUld.js} +9 -9
- package/dist/assets/{sessionOwnership-Bs1xbRfB.js → sessionOwnership-BSuxCEhb.js} +1 -1
- package/dist/assets/shikiHighlight-DHDx-6eM.js +1 -0
- package/dist/assets/space-apply-DM_2pRW7.js +1 -0
- package/dist/assets/space-close-Bpomt8z0.js +1 -0
- package/dist/assets/{surface-B6n7wJtt.js → surface-C-jQaGnL.js} +1 -1
- package/dist/assets/{textMateThemeFromAppTheme-CDlKffWz.js → textMateThemeFromAppTheme-DlsTphbY.js} +1 -1
- package/dist/assets/tr-gaTrX_HK.js +11 -0
- package/dist/assets/uk-CnJF6ykl.js +20 -0
- package/dist/assets/{useAppFontEffects-DCqCVGlT.js → useAppFontEffects-DGlvOqP_.js} +194 -233
- package/dist/assets/useInlineCommentController-kMN4Wg_D.js +2 -0
- package/dist/assets/{useRootScrollLock-BowwS8kq.js → useRootScrollLock-DMPpvpNP.js} +2 -2
- package/dist/assets/{vendor-base-ui-DX96QhTP.js → vendor-base-ui-Det7U81h.js} +1 -1
- package/dist/assets/{vendor-codemirror-autocomplete-DW1FQz9_.js → vendor-codemirror-autocomplete-BSHQHbKu.js} +1 -1
- package/dist/assets/{vendor-codemirror-commands-DpmhalwN.js → vendor-codemirror-commands-C4G_dPWe.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-angular-BqExbN1M.js → vendor-codemirror-lang-angular-B6LbBGHB.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-cpp-DZA36HfS.js → vendor-codemirror-lang-cpp-BWWXBx7W.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-css-B07blnnZ.js → vendor-codemirror-lang-css-Cayfb29q.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-go-BM8K9D1-.js → vendor-codemirror-lang-go-BoKlCNKw.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-html-DaH9adfE.js → vendor-codemirror-lang-html-BQWerHsJ.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-java-CsdC0viz.js → vendor-codemirror-lang-java-DWX7Fq_K.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-javascript-CpGYXGuo.js → vendor-codemirror-lang-javascript-DbpEcZM0.js} +2 -2
- package/dist/assets/{vendor-codemirror-lang-jinja-BBeGzXw5.js → vendor-codemirror-lang-jinja-D1JIJRA7.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-json-58T70Hqs.js → vendor-codemirror-lang-json-BzgckzmB.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-less-BI-xCA59.js → vendor-codemirror-lang-less-B9EpDXFi.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-liquid-zEcMa-zy.js → vendor-codemirror-lang-liquid-9U7kRbSf.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-markdown-BLKnlLP4.js → vendor-codemirror-lang-markdown-D2TEBIvZ.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-php-9f35M83-.js → vendor-codemirror-lang-php-BT6sDVzE.js} +1 -1
- package/dist/assets/vendor-codemirror-lang-python-jAMtYiA9.js +3 -0
- package/dist/assets/{vendor-codemirror-lang-rust-MNDL_jZQ.js → vendor-codemirror-lang-rust-CVO56EiL.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-sass-p9epsSNm.js → vendor-codemirror-lang-sass-DZlOoUWu.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-sql-Bqzh0EXX.js → vendor-codemirror-lang-sql-fZ6t1DPw.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-vue-BnNUWV-p.js → vendor-codemirror-lang-vue-DxbqrLiE.js} +1 -1
- package/dist/assets/{vendor-codemirror-lang-wast-C2a-oLmk.js → vendor-codemirror-lang-wast-DyU1Gt-I.js} +1 -1
- package/dist/assets/vendor-codemirror-lang-xml-C9a_K5_p.js +1 -0
- package/dist/assets/{vendor-codemirror-lang-yaml-C0sjswB0.js → vendor-codemirror-lang-yaml-Cptq8l0e.js} +1 -1
- package/dist/assets/{vendor-codemirror-language-ByBn5zIW.js → vendor-codemirror-language-DufXoQvE.js} +2 -2
- package/dist/assets/vendor-codemirror-language-data-CtwSWKtX.js +2 -0
- package/dist/assets/{vendor-codemirror-search-ib-sHD5W.js → vendor-codemirror-search-CvXM_pZg.js} +1 -1
- package/dist/assets/{vendor-codemirror-state-G3UuR-be.js → vendor-codemirror-state-Dek9sMtw.js} +1 -1
- package/dist/assets/{vendor-codemirror-view-Bniqp7p5.js → vendor-codemirror-view-1e0FQ6Wn.js} +1 -1
- package/dist/assets/vendor-framer-motion-DxDVhOLc.js +9 -0
- package/dist/assets/vendor-katex-CuQvj9-L.js +257 -0
- package/dist/assets/vendor-katex-DdZNUVNG.css +1 -0
- package/dist/assets/{vendor-motion-dom-DcCgeG69.js → vendor-motion-dom-HXPOMxb7.js} +1 -1
- package/dist/assets/{vendor-opencode-client-DHzhmLwV.js → vendor-opencode-client-BmFcUkbQ.js} +1 -1
- package/dist/assets/{vendor-replit-codemirror-vim-DkzqxN2H.js → vendor-replit-codemirror-vim-BlJRn-cW.js} +2 -2
- package/dist/assets/{vendor-tanstack-react-virtual-H_JmXOFV.js → vendor-tanstack-react-virtual-CvuLsk7D.js} +1 -1
- package/dist/assets/{vendor-tanstack-virtual-core-Dxc8hSTB.js → vendor-tanstack-virtual-core-DPaNcJcT.js} +1 -1
- package/dist/assets/zh-CN-t2vigSB1.js +20 -0
- package/dist/assets/zh-TW-jAgqBokB.js +20 -0
- package/dist/index.html +6 -6
- package/dist/mini-chat.html +6 -6
- package/dist/mobile.html +6 -6
- package/package.json +8 -5
- package/server/index.js +80 -36
- package/server/lib/agent-memory/actions.js +1 -6
- package/server/lib/agent-memory/routes.js +1 -2
- package/server/lib/agent-memory/runtime.js +1 -8
- package/server/lib/agent-tool/DOCUMENTATION.md +7 -3
- package/server/lib/agent-tool/runtime.js +3 -6
- package/server/lib/agent-tool/runtime.test.js +0 -2
- package/server/lib/browser-control/DOCUMENTATION.md +6 -0
- package/server/lib/changelog/update-notes.js +1 -1
- package/server/lib/context-obligatory/runtime.js +1 -2
- package/server/lib/dev-tunnel/DOCUMENTATION.md +8 -0
- package/server/lib/dev-tunnel/client.js +21 -10
- package/server/lib/dev-tunnel/tunnel.test.js +34 -0
- package/server/lib/dispatch-results/runtime.js +1 -1
- package/server/lib/enterprise-mode.d.ts +1 -0
- package/server/lib/enterprise-mode.js +13 -2
- package/server/lib/enterprise-mode.test.js +21 -0
- package/server/lib/event-stream/DOCUMENTATION.md +2 -2
- package/server/lib/event-stream/index.js +1 -3
- package/server/lib/event-stream/translate-v2.js +1 -9
- package/server/lib/event-stream/translate-v2.test.js +0 -11
- package/server/lib/fs/DOCUMENTATION.md +5 -2
- package/server/lib/fs/routes.js +62 -15
- package/server/lib/fs/routes.test.js +278 -48
- package/server/lib/fs/workspace-file-names.js +104 -0
- package/server/lib/fs/workspace-file-names.test.js +62 -0
- package/server/lib/git/DOCUMENTATION.md +17 -5
- package/server/lib/git/contributor-provenance-storage.js +9 -6
- package/server/lib/git/contributor-provenance-storage.test.js +29 -0
- package/server/lib/git/credential-broker.js +1 -1
- package/server/lib/git/credential-resolver.js +1 -4
- package/server/lib/git/credentials.js +1 -0
- package/server/lib/git/discovery-endpoint.js +1 -1
- package/server/lib/git/identity-provisioning.js +2 -1
- package/server/lib/git/identity-storage.js +3 -4
- package/server/lib/git/lfs-discovery.js +14 -14
- package/server/lib/git/lfs-discovery.test.js +16 -6
- package/server/lib/git/network-operation-plan.js +50 -62
- package/server/lib/git/network-operation-plan.test.js +103 -1
- package/server/lib/git/network-operation-registry.js +4 -6
- package/server/lib/git/network-operation-storage.js +4 -6
- package/server/lib/git/network-operations.js +12 -4
- package/server/lib/git/network-operations.test.js +19 -6
- package/server/lib/git/redaction.js +2 -1
- package/server/lib/git/repository-credential-runtime.js +5 -3
- package/server/lib/git/repository-credential-runtime.test.js +22 -0
- package/server/lib/git/routes.js +31 -137
- package/server/lib/git/routes.test.js +2 -2
- package/server/lib/git/service.js +143 -27
- package/server/lib/git/service.test.js +215 -1
- package/server/lib/git/ssh-credential-storage.js +1 -4
- package/server/lib/git/submodule-discovery.js +1 -1
- package/server/lib/git/worktree-bootstrap-storage.js +3 -4
- package/server/lib/git/worktree-bootstrap-storage.test.js +15 -0
- package/server/lib/git/worktree-creation.js +194 -0
- package/server/lib/git/worktree-creation.test.js +155 -0
- package/server/lib/github/DOCUMENTATION.md +11 -6
- package/server/lib/github/auth.js +2 -4
- package/server/lib/github/device-flow.js +2 -2
- package/server/lib/github/gh-cli-credential.js +1 -0
- package/server/lib/github/octokit.js +31 -0
- package/server/lib/github/pr-status.js +35 -18
- package/server/lib/github/pr-status.test.js +271 -3
- package/server/lib/github/reference-search.js +102 -13
- package/server/lib/github/reference-search.test.js +48 -7
- package/server/lib/github/routes.auth.test.js +18 -0
- package/server/lib/github/routes.js +360 -6
- package/server/lib/github/routes.mutations.test.js +239 -0
- package/server/lib/github/routes.test.js +134 -2
- package/server/lib/gitlab/DOCUMENTATION.md +5 -1
- package/server/lib/gitlab/auth-storage.test.js +1 -0
- package/server/lib/gitlab/mappers.js +30 -1
- package/server/lib/gitlab/resources.js +230 -6
- package/server/lib/gitlab/resources.test.js +179 -0
- package/server/lib/gitlab/routes.js +200 -6
- package/server/lib/gitlab/routes.test.js +186 -2
- package/server/lib/gitlab/validation.js +1 -5
- package/server/lib/guests/DOCUMENTATION.md +1 -1
- package/server/lib/guests/oauth.js +2 -2
- package/server/lib/guests/service.js +1 -1
- package/server/lib/guests/sockets.js +1 -1
- package/server/lib/injected-env.d.ts +8 -0
- package/server/lib/injected-env.js +50 -0
- package/server/lib/injected-env.test.js +56 -0
- package/server/lib/linear/DOCUMENTATION.md +5 -6
- package/server/lib/linear/issues.js +62 -4
- package/server/lib/linear/issues.test.js +68 -0
- package/server/lib/linear/oauth.js +5 -5
- package/server/lib/linear/parse.js +2 -9
- package/server/lib/message-queue/DOCUMENTATION.md +23 -1
- package/server/lib/message-queue/runtime.js +85 -12
- package/server/lib/message-queue/runtime.test.js +172 -2
- package/server/lib/notifications/apns-runtime.js +5 -6
- package/server/lib/notifications/apns-runtime.test.js +20 -4
- package/server/lib/openchamber-control/DOCUMENTATION.md +19 -1
- package/server/lib/openchamber-control/actions.js +2 -1
- package/server/lib/openchamber-control/service.js +119 -20
- package/server/lib/openchamber-control/service.test.js +166 -0
- package/server/lib/openchamber-sessions/archive-store.js +1 -6
- package/server/lib/openchamber-sessions/routes.js +47 -12
- package/server/lib/openchamber-sessions/routes.test.js +65 -2
- package/server/lib/openchamber-sessions/session-metadata-store.js +1 -6
- package/server/lib/opencode/DOCUMENTATION.md +22 -8
- package/server/lib/opencode/agents.js +62 -0
- package/server/lib/opencode/auth-state-runtime.js +3 -1
- package/server/lib/opencode/auth.d.ts +1 -1
- package/server/lib/opencode/auth.js +8 -0
- package/server/lib/opencode/auth.test.js +31 -0
- package/server/lib/opencode/config-entity-routes.js +16 -0
- package/server/lib/opencode/config-entity-v2.test.js +16 -1
- package/server/lib/opencode/config-paths.test.js +2 -2
- package/server/lib/opencode/config-v2.js +2 -4
- package/server/lib/opencode/feature-routes-runtime.js +89 -49
- package/server/lib/opencode/lifecycle.js +41 -21
- package/server/lib/opencode/lifecycle.test.js +50 -2
- package/server/lib/opencode/model-discovery.js +1 -1
- package/server/lib/opencode/model-discovery.test.js +17 -0
- package/server/lib/opencode/models-metadata.js +0 -2
- package/server/lib/opencode/openchamber-routes.test.js +3 -3
- package/server/lib/opencode/plugins.js +6 -9
- package/server/lib/opencode/provider-source-route.test.js +101 -3
- package/server/lib/opencode/providers-disabled.test.js +59 -0
- package/server/lib/opencode/providers.js +34 -0
- package/server/lib/opencode/proxy.js +11 -3
- package/server/lib/opencode/routes.js +40 -2
- package/server/lib/opencode/settings-helpers.js +27 -1
- package/server/lib/opencode/settings-helpers.test.js +19 -7
- package/server/lib/opencode/settings-registry.json +27 -16
- package/server/lib/opencode/settings-runtime.test.js +18 -0
- package/server/lib/opencode/shared-service-runtime.js +23 -104
- package/server/lib/opencode/shared.js +77 -46
- package/server/lib/opencode/shared.test.js +12 -12
- package/server/lib/opencode/shutdown-runtime.test.js +2 -3
- package/server/lib/opencode/skill-routes.js +123 -38
- package/server/lib/opencode/skill-routes.test.js +201 -0
- package/server/lib/opencode/skills.js +81 -34
- package/server/lib/opencode/skills.test.js +176 -21
- package/server/lib/opencode/startup-pipeline-runtime.js +6 -3
- package/server/lib/opencode/startup-pipeline-runtime.test.js +2 -1
- package/server/lib/opencode/watcher.test.js +0 -54
- package/server/lib/outbound-proxy.js +52 -0
- package/server/lib/outbound-proxy.test.js +55 -0
- package/server/lib/package-manager.js +23 -17
- package/server/lib/package-manager.test.js +5 -18
- package/server/lib/permission-auto-accept/DOCUMENTATION.md +1 -1
- package/server/lib/permission-auto-accept/runtime.js +19 -47
- package/server/lib/permission-auto-accept/runtime.test.js +2 -2
- package/server/lib/project-context/DOCUMENTATION.md +7 -1
- package/server/lib/project-context/routes.js +1 -2
- package/server/lib/project-context/runtime.js +12 -14
- package/server/lib/project-context/runtime.test.js +78 -2
- package/server/lib/projects/project-config.js +30 -15
- package/server/lib/projects/project-config.test.js +30 -0
- package/server/lib/projects/project-setup.js +1 -2
- package/server/lib/projects/routes.js +1 -2
- package/server/lib/quota/DOCUMENTATION.md +35 -7
- package/server/lib/quota/index.js +1 -0
- package/server/lib/quota/providers/claude/index.js +1 -1
- package/server/lib/quota/providers/cline-pass.js +1 -1
- package/server/lib/quota/providers/exe-dev.js +1 -1
- package/server/lib/quota/providers/google/index.js +1 -1
- package/server/lib/quota/providers/hyper.js +1 -1
- package/server/lib/quota/providers/kimi.js +116 -36
- package/server/lib/quota/providers/kimi.test.js +128 -3
- package/server/lib/quota/providers/opencode-go.js +144 -21
- package/server/lib/quota/providers/opencode-go.test.js +229 -6
- package/server/lib/quota/providers/openrouter.js +1 -1
- package/server/lib/quota/providers/zenmux.js +1 -1
- package/server/lib/quota/utils/auth.js +1 -0
- package/server/lib/quota/utils/transformers.js +2 -6
- package/server/lib/relay/DOCUMENTATION.md +18 -3
- package/server/lib/relay/e2ee.js +7 -7
- package/server/lib/relay/host-client.js +84 -13
- package/server/lib/relay/host-client.test.js +201 -1
- package/server/lib/relay/identity.js +6 -29
- package/server/lib/relay/identity.test.js +18 -28
- package/server/lib/relay/key-store.js +141 -0
- package/server/lib/relay/key-store.test.js +138 -0
- package/server/lib/relay/service.js +8 -8
- package/server/lib/relay/service.test.js +10 -5
- package/server/lib/relay/signing-key.js +13 -36
- package/server/lib/relay/tunnel-codec.js +10 -10
- package/server/lib/route-module-exports.test.js +22 -0
- package/server/lib/routing/DOCUMENTATION.md +23 -3
- package/server/lib/routing/cache.js +87 -0
- package/server/lib/routing/defaults.js +11 -0
- package/server/lib/routing/history.js +12 -4
- package/server/lib/routing/runtime.js +39 -3
- package/server/lib/routing/runtime.test.js +81 -2
- package/server/lib/routing/store.js +12 -1
- package/server/lib/routing/store.test.js +13 -0
- package/server/lib/scheduled-tasks/DOCUMENTATION.md +59 -1
- package/server/lib/scheduled-tasks/existing-session.js +119 -0
- package/server/lib/scheduled-tasks/existing-session.test.js +350 -0
- package/server/lib/scheduled-tasks/loops.js +1 -8
- package/server/lib/scheduled-tasks/routes.js +8 -8
- package/server/lib/scheduled-tasks/runtime.js +103 -13
- package/server/lib/scheduled-tasks/runtime.test.js +48 -0
- package/server/lib/scheduled-tasks/service.js +33 -11
- package/server/lib/scheduled-tasks/service.test.js +128 -2
- package/server/lib/scheduled-tasks/session-defaults.js +27 -0
- package/server/lib/scheduled-tasks/session-defaults.test.js +19 -0
- package/server/lib/session-assist/context.js +1 -0
- package/server/lib/session-folders/routes.js +2 -2
- package/server/lib/session-goal/objectives.js +1 -1
- package/server/lib/session-knowledge/routes.js +2 -2
- package/server/lib/session-knowledge/runtime.js +1 -2
- package/server/lib/session-work/DOCUMENTATION.md +39 -14
- package/server/lib/session-work/questions.js +31 -2
- package/server/lib/session-work/runtime.js +22 -13
- package/server/lib/session-work/runtime.test.js +43 -26
- package/server/lib/session-work/state.js +10 -4
- package/server/lib/session-work/state.test.js +8 -1
- package/server/lib/shared/DOCUMENTATION.md +89 -0
- package/server/lib/shared/guards.js +53 -0
- package/server/lib/shared/guards.test.js +112 -0
- package/server/lib/skills-catalog/DOCUMENTATION.md +10 -8
- package/server/lib/skills-catalog/cache.js +3 -2
- package/server/lib/skills-catalog/curated-sources.js +5 -1
- package/server/lib/skills-catalog/git.js +107 -20
- package/server/lib/skills-catalog/git.test.js +78 -0
- package/server/lib/skills-catalog/install.js +21 -12
- package/server/lib/skills-catalog/scan.js +25 -15
- package/server/lib/skills-catalog/source.js +26 -1
- package/server/lib/skills-catalog/source.test.js +27 -0
- package/server/lib/source-control/DOCUMENTATION.md +2 -1
- package/server/lib/source-control/audit-storage.js +7 -6
- package/server/lib/source-control/audit-storage.test.js +11 -0
- package/server/lib/source-control/binding-service.js +2 -5
- package/server/lib/source-control/change-request-worktree.js +90 -0
- package/server/lib/source-control/change-request-worktree.test.js +121 -0
- package/server/lib/source-control/mutation-executor.js +1 -1
- package/server/lib/source-control/mutation-storage.js +11 -5
- package/server/lib/source-control/provider-instance.js +1 -2
- package/server/lib/source-control/repository-identity.js +1 -1
- package/server/lib/source-control/routes.js +14 -2
- package/server/lib/spaces/DOCUMENTATION.md +42 -17
- package/server/lib/spaces/command-stream.test.js +15 -0
- package/server/lib/spaces/dispatcher.js +7 -0
- package/server/lib/spaces/dispatcher.test.js +17 -0
- package/server/lib/spaces/hardening.js +2 -2
- package/server/lib/spaces/hardening.test.js +1 -1
- package/server/lib/spaces/host.js +2 -0
- package/server/lib/spaces/journey.js +66 -5
- package/server/lib/spaces/journey.test.js +95 -4
- package/server/lib/spaces/layout.js +1 -1
- package/server/lib/spaces/places/docker-disk.js +38 -14
- package/server/lib/spaces/places/docker-disk.test.js +80 -1
- package/server/lib/spaces/places/docker.js +35 -11
- package/server/lib/spaces/places/fake-docker.js +22 -3
- package/server/lib/spaces/places/memory-place.js +3 -0
- package/server/lib/spaces/places/packed.docker.live.test.js +1 -1
- package/server/lib/spaces/routes.js +5 -0
- package/server/lib/spaces/routes.test.js +4 -2
- package/server/lib/spaces/run-command.js +9 -2
- package/server/lib/spaces/tools.js +4 -5
- package/server/lib/spaces/tools.test.js +2 -2
- package/server/lib/terminal/runtime.js +18 -6
- package/server/lib/terminal/runtime.test.js +66 -0
- package/server/lib/tts/index.js +3 -0
- package/server/lib/tts/service.js +4 -2
- package/server/lib/walkthrough/DOCUMENTATION.md +3 -1
- package/server/lib/walkthrough/index.js +2 -3
- package/server/lib/walkthrough/pr-source.test.js +22 -0
- package/server/lib/walkthrough/sources.js +6 -1
- package/server/opencode-proxy.test.js +127 -0
- package/bin/lib/commands-startup.test.js +0 -15
- package/dist/assets/CodeMirrorCommentWidgets-CVDSjcrP.js +0 -1
- package/dist/assets/DiffView-Ct7vL3fD.js +0 -4
- package/dist/assets/FilesView-DT0uEYgT.js +0 -17
- package/dist/assets/GuestSurfacePane-DVvk1VPu.js +0 -1
- package/dist/assets/LinearIssuesView-C10MwA9h.js +0 -1
- package/dist/assets/MarkdownImageGallery-BbN_K_3d.js +0 -1
- package/dist/assets/MarkdownRendererImpl-BLt2Tkk9.js +0 -10
- package/dist/assets/OnboardingScreen-Bgp5A3WB.js +0 -1
- package/dist/assets/PierreDiffViewer-CWJLj-S-.js +0 -210
- package/dist/assets/PlanView-DsRWnsOI.js +0 -5
- package/dist/assets/PublishDialog-CCeKloRu.js +0 -2
- package/dist/assets/SettingsView-BuPPsNPp.js +0 -30
- package/dist/assets/SettingsWindow-CM5fL8Ot.js +0 -1
- package/dist/assets/SubmoduleDiffSummary-CfsMcfiQ.js +0 -1
- package/dist/assets/ToolOutputDialog-mZrfSofz.js +0 -15
- package/dist/assets/ToolPartDiffPreview-BUGCRYEL.js +0 -8
- package/dist/assets/WalkthroughView-ClBo7PPd.js +0 -4
- package/dist/assets/appThemeRegistry-CxzMxR-H.js +0 -1
- package/dist/assets/de-CBla4hjd.js +0 -14
- package/dist/assets/es-BmnZtxTD.js +0 -20
- package/dist/assets/fileTreeStatus-BSHFIGEg.js +0 -1
- package/dist/assets/fr-OVKIBUZO.js +0 -18
- package/dist/assets/index-CKCFKmjF.js +0 -1
- package/dist/assets/index-Dbx4V4GN.css +0 -1
- package/dist/assets/index-vQ1Pg1cr.js +0 -61
- package/dist/assets/ja-6v-yr-gE.js +0 -20
- package/dist/assets/ko-I_ZLvgQ9.js +0 -20
- package/dist/assets/main-CmO4dRtR.js +0 -2
- package/dist/assets/main-b9vqhlYM.js +0 -999
- package/dist/assets/markdownCore-BPEZRQfP.js +0 -7
- package/dist/assets/miniChat-B5Oi7B-6.js +0 -2
- package/dist/assets/mobile-CVtShif9.js +0 -2
- package/dist/assets/nl-DcvIJf46.js +0 -20
- package/dist/assets/patchFileDiff-CW3wCH1O.js +0 -13
- package/dist/assets/pl-JxCUl0sd.js +0 -20
- package/dist/assets/pt-BR-L89mjja2.js +0 -20
- package/dist/assets/relocateRestoredSession-DYh_9oBa.js +0 -1
- package/dist/assets/renderElectronMiniChatApp-BD-1JHSg.js +0 -2
- package/dist/assets/renderMobileApp-7s5InXt1.js +0 -25
- package/dist/assets/runtimeEndpointReset-DqLJC6L1.js +0 -53
- package/dist/assets/shikiHighlight-CXgZnvHh.js +0 -1
- package/dist/assets/space-apply-1trGVIl8.js +0 -1
- package/dist/assets/space-close-y7j-NuBv.js +0 -1
- package/dist/assets/tr-ka5J1flt.js +0 -11
- package/dist/assets/uk-PyGe6Q_u.js +0 -20
- package/dist/assets/useInlineCommentController-CrjSGCpi.js +0 -2
- package/dist/assets/vendor-codemirror-lang-python-B7ClrMIT.js +0 -3
- package/dist/assets/vendor-codemirror-lang-xml-C8tGnS64.js +0 -1
- package/dist/assets/vendor-codemirror-language-data-q2bKO1EM.js +0 -2
- package/dist/assets/vendor-framer-motion-Bq3iTZ6r.js +0 -1
- package/dist/assets/vendor-katex-CHD9BdDO.js +0 -257
- package/dist/assets/vendor-katex-Cp579UoJ.css +0 -1
- package/dist/assets/zh-CN-B0P2tybJ.js +0 -20
- package/dist/assets/zh-TW-Bs9C5cN8.js +0 -20
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{ih as _,kP as re,kQ as oe,kR as se,kS as de,kT as le,kU as ce,kV as Z,kW as fe,kX as ue,kK as he}from"./useAppFontEffects-DCqCVGlT.js";import{b as me,k as g,l as O,m as z,a as pe}from"./computeVirtualFileMetrics-CmPe29DM.js";import{t as ge}from"./vendor-hast-util-to-html-BKBhbTDb.js";import{c as be}from"./vendor-diff-C3JhlQdm.js";const A=new Set;let C=null;function ve(e){A.add(e),C??=requestAnimationFrame(ee)}function G(e){A.delete(e)&&A.size===0&&C!=null&&(cancelAnimationFrame(C),C=null)}function ee(e){const t=new Set(A);A.clear();for(const i of t)try{i(e)}catch(n){console.error(n)}A.size>0?C=requestAnimationFrame(ee):C=null}function V(e,t,i){if(e===t||e==null||t==null)return e===t;const n=new Set(i),a=Object.keys(e),r=new Set(Object.keys(t));for(const s of a)if(r.delete(s),!n.has(s)&&(!(s in t)||e[s]!==t[s]))return!1;for(const s of Array.from(r))if(!n.has(s))return!1;return!0}function et(e,t){const i=e?.theme??_,n=t?.theme??_,a=q(e),r=q(t);return me(i,n)&&V(e,t,["theme","parseDiffOptions"])&&V(a,r)}function q(e){if(e!=null&&"parseDiffOptions"in e)return e.parseDiffOptions}function B(e,t){return e?.start===t?.start&&e?.end===t?.end&&e?.side===t?.side&&e?.endSide===t?.endSide}function ye(){return g({tagName:"button",properties:{"data-utility-button":"",type:"button"},children:[O({name:"diffs-icon-plus",properties:{"data-icon":""}})]})}function xe(e,t){return e.lineNumber===t.lineNumber&&e.side===t.side}function R(e){for(const t of e)if(t instanceof HTMLElement&&(t.hasAttribute("data-utility-button")||t.hasAttribute("data-gutter-utility-slot")||t.getAttribute("slot")==="gutter-utility-slot"||t.getAttribute("name")==="gutter-utility-slot"))return!0;return!1}var tt=class{mode;options;hoveredLine;hoveredToken;pre;gutterUtilityLine;gutterUtilityContainer;gutterUtilityButton;gutterUtilitySlot;interactiveLinesAttr=!1;interactiveLineNumbersAttr=!1;hasPointerListeners=!1;hasDocumentPointerListeners=!1;selectedRange=null;selectedRangeHighlightSide;selectedRangeLineNumberOnly=!1;editorActiveLine=null;editorActiveLineSide;editorLineNumberOnly=!1;proposedSelectedRange;renderedSelectedLinesState;renderedEditorActiveLineState;selectionAnchor;pointerSession={mode:"idle"};constructor(e,t){this.mode=e,this.options=t}setOptions(e){this.options=e}cleanUp(){this.pre?.removeEventListener("click",this.handlePointerClick),this.pre?.removeEventListener("pointerdown",this.handlePointerDown),this.pre?.removeEventListener("pointermove",this.handlePointerMove),this.pre?.removeEventListener("pointerleave",this.handlePointerLeave),this.pre?.removeAttribute("data-interactive-lines"),this.pre?.removeAttribute("data-interactive-line-numbers"),this.pre=void 0,this.gutterUtilityContainer?.remove(),this.gutterUtilityLine=void 0,this.gutterUtilityContainer=void 0,this.gutterUtilityButton=void 0,this.gutterUtilitySlot=void 0,this.clearHoveredLine(),this.clearHoveredToken(),this.detachDocumentPointerListeners(),this.clearPointerSession(),G(this.renderSelection),this.interactiveLinesAttr=!1,this.interactiveLineNumbersAttr=!1,this.hasPointerListeners=!1,this.setSelectionDirty()}setup(e){this.setSelectionDirty();const{usesCustomGutterUtility:t=!1,enableGutterUtility:i=!1}=this.options;this.pre!==e&&(this.cleanUp(),this.pre=e),i?this.ensureGutterUtilityNode(t):this.gutterUtilityContainer!=null&&(this.gutterUtilityContainer.remove(),this.gutterUtilityLine=void 0,this.gutterUtilityContainer=void 0,this.gutterUtilityButton=void 0,this.gutterUtilitySlot=void 0,this.pointerSession.mode==="gutterSelecting"&&(this.clearPointerSession(),this.detachDocumentPointerListeners())),this.syncPointerListeners(e),this.updateInteractiveLineAttributes(),this.renderSelection(),this.placeUtility()}setSelectionDirty(){this.renderedSelectedLinesState=void 0,this.renderedEditorActiveLineState=void 0}isSelectionDirty(){return this.renderedSelectedLinesState===void 0||this.renderedEditorActiveLineState===void 0}setSelection(e,t){const i=!(e===this.selectedRange||B(e??void 0,this.selectedRange??void 0)),n=t?.lineNumberOnly??!1,a=t?.activeLineSide!==this.selectedRangeHighlightSide||n!==this.selectedRangeLineNumberOnly;!this.isSelectionDirty()&&!i&&!a||(this.proposedSelectedRange=void 0,this.selectedRange=e,this.selectedRangeHighlightSide=t?.activeLineSide,this.selectedRangeLineNumberOnly=n,this.renderSelection(),this.placeUtility(),i&&t?.notify!==!1&&this.notifySelectionCommitted(e))}setEditorActiveLine(e,{lineNumberOnly:t=!1,side:i}={}){const n=e!==this.editorActiveLine,a=i!==this.editorActiveLineSide||t!==this.editorLineNumberOnly;!this.isSelectionDirty()&&!n&&!a||(this.editorActiveLine=e,this.editorActiveLineSide=i,this.editorLineNumberOnly=t,this.renderSelection())}getSelection(){return this.selectedRange}getHoveredLine=()=>{const e=this.gutterUtilityLine??this.hoveredLine;if(e!=null){if(this.mode==="diff"&&e.type==="diff-line")return{lineNumber:e.lineNumber,side:e.annotationSide};if(this.mode==="file"&&e.type==="line")return{lineNumber:e.lineNumber}}};handlePointerClick=e=>{const{onHunkExpand:t,onLineClick:i,onLineNumberClick:n,onTokenClick:a,onMergeConflictActionClick:r}=this.options;t==null&&i==null&&n==null&&r==null&&a==null||this.options.onGutterUtilityClick!=null&&R(e.composedPath())||(w(this.options.__debugPointerEvents,"click","FileDiff.DEBUG.handlePointerClick:",e),this.handlePointerEvent({eventType:"click",event:e}))};handlePointerMove=e=>{if(e.pointerType!=="mouse")return;const{lineHoverHighlight:t="disabled",onLineEnter:i,onLineLeave:n,onTokenEnter:a,onTokenLeave:r,enableGutterUtility:s=!1}=this.options;t==="disabled"&&!s&&i==null&&n==null&&a==null&&r==null||(w(this.options.__debugPointerEvents,"move","FileDiff.DEBUG.handlePointerMove:",e),this.handlePointerEvent({eventType:"move",event:e}))};handlePointerLeave=e=>{const{__debugPointerEvents:t}=this.options;if(w(t,"move","FileDiff.DEBUG.handlePointerLeave: no event"),this.hoveredLine==null&&this.hoveredToken==null){w(t,"move","FileDiff.DEBUG.handlePointerLeave: returned early, no hovered line or token");return}this.hoveredToken!=null&&(this.options.onTokenLeave?.(this.hoveredToken,e),this.clearHoveredToken()),this.hoveredLine!=null&&(this.options.onLineLeave?.({...this.hoveredLine,event:e}),this.clearHoveredLine()),this.placeUtility()};handlePointerEvent({eventType:e,event:t}){const{__debugPointerEvents:i}=this.options,n=t.composedPath();w(i,e,"FileDiff.DEBUG.handlePointerEvent:",{eventType:e,composedPath:n});const a=this.resolvePointerTarget(n);w(i,e,"FileDiff.DEBUG.handlePointerEvent: resolvePointerTarget result:",a);const{onLineClick:r,onLineNumberClick:s,onLineEnter:d,onLineLeave:c,onTokenClick:l,onTokenEnter:o,onTokenLeave:f,onHunkExpand:h,onMergeConflictActionClick:u}=this.options;switch(e){case"move":{const p=F(a)&&this.hoveredLine?.lineElement===a.lineElement;H(a)&&this.hoveredToken?.tokenElement===a.tokenElement||(this.hoveredToken!=null&&(f?.(this.hoveredToken,t),this.clearHoveredToken()),H(a)&&(this.setHoveredToken(this.toTokenEventBaseProps(a)),o?.(this.hoveredToken,t))),p||(this.hoveredLine!=null&&(c?.({...this.hoveredLine,event:t}),this.clearHoveredLine()),F(a)?(this.setHoveredLine(this.toEventBaseProps(a)),this.placeUtility(),d?.({...this.hoveredLine,event:t})):this.placeUtility());break}case"click":{if(a==null)break;if(we(a)&&u!=null){u(a);break}if(ke(a)&&h!=null){h(a.hunkIndex,a.all||t.shiftKey?"both":a.direction,a.all||t.shiftKey?Number.POSITIVE_INFINITY:void 0);break}if(!F(a))break;H(a)&&l!=null&&l(this.toTokenEventBaseProps(a),t);const p=this.toEventBaseProps(a);s!=null&&a.numberColumn?s({...p,event:t}):r?.({...p,event:t});break}}}syncPointerListeners(e){const{__debugPointerEvents:t,lineHoverHighlight:i="disabled",onLineClick:n,onLineNumberClick:a,onLineEnter:r,onLineLeave:s,onTokenClick:d,onTokenEnter:c,onTokenLeave:l,onHunkExpand:o,onMergeConflictActionClick:f,enableGutterUtility:h=!1,enableLineSelection:u=!1,onGutterUtilityClick:p}=this.options,m=p!=null,y=i!=="disabled"||n!=null||a!=null||r!=null||s!=null||d!=null||c!=null||l!=null||o!=null||f!=null||h||u||m;y&&!this.hasPointerListeners?(e.addEventListener("click",this.handlePointerClick),e.addEventListener("pointerdown",this.handlePointerDown),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("pointerleave",this.handlePointerLeave),this.hasPointerListeners=!0,w(t,"click","FileDiff.DEBUG.attachEventListeners: Attaching click events for:",(()=>{const v=[];return(t==="both"||t==="click")&&(n!=null&&v.push("onLineClick"),a!=null&&v.push("onLineNumberClick"),o!=null&&v.push("expandable hunk separators"),f!=null&&v.push("merge conflict actions")),v})()),w(t,"move","FileDiff.DEBUG.attachEventListeners: Attaching pointer move event"),w(t,"move","FileDiff.DEBUG.attachEventListeners: Attaching pointer leave event")):!y&&this.hasPointerListeners&&(e.removeEventListener("click",this.handlePointerClick),e.removeEventListener("pointerdown",this.handlePointerDown),e.removeEventListener("pointermove",this.handlePointerMove),e.removeEventListener("pointerleave",this.handlePointerLeave),this.hasPointerListeners=!1);const b=this.pointerSession.mode==="selecting"||this.pointerSession.mode==="pendingSingleLineUnselect",x=this.pointerSession.mode==="gutterSelecting";(!u&&b||!m&&x)&&(this.clearPointerSession(),this.detachDocumentPointerListeners(),this.selectionAnchor=void 0,this.clearPendingSingleLineState())}updateInteractiveLineAttributes(){if(this.pre==null)return;const{onLineClick:e,onLineNumberClick:t,enableLineSelection:i=!1}=this.options,n=e!=null,a=t!=null||i;n&&!this.interactiveLinesAttr?(this.pre.setAttribute("data-interactive-lines",""),this.interactiveLinesAttr=!0):!n&&this.interactiveLinesAttr&&(this.pre.removeAttribute("data-interactive-lines"),this.interactiveLinesAttr=!1),a&&!this.interactiveLineNumbersAttr?(this.pre.setAttribute("data-interactive-line-numbers",""),this.interactiveLineNumbersAttr=!0):!a&&this.interactiveLineNumbersAttr&&(this.pre.removeAttribute("data-interactive-line-numbers"),this.interactiveLineNumbersAttr=!1)}handlePointerDown=e=>{if(e.pointerType==="mouse"&&e.button!==0||this.pre==null||this.pointerSession.mode!=="idle")return;const t=e.composedPath();R(t)&&this.options.onGutterUtilityClick!=null?this.startGutterSelectionFromPointerDown(e):(e.pointerType!=="mouse"&&this.revealUtilityFromGutterPath(t),this.startLineSelectionFromPointerDown(e))};startLineSelectionFromPointerDown(e){const{enableLineSelection:t=!1}=this.options;if(!t)return;const i=this.resolveSelectionInfo(e,{source:"event-path",requireNumberColumn:!0});if(i==null)return;const{pre:n}=this;if(n==null)return;const{lineNumber:a,eventSide:r,lineIndex:s}=i;if(e.shiftKey&&this.selectedRange!=null){const d=this.getIndexesFromSelection(this.selectedRange,n.getAttribute("data-diff-type")==="split");if(d==null)return;const c=d.start<=d.end?s>=d.start:s<=d.end;this.selectionAnchor={lineNumber:c?this.selectedRange.start:this.selectedRange.end,side:c?this.selectedRange.side:this.selectedRange.endSide??this.selectedRange.side},this.updateSelection(a,r,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.pointerSession={mode:"selecting",pointerId:e.pointerId},this.attachDocumentPointerListeners();return}if(this.selectedRange?.start===a&&this.selectedRange?.end===a){const d={lineNumber:a,side:r};this.selectionAnchor=d,this.pointerSession={mode:"pendingSingleLineUnselect",pointerId:e.pointerId,anchor:d,pending:d},this.attachDocumentPointerListeners();return}this.options.controlledSelection===!0?this.proposedSelectedRange=null:this.selectedRange=null,this.placeUtility(),this.selectionAnchor={lineNumber:a,side:r},this.updateSelection(a,r,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.pointerSession={mode:"selecting",pointerId:e.pointerId},this.attachDocumentPointerListeners()}startGutterSelectionFromPointerDown(e){const{onGutterUtilityClick:t}=this.options;if(t==null)return;const i=this.currentSelectionEnds(),n=i?.bottom??this.resolveSelectionPoint(e,{source:"event-path",excludeUtility:!1}),a=i?.top??n;n==null||a==null||(e.preventDefault(),e.stopPropagation(),this.pointerSession={mode:"gutterSelecting",pointerId:e.pointerId,anchor:a,current:n},this.selectionAnchor={lineNumber:a.lineNumber,side:a.side},this.updateSelection(n.lineNumber,n.side,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.attachDocumentPointerListeners())}handleDocumentPointerMove=e=>{switch(this.pointerSession.mode){case"idle":return;case"gutterSelecting":{if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault();const t=this.resolveSelectionPoint(e,{source:"coordinates-first"});if(t==null)return;this.pointerSession.current=t,this.updateSelection(t.lineNumber,t.side);return}case"selecting":{if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault();const t=this.resolveSelectionInfo(e,{source:"coordinates-first",requireNumberColumn:!1});if(t==null||this.selectionAnchor==null)return;this.updateSelection(t.lineNumber,t.eventSide);return}case"pendingSingleLineUnselect":{if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault();const t=this.resolveSelectionInfo(e,{source:"coordinates-first",requireNumberColumn:!1});if(t==null||this.selectionAnchor==null)return;const i={lineNumber:t.lineNumber,side:t.eventSide};if(xe(this.pointerSession.pending,i))return;this.updateSelection(t.lineNumber,t.eventSide,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.notifySelectionChangeDelta(),this.pointerSession={mode:"selecting",pointerId:e.pointerId};return}}};handleDocumentPointerUp=e=>{const{onGutterUtilityClick:t}=this.options;switch(this.pointerSession.mode){case"idle":return;case"gutterSelecting":{const{pointerSession:i}=this;if(e.pointerId!==i.pointerId)return;e.preventDefault();const n=this.resolveSelectionPoint(e,{source:"coordinates-first"});n!=null&&(i.current=n,this.updateSelection(n.lineNumber,n.side));const a=this.buildSelectedLineRange(i.anchor,i.current);t?.({...a}),this.selectionAnchor=void 0,this.notifySelectionEnd(a),this.notifySelectionCommitted(a),this.clearProposedSelection(),this.clearPointerSession(),this.detachDocumentPointerListeners();return}case"pendingSingleLineUnselect":if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault(),this.updateSelection(null,void 0,!1),this.selectionAnchor=void 0,this.clearPendingSingleLineState(),this.detachDocumentPointerListeners(),this.notifySelectionEnd(this.getCurrentSelectionRange()),this.notifySelectionCommitted(this.getCurrentSelectionRange()),this.clearProposedSelection();return;case"selecting":if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault(),this.selectionAnchor=void 0,this.detachDocumentPointerListeners(),this.clearPointerSession(),this.notifySelectionEnd(this.getCurrentSelectionRange()),this.notifySelectionCommitted(this.getCurrentSelectionRange()),this.clearProposedSelection()}};handleDocumentPointerCancel=e=>{switch(this.pointerSession.mode){case"idle":return;case"gutterSelecting":case"selecting":case"pendingSingleLineUnselect":if("pointerId"in this.pointerSession&&e.pointerId!==this.pointerSession.pointerId)return;this.selectionAnchor=void 0,this.clearProposedSelection(),this.clearPendingSingleLineState(),this.clearPointerSession(),this.detachDocumentPointerListeners()}};clearHoveredLine(){this.hoveredLine!=null&&(this.hoveredLine.lineElement.removeAttribute("data-hovered"),this.hoveredLine.numberElement.removeAttribute("data-hovered"),this.hoveredLine=void 0)}setHoveredLine(e){const{lineHoverHighlight:t="disabled"}=this.options;this.hoveredLine!=null&&this.clearHoveredLine(),this.hoveredLine=e,t!=="disabled"&&((t==="both"||t==="line")&&this.hoveredLine.lineElement.setAttribute("data-hovered",""),(t==="both"||t==="number")&&this.hoveredLine.numberElement.setAttribute("data-hovered",""))}clearHoveredToken(){this.hoveredToken!=null&&(this.hoveredToken=void 0)}setHoveredToken(e){this.hoveredToken!=null&&this.clearHoveredToken(),this.hoveredToken=e}ensureGutterUtilityNode(e){if(this.gutterUtilityContainer==null&&(this.gutterUtilityContainer=document.createElement("div"),this.gutterUtilityContainer.setAttribute("data-gutter-utility-slot","")),e)this.gutterUtilityButton!=null&&(this.gutterUtilityButton.remove(),this.gutterUtilityButton=void 0),this.gutterUtilitySlot==null&&(this.gutterUtilitySlot=document.createElement("slot"),this.gutterUtilitySlot.name="gutter-utility-slot"),this.gutterUtilitySlot.parentNode!==this.gutterUtilityContainer&&this.gutterUtilityContainer.replaceChildren(this.gutterUtilitySlot);else{if(this.gutterUtilitySlot?.remove(),this.gutterUtilitySlot=void 0,this.gutterUtilityButton==null){const t=document.createElement("div");t.innerHTML=ge(ye());const i=t.firstElementChild;if(!(i instanceof HTMLButtonElement))throw new Error("InteractionManager.ensureGutterUtilityNode: Node element should be a button");i.remove(),this.gutterUtilityButton=i}this.gutterUtilityButton.parentNode!==this.gutterUtilityContainer&&this.gutterUtilityContainer.replaceChildren(this.gutterUtilityButton)}}revealUtilityFromGutterPath(e){if(this.placeUtilityFromSelection())return;const t=this.resolvePointerTarget(e);I(t)&&t.numberColumn&&this.showUtilityOnLine(this.toEventBaseProps(t))}placeUtility(){if(!this.placeUtilityFromSelection()){if(this.hoveredLine!=null){this.showUtilityOnLine(this.hoveredLine);return}this.hideUtility()}}placeUtilityFromSelection(){const e=this.currentSelectionEnds();if(e==null)return!1;const t=this.targetForSelectionPoint(e.bottom);return t==null?this.hideUtility():this.showUtilityOnLine(this.toEventBaseProps(t)),!0}showUtilityOnLine(e){this.gutterUtilityContainer!=null&&(this.gutterUtilityLine=e,e.numberElement.appendChild(this.gutterUtilityContainer))}hideUtility(){this.gutterUtilityContainer?.remove(),this.gutterUtilityLine=void 0}currentSelectionEnds(){const e=this.getCurrentSelectionRange();return e==null?void 0:this.selectionEnds(e)}selectionEnds(e){const t={lineNumber:e.start,side:e.side},i={lineNumber:e.end,side:e.endSide??e.side},n=this.selectionPointRowIndex(t),a=this.selectionPointRowIndex(i);if(!(n==null||a==null))return n>a?{top:i,bottom:t}:{top:t,bottom:i}}selectionPointRowIndex(e){const t=this.getLineIndex(e.lineNumber,e.side);if(t!=null)return this.isSplitDiff()?t[1]:t[0]}targetForSelectionPoint(e){if(this.pre==null)return;const t=this.getLineIndex(e.lineNumber,e.side);if(t==null)return;const i=this.mode==="diff"?`${t[0]},${t[1]}`:`${t[0]}`,n=this.pre.querySelectorAll(`[data-column-number="${e.lineNumber}"][data-line-index="${i}"]`);for(const a of n){if(!(a instanceof HTMLElement))continue;const r=this.resolvePointerTarget(P(a));if(I(r)&&!(this.mode==="diff"&&e.side!=null&&r.side!==e.side))return r}}attachDocumentPointerListeners(){this.hasDocumentPointerListeners||(document.addEventListener("pointermove",this.handleDocumentPointerMove),document.addEventListener("pointerup",this.handleDocumentPointerUp),document.addEventListener("pointercancel",this.handleDocumentPointerCancel),this.hasDocumentPointerListeners=!0)}detachDocumentPointerListeners(){this.hasDocumentPointerListeners&&(document.removeEventListener("pointermove",this.handleDocumentPointerMove),document.removeEventListener("pointerup",this.handleDocumentPointerUp),document.removeEventListener("pointercancel",this.handleDocumentPointerCancel),this.hasDocumentPointerListeners=!1)}clearPointerSession(){this.pointerSession={mode:"idle"}}clearPendingSingleLineState(){this.pointerSession.mode==="pendingSingleLineUnselect"&&(this.pointerSession={mode:"idle"})}selectionInfoFromPath(e,t){const i=this.resolvePointerTarget(e);if(I(i)&&!(t&&!i.numberColumn)&&i.splitLineIndex!=null)return{lineIndex:i.splitLineIndex,lineNumber:i.lineNumber,eventSide:this.mode==="diff"?i.side:void 0}}resolveSelectionInfo(e,t){const i=this.resolveSelectionPath(e,t);return i!=null?this.selectionInfoFromPath(i,t.requireNumberColumn):void 0}selectionPointFromPath(e){const t=this.resolvePointerTarget(e);if(I(t))return{lineNumber:t.lineNumber,side:this.mode==="diff"?t.side:void 0}}resolveSelectionPoint(e,t){const i=this.resolveSelectionPath(e,t);return i!=null?this.selectionPointFromPath(i):void 0}resolveSelectionPath(e,t){const i=t.excludeUtility!==!1;switch(t.source){case"event-path":return this.pathFromEventPath(e.composedPath(),i);case"coordinates-first":{const n=this.pathFromCoordinates(e,i);return n!==void 0?n??void 0:this.pathFromEventPath(e.composedPath(),i)}}}pathFromCoordinates(e,t){const i=this.hitTest(e);if(i!==void 0)return i===null?null:this.pathFromElement(i,t)??null}pathFromEventPath(e,t){if(!(t&&R(e))){for(const i of e)if(i instanceof Element)return this.pathFromElement(i,t)}}pathFromElement(e,t){const i=P(e);if(t&&R(i))return;const n=Ee(e);return n!=null?P(n):this.pathFromAnnotationSlot(e)}pathFromAnnotationSlot(e){const t=Ae(e)?.previousElementSibling;if(t instanceof HTMLElement&&(t.hasAttribute("data-line")||t.hasAttribute("data-column-number")))return P(t);const i=Ne(Ce(e));if(i==null)return;const n=this.targetForSelectionPoint(i);return n!=null?P(n.lineElement):void 0}hitTest(e){if(!Number.isFinite(e.clientX)||!Number.isFinite(e.clientY))return;const t=this.pre?.getRootNode(),i=K(t)?t:K(document)?document:void 0;if(i!=null)return i.elementFromPoint(e.clientX,e.clientY)}getLineIndex(e,t){const{getLineIndex:i}=this.options;return i!=null?i(e,t):[e-1,e-1]}getCurrentSelectionRange(){return this.proposedSelectedRange!==void 0?this.proposedSelectedRange:this.selectedRange}clearProposedSelection(){this.proposedSelectedRange=void 0}updateSelection(e,t,i=!0){const n=this.getCurrentSelectionRange();let a;if(e==null)a=null;else{const r=this.selectionAnchor?.side??t,s=this.selectionAnchor?.lineNumber??e;a=this.buildSelectionRange(s,e,r,t)}B(n??void 0,a??void 0)||(this.selectedRangeHighlightSide=void 0,this.selectedRangeLineNumberOnly=!1,this.options.controlledSelection===!0?this.proposedSelectedRange=a:(this.selectedRange=a,ve(this.renderSelection)),this.placeUtility(),i&&this.notifySelectionChangeDelta())}getIndexesFromSelection(e,t){if(this.pre==null)return;const i=this.getLineIndex(e.start,e.side),n=this.getLineIndex(e.end,e.endSide??e.side);return i!=null&&n!=null?{start:t?i[1]:i[0],end:t?n[1]:n[0]}:void 0}getSelectionRenderState(){return{selectedLines:{range:this.selectedRange,highlightSide:this.selectedRangeHighlightSide,lineNumberOnly:this.selectedRangeLineNumberOnly},editorActiveLine:{range:this.editorActiveLine==null?null:{start:this.editorActiveLine,end:this.editorActiveLine,side:this.editorActiveLineSide},highlightSide:this.editorActiveLineSide,lineNumberOnly:this.editorLineNumberOnly}}}resolveLineRenderRange(e,t,i){if(e.range==null)return;const n=this.getIndexesFromSelection(e.range,t);if(n==null)throw console.error({rowRange:n,range:e.range}),new Error(`InteractionManager.renderSelection: No valid ${i} rowRange`);return n}getLineRenderColumns(e,t,i,n){if(this.pre==null||t==null&&n==null)return[];const{children:a}=this.pre;if(a.length>2)throw console.error(a),new Error("InteractionManager.renderSelection: Somehow there are more than 2 code elements...");const r=[];for(const s of a){const d=s.hasAttribute("data-deletions")?"deletions":s.hasAttribute("data-additions")?"additions":void 0,c=e!=null&&t!=null&&(e.highlightSide==null||d==null||e.highlightSide===d),l=i!=null&&n!=null&&(i.highlightSide==null||d==null||i.highlightSide===d);if(!c&&!l)continue;const[o,f]=s.children;if(!(o instanceof HTMLElement)||!(f instanceof HTMLElement))throw new Error("InteractionManager.renderSelection: missing gutter or content element");if(f.children.length!==o.children.length)throw new Error("InteractionManager.renderSelection: gutter and content children dont match, something is wrong");r.push({content:f,gutter:o,renderEditorActiveLine:l,renderSelectedLines:c})}return r}renderSelection=()=>{G(this.renderSelection);const e=this.getSelectionRenderState();if(this.pre==null)return;const{editorActiveLine:t,selectedLines:i}=e,n=!Y(this.renderedSelectedLinesState,i),a=!Y(this.renderedEditorActiveLineState,t);if(!n&&!a)return;n&&(this.renderedSelectedLinesState=void 0),a&&(this.renderedEditorActiveLineState=void 0);const r=this.pre.getAttribute("data-diff-type")==="split",s=n?this.resolveLineRenderRange(i,r,"selected-lines"):void 0,d=a?this.resolveLineRenderRange(t,r,"editor-active-line"):void 0,c=this.getLineRenderColumns(n?i:void 0,s,a?t:void 0,d),l=i.range==null||c.some(m=>m.renderSelectedLines),o=t.range==null||c.some(m=>m.renderEditorActiveLine);if(n)for(const m of this.pre.querySelectorAll("[data-selected-line]"))m.removeAttribute("data-selected-line");if(a)for(const m of this.pre.querySelectorAll("[data-editor-active-line]"))m.removeAttribute("data-editor-active-line");const f=s==null?void 0:Math.min(s.start,s.end),h=s==null?void 0:Math.max(s.start,s.end),u=f===h,p=d?.start;for(const m of c){const{content:y,gutter:b,renderEditorActiveLine:x,renderSelectedLines:v}=m,N=Math.max(v?h??-1/0:-1/0,x?p??-1/0:-1/0),D=y.children.length;for(let T=0;T<D;T++){const S=y.children[T],M=b.children[T];if(!(S instanceof HTMLElement)||!(M instanceof HTMLElement))continue;const k=this.parseLineIndex(S,r);if((k??0)>N)break;if(k!=null){if(v&&f!=null&&h!=null&&k>=f&&k<=h){let E=u?"single":k===f?"first":k===h?"last":"";M.setAttribute("data-selected-line",E),i.lineNumberOnly||(S.setAttribute("data-selected-line",E),M.nextSibling instanceof HTMLElement&&S.nextSibling instanceof HTMLElement&&(S.nextSibling.hasAttribute("data-line-annotation")||S.nextSibling.hasAttribute("data-merge-conflict-actions"))&&(u?(E="last",S.setAttribute("data-selected-line","first")):k===f?E="":k===h&&S.setAttribute("data-selected-line",""),S.nextSibling.setAttribute("data-selected-line",E),M.nextSibling.setAttribute("data-selected-line",E)))}x&&k===p&&(M.setAttribute("data-editor-active-line",""),t.lineNumberOnly||S.setAttribute("data-editor-active-line",""))}}}n&&l&&(this.renderedSelectedLinesState=i),a&&o&&(this.renderedEditorActiveLineState=t)};notifySelectionCommitted(e){this.options.onLineSelected?.(e)}notifySelectionChangeDelta(){this.options.onLineSelectionChange?.(this.getCurrentSelectionRange()??null)}notifySelectionStart(e){this.options.onLineSelectionStart?.(e)}notifySelectionEnd(e){this.options.onLineSelectionEnd?.(e)}toEventBaseProps(e){return this.mode==="file"?{type:"line",lineElement:e.lineElement,lineNumber:e.lineNumber,numberColumn:e.numberColumn,numberElement:e.numberElement}:{type:"diff-line",annotationSide:e.side,lineType:e.lineType,lineElement:e.lineElement,numberElement:e.numberElement,lineNumber:e.lineNumber,numberColumn:e.numberColumn}}toTokenEventBaseProps({lineCharEnd:e,lineCharStart:t,lineNumber:i,side:n,tokenElement:a,tokenText:r}){return this.mode==="file"?{type:"token",lineCharEnd:e,lineCharStart:t,lineNumber:i,tokenElement:a,tokenText:r}:{type:"token",lineCharEnd:e,lineCharStart:t,lineNumber:i,side:n,tokenElement:a,tokenText:r}}buildSelectedLineRange(e,t){return this.buildSelectionRange(e.lineNumber,t.lineNumber,e.side,t.side)}buildSelectionRange(e,t,i,n){return{start:e,end:t,...i!=null?{side:i}:{},...i!==n&&n!=null?{endSide:n}:{}}}resolvePointerTarget(e){let t=!1,i,n,a,r,s,d,c,l,o,f;for(const u of e){if(!(u instanceof HTMLElement))continue;if(f==null&&u.hasAttribute("data-merge-conflict-action")){const b=u.getAttribute("data-merge-conflict-action")??void 0,x=u.getAttribute("data-merge-conflict-conflict-index")??void 0,v=x!=null?Number.parseInt(x,10):NaN;Le(b)&&Number.isFinite(v)&&(f={kind:"merge-conflict-action",resolution:b,conflictIndex:v})}if(d==null&&u.hasAttribute("data-char")){d=u;const b=u.getAttribute("data-char");if(b!=null){const x=Number.parseInt(b,10);if(!Number.isNaN(x)){const v=u.textContent??"",N=x+v.length;(v.trim()!==""||this.options.enableTokenInteractionsOnWhitespace===!0)&&(c={tokenElement:d,lineCharStart:x,lineCharEnd:N,tokenText:v});continue}}}const p=s==null?u.getAttribute("data-column-number")??void 0:void 0;if(p!=null){s=u,o=Number.parseInt(p,10),t=!0,i=j(u),r=u.getAttribute("data-line-index")??void 0;continue}const m=a==null?u.getAttribute("data-line")??void 0:void 0;if(m!=null){a=u,o=Number.parseInt(m,10),i=j(u),r=u.getAttribute("data-line-index")??void 0;continue}if(l==null&&(u.hasAttribute("data-expand-button")||u.hasAttribute("data-unmodified-lines"))){l={hunkIndex:void 0,direction:u.hasAttribute("data-expand-up")?"up":u.hasAttribute("data-expand-down")?"down":"both",all:u.hasAttribute("data-expand-all-button")};continue}const y=l!=null?u.getAttribute("data-expand-index")??void 0:void 0;if(l!=null&&y!=null){const b=Number.parseInt(y,10);Number.isNaN(b)||(l.hunkIndex=b);continue}if(n==null&&u.hasAttribute("data-code")){n=u;break}}if(f!=null)return f;if(l?.hunkIndex!=null)return{type:"line-info",hunkIndex:l.hunkIndex,direction:l.direction,all:l.all};if(a??=r!=null?W(n,`[data-line][data-line-index="${r}"]`):void 0,s??=r!=null?W(n,`[data-column-number][data-line-index="${r}"]`):void 0,n==null||a==null||s==null||i==null||o==null||Number.isNaN(o))return;const h=this.parseLineIndex(a,this.isSplitDiff());return c!=null?this.mode==="file"?{kind:"token",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:void 0,splitLineIndex:h,...c}:{kind:"token",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:X(i,n),splitLineIndex:h,...c}:this.mode==="file"?{kind:"line",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:void 0,splitLineIndex:h}:{kind:"line",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:X(i,n),splitLineIndex:h}}isSplitDiff(){return this.pre?.getAttribute("data-diff-type")==="split"}parseLineIndex(e,t){const i=(e.getAttribute("data-line-index")??"").split(",").map(n=>Number.parseInt(n,10)).filter(n=>!Number.isNaN(n));if(t&&i.length===2)return i[1];if(!t)return i[0]}};function it({enableTokenInteractionsOnWhitespace:e,enableGutterUtility:t,lineHoverHighlight:i,onGutterUtilityClick:n,onLineClick:a,onLineEnter:r,onLineLeave:s,onLineNumberClick:d,onTokenClick:c,onTokenEnter:l,onTokenLeave:o,renderGutterUtility:f,__debugPointerEvents:h,enableLineSelection:u,controlledSelection:p,onLineSelected:m,onLineSelectionStart:y,onLineSelectionChange:b,onLineSelectionEnd:x},v,N,D){return{enableTokenInteractionsOnWhitespace:e,enableGutterUtility:Se({enableGutterUtility:t,renderGutterUtility:f,onGutterUtilityClick:n}),usesCustomGutterUtility:f!=null,lineHoverHighlight:i,onGutterUtilityClick:n,onHunkExpand:v,onMergeConflictActionClick:D,onLineClick:a,onLineEnter:r,onLineLeave:s,onLineNumberClick:d,onTokenClick:c,onTokenEnter:l,onTokenLeave:o,__debugPointerEvents:h,enableLineSelection:u,controlledSelection:p,onLineSelected:m,onLineSelectionStart:y,onLineSelectionChange:b,onLineSelectionEnd:x,getLineIndex:N}}function Se({enableGutterUtility:e,renderGutterUtility:t,onGutterUtilityClick:i}){if(i!=null&&t!=null)throw new Error("Cannot use both 'onGutterUtilityClick' and 'renderGutterUtility'. Use only one gutter utility API.");return e??!1}function I(e){return e!=null&&"kind"in e&&e.kind==="line"}function H(e){return e!=null&&"kind"in e&&e.kind==="token"}function F(e){return I(e)||H(e)}function ke(e){return"type"in e&&e.type==="line-info"}function we(e){return"kind"in e&&e.kind==="merge-conflict-action"}function Le(e){return e==="current"||e==="incoming"||e==="both"}function W(e,t){const i=e?.querySelector(t);return i instanceof HTMLElement?i:void 0}function P(e){const t=[];let i=e;for(;i!=null;)t.push(i),i=i.parentNode;return t}function Ee(e){const t=e.closest("[data-line], [data-column-number]");if(t instanceof HTMLElement)return t;const i=e.closest('[data-line-annotation], [data-gutter-buffer="annotation"]');if(!(i instanceof HTMLElement))return;const n=i.previousElementSibling;return n instanceof HTMLElement&&(n.hasAttribute("data-line")||n.hasAttribute("data-column-number"))?n:void 0}function Ae(e){const t=e.closest('[slot^="annotation-"]'),i=(t instanceof HTMLElement&&t.assignedSlot!=null?t.assignedSlot:e.tagName==="SLOT"?e:void 0)?.closest("[data-line-annotation]");return i instanceof HTMLElement?i:void 0}function Ce(e){const t=e.closest('[slot^="annotation-"]');if(t instanceof HTMLElement)return t.getAttribute("slot")??void 0;if(e instanceof HTMLElement){const i=e.getAttribute("name")??void 0;return i!=null&&i.startsWith("annotation-")?i:void 0}}function Ne(e){if(e==null)return;const t=/^annotation-(?:(additions|deletions)-)?(\d+)$/.exec(e);if(t==null)return;const i=Number.parseInt(t[2],10);if(!(!Number.isFinite(i)||i<=0))return{lineNumber:i,side:t[1]}}function K(e){return e!=null&&typeof e.elementFromPoint=="function"}function Me(e,t){return e===t||B(e??void 0,t??void 0)}function Y(e,t){return e?.highlightSide===t.highlightSide&&e?.lineNumberOnly===t.lineNumberOnly&&Me(e?.range??null,t.range)}function X(e,t){switch(e){case"change-deletion":return"deletions";case"change-addition":return"additions";default:return t.hasAttribute("data-deletions")?"deletions":"additions"}}function j(e){const t=e.getAttribute("data-line-type");if(t!=null)switch(t){case"change-deletion":case"change-addition":case"context":case"context-expanded":return t;default:return}}function w(e="none",t,...i){switch(e){case"none":return;case"both":break;case"click":if(t!=="click")return;break;case"move":if(t!=="move")return}console.log(...i)}var nt=class L{static resizeObserver;static managersByElement=new Map;static getResizeObserver(){const t=L.resizeObserver??new ResizeObserver(L.handleSharedResizeEntries);return L.resizeObserver=t,t}static handleSharedResizeEntries(t){const i=new Map;for(const n of t){const a=L.managersByElement.get(n.target);if(a==null)continue;const r=i.get(a);r==null?i.set(a,[n]):r.push(n)}for(const[n,a]of i)n.handleResizeEntries(a)}observedNodes=new Map;setup(t,{disableAnnotations:i,columnVariables:n="apply"}){const a=new Set,r=n==="apply";let s=0;const d=new Map(this.observedNodes);this.observedNodes.clear();for(const c of t.children){if(s===2)break;const l=(()=>{if(c instanceof HTMLElement&&c.tagName==="CODE")return c})();if(l==null)continue;s++;let o=d.get(l);if(o!=null&&o.type!=="code")throw new Error("ResizeManager.setup: somehow a code node is being used for an annotation, should be impossible");let f=l.firstElementChild;f instanceof HTMLElement||(f=null),o!=null?(this.observedNodes.set(l,o),d.delete(l),o.numberElement!==f?(o.numberElement!=null&&(this.unobserve(o.numberElement),d.delete(o.numberElement)),f!=null&&(this.observe(f),d.delete(f),this.observedNodes.set(f,o)),o.numberElement=f,o.numberWidth=0):o.numberElement!=null?(d.delete(o.numberElement),this.observedNodes.set(o.numberElement,o)):o.numberWidth=0,Te(o,r)):(o={type:"code",codeElement:l,numberElement:f,codeWidth:"auto",numberWidth:0,applyColumnVariables:r},this.observedNodes.set(l,o),this.observe(l),f!=null&&(this.observedNodes.set(f,o),this.observe(f)))}if(s>1&&!i){const c=t.querySelectorAll('[data-line-annotation*=","]'),l=new Map;for(const o of c){if(!(o instanceof HTMLElement))continue;const f=o.getAttribute("data-line-annotation")??"";if(!/^-?\d+,-?\d+$/.test(f)){console.error("DiffFileRenderer.setupResizeObserver: Invalid element or annotation",{lineAnnotation:f,element:o});continue}let h=l.get(f);h==null&&(h=[],l.set(f,h)),h.push(o)}for(const[o,f]of l){if(f.length!==2){console.error("DiffFileRenderer.setupResizeObserver: Bad Pair",o,f);continue}const[h,u]=f,p=h.firstElementChild,m=u.firstElementChild;if(!(h instanceof HTMLElement)||!(u instanceof HTMLElement)||!(p instanceof HTMLElement)||!(m instanceof HTMLElement))continue;let y=d.get(p);if(y!=null){this.observedNodes.set(p,y),this.observedNodes.set(m,y),d.delete(p),d.delete(m);continue}const b=p.getBoundingClientRect().height,x=m.getBoundingClientRect().height;y={type:"annotations",column1:{container:h,child:p,childHeight:b},column2:{container:u,child:m,childHeight:x},currentHeight:"auto"},a.add({child1:p,child2:m,item:y,newHeight:Math.max(b,x)})}for(const o of a)this.applyNewHeight(o.item,o.newHeight),this.observedNodes.set(o.child1,o.item),this.observedNodes.set(o.child2,o.item),this.observe(o.child1),this.observe(o.child2);a.clear()}for(const[c,l]of d)this.unobserve(c),l.type==="code"?Re(l):Ue(l);d.clear()}cleanUp(){for(const t of this.observedNodes.keys())this.unobserve(t);this.observedNodes.clear()}observe(t){const{managersByElement:i}=L,n=i.get(t);if(n!==this){if(n!=null&&n!==this)throw new Error("ResizeManager.observe: element is already owned by another ResizeManager");i.set(t,this),L.getResizeObserver().observe(t)}}unobserve(t){const{managersByElement:i,resizeObserver:n}=L,a=i.get(t);if(a!=null){if(a!==this)throw new Error("ResizeManager.unobserve: element is owned by another ResizeManager");i.delete(t),n?.unobserve(t),n!=null&&i.size===0&&(n.disconnect(),L.resizeObserver=void 0)}}handleResizeEntries(t){const i=new Map,n=new Set;for(const a of t){const{target:r,borderBoxSize:s,contentBoxSize:d}=a;if(!(r instanceof HTMLElement)){console.error("ResizeManager.handleResizeEntries: Invalid element for ResizeObserver",a);continue}const c=this.observedNodes.get(r);if(c==null){console.error("ResizeManager.handleResizeEntries: Not a valid observed node",a);continue}if(c.type==="annotations"){const l=(()=>{if(r===c.column1.child)return c.column1;if(r===c.column2.child)return c.column2})();if(l==null){console.error("ResizeManager.handleResizeEntries: Couldn't find a column for",{item:c,target:r});continue}l.childHeight=s[0].blockSize,n.add(c)}else if(c.type==="code"){const l=i.get(c)??{},o=d[0].inlineSize;r===c.codeElement?l.codeInlineSize=o:r===c.numberElement&&(l.numberInlineSize=o),i.set(c,l)}}this.applyAnnotationUpdates(n),n.clear(),this.applyColumnUpdates(i),i.clear()}applyAnnotationUpdates(t){for(const i of t)this.applyNewHeight(i,Math.max(i.column1.childHeight,i.column2.childHeight))}applyColumnUpdates=t=>{for(const[i,n]of t){const a=n.codeInlineSize!=null?Pe(n.codeInlineSize):i.codeWidth,r=n.numberInlineSize!=null?Ie(n.numberInlineSize):i.numberWidth,s=a!==i.codeWidth,d=r!==i.numberWidth;!s&&!d||(i.codeWidth=a,i.numberWidth=r,i.applyColumnVariables&&te(i,{codeWidthChanged:s,numberWidthChanged:d}))}};applyNewHeight(t,i){i!==t.currentHeight&&(t.currentHeight=Math.max(i,0),t.column1.container.style.setProperty("--diffs-annotation-min-height",`${t.currentHeight}px`),t.column2.container.style.setProperty("--diffs-annotation-min-height",`${t.currentHeight}px`))}};function Pe(e){const t=Math.max(Math.floor(e),0);return t===0?"auto":t}function Ie(e){return Math.max(Math.ceil(e),0)}function Te(e,t){e.applyColumnVariables!==t&&(e.applyColumnVariables=t,t?te(e,{codeWidthChanged:!0,numberWidthChanged:!0}):ie(e))}function te(e,{codeWidthChanged:t,numberWidthChanged:i}){const{codeElement:n,codeWidth:a,numberWidth:r}=e;if(t&&n.style.setProperty("--diffs-column-width",`${typeof a=="number"?`${a}px`:"auto"}`),i&&n.style.setProperty("--diffs-column-number-width",`${r===0?"auto":`${r}px`}`),t||i&&a!=="auto"){const s=typeof a=="number"?Math.max(a-r,0):0;n.style.setProperty("--diffs-column-content-width",`${s>0?`${s}px`:"auto"}`)}}function ie(e){e.codeElement.style.removeProperty("--diffs-column-content-width"),e.codeElement.style.removeProperty("--diffs-column-number-width"),e.codeElement.style.removeProperty("--diffs-column-width")}function Re(e){e.codeElement.isConnected&&ie(e)}function Ue(e){e.column1.container.isConnected&&e.column1.container.style.removeProperty("--diffs-annotation-min-height"),e.column2.container.isConnected&&e.column2.container.style.removeProperty("--diffs-annotation-min-height")}function at(e,t){return e==null||t==null?e===t:e.startingLine===t.startingLine&&e.totalLines===t.totalLines&&e.bufferBefore===t.bufferBefore&&e.bufferAfter===t.bufferAfter}function rt(e){return g({tagName:"div",children:[g({tagName:"div",children:e.annotations?.map(t=>g({tagName:"slot",properties:{name:t}})),properties:{"data-annotation-content":""}})],properties:{"data-line-annotation":`${e.hunkIndex},${e.lineIndex}`}})}function He(e){switch(e){case"file":return"diffs-icon-file-code";case"change":return"diffs-icon-symbol-modified";case"new":return"diffs-icon-symbol-added";case"deleted":return"diffs-icon-symbol-deleted";case"rename-pure":case"rename-changed":return"diffs-icon-symbol-moved"}}function ot({fileOrDiff:e,mode:t,stickyHeader:i}){const n="type"in e?e:void 0,a={"data-diffs-header":t,"data-change-type":n?.type,"data-sticky":i?"":void 0};return g({tagName:"div",children:[t==="custom"?g({tagName:"slot",properties:{name:re}}):ze({name:e.name,prevName:"prevName"in e?e.prevName:void 0,iconType:n?.type??"file"}),...t==="custom"?[]:[De(n)]],properties:a})}function ze({name:e,prevName:t,iconType:i}){const n=[g({tagName:"slot",properties:{name:oe}}),O({name:He(i),properties:{"data-change-icon":i}})];return t!=null&&(n.push(g({tagName:"div",children:[g({tagName:"bdi",children:[z(t)]})],properties:{"data-prev-name":""}})),n.push(O({name:"diffs-icon-arrow-right-short",properties:{"data-rename-icon":""}}))),n.push(g({tagName:"div",children:[g({tagName:"bdi",children:[z(e)]})],properties:{"data-title":""}})),n.push(g({tagName:"slot",properties:{name:se}})),g({tagName:"div",children:n,properties:{"data-header-content":""}})}function De(e){const t=[];if(e!=null){let i=0,n=0;for(const a of e.hunks)i+=a.additionLines,n+=a.deletionLines;(n>0||i===0)&&t.push(g({tagName:"span",children:[z(`-${n}`)],properties:{"data-deletions-count":""}})),(i>0||n===0)&&t.push(g({tagName:"span",children:[z(`+${i}`)],properties:{"data-additions-count":""}}))}return t.push(g({tagName:"slot",properties:{name:de}})),g({tagName:"div",children:t,properties:{"data-metadata":""}})}function st(e){return g({tagName:"pre",properties:Fe(e)})}function Fe({diffIndicators:e,disableBackground:t,disableLineNumbers:i,overflow:n,split:a,totalLines:r,type:s,customProperties:d}){return{...d,"data-diff":s==="diff"?"":void 0,"data-file":s==="file"?"":void 0,"data-diff-type":s==="diff"?a?"split":"single":void 0,"data-overflow":n,"data-disable-line-numbers":i?"":void 0,"data-background":t?void 0:"","data-indicators":e==="bars"||e==="classic"?e:void 0,style:`--diffs-min-number-column-width-default:${`${r}`.length}ch;`}}function dt(e,{theme:t,preferredHighlighter:i="shiki-js"}){return{langs:Array.isArray(e)?e:[e??"text"],themes:pe(t),preferredHighlighter:i}}function lt(e){return`annotation-${"side"in e?`${e.side}-`:""}${e.lineNumber}`}function ct(e){return e.startingLine===0&&e.totalLines===1/0&&e.bufferBefore===0&&e.bufferAfter===0}const ft="-1,-1";function ut(e){return e?.some(t=>t.lineNumber===0)??!1}function ht(e){const t=e[0];return t!=null&&t.length>0?t:void 0}function mt(e){return e.startingLine===0&&e.totalLines>0}function pt(e,t){return e.endsWith(`\r
|
|
1
|
+
import{j2 as _,lx as re,ly as oe,lz as se,lA as de,lB as le,lC as ce,lD as Z,lE as fe,lF as ue,lr as he}from"./useAppFontEffects-DGlvOqP_.js";import{b as me,k as g,l as O,m as z,a as pe}from"./computeVirtualFileMetrics-C2WM6JC2.js";import{t as ge}from"./vendor-hast-util-to-html-BKBhbTDb.js";import{c as be}from"./vendor-diff-C3JhlQdm.js";const A=new Set;let C=null;function ve(e){A.add(e),C??=requestAnimationFrame(ee)}function G(e){A.delete(e)&&A.size===0&&C!=null&&(cancelAnimationFrame(C),C=null)}function ee(e){const t=new Set(A);A.clear();for(const i of t)try{i(e)}catch(n){console.error(n)}A.size>0?C=requestAnimationFrame(ee):C=null}function V(e,t,i){if(e===t||e==null||t==null)return e===t;const n=new Set(i),a=Object.keys(e),r=new Set(Object.keys(t));for(const s of a)if(r.delete(s),!n.has(s)&&(!(s in t)||e[s]!==t[s]))return!1;for(const s of Array.from(r))if(!n.has(s))return!1;return!0}function et(e,t){const i=e?.theme??_,n=t?.theme??_,a=q(e),r=q(t);return me(i,n)&&V(e,t,["theme","parseDiffOptions"])&&V(a,r)}function q(e){if(e!=null&&"parseDiffOptions"in e)return e.parseDiffOptions}function B(e,t){return e?.start===t?.start&&e?.end===t?.end&&e?.side===t?.side&&e?.endSide===t?.endSide}function ye(){return g({tagName:"button",properties:{"data-utility-button":"",type:"button"},children:[O({name:"diffs-icon-plus",properties:{"data-icon":""}})]})}function xe(e,t){return e.lineNumber===t.lineNumber&&e.side===t.side}function R(e){for(const t of e)if(t instanceof HTMLElement&&(t.hasAttribute("data-utility-button")||t.hasAttribute("data-gutter-utility-slot")||t.getAttribute("slot")==="gutter-utility-slot"||t.getAttribute("name")==="gutter-utility-slot"))return!0;return!1}var tt=class{mode;options;hoveredLine;hoveredToken;pre;gutterUtilityLine;gutterUtilityContainer;gutterUtilityButton;gutterUtilitySlot;interactiveLinesAttr=!1;interactiveLineNumbersAttr=!1;hasPointerListeners=!1;hasDocumentPointerListeners=!1;selectedRange=null;selectedRangeHighlightSide;selectedRangeLineNumberOnly=!1;editorActiveLine=null;editorActiveLineSide;editorLineNumberOnly=!1;proposedSelectedRange;renderedSelectedLinesState;renderedEditorActiveLineState;selectionAnchor;pointerSession={mode:"idle"};constructor(e,t){this.mode=e,this.options=t}setOptions(e){this.options=e}cleanUp(){this.pre?.removeEventListener("click",this.handlePointerClick),this.pre?.removeEventListener("pointerdown",this.handlePointerDown),this.pre?.removeEventListener("pointermove",this.handlePointerMove),this.pre?.removeEventListener("pointerleave",this.handlePointerLeave),this.pre?.removeAttribute("data-interactive-lines"),this.pre?.removeAttribute("data-interactive-line-numbers"),this.pre=void 0,this.gutterUtilityContainer?.remove(),this.gutterUtilityLine=void 0,this.gutterUtilityContainer=void 0,this.gutterUtilityButton=void 0,this.gutterUtilitySlot=void 0,this.clearHoveredLine(),this.clearHoveredToken(),this.detachDocumentPointerListeners(),this.clearPointerSession(),G(this.renderSelection),this.interactiveLinesAttr=!1,this.interactiveLineNumbersAttr=!1,this.hasPointerListeners=!1,this.setSelectionDirty()}setup(e){this.setSelectionDirty();const{usesCustomGutterUtility:t=!1,enableGutterUtility:i=!1}=this.options;this.pre!==e&&(this.cleanUp(),this.pre=e),i?this.ensureGutterUtilityNode(t):this.gutterUtilityContainer!=null&&(this.gutterUtilityContainer.remove(),this.gutterUtilityLine=void 0,this.gutterUtilityContainer=void 0,this.gutterUtilityButton=void 0,this.gutterUtilitySlot=void 0,this.pointerSession.mode==="gutterSelecting"&&(this.clearPointerSession(),this.detachDocumentPointerListeners())),this.syncPointerListeners(e),this.updateInteractiveLineAttributes(),this.renderSelection(),this.placeUtility()}setSelectionDirty(){this.renderedSelectedLinesState=void 0,this.renderedEditorActiveLineState=void 0}isSelectionDirty(){return this.renderedSelectedLinesState===void 0||this.renderedEditorActiveLineState===void 0}setSelection(e,t){const i=!(e===this.selectedRange||B(e??void 0,this.selectedRange??void 0)),n=t?.lineNumberOnly??!1,a=t?.activeLineSide!==this.selectedRangeHighlightSide||n!==this.selectedRangeLineNumberOnly;!this.isSelectionDirty()&&!i&&!a||(this.proposedSelectedRange=void 0,this.selectedRange=e,this.selectedRangeHighlightSide=t?.activeLineSide,this.selectedRangeLineNumberOnly=n,this.renderSelection(),this.placeUtility(),i&&t?.notify!==!1&&this.notifySelectionCommitted(e))}setEditorActiveLine(e,{lineNumberOnly:t=!1,side:i}={}){const n=e!==this.editorActiveLine,a=i!==this.editorActiveLineSide||t!==this.editorLineNumberOnly;!this.isSelectionDirty()&&!n&&!a||(this.editorActiveLine=e,this.editorActiveLineSide=i,this.editorLineNumberOnly=t,this.renderSelection())}getSelection(){return this.selectedRange}getHoveredLine=()=>{const e=this.gutterUtilityLine??this.hoveredLine;if(e!=null){if(this.mode==="diff"&&e.type==="diff-line")return{lineNumber:e.lineNumber,side:e.annotationSide};if(this.mode==="file"&&e.type==="line")return{lineNumber:e.lineNumber}}};handlePointerClick=e=>{const{onHunkExpand:t,onLineClick:i,onLineNumberClick:n,onTokenClick:a,onMergeConflictActionClick:r}=this.options;t==null&&i==null&&n==null&&r==null&&a==null||this.options.onGutterUtilityClick!=null&&R(e.composedPath())||(w(this.options.__debugPointerEvents,"click","FileDiff.DEBUG.handlePointerClick:",e),this.handlePointerEvent({eventType:"click",event:e}))};handlePointerMove=e=>{if(e.pointerType!=="mouse")return;const{lineHoverHighlight:t="disabled",onLineEnter:i,onLineLeave:n,onTokenEnter:a,onTokenLeave:r,enableGutterUtility:s=!1}=this.options;t==="disabled"&&!s&&i==null&&n==null&&a==null&&r==null||(w(this.options.__debugPointerEvents,"move","FileDiff.DEBUG.handlePointerMove:",e),this.handlePointerEvent({eventType:"move",event:e}))};handlePointerLeave=e=>{const{__debugPointerEvents:t}=this.options;if(w(t,"move","FileDiff.DEBUG.handlePointerLeave: no event"),this.hoveredLine==null&&this.hoveredToken==null){w(t,"move","FileDiff.DEBUG.handlePointerLeave: returned early, no hovered line or token");return}this.hoveredToken!=null&&(this.options.onTokenLeave?.(this.hoveredToken,e),this.clearHoveredToken()),this.hoveredLine!=null&&(this.options.onLineLeave?.({...this.hoveredLine,event:e}),this.clearHoveredLine()),this.placeUtility()};handlePointerEvent({eventType:e,event:t}){const{__debugPointerEvents:i}=this.options,n=t.composedPath();w(i,e,"FileDiff.DEBUG.handlePointerEvent:",{eventType:e,composedPath:n});const a=this.resolvePointerTarget(n);w(i,e,"FileDiff.DEBUG.handlePointerEvent: resolvePointerTarget result:",a);const{onLineClick:r,onLineNumberClick:s,onLineEnter:d,onLineLeave:c,onTokenClick:l,onTokenEnter:o,onTokenLeave:f,onHunkExpand:h,onMergeConflictActionClick:u}=this.options;switch(e){case"move":{const p=F(a)&&this.hoveredLine?.lineElement===a.lineElement;H(a)&&this.hoveredToken?.tokenElement===a.tokenElement||(this.hoveredToken!=null&&(f?.(this.hoveredToken,t),this.clearHoveredToken()),H(a)&&(this.setHoveredToken(this.toTokenEventBaseProps(a)),o?.(this.hoveredToken,t))),p||(this.hoveredLine!=null&&(c?.({...this.hoveredLine,event:t}),this.clearHoveredLine()),F(a)?(this.setHoveredLine(this.toEventBaseProps(a)),this.placeUtility(),d?.({...this.hoveredLine,event:t})):this.placeUtility());break}case"click":{if(a==null)break;if(we(a)&&u!=null){u(a);break}if(ke(a)&&h!=null){h(a.hunkIndex,a.all||t.shiftKey?"both":a.direction,a.all||t.shiftKey?Number.POSITIVE_INFINITY:void 0);break}if(!F(a))break;H(a)&&l!=null&&l(this.toTokenEventBaseProps(a),t);const p=this.toEventBaseProps(a);s!=null&&a.numberColumn?s({...p,event:t}):r?.({...p,event:t});break}}}syncPointerListeners(e){const{__debugPointerEvents:t,lineHoverHighlight:i="disabled",onLineClick:n,onLineNumberClick:a,onLineEnter:r,onLineLeave:s,onTokenClick:d,onTokenEnter:c,onTokenLeave:l,onHunkExpand:o,onMergeConflictActionClick:f,enableGutterUtility:h=!1,enableLineSelection:u=!1,onGutterUtilityClick:p}=this.options,m=p!=null,y=i!=="disabled"||n!=null||a!=null||r!=null||s!=null||d!=null||c!=null||l!=null||o!=null||f!=null||h||u||m;y&&!this.hasPointerListeners?(e.addEventListener("click",this.handlePointerClick),e.addEventListener("pointerdown",this.handlePointerDown),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("pointerleave",this.handlePointerLeave),this.hasPointerListeners=!0,w(t,"click","FileDiff.DEBUG.attachEventListeners: Attaching click events for:",(()=>{const v=[];return(t==="both"||t==="click")&&(n!=null&&v.push("onLineClick"),a!=null&&v.push("onLineNumberClick"),o!=null&&v.push("expandable hunk separators"),f!=null&&v.push("merge conflict actions")),v})()),w(t,"move","FileDiff.DEBUG.attachEventListeners: Attaching pointer move event"),w(t,"move","FileDiff.DEBUG.attachEventListeners: Attaching pointer leave event")):!y&&this.hasPointerListeners&&(e.removeEventListener("click",this.handlePointerClick),e.removeEventListener("pointerdown",this.handlePointerDown),e.removeEventListener("pointermove",this.handlePointerMove),e.removeEventListener("pointerleave",this.handlePointerLeave),this.hasPointerListeners=!1);const b=this.pointerSession.mode==="selecting"||this.pointerSession.mode==="pendingSingleLineUnselect",x=this.pointerSession.mode==="gutterSelecting";(!u&&b||!m&&x)&&(this.clearPointerSession(),this.detachDocumentPointerListeners(),this.selectionAnchor=void 0,this.clearPendingSingleLineState())}updateInteractiveLineAttributes(){if(this.pre==null)return;const{onLineClick:e,onLineNumberClick:t,enableLineSelection:i=!1}=this.options,n=e!=null,a=t!=null||i;n&&!this.interactiveLinesAttr?(this.pre.setAttribute("data-interactive-lines",""),this.interactiveLinesAttr=!0):!n&&this.interactiveLinesAttr&&(this.pre.removeAttribute("data-interactive-lines"),this.interactiveLinesAttr=!1),a&&!this.interactiveLineNumbersAttr?(this.pre.setAttribute("data-interactive-line-numbers",""),this.interactiveLineNumbersAttr=!0):!a&&this.interactiveLineNumbersAttr&&(this.pre.removeAttribute("data-interactive-line-numbers"),this.interactiveLineNumbersAttr=!1)}handlePointerDown=e=>{if(e.pointerType==="mouse"&&e.button!==0||this.pre==null||this.pointerSession.mode!=="idle")return;const t=e.composedPath();R(t)&&this.options.onGutterUtilityClick!=null?this.startGutterSelectionFromPointerDown(e):(e.pointerType!=="mouse"&&this.revealUtilityFromGutterPath(t),this.startLineSelectionFromPointerDown(e))};startLineSelectionFromPointerDown(e){const{enableLineSelection:t=!1}=this.options;if(!t)return;const i=this.resolveSelectionInfo(e,{source:"event-path",requireNumberColumn:!0});if(i==null)return;const{pre:n}=this;if(n==null)return;const{lineNumber:a,eventSide:r,lineIndex:s}=i;if(e.shiftKey&&this.selectedRange!=null){const d=this.getIndexesFromSelection(this.selectedRange,n.getAttribute("data-diff-type")==="split");if(d==null)return;const c=d.start<=d.end?s>=d.start:s<=d.end;this.selectionAnchor={lineNumber:c?this.selectedRange.start:this.selectedRange.end,side:c?this.selectedRange.side:this.selectedRange.endSide??this.selectedRange.side},this.updateSelection(a,r,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.pointerSession={mode:"selecting",pointerId:e.pointerId},this.attachDocumentPointerListeners();return}if(this.selectedRange?.start===a&&this.selectedRange?.end===a){const d={lineNumber:a,side:r};this.selectionAnchor=d,this.pointerSession={mode:"pendingSingleLineUnselect",pointerId:e.pointerId,anchor:d,pending:d},this.attachDocumentPointerListeners();return}this.options.controlledSelection===!0?this.proposedSelectedRange=null:this.selectedRange=null,this.placeUtility(),this.selectionAnchor={lineNumber:a,side:r},this.updateSelection(a,r,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.pointerSession={mode:"selecting",pointerId:e.pointerId},this.attachDocumentPointerListeners()}startGutterSelectionFromPointerDown(e){const{onGutterUtilityClick:t}=this.options;if(t==null)return;const i=this.currentSelectionEnds(),n=i?.bottom??this.resolveSelectionPoint(e,{source:"event-path",excludeUtility:!1}),a=i?.top??n;n==null||a==null||(e.preventDefault(),e.stopPropagation(),this.pointerSession={mode:"gutterSelecting",pointerId:e.pointerId,anchor:a,current:n},this.selectionAnchor={lineNumber:a.lineNumber,side:a.side},this.updateSelection(n.lineNumber,n.side,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.attachDocumentPointerListeners())}handleDocumentPointerMove=e=>{switch(this.pointerSession.mode){case"idle":return;case"gutterSelecting":{if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault();const t=this.resolveSelectionPoint(e,{source:"coordinates-first"});if(t==null)return;this.pointerSession.current=t,this.updateSelection(t.lineNumber,t.side);return}case"selecting":{if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault();const t=this.resolveSelectionInfo(e,{source:"coordinates-first",requireNumberColumn:!1});if(t==null||this.selectionAnchor==null)return;this.updateSelection(t.lineNumber,t.eventSide);return}case"pendingSingleLineUnselect":{if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault();const t=this.resolveSelectionInfo(e,{source:"coordinates-first",requireNumberColumn:!1});if(t==null||this.selectionAnchor==null)return;const i={lineNumber:t.lineNumber,side:t.eventSide};if(xe(this.pointerSession.pending,i))return;this.updateSelection(t.lineNumber,t.eventSide,!1),this.notifySelectionStart(this.getCurrentSelectionRange()),this.notifySelectionChangeDelta(),this.pointerSession={mode:"selecting",pointerId:e.pointerId};return}}};handleDocumentPointerUp=e=>{const{onGutterUtilityClick:t}=this.options;switch(this.pointerSession.mode){case"idle":return;case"gutterSelecting":{const{pointerSession:i}=this;if(e.pointerId!==i.pointerId)return;e.preventDefault();const n=this.resolveSelectionPoint(e,{source:"coordinates-first"});n!=null&&(i.current=n,this.updateSelection(n.lineNumber,n.side));const a=this.buildSelectedLineRange(i.anchor,i.current);t?.({...a}),this.selectionAnchor=void 0,this.notifySelectionEnd(a),this.notifySelectionCommitted(a),this.clearProposedSelection(),this.clearPointerSession(),this.detachDocumentPointerListeners();return}case"pendingSingleLineUnselect":if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault(),this.updateSelection(null,void 0,!1),this.selectionAnchor=void 0,this.clearPendingSingleLineState(),this.detachDocumentPointerListeners(),this.notifySelectionEnd(this.getCurrentSelectionRange()),this.notifySelectionCommitted(this.getCurrentSelectionRange()),this.clearProposedSelection();return;case"selecting":if(e.pointerId!==this.pointerSession.pointerId)return;e.preventDefault(),this.selectionAnchor=void 0,this.detachDocumentPointerListeners(),this.clearPointerSession(),this.notifySelectionEnd(this.getCurrentSelectionRange()),this.notifySelectionCommitted(this.getCurrentSelectionRange()),this.clearProposedSelection()}};handleDocumentPointerCancel=e=>{switch(this.pointerSession.mode){case"idle":return;case"gutterSelecting":case"selecting":case"pendingSingleLineUnselect":if("pointerId"in this.pointerSession&&e.pointerId!==this.pointerSession.pointerId)return;this.selectionAnchor=void 0,this.clearProposedSelection(),this.clearPendingSingleLineState(),this.clearPointerSession(),this.detachDocumentPointerListeners()}};clearHoveredLine(){this.hoveredLine!=null&&(this.hoveredLine.lineElement.removeAttribute("data-hovered"),this.hoveredLine.numberElement.removeAttribute("data-hovered"),this.hoveredLine=void 0)}setHoveredLine(e){const{lineHoverHighlight:t="disabled"}=this.options;this.hoveredLine!=null&&this.clearHoveredLine(),this.hoveredLine=e,t!=="disabled"&&((t==="both"||t==="line")&&this.hoveredLine.lineElement.setAttribute("data-hovered",""),(t==="both"||t==="number")&&this.hoveredLine.numberElement.setAttribute("data-hovered",""))}clearHoveredToken(){this.hoveredToken!=null&&(this.hoveredToken=void 0)}setHoveredToken(e){this.hoveredToken!=null&&this.clearHoveredToken(),this.hoveredToken=e}ensureGutterUtilityNode(e){if(this.gutterUtilityContainer==null&&(this.gutterUtilityContainer=document.createElement("div"),this.gutterUtilityContainer.setAttribute("data-gutter-utility-slot","")),e)this.gutterUtilityButton!=null&&(this.gutterUtilityButton.remove(),this.gutterUtilityButton=void 0),this.gutterUtilitySlot==null&&(this.gutterUtilitySlot=document.createElement("slot"),this.gutterUtilitySlot.name="gutter-utility-slot"),this.gutterUtilitySlot.parentNode!==this.gutterUtilityContainer&&this.gutterUtilityContainer.replaceChildren(this.gutterUtilitySlot);else{if(this.gutterUtilitySlot?.remove(),this.gutterUtilitySlot=void 0,this.gutterUtilityButton==null){const t=document.createElement("div");t.innerHTML=ge(ye());const i=t.firstElementChild;if(!(i instanceof HTMLButtonElement))throw new Error("InteractionManager.ensureGutterUtilityNode: Node element should be a button");i.remove(),this.gutterUtilityButton=i}this.gutterUtilityButton.parentNode!==this.gutterUtilityContainer&&this.gutterUtilityContainer.replaceChildren(this.gutterUtilityButton)}}revealUtilityFromGutterPath(e){if(this.placeUtilityFromSelection())return;const t=this.resolvePointerTarget(e);I(t)&&t.numberColumn&&this.showUtilityOnLine(this.toEventBaseProps(t))}placeUtility(){if(!this.placeUtilityFromSelection()){if(this.hoveredLine!=null){this.showUtilityOnLine(this.hoveredLine);return}this.hideUtility()}}placeUtilityFromSelection(){const e=this.currentSelectionEnds();if(e==null)return!1;const t=this.targetForSelectionPoint(e.bottom);return t==null?this.hideUtility():this.showUtilityOnLine(this.toEventBaseProps(t)),!0}showUtilityOnLine(e){this.gutterUtilityContainer!=null&&(this.gutterUtilityLine=e,e.numberElement.appendChild(this.gutterUtilityContainer))}hideUtility(){this.gutterUtilityContainer?.remove(),this.gutterUtilityLine=void 0}currentSelectionEnds(){const e=this.getCurrentSelectionRange();return e==null?void 0:this.selectionEnds(e)}selectionEnds(e){const t={lineNumber:e.start,side:e.side},i={lineNumber:e.end,side:e.endSide??e.side},n=this.selectionPointRowIndex(t),a=this.selectionPointRowIndex(i);if(!(n==null||a==null))return n>a?{top:i,bottom:t}:{top:t,bottom:i}}selectionPointRowIndex(e){const t=this.getLineIndex(e.lineNumber,e.side);if(t!=null)return this.isSplitDiff()?t[1]:t[0]}targetForSelectionPoint(e){if(this.pre==null)return;const t=this.getLineIndex(e.lineNumber,e.side);if(t==null)return;const i=this.mode==="diff"?`${t[0]},${t[1]}`:`${t[0]}`,n=this.pre.querySelectorAll(`[data-column-number="${e.lineNumber}"][data-line-index="${i}"]`);for(const a of n){if(!(a instanceof HTMLElement))continue;const r=this.resolvePointerTarget(P(a));if(I(r)&&!(this.mode==="diff"&&e.side!=null&&r.side!==e.side))return r}}attachDocumentPointerListeners(){this.hasDocumentPointerListeners||(document.addEventListener("pointermove",this.handleDocumentPointerMove),document.addEventListener("pointerup",this.handleDocumentPointerUp),document.addEventListener("pointercancel",this.handleDocumentPointerCancel),this.hasDocumentPointerListeners=!0)}detachDocumentPointerListeners(){this.hasDocumentPointerListeners&&(document.removeEventListener("pointermove",this.handleDocumentPointerMove),document.removeEventListener("pointerup",this.handleDocumentPointerUp),document.removeEventListener("pointercancel",this.handleDocumentPointerCancel),this.hasDocumentPointerListeners=!1)}clearPointerSession(){this.pointerSession={mode:"idle"}}clearPendingSingleLineState(){this.pointerSession.mode==="pendingSingleLineUnselect"&&(this.pointerSession={mode:"idle"})}selectionInfoFromPath(e,t){const i=this.resolvePointerTarget(e);if(I(i)&&!(t&&!i.numberColumn)&&i.splitLineIndex!=null)return{lineIndex:i.splitLineIndex,lineNumber:i.lineNumber,eventSide:this.mode==="diff"?i.side:void 0}}resolveSelectionInfo(e,t){const i=this.resolveSelectionPath(e,t);return i!=null?this.selectionInfoFromPath(i,t.requireNumberColumn):void 0}selectionPointFromPath(e){const t=this.resolvePointerTarget(e);if(I(t))return{lineNumber:t.lineNumber,side:this.mode==="diff"?t.side:void 0}}resolveSelectionPoint(e,t){const i=this.resolveSelectionPath(e,t);return i!=null?this.selectionPointFromPath(i):void 0}resolveSelectionPath(e,t){const i=t.excludeUtility!==!1;switch(t.source){case"event-path":return this.pathFromEventPath(e.composedPath(),i);case"coordinates-first":{const n=this.pathFromCoordinates(e,i);return n!==void 0?n??void 0:this.pathFromEventPath(e.composedPath(),i)}}}pathFromCoordinates(e,t){const i=this.hitTest(e);if(i!==void 0)return i===null?null:this.pathFromElement(i,t)??null}pathFromEventPath(e,t){if(!(t&&R(e))){for(const i of e)if(i instanceof Element)return this.pathFromElement(i,t)}}pathFromElement(e,t){const i=P(e);if(t&&R(i))return;const n=Ee(e);return n!=null?P(n):this.pathFromAnnotationSlot(e)}pathFromAnnotationSlot(e){const t=Ae(e)?.previousElementSibling;if(t instanceof HTMLElement&&(t.hasAttribute("data-line")||t.hasAttribute("data-column-number")))return P(t);const i=Ne(Ce(e));if(i==null)return;const n=this.targetForSelectionPoint(i);return n!=null?P(n.lineElement):void 0}hitTest(e){if(!Number.isFinite(e.clientX)||!Number.isFinite(e.clientY))return;const t=this.pre?.getRootNode(),i=K(t)?t:K(document)?document:void 0;if(i!=null)return i.elementFromPoint(e.clientX,e.clientY)}getLineIndex(e,t){const{getLineIndex:i}=this.options;return i!=null?i(e,t):[e-1,e-1]}getCurrentSelectionRange(){return this.proposedSelectedRange!==void 0?this.proposedSelectedRange:this.selectedRange}clearProposedSelection(){this.proposedSelectedRange=void 0}updateSelection(e,t,i=!0){const n=this.getCurrentSelectionRange();let a;if(e==null)a=null;else{const r=this.selectionAnchor?.side??t,s=this.selectionAnchor?.lineNumber??e;a=this.buildSelectionRange(s,e,r,t)}B(n??void 0,a??void 0)||(this.selectedRangeHighlightSide=void 0,this.selectedRangeLineNumberOnly=!1,this.options.controlledSelection===!0?this.proposedSelectedRange=a:(this.selectedRange=a,ve(this.renderSelection)),this.placeUtility(),i&&this.notifySelectionChangeDelta())}getIndexesFromSelection(e,t){if(this.pre==null)return;const i=this.getLineIndex(e.start,e.side),n=this.getLineIndex(e.end,e.endSide??e.side);return i!=null&&n!=null?{start:t?i[1]:i[0],end:t?n[1]:n[0]}:void 0}getSelectionRenderState(){return{selectedLines:{range:this.selectedRange,highlightSide:this.selectedRangeHighlightSide,lineNumberOnly:this.selectedRangeLineNumberOnly},editorActiveLine:{range:this.editorActiveLine==null?null:{start:this.editorActiveLine,end:this.editorActiveLine,side:this.editorActiveLineSide},highlightSide:this.editorActiveLineSide,lineNumberOnly:this.editorLineNumberOnly}}}resolveLineRenderRange(e,t,i){if(e.range==null)return;const n=this.getIndexesFromSelection(e.range,t);if(n==null)throw console.error({rowRange:n,range:e.range}),new Error(`InteractionManager.renderSelection: No valid ${i} rowRange`);return n}getLineRenderColumns(e,t,i,n){if(this.pre==null||t==null&&n==null)return[];const{children:a}=this.pre;if(a.length>2)throw console.error(a),new Error("InteractionManager.renderSelection: Somehow there are more than 2 code elements...");const r=[];for(const s of a){const d=s.hasAttribute("data-deletions")?"deletions":s.hasAttribute("data-additions")?"additions":void 0,c=e!=null&&t!=null&&(e.highlightSide==null||d==null||e.highlightSide===d),l=i!=null&&n!=null&&(i.highlightSide==null||d==null||i.highlightSide===d);if(!c&&!l)continue;const[o,f]=s.children;if(!(o instanceof HTMLElement)||!(f instanceof HTMLElement))throw new Error("InteractionManager.renderSelection: missing gutter or content element");if(f.children.length!==o.children.length)throw new Error("InteractionManager.renderSelection: gutter and content children dont match, something is wrong");r.push({content:f,gutter:o,renderEditorActiveLine:l,renderSelectedLines:c})}return r}renderSelection=()=>{G(this.renderSelection);const e=this.getSelectionRenderState();if(this.pre==null)return;const{editorActiveLine:t,selectedLines:i}=e,n=!Y(this.renderedSelectedLinesState,i),a=!Y(this.renderedEditorActiveLineState,t);if(!n&&!a)return;n&&(this.renderedSelectedLinesState=void 0),a&&(this.renderedEditorActiveLineState=void 0);const r=this.pre.getAttribute("data-diff-type")==="split",s=n?this.resolveLineRenderRange(i,r,"selected-lines"):void 0,d=a?this.resolveLineRenderRange(t,r,"editor-active-line"):void 0,c=this.getLineRenderColumns(n?i:void 0,s,a?t:void 0,d),l=i.range==null||c.some(m=>m.renderSelectedLines),o=t.range==null||c.some(m=>m.renderEditorActiveLine);if(n)for(const m of this.pre.querySelectorAll("[data-selected-line]"))m.removeAttribute("data-selected-line");if(a)for(const m of this.pre.querySelectorAll("[data-editor-active-line]"))m.removeAttribute("data-editor-active-line");const f=s==null?void 0:Math.min(s.start,s.end),h=s==null?void 0:Math.max(s.start,s.end),u=f===h,p=d?.start;for(const m of c){const{content:y,gutter:b,renderEditorActiveLine:x,renderSelectedLines:v}=m,N=Math.max(v?h??-1/0:-1/0,x?p??-1/0:-1/0),D=y.children.length;for(let T=0;T<D;T++){const S=y.children[T],M=b.children[T];if(!(S instanceof HTMLElement)||!(M instanceof HTMLElement))continue;const k=this.parseLineIndex(S,r);if((k??0)>N)break;if(k!=null){if(v&&f!=null&&h!=null&&k>=f&&k<=h){let E=u?"single":k===f?"first":k===h?"last":"";M.setAttribute("data-selected-line",E),i.lineNumberOnly||(S.setAttribute("data-selected-line",E),M.nextSibling instanceof HTMLElement&&S.nextSibling instanceof HTMLElement&&(S.nextSibling.hasAttribute("data-line-annotation")||S.nextSibling.hasAttribute("data-merge-conflict-actions"))&&(u?(E="last",S.setAttribute("data-selected-line","first")):k===f?E="":k===h&&S.setAttribute("data-selected-line",""),S.nextSibling.setAttribute("data-selected-line",E),M.nextSibling.setAttribute("data-selected-line",E)))}x&&k===p&&(M.setAttribute("data-editor-active-line",""),t.lineNumberOnly||S.setAttribute("data-editor-active-line",""))}}}n&&l&&(this.renderedSelectedLinesState=i),a&&o&&(this.renderedEditorActiveLineState=t)};notifySelectionCommitted(e){this.options.onLineSelected?.(e)}notifySelectionChangeDelta(){this.options.onLineSelectionChange?.(this.getCurrentSelectionRange()??null)}notifySelectionStart(e){this.options.onLineSelectionStart?.(e)}notifySelectionEnd(e){this.options.onLineSelectionEnd?.(e)}toEventBaseProps(e){return this.mode==="file"?{type:"line",lineElement:e.lineElement,lineNumber:e.lineNumber,numberColumn:e.numberColumn,numberElement:e.numberElement}:{type:"diff-line",annotationSide:e.side,lineType:e.lineType,lineElement:e.lineElement,numberElement:e.numberElement,lineNumber:e.lineNumber,numberColumn:e.numberColumn}}toTokenEventBaseProps({lineCharEnd:e,lineCharStart:t,lineNumber:i,side:n,tokenElement:a,tokenText:r}){return this.mode==="file"?{type:"token",lineCharEnd:e,lineCharStart:t,lineNumber:i,tokenElement:a,tokenText:r}:{type:"token",lineCharEnd:e,lineCharStart:t,lineNumber:i,side:n,tokenElement:a,tokenText:r}}buildSelectedLineRange(e,t){return this.buildSelectionRange(e.lineNumber,t.lineNumber,e.side,t.side)}buildSelectionRange(e,t,i,n){return{start:e,end:t,...i!=null?{side:i}:{},...i!==n&&n!=null?{endSide:n}:{}}}resolvePointerTarget(e){let t=!1,i,n,a,r,s,d,c,l,o,f;for(const u of e){if(!(u instanceof HTMLElement))continue;if(f==null&&u.hasAttribute("data-merge-conflict-action")){const b=u.getAttribute("data-merge-conflict-action")??void 0,x=u.getAttribute("data-merge-conflict-conflict-index")??void 0,v=x!=null?Number.parseInt(x,10):NaN;Le(b)&&Number.isFinite(v)&&(f={kind:"merge-conflict-action",resolution:b,conflictIndex:v})}if(d==null&&u.hasAttribute("data-char")){d=u;const b=u.getAttribute("data-char");if(b!=null){const x=Number.parseInt(b,10);if(!Number.isNaN(x)){const v=u.textContent??"",N=x+v.length;(v.trim()!==""||this.options.enableTokenInteractionsOnWhitespace===!0)&&(c={tokenElement:d,lineCharStart:x,lineCharEnd:N,tokenText:v});continue}}}const p=s==null?u.getAttribute("data-column-number")??void 0:void 0;if(p!=null){s=u,o=Number.parseInt(p,10),t=!0,i=X(u),r=u.getAttribute("data-line-index")??void 0;continue}const m=a==null?u.getAttribute("data-line")??void 0:void 0;if(m!=null){a=u,o=Number.parseInt(m,10),i=X(u),r=u.getAttribute("data-line-index")??void 0;continue}if(l==null&&(u.hasAttribute("data-expand-button")||u.hasAttribute("data-unmodified-lines"))){l={hunkIndex:void 0,direction:u.hasAttribute("data-expand-up")?"up":u.hasAttribute("data-expand-down")?"down":"both",all:u.hasAttribute("data-expand-all-button")};continue}const y=l!=null?u.getAttribute("data-expand-index")??void 0:void 0;if(l!=null&&y!=null){const b=Number.parseInt(y,10);Number.isNaN(b)||(l.hunkIndex=b);continue}if(n==null&&u.hasAttribute("data-code")){n=u;break}}if(f!=null)return f;if(l?.hunkIndex!=null)return{type:"line-info",hunkIndex:l.hunkIndex,direction:l.direction,all:l.all};if(a??=r!=null?W(n,`[data-line][data-line-index="${r}"]`):void 0,s??=r!=null?W(n,`[data-column-number][data-line-index="${r}"]`):void 0,n==null||a==null||s==null||i==null||o==null||Number.isNaN(o))return;const h=this.parseLineIndex(a,this.isSplitDiff());return c!=null?this.mode==="file"?{kind:"token",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:void 0,splitLineIndex:h,...c}:{kind:"token",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:j(i,n),splitLineIndex:h,...c}:this.mode==="file"?{kind:"line",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:void 0,splitLineIndex:h}:{kind:"line",lineType:i,lineElement:a,lineNumber:o,numberColumn:t,numberElement:s,side:j(i,n),splitLineIndex:h}}isSplitDiff(){return this.pre?.getAttribute("data-diff-type")==="split"}parseLineIndex(e,t){const i=(e.getAttribute("data-line-index")??"").split(",").map(n=>Number.parseInt(n,10)).filter(n=>!Number.isNaN(n));if(t&&i.length===2)return i[1];if(!t)return i[0]}};function it({enableTokenInteractionsOnWhitespace:e,enableGutterUtility:t,lineHoverHighlight:i,onGutterUtilityClick:n,onLineClick:a,onLineEnter:r,onLineLeave:s,onLineNumberClick:d,onTokenClick:c,onTokenEnter:l,onTokenLeave:o,renderGutterUtility:f,__debugPointerEvents:h,enableLineSelection:u,controlledSelection:p,onLineSelected:m,onLineSelectionStart:y,onLineSelectionChange:b,onLineSelectionEnd:x},v,N,D){return{enableTokenInteractionsOnWhitespace:e,enableGutterUtility:Se({enableGutterUtility:t,renderGutterUtility:f,onGutterUtilityClick:n}),usesCustomGutterUtility:f!=null,lineHoverHighlight:i,onGutterUtilityClick:n,onHunkExpand:v,onMergeConflictActionClick:D,onLineClick:a,onLineEnter:r,onLineLeave:s,onLineNumberClick:d,onTokenClick:c,onTokenEnter:l,onTokenLeave:o,__debugPointerEvents:h,enableLineSelection:u,controlledSelection:p,onLineSelected:m,onLineSelectionStart:y,onLineSelectionChange:b,onLineSelectionEnd:x,getLineIndex:N}}function Se({enableGutterUtility:e,renderGutterUtility:t,onGutterUtilityClick:i}){if(i!=null&&t!=null)throw new Error("Cannot use both 'onGutterUtilityClick' and 'renderGutterUtility'. Use only one gutter utility API.");return e??!1}function I(e){return e!=null&&"kind"in e&&e.kind==="line"}function H(e){return e!=null&&"kind"in e&&e.kind==="token"}function F(e){return I(e)||H(e)}function ke(e){return"type"in e&&e.type==="line-info"}function we(e){return"kind"in e&&e.kind==="merge-conflict-action"}function Le(e){return e==="current"||e==="incoming"||e==="both"}function W(e,t){const i=e?.querySelector(t);return i instanceof HTMLElement?i:void 0}function P(e){const t=[];let i=e;for(;i!=null;)t.push(i),i=i.parentNode;return t}function Ee(e){const t=e.closest("[data-line], [data-column-number]");if(t instanceof HTMLElement)return t;const i=e.closest('[data-line-annotation], [data-gutter-buffer="annotation"]');if(!(i instanceof HTMLElement))return;const n=i.previousElementSibling;return n instanceof HTMLElement&&(n.hasAttribute("data-line")||n.hasAttribute("data-column-number"))?n:void 0}function Ae(e){const t=e.closest('[slot^="annotation-"]'),i=(t instanceof HTMLElement&&t.assignedSlot!=null?t.assignedSlot:e.tagName==="SLOT"?e:void 0)?.closest("[data-line-annotation]");return i instanceof HTMLElement?i:void 0}function Ce(e){const t=e.closest('[slot^="annotation-"]');if(t instanceof HTMLElement)return t.getAttribute("slot")??void 0;if(e instanceof HTMLElement){const i=e.getAttribute("name")??void 0;return i!=null&&i.startsWith("annotation-")?i:void 0}}function Ne(e){if(e==null)return;const t=/^annotation-(?:(additions|deletions)-)?(\d+)$/.exec(e);if(t==null)return;const i=Number.parseInt(t[2],10);if(!(!Number.isFinite(i)||i<=0))return{lineNumber:i,side:t[1]}}function K(e){return e!=null&&typeof e.elementFromPoint=="function"}function Me(e,t){return e===t||B(e??void 0,t??void 0)}function Y(e,t){return e?.highlightSide===t.highlightSide&&e?.lineNumberOnly===t.lineNumberOnly&&Me(e?.range??null,t.range)}function j(e,t){switch(e){case"change-deletion":return"deletions";case"change-addition":return"additions";default:return t.hasAttribute("data-deletions")?"deletions":"additions"}}function X(e){const t=e.getAttribute("data-line-type");if(t!=null)switch(t){case"change-deletion":case"change-addition":case"context":case"context-expanded":return t;default:return}}function w(e="none",t,...i){switch(e){case"none":return;case"both":break;case"click":if(t!=="click")return;break;case"move":if(t!=="move")return}console.log(...i)}var nt=class L{static resizeObserver;static managersByElement=new Map;static getResizeObserver(){const t=L.resizeObserver??new ResizeObserver(L.handleSharedResizeEntries);return L.resizeObserver=t,t}static handleSharedResizeEntries(t){const i=new Map;for(const n of t){const a=L.managersByElement.get(n.target);if(a==null)continue;const r=i.get(a);r==null?i.set(a,[n]):r.push(n)}for(const[n,a]of i)n.handleResizeEntries(a)}observedNodes=new Map;setup(t,{disableAnnotations:i,columnVariables:n="apply"}){const a=new Set,r=n==="apply";let s=0;const d=new Map(this.observedNodes);this.observedNodes.clear();for(const c of t.children){if(s===2)break;const l=(()=>{if(c instanceof HTMLElement&&c.tagName==="CODE")return c})();if(l==null)continue;s++;let o=d.get(l);if(o!=null&&o.type!=="code")throw new Error("ResizeManager.setup: somehow a code node is being used for an annotation, should be impossible");let f=l.firstElementChild;f instanceof HTMLElement||(f=null),o!=null?(this.observedNodes.set(l,o),d.delete(l),o.numberElement!==f?(o.numberElement!=null&&(this.unobserve(o.numberElement),d.delete(o.numberElement)),f!=null&&(this.observe(f),d.delete(f),this.observedNodes.set(f,o)),o.numberElement=f,o.numberWidth=0):o.numberElement!=null?(d.delete(o.numberElement),this.observedNodes.set(o.numberElement,o)):o.numberWidth=0,Te(o,r)):(o={type:"code",codeElement:l,numberElement:f,codeWidth:"auto",numberWidth:0,applyColumnVariables:r},this.observedNodes.set(l,o),this.observe(l),f!=null&&(this.observedNodes.set(f,o),this.observe(f)))}if(s>1&&!i){const c=t.querySelectorAll('[data-line-annotation*=","]'),l=new Map;for(const o of c){if(!(o instanceof HTMLElement))continue;const f=o.getAttribute("data-line-annotation")??"";if(!/^-?\d+,-?\d+$/.test(f)){console.error("DiffFileRenderer.setupResizeObserver: Invalid element or annotation",{lineAnnotation:f,element:o});continue}let h=l.get(f);h==null&&(h=[],l.set(f,h)),h.push(o)}for(const[o,f]of l){if(f.length!==2){console.error("DiffFileRenderer.setupResizeObserver: Bad Pair",o,f);continue}const[h,u]=f,p=h.firstElementChild,m=u.firstElementChild;if(!(h instanceof HTMLElement)||!(u instanceof HTMLElement)||!(p instanceof HTMLElement)||!(m instanceof HTMLElement))continue;let y=d.get(p);if(y!=null){this.observedNodes.set(p,y),this.observedNodes.set(m,y),d.delete(p),d.delete(m);continue}const b=p.getBoundingClientRect().height,x=m.getBoundingClientRect().height;y={type:"annotations",column1:{container:h,child:p,childHeight:b},column2:{container:u,child:m,childHeight:x},currentHeight:"auto"},a.add({child1:p,child2:m,item:y,newHeight:Math.max(b,x)})}for(const o of a)this.applyNewHeight(o.item,o.newHeight),this.observedNodes.set(o.child1,o.item),this.observedNodes.set(o.child2,o.item),this.observe(o.child1),this.observe(o.child2);a.clear()}for(const[c,l]of d)this.unobserve(c),l.type==="code"?Re(l):Ue(l);d.clear()}cleanUp(){for(const t of this.observedNodes.keys())this.unobserve(t);this.observedNodes.clear()}observe(t){const{managersByElement:i}=L,n=i.get(t);if(n!==this){if(n!=null&&n!==this)throw new Error("ResizeManager.observe: element is already owned by another ResizeManager");i.set(t,this),L.getResizeObserver().observe(t)}}unobserve(t){const{managersByElement:i,resizeObserver:n}=L,a=i.get(t);if(a!=null){if(a!==this)throw new Error("ResizeManager.unobserve: element is owned by another ResizeManager");i.delete(t),n?.unobserve(t),n!=null&&i.size===0&&(n.disconnect(),L.resizeObserver=void 0)}}handleResizeEntries(t){const i=new Map,n=new Set;for(const a of t){const{target:r,borderBoxSize:s,contentBoxSize:d}=a;if(!(r instanceof HTMLElement)){console.error("ResizeManager.handleResizeEntries: Invalid element for ResizeObserver",a);continue}const c=this.observedNodes.get(r);if(c==null){console.error("ResizeManager.handleResizeEntries: Not a valid observed node",a);continue}if(c.type==="annotations"){const l=(()=>{if(r===c.column1.child)return c.column1;if(r===c.column2.child)return c.column2})();if(l==null){console.error("ResizeManager.handleResizeEntries: Couldn't find a column for",{item:c,target:r});continue}l.childHeight=s[0].blockSize,n.add(c)}else if(c.type==="code"){const l=i.get(c)??{},o=d[0].inlineSize;r===c.codeElement?l.codeInlineSize=o:r===c.numberElement&&(l.numberInlineSize=o),i.set(c,l)}}this.applyAnnotationUpdates(n),n.clear(),this.applyColumnUpdates(i),i.clear()}applyAnnotationUpdates(t){for(const i of t)this.applyNewHeight(i,Math.max(i.column1.childHeight,i.column2.childHeight))}applyColumnUpdates=t=>{for(const[i,n]of t){const a=n.codeInlineSize!=null?Pe(n.codeInlineSize):i.codeWidth,r=n.numberInlineSize!=null?Ie(n.numberInlineSize):i.numberWidth,s=a!==i.codeWidth,d=r!==i.numberWidth;!s&&!d||(i.codeWidth=a,i.numberWidth=r,i.applyColumnVariables&&te(i,{codeWidthChanged:s,numberWidthChanged:d}))}};applyNewHeight(t,i){i!==t.currentHeight&&(t.currentHeight=Math.max(i,0),t.column1.container.style.setProperty("--diffs-annotation-min-height",`${t.currentHeight}px`),t.column2.container.style.setProperty("--diffs-annotation-min-height",`${t.currentHeight}px`))}};function Pe(e){const t=Math.max(Math.floor(e),0);return t===0?"auto":t}function Ie(e){return Math.max(Math.ceil(e),0)}function Te(e,t){e.applyColumnVariables!==t&&(e.applyColumnVariables=t,t?te(e,{codeWidthChanged:!0,numberWidthChanged:!0}):ie(e))}function te(e,{codeWidthChanged:t,numberWidthChanged:i}){const{codeElement:n,codeWidth:a,numberWidth:r}=e;if(t&&n.style.setProperty("--diffs-column-width",`${typeof a=="number"?`${a}px`:"auto"}`),i&&n.style.setProperty("--diffs-column-number-width",`${r===0?"auto":`${r}px`}`),t||i&&a!=="auto"){const s=typeof a=="number"?Math.max(a-r,0):0;n.style.setProperty("--diffs-column-content-width",`${s>0?`${s}px`:"auto"}`)}}function ie(e){e.codeElement.style.removeProperty("--diffs-column-content-width"),e.codeElement.style.removeProperty("--diffs-column-number-width"),e.codeElement.style.removeProperty("--diffs-column-width")}function Re(e){e.codeElement.isConnected&&ie(e)}function Ue(e){e.column1.container.isConnected&&e.column1.container.style.removeProperty("--diffs-annotation-min-height"),e.column2.container.isConnected&&e.column2.container.style.removeProperty("--diffs-annotation-min-height")}function at(e,t){return e==null||t==null?e===t:e.startingLine===t.startingLine&&e.totalLines===t.totalLines&&e.bufferBefore===t.bufferBefore&&e.bufferAfter===t.bufferAfter}function rt(e){return g({tagName:"div",children:[g({tagName:"div",children:e.annotations?.map(t=>g({tagName:"slot",properties:{name:t}})),properties:{"data-annotation-content":""}})],properties:{"data-line-annotation":`${e.hunkIndex},${e.lineIndex}`}})}function He(e){switch(e){case"file":return"diffs-icon-file-code";case"change":return"diffs-icon-symbol-modified";case"new":return"diffs-icon-symbol-added";case"deleted":return"diffs-icon-symbol-deleted";case"rename-pure":case"rename-changed":return"diffs-icon-symbol-moved"}}function ot({fileOrDiff:e,mode:t,stickyHeader:i}){const n="type"in e?e:void 0,a={"data-diffs-header":t,"data-change-type":n?.type,"data-sticky":i?"":void 0};return g({tagName:"div",children:[t==="custom"?g({tagName:"slot",properties:{name:re}}):ze({name:e.name,prevName:"prevName"in e?e.prevName:void 0,iconType:n?.type??"file"}),...t==="custom"?[]:[De(n)]],properties:a})}function ze({name:e,prevName:t,iconType:i}){const n=[g({tagName:"slot",properties:{name:oe}}),O({name:He(i),properties:{"data-change-icon":i}})];return t!=null&&(n.push(g({tagName:"div",children:[g({tagName:"bdi",children:[z(t)]})],properties:{"data-prev-name":""}})),n.push(O({name:"diffs-icon-arrow-right-short",properties:{"data-rename-icon":""}}))),n.push(g({tagName:"div",children:[g({tagName:"bdi",children:[z(e)]})],properties:{"data-title":""}})),n.push(g({tagName:"slot",properties:{name:se}})),g({tagName:"div",children:n,properties:{"data-header-content":""}})}function De(e){const t=[];if(e!=null){let i=0,n=0;for(const a of e.hunks)i+=a.additionLines,n+=a.deletionLines;(n>0||i===0)&&t.push(g({tagName:"span",children:[z(`-${n}`)],properties:{"data-deletions-count":""}})),(i>0||n===0)&&t.push(g({tagName:"span",children:[z(`+${i}`)],properties:{"data-additions-count":""}}))}return t.push(g({tagName:"slot",properties:{name:de}})),g({tagName:"div",children:t,properties:{"data-metadata":""}})}function st(e){return g({tagName:"pre",properties:Fe(e)})}function Fe({diffIndicators:e,disableBackground:t,disableLineNumbers:i,overflow:n,split:a,totalLines:r,type:s,customProperties:d}){return{...d,"data-diff":s==="diff"?"":void 0,"data-file":s==="file"?"":void 0,"data-diff-type":s==="diff"?a?"split":"single":void 0,"data-overflow":n,"data-disable-line-numbers":i?"":void 0,"data-background":t?void 0:"","data-indicators":e==="bars"||e==="classic"?e:void 0,style:`--diffs-min-number-column-width-default:${`${r}`.length}ch;`}}function dt(e,{theme:t,preferredHighlighter:i="shiki-js"}){return{langs:Array.isArray(e)?e:[e??"text"],themes:pe(t),preferredHighlighter:i}}function lt(e){return`annotation-${"side"in e?`${e.side}-`:""}${e.lineNumber}`}function ct(e){return e.startingLine===0&&e.totalLines===1/0&&e.bufferBefore===0&&e.bufferAfter===0}const ft="-1,-1";function ut(e){return e?.some(t=>t.lineNumber===0)??!1}function ht(e){const t=e[0];return t!=null&&t.length>0?t:void 0}function mt(e){return e.startingLine===0&&e.totalLines>0}function pt(e,t){return e.endsWith(`\r
|
|
2
2
|
`)?t+`\r
|
|
3
3
|
`:e.endsWith("\r")?t+"\r":e.endsWith(`
|
|
4
4
|
`)?t+`
|
|
@@ -122,4 +122,4 @@ import{ih as _,kP as re,kQ as oe,kR as se,kS as de,kT as le,kU as ce,kV as Z,kW
|
|
|
122
122
|
${a}
|
|
123
123
|
${e}
|
|
124
124
|
}
|
|
125
|
-
}`}function Lt(e,t){const i=ne(t);return e.replace(_e,i)}function Ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}const Ve=new WeakMap;function $(e){const t=Ve.get(e);return t??e}function Et({code:e,pre:t,columnType:i,rowSpan:n,containerSize:a=!1}={}){return e==null&&(e=document.createElement("code"),e.setAttribute("data-code",""),i!=null&&e.setAttribute(`data-${i}`,""),t?.appendChild(e)),n!=null?e.style.setProperty("grid-row",`span ${n}`):e.style.removeProperty("grid-row"),a?e.setAttribute("data-container-size",""):e.removeAttribute("data-container-size"),e}function At(e,t){if(t==null)return;const i=e.shadowRoot??e.attachShadow({mode:"open"});i.innerHTML===""&&(i.innerHTML=t)}function Ct(e,{type:t,diffIndicators:i,disableBackground:n,disableLineNumbers:a,overflow:r,split:s,totalLines:d,customProperties:c}){if(c!=null)for(const l in c){const o=c[l];o!=null&&e.setAttribute(l,`${o}`)}switch(t==="diff"?(e.setAttribute("data-diff",""),e.removeAttribute("data-file")):(e.setAttribute("data-file",""),e.removeAttribute("data-diff")),i){case"bars":case"classic":e.setAttribute("data-indicators",i);break;case"none":e.removeAttribute("data-indicators")}return a?e.setAttribute("data-disable-line-numbers",""):e.removeAttribute("data-disable-line-numbers"),n?e.removeAttribute("data-background"):e.setAttribute("data-background",""),t==="diff"?e.setAttribute("data-diff-type",s?"split":"single"):e.removeAttribute("data-diff-type"),e.setAttribute("data-overflow",r),e.style.setProperty("--diffs-min-number-column-width-default",`${`${d}`.length}ch`),e}function Nt(e){if(typeof HTMLStyleElement<"u"&&e instanceof HTMLStyleElement)return!0;const t=e.tagName??e.nodeName;return typeof t=="string"&&t.toLowerCase()==="style"}function Mt(e,t,i){const n=new Map;for(const a of e){const r=$(a);n.set(r,i?.slotNames.get(r)??t(a))}return{provided:e,current:e,slotNames:n}}function Pt(e,t,i){for(const n of t){const a=$(n);e.slotNames.has(a)||e.slotNames.set(a,i(n))}e.provided=t,e.current=t}function It(e,t,i){if(e==null)return i(t);const n=$(t);let a=e.slotNames.get(n);return a==null&&(a=i(t),e.slotNames.set(n,a)),a}function Tt(e){return e?.useTokenTransformer===!0||e?.onTokenClick!=null||e?.onTokenEnter!=null||e?.onTokenLeave!=null}function Rt(e,t){const i=e?.offsetHeight??0;if(e==null||i===0){t();return}e.style.minHeight=`${i}px`;try{t(),e.offsetHeight}finally{e.style.minHeight=""}}function Ut({shadowRoot:e,currentNode:t,themeCSS:i}){if(i.trim()===""){t?.remove();return}return t??=qe(),t.textContent=i,t.parentNode!==e&&e.appendChild(t),t}function qe(){const e=document.createElement("style");return e.setAttribute(fe,""),e}let We;function Ht(){return We??="safari"in window&&"pushNotification"in window.safari||/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}if(typeof HTMLElement<"u"&&customElements.get("diffs-container")==null){let e;class t extends HTMLElement{constructor(){if(super(),this.shadowRoot!=null)return;const n=this.attachShadow({mode:"open"});e==null&&(e=new CSSStyleSheet,e.replaceSync(Be)),n.adoptedStyleSheets=[e]}connectedCallback(){const n=this.shadowRoot??this.attachShadow({mode:"open"});$e(n)}}customElements.define(ue,t)}const Ke=1;function Ye(e,...t){return`ck${Ke}:${JSON.stringify([e,...t])}`}const
|
|
125
|
+
}`}function Lt(e,t){const i=ne(t);return e.replace(_e,i)}function Ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}const Ve=new WeakMap;function $(e){const t=Ve.get(e);return t??e}function Et({code:e,pre:t,columnType:i,rowSpan:n,containerSize:a=!1}={}){return e==null&&(e=document.createElement("code"),e.setAttribute("data-code",""),i!=null&&e.setAttribute(`data-${i}`,""),t?.appendChild(e)),n!=null?e.style.setProperty("grid-row",`span ${n}`):e.style.removeProperty("grid-row"),a?e.setAttribute("data-container-size",""):e.removeAttribute("data-container-size"),e}function At(e,t){if(t==null)return;const i=e.shadowRoot??e.attachShadow({mode:"open"});i.innerHTML===""&&(i.innerHTML=t)}function Ct(e,{type:t,diffIndicators:i,disableBackground:n,disableLineNumbers:a,overflow:r,split:s,totalLines:d,customProperties:c}){if(c!=null)for(const l in c){const o=c[l];o!=null&&e.setAttribute(l,`${o}`)}switch(t==="diff"?(e.setAttribute("data-diff",""),e.removeAttribute("data-file")):(e.setAttribute("data-file",""),e.removeAttribute("data-diff")),i){case"bars":case"classic":e.setAttribute("data-indicators",i);break;case"none":e.removeAttribute("data-indicators")}return a?e.setAttribute("data-disable-line-numbers",""):e.removeAttribute("data-disable-line-numbers"),n?e.removeAttribute("data-background"):e.setAttribute("data-background",""),t==="diff"?e.setAttribute("data-diff-type",s?"split":"single"):e.removeAttribute("data-diff-type"),e.setAttribute("data-overflow",r),e.style.setProperty("--diffs-min-number-column-width-default",`${`${d}`.length}ch`),e}function Nt(e){if(typeof HTMLStyleElement<"u"&&e instanceof HTMLStyleElement)return!0;const t=e.tagName??e.nodeName;return typeof t=="string"&&t.toLowerCase()==="style"}function Mt(e,t,i){const n=new Map;for(const a of e){const r=$(a);n.set(r,i?.slotNames.get(r)??t(a))}return{provided:e,current:e,slotNames:n}}function Pt(e,t,i){for(const n of t){const a=$(n);e.slotNames.has(a)||e.slotNames.set(a,i(n))}e.provided=t,e.current=t}function It(e,t,i){if(e==null)return i(t);const n=$(t);let a=e.slotNames.get(n);return a==null&&(a=i(t),e.slotNames.set(n,a)),a}function Tt(e){return e?.useTokenTransformer===!0||e?.onTokenClick!=null||e?.onTokenEnter!=null||e?.onTokenLeave!=null}function Rt(e,t){const i=e?.offsetHeight??0;if(e==null||i===0){t();return}e.style.minHeight=`${i}px`;try{t(),e.offsetHeight}finally{e.style.minHeight=""}}function Ut({shadowRoot:e,currentNode:t,themeCSS:i}){if(i.trim()===""){t?.remove();return}return t??=qe(),t.textContent=i,t.parentNode!==e&&e.appendChild(t),t}function qe(){const e=document.createElement("style");return e.setAttribute(fe,""),e}let We;function Ht(){return We??="safari"in window&&"pushNotification"in window.safari||/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}if(typeof HTMLElement<"u"&&customElements.get("diffs-container")==null){let e;class t extends HTMLElement{constructor(){if(super(),this.shadowRoot!=null)return;const n=this.attachShadow({mode:"open"});e==null&&(e=new CSSStyleSheet,e.replaceSync(Be)),n.adoptedStyleSheets=[e]}connectedCallback(){const n=this.shadowRoot??this.attachShadow({mode:"open"});$e(n)}}customElements.define(ue,t)}const Ke=1;function Ye(e,...t){return`ck${Ke}:${JSON.stringify([e,...t])}`}const je="/dev/null";function zt(e,t,i,n=!1){if(e===null&&t===null)throw new Error("parseDiffFromFile: You must pass oldFile, newFile, or both");const a=e??Q(),r=t??Q(),s=be(a.name,r.name,a.contents,r.contents,a.header,r.header,i),d=he(s,{cacheKey:(()=>{const l=e?.cacheKey,o=t?.cacheKey;return l!=null&&o!=null?Ye("diff",l,o):void 0})(),oldFile:a,newFile:r,throwOnError:n});if(d==null)throw new Error("parseDiffFrom: FileInvalid diff -- probably need to fix something -- if the files are the same maybe?");e===null?(d.type="new",d.prevName=void 0):t===null&&(d.type="deleted",d.prevName=void 0);const c=t?.lang??(t===null?e?.lang:void 0);return c!=null&&(d.lang=c),d}function Q(){return{name:je,contents:""}}export{kt as A,$e as B,Ut as C,Lt as D,Ht as E,Rt as F,Et as G,vt as H,tt as I,Ct as J,wt as K,V as L,ut as M,ft as N,nt as R,bt as S,et as a,pt as b,Ye as c,rt as d,dt as e,at as f,lt as g,st as h,ct as i,gt as j,ht as k,ot as l,Tt as m,it as n,G as o,zt as p,At as q,It as r,mt as s,Mt as t,ve as u,yt as v,Pt as w,xt as x,Nt as y,St as z};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{f as fe,r as E,j as o}from"./vendor-react-BUCujlKS.js";import{ll as Ae,f as oe,w as ge,h as de,aT as xe,aj as _e,dR as ye,I as Y,B as ne,e0 as Ce,e2 as ve,e3 as je,e1 as we,d$ as Ne,Z as Se,aS as be,aU as Pe,aR as ke,dm as De,L as me,lm as qe,N as Oe,ln as Te,lo as he,cH as Ke,cM as Ve,dh as We,aE as ze,cQ as Qe,cP as Ge,cO as ie,lp as Je,cR as Ue,aQ as ce,lq as Xe,cX as Ye,lr as Ze,ls as et}from"./useAppFontEffects-DGlvOqP_.js";import{u as tt,ac as st,a as Z}from"./index-DxNa7xYB.js";import{x as He,bv as ae}from"./runtimeEndpointReset-CZ5aafpl.js";import{c as nt,p as rt}from"./vendor-zustand-BAGL70zf.js";import{p as ot}from"./parseDiffFromFile-BUgn-T9p.js";import{j as Me}from"./computeVirtualFileMetrics-C2WM6JC2.js";function it(s,e=10){const n=[];let t;for(const u of s.split(`
|
|
2
|
+
`)){const h=u.match(Ae);if(h!=null){t!=null&&(t.hunkLines.length>0&&(le(t,e,"trailing"),pe(t,n)),t=void 0);const r=parseInt(h[3]),c=parseInt(h[1]),d=parseInt(h[4]??"1"),l=parseInt(h[2]??"1");isNaN(r)||isNaN(c)||isNaN(d)||isNaN(l)?n.push(u):t={additionStart:r,deletionStart:c,additionCount:0,deletionCount:0,hunkLines:[],contextLines:[]};continue}if(t==null){n.push(u);continue}if(u.startsWith(" "))t.contextLines.push(u);else if(u!==""){if(t.hunkLines.length>0&&t.contextLines.length>e*2){const r=t.contextLines.length-e*2,c=t.contextLines.slice(-e);le(t,e,"trailing");const{additionCount:d,deletionCount:l}=t;pe(t,n),t={additionStart:t.additionStart+d+r,deletionStart:t.deletionStart+l+r,deletionCount:0,additionCount:0,contextLines:c,hunkLines:[]}}le(t,e,t.hunkLines.length===0?"leading":"before-change"),t.hunkLines.push(u),u.startsWith("+")?t.additionCount+=1:u.startsWith("-")&&(t.deletionCount+=1)}}t!=null&&t.hunkLines.length>0&&(le(t,e,"trailing"),pe(t,n));const i=n.join(`
|
|
3
|
+
`);return s.endsWith(`
|
|
4
|
+
`)?`${i}
|
|
5
|
+
`:i}function le(s,e,n){if(n==="leading"&&s.contextLines.length>e){const t=s.contextLines.length-e;s.contextLines.splice(0,t),s.additionStart+=t,s.deletionStart+=t}return n==="trailing"&&s.contextLines.length>e&&(s.contextLines.length=e),s.contextLines.length>0&&(Me(s.hunkLines,s.contextLines),s.additionCount+=s.contextLines.length,s.deletionCount+=s.contextLines.length,s.contextLines.length=0),s}function pe(s,e){e.push(`@@ -${Le(s.deletionStart,s.deletionCount)} +${Le(s.additionStart,s.additionCount)} @@`),Me(e,s.hunkLines)}function Le(s,e){return e===1?`${s}`:`${s},${e}`}function Mt(s){const e=fe.c(74),{branches:n,currentBranch:t,base:i,onSelect:u,mobile:h}=s,r=h===void 0?!1:h,{t:c}=oe(),d=ge(),l=r&&!d.enabled,[m,v]=E.useState(!1),[P,w]=E.useState("");let k;e[0]!==i||e[1]!==c?(k=i?He(i):c("gitView.pr.field.baseBranch"),e[0]=i,e[1]=c,e[2]=k):k=e[2];const x=k;let N;e[3]===Symbol.for("react.memo_cache_sentinel")?(N=S=>{v(S),S||w("")},e[3]=N):N=e[3];const R=N;let f;e[4]!==r?(f=de(xe({size:r?"default":"sm"}),"min-w-0 max-w-48"),e[4]=r,e[5]=f):f=e[5];const y=r||void 0;let b;e[6]!==c?(b=c("gitView.pr.field.baseBranch"),e[6]=c,e[7]=b):b=e[7];const B=l?"dialog":void 0,C=l?m:void 0,z=!t;let L;e[8]!==l?(L=l?()=>R(!0):void 0,e[8]=l,e[9]=L):L=e[9];let F;e[10]===Symbol.for("react.memo_cache_sentinel")?(F=o.jsx(Y,{name:"git-branch",className:"size-3.5"}),e[10]=F):F=e[10];let T;e[11]!==x?(T=o.jsx("span",{className:"truncate",children:x}),e[11]=x,e[12]=T):T=e[12];let A;e[13]===Symbol.for("react.memo_cache_sentinel")?(A=o.jsx(Y,{name:"arrow-down-s",className:"size-3.5"}),e[13]=A):A=e[13];let D;e[14]!==x||e[15]!==L||e[16]!==T||e[17]!==f||e[18]!==y||e[19]!==b||e[20]!==B||e[21]!==C||e[22]!==z?(D=o.jsxs(ne,{variant:"outline",className:f,"data-mobile-comparison-trigger":y,"aria-label":b,"aria-haspopup":B,"aria-expanded":C,title:x,disabled:z,onClick:L,children:[F,T,A]}),e[14]=x,e[15]=L,e[16]=T,e[17]=f,e[18]=y,e[19]=b,e[20]=B,e[21]=C,e[22]=z,e[23]=D):D=e[23];const _=D,Q=r?"[&_[data-slot=command-input-wrapper]]:h-11":void 0,$=!l,U=r?"h-11":void 0;let G;e[24]!==c?(G=c("gitView.branch.searchPlaceholder"),e[24]=c,e[25]=G):G=e[25];let W;e[26]!==c?(W=c("gitView.branch.searchPlaceholder"),e[26]=c,e[27]=W):W=e[27];let O;e[28]!==P||e[29]!==$||e[30]!==U||e[31]!==G||e[32]!==W?(O=o.jsx(Ce,{autoFocus:$,className:U,value:P,onValueChange:w,placeholder:G,"aria-label":W}),e[28]=P,e[29]=$,e[30]=U,e[31]=G,e[32]=W,e[33]=O):O=e[33];const K=r?"max-h-[min(45dvh,24rem)]":void 0;let I;e[34]!==c?(I=c("gitView.branch.empty"),e[34]=c,e[35]=I):I=e[35];let H;e[36]!==I?(H=o.jsx(ve,{children:I}),e[36]=I,e[37]=H):H=e[37];let q;e[38]!==i||e[39]!==n||e[40]!==t||e[41]!==r||e[42]!==u||e[43]!==m||e[44]!==P?(q=m&&_e([...new Set(n)].filter(S=>S!==t).sort().map(lt),P,at).map(S=>o.jsxs(ye,{value:S.ref,className:r?"min-h-11":void 0,onSelect:()=>{u(S.ref),R(!1)},children:[o.jsx("span",{className:"min-w-0 flex-1 truncate",title:S.ref,children:S.label}),(S.ref===i||S.label===i)&&o.jsx(Y,{name:"check",className:"size-3.5"})]},S.ref)),e[38]=i,e[39]=n,e[40]=t,e[41]=r,e[42]=u,e[43]=m,e[44]=P,e[45]=q):q=e[45];let j;e[46]!==q?(j=o.jsx(je,{children:q}),e[46]=q,e[47]=j):j=e[47];let a;e[48]!==K||e[49]!==H||e[50]!==j?(a=o.jsxs(we,{className:K,children:[H,j]}),e[48]=K,e[49]=H,e[50]=j,e[51]=a):a=e[51];let M;e[52]!==Q||e[53]!==O||e[54]!==a?(M=o.jsxs(Ne,{shouldFilter:!1,className:Q,onKeyDown:ct,children:[O,a]}),e[52]=Q,e[53]=O,e[54]=a,e[55]=M):M=e[55];const p=M;if(l){let S;e[56]!==c?(S=c("gitView.pr.field.baseBranch"),e[56]=c,e[57]=S):S=e[57];let X;e[58]===Symbol.for("react.memo_cache_sentinel")?(X=()=>R(!1),e[58]=X):X=e[58];let ee;e[59]!==m||e[60]!==p||e[61]!==S?(ee=o.jsx(Se,{open:m,title:S,onClose:X,children:p}),e[59]=m,e[60]=p,e[61]=S,e[62]=ee):ee=e[62];let re;return e[63]!==ee||e[64]!==_?(re=o.jsxs(o.Fragment,{children:[_,ee]}),e[63]=ee,e[64]=_,e[65]=re):re=e[65],re}let g;e[66]!==_?(g=o.jsx(be,{asChild:!0,children:_}),e[66]=_,e[67]=g):g=e[67];let V;e[68]!==p?(V=o.jsx(Pe,{align:"start",className:"w-72 max-w-[calc(100vw-2rem)] p-0",children:p}),e[68]=p,e[69]=V):V=e[69];let J;return e[70]!==m||e[71]!==g||e[72]!==V?(J=o.jsxs(ke,{open:m,onOpenChange:R,children:[g,V]}),e[70]=m,e[71]=g,e[72]=V,e[73]=J):J=e[73],J}function at(s){return[s.label]}function lt(s){return{ref:s.startsWith("remotes/")?`refs/${s}`:`refs/heads/${s}`,label:He(s)}}function ct(s){s.key!=="Escape"&&s.stopPropagation()}function Bt(s){const e=fe.c(77),{commits:n,selectedHash:t,loading:i,error:u,onSelect:h,onRefresh:r,mobile:c}=s,d=c===void 0?!1:c,{t:l}=oe(),m=ge(),v=d&&!m.enabled,P=tt(mt),[w,k]=E.useState(!1),[x,N]=E.useState("");let R;e[0]!==i||e[1]!==r?(R=g=>{k(g),g?i||r():N("")},e[0]=i,e[1]=r,e[2]=R):R=e[2];const f=R;let y;e[3]!==d?(y=de(xe({size:d?"default":"sm"}),"min-w-0 max-w-48"),e[3]=d,e[4]=y):y=e[4];const b=d||void 0;let B;e[5]!==f||e[6]!==v?(B=v?()=>f(!0):void 0,e[5]=f,e[6]=v,e[7]=B):B=e[7];const C=v?"dialog":void 0,z=v?w:void 0;let L;e[8]!==l?(L=l("commitComparison.select"),e[8]=l,e[9]=L):L=e[9];let F;e[10]!==t||e[11]!==l?(F=t??l("commitComparison.select"),e[10]=t,e[11]=l,e[12]=F):F=e[12];let T;e[13]===Symbol.for("react.memo_cache_sentinel")?(T=o.jsx(Y,{name:"git-commit",className:"size-3.5"}),e[13]=T):T=e[13];let A;e[14]!==t||e[15]!==l?(A=t?.slice(0,8)??l("commitComparison.select"),e[14]=t,e[15]=l,e[16]=A):A=e[16];let D;e[17]!==A?(D=o.jsx("span",{className:"truncate",children:A}),e[17]=A,e[18]=D):D=e[18];let _;e[19]===Symbol.for("react.memo_cache_sentinel")?(_=o.jsx(Y,{name:"arrow-down-s",className:"size-3.5"}),e[19]=_):_=e[19];let Q;e[20]!==D||e[21]!==y||e[22]!==b||e[23]!==B||e[24]!==C||e[25]!==z||e[26]!==L||e[27]!==F?(Q=o.jsxs(ne,{variant:"outline",className:y,"data-mobile-comparison-trigger":b,onClick:B,"aria-haspopup":C,"aria-expanded":z,"aria-label":L,title:F,children:[T,D,_]}),e[20]=D,e[21]=y,e[22]=b,e[23]=B,e[24]=C,e[25]=z,e[26]=L,e[27]=F,e[28]=Q):Q=e[28];const $=Q,U=d?"[&_[data-slot=command-input-wrapper]]:h-11":void 0,G=!v,W=d?"h-11":void 0;let O;e[29]!==l?(O=l("commitComparison.search"),e[29]=l,e[30]=O):O=e[30];let K;e[31]!==l?(K=l("commitComparison.search"),e[31]=l,e[32]=K):K=e[32];let I;e[33]!==x||e[34]!==G||e[35]!==W||e[36]!==O||e[37]!==K?(I=o.jsx(Ce,{autoFocus:G,className:W,value:x,onValueChange:N,placeholder:O,"aria-label":K}),e[33]=x,e[34]=G,e[35]=W,e[36]=O,e[37]=K,e[38]=I):I=e[38];let H;e[39]!==f||e[40]!==n||e[41]!==u||e[42]!==i||e[43]!==d||e[44]!==r||e[45]!==h||e[46]!==w||e[47]!==x||e[48]!==t||e[49]!==l||e[50]!==P?(H=i?o.jsxs("div",{className:"flex items-center justify-center gap-2 p-4 typography-meta text-muted-foreground",children:[o.jsx(Y,{name:"loader-4",className:"size-4 animate-spin"}),l("diffView.state.loadingChanges")]}):u?o.jsxs("div",{className:"flex flex-col items-center gap-2 p-4 typography-meta text-muted-foreground",children:[o.jsx("span",{children:l("commitComparison.loadError")}),o.jsx("span",{className:"max-w-full break-words",children:u}),o.jsx(ne,{variant:"outline",size:d?"lg":"sm",onClick:r,children:l("diffView.actions.retry")})]}):o.jsxs(we,{className:d?"max-h-[min(45dvh,24rem)]":void 0,children:[o.jsx(ve,{children:l("commitComparison.noCommits")}),o.jsx(je,{children:w&&_e(n,x,ut).map(g=>o.jsxs(ye,{value:g.hash,className:d?"min-h-11":void 0,onSelect:()=>{h(g),f(!1)},children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"truncate typography-ui-label font-semibold",title:g.message,children:g.message}),o.jsxs("div",{className:"flex min-w-0 gap-1 typography-meta text-muted-foreground",children:[o.jsxs("span",{className:"min-w-0 truncate",children:[g.author_name," · ",Number.isNaN(new Date(g.date).getTime())?g.date:De(new Date(g.date),P,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})]}),o.jsxs("span",{className:"shrink-0",children:["· ",g.hash.slice(0,8)]})]})]}),g.hash===t&&o.jsx(Y,{name:"check",className:"size-3.5"})]},g.hash))})]}),e[39]=f,e[40]=n,e[41]=u,e[42]=i,e[43]=d,e[44]=r,e[45]=h,e[46]=w,e[47]=x,e[48]=t,e[49]=l,e[50]=P,e[51]=H):H=e[51];let q;e[52]!==U||e[53]!==I||e[54]!==H?(q=o.jsxs(Ne,{shouldFilter:!1,className:U,onKeyDown:dt,children:[I,H]}),e[52]=U,e[53]=I,e[54]=H,e[55]=q):q=e[55];const j=q;if(v){let g;e[56]!==l?(g=l("commitComparison.select"),e[56]=l,e[57]=g):g=e[57];let V;e[58]!==f?(V=()=>f(!1),e[58]=f,e[59]=V):V=e[59];let J;e[60]!==w||e[61]!==j||e[62]!==g||e[63]!==V?(J=o.jsx(Se,{open:w,title:g,onClose:V,children:j}),e[60]=w,e[61]=j,e[62]=g,e[63]=V,e[64]=J):J=e[64];let S;return e[65]!==J||e[66]!==$?(S=o.jsxs(o.Fragment,{children:[$,J]}),e[65]=J,e[66]=$,e[67]=S):S=e[67],S}let a;e[68]!==$?(a=o.jsx(be,{asChild:!0,children:$}),e[68]=$,e[69]=a):a=e[69];let M;e[70]!==j?(M=o.jsx(Pe,{align:"start",className:"w-[32rem] max-w-[calc(100vw-2rem)] p-0",children:j}),e[70]=j,e[71]=M):M=e[71];let p;return e[72]!==f||e[73]!==w||e[74]!==a||e[75]!==M?(p=o.jsxs(ke,{open:w,onOpenChange:f,children:[a,M]}),e[72]=f,e[73]=w,e[74]=a,e[75]=M,e[76]=p):p=e[76],p}function ut(s){return[s.message,s.author_name,s.hash]}function dt(s){s.key!=="Escape"&&s.stopPropagation()}function mt(s){return s.timeFormatPreference}const ft="openchamber.git-base-branch",ht=100,ue=(s,e)=>JSON.stringify([Z(),s,e]),pt=nt()(rt((s,e)=>({overrides:{},getOverride:(n,t)=>!n||!t?null:e().overrides[ue(n,t)]??null,setOverride:(n,t,i)=>{!n||!t||!i||s(u=>{const h=ue(n,t),r=Object.entries({...u.overrides,[h]:i});for(;r.length>ht;)r.shift();return{overrides:Object.fromEntries(r)}})},clearOverride:(n,t)=>{!n||!t||s(i=>{const u=ue(n,t);if(!(u in i.overrides))return i;const h={...i.overrides};return delete h[u],{overrides:h}})}}),{name:ft,storage:st(),partialize:s=>({overrides:s.overrides})}));function At(s,e,n){const t=fe.c(32),i=me(gt);let u;t[0]!==s||t[1]!==n?(u=b=>n&&s?b.directories.get(s)?.lastStatusFetch??0:0,t[0]=s,t[1]=n,t[2]=u):u=t[2];const h=me(u);let r;t[3]!==e||t[4]!==s||t[5]!==i?(r=JSON.stringify([i,s,e]),t[3]=e,t[4]=s,t[5]=i,t[6]=r):r=t[6];const c=r;let d;t[7]!==e||t[8]!==s?(d=s&&e?ue(s,e):null,t[7]=e,t[8]=s,t[9]=d):d=t[9];const l=d;let m;t[10]!==l?(m=b=>l?b.overrides[l]??null:null,t[10]=l,t[11]=m):m=t[11];const v=pt(m),[P,w]=E.useState(null);let k;t[12]!==e||t[13]!==s||t[14]!==n||t[15]!==c||t[16]!==v?(k=()=>{if(!n||!s||!e||v)return;let b=!1;const B=Z();return qe(s,e).then(C=>{const{base:z}=C;b||Z()!==B||w(L=>L?.key===c&&L.base===z?L:{key:c,base:z})}).catch(()=>{b||Z()!==B||w(C=>C?.key===c?C:{key:c,base:null})}),()=>{b=!0}},t[12]=e,t[13]=s,t[14]=n,t[15]=c,t[16]=v,t[17]=k):k=t[17];let x;t[18]!==e||t[19]!==s||t[20]!==n||t[21]!==c||t[22]!==v||t[23]!==h?(x=[e,s,n,c,v,h],t[18]=e,t[19]=s,t[20]=n,t[21]=c,t[22]=v,t[23]=h,t[24]=x):x=t[24],E.useEffect(k,x);const N=v??(P?.key===c?P.base:null),R=!!v||P?.key===c;let f;t[25]!==i||t[26]!==h?(f=JSON.stringify([i,h]),t[25]=i,t[26]=h,t[27]=f):f=t[27];let y;return t[28]!==N||t[29]!==R||t[30]!==f?(y={base:N,resolved:R,revision:f},t[28]=N,t[29]=R,t[30]=f,t[31]=y):y=t[31],y}function gt(s){return s.runtimeKey}const xt=[];function Dt(s,e,n,t){const{git:i}=Oe(),{t:u}=oe(),h=me(x=>x.runtimeKey),r=Te(s??"",e,h),c=he(x=>x.selections.get(r)??null),d=he(x=>x.select),[l,m]=E.useState(null),v=E.useRef(0),P=E.useRef(t);P.current=t;const w=E.useCallback(async()=>{if(!s||!n)return;const x=++v.current,N=Z();m({key:r,status:"loading"});try{const R=await i.getGitLog(s,{maxCount:50,to:e?`refs/heads/${e}`:"HEAD"});if(v.current!==x||Z()!==N)return;const f=R.all.slice(0,50);if(m({key:r,status:"ready",commits:f}),!he.getState().selections.has(r)){const y=P.current?f.find(b=>b.hash===P.current):f[0];y&&d(r,y)}}catch(R){if(v.current!==x||Z()!==N)return;m({key:r,status:"error",message:R instanceof Error?R.message:u("commitComparison.loadError")})}},[e,s,n,i,r,d,u]);E.useEffect(()=>(w(),()=>{v.current+=1}),[w]);const k=l?.key===r?l:null;return{selectedCommit:c,commits:k?.status==="ready"?k.commits:xt,loading:n&&(!k||k.status==="loading"),error:k?.status==="error"?k.message:null,refresh:w,select:x=>d(r,x)}}const Ee=[],yt=[],Ct=6e4,vt=30,te=new Map,jt=s=>{for(te.delete(s.key),te.set(s.key,{list:s,readAt:Date.now()});te.size>vt;)te.delete(te.keys().next().value??"")},wt=s=>({kind:"pr",number:s.number,sourceRepo:{owner:s.project.owner,repo:s.project.name}}),Nt=s=>`${s.project.owner}/${s.project.name}#${s.number}`,St=(s,e,n)=>{const t=Xe(s,e);return{prs:[...new Map([...n?s:[],...t].map(u=>[Nt(u),u])).values()],incompleteProjectIds:e.incompleteProjectIds??[]}};function qt(s,e,n,t,i){const{sourceControl:u}=Oe(),{t:h}=oe(),r=me(a=>a.runtimeKey),c=n?.provider==="github"||n?.provider==="gitlab"?n:null,d=c?JSON.stringify(Ke(c)):"",l=E.useRef(c);l.current=c;const m=c,v=Ve(s)?.provider,P=m?.provider??v??null,w=JSON.stringify([r,s,e,m?.repositoryId??null]),k=ae(a=>a.selections.get(w)??null),x=k?.source??null,N=ae(a=>a.select),R=ae(a=>a.acceptHandoff),f=i&&k?.handoff!==i?i:null,[y,b]=E.useState(""),B=We(y,350).trim(),C=JSON.stringify([w,B,d]),[z,L]=E.useState(()=>te.get(C)?.list??null),F=E.useRef(z);F.current=z;const[T,A]=E.useState(!1),D=E.useRef(0),_=E.useRef({key:C,enabled:t});_.current={key:C,enabled:t};const Q=ze(a=>m?a.entries[Qe(m)]:void 0),$=m?Ge(Q,m):{authChecked:!1,connected:!1},U=ie(a=>a.ensureEntry),G=ie(a=>a.setParams),W=ie(a=>a.refreshTargets),O=ie(a=>m&&e?Je(a.entries,m,e):null);E.useEffect(()=>{const a=l.current;if(!t||!a||!e||x||!$.authChecked||!$.connected)return;const M=Ue(a,e);U(M),G(M,{directory:a.directory,branch:e,remoteName:a.primaryRemote,canShow:!0,identity:a,readContext:a,sourceControl:u,authChecked:$.authChecked,connected:$.connected}),W([{context:a,branch:e}])},[$.authChecked,$.connected,e,d,t,U,W,x,G,u]);const K=O?.changeRequest??O?.pr??null,I=O?.project??null;E.useEffect(()=>{!t||!$.connected||!K||!I||ae.getState().selections.has(w)||N(w,{kind:"pr",number:K.number,sourceRepo:{owner:I.owner,repo:I.name}})},[$.connected,K,I,t,N,w]),E.useEffect(()=>{i&&R(w,i)},[R,i,w]);const H=E.useCallback(async a=>{if(!s||!t||_.current.key!==C||!_.current.enabled)return;const M=++D.current,p=Z(),g=F.current,V=g?.key===C&&g.status==="ready"?g:null,J=a?.prs??V?.prs??Ee;a?A(!0):(A(!1),V||L({key:C,status:"loading"}));try{const S=l.current;if(!u)throw new Error(h(ce("session.githubPrPicker.error.runtimeUnavailable",P)));if(!S||!$.connected)throw new Error(h(ce("session.githubPrPicker.empty.notConnected",P)));const X=a?a.page+1:1,ee=await u.changeRequestsList(S,{page:X,query:B||void 0});if(D.current!==M||Z()!==p||_.current.key!==C||!_.current.enabled)return;const re=St(J,ee,!!a),Re={key:C,status:"ready",...re,page:X,hasMore:ee.hasMore,error:null};jt(Re),L(Re)}catch(S){if(D.current===M&&Z()===p&&_.current.key===C&&_.current.enabled){const X=S instanceof Error?S.message:h(ce("session.githubPrPicker.toast.loadMoreFailed",P));L(a?{...a,error:X}:{key:C,status:"error",message:X})}}finally{D.current===M&&A(!1)}},[$.connected,s,t,C,P,B,u,h]),q=E.useCallback(()=>{const a=te.get(C);return a&&F.current!==a.list&&L(a.list),a&&Date.now()-a.readAt<Ct?Promise.resolve():H()},[C,H]);E.useEffect(()=>((F.current?.key!==C||F.current.status!=="ready"||te.has(C))&&q(),()=>{D.current+=1}),[C,q]);const j=z?.key===C?z:null;return{enabled:t,readContext:m,provider:P,selectedSource:f??x,prs:j?.status==="ready"?j.prs:Ee,query:y,setQuery:b,loading:t&&(!j||j.status==="loading"||B!==y.trim()),loadingMore:T,hasMore:j?.status==="ready"&&j.hasMore,incompleteProjectIds:j?.status==="ready"?j.incompleteProjectIds:yt,error:j?.status==="error"?j.message:j?.status==="ready"?j.error:null,refresh:()=>H(),revalidate:q,loadMore:()=>j?.status==="ready"&&j.hasMore&&!T?H(j):Promise.resolve(),select:a=>N(w,wt(a))}}function Tt(s){const e=fe.c(77),{comparison:n,mobile:t}=s,i=t===void 0?!1:t,{t:u}=oe();let h;e[0]!==n.provider||e[1]!==u?(h=p=>u(ce(p,n.provider)),e[0]=n.provider,e[1]=u,e[2]=h):h=e[2];const r=h;let c;e[3]!==n.provider?(c=p=>Ye(n.provider,p),e[3]=n.provider,e[4]=c):c=e[4];const d=c,l=ge(),m=i&&!l.enabled,[v,P]=E.useState(!1);let w,k;e[5]!==n.enabled?(w=()=>{n.enabled||P(!1)},k=[n.enabled],e[5]=n.enabled,e[6]=w,e[7]=k):(w=e[6],k=e[7]),E.useEffect(w,k);let x;e[8]!==r?(x=r("pullRequestComparison.select"),e[8]=r,e[9]=x):x=e[9];const N=x;let R;e[10]!==n?(R=p=>{P(p),p&&!n.loading&&n.revalidate(),p||n.setQuery("")},e[10]=n,e[11]=R):R=e[11];const f=R,y=n.selectedSource;let b;e[12]!==i?(b=de(xe({size:i?"default":"sm"}),"min-w-0 max-w-48"),e[12]=i,e[13]=b):b=e[13];const B=i||void 0;let C;e[14]!==f||e[15]!==m?(C=m?()=>f(!0):void 0,e[14]=f,e[15]=m,e[16]=C):C=e[16];const z=m?"dialog":void 0,L=m?v:void 0;let F;e[17]!==N||e[18]!==d||e[19]!==y?(F=y?.sourceRepo?`${y.sourceRepo.owner}/${y.sourceRepo.repo} ${d(y.number)}`:N,e[17]=N,e[18]=d,e[19]=y,e[20]=F):F=e[20];let T;e[21]!==N||e[22]!==d||e[23]!==y?(T=y?d(y.number):N,e[21]=N,e[22]=d,e[23]=y,e[24]=T):T=e[24];let A;e[25]!==T?(A=o.jsx("span",{className:"truncate",children:T}),e[25]=T,e[26]=A):A=e[26];let D;e[27]===Symbol.for("react.memo_cache_sentinel")?(D=o.jsx(Y,{name:"arrow-down-s",className:"size-3.5"}),e[27]=D):D=e[27];let _;e[28]!==N||e[29]!==C||e[30]!==z||e[31]!==L||e[32]!==F||e[33]!==A||e[34]!==b||e[35]!==B?(_=o.jsxs(ne,{variant:"outline",className:b,"data-mobile-comparison-trigger":B,onClick:C,"aria-haspopup":z,"aria-expanded":L,"aria-label":N,title:F,children:[A,D]}),e[28]=N,e[29]=C,e[30]=z,e[31]=L,e[32]=F,e[33]=A,e[34]=b,e[35]=B,e[36]=_):_=e[36];const Q=_,$=!m,U=n.query,G=n.setQuery;let W;e[37]!==r?(W=r("session.githubPrPicker.searchPlaceholder"),e[37]=r,e[38]=W):W=e[38];let O;e[39]!==r?(O=r("session.githubPrPicker.searchPlaceholder"),e[39]=r,e[40]=O):O=e[40];let K;e[41]!==n.query||e[42]!==n.setQuery||e[43]!==$||e[44]!==W||e[45]!==O?(K=o.jsx(Ce,{autoFocus:$,value:U,onValueChange:G,placeholder:W,"aria-label":O}),e[41]=n.query,e[42]=n.setQuery,e[43]=$,e[44]=W,e[45]=O,e[46]=K):K=e[46];let I;e[47]!==f||e[48]!==n||e[49]!==i||e[50]!==v||e[51]!==d||e[52]!==y||e[53]!==r?(I=n.loading?o.jsxs("div",{className:"flex items-center gap-2 p-4 typography-meta text-muted-foreground",children:[o.jsx(Y,{name:"loader-4",className:"size-4 animate-spin"}),r("session.githubPrPicker.loading.pullRequests")]}):n.error&&n.prs.length===0?o.jsxs("div",{className:"flex flex-col items-center gap-2 p-4 typography-meta text-muted-foreground",children:[o.jsx("span",{children:n.error}),o.jsx(ne,{variant:"outline",size:"sm",onClick:()=>{n.refresh()},children:r("diffView.actions.retry")})]}):o.jsxs(we,{className:de("min-h-0",i&&"max-h-[min(45dvh,24rem)]"),children:[o.jsx(ve,{children:r("session.githubPrPicker.empty.noPullRequestsFound")}),o.jsx(je,{children:v&&n.prs.map(p=>{const g=`${p.project.owner}/${p.project.name}#${p.number}`;return o.jsxs(ye,{value:g,className:i?"min-h-11":void 0,onSelect:()=>{n.select(p),f(!1)},children:[o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsxs("div",{className:"truncate typography-ui-label",title:p.title,children:[d(p.number)," ",p.title]}),o.jsxs("div",{className:"truncate typography-meta text-muted-foreground",children:[p.project.owner,"/",p.project.name," · ",p.head," → ",p.base]})]}),y?.number===p.number&&y.sourceRepo?.owner===p.project.owner&&y.sourceRepo?.repo===p.project.name&&o.jsx(Y,{name:"check",className:"size-3.5"})]},g)})}),n.error&&o.jsx("p",{className:"px-3 py-2 typography-meta text-muted-foreground",children:n.error}),!n.error&&n.incompleteProjectIds.length>0&&o.jsxs("div",{className:"flex items-center justify-between gap-2 px-3 py-2 typography-meta text-muted-foreground",children:[o.jsx("span",{children:r("pullRequestComparison.partial")}),o.jsx(ne,{variant:"outline",size:"sm",onClick:()=>{n.refresh()},children:r("diffView.actions.retry")})]}),n.hasMore&&o.jsx(ne,{variant:"ghost",size:"sm",disabled:n.loadingMore,onClick:()=>{n.loadMore()},children:n.error?r("diffView.actions.retry"):r("session.githubPrPicker.actions.loadMore")})]}),e[47]=f,e[48]=n,e[49]=i,e[50]=v,e[51]=d,e[52]=y,e[53]=r,e[54]=I):I=e[54];let H;e[55]!==K||e[56]!==I?(H=o.jsxs(Ne,{className:"min-h-0",shouldFilter:!1,onKeyDown:bt,children:[K,I]}),e[55]=K,e[56]=I,e[57]=H):H=e[57];const q=H;if(m){let p;e[58]!==f?(p=()=>f(!1),e[58]=f,e[59]=p):p=e[59];let g;e[60]!==N||e[61]!==v||e[62]!==q||e[63]!==p?(g=o.jsx(Se,{open:v,title:N,onClose:p,children:q}),e[60]=N,e[61]=v,e[62]=q,e[63]=p,e[64]=g):g=e[64];let V;return e[65]!==g||e[66]!==Q?(V=o.jsxs(o.Fragment,{children:[Q,g]}),e[65]=g,e[66]=Q,e[67]=V):V=e[67],V}let j;e[68]!==Q?(j=o.jsx(be,{asChild:!0,children:Q}),e[68]=Q,e[69]=j):j=e[69];let a;e[70]!==q?(a=o.jsx(Pe,{align:"start",className:"flex max-h-[min(var(--available-height),32rem)] w-[32rem] max-w-[calc(100vw-2rem)] flex-col overflow-hidden p-0",children:q}),e[70]=q,e[71]=a):a=e[71];let M;return e[72]!==f||e[73]!==v||e[74]!==j||e[75]!==a?(M=o.jsxs(ke,{open:v,onOpenChange:f,children:[j,a]}),e[72]=f,e[73]=v,e[74]=j,e[75]=a,e[76]=M):M=e[76],M}function bt(s){s.key!=="Escape"&&s.stopPropagation()}const Pt=64,kt=3,se=new Map,Kt=s=>/^Binary files .+ differ$/m.test(s)||/^GIT binary patch$/m.test(s),$e=s=>{const e=s.search(/^@@\s/m);if(e<0)return null;const n=s.slice(0,e);return/^index (?:[a-f0-9]{40}|[a-f0-9]{64})\.\.(?:[a-f0-9]{40}|[a-f0-9]{64})(?: [0-7]+)?$/m.test(n)?n:null},Vt=(s,e)=>{const n=$e(s);return n!==null&&n===$e(e)},Wt=(s,e,n=kt)=>{const t=`${s}\0${n}\0${e}`,i=se.get(t);if(i)return se.delete(t),se.set(t,i),i;const u=Lt(e),h=u?Ze(it(e,n),{oldFile:{name:s,contents:u.before},newFile:{name:s,contents:u.after}})??Fe(s):et(Rt(s,e))[0]?.files[0]??Fe(s);for(se.set(t,h);se.size>Pt;){const r=se.keys().next().value;if(!r)break;se.delete(r)}return h},Rt=(s,e)=>!e.trim()||e.startsWith("diff --git ")||/^--- [^\n]*\r?\n\+\+\+ /m.test(e)?e:`Index: ${s}
|
|
6
|
+
===================================================================
|
|
7
|
+
--- ${s}
|
|
8
|
+
+++ ${s}
|
|
9
|
+
${e}`,Lt=s=>{if(!s.startsWith("diff --git ")&&!/^--- [^\n]*\t?\r?\n\+\+\+ [^\n]*\t?(?:\r?\n|$)/m.test(s))return;const e=[...s.matchAll(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@[^\n]*(?:\r?\n|$)/gm)];if(e.length!==1)return;const n=e[0],t=Number.parseInt(n[1]??"",10),i=Number.parseInt(n[2]??"",10);if(t>1||i>1||!Number.isFinite(t)||!Number.isFinite(i))return;const u=(n.index??0)+n[0].length,h=s.slice(u),r=[],c=[];let d;for(const l of h.split(/\r?\n/)){if(l.startsWith("diff --git ")||l.startsWith("@@ "))break;if(l.startsWith("\\")){if(d==="-"||d===" "){const m=r.at(-1);m&&(m.newline=!1)}if(d==="+"||d===" "){const m=c.at(-1);m&&(m.newline=!1)}continue}if(l.startsWith("-")){r.push({text:l.slice(1),newline:!0}),d="-";continue}if(l.startsWith("+")){c.push({text:l.slice(1),newline:!0}),d="+";continue}l.startsWith(" ")&&(r.push({text:l.slice(1),newline:!0}),c.push({text:l.slice(1),newline:!0}),d=" ")}return{before:Ie(r),after:Ie(c)}},Ie=s=>s.map(e=>e.text+(e.newline?`
|
|
10
|
+
`:"")).join(""),Fe=s=>ot({name:s,contents:""},{name:s,contents:""}),Be=s=>{if(!s)return[];const e=[...s.matchAll(/^@@\s/gm)].map(t=>t.index);if(e.length===0)return[];const n=s.slice(0,e[0]);return e.map((t,i)=>{const u=n+s.slice(t,e[i+1]??s.length);return u.endsWith(`
|
|
11
|
+
`)?u:`${u}
|
|
12
|
+
`})},zt=(s,e)=>!Number.isInteger(e)||e<0?null:Be(s)[e]??null,Qt=s=>{const e=[];for(const[n,t]of Be(s).entries()){const i=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[^\n]*(?:\n|$)/m.exec(t);if(!i)continue;let u=Number(i[1]),h=Number(i[3]),r;for(const c of t.slice(i.index+i[0].length).split(`
|
|
13
|
+
`))c.startsWith("-")?r={index:n,side:"deletions",lineNumber:u++}:c.startsWith("+")?r={index:n,side:"additions",lineNumber:h++}:c.startsWith(" ")&&(u+=1,h+=1);r&&Number.isSafeInteger(r.lineNumber)&&r.lineNumber>0&&e.push(r)}return e};export{Mt as B,Bt as C,Tt as P,At as a,Dt as b,qt as c,zt as e,Wt as f,Qt as g,Vt as h,Kt as i,pt as u};
|