agentroam-runtime-darwin-arm64 0.2.0-preview.63 → 0.2.0-preview.65
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/manifest.json +2 -2
- package/package.json +1 -1
- package/runtime/.next/BUILD_ID +1 -1
- package/runtime/.next/app-build-manifest.json +10 -10
- package/runtime/.next/app-path-routes-manifest.json +1 -1
- package/runtime/.next/build-manifest.json +3 -3
- package/runtime/.next/prerender-manifest.json +1 -1
- package/runtime/.next/required-server-files.json +1 -1
- package/runtime/.next/server/app/_not-found/page.js +1 -1
- package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/runtime/.next/server/app/_not-found.html +1 -1
- package/runtime/.next/server/app/_not-found.rsc +1 -1
- package/runtime/.next/server/app/api/agent/abort/route.js +1 -1
- package/runtime/.next/server/app/api/agent/answer/route.js +1 -1
- package/runtime/.next/server/app/api/agent/codex-sharing/route.js +1 -1
- package/runtime/.next/server/app/api/agent/harness/status/route.js +1 -1
- package/runtime/.next/server/app/api/agent/model/route.js +1 -1
- package/runtime/.next/server/app/api/agent/models/route.js +1 -1
- package/runtime/.next/server/app/api/agent/run/route.js +2 -2
- package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
- package/runtime/.next/server/app/api/agent/steer/route.js +1 -1
- package/runtime/.next/server/app/api/agent/stream/route.js +3 -3
- package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -1
- package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -1
- package/runtime/.next/server/app/api/auth/verify/route.js +1 -1
- package/runtime/.next/server/app/api/business/route.js +1 -1
- package/runtime/.next/server/app/api/client-logs/route.js +1 -1
- package/runtime/.next/server/app/api/collaboration/route.js +1 -1
- package/runtime/.next/server/app/api/flow/v1/catalog/route.js +1 -1
- package/runtime/.next/server/app/api/flow/v1/runs/[runId]/cancel/route.js +1 -1
- package/runtime/.next/server/app/api/flow/v1/runs/[runId]/events/route.js +3 -3
- package/runtime/.next/server/app/api/flow/v1/runs/route.js +1 -1
- package/runtime/.next/server/app/api/flow-studio/config/route.js +1 -1
- package/runtime/.next/server/app/api/mcp/connect/route.js +1 -1
- package/runtime/.next/server/app/api/mcp/disconnect/route.js +1 -1
- package/runtime/.next/server/app/api/mcp/servers/route.js +1 -1
- package/runtime/.next/server/app/api/memory/[key]/route.js +1 -1
- package/runtime/.next/server/app/api/memory/route.js +1 -1
- package/runtime/.next/server/app/api/plugins/load/route.js +1 -1
- package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
- package/runtime/.next/server/app/api/projects/check/route.js +1 -1
- package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
- package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
- package/runtime/.next/server/app/api/projects/route.js +1 -1
- package/runtime/.next/server/app/api/push/subscribe/route.js +2 -2
- package/runtime/.next/server/app/api/push/unsubscribe/route.js +2 -2
- package/runtime/.next/server/app/api/push/vapid/route.js +2 -2
- package/runtime/.next/server/app/api/push/vapid.body +1 -1
- package/runtime/.next/server/app/api/remote-tools/register/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
- package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/fork-at/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/native-goal/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/release/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/thread-goal/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/tool-result/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/route.js +1 -1
- package/runtime/.next/server/app/api/settings/route.js +1 -1
- package/runtime/.next/server/app/api/skills/route.js +1 -1
- package/runtime/.next/server/app/api/tool-policies/[policyId]/route.js +1 -1
- package/runtime/.next/server/app/api/tool-policies/route.js +1 -1
- package/runtime/.next/server/app/api/tools/route.js +1 -1
- package/runtime/.next/server/app/api/update/check/route.js +1 -1
- package/runtime/.next/server/app/api/update/install/route.js +1 -1
- package/runtime/.next/server/app/api/update/status/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/computer-settings/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/computers/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
- package/runtime/.next/server/app/web/page.js +4 -4
- package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
- package/runtime/.next/server/app-paths-manifest.json +35 -35
- package/runtime/.next/server/chunks/5303.js +1 -1
- package/runtime/.next/server/middleware-build-manifest.js +1 -1
- package/runtime/.next/server/pages/404.html +1 -1
- package/runtime/.next/server/pages/500.html +1 -1
- package/runtime/.next/server/pages-manifest.json +1 -1
- package/runtime/.next/server/server-reference-manifest.json +1 -1
- package/runtime/.next/static/chunks/216-befe93998f760830.js +1 -0
- package/runtime/.next/static/chunks/app/web/{error-7ac82267d3330344.js → error-17e28c153738a003.js} +1 -1
- package/runtime/.next/static/chunks/app/web/layout-60e82f81fa232177.js +1 -0
- package/runtime/.next/static/chunks/app/web/page-9d2cdb1ef9ad40b2.js +1 -0
- package/runtime/.next/static/chunks/{main-app-51ee029f2d3c9d9e.js → main-app-a953e6764afe1e60.js} +1 -1
- package/runtime/.next/static/css/1c4153a5b834f93f.css +1 -0
- package/runtime/native/Support.noindex/AgentRoam Remote Desktop.app/Contents/MacOS/agentroam-remote-desktop +0 -0
- package/runtime/native/Support.noindex/AgentRoam Remote Desktop.app/Contents/Resources/agentroam-component.json +1 -1
- package/runtime/native/Support.noindex/AgentRoam Remote Desktop.app/Contents/_CodeSignature/CodeResources +2 -2
- package/runtime/node_modules/.package-lock.json +133 -128
- package/runtime/node_modules/@agent/native-runtime/dist/index.js +572 -93
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +75 -75
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +37 -37
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/{core-mh5qmqqf.mjs → core-1qw7dszx.mjs} +1 -1
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/core-cz9sh4ze.mjs +40 -0
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/core-nmrdrt5c.mjs +52 -0
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/{core-p79weg14.mjs → core-nxm5bcfb.mjs} +4 -4
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/core.mjs +10 -10
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/extractFromBunfs.js +169 -40
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +21 -23
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +25 -27
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/package.json +14 -14
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +74 -74
- package/runtime/node_modules/caniuse-lite/data/agents.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/browserVersions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/aac.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/abortcontroller.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ac3-ec3.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/accelerometer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/addeventlistener.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ambient-light.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/apng.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/array-find-index.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/array-find.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/array-flat.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/array-includes.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/arrow-functions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/asmjs.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/async-clipboard.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/async-functions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/atob-btoa.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/audio-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/audio.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/audiotracks.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/autofocus.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/auxclick.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/av1.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/avif.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/background-attachment.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/background-clip-text.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/background-img-opts.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/background-position-x-y.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/background-sync.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/battery-status.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/beacon.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/beforeafterprint.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/bigint.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/blobbuilder.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/bloburls.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/border-image.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/border-radius.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/broadcastchannel.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/brotli.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/calc.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/canvas-blending.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/canvas-text.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/canvas.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ch-unit.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/channel-messaging.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/childnode-remove.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/classlist.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/clipboard.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/colr-v1.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/colr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/comparedocumentposition.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/console-basic.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/console-time.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/const.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/constraint-validation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/contenteditable.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/cookie-store-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/cors.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/createimagebitmap.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/credential-management.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/cryptography.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-all.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-anchor-positioning.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-animation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-any-link.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-appearance.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-at-counter-style.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-autofill.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-background-offsets.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-boxshadow.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-canvas.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-caret-color.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-cascade-layers.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-cascade-scope.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-case-insensitive.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-clip-path.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-color-adjust.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-color-function.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-conic-gradients.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-container-queries-style.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-container-queries.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-container-query-units.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-containment.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-content-visibility.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-counters.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-crisp-edges.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-cross-fade.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-default-pseudo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-display-contents.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-element-function.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-env-function.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-exclusions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-featurequeries.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-file-selector-button.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-filter-function.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-filters.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-first-letter.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-first-line.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-fixed.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-focus-visible.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-focus-within.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-font-palette.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-font-stretch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-gencontent.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-gradients.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-grid-animation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-grid-lanes.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-grid.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-has.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-hyphens.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-if.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-image-orientation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-image-set.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-initial-letter.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-initial-value.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-lch-lab.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-letter-spacing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-line-clamp.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-logical-props.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-masks.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-math-functions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-media-interaction.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-media-range-syntax.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-media-resolution.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-media-scripting.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-mediaqueries.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-mixblendmode.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-module-scripts.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-motion-paths.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-namespaces.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-nesting.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-not-sel-list.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-nth-child-of.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-opacity.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-overflow-overlay.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-overflow.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-page-break.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-paged-media.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-paint-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-placeholder.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-print-color-adjust.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-read-only-write.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-reflections.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-regions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-relative-colors.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-resize.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-revert-value.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-scrollbar.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-sel2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-sel3.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-selection.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-shapes.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-snappoints.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-sticky.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-subgrid.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-supports-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-table.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-align-last.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-box-trim.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-indent.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-justify.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-orientation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-spacing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-textshadow.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-touch-action.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-transitions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-unset-value.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-variables.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-when-else.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-widows-orphans.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-width-stretch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-writing-mode.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css-zoom.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-attr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-boxsizing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-colors.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-cursors.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/css3-tabsize.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/currentcolor.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/custom-elements.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/custom-elementsv1.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/customevent.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/customizable-select.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/datalist.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dataset.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/datauri.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/decorators.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/details.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/deviceorientation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/devicepixelratio.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dialog.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dispatchevent.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dnssec.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/do-not-track.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/document-currentscript.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/document-execcommand.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/document-policy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/document-scrollingelement.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/documenthead.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dom-range.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/domcontentloaded.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dommatrix.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/download.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/dragndrop.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/element-closest.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/element-from-point.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/element-scroll-methods.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/eme.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/eot.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es5.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6-class.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6-generators.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6-module.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6-number.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6-string-includes.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/es6.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/eventsource.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/extended-system-fonts.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/feature-policy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/fetch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/fieldset-disabled.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/fileapi.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/filereader.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/filereadersync.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/filesystem.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/flac.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/flexbox-gap.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/flexbox.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/flow-root.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-family-system-ui.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-feature.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-kerning.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-loading.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-size-adjust.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-smooth.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-unicode-range.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-variant-alternates.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/font-variant-numeric.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/fontface.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/form-attribute.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/form-submit-attributes.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/form-validation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/forms.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/fullscreen.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/gamepad.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/geolocation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/getboundingclientrect.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/getcomputedstyle.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/getrandomvalues.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/gyroscope.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/hashchange.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/heif.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/hevc.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/hidden.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/high-resolution-time.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/history.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/html-media-capture.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/html5semantic.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/http-live-streaming.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/http2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/http3.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/iframe-sandbox.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/iframe-seamless.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/imagecapture.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ime.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/import-maps.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/imports.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/indexeddb.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/indexeddb2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/inline-block.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/innertext.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-color.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-datetime.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-email-tel-url.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-event.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-file-accept.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-file-directory.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-file-multiple.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-inputmode.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-minlength.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-number.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-pattern.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-placeholder.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-range.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-search.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/input-selection.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/insert-adjacent.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/internationalization.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/intersectionobserver.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/intl-pluralrules.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/intrinsic-width.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/jpeg2000.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/jpegxl.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/jpegxr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/json.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/keyboardevent-code.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/keyboardevent-key.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/keyboardevent-location.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/keyboardevent-which.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/lazyload.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/let.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-icon-png.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-icon-svg.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-rel-preload.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/link-rel-prerender.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/loading-lazy-media.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/localecompare.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/magnetometer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/matchesselector.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/matchmedia.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mathml.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/maxlength.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/media-fragments.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mediarecorder.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mediasource.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/menu.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/meta-theme-color.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/meter.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/midi.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/minmaxwh.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mp3.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mpeg-dash.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mpeg4.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/multibackgrounds.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/multicolumn.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mutation-events.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/mutationobserver.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/namevalue-storage.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/native-filesystem-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/nav-timing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/netinfo.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/notifications.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/object-entries.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/object-fit.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/object-observe.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/object-values.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/objectrtc.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/offline-apps.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/offscreencanvas.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ogg-vorbis.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ogv.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ol-reversed.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/once-event-listener.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/online-status.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/opus.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/orientation-sensor.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/outline.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/pad-start-end.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/page-transition-events.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/pagevisibility.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/passive-event-listener.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/passkeys.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/passwordrules.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/path2d.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/payment-request.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/pdf-viewer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/permissions-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/permissions-policy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/picture-in-picture.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/picture.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ping.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/png-alpha.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/pointer-events.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/pointer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/pointerlock.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/portals.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/progress.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/promise-finally.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/promises.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/proximity.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/proxy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/publickeypinning.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/push-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/queryselector.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/readonly-attr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/referrer-policy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/rel-noopener.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/rel-noreferrer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/rellist.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/rem.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/requestanimationframe.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/requestidlecallback.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/resizeobserver.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/resource-timing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/rest-parameters.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ruby.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/run-in.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/screen-orientation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/script-async.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/script-defer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/scrollintoview.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/sdch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/selection-api.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/server-timing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/serviceworkers.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/setimmediate.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/shadowdom.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/shadowdomv1.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/sharedworkers.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/sni.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/spdy.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/speech-recognition.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/speech-synthesis.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/sql-storage.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/srcset.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/stream.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/streams.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/style-scoped.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/subresource-bundling.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/subresource-integrity.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-css.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-filters.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-fonts.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-fragment.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-html.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-html5.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-img.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg-smil.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/svg.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/sxg.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/tabindex-attr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/template-literals.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/template.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/temporal.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/testfeat.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/text-decoration.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/text-emphasis.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/text-overflow.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/text-size-adjust.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/text-stroke.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/textcontent.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/textencoder.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/tls1-1.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/tls1-2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/tls1-3.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/touch.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/transforms2d.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/transforms3d.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/trusted-types.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/ttf.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/typedarrays.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/u2f.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/unhandledrejection.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/url.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/urlsearchparams.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/use-strict.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/user-select-none.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/user-timing.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/variable-fonts.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/vector-effect.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/vibration.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/video.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/videotracks.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/view-transitions.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/viewport-unit-variants.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/viewport-units.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wai-aria.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wake-lock.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-bigint.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-extended-const.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-gc.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-multi-memory.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-multi-value.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-reference-types.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-signext.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-simd.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-tail-calls.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm-threads.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wasm.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wav.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wbr-element.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/web-animation.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/web-app-manifest.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/web-bluetooth.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/web-serial.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/web-share.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webauthn.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webcodecs.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webgl.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webgl2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webgpu.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webhid.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webkit-user-drag.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webm.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webnfc.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webp.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/websockets.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webtransport.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webusb.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webvr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webvtt.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webworkers.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/webxr.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/will-change.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/woff.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/woff2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/word-break.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/wordwrap.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/x-doc-messaging.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/x-frame-options.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/xhr2.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/xhtml.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/xhtmlsmil.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/xml-serializer.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/features/zstd.js +1 -1
- package/runtime/node_modules/caniuse-lite/data/versionGroups.js +1 -1
- package/runtime/node_modules/caniuse-lite/package.json +1 -1
- package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.cjs +25 -13
- package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.min.cjs +8 -8
- package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.min.mjs +8 -8
- package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.mjs +25 -13
- package/runtime/node_modules/mediabunny/dist/bundles/mediabunny.node.cjs +25 -13
- package/runtime/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js +22 -11
- package/runtime/node_modules/mediabunny/dist/modules/src/matroska/matroska-demuxer.js +27 -11
- package/runtime/node_modules/mediabunny/dist/modules/src/tsconfig.tsbuildinfo +1 -1
- package/runtime/node_modules/mediabunny/dist/modules/src/version.js +1 -1
- package/runtime/node_modules/mediabunny/package.json +1 -1
- package/runtime/node_modules/mediabunny/src/isobmff/isobmff-demuxer.ts +23 -11
- package/runtime/node_modules/mediabunny/src/matroska/matroska-demuxer.ts +30 -11
- package/runtime/node_modules/mediabunny/src/version.ts +1 -1
- package/runtime/package-lock.json +166 -161
- package/runtime/server.js +1 -1
- package/runtime/webapp/dist/assets/{AiHubPane-D3O__UGN.js → AiHubPane-Cd-7gwJs.js} +1 -1
- package/runtime/webapp/dist/assets/{App-DJXr24vO.js → App-DQqv62sH.js} +57 -57
- package/runtime/webapp/dist/assets/{BrowserLivePanel-DEl_6FZj.js → BrowserLivePanel-DDrnghqj.js} +2 -2
- package/runtime/webapp/dist/assets/{CollaborationDashboard-DhLKl7mR.js → CollaborationDashboard-qQQqXrQI.js} +1 -1
- package/runtime/webapp/dist/assets/CollaborationPage-BS3Z5dAy.js +16 -0
- package/runtime/webapp/dist/assets/{FilePreview-BQBYZYpb.js → FilePreview-C4gxZRtw.js} +3 -3
- package/runtime/webapp/dist/assets/{FileTree-CXiXQO4N.js → FileTree-DrpruRST.js} +1 -1
- package/runtime/webapp/dist/assets/{FlowStudioPane-DUjBX_7t.js → FlowStudioPane-BjOuLwks.js} +1 -1
- package/runtime/webapp/dist/assets/{RemoteDesktopPage-BDK0Mq5I.js → RemoteDesktopPage-B1AGyJrT.js} +1 -1
- package/runtime/webapp/dist/assets/{TerminalPane-L6DN1Y0T.js → TerminalPane-BxEtw8rn.js} +1 -1
- package/runtime/webapp/dist/assets/{abnfDiagram-VCTEODGH-Dloq4lbc.js → abnfDiagram-VCTEODGH-BHgKdAyZ.js} +1 -1
- package/runtime/webapp/dist/assets/{arc-DdmNhDp9.js → arc-B8zNXyCl.js} +1 -1
- package/runtime/webapp/dist/assets/{architectureDiagram-5GKGNRK7-BTqm_9oY.js → architectureDiagram-5GKGNRK7-D596eLfj.js} +1 -1
- package/runtime/webapp/dist/assets/{artifact-links-BI9xeGhs.js → artifact-links-DwSH3xn_.js} +1 -1
- package/runtime/webapp/dist/assets/{blockDiagram-I7D4REHJ-jT-ztA_A.js → blockDiagram-I7D4REHJ-C4eZ-RzC.js} +1 -1
- package/runtime/webapp/dist/assets/{c4Diagram-7LVT6UL2-DxX89YpZ.js → c4Diagram-7LVT6UL2-Cxe44X-3.js} +1 -1
- package/runtime/webapp/dist/assets/channel-8FdPmR58.js +1 -0
- package/runtime/webapp/dist/assets/{chunk-2Q5K7J3B-BgXNuFPn.js → chunk-2Q5K7J3B-D_syaagC.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-5VM5RSS4-Bv7-4JNt.js → chunk-5VM5RSS4-q_wDWTVC.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-F27PBJKO-BNSskrgg.js → chunk-F27PBJKO-C5U_ckFK.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-IMKFNOWR-C166MQKM.js → chunk-IMKFNOWR-5a_rZZVM.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-JWPE2WC7-Bl1a_rZ8.js → chunk-JWPE2WC7-DR8znCWR.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-POPQ4Y6H-Ck6xvnVw.js → chunk-POPQ4Y6H-3vOXloa3.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-SVP7TREG-h6j1DDv5.js → chunk-SVP7TREG-y9Uxi4pg.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-TICWLB2K-BFafTq0K.js → chunk-TICWLB2K-Bi7VvqOR.js} +1 -1
- package/runtime/webapp/dist/assets/{chunk-XXDRQBXY-BQPWRmrg.js → chunk-XXDRQBXY-CRpw-5Cj.js} +1 -1
- package/runtime/webapp/dist/assets/classDiagram-ZZMXUADV-CCHBpIvI.js +1 -0
- package/runtime/webapp/dist/assets/classDiagram-v2-VYDZK3BY-CCHBpIvI.js +1 -0
- package/runtime/webapp/dist/assets/{clipboard-B2fwlVD5.js → clipboard-BKglnESD.js} +1 -1
- package/runtime/webapp/dist/assets/{codeSyntax-VUYFxRDg.js → codeSyntax-Dmbrlor0.js} +1 -1
- package/runtime/webapp/dist/assets/{collaboration-CalhGKdD.js → collaboration-BZSnjFZ-.js} +1 -1
- package/runtime/webapp/dist/assets/{cose-bilkent-JH36ORCC-IgwThNmP.js → cose-bilkent-JH36ORCC-4JQKrvR5.js} +1 -1
- package/runtime/webapp/dist/assets/{cynefin-OW5HDTMX-kfamOzdb.js → cynefin-OW5HDTMX-BO4eLWHY.js} +1 -1
- package/runtime/webapp/dist/assets/{cynefinDiagram-5FMLGOSQ-TVskTO_2.js → cynefinDiagram-5FMLGOSQ-Dg-Bt9fs.js} +1 -1
- package/runtime/webapp/dist/assets/{dagre-GXQ25YYZ-DA85rDs9.js → dagre-GXQ25YYZ-utMMpYq0.js} +1 -1
- package/runtime/webapp/dist/assets/{diagram-S7CK7UJ4-CK0LkDfU.js → diagram-S7CK7UJ4-BUzOnotG.js} +1 -1
- package/runtime/webapp/dist/assets/{diagram-UQ7AKVKN-Bkskt6g2.js → diagram-UQ7AKVKN-Bkesml6e.js} +1 -1
- package/runtime/webapp/dist/assets/{diagram-VSXAHHWV-DN2UO2Hh.js → diagram-VSXAHHWV-P-Qqxnpn.js} +1 -1
- package/runtime/webapp/dist/assets/{diagram-VX7I27RA-BLSOCEKl.js → diagram-VX7I27RA-xpyBMRkH.js} +1 -1
- package/runtime/webapp/dist/assets/{diagram-Z3DM3KII-DNr6MVnd.js → diagram-Z3DM3KII-FMNqO2NJ.js} +1 -1
- package/runtime/webapp/dist/assets/{ebnfDiagram-PWID7BFC-CRASUUeC.js → ebnfDiagram-PWID7BFC-D8-cmvEK.js} +1 -1
- package/runtime/webapp/dist/assets/{erDiagram-RLTQ6QDP-1VwQNW79.js → erDiagram-RLTQ6QDP-mEgSpGUN.js} +1 -1
- package/runtime/webapp/dist/assets/{file-types-MDD5RUla.js → file-types-DgQXHGm7.js} +1 -1
- package/runtime/webapp/dist/assets/{flowDiagram-HODETNUW-DzhiH-fC.js → flowDiagram-HODETNUW-DJWXgpoo.js} +1 -1
- package/runtime/webapp/dist/assets/{ganttDiagram-EL5Y4UJY-DH8HcfJq.js → ganttDiagram-EL5Y4UJY-B5HA7Xox.js} +1 -1
- package/runtime/webapp/dist/assets/{gitGraphDiagram-WWUBYQGX-DYOG2d-R.js → gitGraphDiagram-WWUBYQGX-CP4Zmize.js} +1 -1
- package/runtime/webapp/dist/assets/index-BReRPZnZ.js +485 -0
- package/runtime/webapp/dist/assets/index-DfpiL3X7.css +1 -0
- package/runtime/webapp/dist/assets/{infoDiagram-27XIBGKW-DOjkALCi.js → infoDiagram-27XIBGKW-DApDSX70.js} +1 -1
- package/runtime/webapp/dist/assets/{ishikawaDiagram-5VMMS53U-DBXZxz82.js → ishikawaDiagram-5VMMS53U-BCYtD2Fm.js} +1 -1
- package/runtime/webapp/dist/assets/{journeyDiagram-3NMN7TZE-DEpi9Fbd.js → journeyDiagram-3NMN7TZE-D3WEyKHq.js} +1 -1
- package/runtime/webapp/dist/assets/{kanban-definition-UXKFOSKX-Chbcb2nn.js → kanban-definition-UXKFOSKX-Q6vb0ZbD.js} +1 -1
- package/runtime/webapp/dist/assets/{layout-0ld5oekM.js → layout-Bp7cvpx1.js} +1 -1
- package/runtime/webapp/dist/assets/{linear-BCRtBckJ.js → linear-4ik7NzLN.js} +1 -1
- package/runtime/webapp/dist/assets/{loader-circle-DGJsEr0r.js → loader-circle-BCsj2yyN.js} +1 -1
- package/runtime/webapp/dist/assets/{mermaid.core-ByBSaE2T.js → mermaid.core-CmhaKXiP.js} +5 -5
- package/runtime/webapp/dist/assets/{mindmap-definition-YA3MSWOX-BW9I4Kuv.js → mindmap-definition-YA3MSWOX-DabuuB2q.js} +1 -1
- package/runtime/webapp/dist/assets/{page-DVdz2jp6.js → page-Cgp9NEw1.js} +6 -6
- package/runtime/webapp/dist/assets/{pegDiagram-XKGWAZYB-D9oxCTQA.js → pegDiagram-XKGWAZYB-eIBdAhCQ.js} +1 -1
- package/runtime/webapp/dist/assets/{pieDiagram-E7YTZNPT-Ca4vPJj3.js → pieDiagram-E7YTZNPT-DUd7f60Q.js} +1 -1
- package/runtime/webapp/dist/assets/{quadrantDiagram-AXDQQJYC-DM9Go2ES.js → quadrantDiagram-AXDQQJYC-BPSqBWPV.js} +1 -1
- package/runtime/webapp/dist/assets/{railroadDiagram-O6MQD6OU-BinalW7_.js → railroadDiagram-O6MQD6OU-CHqMz56-.js} +1 -1
- package/runtime/webapp/dist/assets/{requirementDiagram-BXWQKSXE-C4KXL_m1.js → requirementDiagram-BXWQKSXE-BfOzGN7B.js} +1 -1
- package/runtime/webapp/dist/assets/{rotate-ccw-DrBaBbCR.js → rotate-ccw-p76OF6j6.js} +1 -1
- package/runtime/webapp/dist/assets/{rotate-cw-Ccsl7hB3.js → rotate-cw-D5iQzT0K.js} +1 -1
- package/runtime/webapp/dist/assets/{sankeyDiagram-P5KCCOFB-Ba3vi6ln.js → sankeyDiagram-P5KCCOFB-BFOPAhWl.js} +1 -1
- package/runtime/webapp/dist/assets/{send-OgOSXSRs.js → send-DdY_K1RT.js} +1 -1
- package/runtime/webapp/dist/assets/{sequenceDiagram-WJ2MYXX4-DJzCQdxN.js → sequenceDiagram-WJ2MYXX4-CdQhFjho.js} +1 -1
- package/runtime/webapp/dist/assets/{sizeCapture-INFHLROL-DYsPME1d.js → sizeCapture-INFHLROL-BP_2bwHb.js} +1 -1
- package/runtime/webapp/dist/assets/{smartphone-BaeWE4n-.js → smartphone-C2--txxG.js} +1 -1
- package/runtime/webapp/dist/assets/{stateDiagram-D77RDMKH-D2prIqK-.js → stateDiagram-D77RDMKH-D2_O1o9C.js} +1 -1
- package/runtime/webapp/dist/assets/stateDiagram-v2-MP3YSRHH-b3DtWIlg.js +1 -0
- package/runtime/webapp/dist/assets/{swimlanes-42K2YHIH-NODzX6Rz.js → swimlanes-42K2YHIH-BwEWz-Bu.js} +1 -1
- package/runtime/webapp/dist/assets/swimlanesDiagram-VR7AAH4N-CxL0Wh2Z.js +8 -0
- package/runtime/webapp/dist/assets/{timeline-definition-24CTP7MA-CTh1zdtP.js → timeline-definition-24CTP7MA-DqDB5dmr.js} +1 -1
- package/runtime/webapp/dist/assets/{trash-2-DoqYR_LW.js → trash-2-CZx0p0L3.js} +1 -1
- package/runtime/webapp/dist/assets/{vennDiagram-4TSXK5OY-DyjbbvAr.js → vennDiagram-4TSXK5OY-Cf4VnZ2O.js} +1 -1
- package/runtime/webapp/dist/assets/{wardleyDiagram-VM6X3IG4-BFWVhSKh.js → wardleyDiagram-VM6X3IG4-D9FBNJOU.js} +1 -1
- package/runtime/webapp/dist/assets/{web-BeDKAt7R.js → web-BVybOQy8.js} +1 -1
- package/runtime/webapp/dist/assets/{web-W_qr76-r.js → web-CT9Joona.js} +1 -1
- package/runtime/webapp/dist/assets/{x-Dp1u7spG.js → x-COYLzqlQ.js} +1 -1
- package/runtime/webapp/dist/assets/{xychartDiagram-S5SC5T6Z-CkRP6Drf.js → xychartDiagram-S5SC5T6Z-BRVtPtRz.js} +1 -1
- package/runtime/webapp/dist/index.html +2 -2
- package/runtime/.next/static/chunks/344-04fd45d8838bfada.js +0 -1
- package/runtime/.next/static/chunks/app/web/layout-4e2120c7c4a57f7c.js +0 -1
- package/runtime/.next/static/chunks/app/web/page-aa406cbaa5109651.js +0 -1
- package/runtime/.next/static/css/71e679260520d186.css +0 -1
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/core-50f20fv8.mjs +0 -40
- package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/core-x5tcx9zy.mjs +0 -52
- package/runtime/webapp/dist/assets/CollaborationPage-BCzxWWHA.js +0 -16
- package/runtime/webapp/dist/assets/channel-9wfiqrt1.js +0 -1
- package/runtime/webapp/dist/assets/classDiagram-ZZMXUADV-CTD9Lt2V.js +0 -1
- package/runtime/webapp/dist/assets/classDiagram-v2-VYDZK3BY-CTD9Lt2V.js +0 -1
- package/runtime/webapp/dist/assets/index-Bqpz5--c.js +0 -480
- package/runtime/webapp/dist/assets/index-WGJ3Mevp.css +0 -1
- package/runtime/webapp/dist/assets/stateDiagram-v2-MP3YSRHH-tpTQhbGu.js +0 -1
- package/runtime/webapp/dist/assets/swimlanesDiagram-VR7AAH4N-CUH3ZqiP.js +0 -8
- /package/runtime/.next/static/{wybbbDbeFWOi1186WVCZe → nDZmrx61FQSBYCG7rH1JD}/_buildManifest.js +0 -0
- /package/runtime/.next/static/{wybbbDbeFWOi1186WVCZe → nDZmrx61FQSBYCG7rH1JD}/_ssgManifest.js +0 -0
package/runtime/webapp/dist/assets/{BrowserLivePanel-DEl_6FZj.js → BrowserLivePanel-DDrnghqj.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Gt=i=>{throw TypeError(i)};var An=(i,n,l)=>n.has(i)||Gt("Cannot "+l);var Zt=(i,n,l)=>n.has(i)?Gt("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,l);var Jt=(i,n,l)=>(An(i,n,"access private method"),l);import{c as V,j as o,d as Pn,r as s,B as zn,f as en,l as tn}from"./index-
|
|
1
|
+
var Gt=i=>{throw TypeError(i)};var An=(i,n,l)=>n.has(i)||Gt("Cannot "+l);var Zt=(i,n,l)=>n.has(i)?Gt("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,l);var Jt=(i,n,l)=>(An(i,n,"access private method"),l);import{c as V,j as o,d as Pn,r as s,B as zn,f as en,l as tn}from"./index-BReRPZnZ.js";import{L as G}from"./loader-circle-BCsj2yyN.js";import{r as Nn,E as Dn}from"./clipboard-BKglnESD.js";import{R as Fn}from"./rotate-ccw-p76OF6j6.js";import{X as In}from"./x-COYLzqlQ.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -73,4 +73,4 @@ var Gt=i=>{throw TypeError(i)};var An=(i,n,l)=>n.has(i)||Gt("Cannot "+l);var Zt=
|
|
|
73
73
|
*
|
|
74
74
|
* This source code is licensed under the ISC license.
|
|
75
75
|
* See the LICENSE file in the root directory of this source tree.
|
|
76
|
-
*/const Xn=V("ZoomOut",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);function sn({label:i,title:n,value:l,busy:h,disabled:f,compact:p,onChange:c,children:y}){return o.jsxs("span",{className:`live-view-select${p?" live-view-select--compact":""}`,children:[o.jsx("select",{"aria-label":i,"aria-busy":h,title:n,value:l,disabled:f||h,onChange:x=>c(x.target.value),children:y}),h?o.jsx("span",{className:"live-view-select-icon",role:"status","aria-label":`${i}正在切换`,children:o.jsx(G,{size:14,className:"spin","aria-hidden":"true"})}):o.jsx(Pn,{size:14,className:"live-view-select-icon","aria-hidden":"true"})]})}function Yn({disabled:i,onPaste:n,onError:l}){const[h,f]=s.useState(!1),[p,c]=s.useState(!1),y=s.useRef(null),x=s.useRef(!1),v=s.useRef(!0),C=s.useRef(!i);C.current=!i,s.useEffect(()=>(v.current=!0,()=>{v.current=!1}),[]),s.useEffect(()=>{var L;p&&((L=y.current)==null||L.focus({preventScroll:!0}))},[p]);const P=async L=>{if(!(x.current||i)){x.current=!0,f(!0),l(null);try{const F=await L();if(!v.current||!C.current)return;if(F===null){c(!0),l("浏览器限制读取剪贴板,请长按“系统粘贴”使用系统菜单,粘贴后自动输入电脑");return}if(!F)throw new Error("剪贴板里没有文字");await n(F),v.current&&c(!1)}catch(F){v.current&&l(F instanceof Error?F.message:"粘贴失败,请重试")}finally{x.current=!1,v.current&&f(!1)}}};return p?o.jsx("input",{ref:y,className:"browser-live-native-paste","aria-label":"系统粘贴",placeholder:"系统粘贴",disabled:i||h,defaultValue:"",autoCapitalize:"none",autoCorrect:"off",autoComplete:"off",spellCheck:!1,onPaste:L=>{L.preventDefault();const F=L.clipboardData.getData("text/plain");P(()=>Promise.resolve(F))}}):o.jsx("button",{type:"button",disabled:i||h,title:"直接粘贴当前手机或电脑剪贴板的文字",onClick:()=>void P(Nn),children:h?"粘贴中…":"粘贴"})}const _n=5e3,Qn=1e4;class Gn{constructor(){this.startedAt=null,this.lastFrameAt=null,this.lastFrameCount=null}begin(n){this.startedAt=n,this.lastFrameAt=null,this.lastFrameCount=null}resume(n){this.startedAt!==null&&(this.startedAt=n),this.lastFrameAt!==null&&(this.lastFrameAt=n)}observe(n,l){return typeof n!="number"||!Number.isFinite(n)||n<0||n===this.lastFrameCount||(this.lastFrameCount=n,n===0)?!1:(this.lastFrameAt=l,!0)}evaluate(n){const l=this.lastFrameAt??this.startedAt;if(l===null)return{state:"streaming",silentForMs:0};const h=Math.max(0,n-l),f=this.lastFrameAt===null?_n:Qn;return{state:h>=f?"stalled":"streaming",silentForMs:h}}}var ft,un;class Zn{constructor(){Zt(this,ft);this.points=new Map,this.origin=null,this.originDistance=0,this.moved=!1}reset(){this.points.clear(),this.origin=null,this.originDistance=0,this.moved=!1}down(n,l){this.points.size||(this.origin=l,this.moved=!1),this.points.set(n,l),this.points.size>1&&(this.moved=!0),this.originDistance=Jt(this,ft,un).call(this)}move(n,l){const h=this.points.get(n);if(!h)return null;const f=[...this.points.values()];if(this.points.set(n,l),this.origin&&Math.hypot(l.x-this.origin.x,l.y-this.origin.y)>8&&(this.moved=!0),this.points.size===1)return this.moved?{scale:1,distanceRatio:1,from:h,to:l,pointers:1}:null;const p=[...this.points.values()],c=C=>({x:(C[0].x+C[1].x)/2,y:(C[0].y+C[1].y)/2}),y=C=>Math.hypot(C[0].x-C[1].x,C[0].y-C[1].y),x=y(f),v=this.originDistance>0?y(p)/this.originDistance:1;return{scale:x>0?y(p)/x:1,distanceRatio:v,from:c(f),to:c(p),pointers:this.points.size}}up(n,l,h=!1){if(!this.points.has(n))return!1;const f=!h&&!this.moved&&this.points.size===1&&!!this.origin&&Math.hypot(l.x-this.origin.x,l.y-this.origin.y)<=8;return this.points.delete(n),h&&(this.moved=!0),this.points.size||this.reset(),f}}ft=new WeakSet,un=function(){const n=[...this.points.values()];return n.length>=2?Math.hypot(n[0].x-n[1].x,n[0].y-n[1].y):0};function Jn(i,n,l){const h=Math.max(i.top,n.top-l.top),f=Math.max(i.left,n.left-l.left),p=Math.min(i.top+i.height,n.top+n.height-l.top),c=Math.min(i.left+i.width,n.left+n.width-l.left);return{top:h,left:f,height:Math.max(0,p-h),width:Math.max(0,c-f)}}function an(i){const n=i.visualViewport;return{top:(n==null?void 0:n.offsetTop)??0,left:(n==null?void 0:n.offsetLeft)??0,width:(n==null?void 0:n.width)??i.innerWidth,height:(n==null?void 0:n.height)??i.innerHeight}}function er(i,n=window){let l=null,h=null;try{n.parent!==n&&n.parent.location.origin===n.location.origin&&(l=n.parent,h=n.frameElement)}catch{}let f=null,p=null;const c=()=>{let C=an(n);l&&h&&!n.document.fullscreenElement&&(C=Jn({top:0,left:0,width:n.innerWidth,height:n.innerHeight},an(l),h.getBoundingClientRect()));for(const[P,L]of Object.entries(C))i.style.setProperty(`--browser-live-${P}`,`${L}px`)},y=()=>{f!==null&&n.cancelAnimationFrame(f),f=n.requestAnimationFrame(()=>{f=null,c()}),p!==null&&n.clearTimeout(p),p=n.setTimeout(c,250)},x=[n,n.document];n.visualViewport&&x.push(n.visualViewport),l&&(x.push(l),x.push(l.document),l.visualViewport&&x.push(l.visualViewport));const v=["resize","scroll","orientationchange","pageshow","visibilitychange","fullscreenchange","transitionend"];for(const C of x)for(const P of v)C.addEventListener(P,y);return c(),()=>{for(const C of x)for(const P of v)C.removeEventListener(P,y);f!==null&&n.cancelAnimationFrame(f),p!==null&&n.clearTimeout(p);for(const C of["top","left","width","height"])i.style.removeProperty(`--browser-live-${C}`)}}const O=i=>typeof i=="number"&&Number.isFinite(i)?i:void 0;function tr(i,n){var l;try{const h=(l=i==null?void 0:i.getVideoPlaybackQuality)==null?void 0:l.call(i);if(h&&Number.isFinite(h.totalVideoFrames)&&Number.isFinite(h.droppedVideoFrames))return Math.max(0,h.totalVideoFrames-h.droppedVideoFrames)}catch{}return O(i==null?void 0:i.webkitDecodedFrameCount)??O(n)}function nr(i){var l,h,f;const n=new Set;for(const p of i??[]){if(((l=p.mimeType)==null?void 0:l.toLowerCase())!=="video/h264")continue;const c=(f=(h=/(?:^|;)\s*profile-level-id=([0-9a-f]{6})/i.exec(p.sdpFmtpLine??""))==null?void 0:h[1])==null?void 0:f.toLowerCase();c!=null&&c.startsWith("64")&&n.add("high"),(!c||c.startsWith("42"))&&n.add("baseline")}return[...n]}function rr(){var n;if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities!="function")return["baseline"];const i=nr((n=RTCRtpReceiver.getCapabilities("video"))==null?void 0:n.codecs);return i.length?i:["baseline"]}function ir(i){var l,h;const n=(h=(l=/(?:^|;)\s*profile-level-id=([0-9a-f]{6})/i.exec(typeof i=="string"?i:""))==null?void 0:l[1])==null?void 0:h.toLowerCase();if(n!=null&&n.startsWith("64"))return"high";if(!n||n.startsWith("42"))return"baseline"}function or(i,n,l=Date.now()){const f=[...typeof i.values=="function"?i.values():i],p=f.find(M=>M.type==="inbound-rtp"&&(M.kind==="video"||M.mediaType==="video"));if(!p)return null;const c=f.find(M=>M.id===p.codecId),y=f.find(M=>M.type==="candidate-pair"&&M.state==="succeeded"&&(M.nominated===!0||M.selected===!0)),x=f.find(M=>M.id===(y==null?void 0:y.localCandidateId)),v=f.find(M=>M.id===(y==null?void 0:y.remoteCandidateId)),C=[x==null?void 0:x.candidateType,v==null?void 0:v.candidateType].map(String),P=["relay","srflx","prflx","host"].find(M=>C.includes(M))??void 0,L=O(p.bytesReceived)??0,F=O(p.packetsReceived)??0,b=O(p.packetsLost)??0,ce=O(p.framesDropped)??0,D=n?Math.max(1,l-n.at):0,te=n?Math.max(0,F-n.packetsReceived):0,Le=n?Math.max(0,b-n.packetsLost):0,He=n?Math.max(0,ce-n.framesDropped):0,A=O(y==null?void 0:y.currentRoundTripTime),ne=O(p.jitter),m=typeof p.decoderImplementation=="string"?p.decoderImplementation.slice(0,120):void 0,Z=typeof p.powerEfficientDecoder=="boolean"?p.powerEfficientDecoder:void 0,Ae=m!==void 0||Z!==void 0?{implementation:m,powerEfficient:Z,acceleration:Z===!0?"hardware":Z===!1?"software":"unknown"}:void 0,le={codec:typeof(c==null?void 0:c.mimeType)=="string"?c.mimeType.replace(/^video\//i,""):void 0,codecProfile:ir(c==null?void 0:c.sdpFmtpLine),decoder:Ae,width:O(p.frameWidth),height:O(p.frameHeight),fps:O(p.framesPerSecond),rttMs:A!==void 0?A*1e3:void 0,jitterMs:ne!==void 0?ne*1e3:void 0,lossRate:te+Le>0?Le/(te+Le):0,droppedFrames:He,receiveBitrate:n?Math.max(0,Math.round((L-n.bytesReceived)*8e3/D)):void 0,availableBitrate:O(y==null?void 0:y.availableIncomingBitrate),candidateType:P,protocol:(x==null?void 0:x.protocol)==="tcp"||(v==null?void 0:v.protocol)==="tcp"?"tcp":y?"udp":void 0};for(const M of Object.keys(le))le[M]===void 0&&delete le[M];const Ke=O(p.framesDecoded);return{sample:le,cursor:{at:l,bytesReceived:L,packetsReceived:F,packetsLost:b,framesDropped:ce,...Ke!==void 0?{framesDecoded:Ke}:{}}}}function sr(i){if(!i)return null;const n=[i.candidateType==="relay"?"TURN 中继":i.candidateType?"P2P 直连":null];return i.codec&&n.push(i.codec),i.width&&i.height&&n.push(`${i.width}x${i.height}${i.fps?`@${Math.round(i.fps)}`:""}`),i.receiveBitrate&&n.push(`${(i.receiveBitrate/1e6).toFixed(1)}Mbps`),i.rttMs!==void 0&&n.push(`${Math.round(i.rttMs)}ms`),n.filter(Boolean).join(" · ")||null}function ar(i){const n=i==null?void 0:i.decoder;if(!n)return null;const l=n.acceleration==="hardware"?"硬件解码":n.acceleration==="software"?"软件解码":"解码方式未知";return n.implementation?`${l} · ${n.implementation}`:l}const cr={"agent-controlled":"Agent 操作中","handoff-requested":"正在交接","user-controlled":"你正在操作","return-requested":"正在归还",resyncing:"Agent 正在同步页面"},lr={smooth:"流畅",hd:"高清",original:"原画"};function Tt(i){return i==="desktop"?"桌面屏幕":i==="ego-browser"?"ego-browser":"内置 Browser"}function cn(i,n,l){var h,f;return i||(((h=n.find(p=>p.agentSessionId===l))==null?void 0:h.id)??((f=n[0])==null?void 0:f.id)??null)}function ln(i){return[i.altKey?"Alt":"",i.ctrlKey?"Control":"",i.metaKey?"Meta":"",i.shiftKey?"Shift":""].filter(Boolean)}function ur(i){const n=new Uint8Array(i.length*2),l=new DataView(n.buffer);for(let f=0;f<i.length;f+=1){const p=Math.max(-1,Math.min(1,i[f]));l.setInt16(f*2,p<0?p*32768:p*32767,!0)}let h="";for(let f=0;f<n.length;f+=8192)h+=String.fromCharCode(...n.subarray(f,f+8192));return btoa(h)}function dr(i,n){const l=atob(i),h=Math.floor(l.length/2/n),f=Array.from({length:n},()=>new Float32Array(h));for(let p=0;p<h;p+=1)for(let c=0;c<n;c+=1){const y=(p*n+c)*2,x=l.charCodeAt(y)|l.charCodeAt(y+1)<<8;f[c][p]=(x&32768?x-65536:x)/32768}return f}async function fr(i){const n=[],l=()=>{for(const f of n.splice(0))f()};let h=!1;i.addEventListener("abort",l);try{if(i.aborted)return null;const f=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});if(n.push(()=>{for(const L of f.getTracks())L.stop()}),i.aborted)return null;const p=window.AudioContext,c=new p({latencyHint:"interactive"});n.push(()=>{c.close().catch(()=>{})});const y=new p({latencyHint:"interactive"});if(n.push(()=>{y.close().catch(()=>{})}),await Promise.all([c.resume(),y.resume()]),i.aborted)return null;const x=y.createGain();x.connect(y.destination);const v=c.createMediaStreamSource(f),C=c.createScriptProcessor(2048,1,1),P=c.createGain();return P.gain.value=0,v.connect(C),C.connect(P),P.connect(c.destination),h=!0,{stream:f,microphoneContext:c,remoteContext:y,remoteGain:x,source:v,processor:C,sink:P,dispose:l}}finally{i.removeEventListener("abort",l),h||l()}}function hr(i,n){return i?i.state==="user-controlled"&&i.isController===!0&&n.state==="handoff-requested"||i.state==="agent-controlled"&&n.state==="return-requested":!1}const pr=2;function br(i,n,l,h,f=.02){if(!i||!n||!n.width||!n.height)return!1;const p=i.x/n.width-f,c=i.y/n.height-f,y=(i.x+i.w)/n.width+f,x=(i.y+i.h)/n.height+f;return l>=p&&l<=y&&h>=c&&h<=x}function mr(i,n,l=pr){const h={deltaX:Math.round(i.x-n.x),deltaY:Math.round(i.y-n.y)};return Math.abs(h.deltaX)<l&&Math.abs(h.deltaY)<l?null:h}function Cr({open:i,active:n=!0,agentSessionId:l,onClose:h,onFullscreenChange:f}){const p=s.useContext(zn),c=typeof window>"u"?void 0:window.browserLiveApi,y=s.useRef(null),x=s.useRef(null);s.useLayoutEffect(()=>{if(!(!i||!y.current))return er(y.current)},[i]);const[v,C]=s.useState(!1);s.useEffect(()=>{f==null||f(v)},[v,f]);const P=async()=>{const e=x.current;if(e){if(v){document.fullscreenElement===e&&await document.exitFullscreen().catch(()=>{}),C(!1);return}C(!0),e.requestFullscreen&&await e.requestFullscreen().catch(()=>{})}};s.useEffect(()=>{if(!i){C(!1);return}const e=x.current,r=()=>C(document.fullscreenElement===e),t=u=>{u.key==="Escape"&&(document.fullscreenElement===e||e!=null&&e.classList.contains("is-fullscreen"))&&(u.preventDefault(),u.stopPropagation(),document.fullscreenElement===e&&document.exitFullscreen().catch(()=>{}),C(!1))};return document.addEventListener("fullscreenchange",r),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("fullscreenchange",r),document.removeEventListener("keydown",t,!0),e&&document.fullscreenElement===e&&document.exitFullscreen().catch(()=>{})}},[i]);const[L,F]=s.useState([]),[b,ce]=s.useState(null),[D,te]=s.useState(null),[Le,He]=s.useState("hd"),[A,ne]=s.useState(null),[m,Z]=s.useState(null),[Ae,le]=s.useState(!1),[Ke,M]=s.useState(0),[ht,T]=s.useState(null),[Xe,be]=s.useState(!1),[me,Lt]=s.useState(null),[dn,Pe]=s.useState(!1),[ze,ye]=s.useState(""),[we,At]=s.useState(!1),[Pt,ke]=s.useState(null),[re,Ne]=s.useState(1),[S,pt]=s.useState(!1),[ge,fn]=s.useState({width:0,height:0}),$=s.useRef(null),xe=s.useRef(null),Ye=s.useRef(!1),ve=s.useRef(null),ie=s.useRef(new Zn),De=s.useRef(re),_e=s.useRef(null);s.useLayoutEffect(()=>{De.current=re;const e=_e.current,r=$.current,t=r==null?void 0:r.querySelector(".browser-live-image-hit-area");if(!e||!r||!t)return;const u=t.getBoundingClientRect();r.scrollLeft+=u.left+e.x*u.width-e.clientX,r.scrollTop+=u.top+e.y*u.height-e.clientY,_e.current=null},[re]);const ue=s.useRef(null),[Y,Qe]=s.useState(!1),Ce=s.useRef(!1),Ge=s.useRef(0),oe=s.useRef(null);s.useEffect(()=>{i||(Pe(!1),ye(""),ke(null))},[i]);const[hn,Ze]=s.useState(!1),Fe=s.useRef(null),Je=s.useRef(0),H=s.useRef("none"),I=s.useRef(null),bt=s.useRef(null),[zt,et]=s.useState(null),[Ie,pn]=s.useState(!1),Nt=s.useRef(null),[de,K]=s.useState("off"),[Dt,Ve]=s.useState(null),je=s.useRef(null),z=s.useRef(null),tt=s.useRef(0),fe=s.useRef(null),he=s.useRef(new Gn),qe=s.useRef(!1),[Ft,nt]=s.useState(null),[J,Be]=s.useState("idle"),[rt,It]=s.useState(!1),[it,Vt]=s.useState(!1),ot=s.useRef(!1),st=s.useRef(!1),Oe=s.useRef(null),mt=s.useRef(null),yt=s.useRef(null),wt=s.useRef(null),kt=s.useRef(null),at=s.useRef(null),Re=s.useRef(null),Me=s.useRef(0),qt=s.useRef(0),$e=s.useRef(0),ct=s.useRef(null);s.useLayoutEffect(()=>{Ce.current=Y,Y&&Ze(!1)},[Y]);const a=s.useMemo(()=>L.find(e=>e.id===b)??null,[b,L]),R=(a==null?void 0:a.backend)==="desktop",Bt=R&&(a==null?void 0:a.platform)==="win32",bn=(a==null?void 0:a.availability)==="unavailable"&&(a==null?void 0:a.capabilityErrorCode)==="desktop-locked",w=(a==null?void 0:a.isController)&&a.state==="user-controlled",Se=a==null?void 0:a.audioCapabilities,Ee=!!(Se!=null&&Se.fullDuplex&&Se.systemAudio&&Se.microphonePlayback&&Se.selfPlaybackExclusion),pe=!!(a!=null&&a.online&&a.availability==="ready"&&!a.controlledByAnotherViewer);s.useEffect(()=>{if(!i||!c||!b){et(null);return}let e=!0;const r=()=>{const u=performance.now();c.request("browser:ping",{t:u}).then(()=>{e&&et(Math.round(performance.now()-u))}).catch(()=>{e&&et(null)})};r();const t=window.setInterval(r,3e3);return()=>{e=!1,window.clearInterval(t),et(null)}},[c,i,b]),s.useEffect(()=>{const e=navigator;if(!w||!e.wakeLock)return;let r=!1,t=null;return e.wakeLock.request("screen").then(u=>{if(r){u.release();return}t=u,Nt.current=u}).catch(()=>{}),()=>{r=!0,t==null||t.release().catch(()=>{}),Nt.current=null}},[w]);const Te=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport),gt=Te&&ge.width&&ge.height?Math.min(ge.width/Te.width,ge.height/Te.height):null;s.useEffect(()=>{var e;Ne(1),pt(!1),xe.current=null,ie.current.reset(),_e.current=null,oe.current=null,(e=$.current)==null||e.scrollTo(0,0)},[i,b]),s.useEffect(()=>{const e=$.current;if(!i||!e)return;const r=new ResizeObserver(()=>{fn({width:e.clientWidth,height:e.clientHeight})});return r.observe(e),()=>r.disconnect()},[i,R]),s.useEffect(()=>{const e=$.current;if(!i||!e||!w||S)return;const r=t=>t.preventDefault();return e.addEventListener("wheel",r,{passive:!1}),()=>e.removeEventListener("wheel",r)},[i,w,S]);const mn=s.useCallback(()=>{Ge.current+=1;const e=ue.current;e&&(Y?(e.blur(),Qe(!1)):e.focus({preventScroll:!0}))},[Y]);s.useEffect(()=>{var e;(!n||!w||S)&&(Ge.current+=1,(e=ue.current)==null||e.blur(),Qe(!1))},[n,w,S,Y]);const lt=s.useCallback(e=>{const r=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport),t=$.current,u=t==null?void 0:t.querySelector(".browser-live-image-hit-area");if(!e||!r||!t||!u)return;const d=u.getBoundingClientRect(),k=t.getBoundingClientRect(),j=d.top+e.y/r.height*d.height,g=j+e.h/r.height*d.height,E=16;j>=k.top+E&&g<=k.bottom-E||(t.scrollTop+=j-(k.top+Math.max(E,k.height*.3)))},[m==null?void 0:m.viewport,a==null?void 0:a.viewport]);s.useEffect(()=>{if(!Y||!oe.current)return;const e=window.setTimeout(()=>lt(oe.current),420);return()=>window.clearTimeout(e)},[Y,ge.width,ge.height,lt]);const xt=s.useCallback((e,r=!1)=>{var u;const t=e&&typeof e.input=="object"&&e.input!==null?e.input:e;if(typeof(t==null?void 0:t.editable)=="boolean"){if(!t.editable&&t.kind==="control"){oe.current=null;return}if(t.editable){const d=t.bounds,k=d&&["x","y","w","h"].every(j=>typeof d[j]=="number")?{x:d.x,y:d.y,w:d.w,h:d.h}:null;k&&(oe.current=k),r&&!Ce.current&&!window.matchMedia("(pointer: coarse)").matches&&((u=ue.current)==null||u.focus({preventScroll:!0})),Ce.current?lt(k??oe.current):Ze(!0)}else oe.current=null}},[lt]),X=s.useCallback((e=!0)=>{var d,k,j,g,E;(d=ct.current)==null||d.abort(),ct.current=null;const r=Oe.current;Oe.current=null;for(const W of(r==null?void 0:r.getTracks())??[])W.stop();(k=yt.current)==null||k.disconnect(),(j=wt.current)==null||j.disconnect(),(g=kt.current)==null||g.disconnect(),yt.current=null,wt.current=null,kt.current=null;const t=mt.current;mt.current=null,t&&t.close().catch(()=>{});const u=at.current;at.current=null,(E=Re.current)==null||E.disconnect(),Re.current=null,Me.current=0,$e.current=0,u&&u.close().catch(()=>{}),ot.current=!1,st.current=!1,It(!1),Vt(!1),Be("idle"),e&&c&&b&&c.request("browser:webrtc",{sessionId:b,data:{kind:"audio-stop"}}).catch(()=>{})},[c,b]),Ot=s.useCallback(e=>{var B;if(st.current||typeof e.data!="string")return;const r=at.current,t=Number(e.sampleRate),u=Number(e.channels);if(!r||!Number.isSafeInteger(t)||!Number.isSafeInteger(u)||u<1||u>2)return;const d=dr(e.data,u);if(!((B=d[0])!=null&&B.length))return;const k=r.createBuffer(u,d[0].length,t);for(let Q=0;Q<u;Q+=1)k.copyToChannel(d[Q],Q);const j=r.createBufferSource();j.buffer=k;const g=Re.current;if(!g)return;j.connect(g);const E=r.currentTime,W=Math.max(E+.02,Me.current);Me.current=W-E>.35?E+.02:W,j.start(Me.current),Me.current+=k.duration},[]),yn=s.useCallback(async()=>{var r;if(!c||!b||!w||!Ee||document.visibilityState!=="visible")return;const e=new AbortController;(r=ct.current)==null||r.abort(),ct.current=e,T(null),Be("starting");try{const t=await fr(e.signal);if(!t||e.signal.aborted||document.visibilityState!=="visible"){t==null||t.dispose();return}const{stream:u,microphoneContext:d,remoteContext:k,remoteGain:j,source:g,processor:E,sink:W}=t;Oe.current=u,mt.current=d,yt.current=g,wt.current=E,kt.current=W,at.current=k,Re.current=j,qt.current=0,E.onaudioprocess=B=>{if(e.signal.aborted||ot.current||!Oe.current||!c||!b||$e.current>=4)return;const Q=new Float32Array(B.inputBuffer.getChannelData(0));$e.current+=1,c.request("browser:webrtc",{sessionId:b,data:{kind:"audio-microphone",sequence:++qt.current,sampleRate:d.sampleRate,channels:1,data:ur(Q)}}).catch(()=>{}).finally(()=>{$e.current=Math.max(0,$e.current-1)})},await c.request("browser:webrtc",{sessionId:b,data:{kind:"audio-start"}})}catch(t){if(e.signal.aborted)return;X(!1),Be("failed"),T(t instanceof Error?t.message:"无法开始语音")}},[c,w,b,X,Ee]);s.useEffect(()=>{i&&n&&w&&Ee||J!=="idle"&&X(!0)},[n,J,w,i,X,Ee]),s.useEffect(()=>{const e=()=>{document.visibilityState!=="visible"&&J!=="idle"&&X(!0)};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[J,X]),s.useEffect(()=>()=>X(!0),[X]);const $t=s.useMemo(()=>[{urls:"stun:stun.l.google.com:19302"}],[]),Ut=s.useCallback(async(e,r,t)=>{if(!(!c||!e||!r))try{const u=z.current;z.current=null,u==null||u.close();let d=z.current;if(d||(d=new RTCPeerConnection({iceServers:t!=null&&t.length?t:$t}),d.onicecandidate=j=>{j.candidate&&c.request("browser:webrtc",{sessionId:e,data:{kind:"ice",candidate:j.candidate.toJSON()}}).catch(()=>{})},d.ontrack=j=>{const g=fe.current;g&&j.streams[0]&&(g.srcObject=j.streams[0],g.play().catch(()=>{}))},d.onconnectionstatechange=()=>{if(z.current!==d)return;const j=d==null?void 0:d.connectionState;j==="connected"?K("live"):(j==="failed"||j==="disconnected"||j==="closed")&&K("failed")},z.current=d),await d.setRemoteDescription(r),z.current!==d)return;const k=await d.createAnswer();if(await d.setLocalDescription(k),z.current!==d)return;K("connecting"),await c.request("browser:webrtc",{sessionId:e,data:{kind:"answer",sdp:d.localDescription.toJSON()}})}catch{K("failed")}},[c,$t]),Wt=s.useCallback((e,r)=>{if(r){if(r.kind==="quality-state"&&["smooth","hd","original"].includes(String(r.quality))){He(String(r.quality)),ne(null),typeof r.error=="string"&&T(r.error);return}if(r.kind==="audio-system"){Ot(r);return}if(r.kind==="audio-state"){const t=String(r.state);["idle","starting","live","failed"].includes(t)&&Be(t),typeof r.error=="string"&&(T(r.error),X(!1),Be("failed"));return}if(r.kind==="offer"){typeof r.warning=="string"&&T(r.warning),Ut(e,r.sdp,Array.isArray(r.iceServers)?r.iceServers:void 0);return}if(r.kind==="ice"){const t=r.candidate,u=z.current;u&&t&&u.addIceCandidate(t).catch(()=>{});return}if(r.kind==="state"){const t=String(r.state);t==="connected"?K("live"):(t==="failed"||t==="disconnected"||t==="closed")&&K("failed")}}},[Ut,Ot,X]),[se,Ht]=s.useState(null);s.useEffect(()=>{if(!m){Ht(null);return}const e=typeof m.data=="string"?`data:${m.mime};base64,${m.data}`:URL.createObjectURL(new Blob([m.data],{type:m.mime}));let r=!1,t=!1;const u=new Image;return u.src=e,u.decode().then(()=>{r||(t=!0,Ht(e))}).catch(()=>{}),()=>{r=!0,!t&&e.startsWith("blob:")&&URL.revokeObjectURL(e)}},[m]),s.useEffect(()=>()=>{se!=null&&se.startsWith("blob:")&&URL.revokeObjectURL(se)},[se]);const _=s.useCallback(e=>{F(r=>{const t=r.findIndex(d=>d.id===e.id);if(t>=0&&hr(r[t],e))return r;if(t<0)return[e,...r];const u=[...r];return u[t]=e,u.sort((d,k)=>k.updatedAt-d.updatedAt)}),ce(r=>cn(r,[e],l)),be(!1)},[l]),ut=s.useCallback(async()=>{if(!(!c||!i)){le(!0),T(null);try{const e=await c.request("browser:list");F(e.sessions),ce(r=>{const t=r&&e.sessions.some(u=>u.id===r)?r:null;return cn(t,e.sessions,l)}),b&&await c.request("browser:watch",{sessionId:b}).then(r=>_(r.session)).catch(()=>{}),M(r=>r+1)}catch(e){T(e instanceof Error?e.message:"无法读取浏览器会话")}finally{le(!1)}}},[l,c,_,i,b]);s.useEffect(()=>{if(!(!i||!c))return ut(),c.onEvent(e=>{var r;if(e.type==="browser:connection"){(r=z.current)==null||r.close(),z.current=null,K("off"),be(!1),F([]),Z(null),e.connected===!0?ut():T("远程连接已断开,正在重新连接");return}if(e.type==="browser:frame"){const t=e;t.sessionId===b&&Z(t);return}if(e.type==="browser:webrtc"){const t=e.data;e.sessionId===b&&Wt(b,t);return}if(e.session&&typeof e.session=="object"&&_(e.session),e.type==="browser:closed"){const t=e.session;t&&(F(u=>u.filter(d=>d.id!==t.id)),t.id===b&&(Z(null),ce(null)))}})},[c,Wt,_,i,ut,b]),s.useEffect(()=>{if(!(!i||!c||!b))return Z(null),T(null),qe.current=!1,nt(null),c.request("browser:watch",{sessionId:b}).then(e=>_(e.session)).catch(e=>T(e instanceof Error?e.message:"无法观看浏览器")),()=>{c.request("browser:unwatch").catch(()=>{})}},[c,_,i,b]),s.useEffect(()=>{var e,r;if(!i||!c||!w||!R||!b){qe.current=!1,nt(null),tt.current=0,(e=z.current)==null||e.close(),z.current=null,fe.current&&(fe.current.srcObject=null),je.current=null,Ve(null),K("off");return}return(r=z.current)==null||r.close(),z.current=null,je.current=null,Ve(null),K("connecting"),he.current.begin(performance.now()),c.request("browser:webrtc",{sessionId:b,data:{kind:"start",receiverProfiles:rr()}}).catch(()=>K("failed")),()=>{var t;(t=z.current)==null||t.close(),z.current=null,fe.current&&(fe.current.srcObject=null),je.current=null,Ve(null),c.request("browser:webrtc",{sessionId:b,data:{kind:"stop"}}).catch(()=>{})}},[c,w,R,i,b,Ke]),s.useEffect(()=>{if(!i||!w||!R||de!=="failed"||tt.current>=2)return;const e=window.setTimeout(()=>{tt.current+=1,M(r=>r+1)},2e3*(tt.current+1));return()=>window.clearTimeout(e)},[i,w,R,de]),s.useEffect(()=>{if(!c||!b||de!=="live"){je.current=null,Ve(null);return}let e=!0,r=!1;const t=fe.current,u=typeof(t==null?void 0:t.requestVideoFrameCallback)=="function";let d,k=null;he.current.begin(performance.now());const j=B=>{!e||document.visibilityState==="hidden"||he.current.observe(B,performance.now())&&qe.current&&(qe.current=!1,nt(null),c.request("browser:webrtc",{sessionId:b,data:{kind:"viewer-trace",event:"stall-recovered",...k?{sample:k}:{}}}).catch(()=>{}))};if(u&&t){const B=(Q,We)=>{j(We.presentedFrames),e&&(d=t.requestVideoFrameCallback(B))};d=t.requestVideoFrameCallback(B)}const g=()=>{document.visibilityState!=="hidden"&&he.current.resume(performance.now())};document.addEventListener("visibilitychange",g);const E=async()=>{const B=z.current;if(!(!B||r)){r=!0;try{const Q=await B.getStats().catch(()=>null);if(!e||B!==z.current)return;const We=performance.now(),ae=Q&&or(Q,je.current);ae&&(je.current=ae.cursor,k=ae.sample,Ve(ae.sample),c.request("browser:webrtc",{sessionId:b,data:{kind:"stats",...ae.sample}}).catch(()=>{}));const _t=tr(t,ae==null?void 0:ae.cursor.framesDecoded);u||j(_t);const Tn=u||_t!==void 0||!(t!=null&&t.videoWidth);if(document.visibilityState!=="hidden"&&Tn&&he.current.evaluate(We).state==="stalled"){const Ln=he.current.evaluate(We);he.current.begin(We),K(Qt=>Qt==="live"?"failed":Qt),qe.current=!0,nt("实时画面超时,已切换为 JPEG 兜底画面"),c.request("browser:webrtc",{sessionId:b,data:{kind:"viewer-trace",event:"jpeg-fallback",silentForMs:Ln.silentForMs,...k?{sample:k}:{}}}).catch(()=>{})}}catch{}finally{r=!1}}};E();const W=window.setInterval(()=>void E(),1e3);return()=>{e=!1,window.clearInterval(W),d!==void 0&&(t==null||t.cancelVideoFrameCallback(d)),document.removeEventListener("visibilitychange",g)}},[c,b,de]);const wn=s.useCallback(async()=>{if(!(!c||!a)){be(!0),T(null);try{const e=await c.request("browser:takeover",{sessionId:a.id});_(e.session)}catch(e){be(!1),T(e instanceof Error?e.message:"无法接管浏览器")}}},[c,_,a]),kn=s.useCallback(async()=>{if(!(!c||!a)){be(!0),T(null);try{const e=await c.request("browser:return",{sessionId:a.id});_(e.session)}catch(e){be(!1),T(e instanceof Error?e.message:"无法归还浏览器")}}},[c,_,a]),vt=s.useCallback(async(e,r)=>{if(!(!c||!b)){Lt(e),T(null);try{await c.request("browser:system",{sessionId:b,action:e,...r?{password:r}:{}}),window.setTimeout(()=>M(t=>t+1),800)}catch(t){T(t instanceof Error?t.message:"系统操作失败")}finally{Lt(null)}}},[c,b]),gn=s.useCallback(async()=>{if(!(!c||!b||!ze)){At(!0),ke(null);try{await c.request("browser:system",{sessionId:b,action:"unlock",password:ze}),ye(""),Pe(!1),window.setTimeout(()=>M(e=>e+1),2500)}catch(e){ke(e instanceof Error?e.message:"解锁失败")}finally{ye(""),At(!1)}}},[c,b,ze]),N=s.useCallback(e=>{!c||D||A||!(a!=null&&a.isController)||a.state!=="user-controlled"||c.request("browser:input",{sessionId:a.id,input:{...e,mobile:window.matchMedia("(pointer: coarse)").matches}}).catch(r=>{T(r instanceof Error?r.message:"浏览器输入失败")})},[c,a,D,A]),U=s.useCallback((e,r,t=[])=>{N({kind:"key",action:"down",key:e,code:r,text:"",modifiers:t}),N({kind:"key",action:"up",key:e,code:r,text:"",modifiers:t})},[N]),Ue=s.useCallback(e=>{U(e,`Key${e.toUpperCase()}`,["Control"])},[U]),xn=s.useCallback(async e=>{var t;if(!c||!(a!=null&&a.isController)||a.state!=="user-controlled"||D||A)throw new Error("连接正在切换,请稍后重试");const r=await c.request("browser:input",{sessionId:a.id,input:{kind:"key",action:"down",text:e,key:"",code:"",modifiers:[],mobile:window.matchMedia("(pointer: coarse)").matches}});if((t=r.input)!=null&&t.error)throw new Error(r.input.error)},[c,a,D,A]),Ct=s.useCallback(e=>!c||D||A||!(a!=null&&a.isController)||a.state!=="user-controlled"?Promise.resolve(null):c.request("browser:input",{sessionId:a.id,input:{...e,mobile:window.matchMedia("(pointer: coarse)").matches}}).then(r=>r&&typeof r=="object"?r:null).catch(()=>null),[c,a,D,A]),jt=s.useCallback((e,r,t=!1)=>{const u=++Ge.current;Ct({kind:"pointer",action:"up",...e,button:"left",...r&&r>1?{click:r}:{}}).then(d=>{u===Ge.current&&xt(d,t)})},[xt,Ct]),dt=s.useRef(!1),Rt=s.useRef(""),Kt=s.useCallback(e=>{const r=Rt.current;if(e!==r){if(e.startsWith(r)){const t=e.slice(r.length);t&&N({kind:"key",action:"down",text:t,key:"",code:"",modifiers:[]})}Rt.current=e}},[N]),q=(a==null?void 0:a.displays)??null;s.useEffect(()=>{if(!A)return;const e=window.setTimeout(()=>{ne(null),T("画质切换未完成,请刷新画面后重试")},14e3);return()=>window.clearTimeout(e)},[A]),s.useEffect(()=>{ne(null),He("hd")},[i,b]);const vn=e=>{!c||!pe||D||A||!b||(ne(e),c.request("browser:webrtc",{sessionId:b,data:{kind:"quality",quality:e}}).catch(r=>{ne(null),T(r instanceof Error?r.message:"画质切换失败")}))};s.useEffect(()=>{if(!D)return;if(q!=null&&q.some(r=>r.id===D&&r.selected)){te(null);return}const e=window.setTimeout(()=>{te(null),T("切换屏幕未完成,请刷新画面后重试")},14e3);return()=>window.clearTimeout(e)},[q,D]),s.useEffect(()=>{te(null)},[i,b]);const Mt=s.useRef(0),Cn=s.useCallback(e=>{!c||D||A||!b||!pe||!(q!=null&&q.some(r=>r.id===e&&!r.selected))||(te(e),c.request("browser:set-display",{sessionId:b,displayId:e}).catch(r=>{te(null),T(r instanceof Error?r.message:"切换屏幕失败")}))},[c,q,b,pe,D,A]),ee=s.useCallback(e=>{const r=e.currentTarget.getBoundingClientRect(),t=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport);if(!t)return null;const u=Math.min(r.width/t.width,r.height/t.height),d=t.width*u,k=t.height*u,j=(r.width-d)/2,g=(r.height-k)/2,E=(e.clientX-r.left-j)/d,W=(e.clientY-r.top-g)/k;return E<0||E>1||W<0||W>1?null:{x:E,y:W}},[m==null?void 0:m.viewport,a==null?void 0:a.viewport]);if(!i||typeof document>"u")return null;const jn=(a==null?void 0:a.online)&&!a.controlledByAnotherViewer,Rn=(a==null?void 0:a.availability)==="unavailable"?R?"桌面直播不可用":"浏览器直播不可用":(a==null?void 0:a.availability)==="starting"?"正在连接画面":R&&(a==null?void 0:a.state)==="agent-controlled"?"未被远程控制":a?cr[a.state]:R?"等待桌面直播":"等待浏览器",Mn=(a==null?void 0:a.availability)==="unavailable"?R?"桌面直播不可用":"浏览器直播不可用":(a==null?void 0:a.availability)==="starting"?"正在连接画面":L.length?"等待第一帧":R?"暂无桌面直播":"暂无浏览器直播",Sn=(a==null?void 0:a.availability)==="unavailable"?a.capabilityError||(R?"需要在桌面 App 中开启并授予屏幕录制权限":"当前浏览器不支持实时画面传输"):L.length?"画面开始后会自动显示":R?"在桌面 App 设置中开启「桌面直播与远程控制」后,画面会出现在这里":"Agent 开始浏览网页后,会话会出现在这里",En=sr(Dt),Xt=ar(Dt),Yt=de==="live"?En||"WebRTC 实时流":de==="connecting"?"正在连接 WebRTC":se?"JPEG 兜底":null;return en.createPortal(o.jsxs("div",{ref:y,className:"browser-live-backdrop",style:{visibility:n?void 0:"hidden",pointerEvents:n?void 0:"none"},"aria-hidden":!n,"data-tab-swipe-ignore":!0,role:"presentation",onMouseDown:e=>{e.target===e.currentTarget&&h()},children:[o.jsxs("section",{ref:x,className:`browser-live-panel ${v?"is-fullscreen":""}`,role:"dialog","aria-modal":"true","aria-label":"浏览器直播",children:[o.jsxs("header",{className:"browser-live-header",children:[o.jsxs("div",{className:"browser-live-heading",children:[o.jsx(tn,{size:17,"aria-hidden":"true"}),o.jsxs("div",{children:[o.jsx("strong",{children:"浏览器直播"}),o.jsx("span",{children:a?Tt(a.backend):"实时观看与接管"})]}),p]}),o.jsxs("div",{className:"browser-live-header-actions",children:[o.jsx("button",{type:"button",className:"ui-icon-button",onClick:()=>void P(),title:v?"退出全屏":"全屏","aria-label":v?"退出全屏":"全屏","aria-pressed":v,children:v?o.jsx(Et,{size:17}):o.jsx(Bn,{size:17})}),o.jsx("button",{type:"button",className:"ui-icon-button",onClick:()=>void ut(),title:"刷新画面与会话","aria-label":"刷新直播画面与会话",children:o.jsx(Fn,{size:15,className:Ae?"spin":void 0,"aria-hidden":"true"})}),o.jsx("button",{type:"button",className:"ui-icon-button",onClick:h,title:"关闭","aria-label":"关闭浏览器直播",children:o.jsx(In,{size:17,"aria-hidden":"true"})})]})]}),o.jsxs("div",{className:`browser-live-surface ${w?"is-controlling":""} has-zoom ${w&&!S&&Ie?"has-quickkeys":""}`,children:[o.jsxs("div",{className:"browser-live-zoom",role:"group","aria-label":"桌面画面缩放",children:[v&&o.jsxs("button",{type:"button","aria-label":"退出全屏",title:"退出全屏",onClick:()=>void P(),children:[o.jsx(Et,{size:15,"aria-hidden":"true"}),"退出全屏"]}),L.length>1&&o.jsx("div",{className:"browser-live-session-tabs",role:"tablist","aria-label":"切换直播屏幕",children:L.map(e=>o.jsx("button",{type:"button",role:"tab","aria-selected":e.id===b,className:e.id===b?"is-active":"",title:`${Tt(e.backend)} · ${e.title||"浏览器"}`,onClick:()=>ce(e.id),children:e.title||Tt(e.backend)},e.id))}),R&&q&&q.length>1&&o.jsx(sn,{label:"选择直播屏幕",title:pe?"选择直播屏幕":"其他设备控制中或画面暂不可用",value:(q.find(e=>e.selected)??q[0]).id,busy:!!D,disabled:!m||!pe||A||q.length<2,onChange:Cn,children:q.map((e,r)=>o.jsx("option",{value:e.id,children:`第 ${r+1} 屏${e.primary?"(主屏)":""}`},e.id))}),R&&o.jsxs(sn,{label:"视频画质",title:pe?"视频画质":"其他设备控制中或画面暂不可用",value:Le,busy:A!==null,disabled:!pe||!!D,compact:!0,onChange:vn,children:[o.jsx("option",{value:"smooth",children:"流畅"}),o.jsx("option",{value:"hd",children:"高清"}),o.jsx("option",{value:"original",children:"原画"})]}),R&&w&&Ee&&J!=="live"&&o.jsxs("button",{type:"button","aria-label":"开始语音",title:"开始双向语音",disabled:J==="starting",onClick:()=>void yn(),children:[J==="starting"?o.jsx(G,{size:15,className:"spin","aria-hidden":"true"}):o.jsx(rn,{size:15,"aria-hidden":"true"}),J==="starting"?"正在连接":"开始语音"]}),R&&w&&Ee&&J==="live"&&o.jsxs(o.Fragment,{children:[o.jsx("button",{type:"button","aria-label":rt?"取消麦克风静音":"麦克风静音","aria-pressed":rt,title:rt?"打开麦克风":"关闭麦克风",onClick:()=>{var r;const e=!ot.current;ot.current=e;for(const t of((r=Oe.current)==null?void 0:r.getAudioTracks())??[])t.enabled=!e;It(e)},children:rt?o.jsx(On,{size:15,"aria-hidden":"true"}):o.jsx(rn,{size:15,"aria-hidden":"true"})}),o.jsx("button",{type:"button","aria-label":it?"取消扬声器静音":"扬声器静音","aria-pressed":it,title:it?"打开电脑声音":"关闭电脑声音",onClick:()=>{const e=!st.current;st.current=e,Re.current&&(Re.current.gain.value=e?0:1),Vt(e),e&&(Me.current=0)},children:it?o.jsx(Hn,{size:15,"aria-hidden":"true"}):o.jsx(Wn,{size:15,"aria-hidden":"true"})}),o.jsx("button",{type:"button","aria-label":"结束语音",title:"结束双向语音",onClick:()=>X(!0),children:o.jsx(Un,{size:15,"aria-hidden":"true"})})]}),o.jsx("button",{type:"button","aria-label":"缩小桌面画面",title:"缩小",disabled:!m||re<=.5,onClick:()=>Ne(e=>Math.max(.5,e-.25)),children:o.jsx(Xn,{size:16})}),o.jsxs("output",{"aria-label":"桌面缩放比例",children:[Math.round(re*100),"%"]}),o.jsx("button",{type:"button","aria-label":"放大桌面画面",title:"放大",disabled:!m||re>=5,onClick:()=>Ne(e=>Math.min(5,e+.25)),children:o.jsx(Kn,{size:16})}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>{var e;Ne(1),pt(!1),(e=$.current)==null||e.scrollTo(0,0)},children:"适应窗口"}),o.jsxs("button",{type:"button","aria-label":"移动桌面画面","aria-pressed":S,title:"拖动或滚动画面,不发送远程输入",disabled:!m,onClick:()=>pt(e=>!e),children:[o.jsx(Vn,{size:15}),"移动画面"]}),o.jsxs("button",{type:"button","aria-label":"唤起键盘","aria-pressed":Y,title:"唤起/收起键盘(无法识别输入框时可手动唤起)",className:hn&&!Y?"is-hint":void 0,disabled:!m||!w,onPointerDown:e=>e.preventDefault(),onClick:()=>{Ze(!1),mn()},children:[o.jsx(St,{size:15}),"键盘"]}),o.jsxs("button",{type:"button","aria-label":"快捷键条","aria-pressed":Ie,title:"展开/收起快捷键(Esc/Tab/复制/粘贴/方向键)",disabled:!m||!w,onClick:()=>pn(e=>!e),children:[o.jsx(St,{size:15}),Ie?"收起":"快捷键"]}),o.jsxs("button",{type:"button","aria-label":"窗口控制",title:"全屏看不到左上角按钮时用:第 1 次点=退出全屏(ESC + Ctrl+Cmd+F),第 2 次点=关闭窗口(Cmd+W)",disabled:!m||!w,onClick:()=>{const e=Date.now();if(e-Mt.current<2500){U("w","KeyW",["Meta"]),Mt.current=0;return}Mt.current=e,U("Escape","Escape"),window.setTimeout(()=>{U("f","KeyF",["Control","Meta"])},150)},children:[o.jsx(St,{size:15}),"窗口"]}),Bt&&o.jsxs(o.Fragment,{children:[o.jsxs("button",{type:"button","aria-label":"锁屏",title:"锁屏(锁屏后仍可从空态区唤醒或远程解锁)",disabled:!m||!!me,onClick:()=>void vt("lock"),children:[me==="lock"?o.jsx(G,{size:15,className:"spin"}):o.jsx(qn,{size:15}),"锁屏"]}),o.jsxs("button",{type:"button","aria-label":"唤醒屏幕",title:"唤醒显示器或锁屏界面",disabled:!!me,onClick:()=>void vt("wake"),children:[me==="wake"?o.jsx(G,{size:15,className:"spin"}):o.jsx(on,{size:15}),"唤醒"]})]})]}),w&&!S&&Ie&&o.jsxs("div",{className:"browser-live-quickkeys",role:"group","aria-label":"快捷键",children:[o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("Escape","Escape"),children:"Esc"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("Tab","Tab"),children:"Tab"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("c"),children:"复制"}),o.jsx(Yn,{disabled:!m||!!D||!!A,onPaste:xn,onError:T},b),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("a"),children:"全选"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("z"),children:"撤销"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("s"),children:"保存"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("f"),children:"查找"}),o.jsx("button",{type:"button",disabled:!m,title:"退出当前前台应用(Cmd+Q)",onClick:()=>U("q","KeyQ",["Meta"]),children:"⌘Q"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowLeft","ArrowLeft"),children:"←"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowUp","ArrowUp"),children:"↑"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowDown","ArrowDown"),children:"↓"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowRight","ArrowRight"),children:"→"})]}),!(w&&!S&&Ie)&&o.jsx("div",{className:"browser-live-touch-hint",children:"滑动滚动 · 轻点点击 · 双击打开 · 长按拖动 · 按住1秒右键 · 双指缩放"}),o.jsx("div",{ref:$,className:"browser-live-viewport",onMouseDown:e=>{Ce.current&&e.preventDefault()},children:m&&se?o.jsxs("div",{className:"browser-live-image-hit-area",style:gt&&Te?{width:Te.width*gt*re,height:Te.height*gt*re,cursor:S?"grab":void 0}:void 0,tabIndex:w&&!S?0:-1,onContextMenu:e=>e.preventDefault(),onPointerDown:e=>{if(e.pointerType==="touch"){e.preventDefault(),ie.current.down(e.pointerId,{x:e.clientX,y:e.clientY}),ve.current=w&&!S?ee(e):null;const t=ve.current;t&&R&&(a==null?void 0:a.platform)==="darwin"&&Ct({kind:"pointer",action:"move",...t,probe:!0}).then(u=>{ve.current===t&&xt(u)}),e.currentTarget.setPointerCapture(e.pointerId),I.current&&window.clearTimeout(I.current),H.current="none",Fe.current=w&&!S?{x:e.clientX,y:e.clientY}:null,Je.current=e.timeStamp,Fe.current&&(I.current=window.setTimeout(()=>{H.current="armed"},550));return}if(S&&$.current){const t=$.current;xe.current={x:e.clientX,y:e.clientY,left:t.scrollLeft,top:t.scrollTop},e.currentTarget.setPointerCapture(e.pointerId);return}if(!w)return;const r=ee(e);r&&(Ye.current=!0,e.currentTarget.setPointerCapture(e.pointerId),N({kind:"pointer",action:"down",...r,button:"left"}))},onPointerMove:e=>{if(e.pointerType==="touch"){e.preventDefault();const t=ie.current.move(e.pointerId,{x:e.clientX,y:e.clientY}),u=$.current;if(!t||!u)return;const d=t.pointers>=2&&Math.abs(t.distanceRatio-1)>.05,k=Math.max(.5,Math.min(5,De.current*t.scale));if(d&&k!==De.current){const g=e.currentTarget.getBoundingClientRect();_e.current={x:(t.from.x-g.left)/g.width,y:(t.from.y-g.top)/g.height,clientX:t.to.x,clientY:t.to.y},De.current=k,en.flushSync(()=>Ne(k));return}if(I.current&&(window.clearTimeout(I.current),I.current=null),H.current==="armed"&&Fe.current){H.current="drag";const g=ee(e);g&&N({kind:"pointer",action:"down",...g,button:"left"})}if(H.current==="drag"){const g=ee(e);g&&N({kind:"pointer",action:"move",...g,button:"left"});return}const j=De.current<=1.001;if(w&&!S&&(t.pointers>=2||j)){const g=mr(t.from,t.to);if(g){const E=ve.current??ee(e);E&&N({kind:"pointer",action:"wheel",...E,...g})}return}u.scrollLeft+=t.from.x-t.to.x,u.scrollTop+=t.from.y-t.to.y;return}if(S&&xe.current&&$.current){const t=xe.current;$.current.scrollTo(t.left+t.x-e.clientX,t.top+t.y-e.clientY);return}if(!w||!Ye.current)return;const r=ee(e);r&&N({kind:"pointer",action:"move",...r,button:"left"})},onPointerUp:e=>{if(e.pointerType==="touch"){e.preventDefault(),I.current&&(window.clearTimeout(I.current),I.current=null);const t=ee(e);ve.current=null;const u=ie.current.up(e.pointerId,{x:e.clientX,y:e.clientY});if(H.current==="armed"){H.current="none";const d=e.timeStamp-Je.current;if(u&&d>=800&&t&&w&&!S){ie.current.reset(),N({kind:"pointer",action:"down",...t,button:"right"}),N({kind:"pointer",action:"up",...t,button:"right"});return}}if(H.current==="drag"){H.current="none",ie.current.reset(),t&&w&&N({kind:"pointer",action:"up",...t,button:"left"});return}if(u&&t&&w&&!S){const d=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport);if(br(oe.current,d,t.x,t.y)){const g=ue.current;g&&document.activeElement!==g&&g.focus({preventScroll:!0}),Ze(!1)}const k=bt.current;k!==null&&Date.now()-k.at<400&&d!==void 0&&Math.hypot((t.x-k.x)*d.width,(t.y-k.y)*d.height)<d.width*.03?(N({kind:"pointer",action:"down",...t,button:"left",click:2}),jt(t,2,!0),bt.current=null):(N({kind:"pointer",action:"down",...t,button:"left"}),jt(t,void 0,!0),bt.current={at:Date.now(),x:t.x,y:t.y})}return}if(S){xe.current=null;return}if(!w)return;const r=ee(e);Ye.current=!1,r&&jt(r)},onPointerCancel:e=>{ie.current.up(e.pointerId,{x:e.clientX,y:e.clientY},!0),xe.current=null,Ye.current=!1,ve.current=null,I.current&&(window.clearTimeout(I.current),I.current=null),H.current="none",Fe.current=null,Je.current=0},onLostPointerCapture:e=>{ie.current.up(e.pointerId,{x:e.clientX,y:e.clientY},!0),I.current&&(window.clearTimeout(I.current),I.current=null),H.current="none",Fe.current=null,Je.current=0},onWheel:e=>{if(!w||S)return;const r=ee(e);r&&N({kind:"pointer",action:"wheel",...r,deltaX:e.deltaX,deltaY:e.deltaY})},onKeyDown:e=>{!w||S||e.target===ue.current&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey||(N({kind:"key",action:"down",key:e.key,code:e.code,text:e.key.length===1?e.key:"",modifiers:ln(e)}),["Backspace","Tab","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End","Escape"].includes(e.key)&&e.preventDefault())},onKeyUp:e=>{!w||S||e.target===ue.current&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey||w&&N({kind:"key",action:"up",key:e.key,code:e.code,modifiers:ln(e)})},children:[o.jsx("img",{src:se,alt:(a==null?void 0:a.title)||"浏览器实时画面",draggable:!1,decoding:"async"}),o.jsx("video",{ref:fe,className:`browser-live-video ${de==="live"?"is-live":""}`,"aria-label":R?"桌面实时视频流":"浏览器实时视频流",autoPlay:!0,playsInline:!0,muted:!0}),o.jsx("input",{ref:ue,className:"browser-live-mobile-input","aria-label":"浏览器键盘输入",defaultValue:"",inputMode:"text",autoCapitalize:"none",autoCorrect:"off",autoComplete:"off",spellCheck:!1,onFocus:()=>{Ce.current=!0,Qe(!0)},onCompositionStart:()=>{dt.current=!0},onCompositionEnd:e=>{dt.current=!1,S||Kt(e.target.value)},onBlur:e=>{Ce.current=!1,dt.current=!1,Rt.current="",e.target.value="",Qe(!1)},onChange:e=>{!S&&!dt.current&&Kt(e.target.value)}}),A&&o.jsxs("div",{className:"browser-live-quality-pending",role:"status",children:[o.jsx(G,{size:13,className:"spin","aria-hidden":"true"}),"正在切换至",lr[A]??A,"画质…"]})]}):o.jsxs("div",{className:"browser-live-empty",children:[Ae||(a==null?void 0:a.availability)==="starting"?o.jsx(G,{size:22,className:"spin","aria-hidden":"true"}):o.jsx(tn,{size:24,"aria-hidden":"true"}),o.jsx("strong",{children:Ae?"正在连接浏览器":Mn}),o.jsx("span",{children:Sn}),bn&&o.jsxs("div",{role:"group","aria-label":"锁屏远程操作",style:{display:"flex",gap:8,marginTop:12},children:[o.jsxs("button",{type:"button",className:"browser-live-control-button",disabled:!!me,onClick:()=>void vt("wake"),children:[me==="wake"?o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}):o.jsx(on,{size:14,"aria-hidden":"true"}),"唤醒屏幕"]}),Bt&&o.jsxs("button",{type:"button",className:"browser-live-control-button",disabled:we,onClick:()=>{ke(null),Pe(!0)},children:[o.jsx(nn,{size:14,"aria-hidden":"true"}),"远程解锁"]})]})]})}),v&&o.jsxs("button",{type:"button",className:"browser-live-exit-fullscreen",onClick:()=>void P(),children:[o.jsx(Et,{size:14,"aria-hidden":"true"}),"退出全屏"]}),w&&!S&&o.jsxs("div",{className:"browser-live-control-cue",children:[o.jsx($n,{size:13,"aria-hidden":"true"}),o.jsxs("span",{children:[R?"当前输入会发送到本机":"当前输入会发送到浏览器",R&&Yt?` · ${Yt}`:"",R&&Xt?` · ${Xt}`:"",zt!=null?` · 控制 ${zt}ms`:""]})]})]}),!v&&o.jsxs("footer",{className:"browser-live-footer",children:[o.jsxs("div",{className:"browser-live-location",children:[o.jsx("span",{className:`browser-live-status-dot is-${(a==null?void 0:a.state)??"idle"}`,"aria-hidden":"true"}),o.jsxs("div",{children:[o.jsx("strong",{children:Rn}),o.jsx("span",{title:a==null?void 0:a.url,children:(a==null?void 0:a.capabilityError)||(R?"本机屏幕":a==null?void 0:a.url)||ht||"等待可观看的直播会话"})]}),(a==null?void 0:a.url)&&!R&&o.jsx(Dn,{size:13,"aria-hidden":"true"})]}),a&&(w?o.jsxs("button",{type:"button",className:"browser-live-control-button is-return",onClick:()=>void kn(),disabled:Xe,children:[Xe&&o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}),R?"结束控制":"归还给 Agent"]}):o.jsxs("button",{type:"button",className:"browser-live-control-button",onClick:()=>void wn(),disabled:!jn||Xe||a.state!=="agent-controlled"||a.availability!=="ready",children:[Xe&&o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}),a.controlledByAnotherViewer?"其他设备操作中":R?"开始控制":"接管浏览器"]}))]}),(ht??Ft)&&o.jsx("div",{className:"browser-live-error",role:"alert",children:ht??Ft})]}),dn&&o.jsx("div",{className:"browser-live-unlock-backdrop",role:"presentation",onMouseDown:e=>{e.target===e.currentTarget&&!we&&(Pe(!1),ye(""),ke(null))},children:o.jsxs("form",{className:"browser-live-unlock-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"browser-live-unlock-title",onSubmit:e=>{e.preventDefault(),gn()},children:[o.jsxs("div",{className:"browser-live-unlock-heading",children:[o.jsx(nn,{size:18,"aria-hidden":"true"}),o.jsx("strong",{id:"browser-live-unlock-title",children:"远程解锁 Windows"})]}),o.jsx("label",{htmlFor:"browser-live-unlock-password",children:"Windows 密码或 PIN"}),o.jsx("input",{id:"browser-live-unlock-password",type:"password",autoComplete:"off",autoFocus:!0,maxLength:256,value:ze,disabled:we,onChange:e=>ye(e.target.value)}),Pt&&o.jsx("p",{role:"alert",children:Pt}),o.jsxs("div",{className:"browser-live-unlock-actions",children:[o.jsx("button",{type:"button",className:"browser-live-control-button is-return",disabled:we,onClick:()=>{Pe(!1),ye(""),ke(null)},children:"取消"}),o.jsxs("button",{type:"submit",className:"browser-live-control-button",disabled:we||!ze,children:[we&&o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}),"解锁"]})]})]})})]}),document.body)}export{Cr as B,rn as M,Wn as V,Xn as Z,Kn as a};
|
|
76
|
+
*/const Xn=V("ZoomOut",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);function sn({label:i,title:n,value:l,busy:h,disabled:f,compact:p,onChange:c,children:y}){return o.jsxs("span",{className:`live-view-select${p?" live-view-select--compact":""}`,children:[o.jsx("select",{"aria-label":i,"aria-busy":h,title:n,value:l,disabled:f||h,onChange:x=>c(x.target.value),children:y}),h?o.jsx("span",{className:"live-view-select-icon",role:"status","aria-label":`${i}正在切换`,children:o.jsx(G,{size:14,className:"spin","aria-hidden":"true"})}):o.jsx(Pn,{size:14,className:"live-view-select-icon","aria-hidden":"true"})]})}function Yn({disabled:i,onPaste:n,onError:l}){const[h,f]=s.useState(!1),[p,c]=s.useState(!1),y=s.useRef(null),x=s.useRef(!1),g=s.useRef(!0),v=s.useRef(!i);v.current=!i,s.useEffect(()=>(g.current=!0,()=>{g.current=!1}),[]),s.useEffect(()=>{var L;p&&((L=y.current)==null||L.focus({preventScroll:!0}))},[p]);const P=async L=>{if(!(x.current||i)){x.current=!0,f(!0),l(null);try{const F=await L();if(!g.current||!v.current)return;if(F===null){c(!0),l("浏览器限制读取剪贴板,请长按“系统粘贴”使用系统菜单,粘贴后自动输入电脑");return}if(!F)throw new Error("剪贴板里没有文字");await n(F),g.current&&c(!1)}catch(F){g.current&&l(F instanceof Error?F.message:"粘贴失败,请重试")}finally{x.current=!1,g.current&&f(!1)}}};return p?o.jsx("input",{ref:y,className:"browser-live-native-paste","aria-label":"系统粘贴",placeholder:"系统粘贴",disabled:i||h,defaultValue:"",autoCapitalize:"none",autoCorrect:"off",autoComplete:"off",spellCheck:!1,onPaste:L=>{L.preventDefault();const F=L.clipboardData.getData("text/plain");P(()=>Promise.resolve(F))}}):o.jsx("button",{type:"button",disabled:i||h,title:"直接粘贴当前手机或电脑剪贴板的文字",onClick:()=>void P(Nn),children:h?"粘贴中…":"粘贴"})}const _n=5e3,Qn=1e4;class Gn{constructor(){this.startedAt=null,this.lastFrameAt=null,this.lastFrameCount=null}begin(n){this.startedAt=n,this.lastFrameAt=null,this.lastFrameCount=null}resume(n){this.startedAt!==null&&(this.startedAt=n),this.lastFrameAt!==null&&(this.lastFrameAt=n)}observe(n,l){return typeof n!="number"||!Number.isFinite(n)||n<0||n===this.lastFrameCount||(this.lastFrameCount=n,n===0)?!1:(this.lastFrameAt=l,!0)}evaluate(n){const l=this.lastFrameAt??this.startedAt;if(l===null)return{state:"streaming",silentForMs:0};const h=Math.max(0,n-l),f=this.lastFrameAt===null?_n:Qn;return{state:h>=f?"stalled":"streaming",silentForMs:h}}}var ft,un;class Zn{constructor(){Zt(this,ft);this.points=new Map,this.origin=null,this.originDistance=0,this.moved=!1}reset(){this.points.clear(),this.origin=null,this.originDistance=0,this.moved=!1}down(n,l){this.points.size||(this.origin=l,this.moved=!1),this.points.set(n,l),this.points.size>1&&(this.moved=!0),this.originDistance=Jt(this,ft,un).call(this)}move(n,l){const h=this.points.get(n);if(!h)return null;const f=[...this.points.values()];if(this.points.set(n,l),this.origin&&Math.hypot(l.x-this.origin.x,l.y-this.origin.y)>8&&(this.moved=!0),this.points.size===1)return this.moved?{scale:1,distanceRatio:1,from:h,to:l,pointers:1}:null;const p=[...this.points.values()],c=v=>({x:(v[0].x+v[1].x)/2,y:(v[0].y+v[1].y)/2}),y=v=>Math.hypot(v[0].x-v[1].x,v[0].y-v[1].y),x=y(f),g=this.originDistance>0?y(p)/this.originDistance:1;return{scale:x>0?y(p)/x:1,distanceRatio:g,from:c(f),to:c(p),pointers:this.points.size}}up(n,l,h=!1){if(!this.points.has(n))return!1;const f=!h&&!this.moved&&this.points.size===1&&!!this.origin&&Math.hypot(l.x-this.origin.x,l.y-this.origin.y)<=8;return this.points.delete(n),h&&(this.moved=!0),this.points.size||this.reset(),f}}ft=new WeakSet,un=function(){const n=[...this.points.values()];return n.length>=2?Math.hypot(n[0].x-n[1].x,n[0].y-n[1].y):0};function Jn(i,n,l){const h=Math.max(i.top,n.top-l.top),f=Math.max(i.left,n.left-l.left),p=Math.min(i.top+i.height,n.top+n.height-l.top),c=Math.min(i.left+i.width,n.left+n.width-l.left);return{top:h,left:f,height:Math.max(0,p-h),width:Math.max(0,c-f)}}function an(i){const n=i.visualViewport;return{top:(n==null?void 0:n.offsetTop)??0,left:(n==null?void 0:n.offsetLeft)??0,width:(n==null?void 0:n.width)??i.innerWidth,height:(n==null?void 0:n.height)??i.innerHeight}}function er(i,n=window){let l=null,h=null;try{n.parent!==n&&n.parent.location.origin===n.location.origin&&(l=n.parent,h=n.frameElement)}catch{}let f=null,p=null;const c=()=>{let v=an(n);l&&h&&!n.document.fullscreenElement&&(v=Jn({top:0,left:0,width:n.innerWidth,height:n.innerHeight},an(l),h.getBoundingClientRect()));for(const[P,L]of Object.entries(v))i.style.setProperty(`--browser-live-${P}`,`${L}px`)},y=()=>{f!==null&&n.cancelAnimationFrame(f),f=n.requestAnimationFrame(()=>{f=null,c()}),p!==null&&n.clearTimeout(p),p=n.setTimeout(c,250)},x=[n,n.document];n.visualViewport&&x.push(n.visualViewport),l&&(x.push(l),x.push(l.document),l.visualViewport&&x.push(l.visualViewport));const g=["resize","scroll","orientationchange","pageshow","visibilitychange","fullscreenchange","transitionend"];for(const v of x)for(const P of g)v.addEventListener(P,y);return c(),()=>{for(const v of x)for(const P of g)v.removeEventListener(P,y);f!==null&&n.cancelAnimationFrame(f),p!==null&&n.clearTimeout(p);for(const v of["top","left","width","height"])i.style.removeProperty(`--browser-live-${v}`)}}const O=i=>typeof i=="number"&&Number.isFinite(i)?i:void 0;function tr(i,n){var l;try{const h=(l=i==null?void 0:i.getVideoPlaybackQuality)==null?void 0:l.call(i);if(h&&Number.isFinite(h.totalVideoFrames)&&Number.isFinite(h.droppedVideoFrames))return Math.max(0,h.totalVideoFrames-h.droppedVideoFrames)}catch{}return O(i==null?void 0:i.webkitDecodedFrameCount)??O(n)}function nr(i){var l,h,f;const n=new Set;for(const p of i??[]){if(((l=p.mimeType)==null?void 0:l.toLowerCase())!=="video/h264")continue;const c=(f=(h=/(?:^|;)\s*profile-level-id=([0-9a-f]{6})/i.exec(p.sdpFmtpLine??""))==null?void 0:h[1])==null?void 0:f.toLowerCase();c!=null&&c.startsWith("64")&&n.add("high"),(!c||c.startsWith("42"))&&n.add("baseline")}return[...n]}function rr(){var n;if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities!="function")return["baseline"];const i=nr((n=RTCRtpReceiver.getCapabilities("video"))==null?void 0:n.codecs);return i.length?i:["baseline"]}function ir(i){var l,h;const n=(h=(l=/(?:^|;)\s*profile-level-id=([0-9a-f]{6})/i.exec(typeof i=="string"?i:""))==null?void 0:l[1])==null?void 0:h.toLowerCase();if(n!=null&&n.startsWith("64"))return"high";if(!n||n.startsWith("42"))return"baseline"}function or(i,n,l=Date.now()){const f=[...typeof i.values=="function"?i.values():i],p=f.find(M=>M.type==="inbound-rtp"&&(M.kind==="video"||M.mediaType==="video"));if(!p)return null;const c=f.find(M=>M.id===p.codecId),y=f.find(M=>M.type==="candidate-pair"&&M.state==="succeeded"&&(M.nominated===!0||M.selected===!0)),x=f.find(M=>M.id===(y==null?void 0:y.localCandidateId)),g=f.find(M=>M.id===(y==null?void 0:y.remoteCandidateId)),v=[x==null?void 0:x.candidateType,g==null?void 0:g.candidateType].map(String),P=["relay","srflx","prflx","host"].find(M=>v.includes(M))??void 0,L=O(p.bytesReceived)??0,F=O(p.packetsReceived)??0,b=O(p.packetsLost)??0,le=O(p.framesDropped)??0,D=n?Math.max(1,l-n.at):0,ee=n?Math.max(0,F-n.packetsReceived):0,Le=n?Math.max(0,b-n.packetsLost):0,He=n?Math.max(0,le-n.framesDropped):0,A=O(y==null?void 0:y.currentRoundTripTime),te=O(p.jitter),m=typeof p.decoderImplementation=="string"?p.decoderImplementation.slice(0,120):void 0,Z=typeof p.powerEfficientDecoder=="boolean"?p.powerEfficientDecoder:void 0,Ae=m!==void 0||Z!==void 0?{implementation:m,powerEfficient:Z,acceleration:Z===!0?"hardware":Z===!1?"software":"unknown"}:void 0,ue={codec:typeof(c==null?void 0:c.mimeType)=="string"?c.mimeType.replace(/^video\//i,""):void 0,codecProfile:ir(c==null?void 0:c.sdpFmtpLine),decoder:Ae,width:O(p.frameWidth),height:O(p.frameHeight),fps:O(p.framesPerSecond),rttMs:A!==void 0?A*1e3:void 0,jitterMs:te!==void 0?te*1e3:void 0,lossRate:ee+Le>0?Le/(ee+Le):0,droppedFrames:He,receiveBitrate:n?Math.max(0,Math.round((L-n.bytesReceived)*8e3/D)):void 0,availableBitrate:O(y==null?void 0:y.availableIncomingBitrate),candidateType:P,protocol:(x==null?void 0:x.protocol)==="tcp"||(g==null?void 0:g.protocol)==="tcp"?"tcp":y?"udp":void 0};for(const M of Object.keys(ue))ue[M]===void 0&&delete ue[M];const Ke=O(p.framesDecoded);return{sample:ue,cursor:{at:l,bytesReceived:L,packetsReceived:F,packetsLost:b,framesDropped:le,...Ke!==void 0?{framesDecoded:Ke}:{}}}}function sr(i){if(!i)return null;const n=[i.candidateType==="relay"?"TURN 中继":i.candidateType?"P2P 直连":null];return i.codec&&n.push(i.codec),i.width&&i.height&&n.push(`${i.width}x${i.height}${i.fps?`@${Math.round(i.fps)}`:""}`),i.receiveBitrate&&n.push(`${(i.receiveBitrate/1e6).toFixed(1)}Mbps`),i.rttMs!==void 0&&n.push(`${Math.round(i.rttMs)}ms`),n.filter(Boolean).join(" · ")||null}function ar(i){const n=i==null?void 0:i.decoder;if(!n)return null;const l=n.acceleration==="hardware"?"硬件解码":n.acceleration==="software"?"软件解码":"解码方式未知";return n.implementation?`${l} · ${n.implementation}`:l}const cr={"agent-controlled":"Agent 操作中","handoff-requested":"正在交接","user-controlled":"你正在操作","return-requested":"正在归还",resyncing:"Agent 正在同步页面"},lr={smooth:"流畅",hd:"高清",original:"原画"};function Tt(i){return i==="desktop"?"桌面屏幕":i==="ego-browser"?"ego-browser":"内置 Browser"}function cn(i,n,l){var h,f;return i||(((h=n.find(p=>p.agentSessionId===l))==null?void 0:h.id)??((f=n[0])==null?void 0:f.id)??null)}function ln(i){return[i.altKey?"Alt":"",i.ctrlKey?"Control":"",i.metaKey?"Meta":"",i.shiftKey?"Shift":""].filter(Boolean)}function ur(i){const n=new Uint8Array(i.length*2),l=new DataView(n.buffer);for(let f=0;f<i.length;f+=1){const p=Math.max(-1,Math.min(1,i[f]));l.setInt16(f*2,p<0?p*32768:p*32767,!0)}let h="";for(let f=0;f<n.length;f+=8192)h+=String.fromCharCode(...n.subarray(f,f+8192));return btoa(h)}function dr(i,n){const l=atob(i),h=Math.floor(l.length/2/n),f=Array.from({length:n},()=>new Float32Array(h));for(let p=0;p<h;p+=1)for(let c=0;c<n;c+=1){const y=(p*n+c)*2,x=l.charCodeAt(y)|l.charCodeAt(y+1)<<8;f[c][p]=(x&32768?x-65536:x)/32768}return f}async function fr(i){const n=[],l=()=>{for(const f of n.splice(0))f()};let h=!1;i.addEventListener("abort",l);try{if(i.aborted)return null;const f=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0},video:!1});if(n.push(()=>{for(const L of f.getTracks())L.stop()}),i.aborted)return null;const p=window.AudioContext,c=new p({latencyHint:"interactive"});n.push(()=>{c.close().catch(()=>{})});const y=new p({latencyHint:"interactive"});if(n.push(()=>{y.close().catch(()=>{})}),await Promise.all([c.resume(),y.resume()]),i.aborted)return null;const x=y.createGain();x.connect(y.destination);const g=c.createMediaStreamSource(f),v=c.createScriptProcessor(2048,1,1),P=c.createGain();return P.gain.value=0,g.connect(v),v.connect(P),P.connect(c.destination),h=!0,{stream:f,microphoneContext:c,remoteContext:y,remoteGain:x,source:g,processor:v,sink:P,dispose:l}}finally{i.removeEventListener("abort",l),h||l()}}function hr(i,n){return i?i.state==="user-controlled"&&i.isController===!0&&n.state==="handoff-requested"||i.state==="agent-controlled"&&n.state==="return-requested":!1}const pr=2;function br(i,n,l,h,f=.02){if(!i||!n||!n.width||!n.height)return!1;const p=i.x/n.width-f,c=i.y/n.height-f,y=(i.x+i.w)/n.width+f,x=(i.y+i.h)/n.height+f;return l>=p&&l<=y&&h>=c&&h<=x}function mr(i,n,l=pr){const h={deltaX:Math.round(i.x-n.x),deltaY:Math.round(i.y-n.y)};return Math.abs(h.deltaX)<l&&Math.abs(h.deltaY)<l?null:h}function Cr({open:i,active:n=!0,agentSessionId:l,onClose:h,onFullscreenChange:f}){const p=s.useContext(zn),c=typeof window>"u"?void 0:window.browserLiveApi,y=s.useRef(null),x=s.useRef(null);s.useLayoutEffect(()=>{if(!(!i||!y.current))return er(y.current)},[i]);const[g,v]=s.useState(!1);s.useEffect(()=>{f==null||f(g)},[g,f]);const P=async()=>{const e=x.current;if(e){if(g){document.fullscreenElement===e&&await document.exitFullscreen().catch(()=>{}),v(!1);return}v(!0),e.requestFullscreen&&await e.requestFullscreen().catch(()=>{})}};s.useEffect(()=>{if(!i){v(!1);return}const e=x.current,r=()=>v(document.fullscreenElement===e),t=u=>{u.key==="Escape"&&(document.fullscreenElement===e||e!=null&&e.classList.contains("is-fullscreen"))&&(u.preventDefault(),u.stopPropagation(),document.fullscreenElement===e&&document.exitFullscreen().catch(()=>{}),v(!1))};return document.addEventListener("fullscreenchange",r),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("fullscreenchange",r),document.removeEventListener("keydown",t,!0),e&&document.fullscreenElement===e&&document.exitFullscreen().catch(()=>{})}},[i]);const[L,F]=s.useState([]),[b,le]=s.useState(null),[D,ee]=s.useState(null),[Le,He]=s.useState("hd"),[A,te]=s.useState(null),[m,Z]=s.useState(null),[Ae,ue]=s.useState(!1),[Ke,M]=s.useState(0),[ht,T]=s.useState(null),[Xe,me]=s.useState(!1),[ye,Lt]=s.useState(null),[dn,Pe]=s.useState(!1),[ze,we]=s.useState(""),[ke,At]=s.useState(!1),[Pt,xe]=s.useState(null),[ne,Ne]=s.useState(1),[S,pt]=s.useState(!1),[ge,fn]=s.useState({width:0,height:0}),$=s.useRef(null),ve=s.useRef(null),Ye=s.useRef(!1),re=s.useRef(null),ie=s.useRef(new Zn),De=s.useRef(ne),_e=s.useRef(null);s.useLayoutEffect(()=>{De.current=ne;const e=_e.current,r=$.current,t=r==null?void 0:r.querySelector(".browser-live-image-hit-area");if(!e||!r||!t)return;const u=t.getBoundingClientRect();r.scrollLeft+=u.left+e.x*u.width-e.clientX,r.scrollTop+=u.top+e.y*u.height-e.clientY,_e.current=null},[ne]);const de=s.useRef(null),[Y,Qe]=s.useState(!1),Ce=s.useRef(!1),Ge=s.useRef(0),oe=s.useRef(null);s.useEffect(()=>{i||(Pe(!1),we(""),xe(null))},[i]);const[hn,Ze]=s.useState(!1),Fe=s.useRef(null),Je=s.useRef(0),H=s.useRef("none"),I=s.useRef(null),bt=s.useRef(null),[zt,et]=s.useState(null),[Ie,pn]=s.useState(!1),Nt=s.useRef(null),[fe,K]=s.useState("off"),[Dt,Ve]=s.useState(null),je=s.useRef(null),z=s.useRef(null),tt=s.useRef(0),he=s.useRef(null),pe=s.useRef(new Gn),qe=s.useRef(!1),[Ft,nt]=s.useState(null),[J,Be]=s.useState("idle"),[rt,It]=s.useState(!1),[it,Vt]=s.useState(!1),ot=s.useRef(!1),st=s.useRef(!1),Oe=s.useRef(null),mt=s.useRef(null),yt=s.useRef(null),wt=s.useRef(null),kt=s.useRef(null),at=s.useRef(null),Re=s.useRef(null),Me=s.useRef(0),qt=s.useRef(0),$e=s.useRef(0),ct=s.useRef(null);s.useLayoutEffect(()=>{Ce.current=Y,Y&&Ze(!1)},[Y]);const a=s.useMemo(()=>L.find(e=>e.id===b)??null,[b,L]),R=(a==null?void 0:a.backend)==="desktop",Bt=R&&(a==null?void 0:a.platform)==="win32",bn=(a==null?void 0:a.availability)==="unavailable"&&(a==null?void 0:a.capabilityErrorCode)==="desktop-locked",w=(a==null?void 0:a.isController)&&a.state==="user-controlled",Se=a==null?void 0:a.audioCapabilities,Ee=!!(Se!=null&&Se.fullDuplex&&Se.systemAudio&&Se.microphonePlayback&&Se.selfPlaybackExclusion),be=!!(a!=null&&a.online&&a.availability==="ready"&&!a.controlledByAnotherViewer);s.useEffect(()=>{if(!i||!c||!b){et(null);return}let e=!0;const r=()=>{const u=performance.now();c.request("browser:ping",{t:u}).then(()=>{e&&et(Math.round(performance.now()-u))}).catch(()=>{e&&et(null)})};r();const t=window.setInterval(r,3e3);return()=>{e=!1,window.clearInterval(t),et(null)}},[c,i,b]),s.useEffect(()=>{const e=navigator;if(!w||!e.wakeLock)return;let r=!1,t=null;return e.wakeLock.request("screen").then(u=>{if(r){u.release();return}t=u,Nt.current=u}).catch(()=>{}),()=>{r=!0,t==null||t.release().catch(()=>{}),Nt.current=null}},[w]);const Te=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport),xt=Te&&ge.width&&ge.height?Math.min(ge.width/Te.width,ge.height/Te.height):null;s.useEffect(()=>{var e;Ne(1),pt(!1),ve.current=null,ie.current.reset(),_e.current=null,oe.current=null,(e=$.current)==null||e.scrollTo(0,0)},[i,b]),s.useEffect(()=>{const e=$.current;if(!i||!e)return;const r=new ResizeObserver(()=>{fn({width:e.clientWidth,height:e.clientHeight})});return r.observe(e),()=>r.disconnect()},[i,R]),s.useEffect(()=>{const e=$.current;if(!i||!e||!w||S)return;const r=t=>t.preventDefault();return e.addEventListener("wheel",r,{passive:!1}),()=>e.removeEventListener("wheel",r)},[i,w,S]);const mn=s.useCallback(()=>{Ge.current+=1;const e=de.current;e&&(Y?(e.blur(),Qe(!1)):e.focus({preventScroll:!0}))},[Y]);s.useEffect(()=>{var e;(!n||!w||S)&&(Ge.current+=1,(e=de.current)==null||e.blur(),Qe(!1))},[n,w,S,Y]);const lt=s.useCallback(e=>{const r=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport),t=$.current,u=t==null?void 0:t.querySelector(".browser-live-image-hit-area");if(!e||!r||!t||!u)return;const d=u.getBoundingClientRect(),k=t.getBoundingClientRect(),C=d.top+e.y/r.height*d.height,j=C+e.h/r.height*d.height,E=16;C>=k.top+E&&j<=k.bottom-E||(t.scrollTop+=C-(k.top+Math.max(E,k.height*.3)))},[m==null?void 0:m.viewport,a==null?void 0:a.viewport]);s.useEffect(()=>{if(!Y||!oe.current)return;const e=window.setTimeout(()=>lt(oe.current),420);return()=>window.clearTimeout(e)},[Y,ge.width,ge.height,lt]);const gt=s.useCallback((e,r=!1)=>{var u;const t=e&&typeof e.input=="object"&&e.input!==null?e.input:e;if(typeof(t==null?void 0:t.editable)=="boolean"){if(!t.editable&&t.kind==="control"){oe.current=null;return}if(t.editable){const d=t.bounds,k=d&&["x","y","w","h"].every(C=>typeof d[C]=="number")?{x:d.x,y:d.y,w:d.w,h:d.h}:null;k&&(oe.current=k),r&&!Ce.current&&!window.matchMedia("(pointer: coarse)").matches&&((u=de.current)==null||u.focus({preventScroll:!0})),Ce.current?lt(k??oe.current):Ze(!0)}else oe.current=null}},[lt]),X=s.useCallback((e=!0)=>{var d,k,C,j,E;(d=ct.current)==null||d.abort(),ct.current=null;const r=Oe.current;Oe.current=null;for(const W of(r==null?void 0:r.getTracks())??[])W.stop();(k=yt.current)==null||k.disconnect(),(C=wt.current)==null||C.disconnect(),(j=kt.current)==null||j.disconnect(),yt.current=null,wt.current=null,kt.current=null;const t=mt.current;mt.current=null,t&&t.close().catch(()=>{});const u=at.current;at.current=null,(E=Re.current)==null||E.disconnect(),Re.current=null,Me.current=0,$e.current=0,u&&u.close().catch(()=>{}),ot.current=!1,st.current=!1,It(!1),Vt(!1),Be("idle"),e&&c&&b&&c.request("browser:webrtc",{sessionId:b,data:{kind:"audio-stop"}}).catch(()=>{})},[c,b]),Ot=s.useCallback(e=>{var B;if(st.current||typeof e.data!="string")return;const r=at.current,t=Number(e.sampleRate),u=Number(e.channels);if(!r||!Number.isSafeInteger(t)||!Number.isSafeInteger(u)||u<1||u>2)return;const d=dr(e.data,u);if(!((B=d[0])!=null&&B.length))return;const k=r.createBuffer(u,d[0].length,t);for(let Q=0;Q<u;Q+=1)k.copyToChannel(d[Q],Q);const C=r.createBufferSource();C.buffer=k;const j=Re.current;if(!j)return;C.connect(j);const E=r.currentTime,W=Math.max(E+.02,Me.current);Me.current=W-E>.35?E+.02:W,C.start(Me.current),Me.current+=k.duration},[]),yn=s.useCallback(async()=>{var r;if(!c||!b||!w||!Ee||document.visibilityState!=="visible")return;const e=new AbortController;(r=ct.current)==null||r.abort(),ct.current=e,T(null),Be("starting");try{const t=await fr(e.signal);if(!t||e.signal.aborted||document.visibilityState!=="visible"){t==null||t.dispose();return}const{stream:u,microphoneContext:d,remoteContext:k,remoteGain:C,source:j,processor:E,sink:W}=t;Oe.current=u,mt.current=d,yt.current=j,wt.current=E,kt.current=W,at.current=k,Re.current=C,qt.current=0,E.onaudioprocess=B=>{if(e.signal.aborted||ot.current||!Oe.current||!c||!b||$e.current>=4)return;const Q=new Float32Array(B.inputBuffer.getChannelData(0));$e.current+=1,c.request("browser:webrtc",{sessionId:b,data:{kind:"audio-microphone",sequence:++qt.current,sampleRate:d.sampleRate,channels:1,data:ur(Q)}}).catch(()=>{}).finally(()=>{$e.current=Math.max(0,$e.current-1)})},await c.request("browser:webrtc",{sessionId:b,data:{kind:"audio-start"}})}catch(t){if(e.signal.aborted)return;X(!1),Be("failed"),T(t instanceof Error?t.message:"无法开始语音")}},[c,w,b,X,Ee]);s.useEffect(()=>{i&&n&&w&&Ee||J!=="idle"&&X(!0)},[n,J,w,i,X,Ee]),s.useEffect(()=>{const e=()=>{document.visibilityState!=="visible"&&J!=="idle"&&X(!0)};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[J,X]),s.useEffect(()=>()=>X(!0),[X]);const $t=s.useMemo(()=>[{urls:"stun:stun.l.google.com:19302"}],[]),Ut=s.useCallback(async(e,r,t)=>{if(!(!c||!e||!r))try{const u=z.current;z.current=null,u==null||u.close();let d=z.current;if(d||(d=new RTCPeerConnection({iceServers:t!=null&&t.length?t:$t}),d.onicecandidate=C=>{C.candidate&&c.request("browser:webrtc",{sessionId:e,data:{kind:"ice",candidate:C.candidate.toJSON()}}).catch(()=>{})},d.ontrack=C=>{const j=he.current;j&&C.streams[0]&&(j.srcObject=C.streams[0],j.play().catch(()=>{}))},d.onconnectionstatechange=()=>{if(z.current!==d)return;const C=d==null?void 0:d.connectionState;C==="connected"?K("live"):(C==="failed"||C==="disconnected"||C==="closed")&&K("failed")},z.current=d),await d.setRemoteDescription(r),z.current!==d)return;const k=await d.createAnswer();if(await d.setLocalDescription(k),z.current!==d)return;K("connecting"),await c.request("browser:webrtc",{sessionId:e,data:{kind:"answer",sdp:d.localDescription.toJSON()}})}catch{K("failed")}},[c,$t]),Wt=s.useCallback((e,r)=>{if(r){if(r.kind==="quality-state"&&["smooth","hd","original"].includes(String(r.quality))){He(String(r.quality)),te(null),typeof r.error=="string"&&T(r.error);return}if(r.kind==="audio-system"){Ot(r);return}if(r.kind==="audio-state"){const t=String(r.state);["idle","starting","live","failed"].includes(t)&&Be(t),typeof r.error=="string"&&(T(r.error),X(!1),Be("failed"));return}if(r.kind==="offer"){typeof r.warning=="string"&&T(r.warning),Ut(e,r.sdp,Array.isArray(r.iceServers)?r.iceServers:void 0);return}if(r.kind==="ice"){const t=r.candidate,u=z.current;u&&t&&u.addIceCandidate(t).catch(()=>{});return}if(r.kind==="state"){const t=String(r.state);t==="connected"?K("live"):(t==="failed"||t==="disconnected"||t==="closed")&&K("failed")}}},[Ut,Ot,X]),[se,Ht]=s.useState(null);s.useEffect(()=>{if(!m){Ht(null);return}const e=typeof m.data=="string"?`data:${m.mime};base64,${m.data}`:URL.createObjectURL(new Blob([m.data],{type:m.mime}));let r=!1,t=!1;const u=new Image;return u.src=e,u.decode().then(()=>{r||(t=!0,Ht(e))}).catch(()=>{}),()=>{r=!0,!t&&e.startsWith("blob:")&&URL.revokeObjectURL(e)}},[m]),s.useEffect(()=>()=>{se!=null&&se.startsWith("blob:")&&URL.revokeObjectURL(se)},[se]);const _=s.useCallback(e=>{F(r=>{const t=r.findIndex(d=>d.id===e.id);if(t>=0&&hr(r[t],e))return r;if(t<0)return[e,...r];const u=[...r];return u[t]=e,u.sort((d,k)=>k.updatedAt-d.updatedAt)}),le(r=>cn(r,[e],l)),me(!1)},[l]),ut=s.useCallback(async()=>{if(!(!c||!i)){ue(!0),T(null);try{const e=await c.request("browser:list");F(e.sessions),le(r=>{const t=r&&e.sessions.some(u=>u.id===r)?r:null;return cn(t,e.sessions,l)}),b&&await c.request("browser:watch",{sessionId:b}).then(r=>_(r.session)).catch(()=>{}),M(r=>r+1)}catch(e){T(e instanceof Error?e.message:"无法读取浏览器会话")}finally{ue(!1)}}},[l,c,_,i,b]);s.useEffect(()=>{if(!(!i||!c))return ut(),c.onEvent(e=>{var r;if(e.type==="browser:connection"){(r=z.current)==null||r.close(),z.current=null,K("off"),me(!1),F([]),Z(null),e.connected===!0?ut():T("远程连接已断开,正在重新连接");return}if(e.type==="browser:frame"){const t=e;t.sessionId===b&&Z(t);return}if(e.type==="browser:webrtc"){const t=e.data;e.sessionId===b&&Wt(b,t);return}if(e.session&&typeof e.session=="object"&&_(e.session),e.type==="browser:closed"){const t=e.session;t&&(F(u=>u.filter(d=>d.id!==t.id)),t.id===b&&(Z(null),le(null)))}})},[c,Wt,_,i,ut,b]),s.useEffect(()=>{if(!(!i||!c||!b))return Z(null),T(null),qe.current=!1,nt(null),c.request("browser:watch",{sessionId:b}).then(e=>_(e.session)).catch(e=>T(e instanceof Error?e.message:"无法观看浏览器")),()=>{c.request("browser:unwatch").catch(()=>{})}},[c,_,i,b]),s.useEffect(()=>{var e,r;if(!i||!c||!w||!R||!b){qe.current=!1,nt(null),tt.current=0,(e=z.current)==null||e.close(),z.current=null,he.current&&(he.current.srcObject=null),je.current=null,Ve(null),K("off");return}return(r=z.current)==null||r.close(),z.current=null,je.current=null,Ve(null),K("connecting"),pe.current.begin(performance.now()),c.request("browser:webrtc",{sessionId:b,data:{kind:"start",receiverProfiles:rr()}}).catch(()=>K("failed")),()=>{var t;(t=z.current)==null||t.close(),z.current=null,he.current&&(he.current.srcObject=null),je.current=null,Ve(null),c.request("browser:webrtc",{sessionId:b,data:{kind:"stop"}}).catch(()=>{})}},[c,w,R,i,b,Ke]),s.useEffect(()=>{if(!i||!w||!R||fe!=="failed"||tt.current>=2)return;const e=window.setTimeout(()=>{tt.current+=1,M(r=>r+1)},2e3*(tt.current+1));return()=>window.clearTimeout(e)},[i,w,R,fe]),s.useEffect(()=>{if(!c||!b||fe!=="live"){je.current=null,Ve(null);return}let e=!0,r=!1;const t=he.current,u=typeof(t==null?void 0:t.requestVideoFrameCallback)=="function";let d,k=null;pe.current.begin(performance.now());const C=B=>{!e||document.visibilityState==="hidden"||pe.current.observe(B,performance.now())&&qe.current&&(qe.current=!1,nt(null),c.request("browser:webrtc",{sessionId:b,data:{kind:"viewer-trace",event:"stall-recovered",...k?{sample:k}:{}}}).catch(()=>{}))};if(u&&t){const B=(Q,We)=>{C(We.presentedFrames),e&&(d=t.requestVideoFrameCallback(B))};d=t.requestVideoFrameCallback(B)}const j=()=>{document.visibilityState!=="hidden"&&pe.current.resume(performance.now())};document.addEventListener("visibilitychange",j);const E=async()=>{const B=z.current;if(!(!B||r)){r=!0;try{const Q=await B.getStats().catch(()=>null);if(!e||B!==z.current)return;const We=performance.now(),ce=Q&&or(Q,je.current);ce&&(je.current=ce.cursor,k=ce.sample,Ve(ce.sample),c.request("browser:webrtc",{sessionId:b,data:{kind:"stats",...ce.sample}}).catch(()=>{}));const _t=tr(t,ce==null?void 0:ce.cursor.framesDecoded);u||C(_t);const Tn=u||_t!==void 0||!(t!=null&&t.videoWidth);if(document.visibilityState!=="hidden"&&Tn&&pe.current.evaluate(We).state==="stalled"){const Ln=pe.current.evaluate(We);pe.current.begin(We),K(Qt=>Qt==="live"?"failed":Qt),qe.current=!0,nt("实时画面超时,已切换为 JPEG 兜底画面"),c.request("browser:webrtc",{sessionId:b,data:{kind:"viewer-trace",event:"jpeg-fallback",silentForMs:Ln.silentForMs,...k?{sample:k}:{}}}).catch(()=>{})}}catch{}finally{r=!1}}};E();const W=window.setInterval(()=>void E(),1e3);return()=>{e=!1,window.clearInterval(W),d!==void 0&&(t==null||t.cancelVideoFrameCallback(d)),document.removeEventListener("visibilitychange",j)}},[c,b,fe]);const wn=s.useCallback(async()=>{if(!(!c||!a)){me(!0),T(null);try{const e=await c.request("browser:takeover",{sessionId:a.id});_(e.session)}catch(e){me(!1),T(e instanceof Error?e.message:"无法接管浏览器")}}},[c,_,a]),kn=s.useCallback(async()=>{if(!(!c||!a)){me(!0),T(null);try{const e=await c.request("browser:return",{sessionId:a.id});_(e.session)}catch(e){me(!1),T(e instanceof Error?e.message:"无法归还浏览器")}}},[c,_,a]),vt=s.useCallback(async(e,r)=>{if(!(!c||!b)){Lt(e),T(null);try{await c.request("browser:system",{sessionId:b,action:e,...r?{password:r}:{}}),window.setTimeout(()=>M(t=>t+1),800)}catch(t){T(t instanceof Error?t.message:"系统操作失败")}finally{Lt(null)}}},[c,b]),xn=s.useCallback(async()=>{if(!(!c||!b||!ze)){At(!0),xe(null);try{await c.request("browser:system",{sessionId:b,action:"unlock",password:ze}),we(""),Pe(!1),window.setTimeout(()=>M(e=>e+1),2500)}catch(e){xe(e instanceof Error?e.message:"解锁失败")}finally{we(""),At(!1)}}},[c,b,ze]),N=s.useCallback(e=>{!c||D||A||!(a!=null&&a.isController)||a.state!=="user-controlled"||c.request("browser:input",{sessionId:a.id,input:{...e,mobile:window.matchMedia("(pointer: coarse)").matches}}).catch(r=>{T(r instanceof Error?r.message:"浏览器输入失败")})},[c,a,D,A]),U=s.useCallback((e,r,t=[])=>{N({kind:"key",action:"down",key:e,code:r,text:"",modifiers:t}),N({kind:"key",action:"up",key:e,code:r,text:"",modifiers:t})},[N]),Ue=s.useCallback(e=>{U(e,`Key${e.toUpperCase()}`,["Control"])},[U]),gn=s.useCallback(async e=>{var t;if(!c||!(a!=null&&a.isController)||a.state!=="user-controlled"||D||A)throw new Error("连接正在切换,请稍后重试");const r=await c.request("browser:input",{sessionId:a.id,input:{kind:"key",action:"down",text:e,key:"",code:"",modifiers:[],mobile:window.matchMedia("(pointer: coarse)").matches}});if((t=r.input)!=null&&t.error)throw new Error(r.input.error)},[c,a,D,A]),Ct=s.useCallback(e=>!c||D||A||!(a!=null&&a.isController)||a.state!=="user-controlled"?Promise.resolve(null):c.request("browser:input",{sessionId:a.id,input:{...e,mobile:window.matchMedia("(pointer: coarse)").matches}}).then(r=>r&&typeof r=="object"?r:null).catch(()=>null),[c,a,D,A]),jt=s.useCallback((e,r,t=!1)=>{const u=++Ge.current;Ct({kind:"pointer",action:"up",...e,button:"left",...r&&r>1?{click:r}:{}}).then(d=>{u===Ge.current&>(d,t)})},[gt,Ct]),dt=s.useRef(!1),Rt=s.useRef(""),Kt=s.useCallback(e=>{const r=Rt.current;if(e!==r){if(e.startsWith(r)){const t=e.slice(r.length);t&&N({kind:"key",action:"down",text:t,key:"",code:"",modifiers:[]})}Rt.current=e}},[N]),q=(a==null?void 0:a.displays)??null;s.useEffect(()=>{if(!A)return;const e=window.setTimeout(()=>{te(null),T("画质切换未完成,请刷新画面后重试")},14e3);return()=>window.clearTimeout(e)},[A]),s.useEffect(()=>{te(null),He("hd")},[i,b]);const vn=e=>{!c||!be||D||A||!b||(te(e),c.request("browser:webrtc",{sessionId:b,data:{kind:"quality",quality:e}}).catch(r=>{te(null),T(r instanceof Error?r.message:"画质切换失败")}))};s.useEffect(()=>{if(!D)return;if(q!=null&&q.some(r=>r.id===D&&r.selected)){ee(null);return}const e=window.setTimeout(()=>{ee(null),T("切换屏幕未完成,请刷新画面后重试")},14e3);return()=>window.clearTimeout(e)},[q,D]),s.useEffect(()=>{ee(null)},[i,b]);const Mt=s.useRef(0),Cn=s.useCallback(e=>{!c||D||A||!b||!be||!(q!=null&&q.some(r=>r.id===e&&!r.selected))||(ee(e),c.request("browser:set-display",{sessionId:b,displayId:e}).catch(r=>{ee(null),T(r instanceof Error?r.message:"切换屏幕失败")}))},[c,q,b,be,D,A]),ae=s.useCallback(e=>{const r=e.currentTarget.getBoundingClientRect(),t=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport);if(!t)return null;const u=Math.min(r.width/t.width,r.height/t.height),d=t.width*u,k=t.height*u,C=(r.width-d)/2,j=(r.height-k)/2,E=(e.clientX-r.left-C)/d,W=(e.clientY-r.top-j)/k;return E<0||E>1||W<0||W>1?null:{x:E,y:W}},[m==null?void 0:m.viewport,a==null?void 0:a.viewport]);if(!i||typeof document>"u")return null;const jn=(a==null?void 0:a.online)&&!a.controlledByAnotherViewer,Rn=(a==null?void 0:a.availability)==="unavailable"?R?"桌面直播不可用":"浏览器直播不可用":(a==null?void 0:a.availability)==="starting"?"正在连接画面":R&&(a==null?void 0:a.state)==="agent-controlled"?"未被远程控制":a?cr[a.state]:R?"等待桌面直播":"等待浏览器",Mn=(a==null?void 0:a.availability)==="unavailable"?R?"桌面直播不可用":"浏览器直播不可用":(a==null?void 0:a.availability)==="starting"?"正在连接画面":L.length?"等待第一帧":R?"暂无桌面直播":"暂无浏览器直播",Sn=(a==null?void 0:a.availability)==="unavailable"?a.capabilityError||(R?"需要在桌面 App 中开启并授予屏幕录制权限":"当前浏览器不支持实时画面传输"):L.length?"画面开始后会自动显示":R?"在桌面 App 设置中开启「桌面直播与远程控制」后,画面会出现在这里":"Agent 开始浏览网页后,会话会出现在这里",En=sr(Dt),Xt=ar(Dt),Yt=fe==="live"?En||"WebRTC 实时流":fe==="connecting"?"正在连接 WebRTC":se?"JPEG 兜底":null;return en.createPortal(o.jsxs("div",{ref:y,className:"browser-live-backdrop",style:{visibility:n?void 0:"hidden",pointerEvents:n?void 0:"none"},"aria-hidden":!n,"data-tab-swipe-ignore":!0,role:"presentation",onMouseDown:e=>{e.target===e.currentTarget&&h()},children:[o.jsxs("section",{ref:x,className:`browser-live-panel ${g?"is-fullscreen":""}`,role:"dialog","aria-modal":"true","aria-label":"浏览器直播",children:[o.jsxs("header",{className:"browser-live-header",children:[o.jsxs("div",{className:"browser-live-heading",children:[o.jsx(tn,{size:17,"aria-hidden":"true"}),o.jsxs("div",{children:[o.jsx("strong",{children:"浏览器直播"}),o.jsx("span",{children:a?Tt(a.backend):"实时观看与接管"})]}),p]}),o.jsxs("div",{className:"browser-live-header-actions",children:[o.jsx("button",{type:"button",className:"ui-icon-button",onClick:()=>void P(),title:g?"退出全屏":"全屏","aria-label":g?"退出全屏":"全屏","aria-pressed":g,children:g?o.jsx(Et,{size:17}):o.jsx(Bn,{size:17})}),o.jsx("button",{type:"button",className:"ui-icon-button",onClick:()=>void ut(),title:"刷新画面与会话","aria-label":"刷新直播画面与会话",children:o.jsx(Fn,{size:15,className:Ae?"spin":void 0,"aria-hidden":"true"})}),o.jsx("button",{type:"button",className:"ui-icon-button",onClick:h,title:"关闭","aria-label":"关闭浏览器直播",children:o.jsx(In,{size:17,"aria-hidden":"true"})})]})]}),o.jsxs("div",{className:`browser-live-surface ${w?"is-controlling":""} has-zoom ${w&&!S&&Ie?"has-quickkeys":""}`,children:[o.jsxs("div",{className:"browser-live-zoom",role:"group","aria-label":"桌面画面缩放",children:[g&&o.jsxs("button",{type:"button","aria-label":"退出全屏",title:"退出全屏",onClick:()=>void P(),children:[o.jsx(Et,{size:15,"aria-hidden":"true"}),"退出全屏"]}),L.length>1&&o.jsx("div",{className:"browser-live-session-tabs",role:"tablist","aria-label":"切换直播屏幕",children:L.map(e=>o.jsx("button",{type:"button",role:"tab","aria-selected":e.id===b,className:e.id===b?"is-active":"",title:`${Tt(e.backend)} · ${e.title||"浏览器"}`,onClick:()=>le(e.id),children:e.title||Tt(e.backend)},e.id))}),R&&q&&q.length>1&&o.jsx(sn,{label:"选择直播屏幕",title:be?"选择直播屏幕":"其他设备控制中或画面暂不可用",value:(q.find(e=>e.selected)??q[0]).id,busy:!!D,disabled:!m||!be||A||q.length<2,onChange:Cn,children:q.map((e,r)=>o.jsx("option",{value:e.id,children:`第 ${r+1} 屏${e.primary?"(主屏)":""}`},e.id))}),R&&o.jsxs(sn,{label:"视频画质",title:be?"视频画质":"其他设备控制中或画面暂不可用",value:Le,busy:A!==null,disabled:!be||!!D,compact:!0,onChange:vn,children:[o.jsx("option",{value:"smooth",children:"流畅"}),o.jsx("option",{value:"hd",children:"高清"}),o.jsx("option",{value:"original",children:"原画"})]}),R&&w&&Ee&&J!=="live"&&o.jsxs("button",{type:"button","aria-label":"开始语音",title:"开始双向语音",disabled:J==="starting",onClick:()=>void yn(),children:[J==="starting"?o.jsx(G,{size:15,className:"spin","aria-hidden":"true"}):o.jsx(rn,{size:15,"aria-hidden":"true"}),J==="starting"?"正在连接":"开始语音"]}),R&&w&&Ee&&J==="live"&&o.jsxs(o.Fragment,{children:[o.jsx("button",{type:"button","aria-label":rt?"取消麦克风静音":"麦克风静音","aria-pressed":rt,title:rt?"打开麦克风":"关闭麦克风",onClick:()=>{var r;const e=!ot.current;ot.current=e;for(const t of((r=Oe.current)==null?void 0:r.getAudioTracks())??[])t.enabled=!e;It(e)},children:rt?o.jsx(On,{size:15,"aria-hidden":"true"}):o.jsx(rn,{size:15,"aria-hidden":"true"})}),o.jsx("button",{type:"button","aria-label":it?"取消扬声器静音":"扬声器静音","aria-pressed":it,title:it?"打开电脑声音":"关闭电脑声音",onClick:()=>{const e=!st.current;st.current=e,Re.current&&(Re.current.gain.value=e?0:1),Vt(e),e&&(Me.current=0)},children:it?o.jsx(Hn,{size:15,"aria-hidden":"true"}):o.jsx(Wn,{size:15,"aria-hidden":"true"})}),o.jsx("button",{type:"button","aria-label":"结束语音",title:"结束双向语音",onClick:()=>X(!0),children:o.jsx(Un,{size:15,"aria-hidden":"true"})})]}),o.jsx("button",{type:"button","aria-label":"缩小桌面画面",title:"缩小",disabled:!m||ne<=.5,onClick:()=>Ne(e=>Math.max(.5,e-.25)),children:o.jsx(Xn,{size:16})}),o.jsxs("output",{"aria-label":"桌面缩放比例",children:[Math.round(ne*100),"%"]}),o.jsx("button",{type:"button","aria-label":"放大桌面画面",title:"放大",disabled:!m||ne>=5,onClick:()=>Ne(e=>Math.min(5,e+.25)),children:o.jsx(Kn,{size:16})}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>{var e;Ne(1),pt(!1),(e=$.current)==null||e.scrollTo(0,0)},children:"适应窗口"}),o.jsxs("button",{type:"button","aria-label":"移动桌面画面","aria-pressed":S,title:"拖动或滚动画面,不发送远程输入",disabled:!m,onClick:()=>pt(e=>!e),children:[o.jsx(Vn,{size:15}),"移动画面"]}),o.jsxs("button",{type:"button","aria-label":"唤起键盘","aria-pressed":Y,title:"唤起/收起键盘(无法识别输入框时可手动唤起)",className:hn&&!Y?"is-hint":void 0,disabled:!m||!w,onPointerDown:e=>e.preventDefault(),onClick:()=>{Ze(!1),mn()},children:[o.jsx(St,{size:15}),"键盘"]}),o.jsxs("button",{type:"button","aria-label":"快捷键条","aria-pressed":Ie,title:"展开/收起快捷键(Esc/Tab/复制/粘贴/方向键)",disabled:!m||!w,onClick:()=>pn(e=>!e),children:[o.jsx(St,{size:15}),Ie?"收起":"快捷键"]}),o.jsxs("button",{type:"button","aria-label":"窗口控制",title:"全屏看不到左上角按钮时用:第 1 次点=退出全屏(ESC + Ctrl+Cmd+F),第 2 次点=关闭窗口(Cmd+W)",disabled:!m||!w,onClick:()=>{const e=Date.now();if(e-Mt.current<2500){U("w","KeyW",["Meta"]),Mt.current=0;return}Mt.current=e,U("Escape","Escape"),window.setTimeout(()=>{U("f","KeyF",["Control","Meta"])},150)},children:[o.jsx(St,{size:15}),"窗口"]}),Bt&&o.jsxs(o.Fragment,{children:[o.jsxs("button",{type:"button","aria-label":"锁屏",title:"锁屏(锁屏后仍可从空态区唤醒或远程解锁)",disabled:!m||!!ye,onClick:()=>void vt("lock"),children:[ye==="lock"?o.jsx(G,{size:15,className:"spin"}):o.jsx(qn,{size:15}),"锁屏"]}),o.jsxs("button",{type:"button","aria-label":"唤醒屏幕",title:"唤醒显示器或锁屏界面",disabled:!!ye,onClick:()=>void vt("wake"),children:[ye==="wake"?o.jsx(G,{size:15,className:"spin"}):o.jsx(on,{size:15}),"唤醒"]})]})]}),w&&!S&&Ie&&o.jsxs("div",{className:"browser-live-quickkeys",role:"group","aria-label":"快捷键",children:[o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("Escape","Escape"),children:"Esc"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("Tab","Tab"),children:"Tab"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("c"),children:"复制"}),o.jsx(Yn,{disabled:!m||!!D||!!A,onPaste:gn,onError:T},b),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("a"),children:"全选"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("z"),children:"撤销"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("s"),children:"保存"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>Ue("f"),children:"查找"}),o.jsx("button",{type:"button",disabled:!m,title:"退出当前前台应用(Cmd+Q)",onClick:()=>U("q","KeyQ",["Meta"]),children:"⌘Q"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowLeft","ArrowLeft"),children:"←"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowUp","ArrowUp"),children:"↑"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowDown","ArrowDown"),children:"↓"}),o.jsx("button",{type:"button",disabled:!m,onClick:()=>U("ArrowRight","ArrowRight"),children:"→"})]}),!(w&&!S&&Ie)&&o.jsx("div",{className:"browser-live-touch-hint",children:"滑动滚动 · 轻点点击 · 双击打开 · 长按拖动 · 按住1秒右键 · 双指缩放"}),o.jsx("div",{ref:$,className:"browser-live-viewport",onMouseDown:e=>{Ce.current&&e.preventDefault()},children:m&&se?o.jsxs("div",{className:"browser-live-image-hit-area",style:xt&&Te?{width:Te.width*xt*ne,height:Te.height*xt*ne,cursor:S?"grab":void 0}:void 0,tabIndex:w&&!S?0:-1,onContextMenu:e=>e.preventDefault(),onPointerDown:e=>{if(e.pointerType==="touch"){e.preventDefault(),ie.current.down(e.pointerId,{x:e.clientX,y:e.clientY}),re.current=w&&!S?ae(e):null;const t=re.current;t&&R&&(a==null?void 0:a.platform)==="darwin"&&Ct({kind:"pointer",action:"move",...t,probe:!0}).then(u=>{re.current===t&>(u)}),e.currentTarget.setPointerCapture(e.pointerId),I.current&&window.clearTimeout(I.current),H.current="none",Fe.current=w&&!S?{x:e.clientX,y:e.clientY}:null,Je.current=e.timeStamp,Fe.current&&(I.current=window.setTimeout(()=>{H.current="armed"},550));return}if(S&&$.current){const t=$.current;ve.current={x:e.clientX,y:e.clientY,left:t.scrollLeft,top:t.scrollTop},e.currentTarget.setPointerCapture(e.pointerId);return}if(!w)return;const r=ae(e);r&&(Ye.current=!0,e.currentTarget.setPointerCapture(e.pointerId),N({kind:"pointer",action:"down",...r,button:"left"}))},onPointerMove:e=>{if(e.pointerType==="touch"){e.preventDefault();const t=ie.current.move(e.pointerId,{x:e.clientX,y:e.clientY}),u=$.current;if(!t||!u)return;const d=t.pointers>=2&&Math.abs(t.distanceRatio-1)>.05,k=Math.max(.5,Math.min(5,De.current*t.scale));if(d&&k!==De.current){const j=e.currentTarget.getBoundingClientRect();_e.current={x:(t.from.x-j.left)/j.width,y:(t.from.y-j.top)/j.height,clientX:t.to.x,clientY:t.to.y},De.current=k,en.flushSync(()=>Ne(k));return}if(I.current&&(window.clearTimeout(I.current),I.current=null),H.current==="armed"&&Fe.current&&re.current&&(H.current="drag",N({kind:"pointer",action:"down",...re.current,button:"left"})),H.current==="drag"){const j=ae(e);j&&N({kind:"pointer",action:"move",...j,button:"left"});return}const C=De.current<=1.001;if(w&&!S&&(t.pointers>=2||C)){const j=mr(t.from,t.to);if(j){const E=re.current??ae(e);E&&N({kind:"pointer",action:"wheel",...E,...j})}return}u.scrollLeft+=t.from.x-t.to.x,u.scrollTop+=t.from.y-t.to.y;return}if(S&&ve.current&&$.current){const t=ve.current;$.current.scrollTo(t.left+t.x-e.clientX,t.top+t.y-e.clientY);return}if(!w||!Ye.current)return;const r=ae(e);r&&N({kind:"pointer",action:"move",...r,button:"left"})},onPointerUp:e=>{if(e.pointerType==="touch"){e.preventDefault(),I.current&&(window.clearTimeout(I.current),I.current=null);const t=ae(e);re.current=null;const u=ie.current.up(e.pointerId,{x:e.clientX,y:e.clientY});if(H.current==="armed"){H.current="none";const d=e.timeStamp-Je.current;if(u&&d>=800&&t&&w&&!S){ie.current.reset(),N({kind:"pointer",action:"down",...t,button:"right"}),N({kind:"pointer",action:"up",...t,button:"right"});return}}if(H.current==="drag"){H.current="none",ie.current.reset(),t&&w&&N({kind:"pointer",action:"up",...t,button:"left"});return}if(u&&t&&w&&!S){const d=(m==null?void 0:m.viewport)??(a==null?void 0:a.viewport);if(br(oe.current,d,t.x,t.y)){const j=de.current;j&&document.activeElement!==j&&j.focus({preventScroll:!0}),Ze(!1)}const k=bt.current;k!==null&&Date.now()-k.at<400&&d!==void 0&&Math.hypot((t.x-k.x)*d.width,(t.y-k.y)*d.height)<d.width*.03?(N({kind:"pointer",action:"down",...t,button:"left",click:2}),jt(t,2,!0),bt.current=null):(N({kind:"pointer",action:"down",...t,button:"left"}),jt(t,void 0,!0),bt.current={at:Date.now(),x:t.x,y:t.y})}return}if(S){ve.current=null;return}if(!w)return;const r=ae(e);Ye.current=!1,r&&jt(r)},onPointerCancel:e=>{ie.current.up(e.pointerId,{x:e.clientX,y:e.clientY},!0),ve.current=null,Ye.current=!1,re.current=null,I.current&&(window.clearTimeout(I.current),I.current=null),H.current="none",Fe.current=null,Je.current=0},onLostPointerCapture:e=>{ie.current.up(e.pointerId,{x:e.clientX,y:e.clientY},!0),I.current&&(window.clearTimeout(I.current),I.current=null),H.current="none",Fe.current=null,Je.current=0},onWheel:e=>{if(!w||S)return;const r=ae(e);r&&N({kind:"pointer",action:"wheel",...r,deltaX:e.deltaX,deltaY:e.deltaY})},onKeyDown:e=>{!w||S||e.target===de.current&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey||(N({kind:"key",action:"down",key:e.key,code:e.code,text:e.key.length===1?e.key:"",modifiers:ln(e)}),["Backspace","Tab","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","End","Escape"].includes(e.key)&&e.preventDefault())},onKeyUp:e=>{!w||S||e.target===de.current&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey||w&&N({kind:"key",action:"up",key:e.key,code:e.code,modifiers:ln(e)})},children:[o.jsx("img",{src:se,alt:(a==null?void 0:a.title)||"浏览器实时画面",draggable:!1,decoding:"async"}),o.jsx("video",{ref:he,className:`browser-live-video ${fe==="live"?"is-live":""}`,"aria-label":R?"桌面实时视频流":"浏览器实时视频流",autoPlay:!0,playsInline:!0,muted:!0}),o.jsx("input",{ref:de,className:"browser-live-mobile-input","aria-label":"浏览器键盘输入",defaultValue:"",inputMode:"text",autoCapitalize:"none",autoCorrect:"off",autoComplete:"off",spellCheck:!1,onFocus:()=>{Ce.current=!0,Qe(!0)},onCompositionStart:()=>{dt.current=!0},onCompositionEnd:e=>{dt.current=!1,S||Kt(e.target.value)},onBlur:e=>{Ce.current=!1,dt.current=!1,Rt.current="",e.target.value="",Qe(!1)},onChange:e=>{!S&&!dt.current&&Kt(e.target.value)}}),A&&o.jsxs("div",{className:"browser-live-quality-pending",role:"status",children:[o.jsx(G,{size:13,className:"spin","aria-hidden":"true"}),"正在切换至",lr[A]??A,"画质…"]})]}):o.jsxs("div",{className:"browser-live-empty",children:[Ae||(a==null?void 0:a.availability)==="starting"?o.jsx(G,{size:22,className:"spin","aria-hidden":"true"}):o.jsx(tn,{size:24,"aria-hidden":"true"}),o.jsx("strong",{children:Ae?"正在连接浏览器":Mn}),o.jsx("span",{children:Sn}),bn&&o.jsxs("div",{role:"group","aria-label":"锁屏远程操作",style:{display:"flex",gap:8,marginTop:12},children:[o.jsxs("button",{type:"button",className:"browser-live-control-button",disabled:!!ye,onClick:()=>void vt("wake"),children:[ye==="wake"?o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}):o.jsx(on,{size:14,"aria-hidden":"true"}),"唤醒屏幕"]}),Bt&&o.jsxs("button",{type:"button",className:"browser-live-control-button",disabled:ke,onClick:()=>{xe(null),Pe(!0)},children:[o.jsx(nn,{size:14,"aria-hidden":"true"}),"远程解锁"]})]})]})}),g&&o.jsxs("button",{type:"button",className:"browser-live-exit-fullscreen",onClick:()=>void P(),children:[o.jsx(Et,{size:14,"aria-hidden":"true"}),"退出全屏"]}),w&&!S&&o.jsxs("div",{className:"browser-live-control-cue",children:[o.jsx($n,{size:13,"aria-hidden":"true"}),o.jsxs("span",{children:[R?"当前输入会发送到本机":"当前输入会发送到浏览器",R&&Yt?` · ${Yt}`:"",R&&Xt?` · ${Xt}`:"",zt!=null?` · 控制 ${zt}ms`:""]})]})]}),!g&&o.jsxs("footer",{className:"browser-live-footer",children:[o.jsxs("div",{className:"browser-live-location",children:[o.jsx("span",{className:`browser-live-status-dot is-${(a==null?void 0:a.state)??"idle"}`,"aria-hidden":"true"}),o.jsxs("div",{children:[o.jsx("strong",{children:Rn}),o.jsx("span",{title:a==null?void 0:a.url,children:(a==null?void 0:a.capabilityError)||(R?"本机屏幕":a==null?void 0:a.url)||ht||"等待可观看的直播会话"})]}),(a==null?void 0:a.url)&&!R&&o.jsx(Dn,{size:13,"aria-hidden":"true"})]}),a&&(w?o.jsxs("button",{type:"button",className:"browser-live-control-button is-return",onClick:()=>void kn(),disabled:Xe,children:[Xe&&o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}),R?"结束控制":"归还给 Agent"]}):o.jsxs("button",{type:"button",className:"browser-live-control-button",onClick:()=>void wn(),disabled:!jn||Xe||a.state!=="agent-controlled"||a.availability!=="ready",children:[Xe&&o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}),a.controlledByAnotherViewer?"其他设备操作中":R?"开始控制":"接管浏览器"]}))]}),(ht??Ft)&&o.jsx("div",{className:"browser-live-error",role:"alert",children:ht??Ft})]}),dn&&o.jsx("div",{className:"browser-live-unlock-backdrop",role:"presentation",onMouseDown:e=>{e.target===e.currentTarget&&!ke&&(Pe(!1),we(""),xe(null))},children:o.jsxs("form",{className:"browser-live-unlock-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"browser-live-unlock-title",onSubmit:e=>{e.preventDefault(),xn()},children:[o.jsxs("div",{className:"browser-live-unlock-heading",children:[o.jsx(nn,{size:18,"aria-hidden":"true"}),o.jsx("strong",{id:"browser-live-unlock-title",children:"远程解锁 Windows"})]}),o.jsx("label",{htmlFor:"browser-live-unlock-password",children:"Windows 密码或 PIN"}),o.jsx("input",{id:"browser-live-unlock-password",type:"password",autoComplete:"off",autoFocus:!0,maxLength:256,value:ze,disabled:ke,onChange:e=>we(e.target.value)}),Pt&&o.jsx("p",{role:"alert",children:Pt}),o.jsxs("div",{className:"browser-live-unlock-actions",children:[o.jsx("button",{type:"button",className:"browser-live-control-button is-return",disabled:ke,onClick:()=>{Pe(!1),we(""),xe(null)},children:"取消"}),o.jsxs("button",{type:"submit",className:"browser-live-control-button",disabled:ke||!ze,children:[ke&&o.jsx(G,{size:14,className:"spin","aria-hidden":"true"}),"解锁"]})]})]})})]}),document.body)}export{Cr as B,rn as M,Wn as V,Xn as Z,Kn as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as W,r as o,f as M,j as e,R as H,g as J,P as L,i as Q,d as U,u as V,A as X}from"./index-
|
|
1
|
+
import{c as W,r as o,f as M,j as e,R as H,g as J,P as L,i as Q,d as U,u as V,A as X}from"./index-BReRPZnZ.js";import{a as Z,b as G,c as ee}from"./CollaborationTabBridge-Dqnn1SXm.js";import{F as se,D as ae,P as te,a as le,b as re,c as ne,d as oe,N as ie,e as ce,f as de,g as he,h as ue,i as q,j as je,k as be,S as xe}from"./file-types-DgQXHGm7.js";import{X as O}from"./x-COYLzqlQ.js";import{A as me,C as pe,P as fe,T as ve}from"./trash-2-CZx0p0L3.js";import{c as B,C as Y,U as F,A as _}from"./collaboration-BZSnjFZ-.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{c as H,r as h,j as e,u as ue,P as G,M as de,A as se,e as he}from"./index-BReRPZnZ.js";import{i as Z,r as ne,p as pe,C as fe}from"./artifact-links-DwSH3xn_.js";import{c as C,D as Q,U as F,A as ae,C as me}from"./collaboration-BZSnjFZ-.js";import{C as be}from"./CollaborationTabBridge-Dqnn1SXm.js";import{L as Y}from"./loader-circle-BCsj2yyN.js";import{X as xe}from"./x-COYLzqlQ.js";/**
|
|
2
|
+
* @license lucide-react v0.468.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const ge=H("Clock3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16.5 12",key:"1aq6pp"}]]);/**
|
|
7
|
+
* @license lucide-react v0.468.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const je=H("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);/**
|
|
12
|
+
* @license lucide-react v0.468.0 - ISC
|
|
13
|
+
*
|
|
14
|
+
* This source code is licensed under the ISC license.
|
|
15
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
+
*/const ve=H("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]),ye=/!?\[([^\]\n]+)\]\((https?:\/\/[^\s)]+|[ \t]*(?:~\/|\/|[A-Za-z]:[\\/])[^)\n]+|[^():\n]+\.(?:png|jpe?g|gif|webp|bmp|ico|svg|mp4|webm|mov|m4v))\)/gi,we=/`([^`\n]+)`/g;function Ze(n){let u=!1;return n.split(/(^[ \t]*```[^\n]*(?:\n|$))/m).map(a=>/^[ \t]*```/.test(a)?(u=!u,a):u?a:a.replace(/(!?\[[^\]\n]+\])\(<\s*((?:https?:\/\/|~\/|\/|[A-Za-z]:[\\/])[^<>\r\n]+?)\s*>\)/g,"$1($2)")).join("")}const Ne=/https?:\/\/[^\s`<>"'()[\],。;!?]+|(?:~\/|\/|[A-Za-z]:[\\/])[^\s`<>"'()[\],。;!?]*\.[A-Za-z0-9]{1,10}(?::[1-9]\d*)?/gi,ke=/:codex-file-citation\{([^}\n]*)\}/g,J=/([A-Za-z][\w-]*)="([^"\n]*)"/g,Ae=/\uE200visualize\uE202([^\uE201\n]+)\uE201/g;function L(n,u=!1){const a=u&&!/^[A-Za-z][\w+.-]*:/.test(n)&&/\.(png|jpe?g|gif|webp|bmp|ico|svg|mp4|webm|mov|m4v)$/i.test(n);if(!(n.startsWith("/")||n.startsWith("~/")||/^[A-Za-z]:[\\/]/.test(n)||a)||n.includes("?")||n.includes("#")||/[\0\r\n]/.test(n))return null;const i=n.match(/^(.*):([1-9]\d*)$/);return i?{path:i[1],line:Number(i[2])}:{path:n}}function Ee(n){const u={};for(const m of n.matchAll(J)){const t=m[1];if(t!=="path"&&t!=="purpose"&&t!=="artifact_kind"||u[t]!==void 0)return null;u[t]=m[2]}if(n.replace(J,"").trim())return null;const a=L(u.path??"");if(!a||a.line!==void 0)return null;const i=a.path.slice(a.path.lastIndexOf("/")+1)||a.path;return{path:a.path,label:i}}function Ce(n){try{const u=JSON.parse(n);if(!u||typeof u!="object"||Array.isArray(u))return null;const{path:a,title:i,mode:m}=u;if(typeof a!="string"||i!==void 0&&typeof i!="string"||m!==void 0&&typeof m!="string")return null;const t=L(a);if(!t||t.line!==void 0)return null;const c=(i==null?void 0:i.trim())||t.path.slice(t.path.lastIndexOf("/")+1)||t.path;return{path:t.path,label:c}}catch{return null}}function Se(n,u){const a=[];let i=0;const m=[...[...n.matchAll(ye)].map(t=>({kind:"markdown",match:t})),...[...n.matchAll(ke)].map(t=>({kind:"citation",match:t})),...[...n.matchAll(Ae)].map(t=>({kind:"visualize",match:t})),...[...n.matchAll(we)].map(t=>({kind:"code",match:t})),...[...n.matchAll(Ne)].filter(t=>/^https?:\/\//i.test(t[0])||!/[\w:/\\]/.test(n[(t.index??0)-1]??"")).map(t=>({kind:"bare",match:t}))].sort((t,c)=>(t.match.index??0)-(c.match.index??0));for(const t of m){const{match:c}=t,f=c.index??0;if(f<i)continue;if(f>i&&a.push({type:"text",value:n.slice(i,f)}),t.kind==="code"){const l=c[1],r=/\.[A-Za-z0-9]{1,10}(?::[1-9]\d*)?$/.test(l)?L(l):null;a.push(r||Z(l)?{type:"artifact",label:l,path:(r==null?void 0:r.path)??l,...r!=null&&r.line?{line:r.line}:{},raw:c[0]}:{type:"code",value:l}),i=f+c[0].length;continue}if(t.kind==="bare"){const l=c[0],r=L(l);a.push(r||Z(l)?{type:"artifact",label:l,path:(r==null?void 0:r.path)??l,...r!=null&&r.line?{line:r.line}:{},raw:l}:/^https?:\/\//i.test(l)?{type:"link",label:l,href:l}:{type:"text",value:l}),i=f+l.length;continue}if(t.kind==="citation"){const l=Ee(c[1]);a.push(l?{type:"artifact",label:l.label,path:l.path,raw:c[0]}:{type:"text",value:c[0]}),i=f+c[0].length;continue}if(t.kind==="visualize"){const l=Ce(c[1]);a.push(l?{type:"artifact",label:l.label,path:l.path,raw:c[0]}:{type:"text",value:c[0]}),i=f+c[0].length;continue}const o=c[2];if(Z(o))a.push({type:"artifact",label:c[1],path:o,raw:c[0]});else if(/^https?:\/\//i.test(o))a.push({type:"link",label:c[1],href:o});else{const l=L(o.trim(),!0);l?a.push({type:"artifact",label:c[1],path:l.path,...l.line?{line:l.line}:{},raw:c[0]}):a.push({type:"text",value:c[0]})}i=f+c[0].length}return i<n.length&&a.push({type:"text",value:n.slice(i)}),a.length>0?a:[{type:"text",value:n}]}function Te(n){return Se(n)}const Ie=8;function ze(n,u){return n.split(/(\[[^\]\n]+\]\([^\n)]+\))/g).flatMap(a=>{const i=Te(a),m=/^\[([^\]]+)\]\(([^)]+)\)$/.exec(a);if(!m||i.some(f=>f.type==="artifact"||f.type==="link"))return i;const t=m[2].trim().replace(/^<|>$/g,"");if(/^[A-Za-z][\w+.-]*:/.test(t)&&!/^[A-Za-z]:[\\/]/.test(t))return i;const c=ne(t,u);return c?[{type:"artifact",label:m[1],path:c,raw:a}]:i})}function ee({text:n,cwd:u}){const a=h.useId(),i=h.useRef(null),[m,t]=h.useState(!1),[c,f]=h.useState(!1);return h.useEffect(()=>{const o=i.current;if(!o)return;const l=()=>{const N=Number.parseFloat(getComputedStyle(o).lineHeight);t(o.scrollHeight>N*Ie+1)};l();const r=new ResizeObserver(l);return r.observe(o),()=>r.disconnect()},[n]),e.jsxs(e.Fragment,{children:[e.jsx("div",{id:a,ref:i,className:"collab-message-text","data-collapsed":!c,children:ze(n,u).map((o,l)=>{if(o.type==="text")return o.value;if(o.type==="code")return e.jsx("code",{children:o.value},l);if(o.type==="link")return e.jsx("a",{href:o.href,target:"_blank",rel:"noopener noreferrer",children:o.label},l);const r=ne(o.path,u);return r?e.jsx("button",{type:"button",className:"collab-message-path",title:o.line?`${r}:${o.line}`:r,"aria-label":`查看文件:${o.label}`,onClick:()=>{pe(r)||window.agentApi.openExternal(/^https?:\/\//i.test(r)?r:`file://${r}`)},children:o.label},l):o.raw})}),m&&e.jsx("button",{type:"button",className:"collab-message-toggle","aria-expanded":c,"aria-controls":a,onClick:()=>f(o=>!o),children:c?"收起":"展开全文"})]})}function Re(n){const[u,a]=h.useState(null),[i,m]=h.useState([]),[t,c]=h.useState(null),[f,o]=h.useState(null),[l,r]=h.useState(""),[N,z]=h.useState(!1),q=h.useRef(0),y=h.useRef(null),A=h.useRef(!1),R=()=>{q.current++,z(!0)},E=()=>{q.current--,z(q.current>0)},x=h.useRef({groupId:n,selected:t,revision:-1});x.current.groupId=n,x.current.selected=t;const S=h.useCallback(d=>{x.current.selected=d,x.current.revision=-1,c(d),o(null),r("");try{d&&localStorage.setItem(`collaboration:${n}:discussion`,d)}catch{}},[n]),k=h.useCallback(async()=>{const d=await C({action:"discussions",groupId:n});return x.current.groupId===n&&m(d),d},[n]);h.useEffect(()=>{let d=!0;return a(null),m([]),S(null),Promise.all([C({action:"group",groupId:n}),k()]).then(([b,j])=>{var g,_;if(!d)return;a(b);let v=null;try{v=localStorage.getItem(`collaboration:${n}:discussion`)}catch{}S(((g=j.find(M=>M.id===v))==null?void 0:g.id)||((_=j[0])==null?void 0:_.id)||null)}).catch(b=>{d&&r(b.message)}),()=>{d=!1}},[n,k,S]),h.useEffect(()=>{if(!t)return;let d=!0,b=!1;const j=async()=>{if(!b){b=!0;try{const g=await C({action:"discussion",discussionId:t,afterRevision:x.current.revision<0?void 0:x.current.revision});if(!d||x.current.selected!==t)return;!("unchanged"in g)&&g.revision>=x.current.revision&&(x.current.revision=g.revision,o(g),await k()),r("")}catch(g){d&&r(g instanceof Error?g.message:String(g))}finally{b=!1}}};j();const v=setInterval(()=>{j()},1200);return()=>{d=!1,clearInterval(v)}},[t,k]);const O=()=>(y.current||(R(),y.current=(async()=>{const d=await C({action:"createDiscussion",groupId:n});return x.current.groupId!==n?null:(S(d.id),x.current.revision=d.revision,o(d),await k(),d)})().finally(()=>{y.current=null,E()})),y.current),P=async d=>{if(t){R();try{const b=await C({action:d,discussionId:t});x.current.selected===t&&b.revision>=x.current.revision&&(x.current.revision=b.revision,o(b))}catch(b){r(b instanceof Error?b.message:String(b))}finally{E()}}},U=async(d,b)=>{var j;if(A.current)return!1;A.current=!0,R(),r("");try{const v=t||((j=await O())==null?void 0:j.id);if(!v)return!1;const g=await C({action:"send",discussionId:v,text:d,messageId:b});return x.current.selected===v&&g.revision>=x.current.revision&&(x.current.revision=g.revision,o(g)),await k(),!0}catch(v){return r(v instanceof Error?v.message:String(v)),!1}finally{A.current=!1,E()}},T=async(d,b)=>{const j=await C({action:"updateRole",groupId:n,memberId:d,role:b});x.current.groupId===n&&a(j)};return{group:f!=null&&f.groupSnapshot&&u?{...f.groupSnapshot,name:u.name}:u,history:i,selected:t,discussion:f,error:l,busy:N,select:S,create:O,act:P,send:U,setError:r,updateRole:T}}function te({member:n,isUser:u=!1,isOwner:a=!1}){const i=u?"你":n?`${n.name} · ${ae[n.agentType]}${a?" · 群主":""}`:"协作动态";return e.jsxs("span",{className:`collab-avatar${u?" collab-avatar--user":""}`,role:"img","aria-label":i,title:i,children:[u?"你":n?e.jsx(se,{agentType:n.agentType,size:20}):e.jsx(F,{size:18,"aria-hidden":"true"}),a&&e.jsx(me,{className:"collab-avatar-crown",size:13,"aria-hidden":"true"})]})}function _e({message:n,discussionId:u,onError:a}){var o;const[i,m]=h.useState(""),[t,c]=h.useState(!1);if(!n.question||n.question.resolved)return e.jsxs("span",{className:"collab-muted",children:[e.jsx(fe,{size:12})," 已处理"]});const f=async(l,r)=>{c(!0);try{await C({action:"answer",discussionId:u,questionId:n.question.id,answer:l,...r===void 0?{}:{selectedIndices:[r]}})}catch(N){a(N instanceof Error?N.message:String(N))}finally{c(!1)}};return e.jsxs("div",{className:"collab-question",children:[(o=n.question.options)==null?void 0:o.map((l,r)=>e.jsx("button",{disabled:t,onClick:()=>{f(l.label,r)},title:l.description,children:l.label},r)),e.jsxs("form",{onSubmit:l=>{l.preventDefault(),i.trim()&&f(i)},children:[e.jsx("input",{"aria-label":"回答成员问题",value:i,onChange:l=>m(l.target.value),placeholder:"输入回复"}),e.jsx("button",{disabled:t||!i.trim(),children:"回复"})]})]})}function $e({groupId:n}){const u=n||new URLSearchParams(location.search).get("groupId")||"",{group:a,history:i,selected:m,discussion:t,error:c,busy:f,select:o,create:l,act:r,send:N,setError:z,updateRole:q}=Re(u),[y,A]=h.useState(""),[R,E]=h.useState(!1),[x,S]=h.useState(null),k=ue(s=>s.skin);h.useEffect(()=>{document.documentElement.setAttribute("data-skin",k)},[k]);const O=!!c||!!a&&(!m||!!t);h.useEffect(()=>{O&&window.parent!==window&&window.parent.postMessage({type:be,groupId:u},window.location.origin)},[O,u]);const P=h.useRef(null),U=h.useRef(null),T=h.useRef(!0),d=h.useRef(null),b=h.useRef(new Map);if(h.useEffect(()=>{var s;T.current&&((s=P.current)==null||s.scrollIntoView({block:"end"}))},[t==null?void 0:t.messages.length,m]),h.useEffect(()=>{T.current=!0},[m]),!a)return e.jsx("div",{className:"collab-loading",children:c?e.jsx("p",{role:"alert",children:c}):e.jsxs(e.Fragment,{children:[e.jsx(Y,{className:"collab-spin"}),"正在打开协作群…"]})});const j=a.members.find(s=>s.id===a.ownerId),v=(t==null?void 0:t.tasks.filter(s=>s.status==="running"))||[],g=(t==null?void 0:t.status)==="running"?t.tasks.filter(s=>s.status==="queued"):[],_=g.filter(s=>s.result==="等待工作目录空闲"),M=(t==null?void 0:t.planning)||(t==null?void 0:t.status)==="running"&&t.ownerPending&&v.length===0,$=!M&&v.length===0&&g.length>0,le=_.length>0?`${_.length} 个任务等待工作目录空闲,空闲后会自动继续。`:"任务排队中,等待前置任务完成。",W=$?_.length>0?"等待工作目录空闲":"任务排队中":t?Q[t.status]:"准备好了",B=(t==null?void 0:t.messages.filter(s=>s.kind!=="progress"))||[],re=s=>{b.current.set(m||"new",y),A(b.current.get(s)||""),d.current=null,o(s),E(!1),T.current=!0},V=async()=>{try{b.current.set(m||"new",y),await l()&&(A(""),d.current=null)}catch(s){z(s instanceof Error?s.message:String(s))}},K=async()=>{!y.trim()||f||((!d.current||d.current.text!==y)&&(d.current={text:y,id:crypto.randomUUID()}),await N(y,d.current.id)&&(A(""),d.current=null,T.current=!0))};return e.jsxs("div",{className:"collab-page",children:[R&&e.jsx("button",{className:"collab-drawer-mask","aria-label":"关闭成员栏",onClick:()=>E(!1)}),e.jsxs("aside",{className:`collab-sidebar${R?" is-open":""}`,children:[e.jsxs("header",{className:"collab-sidebar-heading",children:[e.jsx("div",{className:"collab-group-icon",children:e.jsx(F,{size:22})}),e.jsxs("div",{children:[e.jsxs("span",{className:"collab-eyebrow",children:["协作群 · ",a.members.length," 人"]}),e.jsx("h2",{children:a.name})]}),e.jsx("button",{className:"collab-mobile-close","aria-label":"收起群成员",onClick:()=>E(!1),children:e.jsx(xe,{size:18})})]}),e.jsxs("div",{className:"collab-roster","aria-label":"群成员",children:[e.jsx("span",{className:"collab-section-label",children:"群成员"}),[j,...a.members.filter(s=>s.id!==j.id)].map(s=>{var X;const w=v.find(p=>p.memberId===s.id),I=s.id===j.id&&(t==null?void 0:t.planning),D=g.find(p=>p.memberId===s.id),ie=(t==null?void 0:t.messages.some(p=>p.memberId===s.id&&p.question&&!p.question.resolved))?"等待你回复":I?"正在安排":w?"正在执行":D?D.result==="等待工作目录空闲"?"等待目录空闲":"排队中":"空闲";return e.jsxs("div",{className:`collab-roster-member${I||w?" is-working":""}`,children:[e.jsxs("button",{onClick:()=>S(p=>p===s.id?null:s.id),"aria-expanded":x===s.id,children:[e.jsx(te,{member:s,isOwner:s.id===j.id}),e.jsxs("span",{className:"collab-member-name",children:[e.jsx("strong",{children:s.name}),e.jsx("small",{children:ae[s.agentType]})]}),e.jsx("span",{className:"collab-member-status",children:ie})]}),e.jsx("p",{children:s.role||(t==null?void 0:t.roles[s.id])||"等待群主分配定位"}),x===s.id&&e.jsxs("div",{className:"collab-member-detail",children:[e.jsx("small",{children:((X=s.model)==null?void 0:X.id)||"默认模型"}),e.jsxs("form",{className:"collab-role-form",onSubmit:p=>{p.preventDefault();const ce=new FormData(p.currentTarget).get("role");q(s.id,String(ce||"")).catch(oe=>z(oe.message))},children:[e.jsxs("label",{children:["定位与职责",e.jsx("textarea",{name:"role",defaultValue:s.role,rows:3,maxLength:8e3,placeholder:"留空由群主分配"},s.role)]}),e.jsx("button",{type:"submit",children:"保存职责"})]}),t==null?void 0:t.tasks.filter(p=>p.memberId===s.id).map(p=>e.jsxs("div",{children:[p.title,e.jsx("span",{children:p.status==="completed"?"已完成":p.status==="running"?"执行中":p.status==="queued"?"等待依赖或空闲":p.status==="failed"?"失败":p.status==="cancelled"?"已取消":"已中断"}),p.result&&e.jsxs("details",{children:[e.jsx("summary",{children:"查看结果"}),e.jsx(ee,{text:p.result,cwd:p.cwd||a.cwd})]})]},p.id)),t==null?void 0:t.messages.filter(p=>p.memberId===s.id&&p.kind==="progress").slice(-20).map(p=>e.jsx("small",{children:p.content},p.id))]})]},s.id)})]}),e.jsxs("section",{className:"collab-history","aria-label":"群聊记录",children:[e.jsxs("header",{children:[e.jsxs("span",{className:"collab-section-label",children:[e.jsx(je,{size:13}),"群聊记录"]}),e.jsx("button",{disabled:f,"aria-label":"新建群讨论",title:"新讨论",onClick:()=>{V()},children:e.jsx(G,{size:17})})]}),e.jsx("div",{className:"collab-history-list",children:i.length?i.map(s=>e.jsxs("button",{className:m===s.id?"is-selected":"","aria-current":m===s.id?"page":void 0,onClick:()=>{re(s.id)},children:[e.jsx("strong",{children:s.title}),e.jsxs("span",{children:[e.jsx("time",{children:new Date(s.updatedAt).toLocaleDateString("zh-CN",{month:"short",day:"numeric"})}),e.jsx("small",{children:Q[s.status]})]})]},s.id)):e.jsx("p",{className:"collab-muted",children:"发送第一条任务,记录会保存在这里。"})})]}),e.jsx("footer",{className:"collab-sidebar-footer",title:a.cwd,children:a.cwd})]}),e.jsxs("main",{className:"collab-conversation",children:[e.jsxs("header",{className:"collab-conversation-heading",children:[e.jsx("button",{className:"collab-mobile-menu","aria-label":"展开群成员和群聊记录",onClick:()=>E(!0),children:e.jsx(de,{size:20})}),e.jsxs("div",{className:"collab-discussion-title",children:[e.jsx("h1",{children:(t==null?void 0:t.title)||"开始一起做事"}),e.jsx("span",{className:"collab-discussion-status","data-status":$?"queued":(t==null?void 0:t.status)||"idle",role:"status","aria-label":W,title:W})]}),e.jsxs("div",{className:"collab-heading-actions",children:[t&&["running","waiting"].includes(t.status)&&e.jsx("button",{className:"collab-heading-stop",disabled:f,onClick:()=>{r("stop")},children:e.jsxs("span",{className:"collab-heading-action-content",children:[e.jsx(ve,{size:12,fill:"currentColor",strokeWidth:0}),"停止"]})}),t&&["waiting","interrupted","stopped"].includes(t.status)&&e.jsx("button",{className:"collab-heading-resume",disabled:f,onClick:()=>{r("resume")},children:e.jsx("span",{className:"collab-heading-action-content",children:"继续协作"})}),e.jsx("button",{className:"collab-heading-new",disabled:f,onClick:()=>{V()},children:e.jsxs("span",{className:"collab-heading-action-content",children:[e.jsx(G,{size:14}),"新讨论"]})})]})]}),e.jsxs("div",{ref:U,className:"collab-messages",onScroll:()=>{const s=U.current;s&&(T.current=s.scrollHeight-s.scrollTop-s.clientHeight<120)},children:[!B.length&&e.jsxs("div",{className:"collab-empty",children:[e.jsx("span",{className:"collab-empty-icon",children:e.jsx(F,{size:34})}),e.jsx("h2",{children:"把目标交给这个群。"}),e.jsxs("p",{children:[j.name,"会安排分工,成员会在这里汇报进展。",e.jsx("br",{}),"你可以随时补充要求。"]}),e.jsx("div",{className:"collab-empty-members",children:a.members.map(s=>e.jsxs("span",{children:[e.jsx(se,{agentType:s.agentType,size:17}),s.name]},s.id))})]}),B.map(s=>{var I;const w=a.members.find(D=>D.id===s.memberId);return e.jsxs("article",{className:`collab-message collab-message--${s.kind}`,children:[e.jsx(te,{member:w,isUser:s.kind==="user",isOwner:s.kind!=="user"&&(w==null?void 0:w.id)===j.id}),e.jsxs("div",{className:"collab-message-body",children:[e.jsx(ee,{text:s.content,cwd:((I=t==null?void 0:t.tasks.find(D=>D.id===s.taskId))==null?void 0:I.cwd)||a.cwd}),s.kind==="question"&&m&&e.jsx(_e,{message:s,discussionId:m,onError:z})]}),e.jsx("time",{dateTime:s.createdAt,children:new Date(s.createdAt).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})})]},s.id)}),(M||v.length>0||$)&&e.jsxs("div",{className:`collab-live-status${$?" is-queued":""}`,role:"status",children:[$?e.jsx(ge,{size:14,"aria-hidden":"true"}):e.jsx(Y,{size:14,className:"collab-spin","aria-hidden":"true"}),e.jsx("span",{children:M?`${j.name}正在安排下一步`:$?le:v.map(s=>{var w;return`${(w=a.members.find(I=>I.id===s.memberId))==null?void 0:w.name}:${s.title}`}).join(" · ")})]}),e.jsx("div",{ref:P})]}),e.jsxs("div",{className:"collab-composer-area",children:[c&&e.jsx("p",{className:"collab-error",role:"alert",children:c}),e.jsxs("div",{className:"collab-composer",children:[e.jsx("textarea",{"aria-label":"发送群消息",value:y,placeholder:"告诉群主,你想完成什么…",rows:3,onChange:s=>A(s.target.value),onKeyDown:s=>{s.key==="Enter"&&!s.shiftKey&&!s.nativeEvent.isComposing&&(s.preventDefault(),K())}}),e.jsxs("footer",{children:[e.jsx("span",{children:(t==null?void 0:t.status)==="running"?"补充要求会交给群主继续安排":"由群主安排分工与并行"}),e.jsx("button",{"aria-label":"发送群消息",className:"collab-primary",disabled:f||!y.trim()||(t==null?void 0:t.status)==="stopping",onClick:()=>{K()},children:e.jsx(he,{size:20})})]})]}),e.jsx("small",{className:"collab-composer-hint",children:"Enter 发送 · Shift+Enter 换行 · 群聊记录自动保存"})]})]})]})}const Fe=Object.freeze(Object.defineProperty({__proto__:null,default:$e},Symbol.toStringTag,{value:"Module"}));export{$e as C,je as H,ve as S,Fe as a,Ze as n,Te as p};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./codeSyntax-
|
|
2
|
-
import{c as ue,r as i,a0 as _t,j as t,R as Me}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./codeSyntax-Dmbrlor0.js","./index-BReRPZnZ.js","./index-DfpiL3X7.css","./artifact-links-DwSH3xn_.js","./rotate-ccw-p76OF6j6.js","./loader-circle-BCsj2yyN.js","./trash-2-CZx0p0L3.js","./x-COYLzqlQ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as ue,r as i,a0 as _t,j as t,R as Me}from"./index-BReRPZnZ.js";import{i as de,C as nt}from"./artifact-links-DwSH3xn_.js";import{R as Dt}from"./rotate-ccw-p76OF6j6.js";import{L as Z}from"./loader-circle-BCsj2yyN.js";import{P as It}from"./trash-2-CZx0p0L3.js";import{X as Ht}from"./x-COYLzqlQ.js";/**
|
|
3
3
|
* @license lucide-react v0.468.0 - ISC
|
|
4
4
|
*
|
|
5
5
|
* This source code is licensed under the ISC license.
|
|
@@ -20,5 +20,5 @@ import{c as ue,r as i,a0 as _t,j as t,R as Me}from"./index-Bqpz5--c.js";import{i
|
|
|
20
20
|
* This source code is licensed under the ISC license.
|
|
21
21
|
* See the LICENSE file in the root directory of this source tree.
|
|
22
22
|
*/const Ft=ue("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),At=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/;function Ot(e){if(!e.trim())return{rows:[],added:0,removed:0};const r=[];let l=0,a=0,h=!1,v=0,c=0;for(const u of e.replace(/\n$/,"").split(`
|
|
23
|
-
`)){const g=u.match(At);if(g){l=Number(g[1]),a=Number(g[2]),h=!0,r.push({kind:"hunk",text:u,oldLine:null,newLine:null});continue}if(!h){!u.startsWith("diff --git ")&&!u.startsWith("index ")&&!u.startsWith("--- ")&&!u.startsWith("+++ ")&&r.push({kind:"meta",text:u,oldLine:null,newLine:null});continue}u.startsWith("+")?(r.push({kind:"added",text:u.slice(1),oldLine:null,newLine:a}),a+=1,v+=1):u.startsWith("-")?(r.push({kind:"removed",text:u.slice(1),oldLine:l,newLine:null}),l+=1,c+=1):u.startsWith(" ")?(r.push({kind:"context",text:u.slice(1),oldLine:l,newLine:a}),l+=1,a+=1):r.push({kind:"note",text:u,oldLine:null,newLine:null})}return{rows:r,added:v,removed:c}}const it=256*1024,fr=16*1024,Bt={java:"java",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",ts:"typescript",tsx:"typescript",json:"json",py:"python",sh:"bash",bash:"bash",zsh:"bash",css:"css",scss:"scss",html:"xml",htm:"xml",xml:"xml",vue:"xml",svelte:"xml",astro:"xml",yml:"yaml",yaml:"yaml",toml:"ini",env:"ini",sql:"sql",c:"c",h:"c",cpp:"cpp",hpp:"cpp",go:"go",rs:"rust",kt:"kotlin",rb:"ruby",md:"markdown",markdown:"markdown",mdown:"markdown",mkdn:"markdown",mdx:"markdown",dockerfile:"dockerfile",gradle:"groovy",properties:"properties",graphql:"graphql",proto:"protobuf"};function Ut(e){var a;const r=((a=e.split(/[/\\]/).pop())==null?void 0:a.toLowerCase())??"";if(r==="dockerfile"||r.startsWith("dockerfile."))return"dockerfile";if(r===".env"||r.startsWith(".env."))return"ini";if(r===".bashrc"||r===".zshrc")return"bash";const l=r.includes(".")?r.slice(r.lastIndexOf(".")+1):"";return Bt[l]??null}function Xt({path:e,chunks:r,fileSize:l}){const[a,h]=i.useState(null),v=Ut(e),c=r.length>0&&v!==null&&(l===void 0||l<=it)&&r.reduce((g,b)=>g+b.length,0)<=it;i.useEffect(()=>{if(!c)return;let g=!1;return _t(async()=>{const{highlightCode:b}=await import("./codeSyntax-
|
|
23
|
+
`)){const g=u.match(At);if(g){l=Number(g[1]),a=Number(g[2]),h=!0,r.push({kind:"hunk",text:u,oldLine:null,newLine:null});continue}if(!h){!u.startsWith("diff --git ")&&!u.startsWith("index ")&&!u.startsWith("--- ")&&!u.startsWith("+++ ")&&r.push({kind:"meta",text:u,oldLine:null,newLine:null});continue}u.startsWith("+")?(r.push({kind:"added",text:u.slice(1),oldLine:null,newLine:a}),a+=1,v+=1):u.startsWith("-")?(r.push({kind:"removed",text:u.slice(1),oldLine:l,newLine:null}),l+=1,c+=1):u.startsWith(" ")?(r.push({kind:"context",text:u.slice(1),oldLine:l,newLine:a}),l+=1,a+=1):r.push({kind:"note",text:u,oldLine:null,newLine:null})}return{rows:r,added:v,removed:c}}const it=256*1024,fr=16*1024,Bt={java:"java",js:"javascript",jsx:"javascript",mjs:"javascript",cjs:"javascript",ts:"typescript",tsx:"typescript",json:"json",py:"python",sh:"bash",bash:"bash",zsh:"bash",css:"css",scss:"scss",html:"xml",htm:"xml",xml:"xml",vue:"xml",svelte:"xml",astro:"xml",yml:"yaml",yaml:"yaml",toml:"ini",env:"ini",sql:"sql",c:"c",h:"c",cpp:"cpp",hpp:"cpp",go:"go",rs:"rust",kt:"kotlin",rb:"ruby",md:"markdown",markdown:"markdown",mdown:"markdown",mkdn:"markdown",mdx:"markdown",dockerfile:"dockerfile",gradle:"groovy",properties:"properties",graphql:"graphql",proto:"protobuf"};function Ut(e){var a;const r=((a=e.split(/[/\\]/).pop())==null?void 0:a.toLowerCase())??"";if(r==="dockerfile"||r.startsWith("dockerfile."))return"dockerfile";if(r===".env"||r.startsWith(".env."))return"ini";if(r===".bashrc"||r===".zshrc")return"bash";const l=r.includes(".")?r.slice(r.lastIndexOf(".")+1):"";return Bt[l]??null}function Xt({path:e,chunks:r,fileSize:l}){const[a,h]=i.useState(null),v=Ut(e),c=r.length>0&&v!==null&&(l===void 0||l<=it)&&r.reduce((g,b)=>g+b.length,0)<=it;i.useEffect(()=>{if(!c)return;let g=!1;return _t(async()=>{const{highlightCode:b}=await import("./codeSyntax-Dmbrlor0.js");return{highlightCode:b}},__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url).then(({highlightCode:b})=>{g||h(()=>b)}).catch(()=>{}),()=>{g=!0}},[c]);const u=i.useMemo(()=>c&&a?a(e,r.join("")):null,[r,c,a,e]);return u!==null?t.jsx("code",{className:"file-code-preview","data-language":v,dangerouslySetInnerHTML:{__html:u}}):t.jsx("code",{className:"file-code-preview",children:r.map((g,b)=>t.jsx("span",{children:g},b))})}const at=new Set(["ts","tsx","js","jsx","mjs","cjs","json","md","markdown","mdown","mkdn","mdx","css","scss","html","htm","xml","yml","yaml","toml","sh","zsh","bash","py","rb","go","rs","java","kt","c","h","cpp","hpp","sql","env","gitignore","dockerfile","txt","log","conf","properties","gradle","lock","csv","vue","svelte","astro","graphql","prisma","proto"]),$t=new Set(["png","jpg","jpeg","gif","webp","bmp","ico","svg"]),qt=new Set(["html","htm"]),Gt=new Set(["md","markdown","mdown","mkdn","mdx"]),Yt=new Set(at),Vt="allow-scripts allow-popups allow-forms allow-modals",Jt=new Set(["mp4","webm","mov","m4v"]),Qt=new Set(["mp3","wav","m4a","aac","ogg","flac"]),Zt=new Set(["pdf"]),Kt=8*1024*1024,er=4096,tr=512*1024,lt=256*1024*1024,rr={aac:"audio/aac",csv:"text/csv",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",gif:"image/gif",html:"text/html",jpeg:"image/jpeg",jpg:"image/jpeg",json:"application/json",m4a:"audio/mp4",m4v:"video/mp4",md:"text/markdown",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",ogg:"audio/ogg",pdf:"application/pdf",png:"image/png",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",svg:"image/svg+xml",tar:"application/x-tar",txt:"text/plain",wav:"audio/wav",webm:"video/webm",webp:"image/webp",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xml:"application/xml",zip:"application/zip"};function ct(e,r){return r?!e.share||!e.canShare?"unsupported-browser":"ready":"insecure-context"}function dt(e){const r=ut(e);return rr[r]??"application/octet-stream"}function ut(e){var l;return((l=(de(e)?new URL(e).pathname:e).split(".").pop())==null?void 0:l.toLowerCase())??""}async function ft(e,r){var l;if(!r.share||!((l=r.canShare)!=null&&l.call(r,{files:[e]})))return"unsupported";try{return await r.share({files:[e],title:e.name}),"shared"}catch(a){if(a&&typeof a=="object"&&"name"in a&&a.name==="AbortError")return"cancelled";throw a}}function Ie(e){return Uint8Array.from(atob(e),r=>r.charCodeAt(0))}function mt(e,r,l){return e.decode(Ie(r),{stream:!l})}async function Re(e,r,l=()=>{},a=tr){const h=await r("fs:stat",{path:e});if(h.dir)throw new Error("文件夹不能下载");if(h.size>lt)throw new Error("文件超过 256M,请通过终端传输");const v=[];let c=0;do{const u=await r("fs:read",{path:e,offset:c,length:a},6e4),g=Ie(u.data);if(g.byteLength!==u.bytes)throw new Error("文件分块长度不一致,请重试");v.push(g.slice().buffer);const b=u.offset+u.bytes;if(!u.eof&&b<=c)throw new Error("文件下载未取得进展,请重试");if(c=b,l(h.size===0?100:Math.min(100,Math.round(c/h.size*100))),u.eof)break}while(c<h.size);return new Blob(v,{type:"application/octet-stream"})}function pt(e){var l;const r=((l=e.split(".").pop())==null?void 0:l.toLowerCase())??"";return qt.has(r)}function xt(e){var l;const r=((l=e.split(".").pop())==null?void 0:l.toLowerCase())??"";return Gt.has(r)}function _e(e){var l;const r=((l=e.split(".").pop())==null?void 0:l.toLowerCase())??"";return Yt.has(r)}function ht(e){const r=ut(e);return at.has(r)||!e.includes(".")?"text":$t.has(r)?"image":Jt.has(r)?"video":Qt.has(r)?"audio":Zt.has(r)?"pdf":"hex"}function nr({path:e,gateway:r,onClose:l}){const a=r.request,[h,v]=i.useState([]),[c,u]=i.useState(null),[g,b]=i.useState(""),[p,D]=i.useState(null),[z,y]=i.useState("initial-loading"),[gt,He]=i.useState(!1),[We,K]=i.useState(0),[fe,me]=i.useState(null),[S,T]=i.useState(null),[Pe,ee]=i.useState(null),[w,te]=i.useState(null),[vt,re]=i.useState(!1),[Ne,I]=i.useState(null),[j,ne]=i.useState(null),[bt,ie]=i.useState(!1),[pe,xe]=i.useState(!0),[se,Fe]=i.useState(null),[Ae,he]=i.useState("unavailable"),[ge,ve]=i.useState(!1),[Oe,be]=i.useState(null),[F,ye]=i.useState("file"),[L,Be]=i.useState(!1),[Ue,we]=i.useState(!1),[ke,Se]=i.useState(!1),[k,O]=i.useState(!1),[C,A]=i.useState(""),[R,Xe]=i.useState(!1),[$e,H]=i.useState(null),[yt,B]=i.useState(!1),qe=i.useRef(null),Ge=i.useRef(null),oe=i.useRef(0),W=i.useRef(!1),m=i.useRef(0),U=i.useRef(!1),je=i.useRef(new TextDecoder("utf-8",{fatal:!1})),Ee=i.useRef(null),X=i.useRef(null),Ce=i.useRef(!1),f=e?ht(e):"unsupported",ze=e?de(e):!1,Ye=e?pt(e):!1,Ve=e?xt(e):!1,wt=Ye||Ve,Je=e?_e(e):!1,_=i.useMemo(()=>h.join(""),[h]),P=i.useCallback(()=>{const n=Ee.current;Ee.current=null,n&&a("fs:preview-close",{ticketId:n}).catch(()=>{})},[a]),$=i.useCallback(async(n,o=!1,s=m.current)=>{if(!U.current){U.current=!0,y(o?"initial-loading":"loading-more"),me(null);try{const d=o?0:oe.current,x=await a("fs:read",{path:n,offset:d,length:256*1024});if(s!==m.current)return;const J=x.offset+x.bytes;if(!x.eof&&J<=d)throw new Error("文件加载未取得进展,请重试");o&&(je.current=new TextDecoder("utf-8",{fatal:!1}));const le=mt(je.current,x.data,x.eof);oe.current=J,xe(x.eof),K(J),v(E=>o?[le]:[...E,le]),D(E=>({size:x.size,mtime:(E==null?void 0:E.mtime)??0})),T(null),y("ready")}catch(d){if(s!==m.current)return;const x=d.message??String(d);o?(T(x),y("error")):(me(x),y("ready"))}finally{s===m.current&&(U.current=!1)}}},[a]),Qe=i.useCallback(async(n,o)=>{try{const s=await a("fs:inspect-text-status",{path:n});if(o!==m.current)return;D({size:s.size,mtime:s.mtime}),he(s.diffStatus),we(!s.tooLarge),B(!1),H(null)}catch{}},[a]),q=i.useCallback(async(n,o=m.current)=>{P(),y("initial-loading"),T(null);try{const s=await a("fs:preview-open",{path:n});if(o!==m.current){a("fs:preview-close",{ticketId:s.ticketId}).catch(()=>{});return}Ee.current=s.ticketId,X.current=s.url,u(s.url),D({size:s.size,mtime:s.mtime})}catch(s){if(o!==m.current)return;T(s.message??String(s)),y("error")}},[P,a]),Ze=i.useCallback(async(n,o=m.current)=>{y("initial-loading"),T(null);try{const s=await a("fs:read",{path:n,offset:0,length:er});if(o!==m.current)return;kt(s.data),K(s.bytes),D(d=>({size:s.size,mtime:(d==null?void 0:d.mtime)??0})),y("ready")}catch(s){if(o!==m.current)return;T(s.message??String(s)),y("error")}},[a]);function kt(n){const o=atob(n),s=[];for(let d=0;d+16<=o.length||d===0;d+=16){const x=o.slice(d,d+16),J=[...x].map(E=>E.charCodeAt(0).toString(16).padStart(2,"0")).join(" ").padEnd(47," "),le=[...x].map(E=>E.charCodeAt(0)>=32&&E.charCodeAt(0)<127?E:".").join("");if(s.push(`${d.toString(16).padStart(8,"0")} ${J} |${le}|`),d+16>o.length)break}b(s.join(`
|
|
24
24
|
`))}const M=i.useCallback((n,o)=>{const s=++m.current,d=_e(n);if(U.current=!1,P(),X.current=null,v([]),u(null),b(""),D(null),T(null),me(null),K(0),ee(null),te(null),re(!1),I(null),ne(null),ie(!1),xe(!0),Fe(null),he("unavailable"),ve(!1),be(null),ye("file"),we(!1),Se(!1),O(!1),A(""),H(null),B(!1),y("initial-loading"),W.current=!1,oe.current=0,je.current=new TextDecoder("utf-8",{fatal:!1}),de(n)){X.current=n,u(n);return}a("fs:watch",{path:ir(n)}).catch(()=>{}),o==="text"?(Qe(n,s),$(n,!0,s),d&&Ce.current&&q(n,s)):o==="image"||o==="video"||o==="audio"||o==="pdf"?q(n,s):o==="hex"&&(a("fs:stat",{path:n}).then(x=>{s===m.current&&D(x)}).catch(()=>{}),Ze(n,s))},[$,Ze,q,Qe,P,a]);i.useEffect(()=>{if(e)return Ce.current=!1,Be(!1),M(e,f),()=>{m.current++,U.current=!1,P()}},[e]),i.useEffect(()=>{let n=null;const o=s=>{const d=s.detail;!d||d!==e||(n!==null&&window.clearTimeout(n),n=window.setTimeout(()=>{f==="text"&&W.current?B(!0):e&&M(e,f)},350))};return window.addEventListener("file-changed",o),()=>{window.removeEventListener("file-changed",o),n!==null&&window.clearTimeout(n)}},[e,f,M]),i.useEffect(()=>{W.current=k},[k]),i.useEffect(()=>{if(z!=="initial-loading"){He(!1);return}const n=window.setTimeout(()=>He(!0),120);return()=>window.clearTimeout(n)},[e,z]),i.useEffect(()=>{const n=Ge.current,o=qe.current;if(!n||!o||!e||f!=="text"||pe||k||F!=="file"||z!=="ready"||fe)return;const s=new IntersectionObserver(d=>{d.some(x=>x.isIntersecting)&&$(e)},{root:o,rootMargin:"0px 0px 360px 0px"});return s.observe(n),()=>s.disconnect()},[k,pe,f,$,fe,e,z,F]);const Ke=i.useCallback((n,o)=>{const s=URL.createObjectURL(n),d=document.createElement("a");d.href=s,d.download=Q(o),d.style.display="none",document.body.appendChild(d),d.click(),d.remove(),window.setTimeout(()=>URL.revokeObjectURL(s),1e3)},[]),St=i.useCallback(async()=>{if(!e||w!==null||j!==null)return;if(de(e)){window.open(e,"_blank","noopener,noreferrer");return}const n=e;ee(null),I(null),re(!1),te(0);try{const o=await Re(n,a,te);Ke(o,n),re(!0),window.setTimeout(()=>re(!1),1500)}catch(o){ee((o==null?void 0:o.message)??String(o))}finally{te(null)}},[Ke,w,e,a,j]),jt=i.useCallback(async()=>{if(!e||j!==null||w!==null)return;const n=e;ee(null),I(null),ie(!1);const o=ct(navigator,window.isSecureContext);if(o==="insecure-context"){I("当前页面是 HTTP,手机 Chrome 仅允许 HTTPS 页面分享文件,请改用 HTTPS 地址后重试");return}if(o==="unsupported-browser"){I("当前浏览器不支持分享文件,请使用最新版手机 Chrome 或系统浏览器");return}ne(0);try{const s=await Re(n,a,ne),d=new File([s],Q(n),{type:dt(n),lastModified:(p==null?void 0:p.mtime)??Date.now()}),x=await ft(d,navigator);x==="unsupported"?I("当前浏览器不支持分享此文件类型,请使用下载按钮"):x==="shared"&&(ie(!0),window.setTimeout(()=>ie(!1),1500))}catch(s){I((s==null?void 0:s.message)??String(s))}finally{ne(null)}},[w,p==null?void 0:p.mtime,e,a,j]),ae=i.useCallback(async(n,o)=>{const s=await a("fs:inspect-text",{path:n},6e4);return o!==m.current?null:(D({size:s.size,mtime:s.mtime}),he(s.diffStatus),Fe(s.patch),we(!s.tooLarge&&s.validUtf8),s)},[a]),Et=i.useCallback(async()=>{if(!e||ke)return;const n=m.current;Se(!0),H(null);try{const o=await ae(e,n);if(!o)return;if(o.tooLarge||o.data===null)throw new Error("文件超过 8M,无法在线编辑");if(!o.validUtf8)throw new Error("此文件不是有效的 UTF-8 文本,无法在线编辑");const s=new TextDecoder("utf-8",{fatal:!1}).decode(Ie(o.data));v([s]),K(o.size),oe.current=o.size,xe(!0),A(s),B(!1),W.current=!0,O(!0)}catch(o){n===m.current&&H(o.message??String(o))}finally{n===m.current&&Se(!1)}},[ke,ae,e]),et=i.useCallback(async()=>{if(!e||ge||(ye("diff"),se!==null))return;const n=m.current;ve(!0),be(null);try{await ae(e,n)}catch(o){n===m.current&&be(o.message??String(o))}finally{n===m.current&&ve(!1)}},[ge,ae,se,e]),Ct=i.useCallback(()=>{if(!e)return;const n=!L;Ce.current=n,Be(n),n&&!c&&q(e,m.current)},[q,c,e,L]),G=i.useCallback(n=>{X.current===n&&(T(null),y("ready"))},[]),Y=i.useCallback(n=>{X.current===n&&(T("文件预览加载失败,请重试"),y("error"))},[]),zt=i.useCallback(()=>{e&&M(e,f)},[f,e,M]),Tt=i.useCallback(()=>{C!==_&&!window.confirm("放弃未保存的修改?")||(W.current=!1,O(!1),A(""),H(null),B(!1))},[C,_]),Lt=i.useCallback(()=>{k&&C!==_&&!window.confirm("放弃未保存的修改并关闭预览?")||(m.current++,P(),l())},[C,k,l,P,_]),Mt=i.useCallback(()=>{e&&(W.current=!1,O(!1),A(""),M(e,"text"))},[e,M]),Rt=i.useCallback(async()=>{if(!(!e||!p||R||C===_)){Xe(!0),H(null);try{await a("fs:write-text",{path:e,content:C,expectedSize:p.size,expectedMtime:p.mtime},6e4),W.current=!1,O(!1),A(""),M(e,"text")}catch(n){H((n==null?void 0:n.message)??String(n))}finally{Xe(!1)}}},[C,p,e,a,R,M,_]),V=i.useMemo(()=>Ot(se??""),[se]);if(!e)return null;const tt=((p==null?void 0:p.size)??0)>Kt,Te=!tt&&(Ae==="changed"||Ae==="untracked"),rt=f==="text"&&Ue&&z!=="initial-loading"&&!ke&&!S;return t.jsxs("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"var(--ui-term-col-bg, #101014)",color:"var(--ui-text, #e8e8ee)",colorScheme:"var(--ui-color-scheme, dark)",accentColor:"var(--ui-tab-accent, #7aa2f7)"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"9px 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",background:"var(--ui-tree-bg, #121218)",flexShrink:0},children:[t.jsx("span",{className:"pv-name",style:{minWidth:0,flex:"1 1 auto",fontSize:12.5,color:"var(--ui-text, #e8e8ee)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Q(e)}),p&&t.jsx("span",{style:{fontSize:10.5,color:"var(--ui-history-meta, #666)",flexShrink:0},children:Le(p.size)}),k?t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",onClick:Tt,disabled:R,style:N,"aria-label":"取消编辑",title:"取消编辑",children:t.jsx(Dt,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),t.jsx("button",{type:"button",onClick:Rt,disabled:R||C===_,style:{...N,color:"var(--ui-tab-accent, #7aa2f7)",opacity:R||C===_?.55:1},"aria-label":R?"正在保存":"保存修改",title:R?"正在保存":"保存修改",children:R?t.jsx(Z,{className:"tree-spin",size:15,strokeWidth:1.8,"aria-hidden":"true"}):t.jsx(Nt,{size:15,strokeWidth:1.8,"aria-hidden":"true"})})]}):t.jsxs(t.Fragment,{children:[f==="text"&&t.jsx("button",{type:"button",onClick:Et,disabled:!rt,style:{...N,opacity:rt?1:.45},"aria-label":"编辑文件",title:tt?"文件超过 8M,无法在线编辑":Ue?"编辑文件":"此文件不可编辑",children:t.jsx(It,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),t.jsx("button",{type:"button",onClick:St,disabled:w!==null||j!==null,style:{...N,opacity:w!==null||j!==null?.72:1},"aria-label":ze?"打开原始地址":w===null?"下载到当前设备":`正在下载 ${w}%`,title:ze?"打开原始地址":w===null?"下载到当前设备":`正在下载 ${w}%`,children:w!==null?t.jsx(Z,{className:"tree-spin",size:15,strokeWidth:1.8,"aria-hidden":"true"}):vt?t.jsx(nt,{size:15,strokeWidth:1.8,"aria-hidden":"true"}):t.jsx(Wt,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),!ze&&t.jsx("button",{type:"button",onClick:jt,disabled:j!==null||w!==null,style:{...N,opacity:j!==null||w!==null?.72:1},"aria-label":"分享文件",title:j===null?"分享文件":`正在准备 ${j}%`,children:j!==null?t.jsx(Z,{className:"tree-spin",size:15,strokeWidth:1.8,"aria-hidden":"true"}):bt?t.jsx(nt,{size:15,strokeWidth:1.8,"aria-hidden":"true"}):t.jsx(Ft,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),Je&&t.jsx("button",{type:"button",onClick:Ct,"aria-pressed":L,style:{...N,...L?{color:"var(--ui-tab-accent, #7aa2f7)",borderColor:"var(--ui-tab-accent, #7aa2f7)"}:{}},"aria-label":L?"退出浏览器预览":"浏览器预览",title:L?"退出浏览器预览":Ye?"在浏览器中预览渲染效果":Ve?"预览 Markdown 排版效果":"在浏览器中查看原始文件",children:t.jsx(Pt,{size:15,strokeWidth:1.8,"aria-hidden":"true"})})]}),t.jsx("button",{type:"button",onClick:Lt,style:N,"aria-label":"关闭预览",title:"关闭预览",children:t.jsx(Ht,{size:15,strokeWidth:1.8,"aria-hidden":"true"})})]}),f==="text"&&Te&&!k&&!L&&t.jsxs("div",{style:{display:"flex",alignItems:"center",minHeight:34,padding:"0 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",background:"var(--ui-tree-bg, #121218)",flexShrink:0},children:[t.jsxs("div",{role:"tablist","aria-label":"文件预览模式",style:{display:"inline-flex",gap:2,padding:2,border:"1px solid var(--ui-panel-input-border, #333)",borderRadius:6,background:"var(--ui-muted-surface, #1b1b22)"},children:[t.jsx(st,{active:F==="diff",onClick:et,children:"变更"}),t.jsx(st,{active:F==="file",onClick:()=>ye("file"),children:"文件"})]}),t.jsxs("span",{style:{marginLeft:9,display:"inline-flex",gap:7,fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:10.5},children:[V.added>0&&t.jsxs("span",{style:{color:"var(--ui-success, #059669)"},children:["+",V.added]}),V.removed>0&&t.jsxs("span",{style:{color:"var(--ui-error, #dc2626)"},children:["-",V.removed]})]})]}),Ne&&t.jsxs("div",{role:"alert",style:{flexShrink:0,padding:"8px 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",background:"var(--ui-tree-bg, #121218)",color:"var(--ui-error, #f7768e)",fontSize:12.5,lineHeight:1.5},children:["分享失败:",Ne]}),t.jsxs("div",{ref:qe,className:"pv-body",style:{position:"relative",flex:1,minHeight:0,overflow:"auto",background:"var(--ui-term-col-bg, #101014)",WebkitOverflowScrolling:"touch"},children:[Pe&&t.jsxs("div",{style:{padding:"10px 14px 0",color:"var(--ui-error, #f7768e)",fontSize:12.5},children:["下载失败:",Pe]}),$e&&t.jsx("div",{role:"alert",style:{padding:"10px 14px",color:"var(--ui-error, #f7768e)",fontSize:12.5},children:$e}),yt&&k&&t.jsxs("div",{role:"alert",style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",color:"var(--ui-error, #f7768e)",fontSize:12},children:[t.jsx("span",{style:{flex:1},children:"文件已在其他位置更新"}),t.jsxs("button",{type:"button",onClick:Mt,style:De,children:[t.jsx(Me,{size:13,strokeWidth:1.8,"aria-hidden":"true"}),"重新加载"]})]}),c&&!S&&f==="image"&&t.jsx("img",{src:c,alt:e,onLoad:()=>G(c),onError:()=>Y(c),style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain",display:"block",margin:"0 auto"}}),c&&!S&&f==="video"&&t.jsx("video",{src:c,controls:!0,playsInline:!0,preload:"metadata",onLoadedMetadata:()=>G(c),onError:()=>Y(c),style:{maxWidth:"100%",maxHeight:"100%",display:"block",margin:"0 auto"}}),c&&!S&&f==="audio"&&t.jsx("div",{style:{display:"grid",placeItems:"center",height:"100%"},children:t.jsx("audio",{src:c,controls:!0,autoPlay:!0,onLoadedMetadata:()=>G(c),onError:()=>Y(c),style:{width:"min(420px, 88%)"}})}),c&&!S&&f==="pdf"&&t.jsx("iframe",{src:c,title:e,onLoad:()=>G(c),onError:()=>Y(c),style:{width:"100%",height:"100%",border:"none"}}),c&&!S&&f==="text"&&Je&&L&&!k&&t.jsx("iframe",{src:wt?`${c}/${encodeURIComponent(Q(e))}`:c,sandbox:Vt,title:e,onLoad:()=>G(c),onError:()=>Y(c),style:{width:"100%",height:"100%",border:"none",background:"#fff"}}),f==="text"&&k&&!S&&t.jsx("textarea",{value:C,onChange:n=>A(n.target.value),spellCheck:!1,autoCapitalize:"off",autoCorrect:"off","aria-label":`编辑 ${Q(e)}`,style:{width:"100%",minHeight:"100%",boxSizing:"border-box",resize:"none",margin:0,padding:"12px 14px calc(env(safe-area-inset-bottom) + 36px)",border:0,outline:0,background:"var(--ui-term-col-bg, #101014)",color:"var(--ui-history-item-text, var(--ui-text, #d6d6de))",fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:12,lineHeight:1.5,tabSize:2}}),f==="text"&&!k&&!S&&Te&&F==="diff"&&(Oe?t.jsx(ce,{label:Oe,actionLabel:"重试",onAction:()=>void et(),tone:"error"}):ge?t.jsx(ce,{label:"正在加载变更"}):t.jsx(sr,{rows:V.rows})),(f==="hex"||f==="text"&&!k&&!L&&(!Te||F==="file"))&&!S&&t.jsxs(t.Fragment,{children:[t.jsx("pre",{style:{margin:0,padding:"11px 13px calc(env(safe-area-inset-bottom) + 36px)",fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:f==="hex"?10.5:12,lineHeight:1.45,color:f==="hex"?"var(--ui-muted-text, #9aa)":"var(--ui-history-item-text, var(--ui-text, #d6d6de))",whiteSpace:f==="hex"?"pre":"pre-wrap",wordBreak:f==="hex"?"normal":"break-word"},children:f==="hex"?g:t.jsx(Xt,{path:e,chunks:h,fileSize:p==null?void 0:p.size})}),f==="text"&&!pe&&t.jsxs("div",{ref:Ge,role:"status","aria-live":"polite",style:{minHeight:44,padding:"0 14px calc(env(safe-area-inset-bottom) + 8px)",display:"flex",alignItems:"center",justifyContent:"center",gap:7,color:"var(--ui-history-meta, #666)",fontSize:11.5},children:[z==="loading-more"&&t.jsx(Z,{className:"tree-spin",size:14,strokeWidth:1.8,"aria-hidden":"true",style:{color:"var(--ui-tab-accent, #7aa2f7)"}}),fe?t.jsxs(t.Fragment,{children:[t.jsx("span",{children:"加载失败"}),t.jsxs("button",{type:"button",onClick:()=>$(e),style:De,children:[t.jsx(Me,{size:13,strokeWidth:1.8,"aria-hidden":"true"}),"重试"]})]}):t.jsx("span",{children:z==="loading-more"?"正在加载更多":`${Le(We)} / ${Le((p==null?void 0:p.size)??We)}`})]})]}),gt&&z==="initial-loading"&&t.jsx(ce,{label:"正在加载文件"}),S&&z==="error"&&t.jsx(ce,{label:S,actionLabel:"重试",onAction:zt,tone:"error"})]})]})}function Q(e){return e.slice(e.lastIndexOf("/")+1)||e}function ir(e){const r=e.lastIndexOf("/");return r>0?e.slice(0,r):"/"}function Le(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}K`:`${(e/1024/1024).toFixed(1)}M`}const N={width:28,height:28,borderRadius:7,border:"1px solid var(--ui-panel-input-border, #333)",display:"inline-flex",alignItems:"center",justifyContent:"center",background:"var(--ui-muted-surface, #1b1b22)",color:"var(--ui-muted-text, #ccc)",flexShrink:0,cursor:"pointer",WebkitAppRegion:"no-drag"},De={minHeight:28,padding:"0 9px",borderRadius:6,border:"1px solid var(--ui-panel-input-border, #333)",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:5,background:"var(--ui-muted-surface, #1b1b22)",color:"var(--ui-muted-text, #ccc)",cursor:"pointer",fontSize:11};function ce({label:e,actionLabel:r,onAction:l,tone:a="muted"}){return t.jsxs("div",{role:a==="error"?"alert":"status",style:{position:"absolute",inset:0,minHeight:120,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,color:a==="error"?"var(--ui-error, #f7768e)":"var(--ui-muted-text, #9aa)",fontSize:12.5},children:[a!=="error"&&t.jsx(Z,{className:"tree-spin",size:18,strokeWidth:1.8,"aria-hidden":"true",style:{color:"var(--ui-tab-accent, #7aa2f7)"}}),t.jsx("span",{children:e}),r&&l&&t.jsxs("button",{type:"button",onClick:l,style:De,children:[t.jsx(Me,{size:13,strokeWidth:1.8,"aria-hidden":"true"}),r]})]})}function st({active:e,onClick:r,children:l}){return t.jsx("button",{type:"button",role:"tab","aria-selected":e,onClick:r,style:{minWidth:48,height:24,padding:"0 9px",border:0,borderRadius:4,background:e?"var(--ui-tab-accent, #7aa2f7)":"transparent",color:e?"var(--ui-tab-active-text, #fff)":"var(--ui-muted-text, #9aa)",fontSize:11,fontWeight:600,cursor:"pointer"},children:l})}function sr({rows:e}){return t.jsx("div",{style:{minWidth:"100%",width:"max-content",paddingBottom:"calc(env(safe-area-inset-bottom) + 36px)",fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:11.5,lineHeight:1.55},children:e.map((r,l)=>{const a=r.kind==="added",h=r.kind==="removed",v=r.kind==="hunk"||r.kind==="meta"||r.kind==="note",c=a?"color-mix(in srgb, var(--ui-success, #059669) 12%, transparent)":h?"color-mix(in srgb, var(--ui-error, #dc2626) 11%, transparent)":r.kind==="hunk"?"color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 10%, transparent)":"transparent",u=a?"var(--ui-success, #059669)":h?"var(--ui-error, #dc2626)":v?"var(--ui-muted-text, #9aa)":"var(--ui-history-item-text, var(--ui-text, #d6d6de))";return t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"42px 42px 22px minmax(0, 1fr)",minHeight:18,background:c,color:u},children:[t.jsx("span",{style:ot,children:r.oldLine??""}),t.jsx("span",{style:ot,children:r.newLine??""}),t.jsx("span",{style:{textAlign:"center",userSelect:"none",color:u},children:a?"+":h?"-":" "}),t.jsx("span",{style:{padding:"0 12px 0 6px",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:r.text||" "})]},`${r.kind}-${l}`)})})}const ot={padding:"0 6px",borderRight:"1px solid var(--ui-tree-border, #222)",color:"var(--ui-history-meta, #666)",textAlign:"right",userSelect:"none"},mr=Object.freeze(Object.defineProperty({__proto__:null,MAX_CLIENT_DOWNLOAD_BYTES:lt,decodeTextChunk:mt,default:nr,isBrowserPreviewPath:_e,isHtmlPreviewPath:pt,isMarkdownPreviewPath:xt,kindOf:ht,mimeTypeForPath:dt,nativeFileShareReadiness:ct,readFileForClientDownload:Re,shareFileWithNativePicker:ft},Symbol.toStringTag,{value:"Module"}));export{Wt as D,nr as F,it as M,fr as a,mr as b,Ut as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as se,r as a,j as s,d as Z,g as oe}from"./index-
|
|
1
|
+
import{c as se,r as a,j as s,d as Z,g as oe}from"./index-BReRPZnZ.js";import{S as de,k as _,i as P,F as ue,D as fe,P as pe,a as xe,b as he,c as me,d as je,N as be,e as ye,f as ve,g as ze,h as ke,j as Ne}from"./file-types-DgQXHGm7.js";import{X as ge}from"./x-COYLzqlQ.js";import{L as S}from"./loader-circle-BCsj2yyN.js";import{C as T}from"./trash-2-CZx0p0L3.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
package/runtime/webapp/dist/assets/{FlowStudioPane-DUjBX_7t.js → FlowStudioPane-BjOuLwks.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as a,b as p,j as t}from"./index-
|
|
1
|
+
import{r as a,b as p,j as t}from"./index-BReRPZnZ.js";import{F as w}from"./page-Cgp9NEw1.js";import{R as y}from"./rotate-cw-D5iQzT0K.js";import"./smartphone-C2--txxG.js";import"./x-COYLzqlQ.js";import"./artifact-links-DwSH3xn_.js";import"./trash-2-CZx0p0L3.js";import"./clipboard-BKglnESD.js";import"./CollaborationTabBridge-Dqnn1SXm.js";import"./RemoteDesktopTabBridge-Cp9mLtcY.js";const g=new Set(["127.0.0.1","localhost","[::1]"]);function h(s,e){const o=new URL(s),r=new URL(e);return g.has(o.hostname)&&o.hostname!==r.hostname&&(o.hostname=r.hostname),o.toString()}function L({visible:s}){const[e,o]=a.useState(null),[r,n]=a.useState("loading"),[u,f]=a.useState(0);a.useEffect(()=>{if(!s||e)return;let i=!1;return n("loading"),fetch("/api/flow-studio/config",{credentials:"same-origin"}).then(async c=>{if(!c.ok)throw new Error("Flow Studio config request failed");const d=await c.json();if(!d.entryUrl)throw new Error("Flow Studio entry is not configured");const l=new URL(d.entryUrl);if(l.protocol!=="http:"&&l.protocol!=="https:")throw new Error("Flow Studio entry URL is invalid");i||o(h(l.toString(),p()))}).catch(()=>{i||n("error")}),()=>{i=!0}},[u,e,s]),a.useEffect(()=>{if(!e||r!=="loading")return;const i=window.setTimeout(()=>n("error"),3e4);return()=>window.clearTimeout(i)},[e,r]);const m=()=>{o(null),n("loading"),f(i=>i+1)};return t.jsxs("div",{style:{position:"absolute",inset:0,background:"var(--ui-term-col-bg, #101014)"},"aria-busy":r==="loading",children:[e&&t.jsx("iframe",{src:e,title:"Flow Studio 数字人",referrerPolicy:"no-referrer",allow:"camera; microphone; autoplay; clipboard-read; clipboard-write; fullscreen",allowFullScreen:!0,onLoad:()=>n("ready"),onError:()=>n("error"),className:r==="ready"?"flow-frame flow-frame-ready":"flow-frame",style:{display:"block",width:"100%",height:"100%",border:0,background:"var(--ui-term-col-bg, #101014)"}},e),r==="loading"&&t.jsx(w,{}),r==="error"&&t.jsxs("div",{role:r==="error"?"alert":"status","aria-live":"polite",style:{position:"absolute",inset:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,color:"var(--ui-text, #e5e7eb)",background:"var(--ui-term-col-bg, #101014)"},children:[t.jsx("strong",{children:r==="error"?"无法打开 Flow Studio":"正在打开 Flow Studio"}),r==="error"&&t.jsxs("button",{type:"button","aria-label":"重试加载 Flow Studio",onClick:m,title:"重新加载 Flow Studio",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,width:"auto",height:32,padding:"0 10px",border:"1px solid var(--ui-muted-border, #3b3d46)",borderRadius:6,background:"transparent",color:"inherit",cursor:"pointer"},children:[t.jsx(y,{size:16,"aria-hidden":"true"}),t.jsx("span",{children:"重试"})]})]}),t.jsx("style",{jsx:!0,children:`
|
|
2
2
|
.flow-frame { opacity: 0; transform: translateY(8px) scale(.995); transition: opacity 420ms ease, transform 520ms cubic-bezier(.2,.8,.2,1); }
|
|
3
3
|
.flow-frame-ready { opacity: 1; transform: none; }
|
|
4
4
|
@media (prefers-reduced-motion: reduce) { .flow-frame { transform: none; transition: none; } }
|
package/runtime/webapp/dist/assets/{RemoteDesktopPage-BDK0Mq5I.js → RemoteDesktopPage-B1AGyJrT.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as t,u as r,j as u}from"./index-
|
|
1
|
+
import{r as t,u as r,j as u}from"./index-BReRPZnZ.js";import{B as l}from"./BrowserLivePanel-DDrnghqj.js";import{R as f,a as d,b as w,r as g}from"./RemoteDesktopTabBridge-Cp9mLtcY.js";import"./loader-circle-BCsj2yyN.js";import"./clipboard-BKglnESD.js";import"./rotate-ccw-p76OF6j6.js";import"./x-COYLzqlQ.js";function P(){const[s,n]=t.useState(!1),[c,i]=t.useState(!1),[a,m]=t.useState(r.getState().skin);t.useEffect(()=>r.subscribe(e=>m(e.skin)),[]),t.useEffect(()=>{document.documentElement.dataset.skin=a,document.body.dataset.remoteDesktop="1"},[a]),t.useEffect(()=>{const e=E=>{const o=g(E,location.origin,window.parent);o!==null&&(n(o),o&&i(!0))};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[]),t.useEffect(()=>{if(!s)return;const e=requestAnimationFrame(()=>{window.parent.postMessage({type:f},location.origin)});return()=>cancelAnimationFrame(e)},[s]);const p=t.useCallback(e=>{window.parent.postMessage({type:d,fullscreen:e},location.origin)},[]);return u.jsx(l,{onFullscreenChange:p,open:c,active:s,onClose:()=>{i(!1),n(!1),window.parent.postMessage({type:w},location.origin)}})}export{P as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as O,j as He}from"./index-
|
|
1
|
+
import{r as O,j as He}from"./index-BReRPZnZ.js";import{r as Zn}from"./page-Cgp9NEw1.js";import{c as Qn}from"./clipboard-BKglnESD.js";import"./smartphone-C2--txxG.js";import"./x-COYLzqlQ.js";import"./artifact-links-DwSH3xn_.js";import"./trash-2-CZx0p0L3.js";import"./CollaborationTabBridge-Dqnn1SXm.js";import"./RemoteDesktopTabBridge-Cp9mLtcY.js";/**
|
|
2
2
|
* Copyright (c) 2014-2024 The xterm.js authors. All rights reserved.
|
|
3
3
|
* @license MIT
|
|
4
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-SVP7TREG-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-SVP7TREG-y9Uxi4pg.js";import{p as f}from"./chunk-JWPE2WC7-DR8znCWR.js";import{_ as n,l as o}from"./mermaid.core-CmhaKXiP.js";import{M as c,b as d}from"./cynefin-OW5HDTMX-BO4eLWHY.js";import"./index-BReRPZnZ.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{X as ln,Y as an,$ as C,a0 as q,a1 as $,a2 as un,a3 as y,a4 as tn,a5 as H,a6 as _,a7 as rn,a8 as o,a9 as on,aa as sn,ab as fn}from"./mermaid.core-
|
|
1
|
+
import{X as ln,Y as an,$ as C,a0 as q,a1 as $,a2 as un,a3 as y,a4 as tn,a5 as H,a6 as _,a7 as rn,a8 as o,a9 as on,aa as sn,ab as fn}from"./mermaid.core-CmhaKXiP.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,j,a){var O=I-l,i=D-h,n=j-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function Q(l,h,I,D,v,A,j){var a=l-I,O=h-D,i=(j?A:-A)/H(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,z=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*H(on(0,T*T*R-P*P)),X=(P*g-m*S)/R,Y=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=X-z,e=Y-t,r=w-z,B=p-t;return x*x+e*e>r*r+B*B&&(X=w,Y=p),{cx:X,cy:Y,x01:-n,y01:-d,x11:X*(v/T-1),y11:Y*(v/T-1)}}function hn(){var l=cn,h=yn,I=$(0),D=null,v=gn,A=dn,j=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,z=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(z>tn-y)a.moveTo(s*C(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*C(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=z,S=z,X=j.apply(this,arguments)/2,Y=X>y&&(D?+D.apply(this,arguments):H(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(Y>y){var B=sn(Y/u*q(X)),J=sn(Y/s*q(X));(P-=B*2)>y?(B*=t?1:-1,R+=B,T-=B):(P=0,R=T=(f+c)/2),(S-=J*2)>y?(J*=t?1:-1,m+=J,g-=J):(S=0,m=g=(f+c)/2)}var F=s*C(m),G=s*q(m),K=u*C(T),L=u*q(T);if(w>y){var M=s*C(g),N=s*q(g),U=u*C(R),V=u*q(R),E;if(z<an)if(E=pn(F,G,U,V,M,N,K,L)){var W=F-E[0],Z=G-E[1],b=M-E[0],k=N-E[1],nn=1/q(fn((W*b+Z*k)/(H(W*W+Z*Z)*H(b*b+k*k)))/2),en=H(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=Q(U,V,F,G,s,x,t),r=Q(M,N,K,L,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(F,G),a.arc(0,0,s,m,g,!t)):a.moveTo(F,G),!(u>y)||!(P>y)?a.lineTo(K,L):p>y?(e=Q(K,L,M,N,u,-p,t),r=Q(F,G,U,V,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[C(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:$(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:$(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:$(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:$(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:$(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:$(+n),i):A},i.padAngle=function(n){return arguments.length?(j=typeof n=="function"?n:$(+n),i):j},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|