@xopcai/xopc 0.0.6 → 0.0.8
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/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/weixin/src/api/api.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js → agents-BSNzJWbQ.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-B6s2BvpH.js.map → agents-BSNzJWbQ.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js → apps-page-BKk9SB4D.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-BtsZ5ZPx.js.map → apps-page-BKk9SB4D.js.map} +1 -1
- package/dist/gateway/static/root/assets/attachment-load-DXcJLSWT.js +1 -0
- package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js → channels-settings-_J6cQN6G.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-BUfWBEVU.js.map → channels-settings-_J6cQN6G.js.map} +1 -1
- package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js → chat-agents-api-DPb_0O8M.js} +2 -2
- package/dist/gateway/static/root/assets/{chat-agents-api-BR30M2YQ.js.map → chat-agents-api-DPb_0O8M.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js → cron-page-BUJOuuKX.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CMTx0Mjz.js.map → cron-page-BUJOuuKX.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js → cron-utils-Cn0YVg8x.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-utils-BJma9IcD.js.map → cron-utils-Cn0YVg8x.js.map} +1 -1
- package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js +2 -0
- package/dist/gateway/static/root/assets/electron-env-D9bm1FIu.js.map +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js → extension-debug-page-DTz4O5Ua.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-BCVoNSo6.js.map → extension-debug-page-DTz4O5Ua.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js → extension-iframe-host-Cs1Kde9o.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-iframe-host-PWB-Pw2d.js.map → extension-iframe-host-Cs1Kde9o.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js → extension-page-G52iX0Bo.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-D2tTklsD.js.map → extension-page-G52iX0Bo.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js → extension-provider-CO2jxBA9.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-provider-BpHodVRj.js.map → extension-provider-CO2jxBA9.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js → extension-settings-page-D9Ul8uSt.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-BEu6Xw1Z.js.map → extension-settings-page-D9Ul8uSt.js.map} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js → gateway-config-swr-Bc8SVD15.js} +2 -2
- package/dist/gateway/static/root/assets/{gateway-config-swr-C7ZFPhNj.js.map → gateway-config-swr-Bc8SVD15.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-BXUJbteW.js +16 -0
- package/dist/gateway/static/root/assets/index-BXUJbteW.js.map +1 -0
- package/dist/gateway/static/root/assets/index-CQLMxWSA.css +2 -0
- package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js → logs-page-5V25JkQY.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-5V25JkQY.js.map} +1 -1
- package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-he3aQfme.js} +2 -2
- package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js.map → model-selector-he3aQfme.js.map} +1 -1
- package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js +2 -0
- package/dist/gateway/static/root/assets/navigation-DB9S-C6S.js.map +1 -0
- package/dist/gateway/static/root/assets/page-header-store-DJHD9Ean.js +2 -0
- package/dist/gateway/static/root/assets/{page-header-store-HcRZK5CZ.js.map → page-header-store-DJHD9Ean.js.map} +1 -1
- package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js → session-api-n-4O5d9U.js} +2 -2
- package/dist/gateway/static/root/assets/{session-api-DxNaAkmX.js.map → session-api-n-4O5d9U.js.map} +1 -1
- package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js → session-working-directory-control-B6dHLvbr.js} +3 -3
- package/dist/gateway/static/root/assets/{session-working-directory-control-CDH-Wk4E.js.map → session-working-directory-control-B6dHLvbr.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js → sessions-page-rBUfTdm3.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-5PK75r1n.js.map → sessions-page-rBUfTdm3.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js +2 -0
- package/dist/gateway/static/root/assets/settings-page-B3QrJm-E.js.map +1 -0
- package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js → skill-api-vxtE8kI6.js} +2 -2
- package/dist/gateway/static/root/assets/{skill-api-CxbNlOD_.js.map → skill-api-vxtE8kI6.js.map} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js → skills-page-D36_O2Ub.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-Dd8ZzYJb.js.map → skills-page-D36_O2Ub.js.map} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js → theme-store-CmiSsYBd.js} +2 -2
- package/dist/gateway/static/root/assets/{theme-store-CPTH77BE.js.map → theme-store-CmiSsYBd.js.map} +1 -1
- package/dist/gateway/static/root/assets/url-CtSqjF9J.js +2 -0
- package/dist/gateway/static/root/assets/url-CtSqjF9J.js.map +1 -0
- package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js → useTranslation-DYORQ7x6.js} +2 -2
- package/dist/gateway/static/root/assets/{useTranslation-BEUWOMuh.js.map → useTranslation-DYORQ7x6.js.map} +1 -1
- package/dist/gateway/static/root/index.html +16 -16
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +4 -4
- package/dist/src/agent/context/workspace-seed.js +2 -2
- package/dist/src/agent/image/index.d.ts +0 -1
- package/dist/src/agent/image/index.js +1 -2
- package/dist/src/agent/ipc/bus.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +1 -1
- package/dist/src/agent/service.js +3 -3
- package/dist/src/agent/skills/hub-hash.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/tools/browser/tools.js +2 -2
- package/dist/src/agent/tools/browser/tools.js.map +1 -1
- package/dist/src/agent/tools/factory.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +1 -1
- package/dist/src/agent/tools/image-tool.js +2 -2
- package/dist/src/agent/tools/image-tool.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -1
- package/dist/src/agent/tools/index.js +2 -2
- package/dist/src/agent/tools/read.d.ts +0 -2
- package/dist/src/agent/tools/read.js +1 -3
- package/dist/src/agent/tools/read.js.map +1 -1
- package/dist/src/agent/tools/send-media.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/channels/plugin-types.d.ts +14 -0
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/channel-config.js +113 -0
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/channel-plugins.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +47 -0
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/config-health.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/config-health.js +82 -0
- package/dist/src/cli/commands/doctor/checks/config-health.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/cron-health.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/cron-health.js +116 -0
- package/dist/src/cli/commands/doctor/checks/cron-health.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/gateway-health.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +64 -0
- package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/gateway-service.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/gateway-service.js +64 -0
- package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/node-version.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/node-version.js +33 -0
- package/dist/src/cli/commands/doctor/checks/node-version.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/provider-auth.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +91 -0
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/security-audit.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/security-audit.js +85 -0
- package/dist/src/cli/commands/doctor/checks/security-audit.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/session-integrity.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +118 -0
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/state-integrity.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +99 -0
- package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/version-check.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/version-check.js +71 -0
- package/dist/src/cli/commands/doctor/checks/version-check.js.map +1 -0
- package/dist/src/cli/commands/doctor/checks/workspace-status.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +73 -0
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -0
- package/dist/src/cli/commands/doctor/flow.d.ts +9 -0
- package/dist/src/cli/commands/doctor/flow.js +51 -0
- package/dist/src/cli/commands/doctor/flow.js.map +1 -0
- package/dist/src/cli/commands/doctor/format.d.ts +6 -0
- package/dist/src/cli/commands/doctor/format.js +61 -0
- package/dist/src/cli/commands/doctor/format.js.map +1 -0
- package/dist/src/cli/commands/doctor/index.js +44 -0
- package/dist/src/cli/commands/doctor/index.js.map +1 -0
- package/dist/src/cli/commands/doctor/types.d.ts +20 -0
- package/dist/src/cli/commands/doctor/types.js +1 -0
- package/dist/src/cli/commands/init.js +2 -2
- package/dist/src/cli/index.d.ts +1 -1
- package/dist/src/cli/index.js +1 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/utils/init-workspace.js +1 -1
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.d.ts +15 -15
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/profile.js +1 -1
- package/dist/src/config/schema.d.ts +0 -105
- package/dist/src/config/schema.js +3 -40
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/cron/executor.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/launchd.js.map +1 -1
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/daemon/systemd.js.map +1 -1
- package/dist/src/extensions/loader.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/hono/lib/static-ui.js +1 -1
- package/dist/src/gateway/hono/routes/doctor.d.ts +3 -0
- package/dist/src/gateway/hono/routes/doctor.js +35 -0
- package/dist/src/gateway/hono/routes/doctor.js.map +1 -0
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/workspace.js +2 -2
- package/dist/src/gateway/hono/sse.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/ports.js +98 -3
- package/dist/src/gateway/ports.js.map +1 -1
- package/dist/src/gateway/service.d.ts +0 -4
- package/dist/src/gateway/service.js +4 -23
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/routing/bindings.js +1 -1
- package/dist/src/routing/index.d.ts +1 -1
- package/dist/src/routing/index.js +2 -2
- package/dist/src/routing/index.js.map +1 -1
- package/dist/src/routing/resolve-route.js +1 -1
- package/dist/src/routing/session-key.d.ts +0 -5
- package/dist/src/routing/session-key.js +1 -27
- package/dist/src/routing/session-key.js.map +1 -1
- package/dist/src/session/session-title.js +1 -1
- package/dist/src/session/store.js +2 -6
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/types.d.ts +0 -10
- package/dist/src/session/types.js.map +1 -1
- package/package.json +1 -2
- package/dist/gateway/static/root/assets/attachment-load-6pRlDPZ8.js +0 -1
- package/dist/gateway/static/root/assets/index-DBZ5eXW5.js +0 -16
- package/dist/gateway/static/root/assets/index-DBZ5eXW5.js.map +0 -1
- package/dist/gateway/static/root/assets/index-KsVMH-Jo.css +0 -2
- package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js +0 -2
- package/dist/gateway/static/root/assets/navigation-BpLKd2Ca.js.map +0 -1
- package/dist/gateway/static/root/assets/page-header-store-HcRZK5CZ.js +0 -2
- package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js +0 -2
- package/dist/gateway/static/root/assets/preference-select-fields-B4AJBqUY.js.map +0 -1
- package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-BvSj0JqX.js.map +0 -1
- package/dist/gateway/static/root/assets/url-QmwQTJ-j.js +0 -2
- package/dist/gateway/static/root/assets/url-QmwQTJ-j.js.map +0 -1
- package/dist/src/acp/commands.d.ts +0 -11
- package/dist/src/acp/commands.js +0 -17
- package/dist/src/acp/commands.js.map +0 -1
- package/dist/src/acp/control-plane/identity-reconcile.d.ts +0 -36
- package/dist/src/acp/control-plane/identity-reconcile.js +0 -124
- package/dist/src/acp/control-plane/identity-reconcile.js.map +0 -1
- package/dist/src/acp/control-plane/index.d.ts +0 -10
- package/dist/src/acp/control-plane/index.js +0 -6
- package/dist/src/acp/control-plane/manager.d.ts +0 -86
- package/dist/src/acp/control-plane/manager.js +0 -502
- package/dist/src/acp/control-plane/manager.js.map +0 -1
- package/dist/src/acp/control-plane/manager.types.d.ts +0 -125
- package/dist/src/acp/control-plane/manager.types.js +0 -14
- package/dist/src/acp/control-plane/manager.types.js.map +0 -1
- package/dist/src/acp/control-plane/manager.utils.d.ts +0 -29
- package/dist/src/acp/control-plane/manager.utils.js +0 -46
- package/dist/src/acp/control-plane/manager.utils.js.map +0 -1
- package/dist/src/acp/control-plane/runtime-cache-manager.d.ts +0 -49
- package/dist/src/acp/control-plane/runtime-cache-manager.js +0 -155
- package/dist/src/acp/control-plane/runtime-cache-manager.js.map +0 -1
- package/dist/src/acp/control-plane/runtime-cache.d.ts +0 -45
- package/dist/src/acp/control-plane/runtime-cache.js +0 -58
- package/dist/src/acp/control-plane/runtime-cache.js.map +0 -1
- package/dist/src/acp/control-plane/runtime-options.d.ts +0 -30
- package/dist/src/acp/control-plane/runtime-options.js +0 -92
- package/dist/src/acp/control-plane/runtime-options.js.map +0 -1
- package/dist/src/acp/control-plane/session-actor-queue.d.ts +0 -22
- package/dist/src/acp/control-plane/session-actor-queue.js +0 -70
- package/dist/src/acp/control-plane/session-actor-queue.js.map +0 -1
- package/dist/src/acp/control-plane/session-lifecycle-manager.d.ts +0 -59
- package/dist/src/acp/control-plane/session-lifecycle-manager.js +0 -209
- package/dist/src/acp/control-plane/session-lifecycle-manager.js.map +0 -1
- package/dist/src/acp/control-plane/session-store.d.ts +0 -39
- package/dist/src/acp/control-plane/session-store.js +0 -149
- package/dist/src/acp/control-plane/session-store.js.map +0 -1
- package/dist/src/acp/control-plane/turn-manager.d.ts +0 -40
- package/dist/src/acp/control-plane/turn-manager.js +0 -134
- package/dist/src/acp/control-plane/turn-manager.js.map +0 -1
- package/dist/src/acp/event-mapper.d.ts +0 -48
- package/dist/src/acp/event-mapper.js +0 -94
- package/dist/src/acp/event-mapper.js.map +0 -1
- package/dist/src/acp/index.d.ts +0 -10
- package/dist/src/acp/index.js +0 -5
- package/dist/src/acp/meta.d.ts +0 -15
- package/dist/src/acp/meta.js +0 -36
- package/dist/src/acp/meta.js.map +0 -1
- package/dist/src/acp/routing-integration.d.ts +0 -37
- package/dist/src/acp/routing-integration.js +0 -58
- package/dist/src/acp/routing-integration.js.map +0 -1
- package/dist/src/acp/runtime/backends/index.d.ts +0 -4
- package/dist/src/acp/runtime/backends/index.js +0 -2
- package/dist/src/acp/runtime/backends/local.d.ts +0 -136
- package/dist/src/acp/runtime/backends/local.js +0 -603
- package/dist/src/acp/runtime/backends/local.js.map +0 -1
- package/dist/src/acp/runtime/error-text.d.ts +0 -16
- package/dist/src/acp/runtime/error-text.js +0 -40
- package/dist/src/acp/runtime/error-text.js.map +0 -1
- package/dist/src/acp/runtime/errors.d.ts +0 -31
- package/dist/src/acp/runtime/errors.js +0 -47
- package/dist/src/acp/runtime/errors.js.map +0 -1
- package/dist/src/acp/runtime/index.d.ts +0 -7
- package/dist/src/acp/runtime/index.js +0 -4
- package/dist/src/acp/runtime/registry.d.ts +0 -35
- package/dist/src/acp/runtime/registry.js +0 -85
- package/dist/src/acp/runtime/registry.js.map +0 -1
- package/dist/src/acp/runtime/session-identity.d.ts +0 -35
- package/dist/src/acp/runtime/session-identity.js +0 -134
- package/dist/src/acp/runtime/session-identity.js.map +0 -1
- package/dist/src/acp/runtime/types.d.ts +0 -214
- package/dist/src/acp/secret-file.d.ts +0 -7
- package/dist/src/acp/secret-file.js +0 -19
- package/dist/src/acp/secret-file.js.map +0 -1
- package/dist/src/acp/server.d.ts +0 -48
- package/dist/src/acp/server.js +0 -300
- package/dist/src/acp/server.js.map +0 -1
- package/dist/src/acp/session.d.ts +0 -29
- package/dist/src/acp/session.js +0 -30
- package/dist/src/acp/session.js.map +0 -1
- package/dist/src/acp/types.d.ts +0 -39
- package/dist/src/acp/types.js +0 -13
- package/dist/src/acp/types.js.map +0 -1
- package/dist/src/agent/image/describe-images.d.ts +0 -18
- package/dist/src/agent/image/describe-images.js +0 -19
- package/dist/src/agent/image/describe-images.js.map +0 -1
- package/dist/src/cli/commands/acp.d.ts +0 -4
- package/dist/src/cli/commands/acp.js +0 -200
- package/dist/src/cli/commands/acp.js.map +0 -1
- /package/dist/src/{acp/runtime/types.js → cli/commands/doctor/index.d.ts} +0 -0
package/dist/gateway/static/root/assets/{logs-page-BpsxYdcL.js.map → logs-page-5V25JkQY.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs-page-BpsxYdcL.js","names":[],"sources":["../../../../../web/src/features/logs/log-api.ts","../../../../../web/src/features/logs/log.types.ts","../../../../../web/src/features/logs/logs-page.tsx"],"sourcesContent":["import { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport type { LogEntry, LogFile, LogQuery, LogStats } from '@/features/logs/log.types';\n\nfunction buildQueryString(query?: LogQuery): string {\n const params = new URLSearchParams();\n if (!query) return '';\n if (query.level?.length) params.set('level', query.level.join(','));\n if (query.from) params.set('from', query.from);\n if (query.to) params.set('to', query.to);\n if (query.q) params.set('q', query.q);\n if (query.module) params.set('module', query.module);\n if (query.limit != null) params.set('limit', String(query.limit));\n if (query.offset != null) params.set('offset', String(query.offset));\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n}\n\nexport async function queryLogs(query?: LogQuery): Promise<{ logs: LogEntry[]; count: number }> {\n return fetchJson<{ logs: LogEntry[]; count: number }>(apiUrl(`/api/logs${buildQueryString(query)}`));\n}\n\nexport async function getLogFiles(): Promise<LogFile[]> {\n const result = await fetchJson<{ files: LogFile[] }>(apiUrl('/api/logs/files'));\n return result.files ?? [];\n}\n\nexport async function getLogModules(): Promise<string[]> {\n const result = await fetchJson<{ modules: string[] }>(apiUrl('/api/logs/modules'));\n return result.modules ?? [];\n}\n\nexport async function getLogStats(): Promise<LogStats> {\n const raw = await fetchJson<Partial<LogStats>>(apiUrl('/api/logs/stats'));\n return { byLevel: raw.byLevel ?? {} };\n}\n\nexport async function getLogDir(): Promise<string> {\n const result = await fetchJson<{ dir: string }>(apiUrl('/api/logs/dir'));\n return result.dir ?? '';\n}\n","export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';\n\nexport const LOG_LEVELS: LogLevel[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\nexport interface LogEntry {\n timestamp: string;\n level: LogLevel;\n message: string;\n module?: string;\n prefix?: string;\n service?: string;\n extension?: string;\n requestId?: string;\n sessionId?: string;\n userId?: string;\n meta?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface LogQuery {\n level?: string[];\n from?: string;\n to?: string;\n q?: string;\n module?: string;\n limit?: number;\n offset?: number;\n}\n\nexport interface LogFile {\n name: string;\n size: number;\n modified: string;\n}\n\nexport interface LogStats {\n byLevel: Partial<Record<LogLevel | 'silent', number>>;\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n ChevronDown,\n ClipboardCopy,\n FileText,\n Folder,\n ListFilter,\n RefreshCw,\n Search,\n Terminal,\n X,\n} from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { SlidingSegmented } from '@/components/ui/sliding-segmented';\nimport { Button } from '@/components/ui/button';\nimport { bareInputFocusClass, selectControlBaseClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\nimport {\n getLogDir,\n getLogFiles,\n getLogModules,\n getLogStats,\n queryLogs,\n} from '@/features/logs/log-api';\nimport type { LogEntry, LogFile, LogLevel } from '@/features/logs/log.types';\nimport { LOG_LEVELS } from '@/features/logs/log.types';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nconst PAGE_LIMIT = 50;\nconst REFRESH_MS = 5000;\nconst LOG_LEVEL_SET = new Set<LogLevel>(LOG_LEVELS);\n\ntype LevelPreset = 'all' | 'errors' | 'warnPlus' | 'infoPlus' | 'verbose' | 'custom';\ntype LevelSegmentValue = Exclude<LevelPreset, 'custom'> | 'other';\n\nconst PRESET_ERRORS: LogLevel[] = ['error', 'fatal'];\nconst PRESET_WARN_PLUS: LogLevel[] = ['warn', 'error', 'fatal'];\nconst PRESET_INFO_PLUS: LogLevel[] = ['info', 'warn', 'error', 'fatal'];\n\nfunction parseLogLevelsParam(raw: string | null): Set<LogLevel> {\n if (!raw) return new Set<LogLevel>();\n const out = new Set<LogLevel>();\n for (const part of raw.split(',')) {\n const level = part.trim() as LogLevel;\n if (LOG_LEVEL_SET.has(level)) out.add(level);\n }\n return out;\n}\n\nfunction isSameLogLevelSet(a: Set<LogLevel>, b: Set<LogLevel>): boolean {\n if (a.size !== b.size) return false;\n for (const level of a) {\n if (!b.has(level)) return false;\n }\n return true;\n}\n\nfunction setMatchesLevels(s: Set<LogLevel>, levels: readonly LogLevel[]): boolean {\n if (s.size !== levels.length) return false;\n return levels.every((l) => s.has(l));\n}\n\nfunction derivePreset(levels: Set<LogLevel>): LevelPreset {\n if (levels.size === 0) return 'all';\n if (setMatchesLevels(levels, PRESET_ERRORS)) return 'errors';\n if (setMatchesLevels(levels, PRESET_WARN_PLUS)) return 'warnPlus';\n if (setMatchesLevels(levels, PRESET_INFO_PLUS)) return 'infoPlus';\n if (levels.size === LOG_LEVELS.length && LOG_LEVELS.every((l) => levels.has(l))) return 'verbose';\n return 'custom';\n}\n\nfunction segmentValueFromLevels(levels: Set<LogLevel>): LevelSegmentValue {\n const p = derivePreset(levels);\n return p === 'custom' ? 'other' : p;\n}\n\nfunction levelsForPreset(preset: Exclude<LevelPreset, 'custom'>): Set<LogLevel> {\n switch (preset) {\n case 'all':\n return new Set();\n case 'errors':\n return new Set(PRESET_ERRORS);\n case 'warnPlus':\n return new Set(PRESET_WARN_PLUS);\n case 'infoPlus':\n return new Set(PRESET_INFO_PLUS);\n case 'verbose':\n return new Set(LOG_LEVELS);\n }\n}\n\nfunction interpolate(template: string, params: Record<string, string | number>): string {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => String(params[key] ?? ''));\n}\n\nfunction moduleLabel(log: LogEntry): string {\n return String(log.module || log.prefix || log.service || log.extension || '—');\n}\n\nfunction messagePreview(log: LogEntry): string {\n if (typeof log.message === 'string' && log.message) return log.message;\n try {\n return JSON.stringify(log);\n } catch {\n return '';\n }\n}\n\nfunction formatTimeCompact(timestamp: string): string {\n try {\n const date = new Date(timestamp);\n return date.toLocaleTimeString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n } catch {\n return timestamp;\n }\n}\n\nfunction formatTimestampFull(timestamp: string): string {\n try {\n return new Date(timestamp).toLocaleString();\n } catch {\n return timestamp;\n }\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction requestIdPreview(id: string): string {\n const t = id.trim();\n if (t.length <= 10) return t;\n return `${t.slice(0, 8)}…`;\n}\n\nfunction levelLabel(level: string): string {\n return String(level).toLowerCase();\n}\n\nfunction formatStatsLine(\n byLevel: Partial<Record<LogLevel | 'silent', number>>,\n labels: Record<LogLevel, string>,\n): string {\n const parts: string[] = [];\n for (const lv of LOG_LEVELS) {\n const n = byLevel[lv] ?? 0;\n if (n > 0) parts.push(`${labels[lv]} ${n}`);\n }\n return parts.join(' · ');\n}\n\nexport function LogsPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const L = m.logs;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const [searchParams, setSearchParams] = useSearchParams();\n\n const initialSearch = searchParams.get('q') ?? '';\n const initialLevels = parseLogLevelsParam(searchParams.get('level'));\n const initialModule = searchParams.get('module') ?? '';\n const initialFrom = searchParams.get('from') ?? '';\n const initialTo = searchParams.get('to') ?? '';\n const initialAutoRefresh = searchParams.get('live') === '1';\n\n const [logs, setLogs] = useState<LogEntry[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [hasMore, setHasMore] = useState(false);\n\n const [searchInput, setSearchInput] = useState(initialSearch);\n const [debouncedSearch, setDebouncedSearch] = useState(initialSearch.trim());\n const [selectedLevels, setSelectedLevels] = useState<Set<LogLevel>>(initialLevels);\n const [moduleFilter, setModuleFilter] = useState(initialModule);\n const [dateFrom, setDateFrom] = useState(initialFrom);\n const [dateTo, setDateTo] = useState(initialTo);\n\n const [modules, setModules] = useState<string[]>([]);\n const [files, setFiles] = useState<LogFile[]>([]);\n const [stats, setStats] = useState<Awaited<ReturnType<typeof getLogStats>> | null>(null);\n\n const [selectedLog, setSelectedLog] = useState<LogEntry | null>(null);\n const [filesOpen, setFilesOpen] = useState(false);\n const [filtersOpen, setFiltersOpen] = useState(false);\n const [logDir, setLogDir] = useState<string | null>(null);\n const [autoRefresh, setAutoRefresh] = useState(initialAutoRefresh);\n const [copiedDetail, setCopiedDetail] = useState<'json' | 'message' | null>(null);\n\n const levelSegment = useMemo(() => segmentValueFromLevels(selectedLevels), [selectedLevels]);\n\n const hasActiveFilters =\n debouncedSearch.length > 0 ||\n selectedLevels.size > 0 ||\n Boolean(moduleFilter) ||\n Boolean(dateFrom) ||\n Boolean(dateTo);\n\n const activeFilterCount =\n (debouncedSearch.length > 0 ? 1 : 0) +\n (selectedLevels.size > 0 ? 1 : 0) +\n (moduleFilter ? 1 : 0) +\n (dateFrom || dateTo ? 1 : 0);\n\n useEffect(() => {\n const t = setTimeout(() => setDebouncedSearch(searchInput.trim()), 300);\n return () => clearTimeout(t);\n }, [searchInput]);\n\n useEffect(() => {\n const nextQ = searchParams.get('q') ?? '';\n const nextModule = searchParams.get('module') ?? '';\n const nextFrom = searchParams.get('from') ?? '';\n const nextTo = searchParams.get('to') ?? '';\n const nextAutoRefresh = searchParams.get('live') === '1';\n const nextLevels = parseLogLevelsParam(searchParams.get('level'));\n const nextDebouncedQ = nextQ.trim();\n\n setSearchInput((prev) => (prev === nextQ ? prev : nextQ));\n setDebouncedSearch((prev) => (prev === nextDebouncedQ ? prev : nextDebouncedQ));\n setSelectedLevels((prev) => (isSameLogLevelSet(nextLevels, prev) ? prev : nextLevels));\n setModuleFilter((prev) => (prev === nextModule ? prev : nextModule));\n setDateFrom((prev) => (prev === nextFrom ? prev : nextFrom));\n setDateTo((prev) => (prev === nextTo ? prev : nextTo));\n setAutoRefresh((prev) => (prev === nextAutoRefresh ? prev : nextAutoRefresh));\n }, [searchParams]);\n\n useEffect(() => {\n const params = new URLSearchParams(searchParams);\n const nextQ = debouncedSearch.trim();\n if (nextQ) params.set('q', nextQ);\n else params.delete('q');\n\n if (selectedLevels.size > 0) {\n params.set('level', Array.from(selectedLevels).sort().join(','));\n } else {\n params.delete('level');\n }\n\n if (moduleFilter) params.set('module', moduleFilter);\n else params.delete('module');\n if (dateFrom) params.set('from', dateFrom);\n else params.delete('from');\n if (dateTo) params.set('to', dateTo);\n else params.delete('to');\n if (autoRefresh) params.set('live', '1');\n else params.delete('live');\n\n const next = params.toString();\n if (next !== searchParams.toString()) {\n setSearchParams(params, { replace: true });\n }\n }, [\n autoRefresh,\n dateFrom,\n dateTo,\n debouncedSearch,\n moduleFilter,\n searchParams,\n selectedLevels,\n setSearchParams,\n ]);\n\n const queryParams = useMemo(\n () => ({\n q: debouncedSearch || undefined,\n level: selectedLevels.size > 0 ? Array.from(selectedLevels) : undefined,\n module: moduleFilter || undefined,\n from: dateFrom || undefined,\n to: dateTo || undefined,\n limit: PAGE_LIMIT,\n }),\n [debouncedSearch, selectedLevels, moduleFilter, dateFrom, dateTo],\n );\n\n useEffect(() => {\n if (!hasToken) return;\n let cancelled = false;\n (async () => {\n setLoading(true);\n setError(null);\n setLogs([]);\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n if (cancelled) return;\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n } catch (e) {\n if (!cancelled) {\n setError(e instanceof Error ? e.message : L.loadError);\n setLogs([]);\n setHasMore(false);\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken, queryParams, L.loadError]);\n\n useEffect(() => {\n if (!hasToken) return;\n let cancelled = false;\n (async () => {\n try {\n const [mods, st, fileList] = await Promise.all([getLogModules(), getLogStats(), getLogFiles()]);\n if (!cancelled) {\n setModules(mods);\n setStats(st);\n setFiles(fileList);\n }\n } catch {\n /* optional */\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken]);\n\n useEffect(() => {\n if (!hasToken || !filesOpen) return;\n let cancelled = false;\n (async () => {\n try {\n const [list, dir] = await Promise.all([getLogFiles(), getLogDir()]);\n if (!cancelled) {\n setFiles(list);\n setLogDir(dir);\n }\n } catch {\n if (!cancelled) setFiles([]);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken, filesOpen]);\n\n useEffect(() => {\n if (!autoRefresh || !hasToken) return;\n const id = window.setInterval(() => {\n void (async () => {\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n const st = await getLogStats();\n setStats(st);\n } catch {\n /* ignore */\n }\n })();\n }, REFRESH_MS);\n return () => clearInterval(id);\n }, [autoRefresh, hasToken, queryParams]);\n\n useEffect(() => {\n if (!copiedDetail) return;\n const t = window.setTimeout(() => setCopiedDetail(null), 2000);\n return () => clearTimeout(t);\n }, [copiedDetail]);\n\n const clearFilters = () => {\n setSearchInput('');\n setDebouncedSearch('');\n setSelectedLevels(new Set());\n setModuleFilter('');\n setDateFrom('');\n setDateTo('');\n };\n\n const handleLevelSegment = (value: LevelSegmentValue) => {\n if (value === 'other') {\n setFiltersOpen(true);\n return;\n }\n setSelectedLevels(levelsForPreset(value));\n };\n\n const toggleDialogLevel = (level: LogLevel) => {\n setSelectedLevels((prev) => {\n const next = new Set(prev);\n if (next.has(level)) next.delete(level);\n else next.add(level);\n return next;\n });\n };\n\n const handleLoadMore = () => {\n if (loading || !hasMore) return;\n void (async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await queryLogs({ ...queryParams, offset: logs.length });\n setLogs((prev) => [...prev, ...result.logs]);\n setHasMore(result.logs.length === PAGE_LIMIT);\n } catch (e) {\n setError(e instanceof Error ? e.message : L.loadError);\n } finally {\n setLoading(false);\n }\n })();\n };\n\n const refreshAll = () => {\n void (async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n const [st, fileList] = await Promise.all([getLogStats(), getLogFiles()]);\n setStats(st);\n setFiles(fileList);\n } catch (e) {\n setError(e instanceof Error ? e.message : L.loadError);\n } finally {\n setLoading(false);\n }\n })();\n };\n\n const statsLine = stats ? formatStatsLine(stats.byLevel ?? {}, L.levelNames) : '';\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <div className=\"flex items-start gap-3 rounded-2xl border border-edge-subtle bg-surface-base p-6 dark:border-edge\">\n <Terminal className=\"mt-0.5 size-5 shrink-0 text-fg-subtle\" strokeWidth={1.75} aria-hidden />\n <div>\n <h1 className=\"text-base font-semibold tracking-tight text-fg\">{L.title}</h1>\n <p className=\"mt-1 text-sm leading-relaxed text-fg-muted\">{L.needToken}</p>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6\">\n <header className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <div\n className=\"flex size-10 shrink-0 items-center justify-center rounded-xl border border-edge-subtle bg-surface-base dark:border-edge\"\n aria-hidden\n >\n <Terminal className=\"size-5 text-fg-muted\" strokeWidth={1.75} />\n </div>\n <div className=\"min-w-0\">\n <h1 className=\"text-xl font-semibold tracking-tight text-fg\">{L.title}</h1>\n <p className=\"mt-0.5 text-sm leading-relaxed text-fg-muted\">{L.subtitle}</p>\n </div>\n </div>\n <div className=\"flex w-full shrink-0 flex-col gap-2 sm:w-auto sm:max-w-md sm:flex-row sm:items-center sm:justify-end\">\n <div className=\"w-full sm:w-48\">\n <SlidingSegmented\n aria-label={L.refreshModeAria}\n value={autoRefresh ? 'live' : 'paused'}\n onChange={(v) => setAutoRefresh(v === 'live')}\n options={[\n { value: 'paused', label: L.refreshManual },\n { value: 'live', label: L.refreshLive },\n ]}\n buttonClassName=\"h-8\"\n />\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-center\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0\"\n title={L.logFiles}\n aria-label={L.logFiles}\n onClick={() => setFilesOpen(true)}\n >\n <Folder className=\"size-4\" strokeWidth={1.75} />\n {files.length > 0 ? (\n <span className=\"rounded-full bg-surface-hover px-1.5 text-xs text-fg-muted\">{files.length}</span>\n ) : null}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0\"\n title={L.refresh}\n aria-label={L.refresh}\n onClick={refreshAll}\n >\n <RefreshCw\n className={cn(\n 'size-4 transition-transform duration-150 ease-out motion-reduce:transition-none',\n loading && 'animate-spin motion-reduce:animate-none',\n )}\n strokeWidth={1.75}\n />\n </Button>\n </div>\n </div>\n </header>\n\n {error ? (\n <div\n className=\"rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg dark:border-edge\"\n role=\"alert\"\n >\n {error}\n </div>\n ) : null}\n\n {stats && statsLine ? (\n <div className=\"flex flex-wrap items-center gap-2\">\n <Popover.Root>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className=\"max-w-full truncate rounded-lg border border-transparent px-1 py-0.5 text-left text-xs leading-5 text-fg-subtle transition-colors duration-150 ease-out hover:border-edge-subtle hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel dark:hover:border-edge\"\n >\n <span className=\"font-medium text-fg-muted\">{L.statsRegion}</span>\n <span className=\"mx-1.5 text-fg-subtle\">·</span>\n <span className=\"tabular-nums\">{statsLine}</span>\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={6}\n className={cn(\n 'z-50 w-[min(calc(100vw-2rem),20rem)] rounded-xl border border-edge bg-surface-panel p-3 shadow-popover outline-none',\n 'dark:border-edge',\n )}\n >\n <p className=\"text-xs font-medium text-fg\">{L.statsDetailTitle}</p>\n <p className=\"mt-1 text-xs leading-5 text-fg-muted\">{L.statsHint}</p>\n <ul className=\"mt-3 flex flex-col gap-1.5\" role=\"list\">\n {LOG_LEVELS.map((lv) => {\n const n = stats.byLevel?.[lv] ?? 0;\n if (n === 0) return null;\n return (\n <li\n key={lv}\n className=\"flex items-center justify-between gap-2 rounded-md border border-edge-subtle bg-surface-base px-2 py-1 text-xs dark:border-edge\"\n >\n <span className=\"font-medium capitalize text-fg\">{L.levelNames[lv]}</span>\n <span className=\"tabular-nums text-fg-muted\">{n}</span>\n </li>\n );\n })}\n </ul>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n ) : null}\n\n <section className=\"flex flex-col gap-3\" aria-label={L.filters}>\n <div className=\"overflow-x-auto pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">\n <div className=\"min-w-[min(100%,36rem)]\">\n <SlidingSegmented<LevelSegmentValue>\n aria-label={L.levelPresetAria}\n value={levelSegment}\n onChange={handleLevelSegment}\n options={[\n { value: 'all', label: L.presetAll },\n { value: 'errors', label: L.presetErrors },\n { value: 'warnPlus', label: L.presetWarnPlus },\n { value: 'infoPlus', label: L.presetInfoPlus },\n { value: 'verbose', label: L.presetVerbose },\n { value: 'other', label: L.presetOther },\n ]}\n buttonClassName=\"h-8 px-1.5 text-[11px] sm:px-2 sm:text-xs\"\n />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center\">\n <label className=\"relative min-w-0 flex-1 sm:min-w-[12rem]\">\n <span className=\"sr-only\">{L.searchPlaceholder}</span>\n <Search\n className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle\"\n strokeWidth={1.75}\n aria-hidden\n />\n <input\n type=\"search\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n placeholder={L.searchPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n className={cn(\n 'h-10 w-full rounded-md border border-edge bg-surface-panel py-0 pl-10 pr-3 text-sm leading-5 text-fg placeholder:text-fg-subtle dark:border-edge',\n bareInputFocusClass,\n )}\n />\n </label>\n\n <select\n id=\"log-module\"\n value={moduleFilter}\n onChange={(e) => setModuleFilter(e.target.value)}\n aria-label={L.module}\n title={L.module}\n className={cn(\n selectControlBaseClass,\n 'h-10 w-full min-w-0 rounded-md py-0 sm:w-[min(100%,14rem)] sm:shrink-0',\n )}\n >\n <option value=\"\">{L.allModules}</option>\n {modules.map((mod) => (\n <option key={mod} value={mod}>\n {mod}\n </option>\n ))}\n </select>\n\n <div className=\"flex min-w-0 shrink-0 items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-10 min-h-[44px] gap-2 rounded-md sm:min-h-10\"\n onClick={() => setFiltersOpen(true)}\n >\n <ListFilter className=\"size-4\" strokeWidth={1.75} />\n {L.filtersMore}\n {activeFilterCount > 0 ? (\n <span className=\"rounded-md bg-surface-hover px-1.5 text-xs tabular-nums text-fg-muted\">\n {activeFilterCount}\n </span>\n ) : null}\n </Button>\n {hasActiveFilters ? (\n <Button type=\"button\" variant=\"ghost\" className=\"h-10 min-h-[44px] gap-1 sm:min-h-10\" onClick={clearFilters}>\n <X className=\"size-4\" strokeWidth={1.75} />\n {L.clear}\n </Button>\n ) : null}\n </div>\n </div>\n\n {autoRefresh ? <p className=\"text-xs leading-5 text-fg-subtle\">{L.liveHint}</p> : null}\n </section>\n\n {loading && logs.length === 0 ? (\n <div\n className=\"divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel dark:divide-edge dark:border-edge\"\n aria-busy=\"true\"\n >\n {Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"flex gap-3 px-3 py-2.5\">\n <div className=\"h-4 w-16 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 w-12 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 w-20 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 min-w-0 flex-1 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n </div>\n ))}\n </div>\n ) : null}\n\n {!loading && logs.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center gap-2 rounded-xl border border-edge-subtle bg-surface-base py-16 text-center dark:border-edge\">\n <FileText className=\"size-12 text-fg-subtle\" strokeWidth={1.5} aria-hidden />\n <h2 className=\"text-base font-semibold tracking-tight text-fg\">{L.noLogs}</h2>\n <p className=\"max-w-sm text-sm leading-relaxed text-fg-muted\">{L.noLogsDescription}</p>\n <Button type=\"button\" variant=\"secondary\" className=\"mt-4 gap-2\" onClick={refreshAll}>\n <RefreshCw className=\"size-4\" strokeWidth={1.75} />\n {L.refresh}\n </Button>\n </div>\n ) : null}\n\n {logs.length > 0 ? (\n <div className=\"flex flex-col gap-2\">\n <p className=\"text-xs leading-5 text-fg-muted\">\n {interpolate(L.showingCount, { count: String(logs.length) })}\n {hasMore ? <span className=\"text-fg-subtle\"> · {L.moreAvailable}</span> : null}\n </p>\n <ul\n className=\"divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel font-mono text-sm leading-6 dark:divide-edge dark:border-edge\"\n role=\"list\"\n >\n {logs.map((log, idx) => {\n const lv = log.level ?? 'info';\n const rid = typeof log.requestId === 'string' ? log.requestId.trim() : '';\n return (\n <li key={`${log.timestamp}-${idx}`}>\n <button\n type=\"button\"\n onClick={() => setSelectedLog(log)}\n className={cn(\n 'flex w-full min-w-0 items-center gap-3 px-3 py-2.5 text-left transition-colors duration-150 ease-out',\n 'hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n >\n <span className=\"w-[5.25rem] shrink-0 tabular-nums text-fg-subtle\">\n {formatTimeCompact(log.timestamp)}\n </span>\n <span className=\"w-[4.5rem] shrink-0 truncate text-fg-muted\" title={lv}>\n {levelLabel(lv)}\n </span>\n <span\n className=\"w-[4.5rem] shrink-0 truncate text-fg-subtle sm:w-[5.25rem]\"\n title={rid ? `${L.requestId}: ${rid}` : undefined}\n >\n {rid ? requestIdPreview(rid) : '—'}\n </span>\n <span\n className=\"hidden max-w-[7rem] shrink-0 truncate text-fg-muted lg:inline\"\n title={moduleLabel(log)}\n >\n {moduleLabel(log)}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-fg\">{messagePreview(log)}</span>\n </button>\n </li>\n );\n })}\n </ul>\n {hasMore ? (\n <div className=\"flex justify-center pt-1\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"gap-2\"\n disabled={loading}\n onClick={handleLoadMore}\n >\n {loading ? (\n <RefreshCw className=\"size-4 animate-spin motion-reduce:animate-none\" strokeWidth={1.75} />\n ) : (\n <ChevronDown className=\"size-4\" strokeWidth={1.75} />\n )}\n {L.loadMore}\n </Button>\n </div>\n ) : null}\n </div>\n ) : null}\n\n <Dialog.Root open={filtersOpen} onOpenChange={setFiltersOpen}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,90vh)] w-[min(100%-2rem,22rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby=\"log-filters-desc\"\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold tracking-tight text-fg\">{L.filtersDialogTitle}</Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div id=\"log-filters-desc\" className=\"sr-only\">\n {L.filtersDialogDesc}\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4\">\n <p className=\"text-xs font-medium text-fg-muted\">{L.timeRange}</p>\n <div className=\"mt-2 flex flex-col gap-3\">\n <div>\n <label htmlFor=\"log-from-d\" className=\"mb-1 block text-xs text-fg-muted\">\n {L.from}\n </label>\n <input\n id=\"log-from-d\"\n type=\"datetime-local\"\n value={dateFrom}\n onChange={(e) => setDateFrom(e.target.value)}\n className=\"w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge\"\n />\n </div>\n <div>\n <label htmlFor=\"log-to-d\" className=\"mb-1 block text-xs text-fg-muted\">\n {L.to}\n </label>\n <input\n id=\"log-to-d\"\n type=\"datetime-local\"\n value={dateTo}\n onChange={(e) => setDateTo(e.target.value)}\n className=\"w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge\"\n />\n </div>\n </div>\n <p className=\"mt-6 text-xs font-medium text-fg-muted\">{L.levelCustom}</p>\n <p className=\"mt-1 text-xs leading-5 text-fg-subtle\">{L.levelCustomHint}</p>\n <div className=\"mt-3 flex flex-wrap gap-2\" role=\"group\" aria-label={L.level}>\n {LOG_LEVELS.map((level) => {\n const active = selectedLevels.has(level);\n return (\n <button\n key={level}\n type=\"button\"\n className={cn(\n 'rounded-full border px-3 py-1.5 text-xs font-medium capitalize transition-[color,background-color,border-color] duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n active\n ? 'border-edge bg-surface-active text-fg dark:border-edge'\n : 'border-edge-subtle bg-surface-base text-fg-muted hover:bg-surface-hover dark:border-edge',\n )}\n onClick={() => toggleDialogLevel(level)}\n >\n {L.levelNames[level]}\n </button>\n );\n })}\n </div>\n </div>\n <div className=\"shrink-0 border-t border-edge-subtle px-4 py-3 dark:border-edge\">\n <Button type=\"button\" className=\"w-full rounded-xl\" onClick={() => setFiltersOpen(false)}>\n {L.filtersDone}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <Dialog.Root open={selectedLog !== null} onOpenChange={(o) => !o && setSelectedLog(null)}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-drawer-right fixed right-0 top-0 z-50 flex h-full w-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby={undefined}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold tracking-tight text-fg\">{L.details}</Dialog.Title>\n <div className=\"flex min-w-0 items-center gap-1\">\n {selectedLog ? (\n <>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 shrink-0 gap-1 px-2 text-xs\"\n onClick={() => {\n const text = typeof selectedLog.message === 'string' ? selectedLog.message : '';\n void navigator.clipboard.writeText(text).then(() => setCopiedDetail('message'));\n }}\n >\n <ClipboardCopy className=\"size-3.5 shrink-0\" strokeWidth={1.75} />\n <span className=\"hidden sm:inline\">{copiedDetail === 'message' ? L.copied : L.copyMessage}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 shrink-0 gap-1 px-2 text-xs\"\n onClick={() => {\n void navigator.clipboard\n .writeText(JSON.stringify(selectedLog, null, 2))\n .then(() => setCopiedDetail('json'));\n }}\n >\n <ClipboardCopy className=\"size-3.5 shrink-0\" strokeWidth={1.75} />\n <span className=\"hidden sm:inline\">{copiedDetail === 'json' ? L.copied : L.copyJson}</span>\n </Button>\n </>\n ) : null}\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4 font-mono text-sm leading-relaxed\">\n {selectedLog ? (\n <LogDetailBody\n log={selectedLog}\n labels={{\n time: L.time,\n level: L.level,\n module: L.module,\n message: L.message,\n metadata: L.metadata,\n requestId: L.requestId,\n sessionId: L.sessionId,\n }}\n />\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <Dialog.Root open={filesOpen} onOpenChange={setFilesOpen}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,85vh)] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"flex items-center gap-2 text-base font-semibold tracking-tight text-fg\">\n <Folder className=\"size-4 text-fg-muted\" strokeWidth={1.75} />\n {L.logFiles}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n {files.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{L.filesEmpty}</p>\n ) : (\n <ul className=\"flex flex-col gap-2\" role=\"list\">\n {files.map((f) => (\n <li\n key={f.name}\n className=\"flex flex-col gap-1 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 dark:border-edge\"\n >\n <span className=\"break-all font-mono text-xs text-fg\">{f.name}</span>\n <span className=\"flex flex-wrap gap-x-2 text-xs text-fg-subtle\">\n <span>{formatFileSize(f.size)}</span>\n <span>{formatTimestampFull(f.modified)}</span>\n </span>\n </li>\n ))}\n </ul>\n )}\n </div>\n {logDir ? (\n <div className=\"shrink-0 border-t border-edge-subtle px-4 py-2 text-xs text-fg-subtle dark:border-edge\">\n <span className=\"font-medium text-fg-muted\">{L.logDir}: </span>\n <code className=\"break-all text-fg-subtle\">{logDir}</code>\n </div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n </div>\n );\n}\n\nfunction LogDetailBody({\n log,\n labels,\n}: {\n log: LogEntry;\n labels: {\n time: string;\n level: string;\n module: string;\n message: string;\n metadata: string;\n requestId: string;\n sessionId: string;\n };\n}) {\n const lv = log.level ?? 'info';\n const rid = typeof log.requestId === 'string' ? log.requestId : '';\n const sid = typeof log.sessionId === 'string' ? log.sessionId : '';\n return (\n <div className=\"flex flex-col gap-8\">\n <div>\n <span className=\"text-xs font-sans font-medium text-fg-muted\">{labels.message}</span>\n <pre className=\"mt-2 whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge\">\n {log.message || '—'}\n </pre>\n </div>\n <div className=\"grid grid-cols-[5.5rem_1fr] gap-x-3 gap-y-2 text-xs\">\n <span className=\"font-sans text-fg-muted\">{labels.time}</span>\n <code className=\"break-all text-fg\">{log.timestamp}</code>\n <span className=\"font-sans text-fg-muted\">{labels.level}</span>\n <span className=\"text-fg\">{levelLabel(lv)}</span>\n <span className=\"font-sans text-fg-muted\">{labels.module}</span>\n <code className=\"break-all text-fg\">{moduleLabel(log)}</code>\n {rid ? (\n <>\n <span className=\"font-sans text-fg-muted\">{labels.requestId}</span>\n <code className=\"break-all text-fg\">{rid}</code>\n </>\n ) : null}\n {sid ? (\n <>\n <span className=\"font-sans text-fg-muted\">{labels.sessionId}</span>\n <code className=\"break-all text-fg\">{sid}</code>\n </>\n ) : null}\n </div>\n {log.meta && Object.keys(log.meta).length > 0 ? (\n <div>\n <span className=\"text-xs font-sans font-medium text-fg-muted\">{labels.metadata}</span>\n <pre className=\"mt-2 overflow-x-auto whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge\">\n {JSON.stringify(log.meta, null, 2)}\n </pre>\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs-page-5V25JkQY.js","names":[],"sources":["../../../../../web/src/features/logs/log-api.ts","../../../../../web/src/features/logs/log.types.ts","../../../../../web/src/features/logs/logs-page.tsx"],"sourcesContent":["import { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport type { LogEntry, LogFile, LogQuery, LogStats } from '@/features/logs/log.types';\n\nfunction buildQueryString(query?: LogQuery): string {\n const params = new URLSearchParams();\n if (!query) return '';\n if (query.level?.length) params.set('level', query.level.join(','));\n if (query.from) params.set('from', query.from);\n if (query.to) params.set('to', query.to);\n if (query.q) params.set('q', query.q);\n if (query.module) params.set('module', query.module);\n if (query.limit != null) params.set('limit', String(query.limit));\n if (query.offset != null) params.set('offset', String(query.offset));\n const qs = params.toString();\n return qs ? `?${qs}` : '';\n}\n\nexport async function queryLogs(query?: LogQuery): Promise<{ logs: LogEntry[]; count: number }> {\n return fetchJson<{ logs: LogEntry[]; count: number }>(apiUrl(`/api/logs${buildQueryString(query)}`));\n}\n\nexport async function getLogFiles(): Promise<LogFile[]> {\n const result = await fetchJson<{ files: LogFile[] }>(apiUrl('/api/logs/files'));\n return result.files ?? [];\n}\n\nexport async function getLogModules(): Promise<string[]> {\n const result = await fetchJson<{ modules: string[] }>(apiUrl('/api/logs/modules'));\n return result.modules ?? [];\n}\n\nexport async function getLogStats(): Promise<LogStats> {\n const raw = await fetchJson<Partial<LogStats>>(apiUrl('/api/logs/stats'));\n return { byLevel: raw.byLevel ?? {} };\n}\n\nexport async function getLogDir(): Promise<string> {\n const result = await fetchJson<{ dir: string }>(apiUrl('/api/logs/dir'));\n return result.dir ?? '';\n}\n","export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';\n\nexport const LOG_LEVELS: LogLevel[] = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\nexport interface LogEntry {\n timestamp: string;\n level: LogLevel;\n message: string;\n module?: string;\n prefix?: string;\n service?: string;\n extension?: string;\n requestId?: string;\n sessionId?: string;\n userId?: string;\n meta?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\nexport interface LogQuery {\n level?: string[];\n from?: string;\n to?: string;\n q?: string;\n module?: string;\n limit?: number;\n offset?: number;\n}\n\nexport interface LogFile {\n name: string;\n size: number;\n modified: string;\n}\n\nexport interface LogStats {\n byLevel: Partial<Record<LogLevel | 'silent', number>>;\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n ChevronDown,\n ClipboardCopy,\n FileText,\n Folder,\n ListFilter,\n RefreshCw,\n Search,\n Terminal,\n X,\n} from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\n\nimport { SlidingSegmented } from '@/components/ui/sliding-segmented';\nimport { Button } from '@/components/ui/button';\nimport { bareInputFocusClass, selectControlBaseClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\nimport {\n getLogDir,\n getLogFiles,\n getLogModules,\n getLogStats,\n queryLogs,\n} from '@/features/logs/log-api';\nimport type { LogEntry, LogFile, LogLevel } from '@/features/logs/log.types';\nimport { LOG_LEVELS } from '@/features/logs/log.types';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nconst PAGE_LIMIT = 50;\nconst REFRESH_MS = 5000;\nconst LOG_LEVEL_SET = new Set<LogLevel>(LOG_LEVELS);\n\ntype LevelPreset = 'all' | 'errors' | 'warnPlus' | 'infoPlus' | 'verbose' | 'custom';\ntype LevelSegmentValue = Exclude<LevelPreset, 'custom'> | 'other';\n\nconst PRESET_ERRORS: LogLevel[] = ['error', 'fatal'];\nconst PRESET_WARN_PLUS: LogLevel[] = ['warn', 'error', 'fatal'];\nconst PRESET_INFO_PLUS: LogLevel[] = ['info', 'warn', 'error', 'fatal'];\n\nfunction parseLogLevelsParam(raw: string | null): Set<LogLevel> {\n if (!raw) return new Set<LogLevel>();\n const out = new Set<LogLevel>();\n for (const part of raw.split(',')) {\n const level = part.trim() as LogLevel;\n if (LOG_LEVEL_SET.has(level)) out.add(level);\n }\n return out;\n}\n\nfunction isSameLogLevelSet(a: Set<LogLevel>, b: Set<LogLevel>): boolean {\n if (a.size !== b.size) return false;\n for (const level of a) {\n if (!b.has(level)) return false;\n }\n return true;\n}\n\nfunction setMatchesLevels(s: Set<LogLevel>, levels: readonly LogLevel[]): boolean {\n if (s.size !== levels.length) return false;\n return levels.every((l) => s.has(l));\n}\n\nfunction derivePreset(levels: Set<LogLevel>): LevelPreset {\n if (levels.size === 0) return 'all';\n if (setMatchesLevels(levels, PRESET_ERRORS)) return 'errors';\n if (setMatchesLevels(levels, PRESET_WARN_PLUS)) return 'warnPlus';\n if (setMatchesLevels(levels, PRESET_INFO_PLUS)) return 'infoPlus';\n if (levels.size === LOG_LEVELS.length && LOG_LEVELS.every((l) => levels.has(l))) return 'verbose';\n return 'custom';\n}\n\nfunction segmentValueFromLevels(levels: Set<LogLevel>): LevelSegmentValue {\n const p = derivePreset(levels);\n return p === 'custom' ? 'other' : p;\n}\n\nfunction levelsForPreset(preset: Exclude<LevelPreset, 'custom'>): Set<LogLevel> {\n switch (preset) {\n case 'all':\n return new Set();\n case 'errors':\n return new Set(PRESET_ERRORS);\n case 'warnPlus':\n return new Set(PRESET_WARN_PLUS);\n case 'infoPlus':\n return new Set(PRESET_INFO_PLUS);\n case 'verbose':\n return new Set(LOG_LEVELS);\n }\n}\n\nfunction interpolate(template: string, params: Record<string, string | number>): string {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => String(params[key] ?? ''));\n}\n\nfunction moduleLabel(log: LogEntry): string {\n return String(log.module || log.prefix || log.service || log.extension || '—');\n}\n\nfunction messagePreview(log: LogEntry): string {\n if (typeof log.message === 'string' && log.message) return log.message;\n try {\n return JSON.stringify(log);\n } catch {\n return '';\n }\n}\n\nfunction formatTimeCompact(timestamp: string): string {\n try {\n const date = new Date(timestamp);\n return date.toLocaleTimeString(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n });\n } catch {\n return timestamp;\n }\n}\n\nfunction formatTimestampFull(timestamp: string): string {\n try {\n return new Date(timestamp).toLocaleString();\n } catch {\n return timestamp;\n }\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction requestIdPreview(id: string): string {\n const t = id.trim();\n if (t.length <= 10) return t;\n return `${t.slice(0, 8)}…`;\n}\n\nfunction levelLabel(level: string): string {\n return String(level).toLowerCase();\n}\n\nfunction formatStatsLine(\n byLevel: Partial<Record<LogLevel | 'silent', number>>,\n labels: Record<LogLevel, string>,\n): string {\n const parts: string[] = [];\n for (const lv of LOG_LEVELS) {\n const n = byLevel[lv] ?? 0;\n if (n > 0) parts.push(`${labels[lv]} ${n}`);\n }\n return parts.join(' · ');\n}\n\nexport function LogsPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const L = m.logs;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const [searchParams, setSearchParams] = useSearchParams();\n\n const initialSearch = searchParams.get('q') ?? '';\n const initialLevels = parseLogLevelsParam(searchParams.get('level'));\n const initialModule = searchParams.get('module') ?? '';\n const initialFrom = searchParams.get('from') ?? '';\n const initialTo = searchParams.get('to') ?? '';\n const initialAutoRefresh = searchParams.get('live') === '1';\n\n const [logs, setLogs] = useState<LogEntry[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [hasMore, setHasMore] = useState(false);\n\n const [searchInput, setSearchInput] = useState(initialSearch);\n const [debouncedSearch, setDebouncedSearch] = useState(initialSearch.trim());\n const [selectedLevels, setSelectedLevels] = useState<Set<LogLevel>>(initialLevels);\n const [moduleFilter, setModuleFilter] = useState(initialModule);\n const [dateFrom, setDateFrom] = useState(initialFrom);\n const [dateTo, setDateTo] = useState(initialTo);\n\n const [modules, setModules] = useState<string[]>([]);\n const [files, setFiles] = useState<LogFile[]>([]);\n const [stats, setStats] = useState<Awaited<ReturnType<typeof getLogStats>> | null>(null);\n\n const [selectedLog, setSelectedLog] = useState<LogEntry | null>(null);\n const [filesOpen, setFilesOpen] = useState(false);\n const [filtersOpen, setFiltersOpen] = useState(false);\n const [logDir, setLogDir] = useState<string | null>(null);\n const [autoRefresh, setAutoRefresh] = useState(initialAutoRefresh);\n const [copiedDetail, setCopiedDetail] = useState<'json' | 'message' | null>(null);\n\n const levelSegment = useMemo(() => segmentValueFromLevels(selectedLevels), [selectedLevels]);\n\n const hasActiveFilters =\n debouncedSearch.length > 0 ||\n selectedLevels.size > 0 ||\n Boolean(moduleFilter) ||\n Boolean(dateFrom) ||\n Boolean(dateTo);\n\n const activeFilterCount =\n (debouncedSearch.length > 0 ? 1 : 0) +\n (selectedLevels.size > 0 ? 1 : 0) +\n (moduleFilter ? 1 : 0) +\n (dateFrom || dateTo ? 1 : 0);\n\n useEffect(() => {\n const t = setTimeout(() => setDebouncedSearch(searchInput.trim()), 300);\n return () => clearTimeout(t);\n }, [searchInput]);\n\n useEffect(() => {\n const nextQ = searchParams.get('q') ?? '';\n const nextModule = searchParams.get('module') ?? '';\n const nextFrom = searchParams.get('from') ?? '';\n const nextTo = searchParams.get('to') ?? '';\n const nextAutoRefresh = searchParams.get('live') === '1';\n const nextLevels = parseLogLevelsParam(searchParams.get('level'));\n const nextDebouncedQ = nextQ.trim();\n\n setSearchInput((prev) => (prev === nextQ ? prev : nextQ));\n setDebouncedSearch((prev) => (prev === nextDebouncedQ ? prev : nextDebouncedQ));\n setSelectedLevels((prev) => (isSameLogLevelSet(nextLevels, prev) ? prev : nextLevels));\n setModuleFilter((prev) => (prev === nextModule ? prev : nextModule));\n setDateFrom((prev) => (prev === nextFrom ? prev : nextFrom));\n setDateTo((prev) => (prev === nextTo ? prev : nextTo));\n setAutoRefresh((prev) => (prev === nextAutoRefresh ? prev : nextAutoRefresh));\n }, [searchParams]);\n\n useEffect(() => {\n const params = new URLSearchParams(searchParams);\n const nextQ = debouncedSearch.trim();\n if (nextQ) params.set('q', nextQ);\n else params.delete('q');\n\n if (selectedLevels.size > 0) {\n params.set('level', Array.from(selectedLevels).sort().join(','));\n } else {\n params.delete('level');\n }\n\n if (moduleFilter) params.set('module', moduleFilter);\n else params.delete('module');\n if (dateFrom) params.set('from', dateFrom);\n else params.delete('from');\n if (dateTo) params.set('to', dateTo);\n else params.delete('to');\n if (autoRefresh) params.set('live', '1');\n else params.delete('live');\n\n const next = params.toString();\n if (next !== searchParams.toString()) {\n setSearchParams(params, { replace: true });\n }\n }, [\n autoRefresh,\n dateFrom,\n dateTo,\n debouncedSearch,\n moduleFilter,\n searchParams,\n selectedLevels,\n setSearchParams,\n ]);\n\n const queryParams = useMemo(\n () => ({\n q: debouncedSearch || undefined,\n level: selectedLevels.size > 0 ? Array.from(selectedLevels) : undefined,\n module: moduleFilter || undefined,\n from: dateFrom || undefined,\n to: dateTo || undefined,\n limit: PAGE_LIMIT,\n }),\n [debouncedSearch, selectedLevels, moduleFilter, dateFrom, dateTo],\n );\n\n useEffect(() => {\n if (!hasToken) return;\n let cancelled = false;\n (async () => {\n setLoading(true);\n setError(null);\n setLogs([]);\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n if (cancelled) return;\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n } catch (e) {\n if (!cancelled) {\n setError(e instanceof Error ? e.message : L.loadError);\n setLogs([]);\n setHasMore(false);\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken, queryParams, L.loadError]);\n\n useEffect(() => {\n if (!hasToken) return;\n let cancelled = false;\n (async () => {\n try {\n const [mods, st, fileList] = await Promise.all([getLogModules(), getLogStats(), getLogFiles()]);\n if (!cancelled) {\n setModules(mods);\n setStats(st);\n setFiles(fileList);\n }\n } catch {\n /* optional */\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken]);\n\n useEffect(() => {\n if (!hasToken || !filesOpen) return;\n let cancelled = false;\n (async () => {\n try {\n const [list, dir] = await Promise.all([getLogFiles(), getLogDir()]);\n if (!cancelled) {\n setFiles(list);\n setLogDir(dir);\n }\n } catch {\n if (!cancelled) setFiles([]);\n }\n })();\n return () => {\n cancelled = true;\n };\n }, [hasToken, filesOpen]);\n\n useEffect(() => {\n if (!autoRefresh || !hasToken) return;\n const id = window.setInterval(() => {\n void (async () => {\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n const st = await getLogStats();\n setStats(st);\n } catch {\n /* ignore */\n }\n })();\n }, REFRESH_MS);\n return () => clearInterval(id);\n }, [autoRefresh, hasToken, queryParams]);\n\n useEffect(() => {\n if (!copiedDetail) return;\n const t = window.setTimeout(() => setCopiedDetail(null), 2000);\n return () => clearTimeout(t);\n }, [copiedDetail]);\n\n const clearFilters = () => {\n setSearchInput('');\n setDebouncedSearch('');\n setSelectedLevels(new Set());\n setModuleFilter('');\n setDateFrom('');\n setDateTo('');\n };\n\n const handleLevelSegment = (value: LevelSegmentValue) => {\n if (value === 'other') {\n setFiltersOpen(true);\n return;\n }\n setSelectedLevels(levelsForPreset(value));\n };\n\n const toggleDialogLevel = (level: LogLevel) => {\n setSelectedLevels((prev) => {\n const next = new Set(prev);\n if (next.has(level)) next.delete(level);\n else next.add(level);\n return next;\n });\n };\n\n const handleLoadMore = () => {\n if (loading || !hasMore) return;\n void (async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await queryLogs({ ...queryParams, offset: logs.length });\n setLogs((prev) => [...prev, ...result.logs]);\n setHasMore(result.logs.length === PAGE_LIMIT);\n } catch (e) {\n setError(e instanceof Error ? e.message : L.loadError);\n } finally {\n setLoading(false);\n }\n })();\n };\n\n const refreshAll = () => {\n void (async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await queryLogs({ ...queryParams, offset: 0 });\n setLogs(result.logs);\n setHasMore(result.logs.length === PAGE_LIMIT);\n const [st, fileList] = await Promise.all([getLogStats(), getLogFiles()]);\n setStats(st);\n setFiles(fileList);\n } catch (e) {\n setError(e instanceof Error ? e.message : L.loadError);\n } finally {\n setLoading(false);\n }\n })();\n };\n\n const statsLine = stats ? formatStatsLine(stats.byLevel ?? {}, L.levelNames) : '';\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-10\">\n <div className=\"flex items-start gap-3 rounded-2xl border border-edge-subtle bg-surface-base p-6 dark:border-edge\">\n <Terminal className=\"mt-0.5 size-5 shrink-0 text-fg-subtle\" strokeWidth={1.75} aria-hidden />\n <div>\n <h1 className=\"text-base font-semibold tracking-tight text-fg\">{L.title}</h1>\n <p className=\"mt-1 text-sm leading-relaxed text-fg-muted\">{L.needToken}</p>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6\">\n <header className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <div\n className=\"flex size-10 shrink-0 items-center justify-center rounded-xl border border-edge-subtle bg-surface-base dark:border-edge\"\n aria-hidden\n >\n <Terminal className=\"size-5 text-fg-muted\" strokeWidth={1.75} />\n </div>\n <div className=\"min-w-0\">\n <h1 className=\"text-xl font-semibold tracking-tight text-fg\">{L.title}</h1>\n <p className=\"mt-0.5 text-sm leading-relaxed text-fg-muted\">{L.subtitle}</p>\n </div>\n </div>\n <div className=\"flex w-full shrink-0 flex-col gap-2 sm:w-auto sm:max-w-md sm:flex-row sm:items-center sm:justify-end\">\n <div className=\"w-full sm:w-48\">\n <SlidingSegmented\n aria-label={L.refreshModeAria}\n value={autoRefresh ? 'live' : 'paused'}\n onChange={(v) => setAutoRefresh(v === 'live')}\n options={[\n { value: 'paused', label: L.refreshManual },\n { value: 'live', label: L.refreshLive },\n ]}\n buttonClassName=\"h-8\"\n />\n </div>\n <div className=\"flex items-center gap-1 self-end sm:self-center\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0\"\n title={L.logFiles}\n aria-label={L.logFiles}\n onClick={() => setFilesOpen(true)}\n >\n <Folder className=\"size-4\" strokeWidth={1.75} />\n {files.length > 0 ? (\n <span className=\"rounded-full bg-surface-hover px-1.5 text-xs text-fg-muted\">{files.length}</span>\n ) : null}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 min-h-[44px] min-w-[44px] px-2 sm:min-h-9 sm:min-w-0\"\n title={L.refresh}\n aria-label={L.refresh}\n onClick={refreshAll}\n >\n <RefreshCw\n className={cn(\n 'size-4 transition-transform duration-150 ease-out motion-reduce:transition-none',\n loading && 'animate-spin motion-reduce:animate-none',\n )}\n strokeWidth={1.75}\n />\n </Button>\n </div>\n </div>\n </header>\n\n {error ? (\n <div\n className=\"rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg dark:border-edge\"\n role=\"alert\"\n >\n {error}\n </div>\n ) : null}\n\n {stats && statsLine ? (\n <div className=\"flex flex-wrap items-center gap-2\">\n <Popover.Root>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className=\"max-w-full truncate rounded-lg border border-transparent px-1 py-0.5 text-left text-xs leading-5 text-fg-subtle transition-colors duration-150 ease-out hover:border-edge-subtle hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel dark:hover:border-edge\"\n >\n <span className=\"font-medium text-fg-muted\">{L.statsRegion}</span>\n <span className=\"mx-1.5 text-fg-subtle\">·</span>\n <span className=\"tabular-nums\">{statsLine}</span>\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={6}\n className={cn(\n 'z-50 w-[min(calc(100vw-2rem),20rem)] rounded-xl border border-edge bg-surface-panel p-3 shadow-popover outline-none',\n 'dark:border-edge',\n )}\n >\n <p className=\"text-xs font-medium text-fg\">{L.statsDetailTitle}</p>\n <p className=\"mt-1 text-xs leading-5 text-fg-muted\">{L.statsHint}</p>\n <ul className=\"mt-3 flex flex-col gap-1.5\" role=\"list\">\n {LOG_LEVELS.map((lv) => {\n const n = stats.byLevel?.[lv] ?? 0;\n if (n === 0) return null;\n return (\n <li\n key={lv}\n className=\"flex items-center justify-between gap-2 rounded-md border border-edge-subtle bg-surface-base px-2 py-1 text-xs dark:border-edge\"\n >\n <span className=\"font-medium capitalize text-fg\">{L.levelNames[lv]}</span>\n <span className=\"tabular-nums text-fg-muted\">{n}</span>\n </li>\n );\n })}\n </ul>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n ) : null}\n\n <section className=\"flex flex-col gap-3\" aria-label={L.filters}>\n <div className=\"overflow-x-auto pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">\n <div className=\"min-w-[min(100%,36rem)]\">\n <SlidingSegmented<LevelSegmentValue>\n aria-label={L.levelPresetAria}\n value={levelSegment}\n onChange={handleLevelSegment}\n options={[\n { value: 'all', label: L.presetAll },\n { value: 'errors', label: L.presetErrors },\n { value: 'warnPlus', label: L.presetWarnPlus },\n { value: 'infoPlus', label: L.presetInfoPlus },\n { value: 'verbose', label: L.presetVerbose },\n { value: 'other', label: L.presetOther },\n ]}\n buttonClassName=\"h-8 px-1.5 text-[11px] sm:px-2 sm:text-xs\"\n />\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center\">\n <label className=\"relative min-w-0 flex-1 sm:min-w-[12rem]\">\n <span className=\"sr-only\">{L.searchPlaceholder}</span>\n <Search\n className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle\"\n strokeWidth={1.75}\n aria-hidden\n />\n <input\n type=\"search\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n placeholder={L.searchPlaceholder}\n autoComplete=\"off\"\n spellCheck={false}\n className={cn(\n 'h-10 w-full rounded-md border border-edge bg-surface-panel py-0 pl-10 pr-3 text-sm leading-5 text-fg placeholder:text-fg-subtle dark:border-edge',\n bareInputFocusClass,\n )}\n />\n </label>\n\n <select\n id=\"log-module\"\n value={moduleFilter}\n onChange={(e) => setModuleFilter(e.target.value)}\n aria-label={L.module}\n title={L.module}\n className={cn(\n selectControlBaseClass,\n 'h-10 w-full min-w-0 rounded-md py-0 sm:w-[min(100%,14rem)] sm:shrink-0',\n )}\n >\n <option value=\"\">{L.allModules}</option>\n {modules.map((mod) => (\n <option key={mod} value={mod}>\n {mod}\n </option>\n ))}\n </select>\n\n <div className=\"flex min-w-0 shrink-0 items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-10 min-h-[44px] gap-2 rounded-md sm:min-h-10\"\n onClick={() => setFiltersOpen(true)}\n >\n <ListFilter className=\"size-4\" strokeWidth={1.75} />\n {L.filtersMore}\n {activeFilterCount > 0 ? (\n <span className=\"rounded-md bg-surface-hover px-1.5 text-xs tabular-nums text-fg-muted\">\n {activeFilterCount}\n </span>\n ) : null}\n </Button>\n {hasActiveFilters ? (\n <Button type=\"button\" variant=\"ghost\" className=\"h-10 min-h-[44px] gap-1 sm:min-h-10\" onClick={clearFilters}>\n <X className=\"size-4\" strokeWidth={1.75} />\n {L.clear}\n </Button>\n ) : null}\n </div>\n </div>\n\n {autoRefresh ? <p className=\"text-xs leading-5 text-fg-subtle\">{L.liveHint}</p> : null}\n </section>\n\n {loading && logs.length === 0 ? (\n <div\n className=\"divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel dark:divide-edge dark:border-edge\"\n aria-busy=\"true\"\n >\n {Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"flex gap-3 px-3 py-2.5\">\n <div className=\"h-4 w-16 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 w-12 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 w-20 shrink-0 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n <div className=\"h-4 min-w-0 flex-1 bg-surface-hover motion-reduce:animate-none animate-pulse\" />\n </div>\n ))}\n </div>\n ) : null}\n\n {!loading && logs.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center gap-2 rounded-xl border border-edge-subtle bg-surface-base py-16 text-center dark:border-edge\">\n <FileText className=\"size-12 text-fg-subtle\" strokeWidth={1.5} aria-hidden />\n <h2 className=\"text-base font-semibold tracking-tight text-fg\">{L.noLogs}</h2>\n <p className=\"max-w-sm text-sm leading-relaxed text-fg-muted\">{L.noLogsDescription}</p>\n <Button type=\"button\" variant=\"secondary\" className=\"mt-4 gap-2\" onClick={refreshAll}>\n <RefreshCw className=\"size-4\" strokeWidth={1.75} />\n {L.refresh}\n </Button>\n </div>\n ) : null}\n\n {logs.length > 0 ? (\n <div className=\"flex flex-col gap-2\">\n <p className=\"text-xs leading-5 text-fg-muted\">\n {interpolate(L.showingCount, { count: String(logs.length) })}\n {hasMore ? <span className=\"text-fg-subtle\"> · {L.moreAvailable}</span> : null}\n </p>\n <ul\n className=\"divide-y divide-edge-subtle overflow-hidden rounded-xl border border-edge bg-surface-panel font-mono text-sm leading-6 dark:divide-edge dark:border-edge\"\n role=\"list\"\n >\n {logs.map((log, idx) => {\n const lv = log.level ?? 'info';\n const rid = typeof log.requestId === 'string' ? log.requestId.trim() : '';\n return (\n <li key={`${log.timestamp}-${idx}`}>\n <button\n type=\"button\"\n onClick={() => setSelectedLog(log)}\n className={cn(\n 'flex w-full min-w-0 items-center gap-3 px-3 py-2.5 text-left transition-colors duration-150 ease-out',\n 'hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n >\n <span className=\"w-[5.25rem] shrink-0 tabular-nums text-fg-subtle\">\n {formatTimeCompact(log.timestamp)}\n </span>\n <span className=\"w-[4.5rem] shrink-0 truncate text-fg-muted\" title={lv}>\n {levelLabel(lv)}\n </span>\n <span\n className=\"w-[4.5rem] shrink-0 truncate text-fg-subtle sm:w-[5.25rem]\"\n title={rid ? `${L.requestId}: ${rid}` : undefined}\n >\n {rid ? requestIdPreview(rid) : '—'}\n </span>\n <span\n className=\"hidden max-w-[7rem] shrink-0 truncate text-fg-muted lg:inline\"\n title={moduleLabel(log)}\n >\n {moduleLabel(log)}\n </span>\n <span className=\"min-w-0 flex-1 truncate text-fg\">{messagePreview(log)}</span>\n </button>\n </li>\n );\n })}\n </ul>\n {hasMore ? (\n <div className=\"flex justify-center pt-1\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"gap-2\"\n disabled={loading}\n onClick={handleLoadMore}\n >\n {loading ? (\n <RefreshCw className=\"size-4 animate-spin motion-reduce:animate-none\" strokeWidth={1.75} />\n ) : (\n <ChevronDown className=\"size-4\" strokeWidth={1.75} />\n )}\n {L.loadMore}\n </Button>\n </div>\n ) : null}\n </div>\n ) : null}\n\n <Dialog.Root open={filtersOpen} onOpenChange={setFiltersOpen}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,90vh)] w-[min(100%-2rem,22rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby=\"log-filters-desc\"\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold tracking-tight text-fg\">{L.filtersDialogTitle}</Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div id=\"log-filters-desc\" className=\"sr-only\">\n {L.filtersDialogDesc}\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4\">\n <p className=\"text-xs font-medium text-fg-muted\">{L.timeRange}</p>\n <div className=\"mt-2 flex flex-col gap-3\">\n <div>\n <label htmlFor=\"log-from-d\" className=\"mb-1 block text-xs text-fg-muted\">\n {L.from}\n </label>\n <input\n id=\"log-from-d\"\n type=\"datetime-local\"\n value={dateFrom}\n onChange={(e) => setDateFrom(e.target.value)}\n className=\"w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge\"\n />\n </div>\n <div>\n <label htmlFor=\"log-to-d\" className=\"mb-1 block text-xs text-fg-muted\">\n {L.to}\n </label>\n <input\n id=\"log-to-d\"\n type=\"datetime-local\"\n value={dateTo}\n onChange={(e) => setDateTo(e.target.value)}\n className=\"w-full rounded-xl border border-edge bg-surface-base px-2 py-2 text-sm text-fg dark:border-edge\"\n />\n </div>\n </div>\n <p className=\"mt-6 text-xs font-medium text-fg-muted\">{L.levelCustom}</p>\n <p className=\"mt-1 text-xs leading-5 text-fg-subtle\">{L.levelCustomHint}</p>\n <div className=\"mt-3 flex flex-wrap gap-2\" role=\"group\" aria-label={L.level}>\n {LOG_LEVELS.map((level) => {\n const active = selectedLevels.has(level);\n return (\n <button\n key={level}\n type=\"button\"\n className={cn(\n 'rounded-full border px-3 py-1.5 text-xs font-medium capitalize transition-[color,background-color,border-color] duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n active\n ? 'border-edge bg-surface-active text-fg dark:border-edge'\n : 'border-edge-subtle bg-surface-base text-fg-muted hover:bg-surface-hover dark:border-edge',\n )}\n onClick={() => toggleDialogLevel(level)}\n >\n {L.levelNames[level]}\n </button>\n );\n })}\n </div>\n </div>\n <div className=\"shrink-0 border-t border-edge-subtle px-4 py-3 dark:border-edge\">\n <Button type=\"button\" className=\"w-full rounded-xl\" onClick={() => setFiltersOpen(false)}>\n {L.filtersDone}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <Dialog.Root open={selectedLog !== null} onOpenChange={(o) => !o && setSelectedLog(null)}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-drawer-right fixed right-0 top-0 z-50 flex h-full w-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby={undefined}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold tracking-tight text-fg\">{L.details}</Dialog.Title>\n <div className=\"flex min-w-0 items-center gap-1\">\n {selectedLog ? (\n <>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 shrink-0 gap-1 px-2 text-xs\"\n onClick={() => {\n const text = typeof selectedLog.message === 'string' ? selectedLog.message : '';\n void navigator.clipboard.writeText(text).then(() => setCopiedDetail('message'));\n }}\n >\n <ClipboardCopy className=\"size-3.5 shrink-0\" strokeWidth={1.75} />\n <span className=\"hidden sm:inline\">{copiedDetail === 'message' ? L.copied : L.copyMessage}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-9 shrink-0 gap-1 px-2 text-xs\"\n onClick={() => {\n void navigator.clipboard\n .writeText(JSON.stringify(selectedLog, null, 2))\n .then(() => setCopiedDetail('json'));\n }}\n >\n <ClipboardCopy className=\"size-3.5 shrink-0\" strokeWidth={1.75} />\n <span className=\"hidden sm:inline\">{copiedDetail === 'json' ? L.copied : L.copyJson}</span>\n </Button>\n </>\n ) : null}\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-4 font-mono text-sm leading-relaxed\">\n {selectedLog ? (\n <LogDetailBody\n log={selectedLog}\n labels={{\n time: L.time,\n level: L.level,\n module: L.module,\n message: L.message,\n metadata: L.metadata,\n requestId: L.requestId,\n sessionId: L.sessionId,\n }}\n />\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n\n <Dialog.Root open={filesOpen} onOpenChange={setFilesOpen}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-50 bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-dialog-content fixed left-1/2 top-1/2 z-50 flex max-h-[min(32rem,85vh)] w-[min(100%-2rem,24rem)] -translate-x-1/2 -translate-y-1/2 flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3 dark:border-edge\">\n <Dialog.Title className=\"flex items-center gap-2 text-base font-semibold tracking-tight text-fg\">\n <Folder className=\"size-4 text-fg-muted\" strokeWidth={1.75} />\n {L.logFiles}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"h-9 w-9 shrink-0 p-0\" aria-label={L.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n {files.length === 0 ? (\n <p className=\"text-sm text-fg-muted\">{L.filesEmpty}</p>\n ) : (\n <ul className=\"flex flex-col gap-2\" role=\"list\">\n {files.map((f) => (\n <li\n key={f.name}\n className=\"flex flex-col gap-1 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 dark:border-edge\"\n >\n <span className=\"break-all font-mono text-xs text-fg\">{f.name}</span>\n <span className=\"flex flex-wrap gap-x-2 text-xs text-fg-subtle\">\n <span>{formatFileSize(f.size)}</span>\n <span>{formatTimestampFull(f.modified)}</span>\n </span>\n </li>\n ))}\n </ul>\n )}\n </div>\n {logDir ? (\n <div className=\"shrink-0 border-t border-edge-subtle px-4 py-2 text-xs text-fg-subtle dark:border-edge\">\n <span className=\"font-medium text-fg-muted\">{L.logDir}: </span>\n <code className=\"break-all text-fg-subtle\">{logDir}</code>\n </div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n </div>\n );\n}\n\nfunction LogDetailBody({\n log,\n labels,\n}: {\n log: LogEntry;\n labels: {\n time: string;\n level: string;\n module: string;\n message: string;\n metadata: string;\n requestId: string;\n sessionId: string;\n };\n}) {\n const lv = log.level ?? 'info';\n const rid = typeof log.requestId === 'string' ? log.requestId : '';\n const sid = typeof log.sessionId === 'string' ? log.sessionId : '';\n return (\n <div className=\"flex flex-col gap-8\">\n <div>\n <span className=\"text-xs font-sans font-medium text-fg-muted\">{labels.message}</span>\n <pre className=\"mt-2 whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge\">\n {log.message || '—'}\n </pre>\n </div>\n <div className=\"grid grid-cols-[5.5rem_1fr] gap-x-3 gap-y-2 text-xs\">\n <span className=\"font-sans text-fg-muted\">{labels.time}</span>\n <code className=\"break-all text-fg\">{log.timestamp}</code>\n <span className=\"font-sans text-fg-muted\">{labels.level}</span>\n <span className=\"text-fg\">{levelLabel(lv)}</span>\n <span className=\"font-sans text-fg-muted\">{labels.module}</span>\n <code className=\"break-all text-fg\">{moduleLabel(log)}</code>\n {rid ? (\n <>\n <span className=\"font-sans text-fg-muted\">{labels.requestId}</span>\n <code className=\"break-all text-fg\">{rid}</code>\n </>\n ) : null}\n {sid ? (\n <>\n <span className=\"font-sans text-fg-muted\">{labels.sessionId}</span>\n <code className=\"break-all text-fg\">{sid}</code>\n </>\n ) : null}\n </div>\n {log.meta && Object.keys(log.meta).length > 0 ? (\n <div>\n <span className=\"text-xs font-sans font-medium text-fg-muted\">{labels.metadata}</span>\n <pre className=\"mt-2 overflow-x-auto whitespace-pre-wrap break-words border border-edge bg-surface-base p-3 text-xs leading-relaxed text-fg dark:border-edge\">\n {JSON.stringify(log.meta, null, 2)}\n </pre>\n </div>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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"}
|
package/dist/gateway/static/root/assets/{model-selector-BiiDq8Pk.js → model-selector-he3aQfme.js}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-CKeMF3Bn.js","assets/dist-CBKzm83Y.js","assets/dist-CjRB05pZ.js","assets/dist-CjmpmmcO.js","assets/dist-C-WNCkkY.js","assets/rolldown-runtime-B1FJdls4.js","assets/dist-Dinrgvrc.js","assets/dist-DyGB3uLS.js","assets/dist-F1KQHhKa.js","assets/dist-CRaQQa2p.js","assets/dist-yK1j3Bjw.js","assets/dist-CrXwIk-M.js","assets/dist-CDDaBTOk.js","assets/dist-BSdjwUOg.js","assets/dist-CKHmCbpd.js","assets/dist-Of-S18KS.js","assets/dist-BrZ3oe_j.js","assets/dist-Ddxrc2iU.js","assets/dist-DDeYRHbM.js","assets/dist-BOsdKOWM.js","assets/dist-CeY6S7P6.js","assets/dist-DxBbFin7.js","assets/dockerfile-Dp3-805k.js","assets/simple-mode-DlRTxS8Y.js","assets/factor-CjtwL94V.js","assets/nsis-ZMhnK7--.js","assets/pug-D14mjHau.js","assets/javascript-Bbl3lVa4.js","assets/dist-CqAGQCuu.js","assets/dist-BV428gYa.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{i as t,t as n}from"./vendor-react-QAsRxa6t.js";import{l as r,n as i,s as a,t as o}from"./url-QmwQTJ-j.js";import{r as s}from"./vendor-swr-8rdcElid.js";import{t as c}from"./preload-helper-DzyYoeor.js";import{l}from"./chunk-QFMPRPBF-DOYp8d2p.js";import{r as u,t as d}from"./cn-DPF56z7S.js";import{t as f}from"./check-CDc_K89l.js";import{a as ee,n as p,r as te}from"./form-field-width-BlpNwrfn.js";import{a as ne,i as re,o as ie,r as ae}from"./dist-CpMMntuC.js";import{$ as m,A as oe,C as se,E as ce,G as h,I as g,J as le,O as _,P as v,Q as y,S as b,T as x,W as S,X as C,Y as w,Z as ue,a as T,at as de,ct as fe,dt as E,et as pe,f as me,h as he,j as ge,l as D,lt as _e,o as ve,ot as ye,q as be,st as xe,tt as Se,u as Ce,ut as we}from"./dist-CjRB05pZ.js";import{n as Te,r as Ee}from"./dist-CKHmCbpd.js";import{n as De}from"./interaction-C4gx-xSs.js";var Oe=u(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),ke=u(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),Ae=u(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),je=u(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),O=e(t(),1),k=n();async function Me(){let e=await i(o(`/api/models`));if(!e.ok)throw Error(`Models: HTTP ${e.status}`);return(await e.json()).payload?.models??[]}var A=null,Ne=0,j=null,Pe=6e4;async function Fe(e=!1){if(!e&&A&&Date.now()<Ne)return A;if(e){let e=await Me();return A=e,Ne=Date.now()+Pe,e}return j||(j=Me().then(e=>(A=e,Ne=Date.now()+Pe,e)).finally(()=>{j=null}),j)}var Ie=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=N(e.state,n.from);return r.line?Le(e):r.block?ze(e):!1};function M(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}var Le=M(Ue,0),Re=M(He,0),ze=M((e,t)=>He(e,t,Ve(t)),0);function N(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var P=50;function Be(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-P,r),o=e.sliceDoc(i,i+P),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=2*P?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+P),d=e.sliceDoc(i-P,i));let f=/^\s*/.exec(u)[0].length,ee=/\s*$/.exec(d)[0].length,p=d.length-ee-n.length;return u.slice(f,f+t.length)==t&&d.slice(p,p+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-ee-n.length,margin:+!!/\s/.test(d.charAt(p-1))}}:null}function Ve(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function He(e,t,n=t.selection.ranges){let r=n.map(e=>N(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>Be(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;t<i.length;t++)if(n=i[t]){let i=r[t],{open:a,close:o}=n;e.push({from:a.pos-i.open.length,to:a.pos+a.margin},{from:o.pos-o.margin,to:o.pos+i.close.length})}return{changes:e}}return null}function Ue(e,t,n=t.selection.ranges){let r=[],i=-1;ranges:for(let{from:e,to:a}of n){let n=r.length,o=1e9,s;for(let n=e;n<=a;){let c=t.doc.lineAt(n);if(s==null&&(s=N(t,c.from).line,!s))continue ranges;if(c.from>i&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;e<c.text.length&&e<o&&(o=e),r.push({line:c,comment:n,token:s,indent:e,empty:t,single:!1})}n=c.to+1}if(o<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=o);r.length==n+1&&(r[n].single=!0)}if(e!=2&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}else if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}var We=C.define(),Ge=C.define(),Ke=Se.define(),qe=Se.define({combine(e){return _e(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),Je=ye.define({create(){return z.empty},update(e,t){let n=t.state.facet(qe),r=t.annotation(We);if(r){let i=I.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?L(o,o.length,n.minDepth,i):it(o,t.startState.selection),new z(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(Ge);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(fe.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=I.fromTransaction(t),o=t.annotation(fe.time),s=t.annotation(fe.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new z(e.done.map(I.fromJSON),e.undone.map(I.fromJSON))}});function Ye(e={}){return[Je,qe.of(e),h.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?Xe:e.inputType==`historyRedo`?Ze:null;return n?(e.preventDefault(),n(t)):!1}})]}function F(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Je,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var Xe=F(0,!1),Ze=F(1,!1),Qe=F(0,!0),$e=F(1,!0),I=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&y.fromJSON(t.changes),[],t.mapped&&ue.fromJSON(t.mapped),t.startSelection&&m.fromJSON(t.startSelection),t.selectionsAfter.map(m.fromJSON))}static fromTransaction(t,n){let r=R;for(let e of t.startState.facet(Ke)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,R)}static selection(t){return new e(void 0,R,void 0,void 0,t)}};function L(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function et(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e<n.length;){let t=n[e++],o=n[e++];a>=t&&i<=o&&(r=!0)}}),r}function tt(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function nt(e,t){return e.length?t.length?e.concat(t):e:t}var R=[],rt=200;function it(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-rt));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),L(e,e.length-1,1e9,n.setSelAfter(r)))}else return[I.selection([t])]}function at(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function ot(e,t){if(!e.length)return e;let n=e.length,r=R;for(;n;){let i=st(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}else t=i.mapped,n--,r=i.selectionsAfter}return r.length?[I.selection(r)]:R}function st(e,t,n){let r=nt(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):R,n);if(!e.changes)return I.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new I(i,de.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var ct=/^(input\.type|delete)($|\.)/,z=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||ct.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,et(s.changes,t.changes))||r==`input.type.compose`)?L(o,o.length-1,i.minDepth,new I(t.changes.compose(s.changes),nt(de.mapEffects(t.effects,s.changes),s.effects),s.mapped,s.startSelection,R)):L(o,o.length,i.minDepth,t),new e(o,R,n,r)}addSelection(t,n,r,i){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:R;return a.length>0&&n-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&tt(a[a.length-1],t)?this:new e(it(this.done,t),this.undone,n,r)}addMapping(t){return new e(ot(this.done,t),ot(this.undone,t),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let i=r[r.length-1],a=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:We.of({side:e,rest:at(r),selection:a}),userEvent:e==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(i.changes){let n=r.length==1?R:r.slice(0,r.length-1);return i.mapped&&(n=ot(n,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:We.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}else return null}};z.empty=new z(R,R);var lt=[{key:`Mod-z`,run:Xe,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:Ze,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:Ze,preventDefault:!0},{key:`Mod-u`,run:Qe,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:$e,preventDefault:!0}];function B(e,t){return m.create(e.ranges.map(t),e.mainIndex)}function V(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:`select`})}function H({state:e,dispatch:t},n){let r=B(e.selection,n);return r.eq(e.selection,!0)?!1:(t(V(e,r)),!0)}function U(e,t){return m.cursor(t?e.to:e.from)}function ut(e,t){return H(e,n=>n.empty?e.moveByChar(n,t):U(n,t))}function W(e){return e.textDirectionAt(e.state.selection.main.head)==S.LTR}var dt=e=>ut(e,!W(e)),ft=e=>ut(e,W(e));function pt(e,t){return H(e,n=>n.empty?e.moveByGroup(n,t):U(n,t))}var mt=e=>pt(e,!W(e)),ht=e=>pt(e,W(e));typeof Intl<`u`&&Intl.Segmenter;function gt(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function G(e,t,n){let r=ge(e).resolveInner(t.head),i=n?g.closedBy:g.openedBy;for(let a=t.head;;){let t=n?r.childAfter(a):r.childBefore(a);if(!t)break;gt(e,t,i)?r=t:a=n?t.to:t.from}let a=r.type.prop(i),o,s;return s=a&&(o=n?_(e,r.from,1):_(e,r.to,-1))&&o.matched?n?o.end.to:o.end.from:n?r.to:r.from,m.cursor(s,n?-1:1)}var _t=e=>H(e,t=>G(e.state,t,!W(e))),vt=e=>H(e,t=>G(e.state,t,W(e)));function yt(e,t){return H(e,n=>{if(!n.empty)return U(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}var bt=e=>yt(e,!1),xt=e=>yt(e,!0);function St(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(h.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function Ct(e,t){let n=St(e),{state:r}=e,i=B(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):U(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),s=o.top+n.marginTop,c=o.bottom-n.marginBottom;t&&t.top>s&&t.bottom<c&&(a=h.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-s}))}return e.dispatch(V(r,i),{effects:a}),!0}var wt=e=>Ct(e,!1),Tt=e=>Ct(e,!0);function K(e,t,n){let r=e.lineBlockAt(t.head),i=e.moveToLineBoundary(t,n);if(i.head==t.head&&i.head!=(n?r.to:r.from)&&(i=e.moveToLineBoundary(t,n,!1)),!n&&i.head==r.from&&r.length){let n=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;n&&t.head!=r.from+n&&(i=m.cursor(r.from+n))}return i}var Et=e=>H(e,t=>K(e,t,!0)),Dt=e=>H(e,t=>K(e,t,!1)),Ot=e=>H(e,t=>K(e,t,!W(e))),kt=e=>H(e,t=>K(e,t,W(e))),At=e=>H(e,t=>m.cursor(e.lineBlockAt(t.head).from,1)),jt=e=>H(e,t=>m.cursor(e.lineBlockAt(t.head).to,-1));function Mt(e,t,n){let r=!1,i=B(e.selection,t=>{let i=_(e,t.head,-1)||_(e,t.head,1)||t.head>0&&_(e,t.head-1,1)||t.head<e.doc.length&&_(e,t.head+1,-1);if(!i||!i.end)return t;r=!0;let a=i.start.from==t.head?i.end.to:i.end.from;return n?m.range(t.anchor,a):m.cursor(a)});return r?(t(V(e,i)),!0):!1}var Nt=({state:e,dispatch:t})=>Mt(e,t,!1);function q(e,t){let n=B(e.state.selection,e=>{let n=t(e);return m.range(e.anchor,n.head,n.goalColumn,n.bidiLevel||void 0,n.assoc)});return n.eq(e.state.selection)?!1:(e.dispatch(V(e.state,n)),!0)}function Pt(e,t){return q(e,n=>e.moveByChar(n,t))}var Ft=e=>Pt(e,!W(e)),It=e=>Pt(e,W(e));function Lt(e,t){return q(e,n=>e.moveByGroup(n,t))}var Rt=e=>Lt(e,!W(e)),zt=e=>Lt(e,W(e)),Bt=e=>q(e,t=>G(e.state,t,!W(e))),Vt=e=>q(e,t=>G(e.state,t,W(e)));function Ht(e,t){return q(e,n=>e.moveVertically(n,t))}var Ut=e=>Ht(e,!1),Wt=e=>Ht(e,!0);function Gt(e,t){return q(e,n=>e.moveVertically(n,t,St(e).height))}var Kt=e=>Gt(e,!1),qt=e=>Gt(e,!0),Jt=e=>q(e,t=>K(e,t,!0)),Yt=e=>q(e,t=>K(e,t,!1)),Xt=e=>q(e,t=>K(e,t,!W(e))),Zt=e=>q(e,t=>K(e,t,W(e))),Qt=e=>q(e,t=>m.cursor(e.lineBlockAt(t.head).from)),$t=e=>q(e,t=>m.cursor(e.lineBlockAt(t.head).to)),en=({state:e,dispatch:t})=>(t(V(e,{anchor:0})),!0),tn=({state:e,dispatch:t})=>(t(V(e,{anchor:e.doc.length})),!0),nn=({state:e,dispatch:t})=>(t(V(e,{anchor:e.selection.main.anchor,head:0})),!0),rn=({state:e,dispatch:t})=>(t(V(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),an=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),on=({state:e,dispatch:t})=>{let n=X(e).map(({from:t,to:n})=>m.range(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:m.create(n),userEvent:`select`})),!0},sn=({state:e,dispatch:t})=>{let n=B(e.selection,t=>{let n=ge(e),r=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=r.node.from&&e.node.to<=r.node.to&&(r=e)}for(let e=r;e;e=e.next){let{node:n}=e;if((n.from<t.from&&n.to>=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return m.range(n.to,n.from)}return t});return n.eq(e.selection)?!1:(t(V(e,n)),!0)};function cn(e,t){let{state:n}=e,r=n.selection,i=n.selection.ranges.slice();for(let r of n.selection.ranges){let a=n.doc.lineAt(r.head);if(t?a.to<e.state.doc.length:a.from>0)for(let n=r;;){let r=e.moveVertically(n,t);if(r.head<a.from||r.head>a.to){i.some(e=>e.head==r.head)||i.push(r);break}else if(r.head==n.head)break;else n=r}}return i.length==r.ranges.length?!1:(e.dispatch(V(n,m.create(i,i.length-1))),!0)}var ln=e=>cn(e,!1),un=e=>cn(e,!0),dn=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=m.create([n.main]):n.main.empty||(r=m.create([m.cursor(n.main.head)])),r?(t(V(e,r)),!0):!1};function J(e,t){if(e.state.readOnly)return!1;let n=`delete.selection`,{state:r}=e,i=r.changeByRange(r=>{let{from:i,to:a}=r;if(i==a){let o=t(r);o<i?(n=`delete.backward`,o=Y(e,o,!1)):o>i&&(n=`delete.forward`,o=Y(e,o,!0)),i=Math.min(i,o),a=Math.max(a,o)}else i=Y(e,i,!1),a=Y(e,a,!0);return i==a?{range:r}:{changes:{from:i,to:a},range:m.cursor(i,i<r.head?-1:1)}});return i.changes.empty?!1:(e.dispatch(r.update(i,{scrollIntoView:!0,userEvent:n,effects:n==`delete.selection`?h.announce.of(r.phrase(`Selection deleted`)):void 0})),!0)}function Y(e,t,n){if(e instanceof h)for(let r of e.state.facet(h.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}var fn=(e,t,n)=>J(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=we(s,a.tabSize)%b(a)||b(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=E(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=E(o.text,c-o.from,!1,!1)+o.from);return c}),pn=e=>fn(e,!1,!0),mn=e=>fn(e,!0,!1),hn=(e,t)=>J(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=E(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),gn=e=>hn(e,!1),_n=e=>hn(e,!0),vn=e=>J(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),yn=e=>J(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),bn=e=>J(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),xn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:xe.of([``,``])},range:m.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:`input`})),!0},Sn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let n=t.from,r=e.doc.lineAt(n),i=n==r.from?n-1:E(r.text,n-r.from,!1)+r.from,a=n==r.to?n+1:E(r.text,n-r.from,!0)+r.from;return{changes:{from:i,to:a,insert:e.doc.slice(n,a).append(e.doc.slice(i,n))},range:m.cursor(a)}});return n.changes.empty?!1:(t(e.update(n,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function X(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function Cn(e,t,n){if(e.readOnly)return!1;let r=[],i=[];for(let t of X(e)){if(n?t.to==e.doc.length:t.from==0)continue;let a=e.doc.lineAt(n?t.to+1:t.from-1),o=a.length+1;if(n){r.push({from:t.to,to:a.to},{from:t.from,insert:a.text+e.lineBreak});for(let n of t.ranges)i.push(m.range(Math.min(e.doc.length,n.anchor+o),Math.min(e.doc.length,n.head+o)))}else{r.push({from:a.from,to:t.from},{from:t.to,insert:e.lineBreak+a.text});for(let e of t.ranges)i.push(m.range(e.anchor-o,e.head-o))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:m.create(i,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var wn=({state:e,dispatch:t})=>Cn(e,t,!1),Tn=({state:e,dispatch:t})=>Cn(e,t,!0);function En(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of X(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}var Dn=({state:e,dispatch:t})=>En(e,t,!1),On=({state:e,dispatch:t})=>En(e,t,!0),kn=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(X(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=B(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function An(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=ge(e).resolveInner(t),r=n.childBefore(t),i=n.childAfter(t),a;return r&&i&&r.to<=t&&i.from>=t&&(a=r.type.prop(g.closedBy))&&a.indexOf(i.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(i.from).from&&!/\S/.test(e.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}var jn=Nn(!1),Mn=Nn(!0);function Nn(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{let{from:r,to:i}=n,a=t.doc.lineAt(r),o=!e&&r==i&&An(t,r);e&&(r=i=(i<=a.to?a:t.doc.lineAt(i)).to);let s=new ve(t,{simulateBreak:r,simulateDoubleBreak:!!o}),c=se(s,r);for(c??=we(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize);i<a.to&&/\s/.test(a.text[i-a.from]);)i++;o?{from:r,to:i}=o:r>a.from&&r<a.from+100&&!/\S/.test(a.text.slice(0,r))&&(r=a.from);let l=[``,x(t,c)];return o&&l.push(x(t,s.lineIndent(a.from,-1))),{changes:{from:r,to:i,insert:xe.of(l)},range:m.cursor(r+1+l[1].length)}});return n(t.update(r,{scrollIntoView:!0,userEvent:`input`})),!0}}function Pn(e,t){let n=-1;return e.changeByRange(r=>{let i=[];for(let a=r.from;a<=r.to;){let o=e.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(t(o,i,r),n=o.number),a=o.to+1}let a=e.changes(i);return{changes:i,range:m.range(a.mapPos(r.anchor,1),a.mapPos(r.head,1))}})}var Fn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new ve(e,{overrideIndentation:e=>n[e]??-1}),i=Pn(e,(t,i,a)=>{let o=se(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=x(e,o);(s!=c||a.from<t.from+s.length)&&(n[t.from]=o,i.push({from:t.from,to:t.from+s.length,insert:c}))});return i.changes.empty||t(e.update(i,{userEvent:`indent`})),!0},In=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(Pn(e,(t,n)=>{n.push({from:t.from,insert:e.facet(ce)})}),{userEvent:`input.indent`})),!0),Ln=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(Pn(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=we(r,e.tabSize),a=0,o=x(e,Math.max(0,i-b(e)));for(;a<r.length&&a<o.length&&r.charCodeAt(a)==o.charCodeAt(a);)a++;n.push({from:t.from+a,to:t.from+r.length,insert:o.slice(a)})}),{userEvent:`delete.dedent`})),!0),Rn=e=>(e.setTabFocusMode(),!0),zn=[{key:`Ctrl-b`,run:dt,shift:Ft,preventDefault:!0},{key:`Ctrl-f`,run:ft,shift:It},{key:`Ctrl-p`,run:bt,shift:Ut},{key:`Ctrl-n`,run:xt,shift:Wt},{key:`Ctrl-a`,run:At,shift:Qt},{key:`Ctrl-e`,run:jt,shift:$t},{key:`Ctrl-d`,run:mn},{key:`Ctrl-h`,run:pn},{key:`Ctrl-k`,run:vn},{key:`Ctrl-Alt-h`,run:gn},{key:`Ctrl-o`,run:xn},{key:`Ctrl-t`,run:Sn},{key:`Ctrl-v`,run:Tt}],Bn=[{key:`ArrowLeft`,run:dt,shift:Ft,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:mt,shift:Rt,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:Ot,shift:Xt,preventDefault:!0},{key:`ArrowRight`,run:ft,shift:It,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:ht,shift:zt,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:kt,shift:Zt,preventDefault:!0},{key:`ArrowUp`,run:bt,shift:Ut,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:en,shift:nn},{mac:`Ctrl-ArrowUp`,run:wt,shift:Kt},{key:`ArrowDown`,run:xt,shift:Wt,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:tn,shift:rn},{mac:`Ctrl-ArrowDown`,run:Tt,shift:qt},{key:`PageUp`,run:wt,shift:Kt},{key:`PageDown`,run:Tt,shift:qt},{key:`Home`,run:Dt,shift:Yt,preventDefault:!0},{key:`Mod-Home`,run:en,shift:nn},{key:`End`,run:Et,shift:Jt,preventDefault:!0},{key:`Mod-End`,run:tn,shift:rn},{key:`Enter`,run:jn,shift:jn},{key:`Mod-a`,run:an},{key:`Backspace`,run:pn,shift:pn,preventDefault:!0},{key:`Delete`,run:mn,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:gn,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:_n,preventDefault:!0},{mac:`Mod-Backspace`,run:yn,preventDefault:!0},{mac:`Mod-Delete`,run:bn,preventDefault:!0}].concat(zn.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Vn=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:_t,shift:Bt},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:vt,shift:Vt},{key:`Alt-ArrowUp`,run:wn},{key:`Shift-Alt-ArrowUp`,run:Dn},{key:`Alt-ArrowDown`,run:Tn},{key:`Shift-Alt-ArrowDown`,run:On},{key:`Mod-Alt-ArrowUp`,run:ln},{key:`Mod-Alt-ArrowDown`,run:un},{key:`Escape`,run:dn},{key:`Mod-Enter`,run:Mn},{key:`Alt-l`,mac:`Ctrl-l`,run:on},{key:`Mod-i`,run:sn,preventDefault:!0},{key:`Mod-[`,run:Ln},{key:`Mod-]`,run:In},{key:`Mod-Alt-\\`,run:Fn},{key:`Shift-Mod-k`,run:kn},{key:`Shift-Mod-\\`,run:Nt},{key:`Mod-/`,run:Ie},{key:`Alt-A`,run:Re},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:Rn}].concat(Bn),Hn=`#e5c07b`,Un=`#e06c75`,Wn=`#56b6c2`,Gn=`#ffffff`,Z=`#abb2bf`,Kn=`#7d8799`,qn=`#61afef`,Jn=`#98c379`,Yn=`#d19a66`,Xn=`#c678dd`,Zn=`#21252b`,Qn=`#2c313a`,$n=`#282c34`,er=`#353a42`,tr=`#3E4451`,nr=`#528bff`,rr=[h.theme({"&":{color:Z,backgroundColor:$n},".cm-content":{caretColor:nr},".cm-cursor, .cm-dropCursor":{borderLeftColor:nr},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:tr},".cm-panels":{backgroundColor:Zn,color:Z},".cm-panels.cm-panels-top":{borderBottom:`2px solid black`},".cm-panels.cm-panels-bottom":{borderTop:`2px solid black`},".cm-searchMatch":{backgroundColor:`#72a1ff59`,outline:`1px solid #457dff`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`#6199ff2f`},".cm-activeLine":{backgroundColor:`#6699ff0b`},".cm-selectionMatch":{backgroundColor:`#aafe661a`},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bad0f847`},".cm-gutters":{backgroundColor:$n,color:Kn,border:`none`},".cm-activeLineGutter":{backgroundColor:Qn},".cm-foldPlaceholder":{backgroundColor:`transparent`,border:`none`,color:`#ddd`},".cm-tooltip":{border:`none`,backgroundColor:er},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:`transparent`,borderBottomColor:`transparent`},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:er,borderBottomColor:er},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Qn,color:Z}}},{dark:!0}),oe(T.define([{tag:v.keyword,color:Xn},{tag:[v.name,v.deleted,v.character,v.propertyName,v.macroName],color:Un},{tag:[v.function(v.variableName),v.labelName],color:qn},{tag:[v.color,v.constant(v.name),v.standard(v.name)],color:Yn},{tag:[v.definition(v.name),v.separator],color:Z},{tag:[v.typeName,v.className,v.number,v.changed,v.annotation,v.modifier,v.self,v.namespace],color:Hn},{tag:[v.operator,v.operatorKeyword,v.url,v.escape,v.regexp,v.link,v.special(v.string)],color:Wn},{tag:[v.meta,v.comment],color:Kn},{tag:v.strong,fontWeight:`bold`},{tag:v.emphasis,fontStyle:`italic`},{tag:v.strikethrough,textDecoration:`line-through`},{tag:v.link,color:Kn,textDecoration:`underline`},{tag:v.heading,fontWeight:`bold`,color:Un},{tag:[v.atom,v.bool,v.special(v.variableName)],color:Yn},{tag:[v.processingInstruction,v.string,v.inserted],color:Jn},{tag:v.invalid,color:Gn}]))];function Q(e){return new Ce(me.define(e))}function $(e){return c(()=>import(`./dist-CKeMF3Bn.js`).then(t=>t.sql({dialect:t[e]})),__vite__mapDeps([0,1,2]))}var ir=[D.of({name:`C`,extensions:[`c`,`h`,`ino`],load(){return c(()=>import(`./dist-CjmpmmcO.js`).then(e=>e.cpp()),__vite__mapDeps([3,2]))}}),D.of({name:`C++`,alias:[`cpp`],extensions:[`cpp`,`c++`,`cc`,`cxx`,`hpp`,`h++`,`hh`,`hxx`],load(){return c(()=>import(`./dist-CjmpmmcO.js`).then(e=>e.cpp()),__vite__mapDeps([3,2]))}}),D.of({name:`CQL`,alias:[`cassandra`],extensions:[`cql`],load(){return $(`Cassandra`)}}),D.of({name:`CSS`,extensions:[`css`],load(){return c(()=>import(`./dist-C-WNCkkY.js`).then(e=>e.i).then(e=>e.css()),__vite__mapDeps([4,5,2]))}}),D.of({name:`Go`,extensions:[`go`],load(){return c(()=>import(`./dist-Dinrgvrc.js`).then(e=>e.go()),__vite__mapDeps([6,1,2]))}}),D.of({name:`HTML`,alias:[`xhtml`],extensions:[`html`,`htm`,`handlebars`,`hbs`],load(){return c(()=>import(`./dist-DyGB3uLS.js`).then(e=>e.t).then(e=>e.html()),__vite__mapDeps([7,5,4,2,8,1]))}}),D.of({name:`Java`,extensions:[`java`],load(){return c(()=>import(`./dist-CRaQQa2p.js`).then(e=>e.java()),__vite__mapDeps([9,2]))}}),D.of({name:`JavaScript`,alias:[`ecmascript`,`js`,`node`],extensions:[`js`,`mjs`,`cjs`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript()),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`Jinja`,extensions:[`j2`,`jinja`,`jinja2`],load(){return c(()=>import(`./dist-yK1j3Bjw.js`).then(e=>e.jinja()),__vite__mapDeps([10,7,5,4,2,8,1]))}}),D.of({name:`JSON`,alias:[`json5`],extensions:[`json`,`map`],load(){return c(()=>import(`./dist-CrXwIk-M.js`).then(e=>e.json()),__vite__mapDeps([11,2]))}}),D.of({name:`JSX`,extensions:[`jsx`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript({jsx:!0})),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`LESS`,extensions:[`less`],load(){return c(()=>import(`./dist-CDDaBTOk.js`).then(e=>e.less()),__vite__mapDeps([12,4,5,2]))}}),D.of({name:`Liquid`,extensions:[`liquid`],load(){return c(()=>import(`./dist-BSdjwUOg.js`).then(e=>e.liquid()),__vite__mapDeps([13,7,5,4,2,8,1]))}}),D.of({name:`MariaDB SQL`,load(){return $(`MariaSQL`)}}),D.of({name:`Markdown`,extensions:[`md`,`markdown`,`mkd`],load(){return c(()=>import(`./dist-CKHmCbpd.js`).then(e=>e.t).then(e=>e.markdown()),__vite__mapDeps([14,5,1,2,7,4,8]))}}),D.of({name:`MS SQL`,load(){return $(`MSSQL`)}}),D.of({name:`MySQL`,load(){return $(`MySQL`)}}),D.of({name:`PHP`,extensions:[`php`,`php3`,`php4`,`php5`,`php7`,`phtml`],load(){return c(()=>import(`./dist-Of-S18KS.js`).then(e=>e.php()),__vite__mapDeps([15,7,5,4,2,8,1]))}}),D.of({name:`PLSQL`,extensions:[`pls`],load(){return $(`PLSQL`)}}),D.of({name:`PostgreSQL`,load(){return $(`PostgreSQL`)}}),D.of({name:`Python`,extensions:[`BUILD`,`bzl`,`py`,`pyw`],filename:/^(BUCK|BUILD)$/,load(){return c(()=>import(`./dist-BrZ3oe_j.js`).then(e=>e.python()),__vite__mapDeps([16,1,2]))}}),D.of({name:`Rust`,extensions:[`rs`],load(){return c(()=>import(`./dist-Ddxrc2iU.js`).then(e=>e.rust()),__vite__mapDeps([17,2]))}}),D.of({name:`Sass`,extensions:[`sass`],load(){return c(()=>import(`./dist-DDeYRHbM.js`).then(e=>e.sass({indented:!0})),__vite__mapDeps([18,4,5,2]))}}),D.of({name:`SCSS`,extensions:[`scss`],load(){return c(()=>import(`./dist-DDeYRHbM.js`).then(e=>e.sass()),__vite__mapDeps([18,4,5,2]))}}),D.of({name:`SQL`,extensions:[`sql`],load(){return $(`StandardSQL`)}}),D.of({name:`SQLite`,load(){return $(`SQLite`)}}),D.of({name:`TSX`,extensions:[`tsx`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript({jsx:!0,typescript:!0})),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`TypeScript`,alias:[`ts`],extensions:[`ts`,`mts`,`cts`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript({typescript:!0})),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`WebAssembly`,extensions:[`wat`,`wast`],load(){return c(()=>import(`./dist-BOsdKOWM.js`).then(e=>e.wast()),__vite__mapDeps([19,2]))}}),D.of({name:`XML`,alias:[`rss`,`wsdl`,`xsd`],extensions:[`xml`,`xsl`,`xsd`,`svg`],load(){return c(()=>import(`./dist-CeY6S7P6.js`).then(e=>e.xml()),__vite__mapDeps([20,2]))}}),D.of({name:`YAML`,alias:[`yml`],extensions:[`yaml`,`yml`],load(){return c(()=>import(`./dist-DxBbFin7.js`).then(e=>e.yaml()),__vite__mapDeps([21,2]))}}),D.of({name:`APL`,extensions:[`dyalog`,`apl`],load(){return c(()=>import(`./apl-BiBj5JPh.js`).then(e=>Q(e.apl)),[])}}),D.of({name:`PGP`,alias:[`asciiarmor`],extensions:[`asc`,`pgp`,`sig`],load(){return c(()=>import(`./asciiarmor-DUqjXKKc.js`).then(e=>Q(e.asciiArmor)),[])}}),D.of({name:`ASN.1`,extensions:[`asn`,`asn1`],load(){return c(()=>import(`./asn1-CSFxY3C_.js`).then(e=>Q(e.asn1({}))),[])}}),D.of({name:`Asterisk`,filename:/^extensions\.conf$/i,load(){return c(()=>import(`./asterisk-uHBCAfBV.js`).then(e=>Q(e.asterisk)),[])}}),D.of({name:`Brainfuck`,extensions:[`b`,`bf`],load(){return c(()=>import(`./brainfuck-P6fl4Que.js`).then(e=>Q(e.brainfuck)),[])}}),D.of({name:`Cobol`,extensions:[`cob`,`cpy`],load(){return c(()=>import(`./cobol-cmUvTmBe.js`).then(e=>Q(e.cobol)),[])}}),D.of({name:`C#`,alias:[`csharp`,`cs`],extensions:[`cs`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.csharp)),[])}}),D.of({name:`Clojure`,extensions:[`clj`,`cljc`,`cljx`],load(){return c(()=>import(`./clojure-CcxW2IJv.js`).then(e=>Q(e.clojure)),[])}}),D.of({name:`ClojureScript`,extensions:[`cljs`],load(){return c(()=>import(`./clojure-CcxW2IJv.js`).then(e=>Q(e.clojure)),[])}}),D.of({name:`Closure Stylesheets (GSS)`,extensions:[`gss`],load(){return c(()=>import(`./css-dwxLW2HQ.js`).then(e=>Q(e.gss)),[])}}),D.of({name:`CMake`,extensions:[`cmake`,`cmake.in`],filename:/^CMakeLists\.txt$/,load(){return c(()=>import(`./cmake-Dv6S2qM6.js`).then(e=>Q(e.cmake)),[])}}),D.of({name:`CoffeeScript`,alias:[`coffee`,`coffee-script`],extensions:[`coffee`],load(){return c(()=>import(`./coffeescript-B_m25Hkn.js`).then(e=>Q(e.coffeeScript)),[])}}),D.of({name:`Common Lisp`,alias:[`lisp`],extensions:[`cl`,`lisp`,`el`],load(){return c(()=>import(`./commonlisp-CcPk8jFh.js`).then(e=>Q(e.commonLisp)),[])}}),D.of({name:`Cypher`,extensions:[`cyp`,`cypher`],load(){return c(()=>import(`./cypher-CQII3RcV.js`).then(e=>Q(e.cypher)),[])}}),D.of({name:`Cython`,extensions:[`pyx`,`pxd`,`pxi`],load(){return c(()=>import(`./python-8pqj36LS.js`).then(e=>Q(e.cython)),[])}}),D.of({name:`Crystal`,extensions:[`cr`],load(){return c(()=>import(`./crystal-DOIwvhxg.js`).then(e=>Q(e.crystal)),[])}}),D.of({name:`D`,extensions:[`d`],load(){return c(()=>import(`./d-C-SszuJl.js`).then(e=>Q(e.d)),[])}}),D.of({name:`Dart`,extensions:[`dart`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.dart)),[])}}),D.of({name:`diff`,extensions:[`diff`,`patch`],load(){return c(()=>import(`./diff-ShtlT2bx.js`).then(e=>Q(e.diff)),[])}}),D.of({name:`Dockerfile`,filename:/^Dockerfile$/,load(){return c(()=>import(`./dockerfile-Dp3-805k.js`).then(e=>Q(e.dockerFile)),__vite__mapDeps([22,23]))}}),D.of({name:`DTD`,extensions:[`dtd`],load(){return c(()=>import(`./dtd-8MJ8lS_0.js`).then(e=>Q(e.dtd)),[])}}),D.of({name:`Dylan`,extensions:[`dylan`,`dyl`,`intr`],load(){return c(()=>import(`./dylan-voPp4Lnr.js`).then(e=>Q(e.dylan)),[])}}),D.of({name:`EBNF`,load(){return c(()=>import(`./ebnf-BOhmWcS1.js`).then(e=>Q(e.ebnf)),[])}}),D.of({name:`ECL`,extensions:[`ecl`],load(){return c(()=>import(`./ecl-RJG9oOwI.js`).then(e=>Q(e.ecl)),[])}}),D.of({name:`edn`,extensions:[`edn`],load(){return c(()=>import(`./clojure-CcxW2IJv.js`).then(e=>Q(e.clojure)),[])}}),D.of({name:`Eiffel`,extensions:[`e`],load(){return c(()=>import(`./eiffel-vus1BykA.js`).then(e=>Q(e.eiffel)),[])}}),D.of({name:`Elm`,extensions:[`elm`],load(){return c(()=>import(`./elm-CIn5er_O.js`).then(e=>Q(e.elm)),[])}}),D.of({name:`Erlang`,extensions:[`erl`],load(){return c(()=>import(`./erlang-BZpoFusi.js`).then(e=>Q(e.erlang)),[])}}),D.of({name:`Esper`,load(){return c(()=>import(`./sql-CBAeWW94.js`).then(e=>Q(e.esper)),[])}}),D.of({name:`Factor`,extensions:[`factor`],load(){return c(()=>import(`./factor-CjtwL94V.js`).then(e=>Q(e.factor)),__vite__mapDeps([24,23]))}}),D.of({name:`FCL`,load(){return c(()=>import(`./fcl-BftBU32I.js`).then(e=>Q(e.fcl)),[])}}),D.of({name:`Forth`,extensions:[`forth`,`fth`,`4th`],load(){return c(()=>import(`./forth-DybRTL3E.js`).then(e=>Q(e.forth)),[])}}),D.of({name:`Fortran`,extensions:[`f`,`for`,`f77`,`f90`,`f95`],load(){return c(()=>import(`./fortran-GwYNmgHk.js`).then(e=>Q(e.fortran)),[])}}),D.of({name:`F#`,alias:[`fsharp`],extensions:[`fs`],load(){return c(()=>import(`./mllike-C-s_QyEB.js`).then(e=>Q(e.fSharp)),[])}}),D.of({name:`Gas`,extensions:[`s`],load(){return c(()=>import(`./gas-8KoJg94e.js`).then(e=>Q(e.gas)),[])}}),D.of({name:`Gherkin`,extensions:[`feature`],load(){return c(()=>import(`./gherkin-C7H8ynX6.js`).then(e=>Q(e.gherkin)),[])}}),D.of({name:`Groovy`,extensions:[`groovy`,`gradle`],filename:/^Jenkinsfile$/,load(){return c(()=>import(`./groovy-CRR-Vcjs.js`).then(e=>Q(e.groovy)),[])}}),D.of({name:`Haskell`,extensions:[`hs`],load(){return c(()=>import(`./haskell-z1a9p5yF.js`).then(e=>Q(e.haskell)),[])}}),D.of({name:`Haxe`,extensions:[`hx`],load(){return c(()=>import(`./haxe-Dv3OMOD9.js`).then(e=>Q(e.haxe)),[])}}),D.of({name:`HXML`,extensions:[`hxml`],load(){return c(()=>import(`./haxe-Dv3OMOD9.js`).then(e=>Q(e.hxml)),[])}}),D.of({name:`HTTP`,load(){return c(()=>import(`./http-DgYuQuYn.js`).then(e=>Q(e.http)),[])}}),D.of({name:`IDL`,extensions:[`pro`],load(){return c(()=>import(`./idl-O6XLB4Io.js`).then(e=>Q(e.idl)),[])}}),D.of({name:`JSON-LD`,alias:[`jsonld`],extensions:[`jsonld`],load(){return c(()=>import(`./javascript-Bbl3lVa4.js`).then(e=>Q(e.jsonld)),[])}}),D.of({name:`Julia`,extensions:[`jl`],load(){return c(()=>import(`./julia-BiDGRSib.js`).then(e=>Q(e.julia)),[])}}),D.of({name:`Kotlin`,extensions:[`kt`,`kts`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.kotlin)),[])}}),D.of({name:`LiveScript`,alias:[`ls`],extensions:[`ls`],load(){return c(()=>import(`./livescript-D4j4QcDE.js`).then(e=>Q(e.liveScript)),[])}}),D.of({name:`Lua`,extensions:[`lua`],load(){return c(()=>import(`./lua-DrndZqvf.js`).then(e=>Q(e.lua)),[])}}),D.of({name:`mIRC`,extensions:[`mrc`],load(){return c(()=>import(`./mirc-DBBsjdiW.js`).then(e=>Q(e.mirc)),[])}}),D.of({name:`Mathematica`,extensions:[`m`,`nb`,`wl`,`wls`],load(){return c(()=>import(`./mathematica-BbsyYBRU.js`).then(e=>Q(e.mathematica)),[])}}),D.of({name:`Modelica`,extensions:[`mo`],load(){return c(()=>import(`./modelica-YHKoTfmR.js`).then(e=>Q(e.modelica)),[])}}),D.of({name:`MUMPS`,extensions:[`mps`],load(){return c(()=>import(`./mumps-DK6yA9VZ.js`).then(e=>Q(e.mumps)),[])}}),D.of({name:`Mbox`,extensions:[`mbox`],load(){return c(()=>import(`./mbox-CRSCWnMU.js`).then(e=>Q(e.mbox)),[])}}),D.of({name:`Nginx`,filename:/nginx.*\.conf$/i,load(){return c(()=>import(`./nginx-D6byjnC9.js`).then(e=>Q(e.nginx)),[])}}),D.of({name:`NSIS`,extensions:[`nsh`,`nsi`],load(){return c(()=>import(`./nsis-ZMhnK7--.js`).then(e=>Q(e.nsis)),__vite__mapDeps([25,23]))}}),D.of({name:`NTriples`,extensions:[`nt`,`nq`],load(){return c(()=>import(`./ntriples-BUWSfWjW.js`).then(e=>Q(e.ntriples)),[])}}),D.of({name:`Objective-C`,alias:[`objective-c`,`objc`],extensions:[`m`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.objectiveC)),[])}}),D.of({name:`Objective-C++`,alias:[`objective-c++`,`objc++`],extensions:[`mm`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.objectiveCpp)),[])}}),D.of({name:`OCaml`,extensions:[`ml`,`mli`,`mll`,`mly`],load(){return c(()=>import(`./mllike-C-s_QyEB.js`).then(e=>Q(e.oCaml)),[])}}),D.of({name:`Octave`,extensions:[`m`],load(){return c(()=>import(`./octave-C0FRWWHg.js`).then(e=>Q(e.octave)),[])}}),D.of({name:`Oz`,extensions:[`oz`],load(){return c(()=>import(`./oz-D1y5dsno.js`).then(e=>Q(e.oz)),[])}}),D.of({name:`Pascal`,extensions:[`p`,`pas`],load(){return c(()=>import(`./pascal-CXWRX2ZL.js`).then(e=>Q(e.pascal)),[])}}),D.of({name:`Perl`,extensions:[`pl`,`pm`],load(){return c(()=>import(`./perl-Nb2JhPOT.js`).then(e=>Q(e.perl)),[])}}),D.of({name:`Pig`,extensions:[`pig`],load(){return c(()=>import(`./pig-BbwUhgOd.js`).then(e=>Q(e.pig)),[])}}),D.of({name:`PowerShell`,extensions:[`ps1`,`psd1`,`psm1`],load(){return c(()=>import(`./powershell-CCuIKo06.js`).then(e=>Q(e.powerShell)),[])}}),D.of({name:`Properties files`,alias:[`ini`,`properties`],extensions:[`properties`,`ini`,`in`],load(){return c(()=>import(`./properties-DK1cZUXK.js`).then(e=>Q(e.properties)),[])}}),D.of({name:`ProtoBuf`,extensions:[`proto`],load(){return c(()=>import(`./protobuf-CPs2RkmD.js`).then(e=>Q(e.protobuf)),[])}}),D.of({name:`Pug`,alias:[`jade`],extensions:[`pug`,`jade`],load(){return c(()=>import(`./pug-D14mjHau.js`).then(e=>Q(e.pug)),__vite__mapDeps([26,27]))}}),D.of({name:`Puppet`,extensions:[`pp`],load(){return c(()=>import(`./puppet-D5s-oq2m.js`).then(e=>Q(e.puppet)),[])}}),D.of({name:`Q`,extensions:[`q`],load(){return c(()=>import(`./q-BkEiMjEI.js`).then(e=>Q(e.q)),[])}}),D.of({name:`R`,alias:[`rscript`],extensions:[`r`,`R`],load(){return c(()=>import(`./r-BW0_2ktb.js`).then(e=>Q(e.r)),[])}}),D.of({name:`RPM Changes`,load(){return c(()=>import(`./rpm-Dq4R8p2X.js`).then(e=>Q(e.rpmChanges)),[])}}),D.of({name:`RPM Spec`,extensions:[`spec`],load(){return c(()=>import(`./rpm-Dq4R8p2X.js`).then(e=>Q(e.rpmSpec)),[])}}),D.of({name:`Ruby`,alias:[`jruby`,`macruby`,`rake`,`rb`,`rbx`],extensions:[`rb`],filename:/^(Gemfile|Rakefile)$/,load(){return c(()=>import(`./ruby-CWNYdZZ6.js`).then(e=>Q(e.ruby)),[])}}),D.of({name:`SAS`,extensions:[`sas`],load(){return c(()=>import(`./sas-D54DuI2F.js`).then(e=>Q(e.sas)),[])}}),D.of({name:`Scala`,extensions:[`scala`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.scala)),[])}}),D.of({name:`Scheme`,extensions:[`scm`,`ss`],load(){return c(()=>import(`./scheme-DkRlhi-K.js`).then(e=>Q(e.scheme)),[])}}),D.of({name:`Shell`,alias:[`bash`,`sh`,`zsh`],extensions:[`sh`,`ksh`,`bash`],filename:/^PKGBUILD$/,load(){return c(()=>import(`./shell-P3Z8RfXs.js`).then(e=>Q(e.shell)),[])}}),D.of({name:`Sieve`,extensions:[`siv`,`sieve`],load(){return c(()=>import(`./sieve-c1M0QZ2n.js`).then(e=>Q(e.sieve)),[])}}),D.of({name:`Smalltalk`,extensions:[`st`],load(){return c(()=>import(`./smalltalk-CA6eHjU7.js`).then(e=>Q(e.smalltalk)),[])}}),D.of({name:`Solr`,load(){return c(()=>import(`./solr-BQyBj1xS.js`).then(e=>Q(e.solr)),[])}}),D.of({name:`SML`,extensions:[`sml`,`sig`,`fun`,`smackspec`],load(){return c(()=>import(`./mllike-C-s_QyEB.js`).then(e=>Q(e.sml)),[])}}),D.of({name:`SPARQL`,alias:[`sparul`],extensions:[`rq`,`sparql`],load(){return c(()=>import(`./sparql-DqsuRTT9.js`).then(e=>Q(e.sparql)),[])}}),D.of({name:`Spreadsheet`,alias:[`excel`,`formula`],load(){return c(()=>import(`./spreadsheet-D9zGodzn.js`).then(e=>Q(e.spreadsheet)),[])}}),D.of({name:`Squirrel`,extensions:[`nut`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.squirrel)),[])}}),D.of({name:`Stylus`,extensions:[`styl`],load(){return c(()=>import(`./stylus-6EAP9zMY.js`).then(e=>Q(e.stylus)),[])}}),D.of({name:`Swift`,extensions:[`swift`],load(){return c(()=>import(`./swift-f2MyNtED.js`).then(e=>Q(e.swift)),[])}}),D.of({name:`sTeX`,load(){return c(()=>import(`./stex-BkfbBN0w.js`).then(e=>Q(e.stex)),[])}}),D.of({name:`LaTeX`,alias:[`tex`],extensions:[`text`,`ltx`,`tex`],load(){return c(()=>import(`./stex-BkfbBN0w.js`).then(e=>Q(e.stex)),[])}}),D.of({name:`SystemVerilog`,extensions:[`v`,`sv`,`svh`],load(){return c(()=>import(`./verilog-BW7k28i6.js`).then(e=>Q(e.verilog)),[])}}),D.of({name:`Tcl`,extensions:[`tcl`],load(){return c(()=>import(`./tcl-OqDhTnyD.js`).then(e=>Q(e.tcl)),[])}}),D.of({name:`Textile`,extensions:[`textile`],load(){return c(()=>import(`./textile-QNc02XN3.js`).then(e=>Q(e.textile)),[])}}),D.of({name:`TiddlyWiki`,load(){return c(()=>import(`./tiddlywiki-C3wld6xI.js`).then(e=>Q(e.tiddlyWiki)),[])}}),D.of({name:`Tiki wiki`,load(){return c(()=>import(`./tiki-C8ugQKuz.js`).then(e=>Q(e.tiki)),[])}}),D.of({name:`TOML`,extensions:[`toml`],load(){return c(()=>import(`./toml-Cn7GHlXw.js`).then(e=>Q(e.toml)),[])}}),D.of({name:`Troff`,extensions:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],load(){return c(()=>import(`./troff-DJ8EStsE.js`).then(e=>Q(e.troff)),[])}}),D.of({name:`TTCN`,extensions:[`ttcn`,`ttcn3`,`ttcnpp`],load(){return c(()=>import(`./ttcn-DzfCmAHa.js`).then(e=>Q(e.ttcn)),[])}}),D.of({name:`TTCN_CFG`,extensions:[`cfg`],load(){return c(()=>import(`./ttcn-cfg-DdXokgLu.js`).then(e=>Q(e.ttcnCfg)),[])}}),D.of({name:`Turtle`,extensions:[`ttl`],load(){return c(()=>import(`./turtle-BGTYpV3Q.js`).then(e=>Q(e.turtle)),[])}}),D.of({name:`Web IDL`,extensions:[`webidl`],load(){return c(()=>import(`./webidl-U4mPbQFA.js`).then(e=>Q(e.webIDL)),[])}}),D.of({name:`VB.NET`,extensions:[`vb`],load(){return c(()=>import(`./vb-By0_Pw9I.js`).then(e=>Q(e.vb)),[])}}),D.of({name:`VBScript`,extensions:[`vbs`],load(){return c(()=>import(`./vbscript-cpXX_O0K.js`).then(e=>Q(e.vbScript)),[])}}),D.of({name:`Velocity`,extensions:[`vtl`],load(){return c(()=>import(`./velocity-D6G7AWmA.js`).then(e=>Q(e.velocity)),[])}}),D.of({name:`Verilog`,extensions:[`v`],load(){return c(()=>import(`./verilog-BW7k28i6.js`).then(e=>Q(e.verilog)),[])}}),D.of({name:`VHDL`,extensions:[`vhd`,`vhdl`],load(){return c(()=>import(`./vhdl-DogEWmND.js`).then(e=>Q(e.vhdl)),[])}}),D.of({name:`XQuery`,extensions:[`xy`,`xquery`,`xq`,`xqm`,`xqy`],load(){return c(()=>import(`./xquery-hpetwfX6.js`).then(e=>Q(e.xQuery)),[])}}),D.of({name:`Yacas`,extensions:[`ys`],load(){return c(()=>import(`./yacas-CyeqBV_J.js`).then(e=>Q(e.yacas)),[])}}),D.of({name:`Z80`,extensions:[`z80`],load(){return c(()=>import(`./z80-B3ye1Koq.js`).then(e=>Q(e.z80)),[])}}),D.of({name:`MscGen`,extensions:[`mscgen`,`mscin`,`msc`],load(){return c(()=>import(`./mscgen-Mg0UrQo9.js`).then(e=>Q(e.mscgen)),[])}}),D.of({name:`Xù`,extensions:[`xu`],load(){return c(()=>import(`./mscgen-Mg0UrQo9.js`).then(e=>Q(e.xu)),[])}}),D.of({name:`MsGenny`,extensions:[`msgenny`],load(){return c(()=>import(`./mscgen-Mg0UrQo9.js`).then(e=>Q(e.msgenny)),[])}}),D.of({name:`Vue`,extensions:[`vue`],load(){return c(()=>import(`./dist-CqAGQCuu.js`).then(e=>e.vue()),__vite__mapDeps([28,7,5,4,2,8,1]))}}),D.of({name:`Angular Template`,load(){return c(()=>import(`./dist-BV428gYa.js`).then(e=>e.angular()),__vite__mapDeps([29,7,5,4,2,8,1]))}})];function ar({initialContent:e,onChange:t,isDark:n=!1,className:r}){let i=(0,O.useRef)(null),a=(0,O.useRef)(null),o=(0,O.useRef)(t);o.current=t;let s=(0,O.useRef)(e);return s.current=e,(0,O.useEffect)(()=>{if(i.current)return a.current=new h({state:pe.create({doc:s.current,extensions:[Te({base:Ee,codeLanguages:ir}),w(),be(),Ye(),n?rr:oe(he),le.of([...Vn,...lt]),h.updateListener.of(e=>{e.docChanged&&o.current(e.state.doc.toString())}),h.theme({"&":{height:`100%`,fontSize:`14px`},".cm-scroller":{fontFamily:`var(--font-mono)`,lineHeight:`1.7`,overflow:`auto`},".cm-content":{padding:`16px 20px`},".cm-focused":{outline:`none`}})]}),parent:i.current}),()=>{a.current?.destroy(),a.current=null}},[n]),(0,k.jsx)(`div`,{ref:i,className:`h-full w-full overflow-hidden ${r??``}`})}function or(e){return`${e.id} ${e.name} ${e.provider}`.toLowerCase()}function sr(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=n.split(/\s+/).filter(Boolean);return e.filter(e=>{let t=or(e);return r.every(e=>t.includes(e))})}function cr({value:e,disabled:t,placeholder:n,searchPlaceholder:i,noMatches:o,compact:c,showProviderInTrigger:u=!0,contentSide:m=`bottom`,contentAlign:oe=`end`,className:se,popoverContentClassName:ce,showProviderSettingsFooter:h,onChange:g}){let le=l(),_=r(a(e=>e.language)).chat,[v,y]=(0,O.useState)(!1),[b,x]=(0,O.useState)(``),{data:S=[],isLoading:C,error:w}=s(`gateway-configured-models`,Fe,{revalidateOnFocus:!1}),ue=(0,O.useMemo)(()=>sr(S,b),[S,b]),T=S.find(t=>t.id===e),de=T?u?`${T.name} (${T.provider})`:T.name:e||n;return(0,k.jsxs)(ne,{open:v,onOpenChange:y,children:[(0,k.jsx)(ie,{asChild:!0,children:(0,k.jsxs)(`button`,{type:`button`,disabled:t||C,title:T?`${T.name} (${T.provider})`:n,className:d(p,`items-center gap-2 rounded-lg border border-edge-subtle bg-surface-panel px-3 py-2 text-left text-sm font-normal text-fg`,De.transition,`hover:border-edge hover:bg-surface-hover/45`,ee,`disabled:cursor-not-allowed disabled:opacity-50`,`dark:border-edge-subtle dark:hover:bg-surface-hover/55`,c&&`py-1.5 text-[13px]`,se),children:[(0,k.jsx)(`span`,{className:`min-w-0 truncate`,children:C?`…`:de}),(0,k.jsx)(Oe,{className:`h-4 w-4 shrink-0 text-fg-subtle opacity-70`,"aria-hidden":!0})]})}),(0,k.jsx)(re,{children:(0,k.jsxs)(ae,{className:d(`z-50 w-[min(22rem,calc(100vw-2rem))] rounded-xl border border-edge-subtle bg-surface-panel p-1 shadow-elevated dark:border-edge-subtle`,ce),side:m,sideOffset:4,align:oe,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,k.jsx)(`input`,{type:`search`,className:d(`mb-1 w-full rounded-lg border border-edge-subtle bg-surface-base px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-disabled dark:bg-surface-hover/40`,te),placeholder:i,value:b,onChange:e=>x(e.target.value)}),(0,k.jsxs)(`div`,{className:`max-h-60 overflow-auto`,children:[w?(0,k.jsx)(`div`,{className:`px-2 py-2 text-xs text-red-600 dark:text-red-400`,children:w instanceof Error?w.message:`Failed to load models`}):null,!w&&ue.length===0?(0,k.jsx)(`div`,{className:`px-2 py-3 text-center text-xs text-fg-muted`,children:o}):null,ue.map(t=>(0,k.jsxs)(`button`,{type:`button`,className:d(`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm text-fg hover:bg-surface-hover`,t.id===e&&`bg-surface-hover/90 font-medium dark:bg-surface-hover/70`),onClick:()=>{g(t.id),y(!1),x(``)},children:[(0,k.jsx)(f,{className:d(`h-4 w-4 shrink-0`,t.id!==e&&`invisible`),"aria-hidden":!0}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[(0,k.jsx)(`span`,{className:`font-medium`,children:t.name}),` `,(0,k.jsxs)(`span`,{className:`text-fg-muted`,children:[`(`,t.provider,`)`]})]})]},t.id))]}),h?(0,k.jsx)(`div`,{className:`mt-1 border-t border-edge-subtle pt-1`,children:(0,k.jsxs)(`button`,{type:`button`,className:d(`flex w-full items-center gap-2 rounded-md px-2 py-2 text-left text-sm font-medium text-accent`,De.transition,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40`),onClick:()=>{le(`/settings/providers`),y(!1),x(``)},children:[(0,k.jsx)(Ae,{className:`h-4 w-4 shrink-0 opacity-90`,"aria-hidden":!0}),(0,k.jsx)(`span`,{className:`min-w-0`,children:_.modelProviderSettingsLink})]})}):null]})})]})}export{Ye as a,je as c,Oe as d,Vn as i,Ae as l,ar as n,lt as o,rr as r,Fe as s,cr as t,ke as u};
|
|
3
|
-
//# sourceMappingURL=model-selector-
|
|
2
|
+
import{i as e}from"./rolldown-runtime-B1FJdls4.js";import{i as t,t as n}from"./vendor-react-QAsRxa6t.js";import{l as r,n as i,s as a,t as o}from"./url-CtSqjF9J.js";import{r as s}from"./vendor-swr-8rdcElid.js";import{t as c}from"./preload-helper-DzyYoeor.js";import{l}from"./chunk-QFMPRPBF-DOYp8d2p.js";import{r as u,t as d}from"./cn-DPF56z7S.js";import{t as f}from"./check-CDc_K89l.js";import{a as ee,n as p,r as te}from"./form-field-width-BlpNwrfn.js";import{a as ne,i as re,o as ie,r as ae}from"./dist-CpMMntuC.js";import{$ as m,A as oe,C as se,E as ce,G as h,I as g,J as le,O as _,P as v,Q as y,S as b,T as x,W as S,X as C,Y as w,Z as ue,a as T,at as de,ct as fe,dt as E,et as pe,f as me,h as he,j as ge,l as D,lt as _e,o as ve,ot as ye,q as be,st as xe,tt as Se,u as Ce,ut as we}from"./dist-CjRB05pZ.js";import{n as Te,r as Ee}from"./dist-CKHmCbpd.js";import{n as De}from"./interaction-C4gx-xSs.js";var Oe=u(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),ke=u(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),Ae=u(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),je=u(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),O=e(t(),1),k=n();async function Me(){let e=await i(o(`/api/models`));if(!e.ok)throw Error(`Models: HTTP ${e.status}`);return(await e.json()).payload?.models??[]}var A=null,Ne=0,j=null,Pe=6e4;async function Fe(e=!1){if(!e&&A&&Date.now()<Ne)return A;if(e){let e=await Me();return A=e,Ne=Date.now()+Pe,e}return j||(j=Me().then(e=>(A=e,Ne=Date.now()+Pe,e)).finally(()=>{j=null}),j)}var Ie=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=N(e.state,n.from);return r.line?Le(e):r.block?ze(e):!1};function M(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}var Le=M(Ue,0),Re=M(He,0),ze=M((e,t)=>He(e,t,Ve(t)),0);function N(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var P=50;function Be(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-P,r),o=e.sliceDoc(i,i+P),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=2*P?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+P),d=e.sliceDoc(i-P,i));let f=/^\s*/.exec(u)[0].length,ee=/\s*$/.exec(d)[0].length,p=d.length-ee-n.length;return u.slice(f,f+t.length)==t&&d.slice(p,p+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-ee-n.length,margin:+!!/\s/.test(d.charAt(p-1))}}:null}function Ve(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function He(e,t,n=t.selection.ranges){let r=n.map(e=>N(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>Be(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;t<i.length;t++)if(n=i[t]){let i=r[t],{open:a,close:o}=n;e.push({from:a.pos-i.open.length,to:a.pos+a.margin},{from:o.pos-o.margin,to:o.pos+i.close.length})}return{changes:e}}return null}function Ue(e,t,n=t.selection.ranges){let r=[],i=-1;ranges:for(let{from:e,to:a}of n){let n=r.length,o=1e9,s;for(let n=e;n<=a;){let c=t.doc.lineAt(n);if(s==null&&(s=N(t,c.from).line,!s))continue ranges;if(c.from>i&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;e<c.text.length&&e<o&&(o=e),r.push({line:c,comment:n,token:s,indent:e,empty:t,single:!1})}n=c.to+1}if(o<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=o);r.length==n+1&&(r[n].single=!0)}if(e!=2&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}else if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}var We=C.define(),Ge=C.define(),Ke=Se.define(),qe=Se.define({combine(e){return _e(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),Je=ye.define({create(){return z.empty},update(e,t){let n=t.state.facet(qe),r=t.annotation(We);if(r){let i=I.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?L(o,o.length,n.minDepth,i):it(o,t.startState.selection),new z(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(Ge);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(fe.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=I.fromTransaction(t),o=t.annotation(fe.time),s=t.annotation(fe.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new z(e.done.map(I.fromJSON),e.undone.map(I.fromJSON))}});function Ye(e={}){return[Je,qe.of(e),h.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?Xe:e.inputType==`historyRedo`?Ze:null;return n?(e.preventDefault(),n(t)):!1}})]}function F(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Je,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var Xe=F(0,!1),Ze=F(1,!1),Qe=F(0,!0),$e=F(1,!0),I=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&y.fromJSON(t.changes),[],t.mapped&&ue.fromJSON(t.mapped),t.startSelection&&m.fromJSON(t.startSelection),t.selectionsAfter.map(m.fromJSON))}static fromTransaction(t,n){let r=R;for(let e of t.startState.facet(Ke)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,R)}static selection(t){return new e(void 0,R,void 0,void 0,t)}};function L(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function et(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e<n.length;){let t=n[e++],o=n[e++];a>=t&&i<=o&&(r=!0)}}),r}function tt(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function nt(e,t){return e.length?t.length?e.concat(t):e:t}var R=[],rt=200;function it(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-rt));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),L(e,e.length-1,1e9,n.setSelAfter(r)))}else return[I.selection([t])]}function at(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function ot(e,t){if(!e.length)return e;let n=e.length,r=R;for(;n;){let i=st(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}else t=i.mapped,n--,r=i.selectionsAfter}return r.length?[I.selection(r)]:R}function st(e,t,n){let r=nt(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):R,n);if(!e.changes)return I.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new I(i,de.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var ct=/^(input\.type|delete)($|\.)/,z=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||ct.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,et(s.changes,t.changes))||r==`input.type.compose`)?L(o,o.length-1,i.minDepth,new I(t.changes.compose(s.changes),nt(de.mapEffects(t.effects,s.changes),s.effects),s.mapped,s.startSelection,R)):L(o,o.length,i.minDepth,t),new e(o,R,n,r)}addSelection(t,n,r,i){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:R;return a.length>0&&n-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&tt(a[a.length-1],t)?this:new e(it(this.done,t),this.undone,n,r)}addMapping(t){return new e(ot(this.done,t),ot(this.undone,t),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let i=r[r.length-1],a=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:We.of({side:e,rest:at(r),selection:a}),userEvent:e==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(i.changes){let n=r.length==1?R:r.slice(0,r.length-1);return i.mapped&&(n=ot(n,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:We.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}else return null}};z.empty=new z(R,R);var lt=[{key:`Mod-z`,run:Xe,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:Ze,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:Ze,preventDefault:!0},{key:`Mod-u`,run:Qe,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:$e,preventDefault:!0}];function B(e,t){return m.create(e.ranges.map(t),e.mainIndex)}function V(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:`select`})}function H({state:e,dispatch:t},n){let r=B(e.selection,n);return r.eq(e.selection,!0)?!1:(t(V(e,r)),!0)}function U(e,t){return m.cursor(t?e.to:e.from)}function ut(e,t){return H(e,n=>n.empty?e.moveByChar(n,t):U(n,t))}function W(e){return e.textDirectionAt(e.state.selection.main.head)==S.LTR}var dt=e=>ut(e,!W(e)),ft=e=>ut(e,W(e));function pt(e,t){return H(e,n=>n.empty?e.moveByGroup(n,t):U(n,t))}var mt=e=>pt(e,!W(e)),ht=e=>pt(e,W(e));typeof Intl<`u`&&Intl.Segmenter;function gt(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function G(e,t,n){let r=ge(e).resolveInner(t.head),i=n?g.closedBy:g.openedBy;for(let a=t.head;;){let t=n?r.childAfter(a):r.childBefore(a);if(!t)break;gt(e,t,i)?r=t:a=n?t.to:t.from}let a=r.type.prop(i),o,s;return s=a&&(o=n?_(e,r.from,1):_(e,r.to,-1))&&o.matched?n?o.end.to:o.end.from:n?r.to:r.from,m.cursor(s,n?-1:1)}var _t=e=>H(e,t=>G(e.state,t,!W(e))),vt=e=>H(e,t=>G(e.state,t,W(e)));function yt(e,t){return H(e,n=>{if(!n.empty)return U(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}var bt=e=>yt(e,!1),xt=e=>yt(e,!0);function St(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(h.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function Ct(e,t){let n=St(e),{state:r}=e,i=B(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):U(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),s=o.top+n.marginTop,c=o.bottom-n.marginBottom;t&&t.top>s&&t.bottom<c&&(a=h.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-s}))}return e.dispatch(V(r,i),{effects:a}),!0}var wt=e=>Ct(e,!1),Tt=e=>Ct(e,!0);function K(e,t,n){let r=e.lineBlockAt(t.head),i=e.moveToLineBoundary(t,n);if(i.head==t.head&&i.head!=(n?r.to:r.from)&&(i=e.moveToLineBoundary(t,n,!1)),!n&&i.head==r.from&&r.length){let n=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;n&&t.head!=r.from+n&&(i=m.cursor(r.from+n))}return i}var Et=e=>H(e,t=>K(e,t,!0)),Dt=e=>H(e,t=>K(e,t,!1)),Ot=e=>H(e,t=>K(e,t,!W(e))),kt=e=>H(e,t=>K(e,t,W(e))),At=e=>H(e,t=>m.cursor(e.lineBlockAt(t.head).from,1)),jt=e=>H(e,t=>m.cursor(e.lineBlockAt(t.head).to,-1));function Mt(e,t,n){let r=!1,i=B(e.selection,t=>{let i=_(e,t.head,-1)||_(e,t.head,1)||t.head>0&&_(e,t.head-1,1)||t.head<e.doc.length&&_(e,t.head+1,-1);if(!i||!i.end)return t;r=!0;let a=i.start.from==t.head?i.end.to:i.end.from;return n?m.range(t.anchor,a):m.cursor(a)});return r?(t(V(e,i)),!0):!1}var Nt=({state:e,dispatch:t})=>Mt(e,t,!1);function q(e,t){let n=B(e.state.selection,e=>{let n=t(e);return m.range(e.anchor,n.head,n.goalColumn,n.bidiLevel||void 0,n.assoc)});return n.eq(e.state.selection)?!1:(e.dispatch(V(e.state,n)),!0)}function Pt(e,t){return q(e,n=>e.moveByChar(n,t))}var Ft=e=>Pt(e,!W(e)),It=e=>Pt(e,W(e));function Lt(e,t){return q(e,n=>e.moveByGroup(n,t))}var Rt=e=>Lt(e,!W(e)),zt=e=>Lt(e,W(e)),Bt=e=>q(e,t=>G(e.state,t,!W(e))),Vt=e=>q(e,t=>G(e.state,t,W(e)));function Ht(e,t){return q(e,n=>e.moveVertically(n,t))}var Ut=e=>Ht(e,!1),Wt=e=>Ht(e,!0);function Gt(e,t){return q(e,n=>e.moveVertically(n,t,St(e).height))}var Kt=e=>Gt(e,!1),qt=e=>Gt(e,!0),Jt=e=>q(e,t=>K(e,t,!0)),Yt=e=>q(e,t=>K(e,t,!1)),Xt=e=>q(e,t=>K(e,t,!W(e))),Zt=e=>q(e,t=>K(e,t,W(e))),Qt=e=>q(e,t=>m.cursor(e.lineBlockAt(t.head).from)),$t=e=>q(e,t=>m.cursor(e.lineBlockAt(t.head).to)),en=({state:e,dispatch:t})=>(t(V(e,{anchor:0})),!0),tn=({state:e,dispatch:t})=>(t(V(e,{anchor:e.doc.length})),!0),nn=({state:e,dispatch:t})=>(t(V(e,{anchor:e.selection.main.anchor,head:0})),!0),rn=({state:e,dispatch:t})=>(t(V(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),an=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),on=({state:e,dispatch:t})=>{let n=X(e).map(({from:t,to:n})=>m.range(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:m.create(n),userEvent:`select`})),!0},sn=({state:e,dispatch:t})=>{let n=B(e.selection,t=>{let n=ge(e),r=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=r.node.from&&e.node.to<=r.node.to&&(r=e)}for(let e=r;e;e=e.next){let{node:n}=e;if((n.from<t.from&&n.to>=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return m.range(n.to,n.from)}return t});return n.eq(e.selection)?!1:(t(V(e,n)),!0)};function cn(e,t){let{state:n}=e,r=n.selection,i=n.selection.ranges.slice();for(let r of n.selection.ranges){let a=n.doc.lineAt(r.head);if(t?a.to<e.state.doc.length:a.from>0)for(let n=r;;){let r=e.moveVertically(n,t);if(r.head<a.from||r.head>a.to){i.some(e=>e.head==r.head)||i.push(r);break}else if(r.head==n.head)break;else n=r}}return i.length==r.ranges.length?!1:(e.dispatch(V(n,m.create(i,i.length-1))),!0)}var ln=e=>cn(e,!1),un=e=>cn(e,!0),dn=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=m.create([n.main]):n.main.empty||(r=m.create([m.cursor(n.main.head)])),r?(t(V(e,r)),!0):!1};function J(e,t){if(e.state.readOnly)return!1;let n=`delete.selection`,{state:r}=e,i=r.changeByRange(r=>{let{from:i,to:a}=r;if(i==a){let o=t(r);o<i?(n=`delete.backward`,o=Y(e,o,!1)):o>i&&(n=`delete.forward`,o=Y(e,o,!0)),i=Math.min(i,o),a=Math.max(a,o)}else i=Y(e,i,!1),a=Y(e,a,!0);return i==a?{range:r}:{changes:{from:i,to:a},range:m.cursor(i,i<r.head?-1:1)}});return i.changes.empty?!1:(e.dispatch(r.update(i,{scrollIntoView:!0,userEvent:n,effects:n==`delete.selection`?h.announce.of(r.phrase(`Selection deleted`)):void 0})),!0)}function Y(e,t,n){if(e instanceof h)for(let r of e.state.facet(h.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}var fn=(e,t,n)=>J(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=we(s,a.tabSize)%b(a)||b(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=E(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=E(o.text,c-o.from,!1,!1)+o.from);return c}),pn=e=>fn(e,!1,!0),mn=e=>fn(e,!0,!1),hn=(e,t)=>J(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=E(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),gn=e=>hn(e,!1),_n=e=>hn(e,!0),vn=e=>J(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),yn=e=>J(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),bn=e=>J(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),xn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:xe.of([``,``])},range:m.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:`input`})),!0},Sn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let n=t.from,r=e.doc.lineAt(n),i=n==r.from?n-1:E(r.text,n-r.from,!1)+r.from,a=n==r.to?n+1:E(r.text,n-r.from,!0)+r.from;return{changes:{from:i,to:a,insert:e.doc.slice(n,a).append(e.doc.slice(i,n))},range:m.cursor(a)}});return n.changes.empty?!1:(t(e.update(n,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function X(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function Cn(e,t,n){if(e.readOnly)return!1;let r=[],i=[];for(let t of X(e)){if(n?t.to==e.doc.length:t.from==0)continue;let a=e.doc.lineAt(n?t.to+1:t.from-1),o=a.length+1;if(n){r.push({from:t.to,to:a.to},{from:t.from,insert:a.text+e.lineBreak});for(let n of t.ranges)i.push(m.range(Math.min(e.doc.length,n.anchor+o),Math.min(e.doc.length,n.head+o)))}else{r.push({from:a.from,to:t.from},{from:t.to,insert:e.lineBreak+a.text});for(let e of t.ranges)i.push(m.range(e.anchor-o,e.head-o))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:m.create(i,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var wn=({state:e,dispatch:t})=>Cn(e,t,!1),Tn=({state:e,dispatch:t})=>Cn(e,t,!0);function En(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of X(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}var Dn=({state:e,dispatch:t})=>En(e,t,!1),On=({state:e,dispatch:t})=>En(e,t,!0),kn=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(X(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=B(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function An(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=ge(e).resolveInner(t),r=n.childBefore(t),i=n.childAfter(t),a;return r&&i&&r.to<=t&&i.from>=t&&(a=r.type.prop(g.closedBy))&&a.indexOf(i.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(i.from).from&&!/\S/.test(e.sliceDoc(r.to,i.from))?{from:r.to,to:i.from}:null}var jn=Nn(!1),Mn=Nn(!0);function Nn(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{let{from:r,to:i}=n,a=t.doc.lineAt(r),o=!e&&r==i&&An(t,r);e&&(r=i=(i<=a.to?a:t.doc.lineAt(i)).to);let s=new ve(t,{simulateBreak:r,simulateDoubleBreak:!!o}),c=se(s,r);for(c??=we(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize);i<a.to&&/\s/.test(a.text[i-a.from]);)i++;o?{from:r,to:i}=o:r>a.from&&r<a.from+100&&!/\S/.test(a.text.slice(0,r))&&(r=a.from);let l=[``,x(t,c)];return o&&l.push(x(t,s.lineIndent(a.from,-1))),{changes:{from:r,to:i,insert:xe.of(l)},range:m.cursor(r+1+l[1].length)}});return n(t.update(r,{scrollIntoView:!0,userEvent:`input`})),!0}}function Pn(e,t){let n=-1;return e.changeByRange(r=>{let i=[];for(let a=r.from;a<=r.to;){let o=e.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(t(o,i,r),n=o.number),a=o.to+1}let a=e.changes(i);return{changes:i,range:m.range(a.mapPos(r.anchor,1),a.mapPos(r.head,1))}})}var Fn=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new ve(e,{overrideIndentation:e=>n[e]??-1}),i=Pn(e,(t,i,a)=>{let o=se(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=x(e,o);(s!=c||a.from<t.from+s.length)&&(n[t.from]=o,i.push({from:t.from,to:t.from+s.length,insert:c}))});return i.changes.empty||t(e.update(i,{userEvent:`indent`})),!0},In=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(Pn(e,(t,n)=>{n.push({from:t.from,insert:e.facet(ce)})}),{userEvent:`input.indent`})),!0),Ln=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update(Pn(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=we(r,e.tabSize),a=0,o=x(e,Math.max(0,i-b(e)));for(;a<r.length&&a<o.length&&r.charCodeAt(a)==o.charCodeAt(a);)a++;n.push({from:t.from+a,to:t.from+r.length,insert:o.slice(a)})}),{userEvent:`delete.dedent`})),!0),Rn=e=>(e.setTabFocusMode(),!0),zn=[{key:`Ctrl-b`,run:dt,shift:Ft,preventDefault:!0},{key:`Ctrl-f`,run:ft,shift:It},{key:`Ctrl-p`,run:bt,shift:Ut},{key:`Ctrl-n`,run:xt,shift:Wt},{key:`Ctrl-a`,run:At,shift:Qt},{key:`Ctrl-e`,run:jt,shift:$t},{key:`Ctrl-d`,run:mn},{key:`Ctrl-h`,run:pn},{key:`Ctrl-k`,run:vn},{key:`Ctrl-Alt-h`,run:gn},{key:`Ctrl-o`,run:xn},{key:`Ctrl-t`,run:Sn},{key:`Ctrl-v`,run:Tt}],Bn=[{key:`ArrowLeft`,run:dt,shift:Ft,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:mt,shift:Rt,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:Ot,shift:Xt,preventDefault:!0},{key:`ArrowRight`,run:ft,shift:It,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:ht,shift:zt,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:kt,shift:Zt,preventDefault:!0},{key:`ArrowUp`,run:bt,shift:Ut,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:en,shift:nn},{mac:`Ctrl-ArrowUp`,run:wt,shift:Kt},{key:`ArrowDown`,run:xt,shift:Wt,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:tn,shift:rn},{mac:`Ctrl-ArrowDown`,run:Tt,shift:qt},{key:`PageUp`,run:wt,shift:Kt},{key:`PageDown`,run:Tt,shift:qt},{key:`Home`,run:Dt,shift:Yt,preventDefault:!0},{key:`Mod-Home`,run:en,shift:nn},{key:`End`,run:Et,shift:Jt,preventDefault:!0},{key:`Mod-End`,run:tn,shift:rn},{key:`Enter`,run:jn,shift:jn},{key:`Mod-a`,run:an},{key:`Backspace`,run:pn,shift:pn,preventDefault:!0},{key:`Delete`,run:mn,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:gn,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:_n,preventDefault:!0},{mac:`Mod-Backspace`,run:yn,preventDefault:!0},{mac:`Mod-Delete`,run:bn,preventDefault:!0}].concat(zn.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Vn=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:_t,shift:Bt},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:vt,shift:Vt},{key:`Alt-ArrowUp`,run:wn},{key:`Shift-Alt-ArrowUp`,run:Dn},{key:`Alt-ArrowDown`,run:Tn},{key:`Shift-Alt-ArrowDown`,run:On},{key:`Mod-Alt-ArrowUp`,run:ln},{key:`Mod-Alt-ArrowDown`,run:un},{key:`Escape`,run:dn},{key:`Mod-Enter`,run:Mn},{key:`Alt-l`,mac:`Ctrl-l`,run:on},{key:`Mod-i`,run:sn,preventDefault:!0},{key:`Mod-[`,run:Ln},{key:`Mod-]`,run:In},{key:`Mod-Alt-\\`,run:Fn},{key:`Shift-Mod-k`,run:kn},{key:`Shift-Mod-\\`,run:Nt},{key:`Mod-/`,run:Ie},{key:`Alt-A`,run:Re},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:Rn}].concat(Bn),Hn=`#e5c07b`,Un=`#e06c75`,Wn=`#56b6c2`,Gn=`#ffffff`,Z=`#abb2bf`,Kn=`#7d8799`,qn=`#61afef`,Jn=`#98c379`,Yn=`#d19a66`,Xn=`#c678dd`,Zn=`#21252b`,Qn=`#2c313a`,$n=`#282c34`,er=`#353a42`,tr=`#3E4451`,nr=`#528bff`,rr=[h.theme({"&":{color:Z,backgroundColor:$n},".cm-content":{caretColor:nr},".cm-cursor, .cm-dropCursor":{borderLeftColor:nr},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:tr},".cm-panels":{backgroundColor:Zn,color:Z},".cm-panels.cm-panels-top":{borderBottom:`2px solid black`},".cm-panels.cm-panels-bottom":{borderTop:`2px solid black`},".cm-searchMatch":{backgroundColor:`#72a1ff59`,outline:`1px solid #457dff`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`#6199ff2f`},".cm-activeLine":{backgroundColor:`#6699ff0b`},".cm-selectionMatch":{backgroundColor:`#aafe661a`},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bad0f847`},".cm-gutters":{backgroundColor:$n,color:Kn,border:`none`},".cm-activeLineGutter":{backgroundColor:Qn},".cm-foldPlaceholder":{backgroundColor:`transparent`,border:`none`,color:`#ddd`},".cm-tooltip":{border:`none`,backgroundColor:er},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:`transparent`,borderBottomColor:`transparent`},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:er,borderBottomColor:er},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Qn,color:Z}}},{dark:!0}),oe(T.define([{tag:v.keyword,color:Xn},{tag:[v.name,v.deleted,v.character,v.propertyName,v.macroName],color:Un},{tag:[v.function(v.variableName),v.labelName],color:qn},{tag:[v.color,v.constant(v.name),v.standard(v.name)],color:Yn},{tag:[v.definition(v.name),v.separator],color:Z},{tag:[v.typeName,v.className,v.number,v.changed,v.annotation,v.modifier,v.self,v.namespace],color:Hn},{tag:[v.operator,v.operatorKeyword,v.url,v.escape,v.regexp,v.link,v.special(v.string)],color:Wn},{tag:[v.meta,v.comment],color:Kn},{tag:v.strong,fontWeight:`bold`},{tag:v.emphasis,fontStyle:`italic`},{tag:v.strikethrough,textDecoration:`line-through`},{tag:v.link,color:Kn,textDecoration:`underline`},{tag:v.heading,fontWeight:`bold`,color:Un},{tag:[v.atom,v.bool,v.special(v.variableName)],color:Yn},{tag:[v.processingInstruction,v.string,v.inserted],color:Jn},{tag:v.invalid,color:Gn}]))];function Q(e){return new Ce(me.define(e))}function $(e){return c(()=>import(`./dist-CKeMF3Bn.js`).then(t=>t.sql({dialect:t[e]})),__vite__mapDeps([0,1,2]))}var ir=[D.of({name:`C`,extensions:[`c`,`h`,`ino`],load(){return c(()=>import(`./dist-CjmpmmcO.js`).then(e=>e.cpp()),__vite__mapDeps([3,2]))}}),D.of({name:`C++`,alias:[`cpp`],extensions:[`cpp`,`c++`,`cc`,`cxx`,`hpp`,`h++`,`hh`,`hxx`],load(){return c(()=>import(`./dist-CjmpmmcO.js`).then(e=>e.cpp()),__vite__mapDeps([3,2]))}}),D.of({name:`CQL`,alias:[`cassandra`],extensions:[`cql`],load(){return $(`Cassandra`)}}),D.of({name:`CSS`,extensions:[`css`],load(){return c(()=>import(`./dist-C-WNCkkY.js`).then(e=>e.i).then(e=>e.css()),__vite__mapDeps([4,5,2]))}}),D.of({name:`Go`,extensions:[`go`],load(){return c(()=>import(`./dist-Dinrgvrc.js`).then(e=>e.go()),__vite__mapDeps([6,1,2]))}}),D.of({name:`HTML`,alias:[`xhtml`],extensions:[`html`,`htm`,`handlebars`,`hbs`],load(){return c(()=>import(`./dist-DyGB3uLS.js`).then(e=>e.t).then(e=>e.html()),__vite__mapDeps([7,5,4,2,8,1]))}}),D.of({name:`Java`,extensions:[`java`],load(){return c(()=>import(`./dist-CRaQQa2p.js`).then(e=>e.java()),__vite__mapDeps([9,2]))}}),D.of({name:`JavaScript`,alias:[`ecmascript`,`js`,`node`],extensions:[`js`,`mjs`,`cjs`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript()),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`Jinja`,extensions:[`j2`,`jinja`,`jinja2`],load(){return c(()=>import(`./dist-yK1j3Bjw.js`).then(e=>e.jinja()),__vite__mapDeps([10,7,5,4,2,8,1]))}}),D.of({name:`JSON`,alias:[`json5`],extensions:[`json`,`map`],load(){return c(()=>import(`./dist-CrXwIk-M.js`).then(e=>e.json()),__vite__mapDeps([11,2]))}}),D.of({name:`JSX`,extensions:[`jsx`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript({jsx:!0})),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`LESS`,extensions:[`less`],load(){return c(()=>import(`./dist-CDDaBTOk.js`).then(e=>e.less()),__vite__mapDeps([12,4,5,2]))}}),D.of({name:`Liquid`,extensions:[`liquid`],load(){return c(()=>import(`./dist-BSdjwUOg.js`).then(e=>e.liquid()),__vite__mapDeps([13,7,5,4,2,8,1]))}}),D.of({name:`MariaDB SQL`,load(){return $(`MariaSQL`)}}),D.of({name:`Markdown`,extensions:[`md`,`markdown`,`mkd`],load(){return c(()=>import(`./dist-CKHmCbpd.js`).then(e=>e.t).then(e=>e.markdown()),__vite__mapDeps([14,5,1,2,7,4,8]))}}),D.of({name:`MS SQL`,load(){return $(`MSSQL`)}}),D.of({name:`MySQL`,load(){return $(`MySQL`)}}),D.of({name:`PHP`,extensions:[`php`,`php3`,`php4`,`php5`,`php7`,`phtml`],load(){return c(()=>import(`./dist-Of-S18KS.js`).then(e=>e.php()),__vite__mapDeps([15,7,5,4,2,8,1]))}}),D.of({name:`PLSQL`,extensions:[`pls`],load(){return $(`PLSQL`)}}),D.of({name:`PostgreSQL`,load(){return $(`PostgreSQL`)}}),D.of({name:`Python`,extensions:[`BUILD`,`bzl`,`py`,`pyw`],filename:/^(BUCK|BUILD)$/,load(){return c(()=>import(`./dist-BrZ3oe_j.js`).then(e=>e.python()),__vite__mapDeps([16,1,2]))}}),D.of({name:`Rust`,extensions:[`rs`],load(){return c(()=>import(`./dist-Ddxrc2iU.js`).then(e=>e.rust()),__vite__mapDeps([17,2]))}}),D.of({name:`Sass`,extensions:[`sass`],load(){return c(()=>import(`./dist-DDeYRHbM.js`).then(e=>e.sass({indented:!0})),__vite__mapDeps([18,4,5,2]))}}),D.of({name:`SCSS`,extensions:[`scss`],load(){return c(()=>import(`./dist-DDeYRHbM.js`).then(e=>e.sass()),__vite__mapDeps([18,4,5,2]))}}),D.of({name:`SQL`,extensions:[`sql`],load(){return $(`StandardSQL`)}}),D.of({name:`SQLite`,load(){return $(`SQLite`)}}),D.of({name:`TSX`,extensions:[`tsx`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript({jsx:!0,typescript:!0})),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`TypeScript`,alias:[`ts`],extensions:[`ts`,`mts`,`cts`],load(){return c(()=>import(`./dist-F1KQHhKa.js`).then(e=>e.t).then(e=>e.javascript({typescript:!0})),__vite__mapDeps([8,5,1,2]))}}),D.of({name:`WebAssembly`,extensions:[`wat`,`wast`],load(){return c(()=>import(`./dist-BOsdKOWM.js`).then(e=>e.wast()),__vite__mapDeps([19,2]))}}),D.of({name:`XML`,alias:[`rss`,`wsdl`,`xsd`],extensions:[`xml`,`xsl`,`xsd`,`svg`],load(){return c(()=>import(`./dist-CeY6S7P6.js`).then(e=>e.xml()),__vite__mapDeps([20,2]))}}),D.of({name:`YAML`,alias:[`yml`],extensions:[`yaml`,`yml`],load(){return c(()=>import(`./dist-DxBbFin7.js`).then(e=>e.yaml()),__vite__mapDeps([21,2]))}}),D.of({name:`APL`,extensions:[`dyalog`,`apl`],load(){return c(()=>import(`./apl-BiBj5JPh.js`).then(e=>Q(e.apl)),[])}}),D.of({name:`PGP`,alias:[`asciiarmor`],extensions:[`asc`,`pgp`,`sig`],load(){return c(()=>import(`./asciiarmor-DUqjXKKc.js`).then(e=>Q(e.asciiArmor)),[])}}),D.of({name:`ASN.1`,extensions:[`asn`,`asn1`],load(){return c(()=>import(`./asn1-CSFxY3C_.js`).then(e=>Q(e.asn1({}))),[])}}),D.of({name:`Asterisk`,filename:/^extensions\.conf$/i,load(){return c(()=>import(`./asterisk-uHBCAfBV.js`).then(e=>Q(e.asterisk)),[])}}),D.of({name:`Brainfuck`,extensions:[`b`,`bf`],load(){return c(()=>import(`./brainfuck-P6fl4Que.js`).then(e=>Q(e.brainfuck)),[])}}),D.of({name:`Cobol`,extensions:[`cob`,`cpy`],load(){return c(()=>import(`./cobol-cmUvTmBe.js`).then(e=>Q(e.cobol)),[])}}),D.of({name:`C#`,alias:[`csharp`,`cs`],extensions:[`cs`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.csharp)),[])}}),D.of({name:`Clojure`,extensions:[`clj`,`cljc`,`cljx`],load(){return c(()=>import(`./clojure-CcxW2IJv.js`).then(e=>Q(e.clojure)),[])}}),D.of({name:`ClojureScript`,extensions:[`cljs`],load(){return c(()=>import(`./clojure-CcxW2IJv.js`).then(e=>Q(e.clojure)),[])}}),D.of({name:`Closure Stylesheets (GSS)`,extensions:[`gss`],load(){return c(()=>import(`./css-dwxLW2HQ.js`).then(e=>Q(e.gss)),[])}}),D.of({name:`CMake`,extensions:[`cmake`,`cmake.in`],filename:/^CMakeLists\.txt$/,load(){return c(()=>import(`./cmake-Dv6S2qM6.js`).then(e=>Q(e.cmake)),[])}}),D.of({name:`CoffeeScript`,alias:[`coffee`,`coffee-script`],extensions:[`coffee`],load(){return c(()=>import(`./coffeescript-B_m25Hkn.js`).then(e=>Q(e.coffeeScript)),[])}}),D.of({name:`Common Lisp`,alias:[`lisp`],extensions:[`cl`,`lisp`,`el`],load(){return c(()=>import(`./commonlisp-CcPk8jFh.js`).then(e=>Q(e.commonLisp)),[])}}),D.of({name:`Cypher`,extensions:[`cyp`,`cypher`],load(){return c(()=>import(`./cypher-CQII3RcV.js`).then(e=>Q(e.cypher)),[])}}),D.of({name:`Cython`,extensions:[`pyx`,`pxd`,`pxi`],load(){return c(()=>import(`./python-8pqj36LS.js`).then(e=>Q(e.cython)),[])}}),D.of({name:`Crystal`,extensions:[`cr`],load(){return c(()=>import(`./crystal-DOIwvhxg.js`).then(e=>Q(e.crystal)),[])}}),D.of({name:`D`,extensions:[`d`],load(){return c(()=>import(`./d-C-SszuJl.js`).then(e=>Q(e.d)),[])}}),D.of({name:`Dart`,extensions:[`dart`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.dart)),[])}}),D.of({name:`diff`,extensions:[`diff`,`patch`],load(){return c(()=>import(`./diff-ShtlT2bx.js`).then(e=>Q(e.diff)),[])}}),D.of({name:`Dockerfile`,filename:/^Dockerfile$/,load(){return c(()=>import(`./dockerfile-Dp3-805k.js`).then(e=>Q(e.dockerFile)),__vite__mapDeps([22,23]))}}),D.of({name:`DTD`,extensions:[`dtd`],load(){return c(()=>import(`./dtd-8MJ8lS_0.js`).then(e=>Q(e.dtd)),[])}}),D.of({name:`Dylan`,extensions:[`dylan`,`dyl`,`intr`],load(){return c(()=>import(`./dylan-voPp4Lnr.js`).then(e=>Q(e.dylan)),[])}}),D.of({name:`EBNF`,load(){return c(()=>import(`./ebnf-BOhmWcS1.js`).then(e=>Q(e.ebnf)),[])}}),D.of({name:`ECL`,extensions:[`ecl`],load(){return c(()=>import(`./ecl-RJG9oOwI.js`).then(e=>Q(e.ecl)),[])}}),D.of({name:`edn`,extensions:[`edn`],load(){return c(()=>import(`./clojure-CcxW2IJv.js`).then(e=>Q(e.clojure)),[])}}),D.of({name:`Eiffel`,extensions:[`e`],load(){return c(()=>import(`./eiffel-vus1BykA.js`).then(e=>Q(e.eiffel)),[])}}),D.of({name:`Elm`,extensions:[`elm`],load(){return c(()=>import(`./elm-CIn5er_O.js`).then(e=>Q(e.elm)),[])}}),D.of({name:`Erlang`,extensions:[`erl`],load(){return c(()=>import(`./erlang-BZpoFusi.js`).then(e=>Q(e.erlang)),[])}}),D.of({name:`Esper`,load(){return c(()=>import(`./sql-CBAeWW94.js`).then(e=>Q(e.esper)),[])}}),D.of({name:`Factor`,extensions:[`factor`],load(){return c(()=>import(`./factor-CjtwL94V.js`).then(e=>Q(e.factor)),__vite__mapDeps([24,23]))}}),D.of({name:`FCL`,load(){return c(()=>import(`./fcl-BftBU32I.js`).then(e=>Q(e.fcl)),[])}}),D.of({name:`Forth`,extensions:[`forth`,`fth`,`4th`],load(){return c(()=>import(`./forth-DybRTL3E.js`).then(e=>Q(e.forth)),[])}}),D.of({name:`Fortran`,extensions:[`f`,`for`,`f77`,`f90`,`f95`],load(){return c(()=>import(`./fortran-GwYNmgHk.js`).then(e=>Q(e.fortran)),[])}}),D.of({name:`F#`,alias:[`fsharp`],extensions:[`fs`],load(){return c(()=>import(`./mllike-C-s_QyEB.js`).then(e=>Q(e.fSharp)),[])}}),D.of({name:`Gas`,extensions:[`s`],load(){return c(()=>import(`./gas-8KoJg94e.js`).then(e=>Q(e.gas)),[])}}),D.of({name:`Gherkin`,extensions:[`feature`],load(){return c(()=>import(`./gherkin-C7H8ynX6.js`).then(e=>Q(e.gherkin)),[])}}),D.of({name:`Groovy`,extensions:[`groovy`,`gradle`],filename:/^Jenkinsfile$/,load(){return c(()=>import(`./groovy-CRR-Vcjs.js`).then(e=>Q(e.groovy)),[])}}),D.of({name:`Haskell`,extensions:[`hs`],load(){return c(()=>import(`./haskell-z1a9p5yF.js`).then(e=>Q(e.haskell)),[])}}),D.of({name:`Haxe`,extensions:[`hx`],load(){return c(()=>import(`./haxe-Dv3OMOD9.js`).then(e=>Q(e.haxe)),[])}}),D.of({name:`HXML`,extensions:[`hxml`],load(){return c(()=>import(`./haxe-Dv3OMOD9.js`).then(e=>Q(e.hxml)),[])}}),D.of({name:`HTTP`,load(){return c(()=>import(`./http-DgYuQuYn.js`).then(e=>Q(e.http)),[])}}),D.of({name:`IDL`,extensions:[`pro`],load(){return c(()=>import(`./idl-O6XLB4Io.js`).then(e=>Q(e.idl)),[])}}),D.of({name:`JSON-LD`,alias:[`jsonld`],extensions:[`jsonld`],load(){return c(()=>import(`./javascript-Bbl3lVa4.js`).then(e=>Q(e.jsonld)),[])}}),D.of({name:`Julia`,extensions:[`jl`],load(){return c(()=>import(`./julia-BiDGRSib.js`).then(e=>Q(e.julia)),[])}}),D.of({name:`Kotlin`,extensions:[`kt`,`kts`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.kotlin)),[])}}),D.of({name:`LiveScript`,alias:[`ls`],extensions:[`ls`],load(){return c(()=>import(`./livescript-D4j4QcDE.js`).then(e=>Q(e.liveScript)),[])}}),D.of({name:`Lua`,extensions:[`lua`],load(){return c(()=>import(`./lua-DrndZqvf.js`).then(e=>Q(e.lua)),[])}}),D.of({name:`mIRC`,extensions:[`mrc`],load(){return c(()=>import(`./mirc-DBBsjdiW.js`).then(e=>Q(e.mirc)),[])}}),D.of({name:`Mathematica`,extensions:[`m`,`nb`,`wl`,`wls`],load(){return c(()=>import(`./mathematica-BbsyYBRU.js`).then(e=>Q(e.mathematica)),[])}}),D.of({name:`Modelica`,extensions:[`mo`],load(){return c(()=>import(`./modelica-YHKoTfmR.js`).then(e=>Q(e.modelica)),[])}}),D.of({name:`MUMPS`,extensions:[`mps`],load(){return c(()=>import(`./mumps-DK6yA9VZ.js`).then(e=>Q(e.mumps)),[])}}),D.of({name:`Mbox`,extensions:[`mbox`],load(){return c(()=>import(`./mbox-CRSCWnMU.js`).then(e=>Q(e.mbox)),[])}}),D.of({name:`Nginx`,filename:/nginx.*\.conf$/i,load(){return c(()=>import(`./nginx-D6byjnC9.js`).then(e=>Q(e.nginx)),[])}}),D.of({name:`NSIS`,extensions:[`nsh`,`nsi`],load(){return c(()=>import(`./nsis-ZMhnK7--.js`).then(e=>Q(e.nsis)),__vite__mapDeps([25,23]))}}),D.of({name:`NTriples`,extensions:[`nt`,`nq`],load(){return c(()=>import(`./ntriples-BUWSfWjW.js`).then(e=>Q(e.ntriples)),[])}}),D.of({name:`Objective-C`,alias:[`objective-c`,`objc`],extensions:[`m`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.objectiveC)),[])}}),D.of({name:`Objective-C++`,alias:[`objective-c++`,`objc++`],extensions:[`mm`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.objectiveCpp)),[])}}),D.of({name:`OCaml`,extensions:[`ml`,`mli`,`mll`,`mly`],load(){return c(()=>import(`./mllike-C-s_QyEB.js`).then(e=>Q(e.oCaml)),[])}}),D.of({name:`Octave`,extensions:[`m`],load(){return c(()=>import(`./octave-C0FRWWHg.js`).then(e=>Q(e.octave)),[])}}),D.of({name:`Oz`,extensions:[`oz`],load(){return c(()=>import(`./oz-D1y5dsno.js`).then(e=>Q(e.oz)),[])}}),D.of({name:`Pascal`,extensions:[`p`,`pas`],load(){return c(()=>import(`./pascal-CXWRX2ZL.js`).then(e=>Q(e.pascal)),[])}}),D.of({name:`Perl`,extensions:[`pl`,`pm`],load(){return c(()=>import(`./perl-Nb2JhPOT.js`).then(e=>Q(e.perl)),[])}}),D.of({name:`Pig`,extensions:[`pig`],load(){return c(()=>import(`./pig-BbwUhgOd.js`).then(e=>Q(e.pig)),[])}}),D.of({name:`PowerShell`,extensions:[`ps1`,`psd1`,`psm1`],load(){return c(()=>import(`./powershell-CCuIKo06.js`).then(e=>Q(e.powerShell)),[])}}),D.of({name:`Properties files`,alias:[`ini`,`properties`],extensions:[`properties`,`ini`,`in`],load(){return c(()=>import(`./properties-DK1cZUXK.js`).then(e=>Q(e.properties)),[])}}),D.of({name:`ProtoBuf`,extensions:[`proto`],load(){return c(()=>import(`./protobuf-CPs2RkmD.js`).then(e=>Q(e.protobuf)),[])}}),D.of({name:`Pug`,alias:[`jade`],extensions:[`pug`,`jade`],load(){return c(()=>import(`./pug-D14mjHau.js`).then(e=>Q(e.pug)),__vite__mapDeps([26,27]))}}),D.of({name:`Puppet`,extensions:[`pp`],load(){return c(()=>import(`./puppet-D5s-oq2m.js`).then(e=>Q(e.puppet)),[])}}),D.of({name:`Q`,extensions:[`q`],load(){return c(()=>import(`./q-BkEiMjEI.js`).then(e=>Q(e.q)),[])}}),D.of({name:`R`,alias:[`rscript`],extensions:[`r`,`R`],load(){return c(()=>import(`./r-BW0_2ktb.js`).then(e=>Q(e.r)),[])}}),D.of({name:`RPM Changes`,load(){return c(()=>import(`./rpm-Dq4R8p2X.js`).then(e=>Q(e.rpmChanges)),[])}}),D.of({name:`RPM Spec`,extensions:[`spec`],load(){return c(()=>import(`./rpm-Dq4R8p2X.js`).then(e=>Q(e.rpmSpec)),[])}}),D.of({name:`Ruby`,alias:[`jruby`,`macruby`,`rake`,`rb`,`rbx`],extensions:[`rb`],filename:/^(Gemfile|Rakefile)$/,load(){return c(()=>import(`./ruby-CWNYdZZ6.js`).then(e=>Q(e.ruby)),[])}}),D.of({name:`SAS`,extensions:[`sas`],load(){return c(()=>import(`./sas-D54DuI2F.js`).then(e=>Q(e.sas)),[])}}),D.of({name:`Scala`,extensions:[`scala`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.scala)),[])}}),D.of({name:`Scheme`,extensions:[`scm`,`ss`],load(){return c(()=>import(`./scheme-DkRlhi-K.js`).then(e=>Q(e.scheme)),[])}}),D.of({name:`Shell`,alias:[`bash`,`sh`,`zsh`],extensions:[`sh`,`ksh`,`bash`],filename:/^PKGBUILD$/,load(){return c(()=>import(`./shell-P3Z8RfXs.js`).then(e=>Q(e.shell)),[])}}),D.of({name:`Sieve`,extensions:[`siv`,`sieve`],load(){return c(()=>import(`./sieve-c1M0QZ2n.js`).then(e=>Q(e.sieve)),[])}}),D.of({name:`Smalltalk`,extensions:[`st`],load(){return c(()=>import(`./smalltalk-CA6eHjU7.js`).then(e=>Q(e.smalltalk)),[])}}),D.of({name:`Solr`,load(){return c(()=>import(`./solr-BQyBj1xS.js`).then(e=>Q(e.solr)),[])}}),D.of({name:`SML`,extensions:[`sml`,`sig`,`fun`,`smackspec`],load(){return c(()=>import(`./mllike-C-s_QyEB.js`).then(e=>Q(e.sml)),[])}}),D.of({name:`SPARQL`,alias:[`sparul`],extensions:[`rq`,`sparql`],load(){return c(()=>import(`./sparql-DqsuRTT9.js`).then(e=>Q(e.sparql)),[])}}),D.of({name:`Spreadsheet`,alias:[`excel`,`formula`],load(){return c(()=>import(`./spreadsheet-D9zGodzn.js`).then(e=>Q(e.spreadsheet)),[])}}),D.of({name:`Squirrel`,extensions:[`nut`],load(){return c(()=>import(`./clike-BRSop1_2.js`).then(e=>Q(e.squirrel)),[])}}),D.of({name:`Stylus`,extensions:[`styl`],load(){return c(()=>import(`./stylus-6EAP9zMY.js`).then(e=>Q(e.stylus)),[])}}),D.of({name:`Swift`,extensions:[`swift`],load(){return c(()=>import(`./swift-f2MyNtED.js`).then(e=>Q(e.swift)),[])}}),D.of({name:`sTeX`,load(){return c(()=>import(`./stex-BkfbBN0w.js`).then(e=>Q(e.stex)),[])}}),D.of({name:`LaTeX`,alias:[`tex`],extensions:[`text`,`ltx`,`tex`],load(){return c(()=>import(`./stex-BkfbBN0w.js`).then(e=>Q(e.stex)),[])}}),D.of({name:`SystemVerilog`,extensions:[`v`,`sv`,`svh`],load(){return c(()=>import(`./verilog-BW7k28i6.js`).then(e=>Q(e.verilog)),[])}}),D.of({name:`Tcl`,extensions:[`tcl`],load(){return c(()=>import(`./tcl-OqDhTnyD.js`).then(e=>Q(e.tcl)),[])}}),D.of({name:`Textile`,extensions:[`textile`],load(){return c(()=>import(`./textile-QNc02XN3.js`).then(e=>Q(e.textile)),[])}}),D.of({name:`TiddlyWiki`,load(){return c(()=>import(`./tiddlywiki-C3wld6xI.js`).then(e=>Q(e.tiddlyWiki)),[])}}),D.of({name:`Tiki wiki`,load(){return c(()=>import(`./tiki-C8ugQKuz.js`).then(e=>Q(e.tiki)),[])}}),D.of({name:`TOML`,extensions:[`toml`],load(){return c(()=>import(`./toml-Cn7GHlXw.js`).then(e=>Q(e.toml)),[])}}),D.of({name:`Troff`,extensions:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`],load(){return c(()=>import(`./troff-DJ8EStsE.js`).then(e=>Q(e.troff)),[])}}),D.of({name:`TTCN`,extensions:[`ttcn`,`ttcn3`,`ttcnpp`],load(){return c(()=>import(`./ttcn-DzfCmAHa.js`).then(e=>Q(e.ttcn)),[])}}),D.of({name:`TTCN_CFG`,extensions:[`cfg`],load(){return c(()=>import(`./ttcn-cfg-DdXokgLu.js`).then(e=>Q(e.ttcnCfg)),[])}}),D.of({name:`Turtle`,extensions:[`ttl`],load(){return c(()=>import(`./turtle-BGTYpV3Q.js`).then(e=>Q(e.turtle)),[])}}),D.of({name:`Web IDL`,extensions:[`webidl`],load(){return c(()=>import(`./webidl-U4mPbQFA.js`).then(e=>Q(e.webIDL)),[])}}),D.of({name:`VB.NET`,extensions:[`vb`],load(){return c(()=>import(`./vb-By0_Pw9I.js`).then(e=>Q(e.vb)),[])}}),D.of({name:`VBScript`,extensions:[`vbs`],load(){return c(()=>import(`./vbscript-cpXX_O0K.js`).then(e=>Q(e.vbScript)),[])}}),D.of({name:`Velocity`,extensions:[`vtl`],load(){return c(()=>import(`./velocity-D6G7AWmA.js`).then(e=>Q(e.velocity)),[])}}),D.of({name:`Verilog`,extensions:[`v`],load(){return c(()=>import(`./verilog-BW7k28i6.js`).then(e=>Q(e.verilog)),[])}}),D.of({name:`VHDL`,extensions:[`vhd`,`vhdl`],load(){return c(()=>import(`./vhdl-DogEWmND.js`).then(e=>Q(e.vhdl)),[])}}),D.of({name:`XQuery`,extensions:[`xy`,`xquery`,`xq`,`xqm`,`xqy`],load(){return c(()=>import(`./xquery-hpetwfX6.js`).then(e=>Q(e.xQuery)),[])}}),D.of({name:`Yacas`,extensions:[`ys`],load(){return c(()=>import(`./yacas-CyeqBV_J.js`).then(e=>Q(e.yacas)),[])}}),D.of({name:`Z80`,extensions:[`z80`],load(){return c(()=>import(`./z80-B3ye1Koq.js`).then(e=>Q(e.z80)),[])}}),D.of({name:`MscGen`,extensions:[`mscgen`,`mscin`,`msc`],load(){return c(()=>import(`./mscgen-Mg0UrQo9.js`).then(e=>Q(e.mscgen)),[])}}),D.of({name:`Xù`,extensions:[`xu`],load(){return c(()=>import(`./mscgen-Mg0UrQo9.js`).then(e=>Q(e.xu)),[])}}),D.of({name:`MsGenny`,extensions:[`msgenny`],load(){return c(()=>import(`./mscgen-Mg0UrQo9.js`).then(e=>Q(e.msgenny)),[])}}),D.of({name:`Vue`,extensions:[`vue`],load(){return c(()=>import(`./dist-CqAGQCuu.js`).then(e=>e.vue()),__vite__mapDeps([28,7,5,4,2,8,1]))}}),D.of({name:`Angular Template`,load(){return c(()=>import(`./dist-BV428gYa.js`).then(e=>e.angular()),__vite__mapDeps([29,7,5,4,2,8,1]))}})];function ar({initialContent:e,onChange:t,isDark:n=!1,className:r}){let i=(0,O.useRef)(null),a=(0,O.useRef)(null),o=(0,O.useRef)(t);o.current=t;let s=(0,O.useRef)(e);return s.current=e,(0,O.useEffect)(()=>{if(i.current)return a.current=new h({state:pe.create({doc:s.current,extensions:[Te({base:Ee,codeLanguages:ir}),w(),be(),Ye(),n?rr:oe(he),le.of([...Vn,...lt]),h.updateListener.of(e=>{e.docChanged&&o.current(e.state.doc.toString())}),h.theme({"&":{height:`100%`,fontSize:`14px`},".cm-scroller":{fontFamily:`var(--font-mono)`,lineHeight:`1.7`,overflow:`auto`},".cm-content":{padding:`16px 20px`},".cm-focused":{outline:`none`}})]}),parent:i.current}),()=>{a.current?.destroy(),a.current=null}},[n]),(0,k.jsx)(`div`,{ref:i,className:`h-full w-full overflow-hidden ${r??``}`})}function or(e){return`${e.id} ${e.name} ${e.provider}`.toLowerCase()}function sr(e,t){let n=t.trim().toLowerCase();if(!n)return e;let r=n.split(/\s+/).filter(Boolean);return e.filter(e=>{let t=or(e);return r.every(e=>t.includes(e))})}function cr({value:e,disabled:t,placeholder:n,searchPlaceholder:i,noMatches:o,compact:c,showProviderInTrigger:u=!0,contentSide:m=`bottom`,contentAlign:oe=`end`,className:se,popoverContentClassName:ce,showProviderSettingsFooter:h,onChange:g}){let le=l(),_=r(a(e=>e.language)).chat,[v,y]=(0,O.useState)(!1),[b,x]=(0,O.useState)(``),{data:S=[],isLoading:C,error:w}=s(`gateway-configured-models`,Fe,{revalidateOnFocus:!1}),ue=(0,O.useMemo)(()=>sr(S,b),[S,b]),T=S.find(t=>t.id===e),de=T?u?`${T.name} (${T.provider})`:T.name:e||n;return(0,k.jsxs)(ne,{open:v,onOpenChange:y,children:[(0,k.jsx)(ie,{asChild:!0,children:(0,k.jsxs)(`button`,{type:`button`,disabled:t||C,title:T?`${T.name} (${T.provider})`:n,className:d(p,`items-center gap-2 rounded-lg border border-edge-subtle bg-surface-panel px-3 py-2 text-left text-sm font-normal text-fg`,De.transition,`hover:border-edge hover:bg-surface-hover/45`,ee,`disabled:cursor-not-allowed disabled:opacity-50`,`dark:border-edge-subtle dark:hover:bg-surface-hover/55`,c&&`py-1.5 text-[13px]`,se),children:[(0,k.jsx)(`span`,{className:`min-w-0 truncate`,children:C?`…`:de}),(0,k.jsx)(Oe,{className:`h-4 w-4 shrink-0 text-fg-subtle opacity-70`,"aria-hidden":!0})]})}),(0,k.jsx)(re,{children:(0,k.jsxs)(ae,{className:d(`z-50 w-[min(22rem,calc(100vw-2rem))] rounded-xl border border-edge-subtle bg-surface-panel p-1 shadow-elevated dark:border-edge-subtle`,ce),side:m,sideOffset:4,align:oe,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,k.jsx)(`input`,{type:`search`,className:d(`mb-1 w-full rounded-lg border border-edge-subtle bg-surface-base px-2.5 py-1.5 text-sm text-fg placeholder:text-fg-disabled dark:bg-surface-hover/40`,te),placeholder:i,value:b,onChange:e=>x(e.target.value)}),(0,k.jsxs)(`div`,{className:`max-h-60 overflow-auto`,children:[w?(0,k.jsx)(`div`,{className:`px-2 py-2 text-xs text-red-600 dark:text-red-400`,children:w instanceof Error?w.message:`Failed to load models`}):null,!w&&ue.length===0?(0,k.jsx)(`div`,{className:`px-2 py-3 text-center text-xs text-fg-muted`,children:o}):null,ue.map(t=>(0,k.jsxs)(`button`,{type:`button`,className:d(`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm text-fg hover:bg-surface-hover`,t.id===e&&`bg-surface-hover/90 font-medium dark:bg-surface-hover/70`),onClick:()=>{g(t.id),y(!1),x(``)},children:[(0,k.jsx)(f,{className:d(`h-4 w-4 shrink-0`,t.id!==e&&`invisible`),"aria-hidden":!0}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[(0,k.jsx)(`span`,{className:`font-medium`,children:t.name}),` `,(0,k.jsxs)(`span`,{className:`text-fg-muted`,children:[`(`,t.provider,`)`]})]})]},t.id))]}),h?(0,k.jsx)(`div`,{className:`mt-1 border-t border-edge-subtle pt-1`,children:(0,k.jsxs)(`button`,{type:`button`,className:d(`flex w-full items-center gap-2 rounded-md px-2 py-2 text-left text-sm font-medium text-accent`,De.transition,`hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40`),onClick:()=>{le(`/settings/providers`),y(!1),x(``)},children:[(0,k.jsx)(Ae,{className:`h-4 w-4 shrink-0 opacity-90`,"aria-hidden":!0}),(0,k.jsx)(`span`,{className:`min-w-0`,children:_.modelProviderSettingsLink})]})}):null]})})]})}export{Ye as a,je as c,Oe as d,Vn as i,Ae as l,ar as n,lt as o,rr as r,Fe as s,cr as t,ke as u};
|
|
3
|
+
//# sourceMappingURL=model-selector-he3aQfme.js.map
|