cli-jaw 2.2.4 → 2.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/bin/cli-jaw.js +9 -1
- package/dist/bin/cli-jaw.js.map +1 -1
- package/dist/bin/commands/chat.js +9 -1
- package/dist/bin/commands/chat.js.map +1 -1
- package/dist/bin/commands/design.js +172 -0
- package/dist/bin/commands/design.js.map +1 -0
- package/dist/bin/commands/dispatch-helpers.js +28 -0
- package/dist/bin/commands/dispatch-helpers.js.map +1 -1
- package/dist/bin/commands/dispatch.js +133 -31
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +1 -1
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/init.js +1 -1
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/map.js +53 -0
- package/dist/bin/commands/map.js.map +1 -0
- package/dist/bin/commands/mcp.js +1 -1
- package/dist/bin/commands/mcp.js.map +1 -1
- package/dist/bin/commands/skill.js +64 -3
- package/dist/bin/commands/skill.js.map +1 -1
- package/dist/bin/commands/status.js +1 -1
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/bin/commands/tui/channel.js +20 -4
- package/dist/bin/commands/tui/channel.js.map +1 -1
- package/dist/bin/commands/tui/fullscreen-mode.js +17 -9
- package/dist/bin/commands/tui/fullscreen-mode.js.map +1 -1
- package/dist/bin/commands/tui/input-handler.js +30 -22
- package/dist/bin/commands/tui/input-handler.js.map +1 -1
- package/dist/bin/commands/tui/overlays.js +36 -8
- package/dist/bin/commands/tui/overlays.js.map +1 -1
- package/dist/bin/commands/tui/queue-command.js +71 -0
- package/dist/bin/commands/tui/queue-command.js.map +1 -0
- package/dist/bin/commands/tui/renderer.js +1 -0
- package/dist/bin/commands/tui/renderer.js.map +1 -1
- package/dist/bin/commands/tui/simple-mode.js +39 -1
- package/dist/bin/commands/tui/simple-mode.js.map +1 -1
- package/dist/bin/commands/tui/slash-command-runner.js +92 -4
- package/dist/bin/commands/tui/slash-command-runner.js.map +1 -1
- package/dist/bin/commands/tui/types.js +6 -4
- package/dist/bin/commands/tui/types.js.map +1 -1
- package/dist/bin/commands/tui/ws-handler.js +78 -9
- package/dist/bin/commands/tui/ws-handler.js.map +1 -1
- package/dist/bin/commands/worker.js +1 -3
- package/dist/bin/commands/worker.js.map +1 -1
- package/dist/bin/postinstall.js +3 -3
- package/dist/bin/postinstall.js.map +1 -1
- package/dist/server.js +7 -2
- package/dist/server.js.map +1 -1
- package/dist/src/agent/args.js +3 -0
- package/dist/src/agent/args.js.map +1 -1
- package/dist/src/agent/lifecycle-handler.js +20 -0
- package/dist/src/agent/lifecycle-handler.js.map +1 -1
- package/dist/src/agent/spawn.js +24 -2
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/bgtask/notifier.js +2 -1
- package/dist/src/bgtask/notifier.js.map +1 -1
- package/dist/src/bgtask/recover.js +8 -7
- package/dist/src/bgtask/recover.js.map +1 -1
- package/dist/src/bgtask/registry.js +2 -1
- package/dist/src/bgtask/registry.js.map +1 -1
- package/dist/src/bgtask/runner.js +3 -2
- package/dist/src/bgtask/runner.js.map +1 -1
- package/dist/src/browser/vision.js +3 -1
- package/dist/src/browser/vision.js.map +1 -1
- package/dist/src/browser/web-ai/tab-lease-store.js +1 -3
- package/dist/src/browser/web-ai/tab-lease-store.js.map +1 -1
- package/dist/src/cli/commands.js +26 -4
- package/dist/src/cli/commands.js.map +1 -1
- package/dist/src/cli/handlers-runtime.js +7 -1
- package/dist/src/cli/handlers-runtime.js.map +1 -1
- package/dist/src/cli/handlers.js +1 -1
- package/dist/src/cli/handlers.js.map +1 -1
- package/dist/src/cli/tui/jawcode-bridge.js +13 -14
- package/dist/src/cli/tui/jawcode-bridge.js.map +1 -1
- package/dist/src/cli/tui/markdown.js +1 -1
- package/dist/src/cli/tui/markdown.js.map +1 -1
- package/dist/src/cli/tui/overlay.js +65 -10
- package/dist/src/cli/tui/overlay.js.map +1 -1
- package/dist/src/cli/tui/render/frame.js +109 -103
- package/dist/src/cli/tui/render/frame.js.map +1 -1
- package/dist/src/cli/tui/transcript.js +31 -9
- package/dist/src/cli/tui/transcript.js.map +1 -1
- package/dist/src/core/bus.js +2 -0
- package/dist/src/core/bus.js.map +1 -1
- package/dist/src/core/chat-sessions.js +2 -0
- package/dist/src/core/chat-sessions.js.map +1 -1
- package/dist/src/core/codex-config.js +2 -1
- package/dist/src/core/codex-config.js.map +1 -1
- package/dist/src/core/config.js +6 -3
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/event-bus.js +1 -1
- package/dist/src/core/event-bus.js.map +1 -1
- package/dist/src/core/logger.js +9 -1
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/main-session.js +2 -1
- package/dist/src/core/main-session.js.map +1 -1
- package/dist/src/core/runtime-settings.js +2 -1
- package/dist/src/core/runtime-settings.js.map +1 -1
- package/dist/src/core/session-ops.js +1 -1
- package/dist/src/core/session-ops.js.map +1 -1
- package/dist/src/core/widget-watcher.js +113 -0
- package/dist/src/core/widget-watcher.js.map +1 -0
- package/dist/src/discord/bot.js +42 -31
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/discord/channel-types.js +16 -0
- package/dist/src/discord/channel-types.js.map +1 -1
- package/dist/src/discord/commands.js +8 -6
- package/dist/src/discord/commands.js.map +1 -1
- package/dist/src/discord/discord-file.js +4 -2
- package/dist/src/discord/discord-file.js.map +1 -1
- package/dist/src/discord/forwarder.js +10 -6
- package/dist/src/discord/forwarder.js.map +1 -1
- package/dist/src/ide/diff.js +1 -1
- package/dist/src/ide/diff.js.map +1 -1
- package/dist/src/manager/dashboard-service.js +5 -5
- package/dist/src/manager/dashboard-service.js.map +1 -1
- package/dist/src/manager/design/path-guards.js +86 -0
- package/dist/src/manager/design/path-guards.js.map +1 -0
- package/dist/src/manager/design/schema.js +54 -0
- package/dist/src/manager/design/schema.js.map +1 -0
- package/dist/src/manager/design/snapshots.js +62 -0
- package/dist/src/manager/design/snapshots.js.map +1 -0
- package/dist/src/manager/design/store.js +269 -0
- package/dist/src/manager/design/store.js.map +1 -0
- package/dist/src/manager/design/watcher.js +49 -0
- package/dist/src/manager/design/watcher.js.map +1 -0
- package/dist/src/manager/memory/embedding/vec-store.js +1 -1
- package/dist/src/manager/memory/embedding/vec-store.js.map +1 -1
- package/dist/src/manager/registry.js +84 -0
- package/dist/src/manager/registry.js.map +1 -1
- package/dist/src/manager/routes/dashboard-design.js +234 -0
- package/dist/src/manager/routes/dashboard-design.js.map +1 -0
- package/dist/src/manager/routes/dashboard-memory.js +1 -1
- package/dist/src/manager/routes/dashboard-memory.js.map +1 -1
- package/dist/src/manager/routes/embedded-browser.js +497 -0
- package/dist/src/manager/routes/embedded-browser.js.map +1 -0
- package/dist/src/manager/routes/telegram-hub.js +4 -3
- package/dist/src/manager/routes/telegram-hub.js.map +1 -1
- package/dist/src/manager/server.js +17 -2
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/manager/telegram-hub/hub-bot.js +127 -7
- package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
- package/dist/src/memory/heartbeat.js +15 -14
- package/dist/src/memory/heartbeat.js.map +1 -1
- package/dist/src/memory/identity.js +3 -2
- package/dist/src/memory/identity.js.map +1 -1
- package/dist/src/memory/memory.js +3 -2
- package/dist/src/memory/memory.js.map +1 -1
- package/dist/src/memory/reflect.js +2 -1
- package/dist/src/memory/reflect.js.map +1 -1
- package/dist/src/memory/runtime.js +3 -2
- package/dist/src/memory/runtime.js.map +1 -1
- package/dist/src/memory/shared.js +4 -3
- package/dist/src/memory/shared.js.map +1 -1
- package/dist/src/memory/worklog.js +3 -2
- package/dist/src/memory/worklog.js.map +1 -1
- package/dist/src/messaging/runtime.js +4 -3
- package/dist/src/messaging/runtime.js.map +1 -1
- package/dist/src/messaging/send.js +1 -1
- package/dist/src/messaging/send.js.map +1 -1
- package/dist/src/orchestrator/attestation.js +33 -0
- package/dist/src/orchestrator/attestation.js.map +1 -1
- package/dist/src/orchestrator/collect.js +9 -4
- package/dist/src/orchestrator/collect.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +0 -142
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/gateway.js +3 -3
- package/dist/src/orchestrator/gateway.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +19 -1
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +93 -16
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/orchestrator/worker-replay-notice.js +31 -11
- package/dist/src/orchestrator/worker-replay-notice.js.map +1 -1
- package/dist/src/prompt/builder.js +20 -20
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/context-hooks.js +2 -1
- package/dist/src/prompt/context-hooks.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +69 -45
- package/dist/src/prompt/templates/employee.md +3 -2
- package/dist/src/prompt/templates/orchestration.md +13 -15
- package/dist/src/prompt/templates/skills.md +1 -0
- package/dist/src/routes/avatar.js +4 -3
- package/dist/src/routes/avatar.js.map +1 -1
- package/dist/src/routes/bgtask.js +2 -1
- package/dist/src/routes/bgtask.js.map +1 -1
- package/dist/src/routes/browser.js +2 -1
- package/dist/src/routes/browser.js.map +1 -1
- package/dist/src/routes/command.js +32 -2
- package/dist/src/routes/command.js.map +1 -1
- package/dist/src/routes/messaging.js +6 -5
- package/dist/src/routes/messaging.js.map +1 -1
- package/dist/src/routes/orchestrate.js +144 -29
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/routes/quota.js +217 -33
- package/dist/src/routes/quota.js.map +1 -1
- package/dist/src/routes/settings.js +3 -2
- package/dist/src/routes/settings.js.map +1 -1
- package/dist/src/routes/static.js +37 -2
- package/dist/src/routes/static.js.map +1 -1
- package/dist/src/telegram/bot.js +123 -67
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/telegram/elicitation-buttons.js +71 -0
- package/dist/src/telegram/elicitation-buttons.js.map +1 -0
- package/dist/src/telegram/fetch-body.js +11 -0
- package/dist/src/telegram/fetch-body.js.map +1 -0
- package/dist/src/telegram/forwarder.js +3 -5
- package/dist/src/telegram/forwarder.js.map +1 -1
- package/dist/src/telegram/rich-message.js +85 -11
- package/dist/src/telegram/rich-message.js.map +1 -1
- package/dist/src/telegram/status-update-buffer.js +15 -0
- package/dist/src/telegram/status-update-buffer.js.map +1 -0
- package/dist/src/telegram/telegram-file.js +5 -4
- package/dist/src/telegram/telegram-file.js.map +1 -1
- package/dist/src/telegram/voice.js +5 -4
- package/dist/src/telegram/voice.js.map +1 -1
- package/dist/src/workflows/planaudit.js +2 -1
- package/dist/src/workflows/planaudit.js.map +1 -1
- package/dist/src/workflows/repo-map/index.js +157 -0
- package/dist/src/workflows/repo-map/index.js.map +1 -0
- package/dist/src/workflows/scope-sandbox.js +1 -0
- package/dist/src/workflows/scope-sandbox.js.map +1 -1
- package/package.json +5 -2
- package/public/css/chat.css +17 -1
- package/public/css/orc-state.css +2 -1
- package/public/css/variables.css +0 -1
- package/public/dist/assets/{AdvancedExport-qa01DKDO.js → AdvancedExport-DsDpqXoH.js} +1 -1
- package/public/dist/assets/{Agent-CHCXjXSN.js → Agent-CrLn42Jb.js} +1 -1
- package/public/dist/assets/{Browser-Df4B5cnl.js → Browser-B52Bdaeu.js} +1 -1
- package/public/dist/assets/BrowserPanel-Bh3JpkZO.js +3 -0
- package/public/dist/assets/BrowserPanel-DpntR8EJ.css +1 -0
- package/public/dist/assets/{ChannelsDiscord-BqPckWSY.js → ChannelsDiscord-Bt1_rtNC.js} +1 -1
- package/public/dist/assets/{ChannelsTelegram-B9Feggy7.js → ChannelsTelegram-BLV0m1oq.js} +1 -1
- package/public/dist/assets/{CodeCanvas-BzhNLZVF.js → CodeCanvas-COgs1P6U.js} +2 -2
- package/public/dist/assets/{DashboardEmbeddingSection-CocnWvOE.js → DashboardEmbeddingSection-DMgHZQnn.js} +1 -1
- package/public/dist/assets/{DashboardMeta-C9BshDiw.js → DashboardMeta-B7CVqXcU.js} +1 -1
- package/public/dist/assets/DesignPanel-3XpGjuEW.css +1 -0
- package/public/dist/assets/DesignPanel-BGMPhZSx.js +2 -0
- package/public/dist/assets/{DiffPanel-DsFwEFjd.js → DiffPanel-B_ljObDk.js} +1 -1
- package/public/dist/assets/{Display-D_r_BwdJ.js → Display-BF-rACK6.js} +1 -1
- package/public/dist/assets/{DocPanel-6Z_RELzd.js → DocPanel-DtYwv3n3.js} +1 -1
- package/public/dist/assets/{Employees-DL3R3z7K.js → Employees-D3hnciP0.js} +1 -1
- package/public/dist/assets/{FolderPanel-DdlzWAuK.js → FolderPanel-DbPhzzvi.js} +3 -3
- package/public/dist/assets/{Heartbeat-BblY8Z4a.js → Heartbeat-Dk-_TtKV.js} +1 -1
- package/public/dist/assets/{InlineWarn-DrqqH39Y.js → InlineWarn-DDzeHxQw.js} +1 -1
- package/public/dist/assets/{MarkdownRenderer-Cl0oEICj.js → MarkdownRenderer-CHacL2M_.js} +2 -2
- package/public/dist/assets/MarkdownRenderer-DyrB9FbZ.js +1 -0
- package/public/dist/assets/{Mcp-CP6h9IQP.js → Mcp-SfytKWGX.js} +1 -1
- package/public/dist/assets/{Memory-BWcfxzCz.js → Memory-BOicOlcn.js} +1 -1
- package/public/dist/assets/{MilkdownWysiwygEditor-B-j0IUe6.js → MilkdownWysiwygEditor-BNoLGbFC.js} +1 -1
- package/public/dist/assets/{ModelProvider-D4LBX7K2.js → ModelProvider-DQ2AA0gJ.js} +1 -1
- package/public/dist/assets/{Network-TkeE8ldB.js → Network-DISUhige.js} +1 -1
- package/public/dist/assets/{NotesGraphWorkspace-B55jfeiE.js → NotesGraphWorkspace-Dm1xUFl8.js} +1 -1
- package/public/dist/assets/PanelLayoutProvider-XpTo-i_s.js +1 -0
- package/public/dist/assets/{Permissions-Dc5xnPMu.js → Permissions-CnKt44dN.js} +1 -1
- package/public/dist/assets/Permissions-DNT0TxYL.js +1 -0
- package/public/dist/assets/{Profile-Bacunq6W.js → Profile-B8yBO3Ju.js} +1 -1
- package/public/dist/assets/{Prompts-D36Mj9HS.js → Prompts-5lNQ5qOm.js} +1 -1
- package/public/dist/assets/{SpeechKeys-Dda4Dt6M.js → SpeechKeys-BepaIHBa.js} +1 -1
- package/public/dist/assets/{TelegramHub-CuJoPPib.js → TelegramHub--DNjRAwW.js} +1 -1
- package/public/dist/assets/{TerminalPanel-DSCJeGjp.js → TerminalPanel-DQovYfwz.js} +1 -1
- package/public/dist/assets/{TransportStatusChips-C5QcQVCy.js → TransportStatusChips-Bld0yXi7.js} +1 -1
- package/public/dist/assets/app-BJVZZqTm.js +55 -0
- package/public/dist/assets/app-CvNmD8jx.css +1 -0
- package/public/dist/assets/architecture-7EHR7CIX-D-6Nx315.js +1 -0
- package/public/dist/assets/{architectureDiagram-3BPJPVTR-C4lVLx8A.js → architectureDiagram-3BPJPVTR-q8idz3H3.js} +1 -1
- package/public/dist/assets/{bgtask-badge-b7pj_Dbh.js → bgtask-badge-Bz8_kUKd.js} +1 -1
- package/public/dist/assets/bgtask-badge-iOk9R0RF.js +1 -0
- package/public/dist/assets/{blockDiagram-GPEHLZMM-BHjdqDcb.js → blockDiagram-GPEHLZMM-DGB0dsia.js} +1 -1
- package/public/dist/assets/{c4Diagram-AAUBKEIU-B1QuN7gf.js → c4Diagram-AAUBKEIU-ChP5YfVt.js} +1 -1
- package/public/dist/assets/channel-ByNDsZsH.js +1 -0
- package/public/dist/assets/{chunk-2J33WTMH-D1olIwij.js → chunk-2J33WTMH-D3OPoEHg.js} +1 -1
- package/public/dist/assets/{chunk-3OPIFGDE-Cf7991q8.js → chunk-3OPIFGDE-CULJ8ZHF.js} +1 -1
- package/public/dist/assets/{chunk-4BX2VUAB-zmO3Vjrm.js → chunk-4BX2VUAB-DGgktZYr.js} +1 -1
- package/public/dist/assets/{chunk-4EGX6M5U-B-uS9w6F.js → chunk-4EGX6M5U-BD3v8KR4.js} +1 -1
- package/public/dist/assets/chunk-55IACEB6-CQFLXxVc.js +1 -0
- package/public/dist/assets/{chunk-5DO6E6H7-AkI69lqb.js → chunk-5DO6E6H7-B-FbGqHn.js} +1 -1
- package/public/dist/assets/{chunk-5ZQYHXKU-C3d9OOmT.js → chunk-5ZQYHXKU-DVpWOoGS.js} +1 -1
- package/public/dist/assets/{chunk-727SXJPM-BOt5gU_h.js → chunk-727SXJPM-CZjR7q6H.js} +1 -1
- package/public/dist/assets/{chunk-AQP2D5EJ-CrRyjYkJ.js → chunk-AQP2D5EJ-BlGjnlsV.js} +1 -1
- package/public/dist/assets/{chunk-BR22UD5L-DR9GxWFk.js → chunk-BR22UD5L-MK8KuB9X.js} +1 -1
- package/public/dist/assets/{chunk-BSJP7CBP-B24w6Ihw.js → chunk-BSJP7CBP-ypXC4wBv.js} +1 -1
- package/public/dist/assets/{chunk-CSCIHK7Q-BPBO8B3q.js → chunk-CSCIHK7Q-CmvetykJ.js} +1 -1
- package/public/dist/assets/{chunk-FHYWG6QK-CXhRbK1g.js → chunk-FHYWG6QK-Do5csWDm.js} +1 -1
- package/public/dist/assets/{chunk-FMBD7UC4-tu50fn_l.js → chunk-FMBD7UC4-BXpT25MP.js} +1 -1
- package/public/dist/assets/{chunk-KSCS5N6A-CnJg0Z_l.js → chunk-KSCS5N6A-DtlfLqto.js} +1 -1
- package/public/dist/assets/{chunk-L5ZTLDWV-B3Ak80dW.js → chunk-L5ZTLDWV-Czv9NkHn.js} +1 -1
- package/public/dist/assets/{chunk-LZXEDZCA-C3fVGX8q.js → chunk-LZXEDZCA-vD7oFdiq.js} +1 -1
- package/public/dist/assets/{chunk-MPE355IW-iQbf4K4s.js → chunk-MPE355IW-2ei0PVn0.js} +1 -1
- package/public/dist/assets/{chunk-MZUSXYTE-BEKROhpC.js → chunk-MZUSXYTE-JO_qTk4K.js} +1 -1
- package/public/dist/assets/{chunk-N66VUXT2-DUtPpNne.js → chunk-N66VUXT2-BXL-FniY.js} +1 -1
- package/public/dist/assets/{chunk-ND2GUHAM-DW2SkbNq.js → chunk-ND2GUHAM-B9SIO-4a.js} +1 -1
- package/public/dist/assets/{chunk-NZK2D7GU-SJvHIVX3.js → chunk-NZK2D7GU-CqOo06-Z.js} +1 -1
- package/public/dist/assets/{chunk-O5CBEL6O-D_hkyy5c.js → chunk-O5CBEL6O-BWbe_grt.js} +1 -1
- package/public/dist/assets/{chunk-PUPMXCY4-DcRmz6F2.js → chunk-PUPMXCY4-aFTMGBaR.js} +1 -1
- package/public/dist/assets/chunk-QZHKN3VN-Becu19mF.js +1 -0
- package/public/dist/assets/{chunk-UIBZB4QT-CFemVDOF.js → chunk-UIBZB4QT-S8EH0jZR.js} +1 -1
- package/public/dist/assets/{chunk-WCWK7LTN-B6ske8a4.js → chunk-WCWK7LTN-EgrNk7Dj.js} +1 -1
- package/public/dist/assets/chunk-WU5MYG2G-CkoHFn0F.js +1 -0
- package/public/dist/assets/{chunk-XPW4576I-elhPZgkY.js → chunk-XPW4576I-8oydVjY6.js} +1 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-DVGoKviY.js +1 -0
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-BIZeptY-.js +1 -0
- package/public/dist/assets/{copy-text-BKruhU_y.js → copy-text-BDs2wKjA.js} +1 -1
- package/public/dist/assets/{cose-bilkent-S5V4N54A-B-gwVajW.js → cose-bilkent-S5V4N54A-PNmvcq_6.js} +1 -1
- package/public/dist/assets/{dagre-BM42HDAG-C9BDjgRM.js → dagre-BM42HDAG-BP_m3uo9.js} +1 -1
- package/public/dist/assets/{dagre-HAOs7bVl.js → dagre-Ct2n78X9.js} +1 -1
- package/public/dist/assets/{diagram-2AECGRRQ-CvEawheC.js → diagram-2AECGRRQ-DhgfR-ol.js} +1 -1
- package/public/dist/assets/{diagram-5GNKFQAL-Da4DwByP.js → diagram-5GNKFQAL-BRLvmdeK.js} +1 -1
- package/public/dist/assets/{diagram-KO2AKTUF-Cnhf5Czo.js → diagram-KO2AKTUF-Co3C18-Q.js} +1 -1
- package/public/dist/assets/{diagram-LMA3HP47-CMusMTT2.js → diagram-LMA3HP47-3SwoWQij.js} +1 -1
- package/public/dist/assets/{diagram-OG6HWLK6-D5nQR5rT.js → diagram-OG6HWLK6-bjEryAd3.js} +1 -1
- package/public/dist/assets/{dist-jZTs_0Zg.js → dist-B6T-R4xY.js} +1 -1
- package/public/dist/assets/{dist-woWoxWmX.js → dist-B8V2LYzt.js} +1 -1
- package/public/dist/assets/{dist-DL8oabBM.js → dist-BDPUxeoi.js} +1 -1
- package/public/dist/assets/{dist-Dpn3ujr3.js → dist-BMC_dTfR.js} +1 -1
- package/public/dist/assets/{dist-C4WouNM7.js → dist-BSf40pae.js} +1 -1
- package/public/dist/assets/{dist-CPOW-jfg.js → dist-BlMOeJym.js} +1 -1
- package/public/dist/assets/dist-BmXnOAlo.js +1 -0
- package/public/dist/assets/{dist-C_6E126b.js → dist-BqzMcuh8.js} +1 -1
- package/public/dist/assets/{dist-CHB0SFvU.js → dist-BvQlb9-o.js} +1 -1
- package/public/dist/assets/{dist-BvgkNZ7r.js → dist-C7pD0dEn.js} +1 -1
- package/public/dist/assets/{dist-DvlZh9GF.js → dist-CC2vK_6S.js} +1 -1
- package/public/dist/assets/{dist-wdt8RQwr.js → dist-CFU9RsAu.js} +1 -1
- package/public/dist/assets/{dist-Y5dy_sSf.js → dist-CS1XLdz3.js} +1 -1
- package/public/dist/assets/{dist-CiaEUSjf.js → dist-CjzfPsGt.js} +1 -1
- package/public/dist/assets/{dist-DlqIM5Y-.js → dist-CvzAXxlb.js} +1 -1
- package/public/dist/assets/{dist-CLMpv9qF.js → dist-D8SW_REQ.js} +1 -1
- package/public/dist/assets/dist-DLY5I6dK.js +1 -0
- package/public/dist/assets/{dist-DfOlJSUk.js → dist-DMZVNaIe.js} +1 -1
- package/public/dist/assets/{dist-BSwjNBYz.js → dist-DN-hkAIC.js} +1 -1
- package/public/dist/assets/dist-DPHcMCqI.js +1 -0
- package/public/dist/assets/{dist-DQR4gW5j.js → dist-DStWZVZ0.js} +1 -1
- package/public/dist/assets/{dist-BpbqDhsq.js → dist-DTcoHNXr.js} +1 -1
- package/public/dist/assets/{dist-DRKfpxOd.js → dist-DdJuxxG7.js} +1 -1
- package/public/dist/assets/{dist-KuP6Gt4m.js → dist-DhgwoIqj.js} +1 -1
- package/public/dist/assets/{dist-nbzW6Sn7.js → dist-DmjSXJAP.js} +1 -1
- package/public/dist/assets/{dist-8hLkyg-D.js → dist-cBBDKBli.js} +1 -1
- package/public/dist/assets/{dist-CKTQ2eXH.js → dist-ph7PUr0c.js} +1 -1
- package/public/dist/assets/{dist-DGJG2rr2.js → dist-qUky5WRy.js} +1 -1
- package/public/dist/assets/{dist-CYw9JGM_.js → dist-w2YzIhc5.js} +1 -1
- package/public/dist/assets/dist-xHOEvyuU.js +1 -0
- package/public/dist/assets/{dockerfile-Bq20q5i6.js → dockerfile-C0jniLkw.js} +1 -1
- package/public/dist/assets/{employees-DbgFV33i.js → employees-BYebrTfH.js} +1 -1
- package/public/dist/assets/{erDiagram-TEJ5UH35-BnsX5Dzt.js → erDiagram-TEJ5UH35-DQBxHU1q.js} +1 -1
- package/public/dist/assets/{error-normalize-DLzj47d_.js → error-normalize-BzeO0SXE.js} +1 -1
- package/public/dist/assets/eventmodeling-FCH6USID-BB1OVDLb.js +1 -0
- package/public/dist/assets/{factor-BfAVKjvH.js → factor-nzjoQ9cK.js} +1 -1
- package/public/dist/assets/{fields-MeoSVgIK.js → fields-zkeByFQW.js} +1 -1
- package/public/dist/assets/{flowDiagram-I6XJVG4X-BSy1p30u.js → flowDiagram-I6XJVG4X-BN90fCt5.js} +1 -1
- package/public/dist/assets/{ganttDiagram-6RSMTGT7-BILWylat.js → ganttDiagram-6RSMTGT7-B-JAlIhh.js} +1 -1
- package/public/dist/assets/gitGraph-WXDBUCRP-DAWTa5Fn.js +1 -0
- package/public/dist/assets/{gitGraphDiagram-PVQCEYII-BaRlZZ_k.js → gitGraphDiagram-PVQCEYII-CLL2G5U-.js} +1 -1
- package/public/dist/assets/{graphlib-DdtRn62K.js → graphlib-B6dRm8vZ.js} +1 -1
- package/public/dist/assets/idb-cache-ZH6lOebk.js +1 -0
- package/public/dist/assets/iframe-renderer-Clu9EYLW.js +1 -0
- package/public/dist/assets/iframe-renderer-DACMLTYf.js +142 -0
- package/public/dist/assets/info-J43DQDTF-C530y5-j.js +1 -0
- package/public/dist/assets/{infoDiagram-5YYISTIA-BElvxLr3.js → infoDiagram-5YYISTIA-CftYDPfc.js} +1 -1
- package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-DPQZsd5R.js → ishikawaDiagram-YF4QCWOH-BVa5AJbz.js} +1 -1
- package/public/dist/assets/javascript-DbM-pSY-.js +1 -0
- package/public/dist/assets/{journeyDiagram-JHISSGLW-BJZNR2qA.js → journeyDiagram-JHISSGLW-BeUKm6ME.js} +1 -1
- package/public/dist/assets/{kanban-definition-UN3LZRKU-OQLDtH0g.js → kanban-definition-UN3LZRKU-K5DYNY4p.js} +1 -1
- package/public/dist/assets/{manager-rHNwUB4e.css → manager-C4eNDNFt.css} +1 -1
- package/public/dist/assets/manager-pcvo6od1.js +13 -0
- package/public/dist/assets/{memory-QobGT0Kv.js → memory-DLD5Xpk8.js} +1 -1
- package/public/dist/assets/memory-oWWwCkg5.js +1 -0
- package/public/dist/assets/mermaid-loader-Bd9rYyxD.js +1 -0
- package/public/dist/assets/{mermaid-parser.core-D1KUUauv.js → mermaid-parser.core-Cz70RgAa.js} +1 -1
- package/public/dist/assets/mermaid-preprocess-0hqEN7sn.js +5 -0
- package/public/dist/assets/{mermaid.core-R6dUFqZC.js → mermaid.core-Dj5GOPe1.js} +2 -2
- package/public/dist/assets/mermaid.core-TSG49mwm.js +1 -0
- package/public/dist/assets/message-history-C6D4juRe.js +1 -0
- package/public/dist/assets/message-history-DdIshS4Q.js +1 -0
- package/public/dist/assets/{mindmap-definition-RKZ34NQL-B8WJHpYI.js → mindmap-definition-RKZ34NQL-PsH0E_3e.js} +1 -1
- package/public/dist/assets/{nsis-CIoRNUaw.js → nsis-BI3I3OhH.js} +1 -1
- package/public/dist/assets/packet-YPE3B663-BHcxn4sy.js +1 -0
- package/public/dist/assets/{page-shell-BeAyKBJW.js → page-shell-LF7vVVfG.js} +1 -1
- package/public/dist/assets/pi-settings-CBUGDAuT.js +1 -0
- package/public/dist/assets/pie-LRSECV5Y-DjigSia_.js +1 -0
- package/public/dist/assets/{pieDiagram-4H26LBE5-BuBruIcx.js → pieDiagram-4H26LBE5-Dtwtlr0z.js} +1 -1
- package/public/dist/assets/{pug-Cb8OCun5.js → pug-DHfNwv1w.js} +1 -1
- package/public/dist/assets/{quadrantDiagram-W4KKPZXB-B6rzGZvr.js → quadrantDiagram-W4KKPZXB-CAFUbaV6.js} +1 -1
- package/public/dist/assets/radar-GUYGQ44K-DPCrmsHJ.js +1 -0
- package/public/dist/assets/{react-dom-CZtrmbYs.js → react-dom-AWKMTIe7.js} +1 -1
- package/public/dist/assets/render-E2PXsTyS.js +122 -0
- package/public/dist/assets/{requirementDiagram-4Y6WPE33-Cvj5JknB.js → requirementDiagram-4Y6WPE33-CvBM4AjK.js} +1 -1
- package/public/dist/assets/{sankeyDiagram-5OEKKPKP-DNGNYR7j.js → sankeyDiagram-5OEKKPKP-cordQgRs.js} +1 -1
- package/public/dist/assets/{sequenceDiagram-3UESZ5HK-DuUAH96Z.js → sequenceDiagram-3UESZ5HK-DDAqRdga.js} +1 -1
- package/public/dist/assets/{settings-D70uFh8l.js → settings-DYIfnpYq.js} +1 -1
- package/public/dist/assets/settings-core-BURhLoX3.js +1 -0
- package/public/dist/assets/{settings-core-B2lw2bgO.js → settings-core-DRYE_5Wb.js} +1 -1
- package/public/dist/assets/settings-yyDc7X3c.js +1 -0
- package/public/dist/assets/{sidebar-BqWm2XWP.js → sidebar-Cn-KLQ0U.js} +3 -3
- package/public/dist/assets/{skills-CdNOfXlk.js → skills-Brt3opa5.js} +1 -1
- package/public/dist/assets/skills-KHfKUuAJ.js +1 -0
- package/public/dist/assets/{slash-commands-4Ntm5N7h.js → slash-commands-jMNf0b43.js} +1 -1
- package/public/dist/assets/slash-commands-nb096e6A.js +1 -0
- package/public/dist/assets/{stateDiagram-AJRCARHV-DGZNs20Q.js → stateDiagram-AJRCARHV-DUaoSRgZ.js} +1 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-BAesfdhr.js +1 -0
- package/public/dist/assets/{timeline-definition-PNZ67QCA-yDl1yISI.js → timeline-definition-PNZ67QCA-D85QNy9b.js} +1 -1
- package/public/dist/assets/{trace-drawer-DqAwwHHQ.js → trace-drawer-Dv5cDGLR.js} +1 -1
- package/public/dist/assets/treeView-BLDUP644-DmufUMul.js +1 -0
- package/public/dist/assets/treemap-LRROVOQU-Cg48uw_D.js +1 -0
- package/public/dist/assets/ui-BeyzLs7f.js +2 -0
- package/public/dist/assets/ui-DabvyDGc.js +1 -0
- package/public/dist/assets/{vennDiagram-CIIHVFJN-C0TNoBYO.js → vennDiagram-CIIHVFJN-CQSILdx8.js} +1 -1
- package/public/dist/assets/wardley-L42UT6IY-QZOEXU7f.js +1 -0
- package/public/dist/assets/{wardleyDiagram-YWT4CUSO-C6cJR4Ib.js → wardleyDiagram-YWT4CUSO-BZEVMlJ4.js} +1 -1
- package/public/dist/assets/{wiki-link-suggestions-BMHWTE4_.js → wiki-link-suggestions-DZQc78gj.js} +1 -1
- package/public/dist/assets/{xychartDiagram-2RQKCTM6-DqEqpcox.js → xychartDiagram-2RQKCTM6-C8573Tgs.js} +1 -1
- package/public/dist/index.html +2 -2
- package/public/dist/manager/index.html +2 -2
- package/public/js/diagram/iframe-renderer.ts +197 -49
- package/public/js/diagram/widget-validator.ts +17 -3
- package/public/js/features/chat-messages.ts +5 -1
- package/public/js/features/chat-scroll.ts +10 -5
- package/public/js/features/chat.ts +9 -1
- package/public/js/features/elicitation.ts +1 -5
- package/public/js/features/message-item-html.ts +3 -1
- package/public/js/features/process-block.ts +46 -3
- package/public/js/features/settings-mcp.ts +1 -1
- package/public/js/locale.ts +2 -2
- package/public/js/main.ts +15 -4
- package/public/js/preview-parent-origin.ts +73 -9
- package/public/js/render/chart-json.ts +2 -5
- package/public/js/render/compose-block.ts +2 -5
- package/public/js/render/dataframe.ts +2 -5
- package/public/js/render/diff-viewer.ts +2 -5
- package/public/js/render/link-preview.ts +1 -5
- package/public/js/render/markdown.ts +22 -0
- package/public/js/render/post-render.ts +7 -3
- package/public/js/render/sanitize.ts +6 -0
- package/public/js/render/search-results.ts +2 -5
- package/public/js/streaming-render.ts +12 -1
- package/public/js/ui.ts +6 -3
- package/public/js/ws.ts +39 -25
- package/public/locales/en.json +2 -1
- package/public/locales/ja.json +2 -1
- package/public/locales/ko.json +2 -1
- package/public/locales/zh.json +2 -1
- package/public/manager/src/InstancePreview.tsx +35 -0
- package/public/manager/src/SidebarRailRouter.tsx +209 -124
- package/public/manager/src/browser-panel/BrowserPanel.tsx +714 -17
- package/public/manager/src/browser-panel/browser-panel.css +305 -0
- package/public/manager/src/browser-panel/use-embedded-target-sync.ts +182 -0
- package/public/manager/src/components/DesktopPanelControls.tsx +1 -1
- package/public/manager/src/design-panel/DesignPageSelector.tsx +27 -0
- package/public/manager/src/design-panel/DesignPanel.tsx +265 -0
- package/public/manager/src/design-panel/DesignViewport.tsx +34 -0
- package/public/manager/src/design-panel/design-api.ts +106 -0
- package/public/manager/src/design-panel/design-panel.css +137 -0
- package/public/manager/src/design-panel/design-types.ts +43 -0
- package/public/manager/src/folder-panel/FolderPanel.tsx +15 -1
- package/public/manager/src/jaw-ceo/JawCeoWorkbenchButton.tsx +10 -5
- package/public/manager/src/jaw-ceo/jaw-ceo.css +8 -0
- package/public/manager/src/jaw-ceo/useJawCeoDashboardBridge.tsx +2 -1
- package/public/manager/src/panels/FileFolderSplitPanel.tsx +97 -0
- package/public/manager/src/panels/PanelErrorBoundary.tsx +44 -0
- package/public/manager/src/panels/PanelLayoutProvider.tsx +569 -86
- package/public/manager/src/panels/RightSidebar.tsx +389 -134
- package/public/manager/src/panels/desktop-bridge.ts +88 -0
- package/public/manager/src/panels/panel-layout-registry-state.ts +252 -10
- package/public/manager/src/panels/panels.css +479 -0
- package/public/manager/src/panels/right-sidebar-tab-display.ts +36 -0
- package/public/manager/src/panels/types.ts +79 -4
- package/public/manager/src/types.ts +11 -0
- package/scripts/bundle-sidecar.sh +3 -0
- package/scripts/check-strict-baseline.mjs +26 -2
- package/scripts/docs/check-docs.mts +87 -0
- package/scripts/docs/extract-commands.mts +215 -0
- package/scripts/docs/extract-routes.mts +350 -0
- package/scripts/release-gates.mjs +32 -0
- package/public/dist/assets/BrowserPanel-CV_bbQpM.css +0 -1
- package/public/dist/assets/BrowserPanel-Ua0Xck6V.js +0 -1
- package/public/dist/assets/MarkdownRenderer-BivJ4hJm.js +0 -1
- package/public/dist/assets/Permissions-CddCEaJl.js +0 -1
- package/public/dist/assets/app-BPsa7jSJ.css +0 -1
- package/public/dist/assets/app-DszWzakT.js +0 -55
- package/public/dist/assets/architecture-7EHR7CIX-GJhmD5MC.js +0 -1
- package/public/dist/assets/bgtask-badge-DZEQ5fMl.js +0 -1
- package/public/dist/assets/channel-Sut8CY6m.js +0 -1
- package/public/dist/assets/chunk-55IACEB6-C3KMx7HH.js +0 -1
- package/public/dist/assets/chunk-QZHKN3VN-C7Qk10ab.js +0 -1
- package/public/dist/assets/chunk-WU5MYG2G-BpCiJpUL.js +0 -1
- package/public/dist/assets/classDiagram-4FO5ZUOK-BVeAlcVw.js +0 -1
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-mvRsJL7t.js +0 -1
- package/public/dist/assets/dist-BQ6IjZAx.js +0 -1
- package/public/dist/assets/dist-CB1yXHdY.js +0 -1
- package/public/dist/assets/dist-El7lM3OZ.js +0 -1
- package/public/dist/assets/dist-ZXqltO6b.js +0 -1
- package/public/dist/assets/eventmodeling-FCH6USID-BASBZB6y.js +0 -1
- package/public/dist/assets/gitGraph-WXDBUCRP-C6UAXKTO.js +0 -1
- package/public/dist/assets/idb-cache-DQM-odDV.js +0 -1
- package/public/dist/assets/info-J43DQDTF-DZvaZ8fx.js +0 -1
- package/public/dist/assets/javascript-ocJZALE4.js +0 -1
- package/public/dist/assets/manager-CdNOlCyS.js +0 -13
- package/public/dist/assets/memory-BT-rs3ag.js +0 -1
- package/public/dist/assets/mermaid-loader-BMIvbrMb.js +0 -1
- package/public/dist/assets/mermaid-preprocess-CqOBWYEb.js +0 -5
- package/public/dist/assets/mermaid.core-CE6des8A.js +0 -1
- package/public/dist/assets/message-history-BY1UNJAO.js +0 -1
- package/public/dist/assets/message-history-BmP5JKio.js +0 -142
- package/public/dist/assets/packet-YPE3B663-Br_gfHDJ.js +0 -1
- package/public/dist/assets/pi-settings-BVYmGHWD.js +0 -1
- package/public/dist/assets/pie-LRSECV5Y-CPSw09Lc.js +0 -1
- package/public/dist/assets/radar-GUYGQ44K-D5jGe4n0.js +0 -1
- package/public/dist/assets/render-C3r-9_-J.js +0 -119
- package/public/dist/assets/settings-CJm8ZSJs.js +0 -1
- package/public/dist/assets/settings-core-gdS0lo1b.js +0 -1
- package/public/dist/assets/skills-DG_CbTEf.js +0 -1
- package/public/dist/assets/slash-commands-B9kOEhJ_.js +0 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-D2I0t9Bo.js +0 -1
- package/public/dist/assets/treeView-BLDUP644-i3ZwrLGf.js +0 -1
- package/public/dist/assets/treemap-LRROVOQU-CJRBfbOx.js +0 -1
- package/public/dist/assets/ui-Anw2S64o.js +0 -1
- package/public/dist/assets/ui-DsK6r0Xv.js +0 -2
- package/public/dist/assets/wardley-L42UT6IY-B1NLyOET.js +0 -1
- /package/public/dist/assets/{agent-meta-FyI15KAa.js → agent-meta-tiPlp7OI.js} +0 -0
- /package/public/dist/assets/{api-DvCd2Uff.js → api-C9dOxby7.js} +0 -0
- /package/public/dist/assets/{apl-CUNx2Nxr.js → apl-2tE96F_Y.js} +0 -0
- /package/public/dist/assets/{asciiarmor-B9JjJqLb.js → asciiarmor-ynSKiC17.js} +0 -0
- /package/public/dist/assets/{asn1-NstwUq_r.js → asn1-CfqO1VY8.js} +0 -0
- /package/public/dist/assets/{asterisk-Box6GWx7.js → asterisk-DSiRJoqT.js} +0 -0
- /package/public/dist/assets/{brainfuck-DAD60u2v.js → brainfuck-DTcanv-8.js} +0 -0
- /package/public/dist/assets/{chunk-AGHRB4JF-BeNb9aN4.js → chunk-AGHRB4JF-BXLzSehp.js} +0 -0
- /package/public/dist/assets/{chunk-NNHCCRGN-hPUSf84G.js → chunk-NNHCCRGN-D69GtSOc.js} +0 -0
- /package/public/dist/assets/{clike-B-3e4_rA.js → clike-qn72CMAj.js} +0 -0
- /package/public/dist/assets/{clojure-DpNVclFl.js → clojure-m8yDiYVc.js} +0 -0
- /package/public/dist/assets/{cmake-DzNe63Ys.js → cmake-4AHAWHiF.js} +0 -0
- /package/public/dist/assets/{cobol-CoytNvhw.js → cobol-CxxJP5eX.js} +0 -0
- /package/public/dist/assets/{coffeescript-Cq3xHp7h.js → coffeescript-BAB3zi48.js} +0 -0
- /package/public/dist/assets/{commonlisp-CVjsh9SW.js → commonlisp-BPbWuAds.js} +0 -0
- /package/public/dist/assets/{constants-EMUBd5RQ.js → constants-DzwdndBj.js} +0 -0
- /package/public/dist/assets/{crystal-BlIILE-v.js → crystal-CGuSsWYR.js} +0 -0
- /package/public/dist/assets/{css-D1TAh_-V.js → css-DszbR74r.js} +0 -0
- /package/public/dist/assets/{cypher-ZntLuJzU.js → cypher-GUnmv522.js} +0 -0
- /package/public/dist/assets/{cytoscape.esm-89N3cqwG.js → cytoscape.esm-D_XyYSBG.js} +0 -0
- /package/public/dist/assets/{d-CzwXOQ5h.js → d-Cfm0cznj.js} +0 -0
- /package/public/dist/assets/{desktop-bridge-B1whMBS2.js → desktop-bridge-CvdhnJQo.js} +0 -0
- /package/public/dist/assets/{diff-DI7-Ikca.js → diff-C6rPA7NX.js} +0 -0
- /package/public/dist/assets/{dist-B51C28kc.js → dist-AgQwqBLq.js} +0 -0
- /package/public/dist/assets/{dtd-7UKQtPWR.js → dtd-Dxh5tS6M.js} +0 -0
- /package/public/dist/assets/{dylan-CM1mkXYp.js → dylan-BdIVFR1j.js} +0 -0
- /package/public/dist/assets/{ebnf-Llv_5uW5.js → ebnf-iU-8xYFu.js} +0 -0
- /package/public/dist/assets/{ecl-uqtp9saI.js → ecl-DjbzOHI6.js} +0 -0
- /package/public/dist/assets/{eiffel-BqzGlVPY.js → eiffel-B2ID8LZ3.js} +0 -0
- /package/public/dist/assets/{elm-bajSbBYX.js → elm-B6vPcfMj.js} +0 -0
- /package/public/dist/assets/{erlang-B5uEM5Ke.js → erlang-nDQwRdZV.js} +0 -0
- /package/public/dist/assets/{esm-3SgqVBY5.js → esm-CT1xxdH5.js} +0 -0
- /package/public/dist/assets/{fcl-BcH_K33Z.js → fcl-Bf86o55I.js} +0 -0
- /package/public/dist/assets/{folder-drag-payload-DE3ZS9PZ.js → folder-drag-payload-Bhln9Mk2.js} +0 -0
- /package/public/dist/assets/{forth-DpLesGXt.js → forth-CeQJji0n.js} +0 -0
- /package/public/dist/assets/{fortran--G-GJVGI.js → fortran-Dm_CqDsH.js} +0 -0
- /package/public/dist/assets/{gas-DpoQvniR.js → gas-e3EfgE3p.js} +0 -0
- /package/public/dist/assets/{gherkin-Dr59UACG.js → gherkin-Dn_7tSzg.js} +0 -0
- /package/public/dist/assets/{groovy-Cn2K6Dx3.js → groovy-LaKuGRkK.js} +0 -0
- /package/public/dist/assets/{haskell-B7lFmXEG.js → haskell-D9nNX9Mr.js} +0 -0
- /package/public/dist/assets/{haxe-BHWvyysr.js → haxe-Rp176QXJ.js} +0 -0
- /package/public/dist/assets/{http-DBZ5ODWR.js → http-BOeYLbuM.js} +0 -0
- /package/public/dist/assets/{idb-cache-DTKWSF12.js → idb-cache-BzzftUET.js} +0 -0
- /package/public/dist/assets/{idl-D6JLbJZt.js → idl-DHv3vdme.js} +0 -0
- /package/public/dist/assets/{javascript-CMsRa3Ah.js → javascript-Dk2fbl1a.js} +0 -0
- /package/public/dist/assets/{jsx-runtime-B3ZGMGGg.js → jsx-runtime-gFMgZ0TQ.js} +0 -0
- /package/public/dist/assets/{julia-BgEiFqoe.js → julia-D7CKCk5I.js} +0 -0
- /package/public/dist/assets/{livescript-Bl00ljSh.js → livescript-gRbr9rhj.js} +0 -0
- /package/public/dist/assets/{locale-GY3-GGWm.js → locale-DC-ZsWOf.js} +0 -0
- /package/public/dist/assets/{lua-C7XaZlrp.js → lua-CgZ_7bxf.js} +0 -0
- /package/public/dist/assets/{mathematica-8EcxUjYb.js → mathematica-B6bTyoab.js} +0 -0
- /package/public/dist/assets/{mbox-rZy25Spd.js → mbox-C8oQj1cJ.js} +0 -0
- /package/public/dist/assets/{mirc-BUmwqSCT.js → mirc-v6L6kZuh.js} +0 -0
- /package/public/dist/assets/{mllike-BqDqEdQF.js → mllike-CWu4RdWO.js} +0 -0
- /package/public/dist/assets/{modelica-MhacK6Xw.js → modelica-B3NBpX1d.js} +0 -0
- /package/public/dist/assets/{mscgen-B_VJszPL.js → mscgen-C8u7qRYw.js} +0 -0
- /package/public/dist/assets/{mumps-CEdRH9V2.js → mumps-DHjVG4PS.js} +0 -0
- /package/public/dist/assets/{nginx-CnXgGeyP.js → nginx-BMt87X3t.js} +0 -0
- /package/public/dist/assets/{notes-graph-settings-BaqO8hYl.js → notes-graph-settings-BgNrT_58.js} +0 -0
- /package/public/dist/assets/{ntriples-CyZcmI8c.js → ntriples-C8U-Jud2.js} +0 -0
- /package/public/dist/assets/{octave-DGH2kDhB.js → octave-Bq37AoFm.js} +0 -0
- /package/public/dist/assets/{oz-DUSpf7eX.js → oz-D6HxSRn3.js} +0 -0
- /package/public/dist/assets/{pascal-BYIqfrcG.js → pascal-BBqiAVg6.js} +0 -0
- /package/public/dist/assets/{path-utils-DX1HplvB.js → path-utils-LsJeDCKF.js} +0 -0
- /package/public/dist/assets/{perl-C7iNkbFR.js → perl-sHANlXjx.js} +0 -0
- /package/public/dist/assets/{pi-settings-D6opgoo4.js → pi-settings-Dh5lgb87.js} +0 -0
- /package/public/dist/assets/{pig-CR5p2dpV.js → pig-Cufgew--.js} +0 -0
- /package/public/dist/assets/{powershell-UK-_nKBG.js → powershell--Q4mDip6.js} +0 -0
- /package/public/dist/assets/{properties-CJAqwakm.js → properties-DoVpJ-kT.js} +0 -0
- /package/public/dist/assets/{protobuf-D3Vrac9j.js → protobuf-B5OiV2Zv.js} +0 -0
- /package/public/dist/assets/{provider-icons-BXm8sy5x.js → provider-icons-stsNmQKx.js} +0 -0
- /package/public/dist/assets/{puppet-DxgW6kGv.js → puppet-Ce_CFfqW.js} +0 -0
- /package/public/dist/assets/{python-C_ebQp0Y.js → python-pK7Wt6QH.js} +0 -0
- /package/public/dist/assets/{q-IMCDaQ03.js → q-Dd3Ltku0.js} +0 -0
- /package/public/dist/assets/{r-BXdh3mvZ.js → r-CsX__2f0.js} +0 -0
- /package/public/dist/assets/{rough.esm-BJMyUbab.js → rough.esm--LLpAgPj.js} +0 -0
- /package/public/dist/assets/{rpm-DA-4RGFa.js → rpm-D78AjDAl.js} +0 -0
- /package/public/dist/assets/{ruby-Bl1KGNRx.js → ruby-D_-KI498.js} +0 -0
- /package/public/dist/assets/{sas-vK1DtUVf.js → sas-D-GUPiy4.js} +0 -0
- /package/public/dist/assets/{scheme-DiOFQmiy.js → scheme-DF9WwQDv.js} +0 -0
- /package/public/dist/assets/{settings-client-Di8KLXq_.js → settings-client-CjbBShxm.js} +0 -0
- /package/public/dist/assets/{shell-DlO-WCDP.js → shell-BTUwbV-w.js} +0 -0
- /package/public/dist/assets/{sieve-CbtkgRpt.js → sieve--Z-EbGZo.js} +0 -0
- /package/public/dist/assets/{simple-mode-BlwHYanN.js → simple-mode-BUow4bpn.js} +0 -0
- /package/public/dist/assets/{smalltalk-BvKYa3AC.js → smalltalk-C2YIwVx3.js} +0 -0
- /package/public/dist/assets/{solr-BR4fru6p.js → solr-CYVq4fbf.js} +0 -0
- /package/public/dist/assets/{sparql-DXGln-02.js → sparql-Ccd4fsFv.js} +0 -0
- /package/public/dist/assets/{spreadsheet-vehQVAxe.js → spreadsheet-DW0WgMrS.js} +0 -0
- /package/public/dist/assets/{sql-DqGFyXDS.js → sql-C71Zp6qn.js} +0 -0
- /package/public/dist/assets/{stex-BMDhbycI.js → stex-CKuX0g_6.js} +0 -0
- /package/public/dist/assets/{stylus-KnS0CroG.js → stylus-CBH8s0NO.js} +0 -0
- /package/public/dist/assets/{swift-DgdcCI7r.js → swift-CfZoxKRA.js} +0 -0
- /package/public/dist/assets/{tcl-BdAMpvp9.js → tcl-D5MGbeQu.js} +0 -0
- /package/public/dist/assets/{textile-BHP2MzNo.js → textile-DJ3U30FW.js} +0 -0
- /package/public/dist/assets/{tiddlywiki-DXpY2p61.js → tiddlywiki-_fe1dHUq.js} +0 -0
- /package/public/dist/assets/{tiki-rmXXYsbl.js → tiki-Dd1udTrQ.js} +0 -0
- /package/public/dist/assets/{toml-C5KR4pi6.js → toml-xpw8pqjz.js} +0 -0
- /package/public/dist/assets/{troff-CCKOxFhE.js → troff-CgWiec8m.js} +0 -0
- /package/public/dist/assets/{ttcn-DbUUkNp1.js → ttcn-CSwmFrer.js} +0 -0
- /package/public/dist/assets/{ttcn-cfg-DXcL9aHC.js → ttcn-cfg-B5HVIC6z.js} +0 -0
- /package/public/dist/assets/{turtle-C8XIIixq.js → turtle-Cl_SuWQk.js} +0 -0
- /package/public/dist/assets/{vb-6dJ8H6C5.js → vb-BT131bSf.js} +0 -0
- /package/public/dist/assets/{vbscript-DIhYyfyM.js → vbscript-D6S8_XkU.js} +0 -0
- /package/public/dist/assets/{velocity-D4VFCVF7.js → velocity-9HkI645n.js} +0 -0
- /package/public/dist/assets/{vendor-utils-BgdgpA_R.js → vendor-utils-DJY0EWnQ.js} +0 -0
- /package/public/dist/assets/{verilog-CMPJNboz.js → verilog-BzMguKeI.js} +0 -0
- /package/public/dist/assets/{vhdl-CnU0dAe0.js → vhdl-bHScWzT1.js} +0 -0
- /package/public/dist/assets/{w3c-keyname-_Vjqp3zl.js → w3c-keyname-a_sRwNLm.js} +0 -0
- /package/public/dist/assets/{webidl-DrscPGMb.js → webidl-CbgaVHNS.js} +0 -0
- /package/public/dist/assets/{wiki-link-resolver-C197VhRP.js → wiki-link-resolver-BfNXN9px.js} +0 -0
- /package/public/dist/assets/{xquery-B8_nl088.js → xquery-DWZPmAiC.js} +0 -0
- /package/public/dist/assets/{yacas-BCnk2qQq.js → yacas-CEdW4z4K.js} +0 -0
- /package/public/dist/assets/{z80-CG_mQV7a.js → z80-CMH3qxNg.js} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-B3ZGMGGg.js";import{c as r}from"./api-DvCd2Uff.js";import{t as i}from"./desktop-bridge-B1whMBS2.js";import{t as a}from"./copy-text-BKruhU_y.js";import{n as o,t as s}from"./folder-drag-payload-DE3ZS9PZ.js";var c=e(t(),1);function l(e){return{name:e.name,path:e.path,kind:e.kind===`folder`?`directory`:`file`,size:e.size}}function u(e,t){for(let n of e){if(n.path===t)return n;let e=u(n.children??[],t);if(e)return e}return null}function d(e){return{kind:`electron-folder`,label:`Folder`,canPickRoot:!0,getInitialRoot:async()=>null,pickRoot:async()=>{let t=await e.pickFolder();if(!t.ok&&t.error===`cancelled`)return null;if(!t.ok)throw Error(t.error??`Failed to pick folder`);return t.path??null},registerGitWorktreeRoot:async(t,n,r)=>{let i=await e.registerGitWorktreeRoot?.(t,n,r);if(!i?.ok)throw Error(i?.error??`Failed to register worktree root`)},authorizeRoot:async t=>{let n=await e.authorizeRoot?.(t);if(!n?.ok)throw Error(n?.error??`Failed to authorize folder root`);return n.path??t},listDir:async t=>{let n=await e.listDir(t);if(!n.ok||!n.entries)throw Error(n.error??`Failed to list directory`);return n.entries},readFile:async t=>{let n=await e.readFile(t);if(!n.ok||n.content===void 0)throw Error(n.error??`Failed to read file`);return{content:n.content,...n.binary===void 0?{}:{binary:n.binary}}},movePath:async(t,n)=>{let r=await e.movePath(t,n);if(!r.ok)throw Error(r.error??`Failed to move path`);return r},createFile:async(t,n)=>{let r=await e.createFile(t,n);if(!r.ok)throw Error(r.error??`Failed to create file`);return r},createFolder:async(t,n)=>{let r=await e.createFolder(t,n);if(!r.ok)throw Error(r.error??`Failed to create folder`);return r},renamePath:async(t,n)=>{let r=await e.renamePath(t,n);if(!r.ok)throw Error(r.error??`Failed to rename path`);return r},revealPath:async t=>{let n=await e.revealPath(t);if(!n.ok)throw Error(n.error??`Failed to reveal path`)},watchDir:t=>e.watchDir(t),unwatchDir:t=>e.unwatchDir(t),onDirChange:t=>e.onDirChange(t)}}function f(e,t){return{kind:`notes-vault`,label:t?`Notes: ${t.split(`/`).pop()||t}`:`Notes vault`,canPickRoot:!1,getInitialRoot:async()=>``,listDir:async t=>{if(!t)return e.map(l);let n=u(e,t);return!n||n.kind!==`folder`?[]:(n.children??[]).map(l)},readFile:async e=>({content:(await r(e)).content,binary:!1})}}var p=n();function m(e){return(0,p.jsxs)(`div`,{className:`folder-action-row`,"aria-label":`Folder actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection,onClick:e.onCopyPath,children:`Copy`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection,onClick:e.onCopyRelativePath,children:`Relative`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection||!e.canReveal,onClick:e.onReveal,children:`Finder`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.canMutate,onClick:e.onCreateFile,children:`New File`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.canMutate,onClick:e.onCreateFolder,children:`New Folder`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection||!e.canMutate,onClick:e.onRename,children:`Rename`})]})}function h(e){return(0,p.jsxs)(`div`,{className:`folder-context-menu`,role:`menu`,style:{left:e.x,top:e.y},onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:e.onCopyPath,children:`Copy Path`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:e.onCopyRelativePath,children:`Copy Relative Path`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canReveal,onClick:e.onReveal,children:e.entry.kind===`directory`?`Open Folder`:`Reveal in Finder`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canMutate,onClick:e.onCreateFile,children:`New File`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canMutate,onClick:e.onCreateFolder,children:`New Folder`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canMutate,onClick:e.onRename,children:`Rename`}),e.canRefresh&&(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:e.onRefresh,children:`Refresh`})]})}function g(e){return(0,p.jsxs)(`div`,{className:`folder-move-confirm`,role:`dialog`,"aria-label":`Confirm folder move`,children:[(0,p.jsxs)(`div`,{className:`folder-move-confirm__title`,children:[`Move "`,e.source.name,`" into "`,e.target.name,`"?`]}),(0,p.jsxs)(`label`,{className:`folder-move-confirm__option`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:e.skipChecked,onChange:t=>e.onSkipCheckedChange(t.target.checked)}),`Don't ask again for internal moves this session`]}),(0,p.jsxs)(`div`,{className:`folder-move-confirm__actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:e.busy,onClick:e.onCancel,children:`Cancel`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn is-primary`,disabled:e.busy,onClick:e.onConfirm,children:e.busy?`Moving...`:`Move`})]})]})}function _(e){return(0,p.jsxs)(p.Fragment,{children:[e.pendingMove&&(0,p.jsx)(g,{source:e.pendingMove.source,target:e.pendingMove.target,busy:e.isMoving,skipChecked:e.skipMoveConfirmChecked,onSkipCheckedChange:e.onSkipMoveConfirmCheckedChange,onCancel:e.onCancelMove,onConfirm:e.onConfirmMove}),e.contextMenu&&(0,p.jsx)(h,{entry:e.contextMenu.entry,x:e.contextMenu.x,y:e.contextMenu.y,canReveal:e.canReveal,canRefresh:e.canRefresh,canMutate:e.canMutate,onCopyPath:e.onCopyContextPath,onCopyRelativePath:e.onCopyContextRelativePath,onReveal:e.onRevealContextPath,onRefresh:e.onRefreshContext,onCreateFile:e.onCreateContextFile,onCreateFolder:e.onCreateContextFolder,onRename:e.onRenameContextPath})]})}function v(e){return e===null?`Open Folder`:e.split(`/`).pop()||e}function y(e){return e.split(`/`).filter(Boolean).pop()||e}function b(e){return e.branch?e.branch:e.detached?e.head?`detached ${e.head}`:`detached`:e.head??`worktree`}function x(e){let[t,n]=(0,c.useState)(!1),r=e.gitSummary?.loading?`Git ...`:e.gitSummary?.available?`${e.gitSummary.branch??e.gitSummary.head??`detached`} / ${e.gitSummary.dirty?`dirty`:`clean`}`:e.gitSummary?.error?`Git unavailable`:null,i=e.worktreeSummary?.worktrees??[],a=e.rootPath!==null&&(e.worktreeSummary?.loading||e.worktreeSummary?.error||i.length>0),o=e.worktreeSummary?.loading?`Worktrees ...`:i.length>0?`Worktrees ${i.length}`:`Worktrees`;return(0,p.jsxs)(`div`,{className:`folder-toolbar`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-pick-btn`,onClick:e.onPickFolder,disabled:!e.canPickRoot,children:e.canPickRoot?v(e.rootPath):e.label}),r&&(0,p.jsx)(`span`,{className:e.gitSummary?.error?`folder-git-summary is-error`:`folder-git-summary`,title:e.gitSummary?.error??void 0,children:r}),a&&(0,p.jsxs)(`div`,{className:`folder-worktree`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-worktree-btn`,onClick:()=>n(e=>!e),disabled:e.worktreeSummary?.loading||i.length===0,title:e.worktreeSummary?.error??void 0,children:o}),t&&i.length>0&&(0,p.jsx)(`div`,{className:`folder-worktree-menu`,role:`menu`,"aria-label":`Git worktrees`,children:i.map(t=>(0,p.jsxs)(`div`,{className:`folder-worktree-row`,role:`group`,"aria-label":t.path,children:[(0,p.jsxs)(`button`,{type:`button`,className:`folder-worktree-open`,onClick:()=>{n(!1),e.onOpenWorktree?.(t.path)},children:[(0,p.jsxs)(`span`,{className:`folder-worktree-title`,children:[y(t.path),t.current&&(0,p.jsx)(`span`,{className:`folder-worktree-current`,children:`Current`})]}),(0,p.jsxs)(`span`,{className:`folder-worktree-meta`,children:[b(t),` · `,t.path]})]}),(0,p.jsxs)(`span`,{className:`folder-worktree-actions`,children:[(0,p.jsx)(`button`,{type:`button`,onClick:()=>e.onCopyWorktreePath?.(t.path),children:`Copy`}),(0,p.jsx)(`button`,{type:`button`,onClick:()=>e.onRevealWorktreePath?.(t.path),children:`Finder`})]})]},t.path))})]}),e.rootPath!==null&&e.gitSummary?.available&&e.onOpenWorktreeOps&&(0,p.jsx)(`button`,{type:`button`,className:`folder-worktree-btn`,onClick:e.onOpenWorktreeOps,children:`Ops`}),e.rootPath!==null&&(0,p.jsx)(`button`,{type:`button`,className:`folder-refresh`,onClick:e.onRefresh,"aria-label":`Refresh folder`,children:`↻`})]})}async function S(e,t){return await(await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).json()}async function C(e){let t=e.repoRoot??void 0;try{let n=i()?.git,r=n?await n.previewWorktreeOperation(e.folderPanelRoot,t,e.operation):null,a=r?.ok?r:await S(`/api/dashboard/git/worktree-operation-preview`,{folderPanelRoot:e.folderPanelRoot,...t?{repoRoot:t}:{},operation:e.operation});return{ok:a.ok,preview:a.preview??null,error:a.ok?null:a.error??`Failed to preview git operation`}}catch(e){return{ok:!1,preview:null,error:e instanceof Error?e.message:`Failed to preview git operation`}}}async function w(e){let t=e.repoRoot??void 0;try{let n=i()?.git,r=n?await n.runWorktreeOperation(e.folderPanelRoot,t,e.operation,e.confirmed):null,a=r?.ok?r:await S(`/api/dashboard/git/worktree-operation`,{folderPanelRoot:e.folderPanelRoot,...t?{repoRoot:t}:{},operation:e.operation,confirmed:e.confirmed});return{ok:a.ok,repoRoot:a.repoRoot??null,preview:a.preview??null,stdout:a.stdout??``,worktrees:a.worktrees??[],error:a.ok?null:a.error??`Git operation failed`}}catch(e){return{ok:!1,repoRoot:null,preview:null,stdout:``,worktrees:[],error:e instanceof Error?e.message:`Git operation failed`}}}function T(e){return e.length>0?e.join(` `):`Command unavailable`}function E(e){return e.status===`running`?`Running`:e.status===`succeeded`?`Done`:e.status===`blocked`?`Blocked`:e.status===`cancelled`?`Cancelled`:`Failed`}function ee(e){return e.history.length===0?null:(0,p.jsxs)(`div`,{className:`folder-worktree-history`,"aria-label":`Git worktree operation history`,children:[(0,p.jsx)(`div`,{className:`folder-worktree-history__title`,children:`Recent operations`}),e.history.map(t=>(0,p.jsxs)(`div`,{className:`folder-worktree-history__item is-${t.status}`,children:[(0,p.jsxs)(`div`,{className:`folder-worktree-history__main`,children:[(0,p.jsx)(`span`,{className:`folder-worktree-history__label`,children:t.operationLabel}),(0,p.jsx)(`span`,{className:`folder-worktree-history__status`,children:E(t)})]}),(0,p.jsx)(`div`,{className:`folder-worktree-history__command`,title:T(t.commandPreview),children:T(t.commandPreview)}),t.stdout&&(0,p.jsx)(`pre`,{className:`folder-worktree-history__output`,children:t.stdout}),t.stderr&&(0,p.jsx)(`pre`,{className:`folder-worktree-history__output is-error`,children:t.stderr}),t.error&&(0,p.jsx)(`div`,{className:`folder-worktree-history__error`,children:t.error}),(0,p.jsx)(`button`,{type:`button`,className:`folder-worktree-history__retry`,disabled:e.busy||t.status===`running`,onClick:()=>e.onRetry(t.operation),children:`Retry with confirmation`})]},t.id))]})}function D(e){return e.split(`/`).filter(Boolean).pop()||e}function te(e){return e?e.command.join(` `):`Preview unavailable`}function O(e){let[t,n]=(0,c.useState)(`worktree-add`),[r,i]=(0,c.useState)(``),[a,o]=(0,c.useState)(``),[s,l]=(0,c.useState)(!1),[u,d]=(0,c.useState)(e.worktrees.find(e=>!e.current)?.path??e.worktrees[0]?.path??``),[f,m]=(0,c.useState)(!1),[h,g]=(0,c.useState)(!1),[_,v]=(0,c.useState)(!1),[y,b]=(0,c.useState)(null),[x,S]=(0,c.useState)(null),w=(0,c.useCallback)(e=>{n(e.type),g(!1),e.type===`worktree-add`&&(i(e.path),o(e.branch),l(e.createBranch)),e.type===`worktree-remove`&&(d(e.path),m(e.force))},[]),T=(0,c.useMemo)(()=>t===`worktree-add`?{type:t,path:r,branch:a,createBranch:s}:t===`worktree-remove`?{type:t,path:u,force:f}:{type:t},[a,s,f,t,u,r]);(0,c.useEffect)(()=>{let t=!1;return g(!1),v(!0),b(null),S(null),(async()=>{let n=await C({folderPanelRoot:e.folderPanelRoot,repoRoot:e.repoRoot,operation:T});t||(v(!1),S(n.preview),b(n.error))})(),()=>{t=!0}},[T,e.folderPanelRoot,e.repoRoot]);let E=h&&x!==null&&!y&&!_&&!e.busy,O=t===`worktree-remove`;return(0,p.jsx)(`div`,{className:`folder-worktree-ops`,role:`dialog`,"aria-label":`Git worktree operations`,children:(0,p.jsxs)(`div`,{className:`folder-worktree-ops__panel`,children:[(0,p.jsxs)(`div`,{className:`folder-worktree-ops__header`,children:[(0,p.jsx)(`span`,{children:`Worktree Ops`}),(0,p.jsx)(`button`,{type:`button`,onClick:e.onClose,disabled:e.busy,children:`Close`})]}),(0,p.jsx)(`div`,{className:`folder-worktree-ops__row`,children:(0,p.jsxs)(`label`,{children:[`Operation`,(0,p.jsxs)(`select`,{value:t,onChange:e=>n(e.target.value),disabled:e.busy,children:[(0,p.jsx)(`option`,{value:`worktree-add`,children:`Add worktree`}),(0,p.jsx)(`option`,{value:`worktree-remove`,children:`Remove worktree`}),(0,p.jsx)(`option`,{value:`worktree-prune`,children:`Prune stale worktrees`})]})]})}),t===`worktree-add`&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`folder-worktree-ops__row`,children:(0,p.jsxs)(`label`,{children:[`Path`,(0,p.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`/Users/jun/...`,disabled:e.busy})]})}),(0,p.jsxs)(`div`,{className:`folder-worktree-ops__row`,children:[(0,p.jsxs)(`label`,{children:[`Branch / ref`,(0,p.jsx)(`input`,{value:a,onChange:e=>o(e.target.value),placeholder:`feature/name`,disabled:e.busy})]}),(0,p.jsxs)(`label`,{className:`folder-worktree-ops__check`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>l(e.target.checked),disabled:e.busy}),`Create branch`]})]})]}),O&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`folder-worktree-ops__row`,children:(0,p.jsxs)(`label`,{children:[`Worktree`,(0,p.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),disabled:e.busy,children:e.worktrees.map(e=>(0,p.jsxs)(`option`,{value:e.path,children:[D(e.path),` - `,e.path]},e.path))})]})}),(0,p.jsxs)(`label`,{className:`folder-worktree-ops__warning`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>m(e.target.checked),disabled:e.busy}),`Force remove dirty worktree`]})]}),(0,p.jsx)(`div`,{className:`folder-worktree-ops__preview`,"aria-busy":_,children:_?`Previewing command...`:te(x)}),y&&(0,p.jsx)(`div`,{className:`folder-worktree-ops__warning`,children:y}),O&&!f&&(0,p.jsx)(`div`,{className:`folder-worktree-ops__hint`,children:`Dirty worktrees are blocked unless force remove is explicitly checked.`}),O&&f&&(0,p.jsx)(`div`,{className:`folder-worktree-ops__hint`,children:`Preview changes to git worktree remove --force for this target.`}),(0,p.jsxs)(`label`,{className:`folder-worktree-ops__check`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:h,onChange:e=>g(e.target.checked),disabled:x===null||!!y||e.busy}),`I understand this will run the previewed git command.`]}),(0,p.jsxs)(`div`,{className:`folder-worktree-ops__actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,onClick:e.onClose,disabled:e.busy,children:`Cancel`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn is-primary`,disabled:!E,onClick:()=>e.onRun(T,x),children:e.busy?`Running...`:`Run`})]}),(0,p.jsx)(ee,{history:e.history,busy:e.busy,onRetry:w})]})})}function ne(e){let t=e.lastIndexOf(`/`);return t>0?e.slice(0,t):`/`}function k(e,t){return t===e||t.startsWith(`${e}/`)}function re(e,t){if(!e)return t;let n=e.endsWith(`/`)?e:`${e}/`;return t.startsWith(n)?t.slice(n.length):t}function ie(e,t){let n=new Map(e);for(let e of t)n.delete(e);return n}function ae(e){let t=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let e=t.current;e&&(e.focus(),e.select())},[e.initialName]),(0,p.jsx)(`form`,{className:`folder-inline-editor`,"aria-label":e.label,onSubmit:n=>{n.preventDefault();let r=t.current?.value.trim()??``;r&&e.onSubmit(r)},children:(0,p.jsx)(`input`,{ref:t,className:`folder-inline-editor__input`,defaultValue:e.initialName,disabled:e.busy,onBlur:()=>{e.busy||e.onCancel()},onKeyDown:t=>{t.key===`Escape`&&(t.preventDefault(),e.onCancel()),t.stopPropagation()}})})}function oe(e){return/mac|iphone|ipad|ipod/i.test(e)}function se(){return typeof navigator>`u`?``:navigator.userAgentData?.platform||navigator.platform||navigator.userAgent||``}function ce(e){if(typeof HTMLElement>`u`||!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`?!0:!!e.closest(`[contenteditable="true"], .cm-editor, .ProseMirror, [data-milkdown-root], [role="textbox"]`)}function le(e,t=se()){return oe(t)?e.metaKey:e.ctrlKey}function ue(e,t){if(ce(e.target??null))return null;let n=e.key.toLowerCase(),r=e.code??``,i=oe(t.platform??se())?e.metaKey:e.ctrlKey,a=i&&e.altKey&&!e.shiftKey;return t.chordActive?n===`escape`?`cancel-chord`:i||e.altKey||e.shiftKey?null:n===`p`||r===`KeyP`?`copy-path`:n===`r`||r===`KeyR`?`reveal-path`:`cancel-chord`:i&&!e.altKey&&!e.shiftKey&&(n===`k`||r===`KeyK`)?`start-chord`:a&&(n===`c`||r===`KeyC`)?`copy-path`:a&&(n===`r`||r===`KeyR`)?`reveal-path`:i&&!e.altKey&&n===`c`?e.shiftKey?`copy-path`:`copy-relative-path`:null}function de(e){window.dispatchEvent(new CustomEvent(`jaw-folder-panel-drag`,{detail:{active:e}}))}function fe(e){let t=e.inlineMutation&&e.inlineMutation.kind!==`rename`&&e.inlineMutation.parentDirectory===e.parentPath?e.inlineMutation:null;return(0,p.jsxs)(p.Fragment,{children:[t&&(0,p.jsxs)(`div`,{className:`folder-entry folder-entry-inline`,children:[e.depth>0&&(0,p.jsx)(`span`,{className:`folder-indent`,"aria-hidden":`true`,children:Array.from({length:e.depth},(e,t)=>(0,p.jsx)(`span`,{className:`folder-indent-guide`},t))}),(0,p.jsx)(`span`,{className:`folder-entry-disclosure is-placeholder`,"aria-hidden":`true`,children:`·`}),(0,p.jsx)(ae,{initialName:t.initialName,busy:e.isMutating,label:t.kind===`file`?`New file name`:`New folder name`,onSubmit:e.submitInlineMutation,onCancel:e.cancelInlineMutation})]}),e.entries.map(t=>(0,p.jsxs)(`div`,{children:[(()=>{let n=e.decorationsByPath.get(t.path),r=e.inlineMutation?.kind===`rename`&&e.inlineMutation.targetPath===t.path?e.inlineMutation:null;return(0,p.jsxs)(`div`,{className:[`folder-entry`,`folder-entry-${t.kind}`,n?.className??``,e.selectedPaths.has(t.path)?`is-selected`:``,e.focusedPath===t.path?`is-focused`:``,e.dropTargetPath===t.path?`is-drop-target`:``,e.dragSelection?.primaryEntry.path===t.path?`is-dragging`:``].filter(Boolean).join(` `),role:`treeitem`,"aria-selected":e.selectedPaths.has(t.path),draggable:e.canUseNativeActions,onDragStart:n=>{if(!e.canUseNativeActions)return;let r=e.getDragSelectionFor(t);e.setDragSelection(r),de(!0),n.dataTransfer.effectAllowed=`copyMove`,n.dataTransfer.setData(s,o(r)),n.dataTransfer.setData(`text/plain`,r.entries.map(e=>e.path).join(`
|
|
2
|
-
`))},onDragEnd:()=>{de(!1),e.setDragSelection(null),e.setDropTargetPath(null)},onDragOver:n=>{let r=e.dragSelection?.primaryEntry;!r||t.kind!==`directory`||r.path!==t.path&&(r.kind===`directory`&&k(r.path,t.path)||(n.preventDefault(),n.dataTransfer.dropEffect=`move`,e.setDropTargetPath(t.path)))},onDragLeave:()=>{e.dropTargetPath===t.path&&e.setDropTargetPath(null)},onDrop:n=>{!e.dragSelection||t.kind!==`directory`||(n.preventDefault(),de(!1),e.setDropTargetPath(null),e.requestMove(e.dragSelection.primaryEntry,t))},children:[e.depth>0&&(0,p.jsx)(`span`,{className:`folder-indent`,"aria-hidden":`true`,children:Array.from({length:e.depth},(e,t)=>(0,p.jsx)(`span`,{className:`folder-indent-guide`},t))}),(0,p.jsx)(`button`,{type:`button`,className:t.kind===`directory`?`folder-entry-disclosure`:`folder-entry-disclosure is-placeholder`,"aria-label":t.kind===`directory`?e.expanded.has(t.path)?`Collapse ${t.name}`:`Expand ${t.name}`:void 0,"aria-expanded":t.kind===`directory`?e.expanded.has(t.path):void 0,tabIndex:t.kind===`directory`?0:-1,disabled:t.kind!==`directory`,onClick:n=>{n.stopPropagation(),t.kind===`directory`&&e.toggleEntryExpansion(t)},children:t.kind===`directory`?e.expanded.has(t.path)?`▾`:`▸`:`·`}),r?(0,p.jsx)(ae,{initialName:r.initialName,busy:e.isMutating,label:`Rename`,onSubmit:e.submitInlineMutation,onCancel:e.cancelInlineMutation}):(0,p.jsxs)(`button`,{type:`button`,className:`folder-entry-btn`,"data-folder-path":t.path,onKeyDown:n=>e.handleEntryKeyDown(n,t),onContextMenu:n=>{n.preventDefault(),e.openContextMenu(t,n.clientX,n.clientY)},onClick:n=>e.selectEntry(t,{range:n.shiftKey,toggle:le(n),preview:!1}),onDoubleClick:()=>{t.kind===`directory`?e.toggleEntryExpansion(t):e.openFileEntry(t)},children:[(0,p.jsx)(`span`,{className:`folder-entry-name`,children:t.name}),n?.label&&(0,p.jsx)(`span`,{className:`folder-entry-git-badge`,title:n.title,"aria-label":n.title??n.label,children:n.label})]})]})})(),t.kind===`directory`&&e.expanded.has(t.path)&&e.childrenCache.has(t.path)&&(0,p.jsx)(fe,{...e,entries:e.childrenCache.get(t.path),parentPath:t.path,depth:e.depth+1})]},t.path))]})}function pe(e){return(0,p.jsxs)(`div`,{className:`folder-unavailable`,children:[(0,p.jsx)(`div`,{className:`folder-unavailable__title`,children:`Folder unavailable`}),(0,p.jsx)(`div`,{className:`folder-unavailable__path`,title:e.path,children:e.path}),(0,p.jsx)(`div`,{className:`folder-unavailable__error`,children:e.error}),(0,p.jsxs)(`div`,{className:`folder-unavailable__actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,onClick:e.onOpenFolder,children:`Open Folder`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,onClick:e.onClear,children:`Clear`})]})]})}function me(e){return(0,p.jsxs)(`div`,{ref:e.treeRef,className:e.rootPath===null?`folder-tree folder-empty-root`:`folder-tree`,role:`tree`,"aria-multiselectable":`true`,children:[(0,p.jsx)(fe,{entries:e.entries,parentPath:e.rootPath,depth:0,expanded:e.expanded,childrenCache:e.childrenCache,selectedPaths:e.folderSelection.selectedPaths,focusedPath:e.folderSelection.selection.focusedPath,decorationsByPath:e.decorationsByPath,dropTargetPath:e.dropTargetPath,dragSelection:e.dragSelection,inlineMutation:e.inlineMutation,isMutating:e.isMutating,canUseNativeActions:e.canUseNativeActions,setDragSelection:e.setDragSelection,setDropTargetPath:e.setDropTargetPath,getDragSelectionFor:e.folderSelection.getDragSelectionFor,requestMove:e.requestMove,handleEntryKeyDown:e.handleEntryKeyDown,selectEntry:e.selectEntry,toggleEntryExpansion:e.toggleEntryExpansion,openFileEntry:e.openFileEntry,openContextMenu:e.openContextMenu,submitInlineMutation:e.submitInlineMutation,cancelInlineMutation:e.cancelInlineMutation}),e.rootPath===null&&!e.error&&(0,p.jsx)(`div`,{className:`folder-empty-root__content`,children:`Choose a folder to browse files.`}),e.unavailableRoot&&(0,p.jsx)(pe,{path:e.unavailableRoot.path,error:e.unavailableRoot.error,onOpenFolder:e.onPickFolder,onClear:e.onClearUnavailableRoot}),e.entries.length===0&&!e.inlineMutation&&!e.error&&!e.unavailableRoot&&e.rootPath!==null&&(0,p.jsx)(`div`,{className:`folder-empty`,children:e.sourceKind===`notes-vault`?`No notes in vault`:`Empty directory`})]})}var A={selectedPaths:[],focusedPath:null,anchorPath:null};function he(e,t,n){let r=[],i=e=>{for(let a of e)r.push(a),a.kind===`directory`&&n.has(a.path)&&i(t.get(a.path)??[])};return i(e),r}function ge(e,t){let n=new Set(t),r=e.selectedPaths.filter(e=>n.has(e)),i=e.focusedPath&&n.has(e.focusedPath)?e.focusedPath:r[0]??null;return{selectedPaths:r,focusedPath:i,anchorPath:e.anchorPath&&n.has(e.anchorPath)?e.anchorPath:i}}function _e(e,t,n,r={}){if(!n.includes(t))return e;if(r.range&&e.anchorPath&&n.includes(e.anchorPath))return{selectedPaths:M(n,e.anchorPath,t),focusedPath:t,anchorPath:e.anchorPath};if(r.toggle){let r=new Set(e.selectedPaths);return r.has(t)?r.delete(t):r.add(t),r.size===0&&r.add(t),{selectedPaths:n.filter(e=>r.has(e)),focusedPath:t,anchorPath:t}}return{selectedPaths:[t],focusedPath:t,anchorPath:t}}function j(e,t,n,r){if(t.length===0)return A;let i=e.focusedPath&&t.includes(e.focusedPath)?e.focusedPath:e.selectedPaths.find(e=>t.includes(e))??t[0],a=t.indexOf(i),o=t[Math.max(0,Math.min(t.length-1,a+(n===`down`?1:-1)))];if(r){let n=e.anchorPath&&t.includes(e.anchorPath)?e.anchorPath:i;return{selectedPaths:M(t,n,o),focusedPath:o,anchorPath:n}}return{selectedPaths:[o],focusedPath:o,anchorPath:o}}function ve(e,t){return e.filter(e=>t.has(e.path))}function M(e,t,n){let r=e.indexOf(t),i=e.indexOf(n);if(r<0||i<0)return[n];let a=Math.min(r,i),o=Math.max(r,i);return e.slice(a,o+1)}function ye(e){return Array.from(e.entries())}function be(e){return new Map(e)}function xe(e,t){return!e||t&&e.rootPath!==t?null:e}function Se(e){return{rootPath:e.rootPath,entries:e.entries,expandedPaths:Array.from(e.expanded),childrenCache:ye(e.childrenCache),selection:e.selection}}function N(e){return/not a git repository/i.test(e)}async function P(e,t){return await(await fetch(`/api/dashboard/git/status-map`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folderPanelRoot:e,...t.repoRoot?{repoRoot:t.repoRoot}:{},options:{includeIgnored:t.includeIgnored!==!1,includeUntracked:t.includeUntracked!==!1}})})).json()}async function F(e,t={}){let n=i()?.git,r=n?await n.getStatusMap(e,t.repoRoot,{includeIgnored:t.includeIgnored!==!1,includeUntracked:t.includeUntracked!==!1}):null,a=r?.ok?r:await P(e,t);if(a.ok&&a.status)return{ok:!0,status:a.status};let o=a.error??`Failed to load git status`;return{ok:!1,quiet:N(o),error:o}}var I={available:!1,loading:!1,error:null,repoRoot:null,branch:null,head:null,dirty:!1,decorationsByPath:new Map},L={modified:`M`,added:`A`,deleted:`D`,renamed:`R`,untracked:`?`,ignored:`·`,conflict:`U`,submodule:`S`};function Ce(e){return{className:`git-${e.kind}`,label:L[e.kind],title:[e.kind,e.staged?`staged`:``,e.unstaged?`unstaged`:``].filter(Boolean).join(` · `)}}function R(e){let t=e.kinds[0]??`modified`;return{className:`git-${t}`,label:`${L[t]}${e.changedCount>1?e.changedCount:``}`,title:`${e.changedCount} changed item${e.changedCount===1?``:`s`}`}}function z(e){let t=new Map;for(let n of e.files)t.set(n.path,Ce(n));for(let n of e.directories)t.set(n.path,R(n));return{available:!0,loading:!1,error:null,repoRoot:e.repoRoot,branch:e.branch,head:e.head,dirty:e.dirty,decorationsByPath:t}}function we(e){let{rootPath:t,repoRoot:n,enabled:r,refreshToken:i}=e,[a,o]=(0,c.useState)(I);return(0,c.useEffect)(()=>{if(!r||t===null){o(I);return}let e=!1,i=window.setTimeout(()=>{o(e=>({...e,loading:!0,error:null})),(async()=>{let r=await F(t,{...n?{repoRoot:n}:{},includeIgnored:!0,includeUntracked:!0});if(!e){if(r.ok){o(z(r.status));return}if(n&&/repo root mismatch/i.test(r.error)){let n=await F(t,{includeIgnored:!0,includeUntracked:!0});if(e)return;if(n.ok){o(z(n.status));return}o(n.quiet?I:{...I,error:n.error});return}o(r.quiet?I:{...I,error:r.error})}})()},250);return()=>{e=!0,window.clearTimeout(i)}},[r,i,n,t]),a}function B(e){return/not a git repository/i.test(e)}async function V(e,t){return await(await fetch(`/api/dashboard/git/worktrees`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folderPanelRoot:e,...t?{repoRoot:t}:{}})})).json()}async function H(e,t){let n=t??void 0;try{let t=i()?.git,r=t?await t.getWorktrees(e,n):null,a=r?.ok?r:await V(e,n);if(a.ok)return{ok:!0,repoRoot:a.repoRoot??n??null,worktrees:a.worktrees??[],error:null};let o=a.error??`Failed to load git worktrees`;return{ok:!1,repoRoot:null,worktrees:[],error:B(o)?null:o}}catch(e){let t=e instanceof Error?e.message:`Failed to load git worktrees`;return{ok:!1,repoRoot:null,worktrees:[],error:B(t)?null:t}}}var U={available:!1,loading:!1,error:null,repoRoot:null,worktrees:[]};function Te(e){let{folderPanelRoot:t,repoRoot:n,enabled:r,refreshToken:i}=e,[a,o]=(0,c.useState)(0),[s,l]=(0,c.useState)(U),u=(0,c.useCallback)(()=>o(e=>e+1),[]);return(0,c.useEffect)(()=>{if(!r||t===null){l(U);return}let e=!1;return l(e=>({...e,loading:!0,error:null})),(async()=>{let r=await H(t,n??void 0);e||l({available:r.ok&&r.worktrees.length>0,loading:!1,error:r.error,repoRoot:r.repoRoot,worktrees:r.worktrees})})(),()=>{e=!0}},[r,t,a,i,n]),(0,c.useMemo)(()=>({...s,refresh:u}),[u,s])}function Ee(e=1600){let[t,n]=(0,c.useState)(!1),r=(0,c.useRef)(null),i=(0,c.useCallback)(()=>{r.current!==null&&window.clearTimeout(r.current),r.current=null,n(!1)},[]),a=(0,c.useCallback)(()=>{r.current!==null&&window.clearTimeout(r.current),n(!0),r.current=window.setTimeout(()=>{r.current=null,n(!1)},e)},[e]);return(0,c.useEffect)(()=>()=>i(),[i]),{folderChordActive:t,startFolderChord:a,cancelFolderChord:i}}function De(e){let t=e.onPreviewFile,[n,r]=(0,c.useState)(()=>e.initialSelection??A),i=(0,c.useMemo)(()=>he(e.entries,e.childrenCache,e.expanded),[e.childrenCache,e.entries,e.expanded]),a=(0,c.useMemo)(()=>i.map(e=>e.path),[i]),o=(0,c.useMemo)(()=>new Set(n.selectedPaths),[n.selectedPaths]),s=(0,c.useMemo)(()=>ve(i,o),[o,i]),l=n.focusedPath??s[0]?.path??null,u=i.find(e=>e.path===l)??s[0]??null;return(0,c.useEffect)(()=>{r(e=>ge(e,a))},[a]),{selection:n,visibleEntries:i,visiblePaths:a,selectedPaths:o,selectedPath:l,selectedEntries:s,selectedEntry:u,selectEntry:(0,c.useCallback)((e,n={})=>{r(t=>_e(t,e.path,a,n)),e.kind===`file`&&n.preview!==!1&&t?.(e.path)},[t,a]),selectOnlyPath:(0,c.useCallback)(e=>{r(e&&a.includes(e)?{selectedPaths:[e],focusedPath:e,anchorPath:e}:A)},[a]),resetSelection:(0,c.useCallback)(()=>{r(A)},[]),moveKeyboardSelection:(0,c.useCallback)((e,t)=>{r(n=>j(n,a,e,t))},[a]),getDragSelectionFor:(0,c.useCallback)(e=>o.has(e.path)?{primaryEntry:e,entries:s}:{primaryEntry:e,entries:[e]},[s,o])}}var W=120,Oe=80;function ke(e){return e===`watch`?`Updated from file changes`:e===`move`?`Updated after move`:e===`mutation`?`Updated after file change`:e===`git-operation`?`Updated after git operation`:e===`worktree-switch`?`Updated worktree`:e===`root`?`Updated folder root`:`Updated folder`}function Ae(e){let{rootPath:t,expanded:n,source:r,loadDir:i,loadChildren:a,bumpGitRefresh:o,onGitRefresh:s,refreshWorktrees:l}=e,[u,d]=(0,c.useState)(null),[f,p]=(0,c.useState)(null),[m,h]=(0,c.useState)(!1),g=(0,c.useRef)(!1),_=(0,c.useRef)(null),v=(0,c.useRef)(null),y=(0,c.useRef)(async()=>void 0),b=(0,c.useRef)(!0);(0,c.useEffect)(()=>(b.current=!0,()=>{b.current=!1}),[]);let x=(0,c.useCallback)(()=>{v.current!==null&&(window.clearTimeout(v.current),v.current=null)},[]),S=(0,c.useCallback)(async(e,r={})=>{if(t!==null){if(g.current){let t=_.current;_.current=t?{reason:e,options:{extraPaths:Array.from(new Set([...t.options.extraPaths??[],...r.extraPaths??[]]))}}:{reason:e,options:r};return}g.current=!0,b.current&&(h(!0),d(e===`watch`?`Refreshing changed files...`:`Refreshing folder...`));try{let c=Array.from(new Set([...Array.from(n),...r.extraPaths??[]])).slice(0,Oe);await i(t);for(let e of c)await a(e,{force:!0});if(o(),s?.(),l(),!b.current)return;let u=Math.max(0,n.size-c.length);d(u>0?`${ke(e)}; ${u} collapsed/overflow branches skipped`:ke(e))}finally{g.current=!1,b.current&&h(!1);let e=_.current;_.current=null,e&&b.current&&y.current(e.reason,e.options)}}},[o,n,a,i,s,l,t]),C=(0,c.useCallback)(async(e=`manual`,t={})=>{await S(e,t)},[S]);(0,c.useEffect)(()=>{y.current=S},[S]);let w=(0,c.useCallback)(()=>{x(),v.current=window.setTimeout(()=>{v.current=null,y.current(`watch`)},W)},[x]);return(0,c.useEffect)(()=>{if(!r.watchDir||!r.onDirChange||t===null)return;let e=!1;(async()=>{let n=await r.watchDir?.(t);e||(n&&!n.ok?p(`Watch disabled: ${n.error??`failed to watch directory`}`):p(null))})();let n=r.onDirChange(()=>{w()});return()=>{e=!0,x(),n(),r.unwatchDir?.(t)}},[x,t,w,r]),{isRefreshing:m,refreshStatus:u,watchStatus:f,refreshVisibleTree:C}}function je(e){let{selectedFilePath:t,rootPath:n,selectedPath:r,visiblePaths:i,selectOnlyPath:a}=e,o=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=t??null,s=e!==o.current;s&&(o.current=e),!(!s&&r)&&(!e||!n||k(n,e)&&e!==r&&i.includes(e)&&a(e))},[n,a,t,r,i])}var Me=8,Ne=0;function G(){return Ne+=1,`folder-git-op-${Date.now()}-${Ne}`}function K(e){return/dirty|uncommitted|confirmation required|not registered|outside home|symlink/i.test(e)}function q(e,t){return{id:G(),operation:e,startedAt:new Date().toISOString(),finishedAt:null,operationLabel:t?.label??e.type,commandPreview:t?.command??[],status:`running`,stdout:``,stderr:``,error:null}}function J(e,t){return[t,...e].slice(0,Me)}function Y(e,t,n){return e.map(e=>e.id===t?n.ok?{...e,finishedAt:new Date().toISOString(),status:`succeeded`,stdout:n.stdout,error:null}:{...e,finishedAt:new Date().toISOString(),status:K(n.error)?`blocked`:`failed`,error:n.error}:e)}function Pe(e){let{rootPath:t,source:n,worktreeState:r,openFolderRoot:i,refreshVisibleTree:o,bumpGitRefresh:s,setActionStatus:l,setError:u}=e,[d,f]=(0,c.useState)(!1),[p,m]=(0,c.useState)(!1),[h,g]=(0,c.useState)([]);return{open:d,setOpen:f,busy:p,history:h,openWorktreeRoot:(0,c.useCallback)(async e=>{await i(e,{registerGitWorktree:!0,repoRoot:r.repoRoot})},[i,r.repoRoot]),copyWorktreePath:(0,c.useCallback)(async e=>{let t=await a(e);t.ok?(l(`Copied worktree path`),u(null)):u(t.error??`Failed to copy worktree path`)},[l,u]),revealWorktreePath:(0,c.useCallback)(async e=>{if(!(!t||!n.registerGitWorktreeRoot||!n.revealPath))try{await n.registerGitWorktreeRoot(t,r.repoRoot??void 0,e),await n.revealPath(e),l(`Opened worktree in Finder`),u(null)}catch(e){u(e.message)}},[t,l,u,n,r.repoRoot]),runWorktreeOperation:(0,c.useCallback)(async(e,n)=>{if(!t)return;let i=q(e,n),a=!1;g(e=>J(e,i)),m(!0);try{let n=await w({folderPanelRoot:t,repoRoot:r.repoRoot,operation:e,confirmed:!0});if(!n.ok){let e=n.error??`Git operation failed`;throw g(t=>Y(t,i.id,{ok:!1,error:e})),a=!0,Error(e)}g(e=>Y(e,i.id,{ok:!0,stdout:n.stdout})),a=!0,l(n.preview?.label??`Git worktree operation completed`),u(null),f(!1),r.refresh(),s(),await o(`git-operation`)}catch(e){let t=e.message;a||g(e=>Y(e,i.id,{ok:!1,error:t})),u(t)}finally{m(!1)}},[s,o,t,l,u,r])}}function Fe(e){let[t,n]=(0,c.useState)(null),[r,i]=(0,c.useState)(!1),a=(0,c.useCallback)(()=>e.rootPath?e.selectedEntry?e.selectedEntry.kind===`directory`?e.selectedEntry.path:ne(e.selectedEntry.path):e.rootPath:null,[e.rootPath,e.selectedEntry]),o=(0,c.useCallback)(t=>{let r=a();r&&(t===`file`&&!e.source.createFile||t===`directory`&&!e.source.createFolder||(e.setExpanded(e=>new Set(e).add(r)),n({kind:t,parentDirectory:r,initialName:t===`file`?`untitled.txt`:`untitled`}),e.closeContextMenu()))},[e,a]),s=(0,c.useCallback)(async(t,r,a)=>{let o=t===`file`?e.source.createFile:e.source.createFolder;if(!o)return;let s=t===`file`?`New file name`:`New folder name`;if(!a.trim()){e.setError(`${s} required`);return}i(!0);try{let i=(await o(r,a.trim())).entry;t===`directory`&&e.selectedEntry?.path===r&&e.setExpanded(e=>new Set(e).add(r)),e.setActionStatus(t===`file`?`Created file`:`Created folder`),e.setError(null),n(null),await e.refreshAfterMutation(r,i?.path??null)}catch(t){e.setError(t.message)}finally{i(!1)}},[e]),l=(0,c.useCallback)(()=>{!e.selectedEntry||!e.source.renamePath||(n({kind:`rename`,parentDirectory:ne(e.selectedEntry.path),targetPath:e.selectedEntry.path,initialName:e.selectedEntry.name}),e.closeContextMenu())},[e]),u=(0,c.useCallback)(async(t,r)=>{if(!t.targetPath||!e.source.renamePath)return;let a=r.trim();if(!a||a===t.initialName){n(null);return}i(!0);try{let r=await e.source.renamePath(t.targetPath,a),i=t.parentDirectory,o=r.entry?.path??null,s=o?e.renamedPreviewPath(e.selectedFilePath,t.targetPath,o):null;e.setActionStatus(`Renamed`),e.setError(null),n(null),await e.refreshAfterMutation(i,o,[t.targetPath]),s&&e.onPreviewFile?.(s)}catch(t){e.setError(t.message)}finally{i(!1)}},[e]);return{inlineMutation:t,isMutating:r,requestCreateEntry:o,requestRenameSelectedEntry:l,submitInlineMutation:(0,c.useCallback)(e=>{t&&(t.kind===`rename`?u(t,e):s(t.kind,t.parentDirectory,e))},[t,s,u]),cancelInlineMutation:()=>n(null)}}function Ie(e){let[t,n]=(0,c.useState)(null),r=(0,c.useCallback)(()=>n(null),[]),i=(0,c.useCallback)((t,r,i)=>{e.selectedPaths.has(t.path)||e.selectOnlyPath(t.path),n({entry:t,x:r,y:i})},[e]);return(0,c.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&n(null)},i=()=>{document.activeElement instanceof HTMLIFrameElement&&n(null)};return window.addEventListener(`pointerdown`,r),window.addEventListener(`keydown`,e),window.addEventListener(`blur`,i),()=>{window.removeEventListener(`pointerdown`,r),window.removeEventListener(`keydown`,e),window.removeEventListener(`blur`,i)}},[r,t]),{contextMenu:t,closeContextMenu:r,openContextMenu:i}}function Le(){return i()?.folder??null}function Re(e,t,n){return!e||!k(t,e)?null:e===t?n:`${n}${e.slice(t.length)}`}function ze(e){let t=Le(),n=e.repoRootPath??null,r=e.gitRefreshVersion??0,i=e.onGitRefresh,o=e.onRepoRootChange,s=(0,c.useRef)(!1),l=(0,c.useMemo)(()=>t?d(t):f(e.notesTree??[],e.notesRoot??null),[t,e.notesRoot,e.notesTree]),u=(0,c.useMemo)(()=>xe(e.sessionState??null,e.externalRootPath??null),[e.externalRootPath,e.sessionState]),[h,g]=(0,c.useState)(()=>u?.rootPath??null),[v,y]=(0,c.useState)(()=>u?.entries??[]),[b,S]=(0,c.useState)(()=>new Set(u?.expandedPaths??[])),[C,w]=(0,c.useState)(()=>u?be(u.childrenCache):new Map),[T,E]=(0,c.useState)(null),[ee,D]=(0,c.useState)(null),[te,ae]=(0,c.useState)(null),[oe,se]=(0,c.useState)(null),[ce,le]=(0,c.useState)(null),[de,fe]=(0,c.useState)(!1),[pe,A]=(0,c.useState)(!1),[he,ge]=(0,c.useState)(!1),[_e,j]=(0,c.useState)(null),[ve,M]=(0,c.useState)(0),ye=(0,c.useRef)(null),N=(0,c.useRef)(null),{folderChordActive:P,startFolderChord:F,cancelFolderChord:I}=Ee(),L=e.onPreviewFile,Ce=e.selectedFilePath,R=De({entries:v,childrenCache:C,expanded:b,initialSelection:u?.selection,onPreviewFile:L}),z=R.selectedEntry,B=R.selectedEntries,V=Ie({selectedPaths:R.selectedPaths,selectOnlyPath:R.selectOnlyPath});je({selectedFilePath:e.selectedFilePath,rootPath:h,selectedPath:R.selectedPath,visiblePaths:R.visiblePaths,selectOnlyPath:R.selectOnlyPath}),(0,c.useEffect)(()=>{e.onSessionStateChange?.(Se({rootPath:h,entries:v,expanded:b,childrenCache:C,selection:R.selection}))},[C,v,b,R.selection,e.onSessionStateChange,h]);let H=(0,c.useCallback)(async e=>{try{return y(await l.listDir(e)),E(null),D(t=>t?.path===e?null:t),{ok:!0}}catch(e){let t=e.message;return E(t),{ok:!1,error:t}}},[l]),U=(0,c.useCallback)(async(t,n={})=>{try{let r=t;if(n.registerGitWorktree){if(!h)throw Error(`Current folder root required`);await l.registerGitWorktreeRoot?.(h,n.repoRoot??void 0,t)}else l.authorizeRoot&&(r=await l.authorizeRoot(t));h&&l.unwatchDir&&l.unwatchDir(h),e.onRootChange?.(r),g(r),S(new Set),w(new Map),y([]),R.resetSelection(),E(null),D(null);let i=await H(r);i.ok||D({path:r,error:i.error}),M(e=>e+1)}catch(e){E(e.message)}},[R,H,e,h,l]),W=(0,c.useCallback)(async(e,t={})=>{if(!(!t.force&&C.has(e)))try{let t=await l.listDir(e);w(n=>new Map(n).set(e,t))}catch(e){E(e.message)}},[C,l]),Oe=(0,c.useCallback)(()=>{M(e=>e+1)},[]),ke=(0,c.useCallback)(e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(n.add(e),W(e)),n})},[W]),Me=(0,c.useCallback)(async()=>{if(l.pickRoot)try{let e=await l.pickRoot();e&&await U(e)}catch(e){E(e.message)}},[U,l]),Ne=(0,c.useCallback)(()=>{e.onRootChange?.(null),g(null),y([]),R.resetSelection(),D(null),E(null)},[R,e]);(0,c.useEffect)(()=>{if(s.current||h!==null||e.externalRootPath)return;let t=!1;return(async()=>{let e=await l.getInitialRoot();t||(s.current=!0,g(e),e!==null&&await H(e))})(),()=>{t=!0}},[H,e.externalRootPath,h,l]),(0,c.useEffect)(()=>{let t=e.externalRootPath;if(t){if(t===h){if(v.length>0||N.current===t)return;N.current=t}else N.current=null;U(t)}},[v.length,U,e.externalRootPath,h]);let G=we({rootPath:h,enabled:l.kind===`electron-folder`,refreshToken:ve+r}),K=Te({folderPanelRoot:h,repoRoot:G.repoRoot??n,enabled:l.kind===`electron-folder`&&G.available,refreshToken:ve+r}),q=Ae({rootPath:h,expanded:b,source:l,loadDir:H,loadChildren:W,bumpGitRefresh:Oe,onGitRefresh:i,refreshWorktrees:K.refresh}),J=q.refreshVisibleTree,Y=Pe({rootPath:h,source:l,worktreeState:K,openFolderRoot:U,refreshVisibleTree:J,bumpGitRefresh:Oe,setActionStatus:j,setError:E});(0,c.useEffect)(()=>{G.repoRoot&&G.repoRoot!==n&&o?.(G.repoRoot)},[G.repoRoot,o,n]);let ze=l.kind===`electron-folder`,Be=!!(l.createFile&&l.createFolder&&l.renamePath),Ve=(0,c.useCallback)(async(e,t)=>{if(!h)return;let n=ne(e);w(e=>ie(e,[n,t])),await J(`move`,{extraPaths:[n,t]})},[J,h]),He=(0,c.useCallback)(async(e,t,n=[])=>{h&&(w(t=>ie(t,[e,...n])),await J(`mutation`,{extraPaths:[e]}),t&&R.selectOnlyPath(t))},[R,J,h]),Ue=(0,c.useCallback)(async e=>{if(l.movePath){fe(!0);try{let t=(await l.movePath(e.source.path,e.target.path)).moved?.to??e.source.path;R.selectOnlyPath(t),j(`Moved ${e.source.name}`),le(null),await Ve(e.source.path,e.target.path)}catch(e){E(e.message)}finally{fe(!1)}}},[R,Ve,l]),We=(0,c.useCallback)((e,t)=>{if(!l.movePath||e.path===t.path||e.kind===`directory`&&k(e.path,t.path))return;let n={source:e,target:t};if(pe){Ue(n);return}ge(!1),le(n)},[Ue,pe,l.movePath]),X=Fe({rootPath:h,selectedEntry:z,selectedFilePath:Ce,source:l,folderSelection:R,refreshAfterMutation:He,renamedPreviewPath:Re,onPreviewFile:L,closeContextMenu:V.closeContextMenu,setExpanded:S,setActionStatus:j,setError:E}),Z=(0,c.useCallback)((e,t)=>{R.selectEntry(e,t),V.closeContextMenu()},[V,R]),Ge=(0,c.useCallback)(e=>{e.kind===`file`&&Z(e)},[Z]),Ke=(0,c.useCallback)(e=>{R.selectEntry(e,{preview:!1}),V.closeContextMenu(),e.kind===`directory`&&ke(e.path)},[V,R,ke]),qe=(0,c.useCallback)(async(e,t)=>{let n=await a(t===`relative`?re(h,e.path):e.path);n.ok?(R.selectOnlyPath(e.path),j(t===`relative`?`Copied relative path`:`Copied path`),E(null)):E(n.error??`Failed to copy path`)},[R,h]),Je=(0,c.useCallback)(async e=>{if(l.revealPath)try{await l.revealPath(e.path),R.selectOnlyPath(e.path),j(e.kind===`directory`?`Opened folder in Finder`:`Revealed file in Finder`),E(null)}catch(e){E(e.message)}},[R,l]),Q=(0,c.useCallback)(async e=>{if(B.length===0)return;let t=await a(B.map(t=>e===`relative`?re(h,t.path):t.path).join(`
|
|
3
|
-
`));t.ok?(j(e===`relative`?`Copied relative paths`:`Copied paths`),E(null)):E(t.error??`Failed to copy paths`)},[h,B])
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{c as r}from"./api-C9dOxby7.js";import{t as i}from"./desktop-bridge-CvdhnJQo.js";import{t as a}from"./copy-text-BDs2wKjA.js";import{n as o,t as s}from"./folder-drag-payload-Bhln9Mk2.js";var c=e(t(),1);function l(e){return{name:e.name,path:e.path,kind:e.kind===`folder`?`directory`:`file`,size:e.size}}function u(e,t){for(let n of e){if(n.path===t)return n;let e=u(n.children??[],t);if(e)return e}return null}function d(e){return{kind:`electron-folder`,label:`Folder`,canPickRoot:!0,getInitialRoot:async()=>null,pickRoot:async()=>{let t=await e.pickFolder();if(!t.ok&&t.error===`cancelled`)return null;if(!t.ok)throw Error(t.error??`Failed to pick folder`);return t.path??null},registerGitWorktreeRoot:async(t,n,r)=>{let i=await e.registerGitWorktreeRoot?.(t,n,r);if(!i?.ok)throw Error(i?.error??`Failed to register worktree root`)},authorizeRoot:async t=>{let n=await e.authorizeRoot?.(t);if(!n?.ok)throw Error(n?.error??`Failed to authorize folder root`);return n.path??t},listDir:async t=>{let n=await e.listDir(t);if(!n.ok||!n.entries)throw Error(n.error??`Failed to list directory`);return n.entries},readFile:async t=>{let n=await e.readFile(t);if(!n.ok||n.content===void 0)throw Error(n.error??`Failed to read file`);return{content:n.content,...n.binary===void 0?{}:{binary:n.binary}}},movePath:async(t,n)=>{let r=await e.movePath(t,n);if(!r.ok)throw Error(r.error??`Failed to move path`);return r},createFile:async(t,n)=>{let r=await e.createFile(t,n);if(!r.ok)throw Error(r.error??`Failed to create file`);return r},createFolder:async(t,n)=>{let r=await e.createFolder(t,n);if(!r.ok)throw Error(r.error??`Failed to create folder`);return r},renamePath:async(t,n)=>{let r=await e.renamePath(t,n);if(!r.ok)throw Error(r.error??`Failed to rename path`);return r},revealPath:async t=>{let n=await e.revealPath(t);if(!n.ok)throw Error(n.error??`Failed to reveal path`)},watchDir:t=>e.watchDir(t),unwatchDir:t=>e.unwatchDir(t),onDirChange:t=>e.onDirChange(t)}}function f(e,t){return{kind:`notes-vault`,label:t?`Notes: ${t.split(`/`).pop()||t}`:`Notes vault`,canPickRoot:!1,getInitialRoot:async()=>``,listDir:async t=>{if(!t)return e.map(l);let n=u(e,t);return!n||n.kind!==`folder`?[]:(n.children??[]).map(l)},readFile:async e=>({content:(await r(e)).content,binary:!1})}}var p=n();function m(e){return(0,p.jsxs)(`div`,{className:`folder-action-row`,"aria-label":`Folder actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection,onClick:e.onCopyPath,children:`Copy`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection,onClick:e.onCopyRelativePath,children:`Relative`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection||!e.canReveal,onClick:e.onReveal,children:`Finder`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.canMutate,onClick:e.onCreateFile,children:`New File`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.canMutate,onClick:e.onCreateFolder,children:`New Folder`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:!e.hasSelection||!e.canMutate,onClick:e.onRename,children:`Rename`})]})}function h(e){return(0,p.jsxs)(`div`,{className:`folder-context-menu`,role:`menu`,style:{left:e.x,top:e.y},onPointerDown:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:e.onCopyPath,children:`Copy Path`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:e.onCopyRelativePath,children:`Copy Relative Path`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canReveal,onClick:e.onReveal,children:e.entry.kind===`directory`?`Open Folder`:`Reveal in Finder`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canMutate,onClick:e.onCreateFile,children:`New File`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canMutate,onClick:e.onCreateFolder,children:`New Folder`}),(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!e.canMutate,onClick:e.onRename,children:`Rename`}),e.canRefresh&&(0,p.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:e.onRefresh,children:`Refresh`})]})}function g(e){return(0,p.jsxs)(`div`,{className:`folder-move-confirm`,role:`dialog`,"aria-label":`Confirm folder move`,children:[(0,p.jsxs)(`div`,{className:`folder-move-confirm__title`,children:[`Move "`,e.source.name,`" into "`,e.target.name,`"?`]}),(0,p.jsxs)(`label`,{className:`folder-move-confirm__option`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:e.skipChecked,onChange:t=>e.onSkipCheckedChange(t.target.checked)}),`Don't ask again for internal moves this session`]}),(0,p.jsxs)(`div`,{className:`folder-move-confirm__actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,disabled:e.busy,onClick:e.onCancel,children:`Cancel`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn is-primary`,disabled:e.busy,onClick:e.onConfirm,children:e.busy?`Moving...`:`Move`})]})]})}function _(e){return(0,p.jsxs)(p.Fragment,{children:[e.pendingMove&&(0,p.jsx)(g,{source:e.pendingMove.source,target:e.pendingMove.target,busy:e.isMoving,skipChecked:e.skipMoveConfirmChecked,onSkipCheckedChange:e.onSkipMoveConfirmCheckedChange,onCancel:e.onCancelMove,onConfirm:e.onConfirmMove}),e.contextMenu&&(0,p.jsx)(h,{entry:e.contextMenu.entry,x:e.contextMenu.x,y:e.contextMenu.y,canReveal:e.canReveal,canRefresh:e.canRefresh,canMutate:e.canMutate,onCopyPath:e.onCopyContextPath,onCopyRelativePath:e.onCopyContextRelativePath,onReveal:e.onRevealContextPath,onRefresh:e.onRefreshContext,onCreateFile:e.onCreateContextFile,onCreateFolder:e.onCreateContextFolder,onRename:e.onRenameContextPath})]})}function v(e){return e===null?`Open Folder`:e.split(`/`).pop()||e}function y(e){return e.split(`/`).filter(Boolean).pop()||e}function b(e){return e.branch?e.branch:e.detached?e.head?`detached ${e.head}`:`detached`:e.head??`worktree`}function x(e){let[t,n]=(0,c.useState)(!1),r=e.gitSummary?.loading?`Git ...`:e.gitSummary?.available?`${e.gitSummary.branch??e.gitSummary.head??`detached`} / ${e.gitSummary.dirty?`dirty`:`clean`}`:e.gitSummary?.error?`Git unavailable`:null,i=e.worktreeSummary?.worktrees??[],a=e.rootPath!==null&&(e.worktreeSummary?.loading||e.worktreeSummary?.error||i.length>0),o=e.worktreeSummary?.loading?`Worktrees ...`:i.length>0?`Worktrees ${i.length}`:`Worktrees`;return(0,p.jsxs)(`div`,{className:`folder-toolbar`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-pick-btn`,onClick:e.onPickFolder,disabled:!e.canPickRoot,children:e.canPickRoot?v(e.rootPath):e.label}),r&&(0,p.jsx)(`span`,{className:e.gitSummary?.error?`folder-git-summary is-error`:`folder-git-summary`,title:e.gitSummary?.error??void 0,children:r}),a&&(0,p.jsxs)(`div`,{className:`folder-worktree`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-worktree-btn`,onClick:()=>n(e=>!e),disabled:e.worktreeSummary?.loading||i.length===0,title:e.worktreeSummary?.error??void 0,children:o}),t&&i.length>0&&(0,p.jsx)(`div`,{className:`folder-worktree-menu`,role:`menu`,"aria-label":`Git worktrees`,children:i.map(t=>(0,p.jsxs)(`div`,{className:`folder-worktree-row`,role:`group`,"aria-label":t.path,children:[(0,p.jsxs)(`button`,{type:`button`,className:`folder-worktree-open`,onClick:()=>{n(!1),e.onOpenWorktree?.(t.path)},children:[(0,p.jsxs)(`span`,{className:`folder-worktree-title`,children:[y(t.path),t.current&&(0,p.jsx)(`span`,{className:`folder-worktree-current`,children:`Current`})]}),(0,p.jsxs)(`span`,{className:`folder-worktree-meta`,children:[b(t),` · `,t.path]})]}),(0,p.jsxs)(`span`,{className:`folder-worktree-actions`,children:[(0,p.jsx)(`button`,{type:`button`,onClick:()=>e.onCopyWorktreePath?.(t.path),children:`Copy`}),(0,p.jsx)(`button`,{type:`button`,onClick:()=>e.onRevealWorktreePath?.(t.path),children:`Finder`})]})]},t.path))})]}),e.rootPath!==null&&e.gitSummary?.available&&e.onOpenWorktreeOps&&(0,p.jsx)(`button`,{type:`button`,className:`folder-worktree-btn`,onClick:e.onOpenWorktreeOps,children:`Ops`}),e.rootPath!==null&&(0,p.jsx)(`button`,{type:`button`,className:`folder-refresh`,onClick:e.onRefresh,"aria-label":`Refresh folder`,children:`↻`})]})}async function S(e,t){return await(await fetch(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).json()}async function C(e){let t=e.repoRoot??void 0;try{let n=i()?.git,r=n?await n.previewWorktreeOperation(e.folderPanelRoot,t,e.operation):null,a=r?.ok?r:await S(`/api/dashboard/git/worktree-operation-preview`,{folderPanelRoot:e.folderPanelRoot,...t?{repoRoot:t}:{},operation:e.operation});return{ok:a.ok,preview:a.preview??null,error:a.ok?null:a.error??`Failed to preview git operation`}}catch(e){return{ok:!1,preview:null,error:e instanceof Error?e.message:`Failed to preview git operation`}}}async function w(e){let t=e.repoRoot??void 0;try{let n=i()?.git,r=n?await n.runWorktreeOperation(e.folderPanelRoot,t,e.operation,e.confirmed):null,a=r?.ok?r:await S(`/api/dashboard/git/worktree-operation`,{folderPanelRoot:e.folderPanelRoot,...t?{repoRoot:t}:{},operation:e.operation,confirmed:e.confirmed});return{ok:a.ok,repoRoot:a.repoRoot??null,preview:a.preview??null,stdout:a.stdout??``,worktrees:a.worktrees??[],error:a.ok?null:a.error??`Git operation failed`}}catch(e){return{ok:!1,repoRoot:null,preview:null,stdout:``,worktrees:[],error:e instanceof Error?e.message:`Git operation failed`}}}function T(e){return e.length>0?e.join(` `):`Command unavailable`}function E(e){return e.status===`running`?`Running`:e.status===`succeeded`?`Done`:e.status===`blocked`?`Blocked`:e.status===`cancelled`?`Cancelled`:`Failed`}function ee(e){return e.history.length===0?null:(0,p.jsxs)(`div`,{className:`folder-worktree-history`,"aria-label":`Git worktree operation history`,children:[(0,p.jsx)(`div`,{className:`folder-worktree-history__title`,children:`Recent operations`}),e.history.map(t=>(0,p.jsxs)(`div`,{className:`folder-worktree-history__item is-${t.status}`,children:[(0,p.jsxs)(`div`,{className:`folder-worktree-history__main`,children:[(0,p.jsx)(`span`,{className:`folder-worktree-history__label`,children:t.operationLabel}),(0,p.jsx)(`span`,{className:`folder-worktree-history__status`,children:E(t)})]}),(0,p.jsx)(`div`,{className:`folder-worktree-history__command`,title:T(t.commandPreview),children:T(t.commandPreview)}),t.stdout&&(0,p.jsx)(`pre`,{className:`folder-worktree-history__output`,children:t.stdout}),t.stderr&&(0,p.jsx)(`pre`,{className:`folder-worktree-history__output is-error`,children:t.stderr}),t.error&&(0,p.jsx)(`div`,{className:`folder-worktree-history__error`,children:t.error}),(0,p.jsx)(`button`,{type:`button`,className:`folder-worktree-history__retry`,disabled:e.busy||t.status===`running`,onClick:()=>e.onRetry(t.operation),children:`Retry with confirmation`})]},t.id))]})}function D(e){return e.split(`/`).filter(Boolean).pop()||e}function te(e){return e?e.command.join(` `):`Preview unavailable`}function O(e){let[t,n]=(0,c.useState)(`worktree-add`),[r,i]=(0,c.useState)(``),[a,o]=(0,c.useState)(``),[s,l]=(0,c.useState)(!1),[u,d]=(0,c.useState)(e.worktrees.find(e=>!e.current)?.path??e.worktrees[0]?.path??``),[f,m]=(0,c.useState)(!1),[h,g]=(0,c.useState)(!1),[_,v]=(0,c.useState)(!1),[y,b]=(0,c.useState)(null),[x,S]=(0,c.useState)(null),w=(0,c.useCallback)(e=>{n(e.type),g(!1),e.type===`worktree-add`&&(i(e.path),o(e.branch),l(e.createBranch)),e.type===`worktree-remove`&&(d(e.path),m(e.force))},[]),T=(0,c.useMemo)(()=>t===`worktree-add`?{type:t,path:r,branch:a,createBranch:s}:t===`worktree-remove`?{type:t,path:u,force:f}:{type:t},[a,s,f,t,u,r]);(0,c.useEffect)(()=>{let t=!1;return g(!1),v(!0),b(null),S(null),(async()=>{let n=await C({folderPanelRoot:e.folderPanelRoot,repoRoot:e.repoRoot,operation:T});t||(v(!1),S(n.preview),b(n.error))})(),()=>{t=!0}},[T,e.folderPanelRoot,e.repoRoot]);let E=h&&x!==null&&!y&&!_&&!e.busy,O=t===`worktree-remove`;return(0,p.jsx)(`div`,{className:`folder-worktree-ops`,role:`dialog`,"aria-label":`Git worktree operations`,children:(0,p.jsxs)(`div`,{className:`folder-worktree-ops__panel`,children:[(0,p.jsxs)(`div`,{className:`folder-worktree-ops__header`,children:[(0,p.jsx)(`span`,{children:`Worktree Ops`}),(0,p.jsx)(`button`,{type:`button`,onClick:e.onClose,disabled:e.busy,children:`Close`})]}),(0,p.jsx)(`div`,{className:`folder-worktree-ops__row`,children:(0,p.jsxs)(`label`,{children:[`Operation`,(0,p.jsxs)(`select`,{value:t,onChange:e=>n(e.target.value),disabled:e.busy,children:[(0,p.jsx)(`option`,{value:`worktree-add`,children:`Add worktree`}),(0,p.jsx)(`option`,{value:`worktree-remove`,children:`Remove worktree`}),(0,p.jsx)(`option`,{value:`worktree-prune`,children:`Prune stale worktrees`})]})]})}),t===`worktree-add`&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`folder-worktree-ops__row`,children:(0,p.jsxs)(`label`,{children:[`Path`,(0,p.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`/Users/jun/...`,disabled:e.busy})]})}),(0,p.jsxs)(`div`,{className:`folder-worktree-ops__row`,children:[(0,p.jsxs)(`label`,{children:[`Branch / ref`,(0,p.jsx)(`input`,{value:a,onChange:e=>o(e.target.value),placeholder:`feature/name`,disabled:e.busy})]}),(0,p.jsxs)(`label`,{className:`folder-worktree-ops__check`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>l(e.target.checked),disabled:e.busy}),`Create branch`]})]})]}),O&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`folder-worktree-ops__row`,children:(0,p.jsxs)(`label`,{children:[`Worktree`,(0,p.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),disabled:e.busy,children:e.worktrees.map(e=>(0,p.jsxs)(`option`,{value:e.path,children:[D(e.path),` - `,e.path]},e.path))})]})}),(0,p.jsxs)(`label`,{className:`folder-worktree-ops__warning`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>m(e.target.checked),disabled:e.busy}),`Force remove dirty worktree`]})]}),(0,p.jsx)(`div`,{className:`folder-worktree-ops__preview`,"aria-busy":_,children:_?`Previewing command...`:te(x)}),y&&(0,p.jsx)(`div`,{className:`folder-worktree-ops__warning`,children:y}),O&&!f&&(0,p.jsx)(`div`,{className:`folder-worktree-ops__hint`,children:`Dirty worktrees are blocked unless force remove is explicitly checked.`}),O&&f&&(0,p.jsx)(`div`,{className:`folder-worktree-ops__hint`,children:`Preview changes to git worktree remove --force for this target.`}),(0,p.jsxs)(`label`,{className:`folder-worktree-ops__check`,children:[(0,p.jsx)(`input`,{type:`checkbox`,checked:h,onChange:e=>g(e.target.checked),disabled:x===null||!!y||e.busy}),`I understand this will run the previewed git command.`]}),(0,p.jsxs)(`div`,{className:`folder-worktree-ops__actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,onClick:e.onClose,disabled:e.busy,children:`Cancel`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn is-primary`,disabled:!E,onClick:()=>e.onRun(T,x),children:e.busy?`Running...`:`Run`})]}),(0,p.jsx)(ee,{history:e.history,busy:e.busy,onRetry:w})]})})}function ne(e){let t=e.lastIndexOf(`/`);return t>0?e.slice(0,t):`/`}function k(e,t){return t===e||t.startsWith(`${e}/`)}function re(e,t){if(!e)return t;let n=e.endsWith(`/`)?e:`${e}/`;return t.startsWith(n)?t.slice(n.length):t}function ie(e,t){let n=new Map(e);for(let e of t)n.delete(e);return n}function ae(e){let t=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let e=t.current;e&&(e.focus(),e.select())},[e.initialName]),(0,p.jsx)(`form`,{className:`folder-inline-editor`,"aria-label":e.label,onSubmit:n=>{n.preventDefault();let r=t.current?.value.trim()??``;r&&e.onSubmit(r)},children:(0,p.jsx)(`input`,{ref:t,className:`folder-inline-editor__input`,defaultValue:e.initialName,disabled:e.busy,onBlur:()=>{e.busy||e.onCancel()},onKeyDown:t=>{t.key===`Escape`&&(t.preventDefault(),e.onCancel()),t.stopPropagation()}})})}function oe(e){return/mac|iphone|ipad|ipod/i.test(e)}function se(){return typeof navigator>`u`?``:navigator.userAgentData?.platform||navigator.platform||navigator.userAgent||``}function ce(e){if(typeof HTMLElement>`u`||!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`?!0:!!e.closest(`[contenteditable="true"], .cm-editor, .ProseMirror, [data-milkdown-root], [role="textbox"]`)}function le(e,t=se()){return oe(t)?e.metaKey:e.ctrlKey}function ue(e,t){if(ce(e.target??null))return null;let n=e.key.toLowerCase(),r=e.code??``,i=oe(t.platform??se())?e.metaKey:e.ctrlKey,a=i&&e.altKey&&!e.shiftKey;return t.chordActive?n===`escape`?`cancel-chord`:i||e.altKey||e.shiftKey?null:n===`p`||r===`KeyP`?`copy-path`:n===`r`||r===`KeyR`?`reveal-path`:`cancel-chord`:i&&!e.altKey&&!e.shiftKey&&(n===`k`||r===`KeyK`)?`start-chord`:a&&(n===`c`||r===`KeyC`)?`copy-path`:a&&(n===`r`||r===`KeyR`)?`reveal-path`:i&&!e.altKey&&n===`c`?e.shiftKey?`copy-path`:`copy-relative-path`:null}function de(e){window.dispatchEvent(new CustomEvent(`jaw-folder-panel-drag`,{detail:{active:e}}))}function fe(e){let t=e.inlineMutation&&e.inlineMutation.kind!==`rename`&&e.inlineMutation.parentDirectory===e.parentPath?e.inlineMutation:null;return(0,p.jsxs)(p.Fragment,{children:[t&&(0,p.jsxs)(`div`,{className:`folder-entry folder-entry-inline`,children:[e.depth>0&&(0,p.jsx)(`span`,{className:`folder-indent`,"aria-hidden":`true`,children:Array.from({length:e.depth},(e,t)=>(0,p.jsx)(`span`,{className:`folder-indent-guide`},t))}),(0,p.jsx)(`span`,{className:`folder-entry-disclosure is-placeholder`,"aria-hidden":`true`,children:`·`}),(0,p.jsx)(ae,{initialName:t.initialName,busy:e.isMutating,label:t.kind===`file`?`New file name`:`New folder name`,onSubmit:e.submitInlineMutation,onCancel:e.cancelInlineMutation})]}),e.entries.map(t=>(0,p.jsxs)(`div`,{children:[(()=>{let n=e.decorationsByPath.get(t.path),r=e.inlineMutation?.kind===`rename`&&e.inlineMutation.targetPath===t.path?e.inlineMutation:null;return(0,p.jsxs)(`div`,{className:[`folder-entry`,`folder-entry-${t.kind}`,n?.className??``,e.selectedPaths.has(t.path)?`is-selected`:``,e.focusedPath===t.path?`is-focused`:``,e.dropTargetPath===t.path?`is-drop-target`:``,e.dragSelection?.primaryEntry.path===t.path?`is-dragging`:``].filter(Boolean).join(` `),role:`treeitem`,"aria-selected":e.selectedPaths.has(t.path),draggable:e.canUseNativeActions,onDragStart:n=>{if(!e.canUseNativeActions)return;let r=e.getDragSelectionFor(t);e.setDragSelection(r),de(!0),n.dataTransfer.effectAllowed=`copyMove`,n.dataTransfer.setData(s,o(r)),n.dataTransfer.setData(`text/plain`,r.entries.map(e=>e.path).join(`
|
|
2
|
+
`))},onDragEnd:()=>{de(!1),e.setDragSelection(null),e.setDropTargetPath(null)},onDragOver:n=>{let r=e.dragSelection?.primaryEntry;!r||t.kind!==`directory`||r.path!==t.path&&(r.kind===`directory`&&k(r.path,t.path)||(n.preventDefault(),n.dataTransfer.dropEffect=`move`,e.setDropTargetPath(t.path)))},onDragLeave:()=>{e.dropTargetPath===t.path&&e.setDropTargetPath(null)},onDrop:n=>{!e.dragSelection||t.kind!==`directory`||(n.preventDefault(),de(!1),e.setDropTargetPath(null),e.requestMove(e.dragSelection.primaryEntry,t))},children:[e.depth>0&&(0,p.jsx)(`span`,{className:`folder-indent`,"aria-hidden":`true`,children:Array.from({length:e.depth},(e,t)=>(0,p.jsx)(`span`,{className:`folder-indent-guide`},t))}),(0,p.jsx)(`button`,{type:`button`,className:t.kind===`directory`?`folder-entry-disclosure`:`folder-entry-disclosure is-placeholder`,"aria-label":t.kind===`directory`?e.expanded.has(t.path)?`Collapse ${t.name}`:`Expand ${t.name}`:void 0,"aria-expanded":t.kind===`directory`?e.expanded.has(t.path):void 0,tabIndex:t.kind===`directory`?0:-1,disabled:t.kind!==`directory`,onClick:n=>{n.stopPropagation(),t.kind===`directory`&&e.toggleEntryExpansion(t)},children:t.kind===`directory`?e.expanded.has(t.path)?`▾`:`▸`:`·`}),r?(0,p.jsx)(ae,{initialName:r.initialName,busy:e.isMutating,label:`Rename`,onSubmit:e.submitInlineMutation,onCancel:e.cancelInlineMutation}):(0,p.jsxs)(`button`,{type:`button`,className:`folder-entry-btn`,"data-folder-path":t.path,onKeyDown:n=>e.handleEntryKeyDown(n,t),onContextMenu:n=>{n.preventDefault(),e.openContextMenu(t,n.clientX,n.clientY)},onClick:n=>e.selectEntry(t,{range:n.shiftKey,toggle:le(n),preview:!1}),onDoubleClick:()=>{t.kind===`directory`?e.toggleEntryExpansion(t):e.openFileEntry(t)},children:[(0,p.jsx)(`span`,{className:`folder-entry-name`,children:t.name}),n?.label&&(0,p.jsx)(`span`,{className:`folder-entry-git-badge`,title:n.title,"aria-label":n.title??n.label,children:n.label})]})]})})(),t.kind===`directory`&&e.expanded.has(t.path)&&e.childrenCache.has(t.path)&&(0,p.jsx)(fe,{...e,entries:e.childrenCache.get(t.path),parentPath:t.path,depth:e.depth+1})]},t.path))]})}function pe(e){return(0,p.jsxs)(`div`,{className:`folder-unavailable`,children:[(0,p.jsx)(`div`,{className:`folder-unavailable__title`,children:`Folder unavailable`}),(0,p.jsx)(`div`,{className:`folder-unavailable__path`,title:e.path,children:e.path}),(0,p.jsx)(`div`,{className:`folder-unavailable__error`,children:e.error}),(0,p.jsxs)(`div`,{className:`folder-unavailable__actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,onClick:e.onOpenFolder,children:`Open Folder`}),(0,p.jsx)(`button`,{type:`button`,className:`folder-action-btn`,onClick:e.onClear,children:`Clear`})]})]})}function me(e){return(0,p.jsxs)(`div`,{ref:e.treeRef,className:e.rootPath===null?`folder-tree folder-empty-root`:`folder-tree`,role:`tree`,"aria-multiselectable":`true`,children:[(0,p.jsx)(fe,{entries:e.entries,parentPath:e.rootPath,depth:0,expanded:e.expanded,childrenCache:e.childrenCache,selectedPaths:e.folderSelection.selectedPaths,focusedPath:e.folderSelection.selection.focusedPath,decorationsByPath:e.decorationsByPath,dropTargetPath:e.dropTargetPath,dragSelection:e.dragSelection,inlineMutation:e.inlineMutation,isMutating:e.isMutating,canUseNativeActions:e.canUseNativeActions,setDragSelection:e.setDragSelection,setDropTargetPath:e.setDropTargetPath,getDragSelectionFor:e.folderSelection.getDragSelectionFor,requestMove:e.requestMove,handleEntryKeyDown:e.handleEntryKeyDown,selectEntry:e.selectEntry,toggleEntryExpansion:e.toggleEntryExpansion,openFileEntry:e.openFileEntry,openContextMenu:e.openContextMenu,submitInlineMutation:e.submitInlineMutation,cancelInlineMutation:e.cancelInlineMutation}),e.rootPath===null&&!e.error&&(0,p.jsx)(`div`,{className:`folder-empty-root__content`,children:`Choose a folder to browse files.`}),e.unavailableRoot&&(0,p.jsx)(pe,{path:e.unavailableRoot.path,error:e.unavailableRoot.error,onOpenFolder:e.onPickFolder,onClear:e.onClearUnavailableRoot}),e.entries.length===0&&!e.inlineMutation&&!e.error&&!e.unavailableRoot&&e.rootPath!==null&&(0,p.jsx)(`div`,{className:`folder-empty`,children:e.sourceKind===`notes-vault`?`No notes in vault`:`Empty directory`})]})}var A={selectedPaths:[],focusedPath:null,anchorPath:null};function he(e,t,n){let r=[],i=e=>{for(let a of e)r.push(a),a.kind===`directory`&&n.has(a.path)&&i(t.get(a.path)??[])};return i(e),r}function ge(e,t){let n=new Set(t),r=e.selectedPaths.filter(e=>n.has(e)),i=e.focusedPath&&n.has(e.focusedPath)?e.focusedPath:r[0]??null;return{selectedPaths:r,focusedPath:i,anchorPath:e.anchorPath&&n.has(e.anchorPath)?e.anchorPath:i}}function _e(e,t,n,r={}){if(!n.includes(t))return e;if(r.range&&e.anchorPath&&n.includes(e.anchorPath))return{selectedPaths:M(n,e.anchorPath,t),focusedPath:t,anchorPath:e.anchorPath};if(r.toggle){let r=new Set(e.selectedPaths);return r.has(t)?r.delete(t):r.add(t),r.size===0&&r.add(t),{selectedPaths:n.filter(e=>r.has(e)),focusedPath:t,anchorPath:t}}return{selectedPaths:[t],focusedPath:t,anchorPath:t}}function j(e,t,n,r){if(t.length===0)return A;let i=e.focusedPath&&t.includes(e.focusedPath)?e.focusedPath:e.selectedPaths.find(e=>t.includes(e))??t[0],a=t.indexOf(i),o=t[Math.max(0,Math.min(t.length-1,a+(n===`down`?1:-1)))];if(r){let n=e.anchorPath&&t.includes(e.anchorPath)?e.anchorPath:i;return{selectedPaths:M(t,n,o),focusedPath:o,anchorPath:n}}return{selectedPaths:[o],focusedPath:o,anchorPath:o}}function ve(e,t){return e.filter(e=>t.has(e.path))}function M(e,t,n){let r=e.indexOf(t),i=e.indexOf(n);if(r<0||i<0)return[n];let a=Math.min(r,i),o=Math.max(r,i);return e.slice(a,o+1)}function ye(e){return Array.from(e.entries())}function be(e){return new Map(e)}function xe(e,t){return!e||t&&e.rootPath!==t?null:e}function Se(e){return{rootPath:e.rootPath,entries:e.entries,expandedPaths:Array.from(e.expanded),childrenCache:ye(e.childrenCache),selection:e.selection}}function N(e){return/not a git repository/i.test(e)}async function P(e,t){return await(await fetch(`/api/dashboard/git/status-map`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folderPanelRoot:e,...t.repoRoot?{repoRoot:t.repoRoot}:{},options:{includeIgnored:t.includeIgnored!==!1,includeUntracked:t.includeUntracked!==!1}})})).json()}async function F(e,t={}){let n=i()?.git,r=n?await n.getStatusMap(e,t.repoRoot,{includeIgnored:t.includeIgnored!==!1,includeUntracked:t.includeUntracked!==!1}):null,a=r?.ok?r:await P(e,t);if(a.ok&&a.status)return{ok:!0,status:a.status};let o=a.error??`Failed to load git status`;return{ok:!1,quiet:N(o),error:o}}var I={available:!1,loading:!1,error:null,repoRoot:null,branch:null,head:null,dirty:!1,decorationsByPath:new Map},L={modified:`M`,added:`A`,deleted:`D`,renamed:`R`,untracked:`?`,ignored:`·`,conflict:`U`,submodule:`S`};function Ce(e){return{className:`git-${e.kind}`,label:L[e.kind],title:[e.kind,e.staged?`staged`:``,e.unstaged?`unstaged`:``].filter(Boolean).join(` · `)}}function R(e){let t=e.kinds[0]??`modified`;return{className:`git-${t}`,label:`${L[t]}${e.changedCount>1?e.changedCount:``}`,title:`${e.changedCount} changed item${e.changedCount===1?``:`s`}`}}function z(e){let t=new Map;for(let n of e.files)t.set(n.path,Ce(n));for(let n of e.directories)t.set(n.path,R(n));return{available:!0,loading:!1,error:null,repoRoot:e.repoRoot,branch:e.branch,head:e.head,dirty:e.dirty,decorationsByPath:t}}function we(e){let{rootPath:t,repoRoot:n,enabled:r,refreshToken:i}=e,[a,o]=(0,c.useState)(I);return(0,c.useEffect)(()=>{if(!r||t===null){o(I);return}let e=!1,i=window.setTimeout(()=>{o(e=>({...e,loading:!0,error:null})),(async()=>{let r=await F(t,{...n?{repoRoot:n}:{},includeIgnored:!0,includeUntracked:!0});if(!e){if(r.ok){o(z(r.status));return}if(n&&/repo root mismatch/i.test(r.error)){let n=await F(t,{includeIgnored:!0,includeUntracked:!0});if(e)return;if(n.ok){o(z(n.status));return}o(n.quiet?I:{...I,error:n.error});return}o(r.quiet?I:{...I,error:r.error})}})()},250);return()=>{e=!0,window.clearTimeout(i)}},[r,i,n,t]),a}function B(e){return/not a git repository/i.test(e)}async function V(e,t){return await(await fetch(`/api/dashboard/git/worktrees`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({folderPanelRoot:e,...t?{repoRoot:t}:{}})})).json()}async function H(e,t){let n=t??void 0;try{let t=i()?.git,r=t?await t.getWorktrees(e,n):null,a=r?.ok?r:await V(e,n);if(a.ok)return{ok:!0,repoRoot:a.repoRoot??n??null,worktrees:a.worktrees??[],error:null};let o=a.error??`Failed to load git worktrees`;return{ok:!1,repoRoot:null,worktrees:[],error:B(o)?null:o}}catch(e){let t=e instanceof Error?e.message:`Failed to load git worktrees`;return{ok:!1,repoRoot:null,worktrees:[],error:B(t)?null:t}}}var U={available:!1,loading:!1,error:null,repoRoot:null,worktrees:[]};function Te(e){let{folderPanelRoot:t,repoRoot:n,enabled:r,refreshToken:i}=e,[a,o]=(0,c.useState)(0),[s,l]=(0,c.useState)(U),u=(0,c.useCallback)(()=>o(e=>e+1),[]);return(0,c.useEffect)(()=>{if(!r||t===null){l(U);return}let e=!1;return l(e=>({...e,loading:!0,error:null})),(async()=>{let r=await H(t,n??void 0);e||l({available:r.ok&&r.worktrees.length>0,loading:!1,error:r.error,repoRoot:r.repoRoot,worktrees:r.worktrees})})(),()=>{e=!0}},[r,t,a,i,n]),(0,c.useMemo)(()=>({...s,refresh:u}),[u,s])}function Ee(e=1600){let[t,n]=(0,c.useState)(!1),r=(0,c.useRef)(null),i=(0,c.useCallback)(()=>{r.current!==null&&window.clearTimeout(r.current),r.current=null,n(!1)},[]),a=(0,c.useCallback)(()=>{r.current!==null&&window.clearTimeout(r.current),n(!0),r.current=window.setTimeout(()=>{r.current=null,n(!1)},e)},[e]);return(0,c.useEffect)(()=>()=>i(),[i]),{folderChordActive:t,startFolderChord:a,cancelFolderChord:i}}function De(e){let t=e.onPreviewFile,[n,r]=(0,c.useState)(()=>e.initialSelection??A),i=(0,c.useMemo)(()=>he(e.entries,e.childrenCache,e.expanded),[e.childrenCache,e.entries,e.expanded]),a=(0,c.useMemo)(()=>i.map(e=>e.path),[i]),o=(0,c.useMemo)(()=>new Set(n.selectedPaths),[n.selectedPaths]),s=(0,c.useMemo)(()=>ve(i,o),[o,i]),l=n.focusedPath??s[0]?.path??null,u=i.find(e=>e.path===l)??s[0]??null;return(0,c.useEffect)(()=>{r(e=>ge(e,a))},[a]),{selection:n,visibleEntries:i,visiblePaths:a,selectedPaths:o,selectedPath:l,selectedEntries:s,selectedEntry:u,selectEntry:(0,c.useCallback)((e,n={})=>{r(t=>_e(t,e.path,a,n)),e.kind===`file`&&n.preview!==!1&&t?.(e.path)},[t,a]),selectOnlyPath:(0,c.useCallback)(e=>{r(e&&a.includes(e)?{selectedPaths:[e],focusedPath:e,anchorPath:e}:A)},[a]),resetSelection:(0,c.useCallback)(()=>{r(A)},[]),moveKeyboardSelection:(0,c.useCallback)((e,t)=>{r(n=>j(n,a,e,t))},[a]),getDragSelectionFor:(0,c.useCallback)(e=>o.has(e.path)?{primaryEntry:e,entries:s}:{primaryEntry:e,entries:[e]},[s,o])}}var W=120,Oe=80;function ke(e){return e===`watch`?`Updated from file changes`:e===`move`?`Updated after move`:e===`mutation`?`Updated after file change`:e===`git-operation`?`Updated after git operation`:e===`worktree-switch`?`Updated worktree`:e===`root`?`Updated folder root`:`Updated folder`}function Ae(e){let{rootPath:t,expanded:n,source:r,loadDir:i,loadChildren:a,bumpGitRefresh:o,onGitRefresh:s,refreshWorktrees:l}=e,[u,d]=(0,c.useState)(null),[f,p]=(0,c.useState)(null),[m,h]=(0,c.useState)(!1),g=(0,c.useRef)(!1),_=(0,c.useRef)(null),v=(0,c.useRef)(null),y=(0,c.useRef)(async()=>void 0),b=(0,c.useRef)(!0);(0,c.useEffect)(()=>(b.current=!0,()=>{b.current=!1}),[]);let x=(0,c.useCallback)(()=>{v.current!==null&&(window.clearTimeout(v.current),v.current=null)},[]),S=(0,c.useCallback)(async(e,r={})=>{if(t!==null){if(g.current){let t=_.current;_.current=t?{reason:e,options:{extraPaths:Array.from(new Set([...t.options.extraPaths??[],...r.extraPaths??[]]))}}:{reason:e,options:r};return}g.current=!0,b.current&&(h(!0),d(e===`watch`?`Refreshing changed files...`:`Refreshing folder...`));try{let c=Array.from(new Set([...Array.from(n),...r.extraPaths??[]])).slice(0,Oe);await i(t);for(let e of c)await a(e,{force:!0});if(o(),s?.(),l(),!b.current)return;let u=Math.max(0,n.size-c.length);d(u>0?`${ke(e)}; ${u} collapsed/overflow branches skipped`:ke(e))}finally{g.current=!1,b.current&&h(!1);let e=_.current;_.current=null,e&&b.current&&y.current(e.reason,e.options)}}},[o,n,a,i,s,l,t]),C=(0,c.useCallback)(async(e=`manual`,t={})=>{await S(e,t)},[S]);(0,c.useEffect)(()=>{y.current=S},[S]);let w=(0,c.useCallback)(()=>{x(),v.current=window.setTimeout(()=>{v.current=null,y.current(`watch`)},W)},[x]);return(0,c.useEffect)(()=>{if(!r.watchDir||!r.onDirChange||t===null)return;let e=!1;(async()=>{let n=await r.watchDir?.(t);e||(n&&!n.ok?p(`Watch disabled: ${n.error??`failed to watch directory`}`):p(null))})();let n=r.onDirChange(()=>{w()});return()=>{e=!0,x(),n(),r.unwatchDir?.(t)}},[x,t,w,r]),{isRefreshing:m,refreshStatus:u,watchStatus:f,refreshVisibleTree:C}}function je(e){let{selectedFilePath:t,rootPath:n,selectedPath:r,visiblePaths:i,selectOnlyPath:a}=e,o=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=t??null,s=e!==o.current;s&&(o.current=e),!(!s&&r)&&(!e||!n||k(n,e)&&e!==r&&i.includes(e)&&a(e))},[n,a,t,r,i])}var Me=8,Ne=0;function G(){return Ne+=1,`folder-git-op-${Date.now()}-${Ne}`}function K(e){return/dirty|uncommitted|confirmation required|not registered|outside home|symlink/i.test(e)}function q(e,t){return{id:G(),operation:e,startedAt:new Date().toISOString(),finishedAt:null,operationLabel:t?.label??e.type,commandPreview:t?.command??[],status:`running`,stdout:``,stderr:``,error:null}}function J(e,t){return[t,...e].slice(0,Me)}function Y(e,t,n){return e.map(e=>e.id===t?n.ok?{...e,finishedAt:new Date().toISOString(),status:`succeeded`,stdout:n.stdout,error:null}:{...e,finishedAt:new Date().toISOString(),status:K(n.error)?`blocked`:`failed`,error:n.error}:e)}function Pe(e){let{rootPath:t,source:n,worktreeState:r,openFolderRoot:i,refreshVisibleTree:o,bumpGitRefresh:s,setActionStatus:l,setError:u}=e,[d,f]=(0,c.useState)(!1),[p,m]=(0,c.useState)(!1),[h,g]=(0,c.useState)([]);return{open:d,setOpen:f,busy:p,history:h,openWorktreeRoot:(0,c.useCallback)(async e=>{await i(e,{registerGitWorktree:!0,repoRoot:r.repoRoot})},[i,r.repoRoot]),copyWorktreePath:(0,c.useCallback)(async e=>{let t=await a(e);t.ok?(l(`Copied worktree path`),u(null)):u(t.error??`Failed to copy worktree path`)},[l,u]),revealWorktreePath:(0,c.useCallback)(async e=>{if(!(!t||!n.registerGitWorktreeRoot||!n.revealPath))try{await n.registerGitWorktreeRoot(t,r.repoRoot??void 0,e),await n.revealPath(e),l(`Opened worktree in Finder`),u(null)}catch(e){u(e.message)}},[t,l,u,n,r.repoRoot]),runWorktreeOperation:(0,c.useCallback)(async(e,n)=>{if(!t)return;let i=q(e,n),a=!1;g(e=>J(e,i)),m(!0);try{let n=await w({folderPanelRoot:t,repoRoot:r.repoRoot,operation:e,confirmed:!0});if(!n.ok){let e=n.error??`Git operation failed`;throw g(t=>Y(t,i.id,{ok:!1,error:e})),a=!0,Error(e)}g(e=>Y(e,i.id,{ok:!0,stdout:n.stdout})),a=!0,l(n.preview?.label??`Git worktree operation completed`),u(null),f(!1),r.refresh(),s(),await o(`git-operation`)}catch(e){let t=e.message;a||g(e=>Y(e,i.id,{ok:!1,error:t})),u(t)}finally{m(!1)}},[s,o,t,l,u,r])}}function Fe(e){let[t,n]=(0,c.useState)(null),[r,i]=(0,c.useState)(!1),a=(0,c.useCallback)(()=>e.rootPath?e.selectedEntry?e.selectedEntry.kind===`directory`?e.selectedEntry.path:ne(e.selectedEntry.path):e.rootPath:null,[e.rootPath,e.selectedEntry]),o=(0,c.useCallback)(t=>{let r=a();r&&(t===`file`&&!e.source.createFile||t===`directory`&&!e.source.createFolder||(e.setExpanded(e=>new Set(e).add(r)),n({kind:t,parentDirectory:r,initialName:t===`file`?`untitled.txt`:`untitled`}),e.closeContextMenu()))},[e,a]),s=(0,c.useCallback)(async(t,r,a)=>{let o=t===`file`?e.source.createFile:e.source.createFolder;if(!o)return;let s=t===`file`?`New file name`:`New folder name`;if(!a.trim()){e.setError(`${s} required`);return}i(!0);try{let i=(await o(r,a.trim())).entry;t===`directory`&&e.selectedEntry?.path===r&&e.setExpanded(e=>new Set(e).add(r)),e.setActionStatus(t===`file`?`Created file`:`Created folder`),e.setError(null),n(null),await e.refreshAfterMutation(r,i?.path??null)}catch(t){e.setError(t.message)}finally{i(!1)}},[e]),l=(0,c.useCallback)(()=>{!e.selectedEntry||!e.source.renamePath||(n({kind:`rename`,parentDirectory:ne(e.selectedEntry.path),targetPath:e.selectedEntry.path,initialName:e.selectedEntry.name}),e.closeContextMenu())},[e]),u=(0,c.useCallback)(async(t,r)=>{if(!t.targetPath||!e.source.renamePath)return;let a=r.trim();if(!a||a===t.initialName){n(null);return}i(!0);try{let r=await e.source.renamePath(t.targetPath,a),i=t.parentDirectory,o=r.entry?.path??null,s=o?e.renamedPreviewPath(e.selectedFilePath,t.targetPath,o):null;e.setActionStatus(`Renamed`),e.setError(null),n(null),await e.refreshAfterMutation(i,o,[t.targetPath]),s&&e.onPreviewFile?.(s)}catch(t){e.setError(t.message)}finally{i(!1)}},[e]);return{inlineMutation:t,isMutating:r,requestCreateEntry:o,requestRenameSelectedEntry:l,submitInlineMutation:(0,c.useCallback)(e=>{t&&(t.kind===`rename`?u(t,e):s(t.kind,t.parentDirectory,e))},[t,s,u]),cancelInlineMutation:()=>n(null)}}function Ie(e){let[t,n]=(0,c.useState)(null),r=(0,c.useCallback)(()=>n(null),[]),i=(0,c.useCallback)((t,r,i)=>{e.selectedPaths.has(t.path)||e.selectOnlyPath(t.path),n({entry:t,x:r,y:i})},[e]);return(0,c.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&n(null)},i=()=>{document.activeElement instanceof HTMLIFrameElement&&n(null)};return window.addEventListener(`pointerdown`,r),window.addEventListener(`keydown`,e),window.addEventListener(`blur`,i),()=>{window.removeEventListener(`pointerdown`,r),window.removeEventListener(`keydown`,e),window.removeEventListener(`blur`,i)}},[r,t]),{contextMenu:t,closeContextMenu:r,openContextMenu:i}}function Le(){return i()?.folder??null}function Re(e,t,n){return!e||!k(t,e)?null:e===t?n:`${n}${e.slice(t.length)}`}function ze(e){let t=Le(),n=e.repoRootPath??null,r=e.gitRefreshVersion??0,i=e.onGitRefresh,o=e.onRepoRootChange,s=(0,c.useRef)(!1),l=(0,c.useMemo)(()=>t?d(t):f(e.notesTree??[],e.notesRoot??null),[t,e.notesRoot,e.notesTree]),u=(0,c.useMemo)(()=>xe(e.sessionState??null,e.externalRootPath??null),[e.externalRootPath,e.sessionState]),[h,g]=(0,c.useState)(()=>u?.rootPath??null),[v,y]=(0,c.useState)(()=>u?.entries??[]),[b,S]=(0,c.useState)(()=>new Set(u?.expandedPaths??[])),[C,w]=(0,c.useState)(()=>u?be(u.childrenCache):new Map),[T,E]=(0,c.useState)(null),[ee,D]=(0,c.useState)(null),[te,ae]=(0,c.useState)(null),[oe,se]=(0,c.useState)(null),[ce,le]=(0,c.useState)(null),[de,fe]=(0,c.useState)(!1),[pe,A]=(0,c.useState)(!1),[he,ge]=(0,c.useState)(!1),[_e,j]=(0,c.useState)(null),[ve,M]=(0,c.useState)(0),ye=(0,c.useRef)(null),N=(0,c.useRef)(null),{folderChordActive:P,startFolderChord:F,cancelFolderChord:I}=Ee(),L=e.onPreviewFile,Ce=e.selectedFilePath,R=De({entries:v,childrenCache:C,expanded:b,initialSelection:u?.selection,onPreviewFile:L}),z=R.selectedEntry,B=R.selectedEntries,V=Ie({selectedPaths:R.selectedPaths,selectOnlyPath:R.selectOnlyPath});je({selectedFilePath:e.selectedFilePath,rootPath:h,selectedPath:R.selectedPath,visiblePaths:R.visiblePaths,selectOnlyPath:R.selectOnlyPath}),(0,c.useEffect)(()=>{e.onSessionStateChange?.(Se({rootPath:h,entries:v,expanded:b,childrenCache:C,selection:R.selection}))},[C,v,b,R.selection,e.onSessionStateChange,h]);let H=(0,c.useCallback)(async e=>{try{return y(await l.listDir(e)),E(null),D(t=>t?.path===e?null:t),{ok:!0}}catch(e){let t=e.message;return E(t),{ok:!1,error:t}}},[l]),U=(0,c.useCallback)(async(t,n={})=>{try{let r=t;if(n.registerGitWorktree){if(!h)throw Error(`Current folder root required`);await l.registerGitWorktreeRoot?.(h,n.repoRoot??void 0,t)}else l.authorizeRoot&&(r=await l.authorizeRoot(t));h&&l.unwatchDir&&l.unwatchDir(h),e.onRootChange?.(r),g(r),S(new Set),w(new Map),y([]),R.resetSelection(),E(null),D(null);let i=await H(r);i.ok||D({path:r,error:i.error}),M(e=>e+1)}catch(e){E(e.message)}},[R,H,e,h,l]),W=(0,c.useCallback)(async(e,t={})=>{if(!(!t.force&&C.has(e)))try{let t=await l.listDir(e);w(n=>new Map(n).set(e,t))}catch(e){E(e.message)}},[C,l]),Oe=(0,c.useCallback)(()=>{M(e=>e+1)},[]),ke=(0,c.useCallback)(e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):(n.add(e),W(e)),n})},[W]),Me=(0,c.useCallback)(async()=>{if(l.pickRoot)try{let e=await l.pickRoot();e&&await U(e)}catch(e){E(e.message)}},[U,l]),Ne=(0,c.useCallback)(()=>{e.onRootChange?.(null),g(null),y([]),R.resetSelection(),D(null),E(null)},[R,e]);(0,c.useEffect)(()=>{if(s.current||h!==null||e.externalRootPath)return;let t=!1;return(async()=>{let e=await l.getInitialRoot();t||(s.current=!0,g(e),e!==null&&await H(e))})(),()=>{t=!0}},[H,e.externalRootPath,h,l]),(0,c.useEffect)(()=>{let t=e.externalRootPath;if(t){if(t===h){if(v.length>0||N.current===t)return;N.current=t}else N.current=null;U(t)}},[v.length,U,e.externalRootPath,h]);let G=we({rootPath:h,enabled:l.kind===`electron-folder`,refreshToken:ve+r}),K=Te({folderPanelRoot:h,repoRoot:G.repoRoot??n,enabled:l.kind===`electron-folder`&&G.available,refreshToken:ve+r}),q=Ae({rootPath:h,expanded:b,source:l,loadDir:H,loadChildren:W,bumpGitRefresh:Oe,onGitRefresh:i,refreshWorktrees:K.refresh}),J=q.refreshVisibleTree,Y=Pe({rootPath:h,source:l,worktreeState:K,openFolderRoot:U,refreshVisibleTree:J,bumpGitRefresh:Oe,setActionStatus:j,setError:E});(0,c.useEffect)(()=>{G.repoRoot&&G.repoRoot!==n&&o?.(G.repoRoot)},[G.repoRoot,o,n]);let ze=l.kind===`electron-folder`,Be=!!(l.createFile&&l.createFolder&&l.renamePath),Ve=(0,c.useCallback)(async(e,t)=>{if(!h)return;let n=ne(e);w(e=>ie(e,[n,t])),await J(`move`,{extraPaths:[n,t]})},[J,h]),He=(0,c.useCallback)(async(e,t,n=[])=>{h&&(w(t=>ie(t,[e,...n])),await J(`mutation`,{extraPaths:[e]}),t&&R.selectOnlyPath(t))},[R,J,h]),Ue=(0,c.useCallback)(async e=>{if(l.movePath){fe(!0);try{let t=(await l.movePath(e.source.path,e.target.path)).moved?.to??e.source.path;R.selectOnlyPath(t),j(`Moved ${e.source.name}`),le(null),await Ve(e.source.path,e.target.path)}catch(e){E(e.message)}finally{fe(!1)}}},[R,Ve,l]),We=(0,c.useCallback)((e,t)=>{if(!l.movePath||e.path===t.path||e.kind===`directory`&&k(e.path,t.path))return;let n={source:e,target:t};if(pe){Ue(n);return}ge(!1),le(n)},[Ue,pe,l.movePath]),X=Fe({rootPath:h,selectedEntry:z,selectedFilePath:Ce,source:l,folderSelection:R,refreshAfterMutation:He,renamedPreviewPath:Re,onPreviewFile:L,closeContextMenu:V.closeContextMenu,setExpanded:S,setActionStatus:j,setError:E}),Z=(0,c.useCallback)((e,t)=>{R.selectEntry(e,t),V.closeContextMenu()},[V,R]),Ge=(0,c.useCallback)(e=>{e.kind===`file`&&Z(e)},[Z]),Q=(0,c.useCallback)(e=>{R.selectEntry(e,{preview:!1}),V.closeContextMenu(),e.kind===`directory`&&ke(e.path)},[V,R,ke]),Ke=(0,c.useCallback)(async(e,t)=>{let n=await a(t===`relative`?re(h,e.path):e.path);n.ok?(R.selectOnlyPath(e.path),j(t===`relative`?`Copied relative path`:`Copied path`),E(null)):E(n.error??`Failed to copy path`)},[R,h]),qe=(0,c.useCallback)(async e=>{if(l.revealPath)try{await l.revealPath(e.path),R.selectOnlyPath(e.path),j(e.kind===`directory`?`Opened folder in Finder`:`Revealed file in Finder`),E(null)}catch(e){E(e.message)}},[R,l]),$=(0,c.useCallback)(async e=>{if(B.length===0)return;let t=await a(B.map(t=>e===`relative`?re(h,t.path):t.path).join(`
|
|
3
|
+
`));t.ok?(j(e===`relative`?`Copied relative paths`:`Copied paths`),E(null)):E(t.error??`Failed to copy paths`)},[h,B]),Je=(0,c.useCallback)(async()=>{z&&await qe(z)},[qe,z]),Ye=(0,c.useCallback)((e,t)=>{if(e.key===`ArrowUp`||e.key===`ArrowDown`){e.preventDefault(),e.stopPropagation(),R.moveKeyboardSelection(e.key===`ArrowDown`?`down`:`up`,e.shiftKey);return}if(e.key===`ArrowRight`){e.preventDefault(),t.kind===`directory`&&!b.has(t.path)&&Q(t);return}if(e.key===`ArrowLeft`){e.preventDefault(),t.kind===`directory`&&b.has(t.path)&&Q(t);return}let n=ue(e,{chordActive:P});if(n){e.preventDefault(),e.stopPropagation(),n===`start-chord`&&F(),n===`cancel-chord`&&I();let r=R.selectedPaths.has(t.path);n===`copy-path`&&(I(),r?$(`absolute`):Ke(t,`absolute`)),n===`copy-relative-path`&&(I(),r?$(`relative`):Ke(t,`relative`)),n===`reveal-path`&&(I(),r?Je():qe(t));return}if(e.key===`Enter`){e.preventDefault(),t.kind===`directory`?Q(t):Z(t);return}e.key===` `&&(e.preventDefault(),Z(t))},[I,Ke,$,b,P,R,qe,Je,Z,F,Q]);return(0,c.useEffect)(()=>{let e=R.selection.focusedPath;if(!e)return;let t=ye.current?.querySelectorAll(`.folder-entry-btn[data-folder-path]`);Array.from(t??[]).find(t=>t.dataset.folderPath===e)?.focus()},[R.selection.focusedPath]),(0,p.jsxs)(`div`,{className:`folder-panel`,children:[(0,p.jsx)(x,{canPickRoot:l.canPickRoot,label:l.label,rootPath:h,onPickFolder:()=>void Me(),onRefresh:()=>{h!==null&&J(`manual`)},gitSummary:l.kind===`electron-folder`?G:void 0,worktreeSummary:l.kind===`electron-folder`?K:void 0,onOpenWorktree:e=>void Y.openWorktreeRoot(e),onCopyWorktreePath:e=>void Y.copyWorktreePath(e),onRevealWorktreePath:e=>void Y.revealWorktreePath(e),onOpenWorktreeOps:()=>Y.setOpen(!0)}),h!==null&&(0,p.jsx)(m,{hasSelection:!!z,canReveal:!!l.revealPath,onCopyPath:()=>void $(`absolute`),onCopyRelativePath:()=>void $(`relative`),onReveal:()=>void Je(),canMutate:Be,onCreateFile:()=>X.requestCreateEntry(`file`),onCreateFolder:()=>X.requestCreateEntry(`directory`),onRename:()=>X.requestRenameSelectedEntry()}),T&&(0,p.jsx)(`div`,{className:`folder-error`,children:T}),q.watchStatus&&!T&&(0,p.jsx)(`div`,{className:`folder-status`,children:q.watchStatus}),q.refreshStatus&&!T&&!q.watchStatus&&(0,p.jsx)(`div`,{className:`folder-status`,children:q.refreshStatus}),_e&&!T&&!q.refreshStatus&&!q.watchStatus&&(0,p.jsx)(`div`,{className:`folder-status`,children:_e}),P&&(0,p.jsx)(`div`,{className:`folder-shortcut-hint`,children:`Folder shortcut: press P to copy path or R to reveal`}),Y.open&&h!==null&&(0,p.jsx)(O,{folderPanelRoot:h,repoRoot:K.repoRoot,worktrees:K.worktrees,busy:Y.busy,history:Y.history,onRun:(e,t)=>void Y.runWorktreeOperation(e,t),onClose:()=>Y.setOpen(!1)}),(0,p.jsx)(me,{treeRef:ye,rootPath:h,error:T,entries:v,expanded:b,childrenCache:C,folderSelection:R,decorationsByPath:G.decorationsByPath,dropTargetPath:oe,dragSelection:te,inlineMutation:X.inlineMutation,isMutating:X.isMutating,canUseNativeActions:ze,sourceKind:l.kind,unavailableRoot:ee,setDragSelection:ae,setDropTargetPath:se,requestMove:We,handleEntryKeyDown:Ye,selectEntry:Z,toggleEntryExpansion:Q,openFileEntry:Ge,openContextMenu:V.openContextMenu,submitInlineMutation:X.submitInlineMutation,cancelInlineMutation:X.cancelInlineMutation,onPickFolder:()=>void Me(),onClearUnavailableRoot:Ne}),(0,p.jsx)(_,{pendingMove:ce,contextMenu:V.contextMenu,isMoving:de,skipMoveConfirmChecked:he,canReveal:!!l.revealPath,canRefresh:!!h,canMutate:Be,onSkipMoveConfirmCheckedChange:ge,onCancelMove:()=>le(null),onConfirmMove:()=>{ce&&(he&&A(!0),Ue(ce))},onCopyContextPath:()=>{V.closeContextMenu(),$(`absolute`)},onCopyContextRelativePath:()=>{V.closeContextMenu(),$(`relative`)},onRevealContextPath:()=>{V.closeContextMenu(),Je()},onRefreshContext:()=>{V.closeContextMenu(),J(`manual`)},onCreateContextFile:()=>X.requestCreateEntry(`file`),onCreateContextFolder:()=>X.requestCreateEntry(`directory`),onRenameContextPath:()=>X.requestRenameSelectedEntry()})]})}export{ze as FolderPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-B3ZGMGGg.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-BeAyKBJW.js";import{a as c,i as l,s as u}from"./fields-MeoSVgIK.js";import{n as d}from"./agent-meta-FyI15KAa.js";import{t as f}from"./path-utils-DX1HplvB.js";var p=e(t(),1),m=n(),h=[{value:`every`,label:`every (interval)`},{value:`cron`,label:`cron expression`}];function g({job:e,index:t,bodyError:n,timeZoneError:r,onChange:i,onRemove:a}){let o=(0,p.useId)(),s=e.schedule.kind,d=e.schedule.timeZone??``;return(0,m.jsxs)(`fieldset`,{className:`settings-heartbeat-job`,"aria-label":`Heartbeat job ${t+1}${e.name?` (${e.name})`:``}`,children:[(0,m.jsx)(`legend`,{className:`settings-heartbeat-job-legend`,children:e.name||`Job ${t+1}`}),(0,m.jsx)(c,{id:`${o}-enabled`,label:`Enabled`,value:e.enabled,onChange:e=>i({enabled:e})}),(0,m.jsx)(u,{id:`${o}-name`,label:`Name`,value:e.name,placeholder:`Morning summary`,onChange:e=>i({name:e})}),(0,m.jsx)(l,{id:`${o}-kind`,label:`Schedule kind`,value:s,options:h,onChange:e=>{e===`every`&&s!==`every`?i({schedule:{kind:`every`,minutes:30,...d?{timeZone:d}:{}}}):e===`cron`&&s!==`cron`&&i({schedule:{kind:`cron`,cron:`0 9 * * *`,...d?{timeZone:d}:{}}})}}),s===`every`?(0,m.jsx)(u,{id:`${o}-minutes`,label:`Every (minutes)`,value:String(e.schedule.minutes??``),placeholder:`30`,error:n??null,onChange:e=>{let t=e.trim(),n=Number(t);i({schedule:{kind:`every`,minutes:Number.isFinite(n)?n:NaN,...d?{timeZone:d}:{}}})}}):(0,m.jsx)(u,{id:`${o}-cron`,label:`Cron expression`,value:e.schedule.cron??``,placeholder:`0 9 * * *`,error:n??null,onChange:e=>i({schedule:{kind:`cron`,cron:e,...d?{timeZone:d}:{}}})}),(0,m.jsx)(u,{id:`${o}-tz`,label:`Time zone (optional)`,value:d,placeholder:`Asia/Seoul`,error:r??null,onChange:t=>{let n=t.trim();i(s===`every`?{schedule:{kind:`every`,minutes:e.schedule.minutes,...n?{timeZone:n}:{}}}:{schedule:{kind:`cron`,cron:e.schedule.cron,...n?{timeZone:n}:{}}})}}),(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`${o}-prompt`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Prompt`}),(0,m.jsx)(`textarea`,{id:`${o}-prompt`,rows:3,value:e.prompt,placeholder:`What should this heartbeat do?`,onChange:e=>i({prompt:e.target.value})})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-job-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:a,children:`Remove job`})})]})}var _=/^\d+[smh]$/,v=/^([01]\d|2[0-3]):[0-5]\d$/,y=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],b=[`heartbeat.enabled`,`heartbeat.every`,`heartbeat.activeHours.start`,`heartbeat.activeHours.end`,`heartbeat.target`],x=[`heartbeat.jobs`,`heartbeat.md`];function S(e){return _.test(e.trim())}function C(e){return v.test(e.trim())}function w(e=Date.now()){return{id:`hb_${e}`,name:``,enabled:!0,schedule:{kind:`every`,minutes:30},prompt:``}}function T(e){return e.startsWith(`heartbeat.`)&&e!==`heartbeat.jobs`&&e!==`heartbeat.md`}function E(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.id==`string`&&n.id.trim()?n.id.trim():`hb_unknown_${t}`,i=typeof n.name==`string`?n.name:``,a=n.enabled!==!1,o=typeof n.prompt==`string`?n.prompt:``,s=n.schedule,c;if(s&&typeof s==`object`){let e=s;c=e.kind===`cron`&&typeof e.cron==`string`?{kind:`cron`,cron:e.cron,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}:{kind:`every`,minutes:typeof e.minutes==`number`?e.minutes:30,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}}else c={kind:`every`,minutes:30};return{id:r,name:i,enabled:a,schedule:c,prompt:o}}function D(e){if(!e||typeof e!=`object`)return[];let t=e.jobs;return Array.isArray(t)?t.map((e,t)=>E(e,t)).filter(e=>e!==null):[]}function O(e){if(e.kind===`every`){let t=e.minutes;return!Number.isFinite(t)||t<=0||!Number.isInteger(t)?`Minutes must be a positive integer`:null}let t=e.cron?.trim()??``;return t?t.split(/\s+/).length<5?`Cron must have at least 5 fields`:null:`Cron expression required`}function k(e){return e.some(e=>O(e.schedule)!==null)}function A({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)([]),[c,l]=(0,p.useState)([]),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=D(r.data);a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.jobs`,{value:i,original:c,valid:!k(i)})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.jobs`)},[n]);let _=(0,p.useCallback)(async()=>{if(k(i)){h(`Fix invalid schedules before saving.`);return}d(!0),h(null);try{let e=D(await t.put(`/api/heartbeat`,{jobs:i}));a(e),l(e),n.remove(`heartbeat.jobs`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading jobs…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let v=n.pending.has(`heartbeat.jobs`),y=k(i);function b(e,t){a(n=>n.map((n,r)=>r===e?{...n,...t}:n))}function x(){a(e=>[...e,w()])}function S(e){a(t=>t.filter((t,n)=>n!==e))}return(0,m.jsxs)(m.Fragment,{children:[i.length===0?(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`No jobs configured. Add one below.`}):(0,m.jsx)(`div`,{className:`settings-heartbeat-jobs-list`,children:i.map((e,t)=>(0,m.jsx)(g,{job:e,index:t,bodyError:O(e.schedule),onChange:e=>b(t,e),onRemove:()=>S(t)},e.id))}),(0,m.jsxs)(`div`,{className:`settings-heartbeat-jobs-footer`,children:[(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:x,children:`+ Add job`}),(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void _(),disabled:u||!v||y,children:u?`Saving…`:`Apply jobs`})]}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function j({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)(``),[c,l]=(0,p.useState)(``),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=r.data.content??``;a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.md`,{value:i,original:c,valid:!0})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.md`)},[n]);let g=(0,p.useCallback)(async()=>{d(!0),h(null);try{await t.put(`/api/heartbeat-md`,{content:i}),l(i),n.remove(`heartbeat.md`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading template…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let _=n.pending.has(`heartbeat.md`);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`hb-md`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Template`}),(0,m.jsx)(`textarea`,{id:`hb-md`,rows:10,spellCheck:!1,value:i,onChange:e=>a(e.target.value),style:{fontFamily:`ui-monospace, monospace`}})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-md-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void g(),disabled:u||!_,children:u?`Saving…`:`Save template`})}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function M({port:e,client:t,dirty:n,registerSave:h}){let g=r(t,`/api/settings`),_=r(t,`/api/heartbeat`),v=r(t,`/api/heartbeat-md`),[x,w]=(0,p.useState)(!1),[E,D]=(0,p.useState)(`30m`),[O,k]=(0,p.useState)(`08:00`),[M,N]=(0,p.useState)(`22:00`),[P,F]=(0,p.useState)(`all`);(0,p.useEffect)(()=>{if(g.state.kind!==`ready`)return;let e=g.state.data.heartbeat||{};w(!!e.enabled),D(typeof e.every==`string`?e.every:`30m`),k(e.activeHours?.start??`08:00`),N(e.activeHours?.end??`22:00`),F(typeof e.target==`string`?e.target:`all`)},[g.state]),(0,p.useEffect)(()=>()=>{for(let e of b)n.remove(e)},[n]);let I=(0,p.useMemo)(()=>g.state.kind===`ready`&&g.state.data.heartbeat||{},[g.state]),L=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,p.useRef)(0),z=(0,p.useCallback)(async()=>{let e=n.saveBundle(),r={};for(let[t,n]of Object.entries(e))T(t)&&(r[t]=n);if(Object.keys(r).length===0)return;let i=++R.current,a=f(r),o=await t.put(`/api/settings`,a);if(i!==R.current)return;let s=o&&typeof o==`object`&&`data`in o?o.data:o;for(let e of b)n.remove(e);g.setData(s);let c=s.heartbeat||{};w(!!c.enabled),D(typeof c.every==`string`?c.every:`30m`),k(c.activeHours?.start??`08:00`),N(c.activeHours?.end??`22:00`),F(typeof c.target==`string`?c.target:`all`),await g.refresh()},[t,n,g]);if((0,p.useEffect)(()=>{if(h)return h(z),()=>h(null)},[h,z]),g.state.kind===`loading`)return(0,m.jsx)(a,{});if(g.state.kind===`offline`)return(0,m.jsx)(o,{port:e});if(g.state.kind===`error`)return(0,m.jsx)(s,{message:g.state.message});let B=S(E)?null:"Use the form `<n>s|m|h`, e.g. `30m`",V=C(O)?null:`Use HH:MM (24h)`,H=C(M)?null:`Use HH:MM (24h)`,U=g.state.data.perCli||{},W=Object.keys(U),G=[{value:`all`,label:`all (broadcast)`},...(W.length>0?W:[...y]).map(e=>({value:e,label:d(e).label||e}))];return G.some(e=>e.value===P)||G.push({value:P,label:`${d(P).label||P} (legacy)`}),(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),z()},children:[(0,m.jsxs)(i,{title:`Heartbeat`,hint:`Background prompts the agent runs on a schedule.`,children:[(0,m.jsx)(c,{id:`hb-enabled`,label:`Heartbeat enabled`,value:x,onChange:e=>{w(e),L(`heartbeat.enabled`,{value:e,original:!!I.enabled,valid:!0})}}),(0,m.jsx)(u,{id:`hb-every`,label:`Default interval`,value:E,placeholder:`30m`,error:B,onChange:e=>{D(e),L(`heartbeat.every`,{value:e,original:I.every??`30m`,valid:S(e)})}}),(0,m.jsx)(u,{id:`hb-start`,label:`Active hours start`,value:O,placeholder:`08:00`,error:V,onChange:e=>{k(e),L(`heartbeat.activeHours.start`,{value:e,original:I.activeHours?.start??`08:00`,valid:C(e)})}}),(0,m.jsx)(u,{id:`hb-end`,label:`Active hours end`,value:M,placeholder:`22:00`,error:H,onChange:e=>{N(e),L(`heartbeat.activeHours.end`,{value:e,original:I.activeHours?.end??`22:00`,valid:C(e)})}}),(0,m.jsx)(l,{id:`hb-target`,label:`Target`,value:P,options:G,onChange:e=>{F(e),L(`heartbeat.target`,{value:e,original:I.target??`all`,valid:!0})}})]}),(0,m.jsx)(i,{title:`Jobs`,hint:`Each job replaces the entire heartbeat.json on save. Concurrent edits from multiple browsers will overwrite — last write wins.`,children:(0,m.jsx)(A,{port:e,client:t,dirty:n,snapshot:_.state})}),(0,m.jsx)(i,{title:`Default heartbeat prompt template`,hint:`Markdown shown to the agent when a heartbeat fires without a job-specific prompt.`,children:(0,m.jsx)(j,{port:e,client:t,dirty:n,snapshot:v.state})})]})}export{x as PAGE_LOCAL_KEYS,b as SECTION_A_KEYS,y as TARGET_FALLBACK,M as default,T as isHeartbeatSettingsKey,O as jobScheduleBodyError,k as jobsHaveErrors,w as makeDefaultJob,D as normalizeJobsResponse,C as validateHHMM,S as validateInterval};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-LF7vVVfG.js";import{a as c,i as l,s as u}from"./fields-zkeByFQW.js";import{n as d}from"./agent-meta-tiPlp7OI.js";import{t as f}from"./path-utils-LsJeDCKF.js";var p=e(t(),1),m=n(),h=[{value:`every`,label:`every (interval)`},{value:`cron`,label:`cron expression`}];function g({job:e,index:t,bodyError:n,timeZoneError:r,onChange:i,onRemove:a}){let o=(0,p.useId)(),s=e.schedule.kind,d=e.schedule.timeZone??``;return(0,m.jsxs)(`fieldset`,{className:`settings-heartbeat-job`,"aria-label":`Heartbeat job ${t+1}${e.name?` (${e.name})`:``}`,children:[(0,m.jsx)(`legend`,{className:`settings-heartbeat-job-legend`,children:e.name||`Job ${t+1}`}),(0,m.jsx)(c,{id:`${o}-enabled`,label:`Enabled`,value:e.enabled,onChange:e=>i({enabled:e})}),(0,m.jsx)(u,{id:`${o}-name`,label:`Name`,value:e.name,placeholder:`Morning summary`,onChange:e=>i({name:e})}),(0,m.jsx)(l,{id:`${o}-kind`,label:`Schedule kind`,value:s,options:h,onChange:e=>{e===`every`&&s!==`every`?i({schedule:{kind:`every`,minutes:30,...d?{timeZone:d}:{}}}):e===`cron`&&s!==`cron`&&i({schedule:{kind:`cron`,cron:`0 9 * * *`,...d?{timeZone:d}:{}}})}}),s===`every`?(0,m.jsx)(u,{id:`${o}-minutes`,label:`Every (minutes)`,value:String(e.schedule.minutes??``),placeholder:`30`,error:n??null,onChange:e=>{let t=e.trim(),n=Number(t);i({schedule:{kind:`every`,minutes:Number.isFinite(n)?n:NaN,...d?{timeZone:d}:{}}})}}):(0,m.jsx)(u,{id:`${o}-cron`,label:`Cron expression`,value:e.schedule.cron??``,placeholder:`0 9 * * *`,error:n??null,onChange:e=>i({schedule:{kind:`cron`,cron:e,...d?{timeZone:d}:{}}})}),(0,m.jsx)(u,{id:`${o}-tz`,label:`Time zone (optional)`,value:d,placeholder:`Asia/Seoul`,error:r??null,onChange:t=>{let n=t.trim();i(s===`every`?{schedule:{kind:`every`,minutes:e.schedule.minutes,...n?{timeZone:n}:{}}}:{schedule:{kind:`cron`,cron:e.schedule.cron,...n?{timeZone:n}:{}}})}}),(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`${o}-prompt`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Prompt`}),(0,m.jsx)(`textarea`,{id:`${o}-prompt`,rows:3,value:e.prompt,placeholder:`What should this heartbeat do?`,onChange:e=>i({prompt:e.target.value})})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-job-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:a,children:`Remove job`})})]})}var _=/^\d+[smh]$/,v=/^([01]\d|2[0-3]):[0-5]\d$/,y=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],b=[`heartbeat.enabled`,`heartbeat.every`,`heartbeat.activeHours.start`,`heartbeat.activeHours.end`,`heartbeat.target`],x=[`heartbeat.jobs`,`heartbeat.md`];function S(e){return _.test(e.trim())}function C(e){return v.test(e.trim())}function w(e=Date.now()){return{id:`hb_${e}`,name:``,enabled:!0,schedule:{kind:`every`,minutes:30},prompt:``}}function T(e){return e.startsWith(`heartbeat.`)&&e!==`heartbeat.jobs`&&e!==`heartbeat.md`}function E(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.id==`string`&&n.id.trim()?n.id.trim():`hb_unknown_${t}`,i=typeof n.name==`string`?n.name:``,a=n.enabled!==!1,o=typeof n.prompt==`string`?n.prompt:``,s=n.schedule,c;if(s&&typeof s==`object`){let e=s;c=e.kind===`cron`&&typeof e.cron==`string`?{kind:`cron`,cron:e.cron,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}:{kind:`every`,minutes:typeof e.minutes==`number`?e.minutes:30,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}}else c={kind:`every`,minutes:30};return{id:r,name:i,enabled:a,schedule:c,prompt:o}}function D(e){if(!e||typeof e!=`object`)return[];let t=e.jobs;return Array.isArray(t)?t.map((e,t)=>E(e,t)).filter(e=>e!==null):[]}function O(e){if(e.kind===`every`){let t=e.minutes;return!Number.isFinite(t)||t<=0||!Number.isInteger(t)?`Minutes must be a positive integer`:null}let t=e.cron?.trim()??``;return t?t.split(/\s+/).length<5?`Cron must have at least 5 fields`:null:`Cron expression required`}function k(e){return e.some(e=>O(e.schedule)!==null)}function A({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)([]),[c,l]=(0,p.useState)([]),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=D(r.data);a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.jobs`,{value:i,original:c,valid:!k(i)})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.jobs`)},[n]);let _=(0,p.useCallback)(async()=>{if(k(i)){h(`Fix invalid schedules before saving.`);return}d(!0),h(null);try{let e=D(await t.put(`/api/heartbeat`,{jobs:i}));a(e),l(e),n.remove(`heartbeat.jobs`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading jobs…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let v=n.pending.has(`heartbeat.jobs`),y=k(i);function b(e,t){a(n=>n.map((n,r)=>r===e?{...n,...t}:n))}function x(){a(e=>[...e,w()])}function S(e){a(t=>t.filter((t,n)=>n!==e))}return(0,m.jsxs)(m.Fragment,{children:[i.length===0?(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`No jobs configured. Add one below.`}):(0,m.jsx)(`div`,{className:`settings-heartbeat-jobs-list`,children:i.map((e,t)=>(0,m.jsx)(g,{job:e,index:t,bodyError:O(e.schedule),onChange:e=>b(t,e),onRemove:()=>S(t)},e.id))}),(0,m.jsxs)(`div`,{className:`settings-heartbeat-jobs-footer`,children:[(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:x,children:`+ Add job`}),(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void _(),disabled:u||!v||y,children:u?`Saving…`:`Apply jobs`})]}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function j({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)(``),[c,l]=(0,p.useState)(``),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=r.data.content??``;a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.md`,{value:i,original:c,valid:!0})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.md`)},[n]);let g=(0,p.useCallback)(async()=>{d(!0),h(null);try{await t.put(`/api/heartbeat-md`,{content:i}),l(i),n.remove(`heartbeat.md`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading template…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let _=n.pending.has(`heartbeat.md`);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`hb-md`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Template`}),(0,m.jsx)(`textarea`,{id:`hb-md`,rows:10,spellCheck:!1,value:i,onChange:e=>a(e.target.value),style:{fontFamily:`ui-monospace, monospace`}})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-md-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void g(),disabled:u||!_,children:u?`Saving…`:`Save template`})}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function M({port:e,client:t,dirty:n,registerSave:h}){let g=r(t,`/api/settings`),_=r(t,`/api/heartbeat`),v=r(t,`/api/heartbeat-md`),[x,w]=(0,p.useState)(!1),[E,D]=(0,p.useState)(`30m`),[O,k]=(0,p.useState)(`08:00`),[M,N]=(0,p.useState)(`22:00`),[P,F]=(0,p.useState)(`all`);(0,p.useEffect)(()=>{if(g.state.kind!==`ready`)return;let e=g.state.data.heartbeat||{};w(!!e.enabled),D(typeof e.every==`string`?e.every:`30m`),k(e.activeHours?.start??`08:00`),N(e.activeHours?.end??`22:00`),F(typeof e.target==`string`?e.target:`all`)},[g.state]),(0,p.useEffect)(()=>()=>{for(let e of b)n.remove(e)},[n]);let I=(0,p.useMemo)(()=>g.state.kind===`ready`&&g.state.data.heartbeat||{},[g.state]),L=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,p.useRef)(0),z=(0,p.useCallback)(async()=>{let e=n.saveBundle(),r={};for(let[t,n]of Object.entries(e))T(t)&&(r[t]=n);if(Object.keys(r).length===0)return;let i=++R.current,a=f(r),o=await t.put(`/api/settings`,a);if(i!==R.current)return;let s=o&&typeof o==`object`&&`data`in o?o.data:o;for(let e of b)n.remove(e);g.setData(s);let c=s.heartbeat||{};w(!!c.enabled),D(typeof c.every==`string`?c.every:`30m`),k(c.activeHours?.start??`08:00`),N(c.activeHours?.end??`22:00`),F(typeof c.target==`string`?c.target:`all`),await g.refresh()},[t,n,g]);if((0,p.useEffect)(()=>{if(h)return h(z),()=>h(null)},[h,z]),g.state.kind===`loading`)return(0,m.jsx)(a,{});if(g.state.kind===`offline`)return(0,m.jsx)(o,{port:e});if(g.state.kind===`error`)return(0,m.jsx)(s,{message:g.state.message});let B=S(E)?null:"Use the form `<n>s|m|h`, e.g. `30m`",V=C(O)?null:`Use HH:MM (24h)`,H=C(M)?null:`Use HH:MM (24h)`,U=g.state.data.perCli||{},W=Object.keys(U),G=[{value:`all`,label:`all (broadcast)`},...(W.length>0?W:[...y]).map(e=>({value:e,label:d(e).label||e}))];return G.some(e=>e.value===P)||G.push({value:P,label:`${d(P).label||P} (legacy)`}),(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),z()},children:[(0,m.jsxs)(i,{title:`Heartbeat`,hint:`Background prompts the agent runs on a schedule.`,children:[(0,m.jsx)(c,{id:`hb-enabled`,label:`Heartbeat enabled`,value:x,onChange:e=>{w(e),L(`heartbeat.enabled`,{value:e,original:!!I.enabled,valid:!0})}}),(0,m.jsx)(u,{id:`hb-every`,label:`Default interval`,value:E,placeholder:`30m`,error:B,onChange:e=>{D(e),L(`heartbeat.every`,{value:e,original:I.every??`30m`,valid:S(e)})}}),(0,m.jsx)(u,{id:`hb-start`,label:`Active hours start`,value:O,placeholder:`08:00`,error:V,onChange:e=>{k(e),L(`heartbeat.activeHours.start`,{value:e,original:I.activeHours?.start??`08:00`,valid:C(e)})}}),(0,m.jsx)(u,{id:`hb-end`,label:`Active hours end`,value:M,placeholder:`22:00`,error:H,onChange:e=>{N(e),L(`heartbeat.activeHours.end`,{value:e,original:I.activeHours?.end??`22:00`,valid:C(e)})}}),(0,m.jsx)(l,{id:`hb-target`,label:`Target`,value:P,options:G,onChange:e=>{F(e),L(`heartbeat.target`,{value:e,original:I.target??`all`,valid:!0})}})]}),(0,m.jsx)(i,{title:`Jobs`,hint:`Each job replaces the entire heartbeat.json on save. Concurrent edits from multiple browsers will overwrite — last write wins.`,children:(0,m.jsx)(A,{port:e,client:t,dirty:n,snapshot:_.state})}),(0,m.jsx)(i,{title:`Default heartbeat prompt template`,hint:`Markdown shown to the agent when a heartbeat fires without a job-specific prompt.`,children:(0,m.jsx)(j,{port:e,client:t,dirty:n,snapshot:v.state})})]})}export{x as PAGE_LOCAL_KEYS,b as SECTION_A_KEYS,y as TARGET_FALLBACK,M as default,T as isHeartbeatSettingsKey,O as jobScheduleBodyError,k as jobsHaveErrors,w as makeDefaultJob,D as normalizeJobsResponse,C as validateHHMM,S as validateInterval};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-
|
|
1
|
+
import{t as e}from"./jsx-runtime-gFMgZ0TQ.js";var t=e();function n({children:e,tone:n=`warn`,role:r=`note`}){let i=`settings-inline-warn settings-inline-warn-${n}`;return r===`alert`?(0,t.jsx)(`p`,{className:i,role:`alert`,children:e}):(0,t.jsx)(`p`,{className:i,role:`note`,children:e})}export{n as t};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-Bjnw0wQ6.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e,r as t,t as n}from"./rolldown-runtime-XQCOJYun.js";import{A as r}from"./vendor-render-DCb9B75Q.js";import{t as i}from"./preload-helper-DFYRRz9w.js";import{i as a,n as o,o as s,r as c,t as l}from"./mermaid-preprocess-CqOBWYEb.js";import{n as u,t as d}from"./jsx-runtime-B3ZGMGGg.js";import{t as f}from"./copy-text-BKruhU_y.js";import{A as p,C as m,D as ee,E as h,S as te,T as ne,a as g,b as _,c as v,d as y,f as re,i as ie,k as b,l as ae,n as oe,o as se,p as ce,r as le,s as ue,t as de,u as fe,w as pe,x as me,y as he}from"./wiki-link-resolver-C197VhRP.js";function ge(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function _e(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ye=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,be={};function xe(e,t){return((t||be).jsx?ye:ve).test(e)}var Se=/[ \t\n\f\r]/g;function Ce(e){return typeof e==`object`?e.type===`text`?we(e.value):!1:we(e)}function we(e){return e.replace(Se,``)===``}var x=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};x.prototype.normal={},x.prototype.property={},x.prototype.space=void 0;function Te(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new x(n,r,t)}function S(e){return e.toLowerCase()}var C=class{constructor(e,t){this.attribute=t,this.property=e}};C.prototype.attribute=``,C.prototype.booleanish=!1,C.prototype.boolean=!1,C.prototype.commaOrSpaceSeparated=!1,C.prototype.commaSeparated=!1,C.prototype.defined=!1,C.prototype.mustUseProperty=!1,C.prototype.number=!1,C.prototype.overloadedBoolean=!1,C.prototype.property=``,C.prototype.spaceSeparated=!1,C.prototype.space=void 0;var w=e({boolean:()=>T,booleanish:()=>E,commaOrSpaceSeparated:()=>A,commaSeparated:()=>k,number:()=>D,overloadedBoolean:()=>De,spaceSeparated:()=>O}),Ee=0,T=j(),E=j(),De=j(),D=j(),O=j(),k=j(),A=j();function j(){return 2**++Ee}var Oe=Object.keys(w),M=class extends C{constructor(e,t,n,r){let i=-1;if(super(e,t),ke(this,`space`,r),typeof n==`number`)for(;++i<Oe.length;){let e=Oe[i];ke(this,Oe[i],(n&w[e])===w[e])}}};M.prototype.defined=!0;function ke(e,t,n){n&&(e[t]=n)}function N(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new M(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[S(r)]=r,n[S(a.attribute)]=r}return new x(t,n,e.space)}var Ae=N({properties:{ariaActiveDescendant:null,ariaAtomic:E,ariaAutoComplete:null,ariaBusy:E,ariaChecked:E,ariaColCount:D,ariaColIndex:D,ariaColSpan:D,ariaControls:O,ariaCurrent:null,ariaDescribedBy:O,ariaDetails:null,ariaDisabled:E,ariaDropEffect:O,ariaErrorMessage:null,ariaExpanded:E,ariaFlowTo:O,ariaGrabbed:E,ariaHasPopup:null,ariaHidden:E,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:O,ariaLevel:D,ariaLive:null,ariaModal:E,ariaMultiLine:E,ariaMultiSelectable:E,ariaOrientation:null,ariaOwns:O,ariaPlaceholder:null,ariaPosInSet:D,ariaPressed:E,ariaReadOnly:E,ariaRelevant:null,ariaRequired:E,ariaRoleDescription:O,ariaRowCount:D,ariaRowIndex:D,ariaRowSpan:D,ariaSelected:E,ariaSetSize:D,ariaSort:null,ariaValueMax:D,ariaValueMin:D,ariaValueNow:D,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function je(e,t){return t in e?e[t]:t}function Me(e,t){return je(e,t.toLowerCase())}var Ne=N({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:k,acceptCharset:O,accessKey:O,action:null,allow:null,allowFullScreen:T,allowPaymentRequest:T,allowUserMedia:T,alt:null,as:null,async:T,autoCapitalize:null,autoComplete:O,autoFocus:T,autoPlay:T,blocking:O,capture:null,charSet:null,checked:T,cite:null,className:O,cols:D,colSpan:null,content:null,contentEditable:E,controls:T,controlsList:O,coords:D|k,crossOrigin:null,data:null,dateTime:null,decoding:null,default:T,defer:T,dir:null,dirName:null,disabled:T,download:De,draggable:E,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:T,formTarget:null,headers:O,height:D,hidden:De,high:D,href:null,hrefLang:null,htmlFor:O,httpEquiv:O,id:null,imageSizes:null,imageSrcSet:null,inert:T,inputMode:null,integrity:null,is:null,isMap:T,itemId:null,itemProp:O,itemRef:O,itemScope:T,itemType:O,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:T,low:D,manifest:null,max:null,maxLength:D,media:null,method:null,min:null,minLength:D,multiple:T,muted:T,name:null,nonce:null,noModule:T,noValidate:T,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:T,optimum:D,pattern:null,ping:O,placeholder:null,playsInline:T,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:T,referrerPolicy:null,rel:O,required:T,reversed:T,rows:D,rowSpan:D,sandbox:O,scope:null,scoped:T,seamless:T,selected:T,shadowRootClonable:T,shadowRootDelegatesFocus:T,shadowRootMode:null,shape:null,size:D,sizes:null,slot:null,span:D,spellCheck:E,src:null,srcDoc:null,srcLang:null,srcSet:null,start:D,step:null,style:null,tabIndex:D,target:null,title:null,translate:null,type:null,typeMustMatch:T,useMap:null,value:E,width:D,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:O,axis:null,background:null,bgColor:null,border:D,borderColor:null,bottomMargin:D,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:T,declare:T,event:null,face:null,frame:null,frameBorder:null,hSpace:D,leftMargin:D,link:null,longDesc:null,lowSrc:null,marginHeight:D,marginWidth:D,noResize:T,noHref:T,noShade:T,noWrap:T,object:null,profile:null,prompt:null,rev:null,rightMargin:D,rules:null,scheme:null,scrolling:E,standby:null,summary:null,text:null,topMargin:D,valueType:null,version:null,vAlign:null,vLink:null,vSpace:D,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:T,disableRemotePlayback:T,prefix:null,property:null,results:D,security:null,unselectable:null},space:`html`,transform:Me}),Pe=N({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:A,accentHeight:D,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:D,amplitude:D,arabicForm:null,ascent:D,attributeName:null,attributeType:null,azimuth:D,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:D,by:null,calcMode:null,capHeight:D,className:O,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:D,diffuseConstant:D,direction:null,display:null,dur:null,divisor:D,dominantBaseline:null,download:T,dx:null,dy:null,edgeMode:null,editable:null,elevation:D,enableBackground:null,end:null,event:null,exponent:D,externalResourcesRequired:null,fill:null,fillOpacity:D,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:k,g2:k,glyphName:k,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:D,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:D,horizOriginX:D,horizOriginY:D,id:null,ideographic:D,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:D,k:D,k1:D,k2:D,k3:D,k4:D,kernelMatrix:A,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:D,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:D,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:D,overlineThickness:D,paintOrder:null,panose1:null,path:null,pathLength:D,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:O,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:D,pointsAtY:D,pointsAtZ:D,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:A,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:A,rev:A,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:A,requiredFeatures:A,requiredFonts:A,requiredFormats:A,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:D,specularExponent:D,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:D,strikethroughThickness:D,string:null,stroke:null,strokeDashArray:A,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:D,strokeOpacity:D,strokeWidth:null,style:null,surfaceScale:D,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:A,tabIndex:D,tableValues:null,target:null,targetX:D,targetY:D,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:A,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:D,underlineThickness:D,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:D,values:null,vAlphabetic:D,vMathematical:D,vectorEffect:null,vHanging:D,vIdeographic:D,version:null,vertAdvY:D,vertOriginX:D,vertOriginY:D,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:D,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:je}),Fe=N({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),Ie=N({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:Me}),Le=N({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),Re={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},ze=/[A-Z]/g,Be=/-[a-z]/g,Ve=/^data[-\w.:]+$/i;function He(e,t){let n=S(t),r=t,i=C;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&Ve.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Be,We);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Be.test(e)){let n=e.replace(ze,Ue);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=M}return new i(r,t)}function Ue(e){return`-`+e.toLowerCase()}function We(e){return e.charAt(1).toUpperCase()}var Ge=Te([Ae,Ne,Fe,Ie,Le],`html`),P=Te([Ae,Pe,Fe,Ie,Le],`svg`);function Ke(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function qe(e){return e.join(` `).trim()}var Je=n(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=`
|
|
2
|
+
import{n as e,r as t,t as n}from"./rolldown-runtime-XQCOJYun.js";import{A as r}from"./vendor-render-DCb9B75Q.js";import{t as i}from"./preload-helper-DFYRRz9w.js";import{i as a,n as o,o as s,r as c,t as l}from"./mermaid-preprocess-0hqEN7sn.js";import{n as u,t as d}from"./jsx-runtime-gFMgZ0TQ.js";import{t as f}from"./copy-text-BDs2wKjA.js";import{A as p,C as m,D as ee,E as h,S as te,T as ne,a as g,b as _,c as v,d as y,f as re,i as ie,k as b,l as ae,n as oe,o as se,p as ce,r as le,s as ue,t as de,u as fe,w as pe,x as me,y as he}from"./wiki-link-resolver-BfNXN9px.js";function ge(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function _e(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ye=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,be={};function xe(e,t){return((t||be).jsx?ye:ve).test(e)}var Se=/[ \t\n\f\r]/g;function Ce(e){return typeof e==`object`?e.type===`text`?we(e.value):!1:we(e)}function we(e){return e.replace(Se,``)===``}var x=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};x.prototype.normal={},x.prototype.property={},x.prototype.space=void 0;function Te(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new x(n,r,t)}function S(e){return e.toLowerCase()}var C=class{constructor(e,t){this.attribute=t,this.property=e}};C.prototype.attribute=``,C.prototype.booleanish=!1,C.prototype.boolean=!1,C.prototype.commaOrSpaceSeparated=!1,C.prototype.commaSeparated=!1,C.prototype.defined=!1,C.prototype.mustUseProperty=!1,C.prototype.number=!1,C.prototype.overloadedBoolean=!1,C.prototype.property=``,C.prototype.spaceSeparated=!1,C.prototype.space=void 0;var w=e({boolean:()=>T,booleanish:()=>E,commaOrSpaceSeparated:()=>A,commaSeparated:()=>k,number:()=>D,overloadedBoolean:()=>De,spaceSeparated:()=>O}),Ee=0,T=j(),E=j(),De=j(),D=j(),O=j(),k=j(),A=j();function j(){return 2**++Ee}var Oe=Object.keys(w),M=class extends C{constructor(e,t,n,r){let i=-1;if(super(e,t),ke(this,`space`,r),typeof n==`number`)for(;++i<Oe.length;){let e=Oe[i];ke(this,Oe[i],(n&w[e])===w[e])}}};M.prototype.defined=!0;function ke(e,t,n){n&&(e[t]=n)}function N(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new M(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[S(r)]=r,n[S(a.attribute)]=r}return new x(t,n,e.space)}var Ae=N({properties:{ariaActiveDescendant:null,ariaAtomic:E,ariaAutoComplete:null,ariaBusy:E,ariaChecked:E,ariaColCount:D,ariaColIndex:D,ariaColSpan:D,ariaControls:O,ariaCurrent:null,ariaDescribedBy:O,ariaDetails:null,ariaDisabled:E,ariaDropEffect:O,ariaErrorMessage:null,ariaExpanded:E,ariaFlowTo:O,ariaGrabbed:E,ariaHasPopup:null,ariaHidden:E,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:O,ariaLevel:D,ariaLive:null,ariaModal:E,ariaMultiLine:E,ariaMultiSelectable:E,ariaOrientation:null,ariaOwns:O,ariaPlaceholder:null,ariaPosInSet:D,ariaPressed:E,ariaReadOnly:E,ariaRelevant:null,ariaRequired:E,ariaRoleDescription:O,ariaRowCount:D,ariaRowIndex:D,ariaRowSpan:D,ariaSelected:E,ariaSetSize:D,ariaSort:null,ariaValueMax:D,ariaValueMin:D,ariaValueNow:D,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function je(e,t){return t in e?e[t]:t}function Me(e,t){return je(e,t.toLowerCase())}var Ne=N({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:k,acceptCharset:O,accessKey:O,action:null,allow:null,allowFullScreen:T,allowPaymentRequest:T,allowUserMedia:T,alt:null,as:null,async:T,autoCapitalize:null,autoComplete:O,autoFocus:T,autoPlay:T,blocking:O,capture:null,charSet:null,checked:T,cite:null,className:O,cols:D,colSpan:null,content:null,contentEditable:E,controls:T,controlsList:O,coords:D|k,crossOrigin:null,data:null,dateTime:null,decoding:null,default:T,defer:T,dir:null,dirName:null,disabled:T,download:De,draggable:E,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:T,formTarget:null,headers:O,height:D,hidden:De,high:D,href:null,hrefLang:null,htmlFor:O,httpEquiv:O,id:null,imageSizes:null,imageSrcSet:null,inert:T,inputMode:null,integrity:null,is:null,isMap:T,itemId:null,itemProp:O,itemRef:O,itemScope:T,itemType:O,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:T,low:D,manifest:null,max:null,maxLength:D,media:null,method:null,min:null,minLength:D,multiple:T,muted:T,name:null,nonce:null,noModule:T,noValidate:T,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:T,optimum:D,pattern:null,ping:O,placeholder:null,playsInline:T,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:T,referrerPolicy:null,rel:O,required:T,reversed:T,rows:D,rowSpan:D,sandbox:O,scope:null,scoped:T,seamless:T,selected:T,shadowRootClonable:T,shadowRootDelegatesFocus:T,shadowRootMode:null,shape:null,size:D,sizes:null,slot:null,span:D,spellCheck:E,src:null,srcDoc:null,srcLang:null,srcSet:null,start:D,step:null,style:null,tabIndex:D,target:null,title:null,translate:null,type:null,typeMustMatch:T,useMap:null,value:E,width:D,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:O,axis:null,background:null,bgColor:null,border:D,borderColor:null,bottomMargin:D,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:T,declare:T,event:null,face:null,frame:null,frameBorder:null,hSpace:D,leftMargin:D,link:null,longDesc:null,lowSrc:null,marginHeight:D,marginWidth:D,noResize:T,noHref:T,noShade:T,noWrap:T,object:null,profile:null,prompt:null,rev:null,rightMargin:D,rules:null,scheme:null,scrolling:E,standby:null,summary:null,text:null,topMargin:D,valueType:null,version:null,vAlign:null,vLink:null,vSpace:D,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:T,disableRemotePlayback:T,prefix:null,property:null,results:D,security:null,unselectable:null},space:`html`,transform:Me}),Pe=N({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:A,accentHeight:D,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:D,amplitude:D,arabicForm:null,ascent:D,attributeName:null,attributeType:null,azimuth:D,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:D,by:null,calcMode:null,capHeight:D,className:O,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:D,diffuseConstant:D,direction:null,display:null,dur:null,divisor:D,dominantBaseline:null,download:T,dx:null,dy:null,edgeMode:null,editable:null,elevation:D,enableBackground:null,end:null,event:null,exponent:D,externalResourcesRequired:null,fill:null,fillOpacity:D,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:k,g2:k,glyphName:k,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:D,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:D,horizOriginX:D,horizOriginY:D,id:null,ideographic:D,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:D,k:D,k1:D,k2:D,k3:D,k4:D,kernelMatrix:A,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:D,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:D,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:D,overlineThickness:D,paintOrder:null,panose1:null,path:null,pathLength:D,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:O,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:D,pointsAtY:D,pointsAtZ:D,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:A,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:A,rev:A,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:A,requiredFeatures:A,requiredFonts:A,requiredFormats:A,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:D,specularExponent:D,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:D,strikethroughThickness:D,string:null,stroke:null,strokeDashArray:A,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:D,strokeOpacity:D,strokeWidth:null,style:null,surfaceScale:D,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:A,tabIndex:D,tableValues:null,target:null,targetX:D,targetY:D,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:A,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:D,underlineThickness:D,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:D,values:null,vAlphabetic:D,vMathematical:D,vectorEffect:null,vHanging:D,vIdeographic:D,version:null,vertAdvY:D,vertOriginX:D,vertOriginY:D,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:D,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:je}),Fe=N({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),Ie=N({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:Me}),Le=N({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),Re={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},ze=/[A-Z]/g,Be=/-[a-z]/g,Ve=/^data[-\w.:]+$/i;function He(e,t){let n=S(t),r=t,i=C;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&Ve.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Be,We);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Be.test(e)){let n=e.replace(ze,Ue);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=M}return new i(r,t)}function Ue(e){return`-`+e.toLowerCase()}function We(e){return e.charAt(1).toUpperCase()}var Ge=Te([Ae,Ne,Fe,Ie,Le],`html`),P=Te([Ae,Pe,Fe,Ie,Le],`svg`);function Ke(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function qe(e){return e.join(` `).trim()}var Je=n(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=`
|
|
3
3
|
`,d=`/`,f=`*`,p=``,m=`comment`,ee=`declaration`;function h(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,h=1;function ne(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(u);h=~n?e.length-n:h+e.length}function g(){var e={line:l,column:h};return function(t){return t.position=new _(e),re(),t}}function _(e){this.start=e,this.end={line:l,column:h},this.source=t.source}_.prototype.content=e;function v(n){var r=Error(t.source+`:`+l+`:`+h+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=h,r.source=e,!t.silent)throw r}function y(t){var n=t.exec(e);if(n){var r=n[0];return ne(r),e=e.slice(r.length),n}}function re(){y(i)}function ie(e){var t;for(e||=[];t=b();)t!==!1&&e.push(t);return e}function b(){var t=g();if(!(d!=e.charAt(0)||f!=e.charAt(1))){for(var n=2;p!=e.charAt(n)&&(f!=e.charAt(n)||d!=e.charAt(n+1));)++n;if(n+=2,p===e.charAt(n-1))return v(`End of comment missing`);var r=e.slice(2,n-2);return h+=2,ne(r),e=e.slice(n),h+=2,t({type:m,comment:r})}}function ae(){var e=g(),t=y(a);if(t){if(b(),!y(o))return v(`property missing ':'`);var r=y(s),i=e({type:ee,property:te(t[0].replace(n,p)),value:r?te(r[0].replace(n,p)):p});return y(c),i}}function oe(){var e=[];ie(e);for(var t;t=ae();)t!==!1&&(e.push(t),ie(e));return e}return re(),oe()}function te(e){return e?e.replace(l,p):p}t.exports=h})),Ye=n((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.default=r;var n=t(Je());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),Xe=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),Ze=n(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(Ye()),r=Xe();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Qe=$e(`end`),F=$e(`start`);function $e(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function et(e){let t=F(e),n=Qe(e);if(t&&n)return{start:t,end:n}}var tt=t(Ze(),1),I={}.hasOwnProperty,nt=new Map,rt=/[A-Z]/g,it=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),at=new Set([`td`,`th`]),ot=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function st(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=_t(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=gt(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?P:Ge,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=ct(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function ct(e,t,n){if(t.type===`element`)return lt(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return ut(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return ft(e,t,n);if(t.type===`mdxjsEsm`)return dt(e,t);if(t.type===`root`)return pt(e,t,n);if(t.type===`text`)return mt(e,t)}function lt(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=P,e.schema=i),e.ancestors.push(t);let a=St(e,t.tagName,!1),o=vt(e,t),s=R(e,t);return it.has(t.tagName)&&(s=s.filter(function(e){return typeof e==`string`?!Ce(e):!0})),ht(e,o,a,t),L(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function ut(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}z(e,t.position)}function dt(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);z(e,t.position)}function ft(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=P,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:St(e,t.name,!0),o=yt(e,t),s=R(e,t);return ht(e,o,a,t),L(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function pt(e,t,n){let r={};return L(r,R(e,t)),e.create(t,e.Fragment,r,n)}function mt(e,t){return t.value}function ht(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function L(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function gt(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function _t(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=F(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function vt(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&I.call(t.properties,i)){let a=bt(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&at.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function yt(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else z(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else z(e,t.position);else a=r.value===null?!0:r.value;n[i]=a}return n}function R(e,t){let n=[],r=-1,i=e.passKeys?new Map:nt;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=ct(e,a,o);s!==void 0&&n.push(s)}return n}function bt(e,t,n){let r=He(e.schema,t);if(!(n==null||typeof n==`number`&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?_e(n):qe(n)),r.property===`style`){let t=typeof n==`object`?n:xt(e,String(n));return e.stylePropertyNameCase===`css`&&(t=Ct(t)),[`style`,t]}return[e.elementAttributeNameCase===`react`&&r.space?Re[r.property]||r.property:r.attribute,n]}}function xt(e,t){try{return(0,tt.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new p("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=ot+`#cannot-parse-style-attribute`,r}}function St(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=xe(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}r=i}else r=xe(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return I.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);z(e)}function z(e,t){let n=new p("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=ot+`#cannot-handle-mdx-estrees-without-createevaluater`,n}function Ct(e){let t={},n;for(n in e)I.call(e,n)&&(t[wt(n)]=e[n]);return t}function wt(e){let t=e.replace(rt,Tt);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function Tt(e){return`-`+e.toLowerCase()}var B={action:[`form`],cite:[`blockquote`,`del`,`ins`,`q`],data:[`object`],formAction:[`button`,`input`],href:[`a`,`area`,`base`,`link`],icon:[`menuitem`],itemId:null,manifest:[`html`],ping:[`a`,`area`],poster:[`video`],src:[`audio`,`embed`,`iframe`,`img`,`input`,`script`,`source`,`track`,`video`]};function V(e){let t=[],n=-1,r=0,i=0;for(;++n<e.length;){let a=e.charCodeAt(n),o=``;if(a===37&&b(e.charCodeAt(n+1))&&b(e.charCodeAt(n+2)))i=2;else if(a<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(a))||(o=String.fromCharCode(a));else if(a>55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function Et(e,t){let n={type:`element`,tagName:`blockquote`,properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function Dt(e,t){let n={type:`element`,tagName:`br`,properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:`text`,value:`
|
|
4
4
|
`}]}function Ot(e,t){let n=t.value?t.value+`
|
|
5
5
|
`:``,r={},i=t.lang?t.lang.split(/\s+/):[];i.length>0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function kt(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function At(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function jt(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=V(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function Mt(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Nt(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function Pt(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function Ft(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Pt(e,t);let i={src:V(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function It(e,t){let n={src:V(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function Lt(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function Rt(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Pt(e,t);let i={href:V(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function zt(e,t){let n={href:V(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Bt(e,t,n){let r=e.all(t),i=n?Vt(n):Ht(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s<r.length;){let e=r[s];(i||s!==0||e.type!==`element`||e.tagName!==`p`)&&o.push({type:`text`,value:`
|
|
@@ -12,4 +12,4 @@ import{n as e,r as t,t as n}from"./rolldown-runtime-XQCOJYun.js";import{A as r}f
|
|
|
12
12
|
`}),n}function xn(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function Sn(e,t){let n=gn(e,t),r=n.one(e,void 0),i=pn(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:`
|
|
13
13
|
`},i)),a}function Cn(e,t){return e&&`run`in e?async function(n,r){let i=Sn(n,{file:r,...t});await e.run(i,r)}:function(n,r){return Sn(n,{file:r,...e||t})}}var q=d(),J=t(u(),1),wn=[],Tn={allowDangerousHtml:!0},En=/^(https?|ircs?|mailto|xmpp)$/i,Dn=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function On(e){let t=kn(e),n=An(e);return jn(t.runSync(t.parse(n),n),e)}function kn(e){let t=e.rehypePlugins||wn,n=e.remarkPlugins||wn,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Tn}:Tn;return me().use(ee).use(n).use(Cn,r).use(t)}function An(e){let t=e.children||``,n=new te;return typeof t==`string`?n.value=t:``+t,n}function jn(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Mn;for(let e of Dn)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return m(e,l),st(e,{Fragment:q.Fragment,components:i,ignoreInvalidStyle:!0,jsx:q.jsx,jsxs:q.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in B)if(Object.hasOwn(B,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=B[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Mn(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||En.test(e.slice(0,t))?e:``}var Nn=/[#.]/g;function Pn(e,t){let n=e||``,r={},i=0,a,o;for(;i<n.length;){Nn.lastIndex=i;let e=Nn.exec(n),t=n.slice(i,e?e.index:n.length);t&&(a?a===`#`?r.id=t:Array.isArray(r.className)?r.className.push(t):r.className=[t]:o=t,i+=t.length),e&&(a=e[0],i++)}return{type:`element`,tagName:o||t||`div`,properties:r,children:[]}}function Fn(e,t,n){let r=n?Vn(n):void 0;function i(n,i,...a){let o;if(n==null){o={type:`root`,children:[]};let e=i;a.unshift(e)}else{o=Pn(n,t);let s=o.tagName.toLowerCase(),c=r?r.get(s):void 0;if(o.tagName=c||s,In(i))a.unshift(i);else for(let[t,n]of Object.entries(i))Ln(e,o.properties,t,n)}for(let e of a)Rn(o.children,e);return o.type===`element`&&o.tagName===`template`&&(o.content={type:`root`,children:o.children},o.children=[]),o}return i}function In(e){if(typeof e!=`object`||!e||Array.isArray(e))return!0;if(typeof e.type!=`string`)return!1;let t=e,n=Object.keys(e);for(let e of n){let n=t[e];if(n&&typeof n==`object`){if(!Array.isArray(n))return!0;let e=n;for(let t of e)if(typeof t!=`number`&&typeof t!=`string`)return!0}}return!!(`children`in e&&Array.isArray(e.children))}function Ln(e,t,n,r){let i=He(e,n),a;if(r!=null){if(typeof r==`number`){if(Number.isNaN(r))return;a=r}else a=typeof r==`boolean`?r:typeof r==`string`?i.spaceSeparated?Ke(r):i.commaSeparated?ge(r):i.commaOrSpaceSeparated?Ke(ge(r).join(` `)):zn(i,i.property,r):Array.isArray(r)?[...r]:i.property===`style`?Bn(r):String(r);if(Array.isArray(a)){let e=[];for(let t of a)e.push(zn(i,i.property,t));a=e}i.property===`className`&&Array.isArray(t.className)&&(a=t.className.concat(a)),t[i.property]=a}}function Rn(e,t){if(t!=null)if(typeof t==`number`||typeof t==`string`)e.push({type:`text`,value:String(t)});else if(Array.isArray(t))for(let n of t)Rn(e,n);else if(typeof t==`object`&&`type`in t)t.type===`root`?Rn(e,t.children):e.push(t);else throw Error("Expected node, nodes, or string, got `"+t+"`")}function zn(e,t,n){if(typeof n==`string`){if(e.number&&n&&!Number.isNaN(Number(n)))return Number(n);if((e.boolean||e.overloadedBoolean)&&(n===``||S(n)===S(t)))return!0}return n}function Bn(e){let t=[];for(let[n,r]of Object.entries(e))t.push([n,r].join(`: `));return t.join(`; `)}function Vn(e){let t=new Map;for(let n of e)t.set(n.toLowerCase(),n);return t}var Hn=`altGlyph.altGlyphDef.altGlyphItem.animateColor.animateMotion.animateTransform.clipPath.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feDropShadow.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.foreignObject.glyphRef.linearGradient.radialGradient.solidColor.textArea.textPath`.split(`.`),Un=Fn(Ge,`div`),Wn=Fn(P,`g`,Hn),Gn={html:`http://www.w3.org/1999/xhtml`,mathml:`http://www.w3.org/1998/Math/MathML`,svg:`http://www.w3.org/2000/svg`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function Kn(e,t){return qn(e,t||{})||{type:`root`,children:[]}}function qn(e,t){let n=Jn(e,t);return n&&t.afterTransform&&t.afterTransform(e,n),n}function Jn(e,t){switch(e.nodeType){case 1:return $n(e,t);case 3:return Zn(e);case 8:return Qn(e);case 9:return Yn(e,t);case 10:return Xn();case 11:return Yn(e,t);default:return}}function Yn(e,t){return{type:`root`,children:er(e,t)}}function Xn(){return{type:`doctype`}}function Zn(e){return{type:`text`,value:e.nodeValue||``}}function Qn(e){return{type:`comment`,value:e.nodeValue||``}}function $n(e,t){let n=e.namespaceURI,r=n===Gn.svg?Wn:Un,i=n===Gn.html?e.tagName.toLowerCase():e.tagName,a=n===Gn.html&&i===`template`?e.content:e,o=e.getAttributeNames(),s={},c=-1;for(;++c<o.length;)s[o[c]]=e.getAttribute(o[c])||``;return r(i,s,er(a,t))}function er(e,t){let n=e.childNodes,r=[],i=-1;for(;++i<n.length;){let e=qn(n[i],t);e!==void 0&&r.push(e)}return r}var tr=new DOMParser;function nr(e,t){return Kn(t?.fragment?rr(e):tr.parseFromString(e,`text/html`))}function rr(e){let t=document.createElement(`template`);return t.innerHTML=e,t.content}var ir=(function(e,t,n){let r=h(n);if(!e||!e.type||!e.children)throw Error(`Expected parent node`);if(typeof t==`number`){if(t<0||t===1/0)throw Error(`Expected positive finite number as index`)}else if(t=e.children.indexOf(t),t<0)throw Error(`Expected child node or index`);for(;++t<e.children.length;)if(r(e.children[t],t,e))return e.children[t]}),Y=(function(e){if(e==null)return cr;if(typeof e==`string`)return or(e);if(typeof e==`object`)return ar(e);if(typeof e==`function`)return sr(e);throw Error("Expected function, string, or array as `test`")});function ar(e){let t=[],n=-1;for(;++n<e.length;)t[n]=Y(e[n]);return sr(r);function r(...e){let n=-1;for(;++n<t.length;)if(t[n].apply(this,e))return!0;return!1}}function or(e){return sr(t);function t(t){return t.tagName===e}}function sr(e){return t;function t(t,n,r){return!!(lr(t)&&e.call(this,t,typeof n==`number`?n:void 0,r||void 0))}}function cr(e){return!!(e&&typeof e==`object`&&`type`in e&&e.type===`element`&&`tagName`in e&&typeof e.tagName==`string`)}function lr(e){return typeof e==`object`&&!!e&&`type`in e&&`tagName`in e}var ur=/\n/g,dr=/[\t ]+/g,fr=Y(`br`),pr=Y(Er),mr=Y(`p`),hr=Y(`tr`),gr=Y([`datalist`,`head`,`noembed`,`noframes`,`noscript`,`rp`,`script`,`style`,`template`,`title`,Tr,Dr]),_r=Y(`address.article.aside.blockquote.body.caption.center.dd.dialog.dir.dl.dt.div.figure.figcaption.footer.form,.h1.h2.h3.h4.h5.h6.header.hgroup.hr.html.legend.li.listing.main.menu.nav.ol.p.plaintext.pre.section.ul.xmp`.split(`.`));function vr(e,t){let n=t||{},r=`children`in e?e.children:[],i=_r(e),a=wr(e,{whitespace:n.whitespace||`normal`,breakBefore:!1,breakAfter:!1}),o=[];(e.type===`text`||e.type===`comment`)&&o.push(...xr(e,{whitespace:a,breakBefore:!0,breakAfter:!0}));let s=-1;for(;++s<r.length;)o.push(...yr(r[s],e,{whitespace:a,breakBefore:s?void 0:i,breakAfter:s<r.length-1?fr(r[s+1]):i}));let c=[],l;for(s=-1;++s<o.length;){let e=o[s];typeof e==`number`?l!==void 0&&e>l&&(l=e):e&&(l!==void 0&&l>-1&&c.push(`
|
|
14
14
|
`.repeat(l)||` `),l=-1,c.push(e))}return c.join(``)}function yr(e,t,n){return e.type===`element`?br(e,t,n):e.type===`text`?n.whitespace===`normal`?xr(e,n):Sr(e):[]}function br(e,t,n){let r=wr(e,n),i=e.children||[],a=-1,o=[];if(gr(e))return o;let s,c;for(fr(e)||hr(e)&&ir(t,e,hr)?c=`
|
|
15
|
-
`:mr(e)?(s=2,c=2):_r(e)&&(s=1,c=1);++a<i.length;)o=o.concat(yr(i[a],e,{whitespace:r,breakBefore:a?void 0:s,breakAfter:a<i.length-1?fr(i[a+1]):c}));return pr(e)&&ir(t,e,pr)&&o.push(` `),s&&o.unshift(s),c&&o.push(c),o}function xr(e,t){let n=String(e.value),r=[],i=[],a=0;for(;a<=n.length;){ur.lastIndex=a;let e=ur.exec(n),i=e&&`index`in e?e.index:n.length;r.push(Cr(n.slice(a,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,``),a===0?t.breakBefore:!0,i===n.length?t.breakAfter:!0)),a=i+1}let o=-1,s;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(i.push(r[o]),s=void 0):r[o]?(typeof s==`number`&&i.push(s),i.push(r[o]),s=0):(o===0||o===r.length-1)&&i.push(0);return i}function Sr(e){return[String(e.value)]}function Cr(e,t,n){let r=[],i=0,a;for(;i<e.length;){dr.lastIndex=i;let n=dr.exec(e);a=n?n.index:e.length,!i&&!a&&n&&!t&&r.push(``),i!==a&&r.push(e.slice(i,a)),i=n?a+n[0].length:a}return i!==a&&!n&&r.push(``),r.join(` `)}function wr(e,t){if(e.type===`element`){let n=e.properties||{};switch(e.tagName){case`listing`:case`plaintext`:case`xmp`:return`pre`;case`nobr`:return`nowrap`;case`pre`:return n.wrap?`pre-wrap`:`pre`;case`td`:case`th`:return n.noWrap?`nowrap`:t.whitespace;case`textarea`:return`pre-wrap`;default:}}return t.whitespace}function Tr(e){return!!(e.properties||{}).hidden}function Er(e){return e.tagName===`td`||e.tagName===`th`}function Dr(e){return e.tagName===`dialog`&&!(e.properties||{}).open}var Or={},kr=[];function Ar(e){let t=e||Or;return function(e,n){ne(e,`element`,function(e,i){let a=Array.isArray(e.properties.className)?e.properties.className:kr,o=a.includes(`language-math`),s=a.includes(`math-display`),c=a.includes(`math-inline`),l=s;if(!o&&!s&&!c)return;let u=i[i.length-1],d=e;if(e.tagName===`code`&&o&&u&&u.type===`element`&&u.tagName===`pre`&&(d=u,u=i[i.length-2],l=!0),!u)return;let f=vr(d,{whitespace:`pre`}),p;try{p=r.renderToString(f,{...t,displayMode:l,throwOnError:!0})}catch(a){let o=a,s=o.name.toLowerCase();n.message(`Could not render math with KaTeX`,{ancestors:[...i,e],cause:o,place:e.position,ruleId:s,source:`rehype-katex`});try{p=r.renderToString(f,{...t,displayMode:l,strict:`ignore`,throwOnError:!1})}catch{p=[{type:`element`,tagName:`span`,properties:{className:[`katex-error`],style:`color:`+(t.errorColor||`#cc0000`),title:String(a)},children:[{type:`text`,value:f}]}]}}typeof p==`string`&&(p=nr(p,{fragment:!0}).children);let m=u.children.indexOf(d);return u.children.splice(m,1,...p),pe})}}var X={}.hasOwnProperty;function jr(e,t){let n={type:`root`,children:[]},r=Mr({schema:t?{..._,...t}:_,stack:[]},e);return r&&(Array.isArray(r)?r.length===1?n=r[0]:n.children=r:n=r),n}function Mr(e,t){if(t&&typeof t==`object`){let n=t;switch(typeof n.type==`string`?n.type:``){case`comment`:return Nr(e,n);case`doctype`:return Pr(e,n);case`element`:return Fr(e,n);case`root`:return Ir(e,n);case`text`:return Lr(e,n);default:}}}function Nr(e,t){if(e.schema.allowComments){let e=typeof t.value==`string`?t.value:``,n=e.indexOf(`-->`),r={type:`comment`,value:n<0?e:e.slice(0,n)};return Z(r,t),r}}function Pr(e,t){if(e.schema.allowDoctypes){let e={type:`doctype`};return Z(e,t),e}}function Fr(e,t){let n=typeof t.tagName==`string`?t.tagName:``;e.stack.push(n);let r=Rr(e,t.children),i=zr(e,t.properties);e.stack.pop();let a=!1;if(n&&n!==`*`&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(a=!0,e.schema.ancestors&&X.call(e.schema.ancestors,n))){let t=e.schema.ancestors[n],r=-1;for(a=!1;++r<t.length;)e.stack.includes(t[r])&&(a=!0)}if(!a)return e.schema.strip&&!e.schema.strip.includes(n)?r:void 0;let o={type:`element`,tagName:n,properties:i,children:r};return Z(o,t),o}function Ir(e,t){let n={type:`root`,children:Rr(e,t.children)};return Z(n,t),n}function Lr(e,t){let n={type:`text`,value:typeof t.value==`string`?t.value:``};return Z(n,t),n}function Rr(e,t){let n=[];if(Array.isArray(t)){let r=t,i=-1;for(;++i<r.length;){let t=Mr(e,r[i]);t&&(Array.isArray(t)?n.push(...t):n.push(t))}}return n}function zr(e,t){let n=e.stack[e.stack.length-1],r=e.schema.attributes,i=e.schema.required,a=r&&X.call(r,n)?r[n]:void 0,o=r&&X.call(r,`*`)?r[`*`]:void 0,s=t&&typeof t==`object`?t:{},c={},l;for(l in s)if(X.call(s,l)){let t=s[l],n=Br(e,Wr(a,l),l,t);n??=Br(e,Wr(o,l),l,t),n!=null&&(c[l]=n)}if(i&&X.call(i,n)){let e=i[n];for(l in e)X.call(e,l)&&!X.call(c,l)&&(c[l]=e[l])}return c}function Br(e,t,n,r){return t?Array.isArray(r)?Vr(e,t,n,r):Hr(e,t,n,r):void 0}function Vr(e,t,n,r){let i=-1,a=[];for(;++i<r.length;){let o=Hr(e,t,n,r[i]);(typeof o==`number`||typeof o==`string`)&&a.push(o)}return a}function Hr(e,t,n,r){if(!(typeof r!=`boolean`&&typeof r!=`number`&&typeof r!=`string`)&&Ur(e,n,r)){if(typeof t==`object`&&t.length>1){let e=!1,n=0;for(;++n<t.length;){let i=t[n];if(i&&typeof i==`object`&&`flags`in i){if(i.test(String(r))){e=!0;break}}else if(i===r){e=!0;break}}if(!e)return}return e.schema.clobber&&e.schema.clobberPrefix&&e.schema.clobber.includes(n)?e.schema.clobberPrefix+r:r}}function Ur(e,t,n){let r=e.schema.protocols&&X.call(e.schema.protocols,t)?e.schema.protocols[t]:void 0;if(!r||r.length===0)return!0;let i=String(n),a=i.indexOf(`:`),o=i.indexOf(`?`),s=i.indexOf(`#`),c=i.indexOf(`/`);if(a<0||c>-1&&a>c||o>-1&&a>o||s>-1&&a>s)return!0;let l=-1;for(;++l<r.length;){let e=r[l];if(a===e.length&&i.slice(0,e.length)===e)return!0}return!1}function Z(e,t){let n=et(t);t.data&&(e.data=K(t.data)),n&&(e.position=n)}function Wr(e,t){let n,r=-1;if(e)for(;++r<e.length;){let i=e[r],a=typeof i==`string`?i:i[0];if(a===t)return i;a===`data*`&&(n=i)}if(t.length>4&&t.slice(0,4).toLowerCase()===`data`)return n}function Gr(e){return function(t){return jr(t,e)}}function Kr(e){he(e,[/\r?\n|\r/g,qr])}function qr(){return{type:`break`}}function Jr(){return function(e){Kr(e)}}function Yr(e){let[t,n]=(0,J.useState)(!1),r=y(e.code,e.language),i=r.language||`text`;async function a(){let t=await f(e.code);if(t.ok){n(!0),window.setTimeout(()=>n(!1),1200);return}console.error(`[notes:code-copy]`,t.error)}return(0,q.jsxs)(`div`,{className:`notes-code-block`,children:[(0,q.jsx)(`div`,{className:`notes-code-header`,children:(0,q.jsx)(`button`,{type:`button`,onClick:()=>void a(),children:t?`Copied`:i})}),(0,q.jsx)(`pre`,{children:(0,q.jsx)(`code`,{className:`hljs language-${i}`,"data-highlighted":r.highlighted?`yes`:`no`,dangerouslySetInnerHTML:{__html:r.html}})})]})}var Xr=100,Zr=null,Q=new Map;async function Qr(){return Zr||=(await i(()=>import(`./mermaid.core-CE6des8A.js`),__vite__mapDeps([0]))).default,Zr.initialize(c()),Zr}function $r(){return document.documentElement.getAttribute(`data-theme`)??`default`}function ei(e,t){if(Q.set(e,t),Q.size<=Xr)return;let n=Q.keys().next().value;n&&Q.delete(n)}function ti(e){let t=(0,J.useId)().replace(/[^a-zA-Z0-9_-]/g,``),n=(0,J.useMemo)(()=>l(e.code),[e.code]),r=$r(),i=(0,J.useMemo)(()=>`${r}\n${n}`,[n,r]),[c,u]=(0,J.useState)(()=>Q.get(i)??{status:`loading`,sourceKey:i});return(0,J.useEffect)(()=>{let e=!1,r=Q.get(i);if(r)return u(r),()=>{e=!0};async function c(){u(e=>e.status===`ready`&&e.sourceKey===i?e:{status:`loading`,sourceKey:i});try{let r=await Qr(),c=`notes-mermaid-${t}`,l;try{({svg:l}=await r.render(c,n))}catch(e){let t=o(n);if(!t)throw e;({svg:l}=await r.render(`${c}-retry`,t))}if(!e){let e={status:`ready`,sourceKey:i,svg:s(l),wide:a(n)};ei(i,e),u(e)}}catch(t){e||u({status:`error`,sourceKey:i,message:t instanceof Error?t.message:`Mermaid render failed`})}}return c(),()=>{e=!0}},[n,t,i]),c.status===`ready`?(0,q.jsx)(`div`,{className:`notes-mermaid-block is-ready${c.wide?` mermaid-type-wide`:``}`,dangerouslySetInnerHTML:{__html:c.svg}}):c.status===`error`?(0,q.jsxs)(`div`,{className:`notes-mermaid-block is-error`,children:[(0,q.jsx)(`strong`,{children:`Mermaid render failed`}),(0,q.jsx)(`span`,{children:c.message}),(0,q.jsx)(`pre`,{children:(0,q.jsx)(`code`,{children:e.code})})]}):(0,q.jsx)(`div`,{className:`notes-mermaid-block is-loading`,role:`status`,"aria-label":`Diagram loading`,children:`Rendering diagram...`})}function ni(e){return oe(e)}function ri(e,t,n){if(!e)return[e];let r=!!t.notes?.length;if(t.lookup.size===0&&!r)return[e];de.lastIndex=0;let i=[],a=0,o=0,s;for(;(s=de.exec(e))!==null;){let r=s.index,c=r+s[0].length;if(le(e,r))continue;let l=t.lookup.get(s[0])??ie(s[0],t.outgoing,t.notes,r);if(!l)continue;r>a&&i.push(e.slice(a,r));let u=g(l,s[0]),d=`${n}-wl-${o++}`;if(l.status===`resolved`&&l.resolvedPath){let e=l.resolvedPath;i.push((0,J.createElement)(`a`,{key:d,className:`notes-wikilink`,href:`#${encodeURIComponent(e)}`,title:e,"data-notes-wiki-status":l.status,onClick:n=>{n.preventDefault(),t.onNavigate(e)}},u))}else{let e=se(l);i.push((0,J.createElement)(`span`,{key:d,className:`notes-wikilink is-broken`,title:e,"data-notes-wiki-status":l.status,"aria-label":`Broken wikilink: ${s[1]}`},u))}a=c}return a===0?[e]:(a<e.length&&i.push(e.slice(a)),i)}function ii(e,t,n){if(t.lookup.size===0&&!t.notes?.length)return e;let r=[],i=0;return J.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=ri(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}if(typeof e==`number`||typeof e==`boolean`||e==null){r.push(e);return}if((0,J.isValidElement)(e)){r.push(e);return}r.push(e)}),r}var ai=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;function oi(e){let t=ai.exec(e);if(!t)return{frontmatterRaw:null,body:e};let n=t[0];return{frontmatterRaw:n,body:e.slice(n.length)}}function $(e,t){return t?`${e} ${t}`:e}function si(e){let t=0,n=e=>{if(Array.isArray(e)){e.forEach(n);return}(0,J.isValidElement)(e)&&(e.props.node?.tagName===`tr`&&(t=Math.max(t,J.Children.count(e.props.children))),J.Children.forEach(e.props.children,n))};return J.Children.forEach(e,n),Math.max(1,t)}function ci(e){return e<=1?`minmax(0, 1fr)`:e===2?`max-content minmax(16rem, 1fr)`:e===3?`max-content minmax(12rem, .45fr) minmax(18rem, 1fr)`:`max-content repeat(${e-1}, minmax(12rem, 1fr))`}function li(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(li).join(``):(0,J.isValidElement)(e)?li(e.props.children):``}function ui(e){return(0,J.isValidElement)(e)?(e.props.className??``).match(/language-([^\s]+)/)?.[1]??`text`:`text`}var di=e=>{},fi=/(?:~\/[^\s)`\]"'<>]+|\/(?:Users|home|tmp|var|opt|private)\/[^\s)`\]"'<>]+)/g,pi=/[.,!?:;]+$/;function mi(e){return e.startsWith(`~/`)||/^\/(?:Users|home|tmp|var|opt|private)\//.test(e)}function hi(e){let t=e.split(`/`).pop()||e;return/\.\w{1,10}$/.test(t)?t:e}function gi(e,t,n){if(!e||!t)return[e];fi.lastIndex=0;let r=[],i=0,a=0,o;for(;(o=fi.exec(e))!==null;){let s=o[0],c=s.replace(pi,``);if(!mi(c))continue;o.index>i&&r.push(e.slice(i,o.index));let l=s.slice(c.length);r.push((0,J.createElement)(`button`,{key:`${n}-lf-${a++}`,type:`button`,className:`markdown-local-file-link`,title:c,onClick:e=>{e.preventDefault(),t(c)}},hi(c))),l&&r.push(l),i=o.index+s.length}return i===0?[e]:(i<e.length&&r.push(e.slice(i)),r)}function _i(e,t,n){if(!t)return e;let r=[],i=0;return J.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=gi(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}r.push(e)}),r}function vi(e){let t=(0,J.useMemo)(()=>oi(e.markdown).body,[e.markdown]),n=(0,J.useMemo)(()=>({lookup:ni(e.outgoing),outgoing:e.outgoing,notes:e.notes,onNavigate:e.onWikiLinkNavigate??di}),[e.outgoing,e.notes,e.onWikiLinkNavigate]),r=(t,r)=>_i(ii(t,n,r),e.onLocalFileOpen,r),i=e=>t=>{let{children:n,node:i,className:a,id:o,style:s}=t,c=r(n,e);return(0,J.createElement)(e,{className:a,id:o,style:s},c)},a=e=>t=>{let{children:n,node:i,className:a,style:o,align:s}=t,c=r(n,e);return(0,q.jsx)(`span`,{className:$(`markdown-linear-table-cell markdown-linear-table-${e}`,a),style:o,"data-align":s||void 0,children:c})},o={a:({href:e,children:t,node:n,...r})=>{let i=typeof e==`string`&&ue(e)?e:void 0,a=!!(i&&/^https?:\/\//i.test(i));return(0,q.jsx)(`a`,{...r,href:i,target:a?`_blank`:void 0,rel:a?`noreferrer noopener`:void 0,children:t})},code:({className:e,children:t})=>(0,q.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>{let t=ui(e),n=li(e).replace(/\n$/,``);return t===`mermaid`?(0,q.jsx)(ti,{code:n}):(0,q.jsx)(Yr,{code:n,language:t})},img:({src:e,alt:t,...n})=>{let r=typeof e==`string`?ae(e):``;return r?r.endsWith(`.pdf`)?(0,q.jsx)(`iframe`,{src:r,title:t??`PDF embed`,className:`notes-pdf-embed`}):(0,q.jsx)(`img`,{...n,src:r,alt:t??``,loading:`lazy`}):null},p:i(`p`),li:i(`li`),h1:i(`h1`),h2:i(`h2`),h3:i(`h3`),h4:i(`h4`),h5:i(`h5`),h6:i(`h6`),blockquote:i(`blockquote`),td:i(`td`),th:i(`th`),em:i(`em`),strong:i(`strong`),del:i(`del`)};return e.tableMode===`linear`&&(o.table=({children:e,node:t,className:n,style:r})=>{let i={...r,"--markdown-linear-table-grid":ci(si(e))};return(0,q.jsx)(`div`,{className:$(`markdown-linear-table`,n),style:i,role:`list`,children:e})},o.thead=({children:e,node:t,className:n,style:r})=>(0,q.jsx)(`div`,{className:$(`markdown-linear-table-head`,n),style:r,children:e}),o.tbody=({children:e,node:t,className:n,style:r})=>(0,q.jsx)(`div`,{className:$(`markdown-linear-table-body`,n),style:r,children:e}),o.tr=({children:e,node:t,className:n,style:r})=>(0,q.jsx)(`div`,{className:$(`markdown-linear-table-row`,n),style:r,role:`listitem`,children:e}),o.th=a(`th`),o.td=a(`td`)),(0,q.jsx)(On,{skipHtml:!0,urlTransform:fe,remarkPlugins:[ce,Jr,re],rehypePlugins:[[Gr,v],Ar],components:o,children:t})}export{Yr as n,vi as t};
|
|
15
|
+
`:mr(e)?(s=2,c=2):_r(e)&&(s=1,c=1);++a<i.length;)o=o.concat(yr(i[a],e,{whitespace:r,breakBefore:a?void 0:s,breakAfter:a<i.length-1?fr(i[a+1]):c}));return pr(e)&&ir(t,e,pr)&&o.push(` `),s&&o.unshift(s),c&&o.push(c),o}function xr(e,t){let n=String(e.value),r=[],i=[],a=0;for(;a<=n.length;){ur.lastIndex=a;let e=ur.exec(n),i=e&&`index`in e?e.index:n.length;r.push(Cr(n.slice(a,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,``),a===0?t.breakBefore:!0,i===n.length?t.breakAfter:!0)),a=i+1}let o=-1,s;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(i.push(r[o]),s=void 0):r[o]?(typeof s==`number`&&i.push(s),i.push(r[o]),s=0):(o===0||o===r.length-1)&&i.push(0);return i}function Sr(e){return[String(e.value)]}function Cr(e,t,n){let r=[],i=0,a;for(;i<e.length;){dr.lastIndex=i;let n=dr.exec(e);a=n?n.index:e.length,!i&&!a&&n&&!t&&r.push(``),i!==a&&r.push(e.slice(i,a)),i=n?a+n[0].length:a}return i!==a&&!n&&r.push(``),r.join(` `)}function wr(e,t){if(e.type===`element`){let n=e.properties||{};switch(e.tagName){case`listing`:case`plaintext`:case`xmp`:return`pre`;case`nobr`:return`nowrap`;case`pre`:return n.wrap?`pre-wrap`:`pre`;case`td`:case`th`:return n.noWrap?`nowrap`:t.whitespace;case`textarea`:return`pre-wrap`;default:}}return t.whitespace}function Tr(e){return!!(e.properties||{}).hidden}function Er(e){return e.tagName===`td`||e.tagName===`th`}function Dr(e){return e.tagName===`dialog`&&!(e.properties||{}).open}var Or={},kr=[];function Ar(e){let t=e||Or;return function(e,n){ne(e,`element`,function(e,i){let a=Array.isArray(e.properties.className)?e.properties.className:kr,o=a.includes(`language-math`),s=a.includes(`math-display`),c=a.includes(`math-inline`),l=s;if(!o&&!s&&!c)return;let u=i[i.length-1],d=e;if(e.tagName===`code`&&o&&u&&u.type===`element`&&u.tagName===`pre`&&(d=u,u=i[i.length-2],l=!0),!u)return;let f=vr(d,{whitespace:`pre`}),p;try{p=r.renderToString(f,{...t,displayMode:l,throwOnError:!0})}catch(a){let o=a,s=o.name.toLowerCase();n.message(`Could not render math with KaTeX`,{ancestors:[...i,e],cause:o,place:e.position,ruleId:s,source:`rehype-katex`});try{p=r.renderToString(f,{...t,displayMode:l,strict:`ignore`,throwOnError:!1})}catch{p=[{type:`element`,tagName:`span`,properties:{className:[`katex-error`],style:`color:`+(t.errorColor||`#cc0000`),title:String(a)},children:[{type:`text`,value:f}]}]}}typeof p==`string`&&(p=nr(p,{fragment:!0}).children);let m=u.children.indexOf(d);return u.children.splice(m,1,...p),pe})}}var X={}.hasOwnProperty;function jr(e,t){let n={type:`root`,children:[]},r=Mr({schema:t?{..._,...t}:_,stack:[]},e);return r&&(Array.isArray(r)?r.length===1?n=r[0]:n.children=r:n=r),n}function Mr(e,t){if(t&&typeof t==`object`){let n=t;switch(typeof n.type==`string`?n.type:``){case`comment`:return Nr(e,n);case`doctype`:return Pr(e,n);case`element`:return Fr(e,n);case`root`:return Ir(e,n);case`text`:return Lr(e,n);default:}}}function Nr(e,t){if(e.schema.allowComments){let e=typeof t.value==`string`?t.value:``,n=e.indexOf(`-->`),r={type:`comment`,value:n<0?e:e.slice(0,n)};return Z(r,t),r}}function Pr(e,t){if(e.schema.allowDoctypes){let e={type:`doctype`};return Z(e,t),e}}function Fr(e,t){let n=typeof t.tagName==`string`?t.tagName:``;e.stack.push(n);let r=Rr(e,t.children),i=zr(e,t.properties);e.stack.pop();let a=!1;if(n&&n!==`*`&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(a=!0,e.schema.ancestors&&X.call(e.schema.ancestors,n))){let t=e.schema.ancestors[n],r=-1;for(a=!1;++r<t.length;)e.stack.includes(t[r])&&(a=!0)}if(!a)return e.schema.strip&&!e.schema.strip.includes(n)?r:void 0;let o={type:`element`,tagName:n,properties:i,children:r};return Z(o,t),o}function Ir(e,t){let n={type:`root`,children:Rr(e,t.children)};return Z(n,t),n}function Lr(e,t){let n={type:`text`,value:typeof t.value==`string`?t.value:``};return Z(n,t),n}function Rr(e,t){let n=[];if(Array.isArray(t)){let r=t,i=-1;for(;++i<r.length;){let t=Mr(e,r[i]);t&&(Array.isArray(t)?n.push(...t):n.push(t))}}return n}function zr(e,t){let n=e.stack[e.stack.length-1],r=e.schema.attributes,i=e.schema.required,a=r&&X.call(r,n)?r[n]:void 0,o=r&&X.call(r,`*`)?r[`*`]:void 0,s=t&&typeof t==`object`?t:{},c={},l;for(l in s)if(X.call(s,l)){let t=s[l],n=Br(e,Wr(a,l),l,t);n??=Br(e,Wr(o,l),l,t),n!=null&&(c[l]=n)}if(i&&X.call(i,n)){let e=i[n];for(l in e)X.call(e,l)&&!X.call(c,l)&&(c[l]=e[l])}return c}function Br(e,t,n,r){return t?Array.isArray(r)?Vr(e,t,n,r):Hr(e,t,n,r):void 0}function Vr(e,t,n,r){let i=-1,a=[];for(;++i<r.length;){let o=Hr(e,t,n,r[i]);(typeof o==`number`||typeof o==`string`)&&a.push(o)}return a}function Hr(e,t,n,r){if(!(typeof r!=`boolean`&&typeof r!=`number`&&typeof r!=`string`)&&Ur(e,n,r)){if(typeof t==`object`&&t.length>1){let e=!1,n=0;for(;++n<t.length;){let i=t[n];if(i&&typeof i==`object`&&`flags`in i){if(i.test(String(r))){e=!0;break}}else if(i===r){e=!0;break}}if(!e)return}return e.schema.clobber&&e.schema.clobberPrefix&&e.schema.clobber.includes(n)?e.schema.clobberPrefix+r:r}}function Ur(e,t,n){let r=e.schema.protocols&&X.call(e.schema.protocols,t)?e.schema.protocols[t]:void 0;if(!r||r.length===0)return!0;let i=String(n),a=i.indexOf(`:`),o=i.indexOf(`?`),s=i.indexOf(`#`),c=i.indexOf(`/`);if(a<0||c>-1&&a>c||o>-1&&a>o||s>-1&&a>s)return!0;let l=-1;for(;++l<r.length;){let e=r[l];if(a===e.length&&i.slice(0,e.length)===e)return!0}return!1}function Z(e,t){let n=et(t);t.data&&(e.data=K(t.data)),n&&(e.position=n)}function Wr(e,t){let n,r=-1;if(e)for(;++r<e.length;){let i=e[r],a=typeof i==`string`?i:i[0];if(a===t)return i;a===`data*`&&(n=i)}if(t.length>4&&t.slice(0,4).toLowerCase()===`data`)return n}function Gr(e){return function(t){return jr(t,e)}}function Kr(e){he(e,[/\r?\n|\r/g,qr])}function qr(){return{type:`break`}}function Jr(){return function(e){Kr(e)}}function Yr(e){let[t,n]=(0,J.useState)(!1),r=y(e.code,e.language),i=r.language||`text`;async function a(){let t=await f(e.code);if(t.ok){n(!0),window.setTimeout(()=>n(!1),1200);return}console.error(`[notes:code-copy]`,t.error)}return(0,q.jsxs)(`div`,{className:`notes-code-block`,children:[(0,q.jsx)(`div`,{className:`notes-code-header`,children:(0,q.jsx)(`button`,{type:`button`,onClick:()=>void a(),children:t?`Copied`:i})}),(0,q.jsx)(`pre`,{children:(0,q.jsx)(`code`,{className:`hljs language-${i}`,"data-highlighted":r.highlighted?`yes`:`no`,dangerouslySetInnerHTML:{__html:r.html}})})]})}var Xr=100,Zr=null,Q=new Map;async function Qr(){return Zr||=(await i(()=>import(`./mermaid.core-TSG49mwm.js`),__vite__mapDeps([0]))).default,Zr.initialize(c()),Zr}function $r(){return document.documentElement.getAttribute(`data-theme`)??`default`}function ei(e,t){if(Q.set(e,t),Q.size<=Xr)return;let n=Q.keys().next().value;n&&Q.delete(n)}function ti(e){let t=(0,J.useId)().replace(/[^a-zA-Z0-9_-]/g,``),n=(0,J.useMemo)(()=>l(e.code),[e.code]),r=$r(),i=(0,J.useMemo)(()=>`${r}\n${n}`,[n,r]),[c,u]=(0,J.useState)(()=>Q.get(i)??{status:`loading`,sourceKey:i});return(0,J.useEffect)(()=>{let e=!1,r=Q.get(i);if(r)return u(r),()=>{e=!0};async function c(){u(e=>e.status===`ready`&&e.sourceKey===i?e:{status:`loading`,sourceKey:i});try{let r=await Qr(),c=`notes-mermaid-${t}`,l;try{({svg:l}=await r.render(c,n))}catch(e){let t=o(n);if(!t)throw e;({svg:l}=await r.render(`${c}-retry`,t))}if(!e){let e={status:`ready`,sourceKey:i,svg:s(l),wide:a(n)};ei(i,e),u(e)}}catch(t){e||u({status:`error`,sourceKey:i,message:t instanceof Error?t.message:`Mermaid render failed`})}}return c(),()=>{e=!0}},[n,t,i]),c.status===`ready`?(0,q.jsx)(`div`,{className:`notes-mermaid-block is-ready${c.wide?` mermaid-type-wide`:``}`,dangerouslySetInnerHTML:{__html:c.svg}}):c.status===`error`?(0,q.jsxs)(`div`,{className:`notes-mermaid-block is-error`,children:[(0,q.jsx)(`strong`,{children:`Mermaid render failed`}),(0,q.jsx)(`span`,{children:c.message}),(0,q.jsx)(`pre`,{children:(0,q.jsx)(`code`,{children:e.code})})]}):(0,q.jsx)(`div`,{className:`notes-mermaid-block is-loading`,role:`status`,"aria-label":`Diagram loading`,children:`Rendering diagram...`})}function ni(e){return oe(e)}function ri(e,t,n){if(!e)return[e];let r=!!t.notes?.length;if(t.lookup.size===0&&!r)return[e];de.lastIndex=0;let i=[],a=0,o=0,s;for(;(s=de.exec(e))!==null;){let r=s.index,c=r+s[0].length;if(le(e,r))continue;let l=t.lookup.get(s[0])??ie(s[0],t.outgoing,t.notes,r);if(!l)continue;r>a&&i.push(e.slice(a,r));let u=g(l,s[0]),d=`${n}-wl-${o++}`;if(l.status===`resolved`&&l.resolvedPath){let e=l.resolvedPath;i.push((0,J.createElement)(`a`,{key:d,className:`notes-wikilink`,href:`#${encodeURIComponent(e)}`,title:e,"data-notes-wiki-status":l.status,onClick:n=>{n.preventDefault(),t.onNavigate(e)}},u))}else{let e=se(l);i.push((0,J.createElement)(`span`,{key:d,className:`notes-wikilink is-broken`,title:e,"data-notes-wiki-status":l.status,"aria-label":`Broken wikilink: ${s[1]}`},u))}a=c}return a===0?[e]:(a<e.length&&i.push(e.slice(a)),i)}function ii(e,t,n){if(t.lookup.size===0&&!t.notes?.length)return e;let r=[],i=0;return J.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=ri(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}if(typeof e==`number`||typeof e==`boolean`||e==null){r.push(e);return}if((0,J.isValidElement)(e)){r.push(e);return}r.push(e)}),r}var ai=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;function oi(e){let t=ai.exec(e);if(!t)return{frontmatterRaw:null,body:e};let n=t[0];return{frontmatterRaw:n,body:e.slice(n.length)}}function $(e,t){return t?`${e} ${t}`:e}function si(e){let t=0,n=e=>{if(Array.isArray(e)){e.forEach(n);return}(0,J.isValidElement)(e)&&(e.props.node?.tagName===`tr`&&(t=Math.max(t,J.Children.count(e.props.children))),J.Children.forEach(e.props.children,n))};return J.Children.forEach(e,n),Math.max(1,t)}function ci(e){return e<=1?`minmax(0, 1fr)`:e===2?`max-content minmax(16rem, 1fr)`:e===3?`max-content minmax(12rem, .45fr) minmax(18rem, 1fr)`:`max-content repeat(${e-1}, minmax(12rem, 1fr))`}function li(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(li).join(``):(0,J.isValidElement)(e)?li(e.props.children):``}function ui(e){return(0,J.isValidElement)(e)?(e.props.className??``).match(/language-([^\s]+)/)?.[1]??`text`:`text`}var di=e=>{},fi=/(?:~\/[^\s)`\]"'<>]+|\/(?:Users|home|tmp|var|opt|private)\/[^\s)`\]"'<>]+)/g,pi=/[.,!?:;]+$/;function mi(e){return e.startsWith(`~/`)||/^\/(?:Users|home|tmp|var|opt|private)\//.test(e)}function hi(e){let t=e.split(`/`).pop()||e;return/\.\w{1,10}$/.test(t)?t:e}function gi(e,t,n){if(!e||!t)return[e];fi.lastIndex=0;let r=[],i=0,a=0,o;for(;(o=fi.exec(e))!==null;){let s=o[0],c=s.replace(pi,``);if(!mi(c))continue;o.index>i&&r.push(e.slice(i,o.index));let l=s.slice(c.length);r.push((0,J.createElement)(`button`,{key:`${n}-lf-${a++}`,type:`button`,className:`markdown-local-file-link`,title:c,onClick:e=>{e.preventDefault(),t(c)}},hi(c))),l&&r.push(l),i=o.index+s.length}return i===0?[e]:(i<e.length&&r.push(e.slice(i)),r)}function _i(e,t,n){if(!t)return e;let r=[],i=0;return J.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=gi(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}r.push(e)}),r}function vi(e){let t=(0,J.useMemo)(()=>oi(e.markdown).body,[e.markdown]),n=(0,J.useMemo)(()=>({lookup:ni(e.outgoing),outgoing:e.outgoing,notes:e.notes,onNavigate:e.onWikiLinkNavigate??di}),[e.outgoing,e.notes,e.onWikiLinkNavigate]),r=(t,r)=>_i(ii(t,n,r),e.onLocalFileOpen,r),i=e=>t=>{let{children:n,node:i,className:a,id:o,style:s}=t,c=r(n,e);return(0,J.createElement)(e,{className:a,id:o,style:s},c)},a=e=>t=>{let{children:n,node:i,className:a,style:o,align:s}=t,c=r(n,e);return(0,q.jsx)(`span`,{className:$(`markdown-linear-table-cell markdown-linear-table-${e}`,a),style:o,"data-align":s||void 0,children:c})},o={a:({href:e,children:t,node:n,...r})=>{let i=typeof e==`string`&&ue(e)?e:void 0,a=!!(i&&/^https?:\/\//i.test(i));return(0,q.jsx)(`a`,{...r,href:i,target:a?`_blank`:void 0,rel:a?`noreferrer noopener`:void 0,children:t})},code:({className:e,children:t})=>(0,q.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>{let t=ui(e),n=li(e).replace(/\n$/,``);return t===`mermaid`?(0,q.jsx)(ti,{code:n}):(0,q.jsx)(Yr,{code:n,language:t})},img:({src:e,alt:t,...n})=>{let r=typeof e==`string`?ae(e):``;return r?r.endsWith(`.pdf`)?(0,q.jsx)(`iframe`,{src:r,title:t??`PDF embed`,className:`notes-pdf-embed`}):(0,q.jsx)(`img`,{...n,src:r,alt:t??``,loading:`lazy`}):null},p:i(`p`),li:i(`li`),h1:i(`h1`),h2:i(`h2`),h3:i(`h3`),h4:i(`h4`),h5:i(`h5`),h6:i(`h6`),blockquote:i(`blockquote`),td:i(`td`),th:i(`th`),em:i(`em`),strong:i(`strong`),del:i(`del`)};return e.tableMode===`linear`&&(o.table=({children:e,node:t,className:n,style:r})=>{let i={...r,"--markdown-linear-table-grid":ci(si(e))};return(0,q.jsx)(`div`,{className:$(`markdown-linear-table`,n),style:i,role:`list`,children:e})},o.thead=({children:e,node:t,className:n,style:r})=>(0,q.jsx)(`div`,{className:$(`markdown-linear-table-head`,n),style:r,children:e}),o.tbody=({children:e,node:t,className:n,style:r})=>(0,q.jsx)(`div`,{className:$(`markdown-linear-table-body`,n),style:r,children:e}),o.tr=({children:e,node:t,className:n,style:r})=>(0,q.jsx)(`div`,{className:$(`markdown-linear-table-row`,n),style:r,role:`listitem`,children:e}),o.th=a(`th`),o.td=a(`td`)),(0,q.jsx)(On,{skipHtml:!0,urlTransform:fe,remarkPlugins:[ce,Jr,re],rehypePlugins:[[Gr,v],Ar],components:o,children:t})}export{Yr as n,vi as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./MarkdownRenderer-CHacL2M_.js";export{e as MarkdownRenderer};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-gFMgZ0TQ.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-LF7vVVfG.js";import{t as c}from"./fields-zkeByFQW.js";import{t as l}from"./InlineWarn-DDzeHxQw.js";var u=e(t(),1),d=/^[a-zA-Z0-9._-]+$/;function f(e){return typeof e!=`string`||e.length===0||e.length>64?!1:d.test(e)}function p(e){if(!e||typeof e!=`object`)return{servers:{}};let t=e,n=t.servers,r={};if(n&&typeof n==`object`&&!Array.isArray(n))for(let[e,t]of Object.entries(n))r[e]=m(t);return{...t,servers:r}}function m(e){if(!e||typeof e!=`object`)return{};let t=e,n=typeof t.command==`string`&&t.command?t.command:void 0,r=typeof t.url==`string`&&t.url?t.url:void 0,i=Array.isArray(t.args)?t.args.filter(e=>typeof e==`string`):void 0,a=t.env&&typeof t.env==`object`&&!Array.isArray(t.env)?Object.fromEntries(Object.entries(t.env).filter(e=>typeof e[1]==`string`)):void 0,o=t.headers&&typeof t.headers==`object`&&!Array.isArray(t.headers)?Object.fromEntries(Object.entries(t.headers).filter(e=>typeof e[1]==`string`)):void 0,s=typeof t.autostart==`boolean`?t.autostart:void 0,c={};n&&(c.command=n),r&&(c.url=r),i&&i.length>0&&(c.args=i),a&&Object.keys(a).length>0&&(c.env=a),o&&Object.keys(o).length>0&&(c.headers=o),s!==void 0&&(c.autostart=s);for(let[e,n]of Object.entries(t))[`command`,`url`,`args`,`env`,`headers`,`autostart`].includes(e)||(c[e]=n);return c}function h(e=`local`){return e===`remote`?{url:``}:{command:``}}function g(e){return!e||e.length===0?``:e.join(`
|
|
2
2
|
`)}function _(e){if(!e)return[];let t=e.split(/\r?\n|,/),n=[];for(let e of t){let t=e.trim();t.length>0&&n.push(t)}return n}var v=/^[A-Za-z_][A-Za-z0-9_]*$/;function y(e){let t={};if(!e)return t;for(let n of e.split(/\r?\n/)){let e=n.trim();if(e===``||e.startsWith(`#`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(0,r).trim(),a=e.slice(r+1);v.test(i)&&(t[i]=a)}return t}function b(e){return e?Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
|
|
3
3
|
`):``}function x(e,t){if(!f(e))return{kind:`invalid`,reason:`Server name must match [a-zA-Z0-9._-] (1–64 chars).`};let n=t.command&&t.command.trim()!==``,r=t.url&&String(t.url).trim()!==``;return!n&&!r?{kind:`invalid`,reason:`Command or URL is required.`}:{kind:`ok`}}function S(e){if(e.url)return`remote`;if(!e.command)return null;let t=e.command;return t===`npx`||t.endsWith(`/npx`)?`npx`:t===`uvx`||t===`uv`||t.endsWith(`/uvx`)?`uvx`:t===`docker`||t.endsWith(`/docker`)?`docker`:null}function ee(e){return Object.values(e).filter(e=>e.command?e.command===`npx`||e.command===`uv`||e.command===`uvx`:!1).length}function C(e){let t=new Set,n=new Set;for(let r of e){let e=r.toLowerCase();t.has(e)?n.add(e):t.add(e)}return n}function w(e){let t={};for(let[n,r]of Object.entries(e.servers)){let e={};r.command&&(e.command=r.command),r.url&&(e.url=r.url),r.args&&r.args.length>0&&(e.args=[...r.args]),r.env&&Object.keys(r.env).length>0&&(e.env={...r.env}),r.headers&&Object.keys(r.headers).length>0&&(e.headers={...r.headers}),r.autostart!==void 0&&(e.autostart=r.autostart);for(let[t,n]of Object.entries(r))[`command`,`url`,`args`,`env`,`headers`,`autostart`].includes(t)||(e[t]=n);t[n]=e}return{...e,servers:t}}function te(e){let t=1;for(;e.includes(`server-${t}`);)t+=1;return`server-${t}`}var T=n();function ne({name:e,server:t,onRename:n,onChange:r,onRemove:i,nameError:a}){let o=`mcp-${e||`unnamed`}`,s=g(t.args),c=b(t.env),l=b(t.headers),u=S(t),d=u===`remote`;return(0,T.jsxs)(`article`,{className:`mcp-server-card`,"aria-label":`MCP server ${e||`(unnamed)`}`,children:[(0,T.jsxs)(`header`,{className:`mcp-server-card-header`,children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-name`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Server name`}),(0,T.jsx)(`input`,{id:`${o}-name`,type:`text`,value:e,spellCheck:!1,placeholder:`my-server`,"aria-invalid":!!a,onChange:e=>n(e.target.value)}),a?(0,T.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:a}):null]}),(0,T.jsxs)(`div`,{className:`mcp-server-card-actions`,children:[u?(0,T.jsxs)(`span`,{className:`mcp-server-tag`,"data-tag":u,children:[`[`,u,`]`]}):null,(0,T.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:i,"aria-label":`Remove ${e||`server`}`,children:`Remove`})]})]}),d?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-url`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`URL`}),(0,T.jsx)(`input`,{id:`${o}-url`,type:`text`,value:t.url||``,placeholder:`https://mcp.example.com/sse`,spellCheck:!1,onChange:e=>r({...t,url:e.target.value})})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-headers`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Headers (KEY=value per line)`}),(0,T.jsx)(`textarea`,{id:`${o}-headers`,value:l,rows:3,spellCheck:!1,onChange:e=>r({...t,headers:y(e.target.value)})})]})]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-command`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Command`}),(0,T.jsx)(`input`,{id:`${o}-command`,type:`text`,value:t.command||``,placeholder:`npx`,spellCheck:!1,onChange:e=>r({...t,command:e.target.value})})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-args`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Args (one per line, or comma-separated)`}),(0,T.jsx)(`textarea`,{id:`${o}-args`,value:s,rows:3,spellCheck:!1,onChange:e=>r({...t,args:_(e.target.value)})})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-env`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Env (KEY=value per line)`}),(0,T.jsx)(`textarea`,{id:`${o}-env`,value:c,rows:3,spellCheck:!1,onChange:e=>r({...t,env:y(e.target.value)})})]})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-toggle`,htmlFor:`${o}-autostart`,children:[(0,T.jsx)(`input`,{id:`${o}-autostart`,type:`checkbox`,checked:!!t.autostart,onChange:e=>r({...t,autostart:e.target.checked})}),(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Autostart`})]})]})}var E=`mcp.config`;function D({port:e,client:t,dirty:n,registerSave:d}){let{state:f,refresh:m,setData:g}=r(t,`/api/mcp`),[_,v]=(0,u.useState)({servers:{}}),[y,b]=(0,u.useState)([]),[D,ie]=(0,u.useState)(!1),[O,ae]=(0,u.useState)(!0),[k,A]=(0,u.useState)({kind:`idle`}),j=(0,u.useRef)(0),[oe,se]=(0,u.useState)(!1),[M,N]=(0,u.useState)(`active`),[P,F]=(0,u.useState)(`local`),[I,ce]=(0,u.useState)(``),[L,le]=(0,u.useState)(``),[R,ue]=(0,u.useState)(``),[z,de]=(0,u.useState)(``),[B,V]=(0,u.useState)(``),[H,fe]=(0,u.useState)(``),[pe,U]=(0,u.useState)(null),[me,W]=(0,u.useState)(!1),G=(0,u.useMemo)(()=>f.kind===`ready`?p(f.data):{servers:{}},[f]);(0,u.useEffect)(()=>{if(f.kind===`ready`){let e=p(f.data);v(e),b(Object.keys(e.servers))}},[f]),(0,u.useEffect)(()=>()=>{n.remove(E)},[n]);let K=(0,u.useMemo)(()=>Object.keys(_.servers),[_]),q=(0,u.useMemo)(()=>C(K),[K]),he=(0,u.useMemo)(()=>K.map(e=>({name:e,result:x(e,_.servers[e]??h())})),[_,K]).some(e=>e.result.kind===`invalid`),J=q.size>0,ge=!he&&!J&&O,_e=(0,u.useMemo)(()=>ee(_.servers),[_]),Y=(0,u.useCallback)((e,t)=>{n.set(E,{value:w(e),original:w(G),valid:t})},[n,G]),X=(0,u.useCallback)((e,t)=>{v(e),t&&b(t);let n=t??Object.keys(e.servers),r=C(n);Y(e,n.every(t=>x(t,e.servers[t]??h()).kind===`ok`)&&r.size===0&&O)},[O,Y]),ve=(0,u.useCallback)((e,t)=>{if(e===t)return;let n=y.map(n=>n===e?t:n),r={};for(let i of n)i===t?r[i]=_.servers[e]??h():r[i]=_.servers[i]??h();X({..._,servers:r},n)},[_,y,X]),ye=(0,u.useCallback)((e,t)=>{X({..._,servers:{..._.servers,[e]:t}},y)},[_,y,X]),be=(0,u.useCallback)(e=>{let t={..._.servers};delete t[e];let n=y.filter(t=>t!==e);X({..._,servers:t},n)},[_,y,X]);(0,u.useCallback)(()=>{let e=te(y);X({..._,servers:{..._.servers,[e]:h()}},[...y,e])},[_,y,X]);let xe=(0,u.useCallback)((e,t)=>{if(ae(t),!t){Y(_,!1);return}if(e&&typeof e==`object`&&!Array.isArray(e)){let t=p(e);v(t),b(Object.keys(t.servers));let n=C(Object.keys(t.servers));Y(t,Object.entries(t.servers).every(([e,t])=>x(e,t).kind===`ok`)&&n.size===0)}},[_,Y]),Se=(0,u.useCallback)(async()=>{let e=n.saveBundle();if(!(E in e))return;let r=e[E],i=await t.put(`/api/mcp`,r);n.clear();let a=await t.get(`/api/mcp`).catch(()=>i),o=p(a);v(o),b(Object.keys(o.servers)),g(a),await m()},[t,n,m,g]);(0,u.useEffect)(()=>{if(d)return d(Se),()=>d(null)},[d,Se]);let Z=(0,u.useCallback)(async(e,r)=>{if(n.isDirty()&&typeof window<`u`&&!window.confirm(`You have unsaved MCP edits. ${e} will use the on-disk config, not your unsaved changes. Continue?`))return;let i=j.current+1;j.current=i,A({kind:`pending`,label:e});try{let n=await t.post(r,{});if(j.current!==i)return;A({kind:`success`,message:`${e} succeeded${n?.servers?`: ${JSON.stringify(n.servers)}`:``}`})}catch(e){if(j.current!==i)return;A({kind:`error`,message:e instanceof Error?e.message:String(e)})}},[t,n]),Q=(0,u.useCallback)(()=>{ce(``),le(``),ue(``),de(``),V(``),fe(``),U(null),W(!1)},[]),Ce=(0,u.useCallback)(()=>{N(`active`),Q(),se(!0)},[Q]),$=(0,u.useCallback)(()=>{se(!1),Q()},[Q]),we=(0,u.useCallback)(async()=>{let e=I.trim()||te(Object.keys(G.servers)),r=P===`remote`?{url:B.trim(),...H.trim()?{headers:re(H)}:{}}:{command:L.trim(),...R.trim()?{args:R.split(/\r?\n|,/).map(e=>e.trim()).filter(Boolean)}:{},...z.trim()?{env:re(z)}:{}},i=x(e,r);if(i.kind===`invalid`){U(i.reason);return}if(G.servers[e]){U(`Server "${e}" already exists.`);return}W(!0),U(null);try{let i={...G,servers:{...G.servers,[e]:r}};await t.put(`/api/mcp`,w(i)),await t.post(`/api/mcp/sync`,{}),n.clear();let a=await t.get(`/api/mcp`).catch(()=>i),o=p(a);v(o),b(Object.keys(o.servers)),g(a),await m(),$()}catch(e){U(e instanceof Error?e.message:String(e)),W(!1)}},[I,P,B,H,L,R,z,G,t,n,m,g,$]),Te=(0,u.useCallback)(async e=>{let r={...G.servers};delete r[e];let i={...G,servers:r};try{await t.put(`/api/mcp`,w(i)),await t.post(`/api/mcp/sync`,{}),n.clear();let e=await t.get(`/api/mcp`).catch(()=>i),r=p(e);v(r),b(Object.keys(r.servers)),g(e),await m()}catch(e){A({kind:`error`,message:e instanceof Error?e.message:String(e)})}},[G,t,n,m,g]);if(f.kind===`loading`)return(0,T.jsx)(a,{});if(f.kind===`offline`)return(0,T.jsx)(o,{port:e});if(f.kind===`error`)return(0,T.jsx)(s,{message:f.message});let Ee=Array.from(q).sort();return(0,T.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>e.preventDefault(),children:[(0,T.jsxs)(i,{title:`MCP servers`,hint:`Edit each server's command/args/env. Save writes back to mcp.json; Sync pushes the saved config to all CLIs.`,children:[(0,T.jsxs)(`div`,{className:`mcp-servers-list`,children:[y.length===0&&(0,T.jsxs)(`p`,{className:`settings-section-hint`,children:[`No servers configured. Add one or run `,(0,T.jsx)(`code`,{children:`Reset to defaults`}),`.`]}),y.map(e=>{let t=_.servers[e]??h(),n=e.toLowerCase(),r=q.has(n),i=x(e,t);return(0,T.jsx)(ne,{name:e,server:t,onRename:t=>ve(e,t),onChange:t=>ye(e,t),onRemove:()=>be(e),nameError:r?`Duplicate server name (case-insensitive).`:i.kind===`invalid`?i.reason:null},e)})]}),J&&(0,T.jsxs)(l,{role:`alert`,children:[`Duplicate server name`,Ee.length===1?``:`s`,`: `,Ee.join(`, `),`. Saving is blocked until names are unique.`]}),he&&!J&&(0,T.jsx)(l,{role:`alert`,children:`Some servers have errors (missing command/URL or invalid name). Saving is blocked until they are fixed.`})]}),(0,T.jsxs)(i,{title:`Actions`,hint:`These act on the saved config. Save edits first if you want them included.`,children:[(0,T.jsxs)(`div`,{className:`mcp-action-buttons`,children:[(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:Ce,children:`+ Add, Set MCP`}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,disabled:k.kind===`pending`,onClick:()=>void Z(`Sync to all CLIs`,`/api/mcp/sync`),children:`Sync to all CLIs`}),(0,T.jsxs)(`button`,{type:`button`,className:`settings-action`,disabled:k.kind===`pending`||_e===0,onClick:()=>void Z(`Install bundle`,`/api/mcp/install`),children:[`Install bundle (`,_e,`)`]}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,disabled:k.kind===`pending`,onClick:()=>{typeof window<`u`&&!window.confirm(`Reset MCP config to defaults? Your custom servers will be removed.`)||Z(`Reset to defaults`,`/api/mcp/reset`)},children:`Reset to defaults`})]}),k.kind===`pending`&&(0,T.jsxs)(`p`,{className:`settings-section-hint`,role:`status`,children:[k.label,`…`]}),k.kind===`success`&&(0,T.jsx)(`p`,{className:`settings-section-hint`,role:`status`,children:k.message}),k.kind===`error`&&(0,T.jsx)(l,{role:`alert`,children:k.message})]}),(0,T.jsxs)(i,{title:`Advanced (raw JSON)`,hint:`Edit the entire config object. Useful for fields not surfaced in the structured editor.`,children:[(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:()=>ie(e=>!e),"aria-expanded":D,children:D?`Hide raw JSON`:`Show raw JSON`}),D&&(0,T.jsx)(c,{id:`mcp-raw`,label:`mcp.json`,value:w(_),rows:16,onChange:xe}),!ge&&(0,T.jsx)(`p`,{className:`settings-section-hint`,children:`Save is disabled while validation errors are present.`})]}),oe&&(0,T.jsx)(`div`,{className:`mcp-modal-backdrop`,onClick:$,children:(0,T.jsxs)(`div`,{className:`mcp-modal`,role:`dialog`,"aria-modal":`true`,"aria-label":`MCP Server Management`,onClick:e=>e.stopPropagation(),children:[(0,T.jsxs)(`div`,{className:`mcp-modal-tabs`,children:[(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${M===`active`?` is-active`:``}`,onClick:()=>N(`active`),children:`Active Servers`}),(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${M===`add`?` is-active`:``}`,onClick:()=>{N(`add`),Q()},children:`Add New`})]}),(0,T.jsxs)(`div`,{className:`mcp-modal-body`,children:[M===`active`&&(0,T.jsxs)(`div`,{className:`mcp-active-list`,children:[Object.keys(G.servers).length===0&&(0,T.jsx)(`p`,{className:`settings-section-hint`,children:`No active MCP servers.`}),Object.entries(G.servers).map(([e,t])=>{let n=S(t);return(0,T.jsxs)(`div`,{className:`mcp-active-row`,children:[(0,T.jsx)(`span`,{className:`mcp-active-name`,children:e}),(0,T.jsx)(`span`,{className:`mcp-active-detail`,children:t.url||[t.command,...t.args||[]].filter(Boolean).join(` `)}),n&&(0,T.jsxs)(`span`,{className:`mcp-server-tag`,"data-tag":n,children:[`[`,n,`]`]}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard mcp-active-remove`,onClick:()=>void Te(e),children:`Remove`})]},e)})]}),M===`add`&&(0,T.jsxs)(`div`,{className:`mcp-add-form`,children:[(0,T.jsxs)(`div`,{className:`mcp-add-subtabs`,children:[(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${P===`local`?` is-active`:``}`,onClick:()=>F(`local`),children:`Local`}),(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${P===`remote`?` is-active`:``}`,onClick:()=>F(`remote`),children:`Remote`})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Name`}),(0,T.jsx)(`input`,{type:`text`,value:I,placeholder:`my-server`,spellCheck:!1,onChange:e=>ce(e.target.value)})]}),P===`local`?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Command`}),(0,T.jsx)(`input`,{type:`text`,value:L,placeholder:`npx`,spellCheck:!1,onChange:e=>le(e.target.value)})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Args (one per line)`}),(0,T.jsx)(`textarea`,{value:R,rows:3,spellCheck:!1,placeholder:`-y
|
|
4
4
|
@upstash/context7-mcp`,onChange:e=>ue(e.target.value)})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Env (KEY=value per line)`}),(0,T.jsx)(`textarea`,{value:z,rows:2,spellCheck:!1,onChange:e=>de(e.target.value)})]})]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`URL`}),(0,T.jsx)(`input`,{type:`text`,value:B,placeholder:`https://mcp.example.com/sse`,spellCheck:!1,onChange:e=>V(e.target.value)})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Headers (KEY=value per line)`}),(0,T.jsx)(`textarea`,{value:H,rows:2,spellCheck:!1,onChange:e=>fe(e.target.value)})]})]}),pe&&(0,T.jsx)(l,{role:`alert`,children:pe}),(0,T.jsxs)(`div`,{className:`mcp-add-actions`,children:[(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:$,children:`Cancel`}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,disabled:me,onClick:()=>void we(),children:me?`Adding…`:`Add & Sync`})]})]})]}),(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-close`,"aria-label":`Close`,onClick:$,children:`×`})]})})]})}function re(e){let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r).trim()]=e.slice(r+1))}return t}export{D as default};
|