@cuongtran001/kanna 0.65.0 → 0.65.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 +21 -0
- package/dist/client/assets/{arc-Bw1JgwMS.js → arc-C9vGeyQS.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-BkUG0grP.js → architectureDiagram-3BPJPVTR-Bcy24SBq.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-X2OBQv66.js → blockDiagram-GPEHLZMM-BMWSp0cQ.js} +1 -1
- package/dist/{export-viewer/assets/c4Diagram-AAUBKEIU-uJZOu1O6.js → client/assets/c4Diagram-AAUBKEIU-Dw7tUR4a.js} +1 -1
- package/dist/client/assets/channel-DsFF74mI.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-BKQRjLfm.js → chunk-2J33WTMH-CFJzAWw2.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DVToXO4L.js → chunk-4BX2VUAB-B_Pgz7rr.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-j9vT-5MK.js → chunk-55IACEB6-B7nisLX3.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-Cy_Xn1Qk.js → chunk-727SXJPM-BROw3mEu.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-CRRbkNFo.js → chunk-AQP2D5EJ-CCpqS68u.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-BLelvJOj.js → chunk-FMBD7UC4-CWDBSsdq.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-DsO_2AVT.js → chunk-ND2GUHAM-CADnZwV6.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BpY4GSUG.js → chunk-QZHKN3VN-CDnmVRzl.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DAZLkEaB.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DAZLkEaB.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BBtjk9mE.js → cose-bilkent-S5V4N54A-BnyCocch.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-QZMg3xrH.js → dagre-BM42HDAG-sJddbLL4.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-BueIIRbm.js → diagram-2AECGRRQ-BtoSr1Gi.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-ziC1VWOY.js → diagram-5GNKFQAL-CIx1vVqs.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-Dl2Actz9.js → diagram-KO2AKTUF-CPsJDF68.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-BUxvSdpq.js → diagram-LMA3HP47-BYl0kDQ2.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-U4MUEWEM.js → diagram-OG6HWLK6-DtKzPE0X.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DYePt6Vw.js → erDiagram-TEJ5UH35-CMJ4hMB0.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-Dh_w3orf.js → flowDiagram-I6XJVG4X-DAISg0sS.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-CK4tDxFA.js → ganttDiagram-6RSMTGT7-B1Mc0F79.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-nZE_OBga.js → gitGraphDiagram-PVQCEYII-5Sic5d5R.js} +1 -1
- package/dist/client/assets/{index-BgGT42n0.js → index-CYnC5-KI.js} +1 -1
- package/dist/client/assets/{index-FoMgkLST.js → index-oKZk36yj.js} +201 -201
- package/dist/client/assets/{infoDiagram-5YYISTIA-D1XnFfgq.js → infoDiagram-5YYISTIA-zfR3D_kp.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BYqfKew5.js → ishikawaDiagram-YF4QCWOH-DbT7FfoS.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-B-dE0ENl.js → journeyDiagram-JHISSGLW-DvKSu_o1.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-DAHmDiR8.js → kanban-definition-UN3LZRKU-9gV_9AP6.js} +1 -1
- package/dist/client/assets/{linear-BCtkvPAc.js → linear-DGJVtGnj.js} +1 -1
- package/dist/client/assets/{mermaid.core-C54ddMik.js → mermaid.core-LYd28sa4.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-Dd5FsUVs.js → mindmap-definition-RKZ34NQL-CawOWJIu.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-crhZ0KNJ.js → pieDiagram-4H26LBE5-BkQZ47Q8.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-CHPzncMV.js → quadrantDiagram-W4KKPZXB-RoUjEASj.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-ZexIYLlW.js → requirementDiagram-4Y6WPE33-ClRrhQX0.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Cdn2cJKl.js → sankeyDiagram-5OEKKPKP-QXZPj47J.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-D4i36wwz.js → sequenceDiagram-3UESZ5HK-B8wAbdXC.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-C-W9b_7o.js → stateDiagram-AJRCARHV-DInAbXET.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CvaBZyWm.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-BI8CBNnh.js → timeline-definition-PNZ67QCA-x4WUzmK0.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-BLru9Br0.js → vennDiagram-CIIHVFJN-DPV2EvA2.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-h8xd127H.js → wardley-L42UT6IY-DP2yii_5.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Bx6FUFfq.js → wardleyDiagram-YWT4CUSO-1328jADV.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-DWNAFdg7.js → xychartDiagram-2RQKCTM6-BZ3oQUpp.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/export-viewer/assets/{arc-BbKO9Enm.js → arc-TOt6U_9K.js} +1 -1
- package/dist/export-viewer/assets/{architectureDiagram-3BPJPVTR-B8NcBPo9.js → architectureDiagram-3BPJPVTR-HNPtOct5.js} +1 -1
- package/dist/export-viewer/assets/{blockDiagram-GPEHLZMM-BzY0Lq3M.js → blockDiagram-GPEHLZMM-aQSa7cpe.js} +1 -1
- package/dist/{client/assets/c4Diagram-AAUBKEIU-C052ewDH.js → export-viewer/assets/c4Diagram-AAUBKEIU-C8itc8IF.js} +1 -1
- package/dist/export-viewer/assets/channel-DNfLRYbb.js +1 -0
- package/dist/export-viewer/assets/{chunk-2J33WTMH-BkpCJPXe.js → chunk-2J33WTMH-DxPBjzs1.js} +1 -1
- package/dist/export-viewer/assets/{chunk-4BX2VUAB-B_2XA1Ad.js → chunk-4BX2VUAB-BRtupIzP.js} +1 -1
- package/dist/export-viewer/assets/{chunk-55IACEB6-owWkF-Ox.js → chunk-55IACEB6-D4UmGFd-.js} +1 -1
- package/dist/export-viewer/assets/{chunk-727SXJPM-BE7nxgc2.js → chunk-727SXJPM-ClVxlEfE.js} +1 -1
- package/dist/export-viewer/assets/{chunk-AQP2D5EJ-BjVhd_OP.js → chunk-AQP2D5EJ-Na8S-4V9.js} +1 -1
- package/dist/export-viewer/assets/{chunk-FMBD7UC4-DjPJQNF_.js → chunk-FMBD7UC4-CsI3o2SC.js} +1 -1
- package/dist/export-viewer/assets/{chunk-ND2GUHAM-CMs-ERNi.js → chunk-ND2GUHAM-BX85dSu1.js} +1 -1
- package/dist/export-viewer/assets/{chunk-QZHKN3VN-BYyz6lGK.js → chunk-QZHKN3VN-CBasX3sV.js} +1 -1
- package/dist/export-viewer/assets/classDiagram-4FO5ZUOK-okn2QFNK.js +1 -0
- package/dist/export-viewer/assets/classDiagram-v2-Q7XG4LA2-okn2QFNK.js +1 -0
- package/dist/export-viewer/assets/{cose-bilkent-S5V4N54A-DV9cjQOo.js → cose-bilkent-S5V4N54A-CuCAwo9B.js} +1 -1
- package/dist/export-viewer/assets/{dagre-BM42HDAG-DqkK1IKO.js → dagre-BM42HDAG-CTHKA0xa.js} +1 -1
- package/dist/export-viewer/assets/{diagram-2AECGRRQ-DMHD9KIs.js → diagram-2AECGRRQ-BWNn_xgj.js} +1 -1
- package/dist/export-viewer/assets/{diagram-5GNKFQAL-CU4GLaVa.js → diagram-5GNKFQAL-DBlWi-eL.js} +1 -1
- package/dist/export-viewer/assets/{diagram-KO2AKTUF-ComK6UX6.js → diagram-KO2AKTUF-B26i-sSt.js} +1 -1
- package/dist/export-viewer/assets/{diagram-LMA3HP47-CYaUsyTC.js → diagram-LMA3HP47--6qBfDAA.js} +1 -1
- package/dist/export-viewer/assets/{diagram-OG6HWLK6-CN_BvrfA.js → diagram-OG6HWLK6-Dhcphjf1.js} +1 -1
- package/dist/export-viewer/assets/{erDiagram-TEJ5UH35-Djfj2XpU.js → erDiagram-TEJ5UH35-Ctk7ui3A.js} +1 -1
- package/dist/export-viewer/assets/{flowDiagram-I6XJVG4X-CfU_WDpn.js → flowDiagram-I6XJVG4X-CorloCcv.js} +1 -1
- package/dist/export-viewer/assets/{ganttDiagram-6RSMTGT7-DCFS5lTM.js → ganttDiagram-6RSMTGT7-BgZC-JX-.js} +1 -1
- package/dist/export-viewer/assets/{gitGraphDiagram-PVQCEYII-ClqcHkIk.js → gitGraphDiagram-PVQCEYII-PpoJnwQm.js} +1 -1
- package/dist/export-viewer/assets/{index-CNUdFMfA.js → index-CEHlOj05.js} +113 -113
- package/dist/export-viewer/assets/{index-BbH7azmc.js → index-WQYGySvC.js} +1 -1
- package/dist/export-viewer/assets/{infoDiagram-5YYISTIA-SZQl9ZwM.js → infoDiagram-5YYISTIA-FVkqN58n.js} +1 -1
- package/dist/export-viewer/assets/{ishikawaDiagram-YF4QCWOH-BehT2GeU.js → ishikawaDiagram-YF4QCWOH-D-R_oSdP.js} +1 -1
- package/dist/export-viewer/assets/{journeyDiagram-JHISSGLW-CHdQsWBt.js → journeyDiagram-JHISSGLW-C3h12eLm.js} +1 -1
- package/dist/export-viewer/assets/{kanban-definition-UN3LZRKU-CjtKIRrL.js → kanban-definition-UN3LZRKU-GROatW9F.js} +1 -1
- package/dist/export-viewer/assets/{linear-C68FWq5I.js → linear-BQMEFm6v.js} +1 -1
- package/dist/export-viewer/assets/{mermaid.core-FIesKjMn.js → mermaid.core-DIE6F52C.js} +4 -4
- package/dist/export-viewer/assets/{mindmap-definition-RKZ34NQL-BxH7CWPa.js → mindmap-definition-RKZ34NQL-CUDBw8s8.js} +1 -1
- package/dist/export-viewer/assets/{pieDiagram-4H26LBE5-C8hpYvkE.js → pieDiagram-4H26LBE5-RplHhSP4.js} +1 -1
- package/dist/export-viewer/assets/{quadrantDiagram-W4KKPZXB-C0Lb0uYj.js → quadrantDiagram-W4KKPZXB-BnX9FALg.js} +1 -1
- package/dist/export-viewer/assets/{requirementDiagram-4Y6WPE33-BKbHn2CG.js → requirementDiagram-4Y6WPE33-BAZGP7aA.js} +1 -1
- package/dist/export-viewer/assets/{sankeyDiagram-5OEKKPKP-CFudDYN4.js → sankeyDiagram-5OEKKPKP-DwDDD5sJ.js} +1 -1
- package/dist/export-viewer/assets/{sequenceDiagram-3UESZ5HK-Bx0MqfH5.js → sequenceDiagram-3UESZ5HK-DwEdu432.js} +1 -1
- package/dist/export-viewer/assets/{stateDiagram-AJRCARHV-D8fG8QSJ.js → stateDiagram-AJRCARHV-CXr8aHZT.js} +1 -1
- package/dist/export-viewer/assets/stateDiagram-v2-BHNVJYJU-iPJ807PX.js +1 -0
- package/dist/export-viewer/assets/{timeline-definition-PNZ67QCA-C_fN-q6_.js → timeline-definition-PNZ67QCA-CJE0P639.js} +1 -1
- package/dist/export-viewer/assets/{vennDiagram-CIIHVFJN-BJurbPM2.js → vennDiagram-CIIHVFJN-CR6cdl5R.js} +1 -1
- package/dist/export-viewer/assets/{wardley-L42UT6IY-C8mrt6BV.js → wardley-L42UT6IY-IwTyArxO.js} +1 -1
- package/dist/export-viewer/assets/{wardleyDiagram-YWT4CUSO-CVse2sXu.js → wardleyDiagram-YWT4CUSO-CnzKB92s.js} +1 -1
- package/dist/export-viewer/assets/{xychartDiagram-2RQKCTM6-C37KTQk-.js → xychartDiagram-2RQKCTM6-BjNq5BNO.js} +1 -1
- package/dist/export-viewer/index.html +1 -1
- package/package.json +1 -1
- package/src/server/agent.oauth-rotation.test.ts +25 -17
- package/src/server/agent.ts +47 -2
- package/src/server/read-models.test.ts +45 -0
- package/src/server/read-models.ts +7 -1
- package/dist/client/assets/channel-DKlsR6PI.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-D8cFlR6B.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-D8cFlR6B.js +0 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CjJPhS5A.js +0 -1
- package/dist/export-viewer/assets/channel-BV5QLxa0.js +0 -1
- package/dist/export-viewer/assets/classDiagram-4FO5ZUOK-B7Ze7MSL.js +0 -1
- package/dist/export-viewer/assets/classDiagram-v2-Q7XG4LA2-B7Ze7MSL.js +0 -1
- package/dist/export-viewer/assets/stateDiagram-v2-BHNVJYJU-Ba-ltO4n.js +0 -1
package/README.md
CHANGED
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
<strong>A beautiful web UI for the Claude Code & Codex CLIs</strong>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
|
+
<p align="center">
|
|
12
|
+
<em>Community fork of <a href="https://github.com/jakemor/kanna">jakemor/kanna</a> — kept in sync with upstream and extended with subscription-billing PTY mode, OAuth token pooling, multi-provider chat (Claude + Codex), subagent orchestration, durable tool-approval protocol, in-app self-update, and more.</em>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
11
15
|
<p align="center">
|
|
12
16
|
<a href="https://www.npmjs.com/package/@cuongtran001/kanna"><img src="https://img.shields.io/npm/v/@cuongtran001/kanna.svg?style=flat&colorA=18181b&colorB=f472b6" alt="npm version" /></a>
|
|
13
17
|
<a href="https://www.npmjs.com/package/@cuongtran001/kanna"><img src="https://img.shields.io/npm/dm/@cuongtran001/kanna.svg?style=flat&colorA=18181b&colorB=f472b6" alt="npm downloads" /></a>
|
|
@@ -27,6 +31,23 @@
|
|
|
27
31
|
|
|
28
32
|
<br />
|
|
29
33
|
|
|
34
|
+
## About this fork
|
|
35
|
+
|
|
36
|
+
Kanna started life as [jakemor/kanna](https://github.com/jakemor/kanna) — a clean web UI for the Claude Code CLI. This fork (`@cuongtran001/kanna`) tracks upstream and layers on features needed for heavier day-to-day use, multi-account billing, and self-hosting.
|
|
37
|
+
|
|
38
|
+
**Headline additions vs. upstream:**
|
|
39
|
+
|
|
40
|
+
- **Subscription-billing PTY driver** (`KANNA_CLAUDE_DRIVER=pty`) — runs the `claude` CLI under a pseudo-terminal so Pro/Max plans are charged instead of API rates. Includes JSONL event parity with the SDK driver, macOS `sandbox-exec` / Linux `bwrap` sandboxing, allowlist preflight probes, and failure-mode parity.
|
|
41
|
+
- **OAuth token pool** — register multiple Claude OAuth tokens; Kanna rotates across them per chat with automatic fallover on rate-limit and an explicit disabled state.
|
|
42
|
+
- **Multi-provider chat** — switch between Claude and Codex (OpenAI) from the composer with per-provider model + reasoning-effort controls and Codex fast mode.
|
|
43
|
+
- **Subagent orchestration** — first-class subagent CRUD, `@agent/` mentions, parallel runs, live activity labels, MCP progress notifications, and `mcp__kanna__delegate_subagent` so the main agent itself can delegate.
|
|
44
|
+
- **Durable tool-approval protocol** (`KANNA_MCP_TOOL_CALLBACKS=1`) — pending `AskUserQuestion` / `ExitPlanMode` / built-in shims survive server restart and replay to the client on reconnect.
|
|
45
|
+
- **Cloudflare `expose_port` MCP tool** — agent-callable port exposure with always-ask or auto-expose modes, replacing bash-output sniffing.
|
|
46
|
+
- **In-app self-update** — one-click pull/rebuild/reload with a host-agnostic supervisor (works under pm2, systemd, docker, plain shell) or direct pm2 reload; install any prior release straight from the changelog UI.
|
|
47
|
+
- **Git worktree isolation** per chat, **bulk import** of existing `~/.claude/projects/` sessions, **proactive context compaction**, **password gate** for HTTP/WS/API, **PWA / mobile layout**, **mermaid rendering** in transcripts, **standalone HTML transcript export**, and **customizable keybindings**.
|
|
48
|
+
|
|
49
|
+
See the full inventory in [Features](#features) below.
|
|
50
|
+
|
|
30
51
|
## Quickstart
|
|
31
52
|
|
|
32
53
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as ln,N as an,O as Y,P as O,Q,R as un,S as y,T as tn,V as j,W as _,X as rn,Y as o,Z as on,$ as sn,a0 as fn}from"./mermaid.core-
|
|
1
|
+
import{M as ln,N as an,O as Y,P as O,Q,R as un,S as y,T as tn,V as j,W as _,X as rn,Y as o,Z as on,$ as sn,a0 as fn}from"./mermaid.core-LYd28sa4.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,D,S,v,R,V,a){var E=D-l,i=S-h,n=V-v,d=a-R,u=d*E-n*i;if(!(u*u<y))return u=(n*(h-R)-d*(l-v))/u,[l+u*E,h+u*i]}function H(l,h,D,S,v,R,V){var a=l-D,E=h-S,i=(V?R:-R)/j(a*a+E*E),n=i*E,d=-i*a,u=l+n,s=h+d,f=D+n,c=S+d,W=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,A=m*m+g*g,T=v-R,P=u*c-f*s,I=(g<0?-1:1)*j(on(0,T*T*A-P*P)),M=(P*g-m*I)/A,N=(-P*m-g*I)/A,w=(P*g+m*I)/A,p=(-P*m+g*I)/A,x=M-W,e=N-t,r=w-W,X=p-t;return x*x+e*e>r*r+X*X&&(M=w,N=p),{cx:M,cy:N,x01:-n,y01:-d,x11:M*(v/T-1),y11:N*(v/T-1)}}function hn(){var l=cn,h=yn,D=Q(0),S=null,v=gn,R=dn,V=mn,a=null,E=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=R.apply(this,arguments)-un,W=rn(c-f),t=c>f;if(a||(a=n=E()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(W>tn-y)a.moveTo(s*Y(f),s*O(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*Y(c),u*O(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,A=f,T=c,P=W,I=W,M=V.apply(this,arguments)/2,N=M>y&&(S?+S.apply(this,arguments):j(u*u+s*s)),w=_(rn(s-u)/2,+D.apply(this,arguments)),p=w,x=w,e,r;if(N>y){var X=sn(N/u*O(M)),z=sn(N/s*O(M));(P-=X*2)>y?(X*=t?1:-1,A+=X,T-=X):(P=0,A=T=(f+c)/2),(I-=z*2)>y?(z*=t?1:-1,m+=z,g-=z):(I=0,m=g=(f+c)/2)}var Z=s*Y(m),$=s*O(m),B=u*Y(T),C=u*O(T);if(w>y){var F=s*Y(g),G=s*O(g),J=u*Y(A),K=u*O(A),q;if(W<an)if(q=pn(Z,$,J,K,F,G,B,C)){var L=Z-q[0],U=$-q[1],k=F-q[0],b=G-q[1],nn=1/O(fn((L*k+U*b)/(j(L*L+U*U)*j(k*k+b*b)))/2),en=j(q[0]*q[0]+q[1]*q[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}I>y?x>y?(e=H(J,K,Z,$,s,x,t),r=H(F,G,B,C,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(Z,$),a.arc(0,0,s,m,g,!t)):a.moveTo(Z,$),!(u>y)||!(P>y)?a.lineTo(B,C):p>y?(e=H(B,C,F,G,u,-p,t),r=H(Z,$,J,K,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,A,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)+ +R.apply(this,arguments))/2-an/2;return[Y(d)*n,O(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:Q(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:Q(+n),i):h},i.cornerRadius=function(n){return arguments.length?(D=typeof n=="function"?n:Q(+n),i):D},i.padRadius=function(n){return arguments.length?(S=n==null?null:typeof n=="function"?n:Q(+n),i):S},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:Q(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:Q(+n),i):R},i.padAngle=function(n){return arguments.length?(V=typeof n=="function"?n:Q(+n),i):V},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|