@jacexh/claude-web-console 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -0
- package/bin/cli.js +64 -0
- package/claude-web-console.service +26 -0
- package/client/dist/assets/_baseUniq-Cnoz3HXL.js +1 -0
- package/client/dist/assets/arc-Z_2trbN8.js +1 -0
- package/client/dist/assets/architectureDiagram-Q4EWVU46-BkJc1Y5A.js +36 -0
- package/client/dist/assets/blockDiagram-DXYQGD6D-DajeZur_.js +132 -0
- package/client/dist/assets/c4Diagram-AHTNJAMY-DPrSiSIe.js +10 -0
- package/client/dist/assets/channel-xmJgF8AT.js +1 -0
- package/client/dist/assets/chunk-4BX2VUAB-Ap8VOuEx.js +1 -0
- package/client/dist/assets/chunk-4TB4RGXK-7WUmxI0T.js +206 -0
- package/client/dist/assets/chunk-55IACEB6-gyKf_szG.js +1 -0
- package/client/dist/assets/chunk-EDXVE4YY-Dqsdf8RE.js +1 -0
- package/client/dist/assets/chunk-FMBD7UC4-CFwejjYg.js +15 -0
- package/client/dist/assets/chunk-OYMX7WX6-DjhMJFGF.js +231 -0
- package/client/dist/assets/chunk-QZHKN3VN-BZl3lFpB.js +1 -0
- package/client/dist/assets/chunk-YZCP3GAM-Bgp9VGoJ.js +1 -0
- package/client/dist/assets/classDiagram-6PBFFD2Q-CUsL9OeO.js +1 -0
- package/client/dist/assets/classDiagram-v2-HSJHXN6E-CUsL9OeO.js +1 -0
- package/client/dist/assets/clone-YPoNuUWg.js +1 -0
- package/client/dist/assets/cose-bilkent-S5V4N54A-BhMgNxzB.js +1 -0
- package/client/dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
- package/client/dist/assets/dagre-KV5264BT-Im4xvruI.js +4 -0
- package/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/client/dist/assets/diagram-5BDNPKRD-C_LUH1t_.js +10 -0
- package/client/dist/assets/diagram-G4DWMVQ6-ovGPIIZa.js +24 -0
- package/client/dist/assets/diagram-MMDJMWI5-Cc_S6QYf.js +43 -0
- package/client/dist/assets/diagram-TYMM5635-DNtJ4zRJ.js +24 -0
- package/client/dist/assets/erDiagram-SMLLAGMA-mjVqYF51.js +85 -0
- package/client/dist/assets/flowDiagram-DWJPFMVM-gfeU3vbm.js +162 -0
- package/client/dist/assets/ganttDiagram-T4ZO3ILL-DHzKAwPu.js +292 -0
- package/client/dist/assets/gitGraphDiagram-UUTBAWPF-NmVr9v2T.js +106 -0
- package/client/dist/assets/graph-DWZBkQul.js +1 -0
- package/client/dist/assets/index-Bs3edPh7.js +329 -0
- package/client/dist/assets/index-BvGI0U64.css +1 -0
- package/client/dist/assets/infoDiagram-42DDH7IO-uZQs2FWg.js +2 -0
- package/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/client/dist/assets/ishikawaDiagram-UXIWVN3A-CVqWYfyh.js +70 -0
- package/client/dist/assets/journeyDiagram-VCZTEJTY-BM-S2Uek.js +139 -0
- package/client/dist/assets/kanban-definition-6JOO6SKY-DtfrMWsW.js +89 -0
- package/client/dist/assets/katex-DkKDou_j.js +257 -0
- package/client/dist/assets/layout-dcq7fgvs.js +1 -0
- package/client/dist/assets/linear-B-FGkSzh.js +1 -0
- package/client/dist/assets/mermaid.core-DDFJ1A5Z.js +309 -0
- package/client/dist/assets/min-DD4RQeGA.js +1 -0
- package/client/dist/assets/mindmap-definition-QFDTVHPH-B1E5NbCo.js +96 -0
- package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/client/dist/assets/pieDiagram-DEJITSTG-Ciel1XRV.js +30 -0
- package/client/dist/assets/quadrantDiagram-34T5L4WZ-D1jxP0fH.js +7 -0
- package/client/dist/assets/requirementDiagram-MS252O5E-CTXKAocB.js +84 -0
- package/client/dist/assets/sankeyDiagram-XADWPNL6-Dj-i0BnN.js +10 -0
- package/client/dist/assets/sequenceDiagram-FGHM5R23-kCI4qbes.js +157 -0
- package/client/dist/assets/stateDiagram-FHFEXIEX-CiE-lplM.js +1 -0
- package/client/dist/assets/stateDiagram-v2-QKLJ7IA2-ZPI5JmoG.js +1 -0
- package/client/dist/assets/timeline-definition-GMOUNBTQ-MoAQpvF_.js +120 -0
- package/client/dist/assets/vennDiagram-DHZGUBPP-BqTjHn6B.js +34 -0
- package/client/dist/assets/wardley-RL74JXVD-C3OshQuH.js +162 -0
- package/client/dist/assets/wardleyDiagram-NUSXRM2D-Dl-s9oxJ.js +20 -0
- package/client/dist/assets/xychartDiagram-5P7HB3ND-BqyQEiVY.js +7 -0
- package/client/dist/index.html +16 -0
- package/package.json +57 -0
- package/server/src/index.ts +52 -0
- package/server/src/session-manager.ts +765 -0
- package/server/src/types.ts +295 -0
- package/server/src/ws-handler.ts +355 -0
package/README.md
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# @jacexh/claude-web-console
|
|
2
|
+
|
|
3
|
+
Web-based console for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) -- manage multiple sessions, switch models, preview artifacts, and more, all from the browser.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
- **Multi-session management** -- create, resume, close, rename, and fork sessions
|
|
11
|
+
- **Model switching** -- change Claude model mid-session or at creation time
|
|
12
|
+
- **Permission control** -- choose permission mode per session (auto, acceptEdits, plan, bypassPermissions, dontAsk)
|
|
13
|
+
- **Environment variables** -- pass custom env vars when creating sessions
|
|
14
|
+
- **Artifact preview** -- HTML (sandboxed iframe), Markdown, code highlighting (Prism), Mermaid diagrams
|
|
15
|
+
- **SubAgent visualization** -- nested agent rendering with collapsible cards
|
|
16
|
+
- **Elicitation handling** -- inline form/URL prompts from MCP servers
|
|
17
|
+
- **Command menu** -- `/` slash commands with autocomplete
|
|
18
|
+
- **File mention** -- `@` file autocomplete in chat input
|
|
19
|
+
- **Settings dashboard** -- view permission mode, MCP server status, account info
|
|
20
|
+
- **Resizable three-panel layout** -- session list, chat, and artifact preview
|
|
21
|
+
|
|
22
|
+
## Quick Start
|
|
23
|
+
|
|
24
|
+
### npx (no install)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx @jacexh/claude-web-console
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Open [http://localhost:3000](http://localhost:3000) in your browser.
|
|
31
|
+
|
|
32
|
+
### Global install
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g @jacexh/claude-web-console
|
|
36
|
+
claude-web-console --port 8080
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Docker
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
docker run -p 3000:3000 \
|
|
43
|
+
-v ~/.claude:/root/.claude \
|
|
44
|
+
ghcr.io/jacexh/claude-web-console
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
> Mount `~/.claude` so the container can reuse your existing Claude Code authentication.
|
|
48
|
+
|
|
49
|
+
### systemd (Linux)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Copy the service file
|
|
53
|
+
cp claude-web-console.service ~/.config/systemd/user/
|
|
54
|
+
|
|
55
|
+
# Edit environment variables as needed
|
|
56
|
+
systemctl --user edit claude-web-console.service
|
|
57
|
+
|
|
58
|
+
# Enable and start
|
|
59
|
+
systemctl --user enable --now claude-web-console.service
|
|
60
|
+
|
|
61
|
+
# Check status / logs
|
|
62
|
+
systemctl --user status claude-web-console.service
|
|
63
|
+
journalctl --user -u claude-web-console.service -f
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## CLI Options
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
claude-web-console [options]
|
|
70
|
+
|
|
71
|
+
Options:
|
|
72
|
+
--port <number> Port to listen on (default: 3000, env: PORT)
|
|
73
|
+
--host <address> Host to bind to (default: 0.0.0.0)
|
|
74
|
+
--help, -h Show this help message
|
|
75
|
+
--version, -v Show version
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Prerequisites
|
|
79
|
+
|
|
80
|
+
- **Node.js >= 18**
|
|
81
|
+
- **Claude Code CLI** installed and authenticated (`claude` must be available in PATH, or set `CLAUDE_PATH` env var)
|
|
82
|
+
|
|
83
|
+
## Development
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git clone https://github.com/jacexh/talgent.git
|
|
87
|
+
cd talgent/claude-web-console
|
|
88
|
+
npm install
|
|
89
|
+
npm run dev
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
This starts both the Fastify server and Vite dev server concurrently.
|
|
93
|
+
|
|
94
|
+
## Tech Stack
|
|
95
|
+
|
|
96
|
+
- **Server:** Fastify v5, WebSocket, `@anthropic-ai/claude-agent-sdk`
|
|
97
|
+
- **Client:** React 19, Vite 6, Tailwind CSS v4
|
|
98
|
+
- **Runtime:** tsx (no build step for server in dev)
|
|
99
|
+
|
|
100
|
+
## License
|
|
101
|
+
|
|
102
|
+
MIT
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const args = process.argv.slice(2);
|
|
4
|
+
|
|
5
|
+
function getArg(name, fallback) {
|
|
6
|
+
const idx = args.indexOf(name);
|
|
7
|
+
if (idx !== -1 && idx + 1 < args.length) return args[idx + 1];
|
|
8
|
+
const eq = args.find(a => a.startsWith(`${name}=`));
|
|
9
|
+
if (eq) return eq.split('=')[1];
|
|
10
|
+
return fallback;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
14
|
+
console.log(`
|
|
15
|
+
claude-web-console - Web-based console for Claude Code
|
|
16
|
+
|
|
17
|
+
Usage:
|
|
18
|
+
claude-web-console [options]
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
--port <number> Port to listen on (default: 3000, env: PORT)
|
|
22
|
+
--host <address> Host to bind to (default: 0.0.0.0)
|
|
23
|
+
--help, -h Show this help message
|
|
24
|
+
--version, -v Show version
|
|
25
|
+
`);
|
|
26
|
+
process.exit(0);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (args.includes('--version') || args.includes('-v')) {
|
|
30
|
+
const { readFileSync } = await import('node:fs');
|
|
31
|
+
const { fileURLToPath } = await import('node:url');
|
|
32
|
+
const { dirname, join } = await import('node:path');
|
|
33
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
34
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
35
|
+
console.log(pkg.version);
|
|
36
|
+
process.exit(0);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const port = getArg('--port', process.env.PORT || '3000');
|
|
40
|
+
const host = getArg('--host', '0.0.0.0');
|
|
41
|
+
|
|
42
|
+
process.env.PORT = port;
|
|
43
|
+
process.env.HOST = host;
|
|
44
|
+
|
|
45
|
+
// Launch the server via tsx
|
|
46
|
+
import { fileURLToPath } from 'node:url';
|
|
47
|
+
import { dirname, join } from 'node:path';
|
|
48
|
+
import { spawn } from 'node:child_process';
|
|
49
|
+
|
|
50
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
51
|
+
const serverEntry = join(__dirname, '..', 'server', 'src', 'index.ts');
|
|
52
|
+
const tsxBin = join(__dirname, '..', 'node_modules', '.bin', 'tsx');
|
|
53
|
+
|
|
54
|
+
const child = spawn(tsxBin, [serverEntry], {
|
|
55
|
+
stdio: 'inherit',
|
|
56
|
+
env: { ...process.env, PORT: port, HOST: host },
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
child.on('exit', (code) => process.exit(code ?? 0));
|
|
60
|
+
|
|
61
|
+
// Forward signals
|
|
62
|
+
for (const sig of ['SIGINT', 'SIGTERM']) {
|
|
63
|
+
process.on(sig, () => child.kill(sig));
|
|
64
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
[Unit]
|
|
2
|
+
Description=Claude Web Console
|
|
3
|
+
After=network.target
|
|
4
|
+
|
|
5
|
+
[Service]
|
|
6
|
+
Type=simple
|
|
7
|
+
ExecStart=/usr/bin/env npx @jacexh/claude-web-console
|
|
8
|
+
Restart=on-failure
|
|
9
|
+
RestartSec=5
|
|
10
|
+
|
|
11
|
+
# Environment
|
|
12
|
+
Environment=PORT=3000
|
|
13
|
+
Environment=HOST=0.0.0.0
|
|
14
|
+
# Uncomment and set if claude is not in PATH
|
|
15
|
+
# Environment=CLAUDE_PATH=/usr/local/bin/claude
|
|
16
|
+
# Uncomment to set a default working directory for new sessions
|
|
17
|
+
# Environment=CC_WEB_CONSOLE_CWD=/home/your-user/projects
|
|
18
|
+
|
|
19
|
+
# Security hardening
|
|
20
|
+
NoNewPrivileges=true
|
|
21
|
+
ProtectSystem=strict
|
|
22
|
+
ProtectHome=read-only
|
|
23
|
+
ReadWritePaths=%h/.claude
|
|
24
|
+
|
|
25
|
+
[Install]
|
|
26
|
+
WantedBy=multi-user.target
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{aX as L,bt as ln,aH as A,aV as P,aG as z,bu as gn,bv as dn,bw as hn,bx as W,by as pn,bo as An,bz as m,aY as N,b1 as B,b4 as T,bA as _n,a$ as on,bB as wn,br as On,aI as V,bp as vn,bC as R}from"./mermaid.core-DDFJ1A5Z.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||L(n)&&ln(n)==Pn}function yn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var U=P?P.prototype:void 0,H=U?U.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return yn(n,k)+"";if(x(n))return H?H.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function In(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?In(n,r,e):cn(n,Tn,e)}function Sn(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function M(n){return z(n)?gn(n):dn(n)}var Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Ln.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Gn=/\\(\\)?/g,Dn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Gn,"$1"):i||e)}),r});function Fn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Dn(Fn(n))}function I(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[I(r[e++])];return e&&e==i?n:void 0}function mn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||W(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Bn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Un(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Un;function Yn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Y(n){return Yn(n,M,qn)}var Zn="__lodash_hash_undefined__";function Xn(n){return this.__data__.set(n,Zn),this}function Jn(n){return this.__data__.has(n)}function y(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}y.prototype.add=y.prototype.push=Xn;y.prototype.has=Jn;function Qn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var zn=1,Wn=2;function fn(n,r,e,i,f,t){var s=e&zn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&Wn?new y:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Qn(r,function(O,v){if(!tn(o,v)&&(p===O||f(p,O,e,i,t)))return o.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",Z=P?P.prototype:void 0,S=Z?Z.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new m(n),new m(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(S)return S.call(n)==S.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=Y(n),a=u.length,h=Y(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],v=r[d];if(i)var F=s?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(F===void 0?O===v||f(O,v,e,i,t):F)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var b=n.constructor,E=r.constructor;b!=E&&"constructor"in n&&"constructor"in r&&!(typeof b=="function"&&b instanceof b&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,X="[object Arguments]",J="[object Array]",c="[object Object]",wr=Object.prototype,Q=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?J:N(n),h=u?J:N(r);a=a==X?c:a,h=h==X?c:h;var g=a==c,l=h==c,d=a==h;if(d&&B(n)){if(!B(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function G(n,r,e,i,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Or(n,r,e,i,G,f)}var vr=1,Pr=2;function yr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?G(h,a,vr|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function br(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=br(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||yr(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=I(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||W(n)))}function Ir(n,r){return n!=null&&Tr(n,r,cr)}var Rr=1,Sr=2;function Lr(n,r){return $(n)&&sn(r)?un(I(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Ir(e,n):G(r,i,Rr|Sr)}}function xr(n){return function(r){return r==null?void 0:r[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(I(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Lr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&vn(n,r,M)}function Gr(n,r){return function(e,i){if(e==null)return e;if(!z(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var D=Gr(Cr);function Dr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:D;return e(n,Dr(r))}function Fr(n,r){var e=[];return D(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Yr(n,r){var e=A(n)?en:Fr;return e(n,an(r))}function mr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Zr(n,r,e){var i=A(n)?Bn:mr,f=arguments.length<3;return i(n,an(r),e,f,D)}var Nr=1/0,Br=R&&1/C(new R([,-0]))[1]==Nr?function(n){return new R(n)}:bn,Ur=200;function Xr(n,r,e){var i=-1,f=Sn,t=n.length,s=!0,u=[],a=u;if(t>=Ur){var h=r?null:Br(n);if(h)return C(h);s=!1,f=tn,a=new y}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{D as a,Kr as b,an as c,yn as d,rn as e,Yn as f,qn as g,En as h,x as i,Y as j,M as k,Xr as l,Yr as m,qr as n,cn as o,Dr as p,Cr as q,Zr as r,Un as s,Tr as t,j as u,I as v,nn as w,Ir as x,Fn as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a0 as ln,a1 as an,a2 as H,a3 as q,a4 as B,a5 as un,a6 as y,a7 as tn,a8 as L,a9 as _,aa as rn,ab as o,ac as on,ad as sn,ae as fn}from"./mermaid.core-DDFJ1A5Z.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,C,a){var O=I-l,i=D-h,n=C-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 W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(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)*L(on(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=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,F=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(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(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=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,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(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,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[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|