local-diff-reviewer 2.0.11 → 3.0.0
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 +26 -2
- package/dist/cli/start.js +35 -8
- package/dist/web/assets/{arc-ChpFy37O.js → arc-Ckh-M5hP.js} +1 -1
- package/dist/web/assets/{architectureDiagram-3BPJPVTR-Cgaj3a9o.js → architectureDiagram-3BPJPVTR-B0tbMAIU.js} +1 -1
- package/dist/web/assets/{blockDiagram-GPEHLZMM-DkuAMi3q.js → blockDiagram-GPEHLZMM-B5OtLIr3.js} +1 -1
- package/dist/web/assets/{c4Diagram-AAUBKEIU-CDK-buBU.js → c4Diagram-AAUBKEIU-CrDS8bog.js} +1 -1
- package/dist/web/assets/channel-B2YZkp4M.js +1 -0
- package/dist/web/assets/{chunk-2J33WTMH-YbsNyCUW.js → chunk-2J33WTMH-CVA8NoAe.js} +1 -1
- package/dist/web/assets/{chunk-3OPIFGDE-DV1vjQ2X.js → chunk-3OPIFGDE-sn-9uPlE.js} +1 -1
- package/dist/web/assets/{chunk-4BX2VUAB-DeEc33q3.js → chunk-4BX2VUAB-BIESri7Q.js} +1 -1
- package/dist/web/assets/{chunk-55IACEB6-bZZAUAVd.js → chunk-55IACEB6-Cpuks2E5.js} +1 -1
- package/dist/web/assets/{chunk-5ZQYHXKU-DgyqH5XP.js → chunk-5ZQYHXKU-DqT3H-me.js} +1 -1
- package/dist/web/assets/{chunk-727SXJPM-6VWJ2lHJ.js → chunk-727SXJPM-BBObkKMn.js} +1 -1
- package/dist/web/assets/{chunk-AQP2D5EJ-BF8x9XWx.js → chunk-AQP2D5EJ-ZX4SMfe3.js} +1 -1
- package/dist/web/assets/{chunk-BSJP7CBP-CMr0v6xI.js → chunk-BSJP7CBP-BLWdfNB1.js} +1 -1
- package/dist/web/assets/{chunk-CSCIHK7Q-D2fII9eQ.js → chunk-CSCIHK7Q-B1az5C5j.js} +1 -1
- package/dist/web/assets/{chunk-FMBD7UC4-DAlS2A9T.js → chunk-FMBD7UC4-DugR8TQm.js} +1 -1
- package/dist/web/assets/{chunk-KSCS5N6A-MlhfFM2r.js → chunk-KSCS5N6A-CAUnvBMH.js} +1 -1
- package/dist/web/assets/{chunk-L5ZTLDWV-BEIJ92Sz.js → chunk-L5ZTLDWV-VWgwD4Zn.js} +1 -1
- package/dist/web/assets/{chunk-LZXEDZCA-bfYwPq2G.js → chunk-LZXEDZCA-C0hltgjh.js} +2 -2
- package/dist/web/assets/{chunk-ND2GUHAM-BRDrcZAI.js → chunk-ND2GUHAM-vZltIQlk.js} +1 -1
- package/dist/web/assets/{chunk-NZK2D7GU-B6vyhmOT.js → chunk-NZK2D7GU-B2nlIFKp.js} +1 -1
- package/dist/web/assets/{chunk-O5CBEL6O-c3nB4SYL.js → chunk-O5CBEL6O-Bmd7JVTC.js} +1 -1
- package/dist/web/assets/chunk-QZHKN3VN-CFEOlnoG.js +1 -0
- package/dist/web/assets/chunk-WU5MYG2G-DQcCEXTw.js +1 -0
- package/dist/web/assets/{chunk-XPW4576I-lMmkJ4Jc.js → chunk-XPW4576I-6QT93MpA.js} +1 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-BD1S7brN.js +1 -0
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-D4LaRvza.js +1 -0
- package/dist/web/assets/{cose-bilkent-S5V4N54A-DWeoi84z.js → cose-bilkent-S5V4N54A-BkxjOYA9.js} +1 -1
- package/dist/web/assets/{dagre-BM42HDAG-IfVKs6Da.js → dagre-BM42HDAG-DmT5h0dp.js} +1 -1
- package/dist/web/assets/{diagram-2AECGRRQ-BXq6JdLK.js → diagram-2AECGRRQ-D-qLCEtB.js} +1 -1
- package/dist/web/assets/{diagram-5GNKFQAL-BNWmXT7I.js → diagram-5GNKFQAL-BrwYtW39.js} +1 -1
- package/dist/web/assets/{diagram-KO2AKTUF-BtK06IlL.js → diagram-KO2AKTUF-DuYo_LSG.js} +1 -1
- package/dist/web/assets/{diagram-LMA3HP47-BQDK25Sc.js → diagram-LMA3HP47-D4m7-8Vr.js} +1 -1
- package/dist/web/assets/{diagram-OG6HWLK6-Duxtsjxn.js → diagram-OG6HWLK6-ChOAL5-X.js} +1 -1
- package/dist/web/assets/{dist-DVJJgXED.js → dist-sVycw1Bs.js} +1 -1
- package/dist/web/assets/{erDiagram-TEJ5UH35-CFq2Ut7T.js → erDiagram-TEJ5UH35-DWzWDAIw.js} +1 -1
- package/dist/web/assets/{flowDiagram-I6XJVG4X-Ddk8q5oz.js → flowDiagram-I6XJVG4X-WlINsTcp.js} +1 -1
- package/dist/web/assets/{ganttDiagram-6RSMTGT7-DNp0Oq1N.js → ganttDiagram-6RSMTGT7-C7pqlFv4.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PVQCEYII-C7VYErCd.js → gitGraphDiagram-PVQCEYII-C2PK8KKl.js} +1 -1
- package/dist/web/assets/{index-msD3nmMF.js → index-DIkKmQ-J.js} +19 -19
- package/dist/web/assets/{infoDiagram-5YYISTIA-Ci4wm7CG.js → infoDiagram-5YYISTIA-CF1W4hkR.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-SUihQfsH.js → ishikawaDiagram-YF4QCWOH-DLhI6KSL.js} +1 -1
- package/dist/web/assets/{journeyDiagram-JHISSGLW-BrrRTv6l.js → journeyDiagram-JHISSGLW-CfiHMck3.js} +1 -1
- package/dist/web/assets/{kanban-definition-UN3LZRKU-CMlg7z3Y.js → kanban-definition-UN3LZRKU-BrTrZdy1.js} +1 -1
- package/dist/web/assets/{line-CIhu9AHH.js → line-D02klKRX.js} +1 -1
- package/dist/web/assets/{linear-z1b-Q4rf.js → linear-C5h85B7h.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-8oj6cPO6.js → mermaid-parser.core-Cq73KT7R.js} +1 -1
- package/dist/web/assets/{mermaid.core-CuDXPsl1.js → mermaid.core-REygMIjZ.js} +3 -3
- package/dist/web/assets/{mindmap-definition-RKZ34NQL-RNKXmHdf.js → mindmap-definition-RKZ34NQL-DH5IZzAR.js} +1 -1
- package/dist/web/assets/{pieDiagram-4H26LBE5-D-I8XGuG.js → pieDiagram-4H26LBE5-CoNtfAcu.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-W4KKPZXB-BjmgapTa.js → quadrantDiagram-W4KKPZXB-BfzCuaCu.js} +1 -1
- package/dist/web/assets/{requirementDiagram-4Y6WPE33-D5HjLxw4.js → requirementDiagram-4Y6WPE33-BcQtsOXE.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-5OEKKPKP-SeolUewM.js → sankeyDiagram-5OEKKPKP-DYdRXEzK.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-3UESZ5HK-tVOjosKL.js → sequenceDiagram-3UESZ5HK-CjEWZsXH.js} +1 -1
- package/dist/web/assets/{src-DiU4xI_J.js → src-YWsC0CjH.js} +1 -1
- package/dist/web/assets/{stateDiagram-AJRCARHV-Df9qxfpJ.js → stateDiagram-AJRCARHV-DHBhgKCM.js} +1 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Dd45tzEd.js +1 -0
- package/dist/web/assets/{timeline-definition-PNZ67QCA-DkURJqbS.js → timeline-definition-PNZ67QCA-DMdbG-v0.js} +1 -1
- package/dist/web/assets/{vennDiagram-CIIHVFJN-CoNHo8pC.js → vennDiagram-CIIHVFJN-DnCK_B7R.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-YWT4CUSO-CH4FV8ak.js → wardleyDiagram-YWT4CUSO-BqSCFy5g.js} +1 -1
- package/dist/web/assets/{xychartDiagram-2RQKCTM6-CSRcrz5n.js → xychartDiagram-2RQKCTM6-B-NyF2hJ.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/dist/web/assets/channel-ghHSFeG0.js +0 -1
- package/dist/web/assets/chunk-QZHKN3VN-rD5TgXB4.js +0 -1
- package/dist/web/assets/chunk-WU5MYG2G-DxdquN1E.js +0 -1
- package/dist/web/assets/classDiagram-4FO5ZUOK-BTNrfCfJ.js +0 -1
- package/dist/web/assets/classDiagram-v2-Q7XG4LA2-B1gib5e9.js +0 -1
- package/dist/web/assets/stateDiagram-v2-BHNVJYJU-B-pGRn7s.js +0 -1
package/README.md
CHANGED
|
@@ -29,8 +29,12 @@ npx skills add Mone-Lee/diff-review
|
|
|
29
29
|
|
|
30
30
|
- 查看当前工作区 diff、staged diff、指定 revision diff。
|
|
31
31
|
- 代码文件使用 GitHub 风格 unified diff。
|
|
32
|
-
- Markdown
|
|
32
|
+
- Markdown 文件支持 `Preview / Code diff` 切换;`Code diff` 当前只支持 side-by-side,不支持 inline。
|
|
33
33
|
- 支持文件级评论、代码行级评论、Markdown source line 评论。
|
|
34
|
+
- Markdown 评论在两种视图间会按视图能力降级展示:
|
|
35
|
+
- `Preview` 中的新评论按块级锚定;`Code diff` 中可精确到行。
|
|
36
|
+
- 从 `Code diff` 当前文本一侧创建的评论,会归并展示到对应的 Markdown 块;同一块内的多条评论目前会集中显示在块级内容底部。
|
|
37
|
+
- 对于只存在于旧版本一侧的评论,`Preview` 无法精确展示;定位这类评论时会切换到 `Code diff`。
|
|
34
38
|
- 支持 submit / replied / resolved 评论状态。
|
|
35
39
|
- 一条 thread 下可以包含多条 comment;同一锚点的新评论会追加到已有 thread。
|
|
36
40
|
- 支持通过内部 `--comment` 参数预置 agent findings / replies。
|
|
@@ -78,7 +82,7 @@ local-diff-reviewer --repo /path/to/project staged
|
|
|
78
82
|
项目 B /diff-review -> http://127.0.0.1:<空闲端口> -> 项目 B diff
|
|
79
83
|
```
|
|
80
84
|
|
|
81
|
-
页面打开后,代码 diff
|
|
85
|
+
页面打开后,代码 diff 与 Markdown 的 `Preview / Code diff` 视图都会固定为当前审查快照;工作区继续变动不会自行改写页面内容。再次执行 `local-diff-reviewer` 或 `/diff-review` 会让默认页面自动同步到新快照;使用 `--new-session` 打开的独立页面继续保留旧快照。评论线程与其创建时的 diff 快照绑定:旧线程会在评论侧栏中保留并标记为历史快照,但不会因另一份快照中恰好有相同行号而贴到错误代码上。
|
|
82
86
|
|
|
83
87
|
评论、快照、代码行之间的绑定关系及页面更新判断详见
|
|
84
88
|
[`docs/comment-snapshot-binding.md`](docs/comment-snapshot-binding.md)。
|
|
@@ -141,6 +145,26 @@ npx --yes local-diff-reviewer \
|
|
|
141
145
|
|
|
142
146
|
当 agent 收到从 UI 复制出的 `[thread:<id>]` prompt 并完成处理后,应使用 `type: "reply"` 把处理结果写回原 thread,作为 `author: "agent"` 的 comment 保留在评论流里。回复内容应简要说明已修改什么,或说明为什么没有修改。
|
|
143
147
|
|
|
148
|
+
从 UI 复制出的 prompt 示例:
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
[thread:33fdc4a2-3cfa-419f-9aa4-b1ae4f662241]
|
|
152
|
+
test.md:41
|
|
153
|
+
markdown评论
|
|
154
|
+
|
|
155
|
+
[thread:4f053318-5922-45d0-99e2-377071942422]
|
|
156
|
+
test.md:new:37
|
|
157
|
+
new行内评论
|
|
158
|
+
|
|
159
|
+
[thread:82546c3b-52b5-42be-9358-c685b2ad1693]
|
|
160
|
+
test.md:old:57
|
|
161
|
+
old行内评论
|
|
162
|
+
|
|
163
|
+
[thread:86fca351-f2c7-4d41-810c-f810fe066ca4]
|
|
164
|
+
src/core/prompt.ts
|
|
165
|
+
文件级评论
|
|
166
|
+
```
|
|
167
|
+
|
|
144
168
|
评论状态含义:
|
|
145
169
|
|
|
146
170
|
- `submit`:只有用户提交的评论,还没有 agent finding / reply。
|
package/dist/cli/start.js
CHANGED
|
@@ -722,10 +722,10 @@ function buildMarkdownBlocks(content) {
|
|
|
722
722
|
blocks.push(makeBlock("blockquote", start2, index, collected2.join("\n"), slugger));
|
|
723
723
|
continue;
|
|
724
724
|
}
|
|
725
|
-
if (
|
|
725
|
+
if (isListLine(line)) {
|
|
726
726
|
const start2 = lineNumber;
|
|
727
727
|
const collected2 = [];
|
|
728
|
-
while (index < lines.length && (lines[index]
|
|
728
|
+
while (index < lines.length && isListBlockLine(lines[index])) {
|
|
729
729
|
collected2.push(lines[index]);
|
|
730
730
|
index += 1;
|
|
731
731
|
}
|
|
@@ -744,7 +744,11 @@ function buildMarkdownBlocks(content) {
|
|
|
744
744
|
}
|
|
745
745
|
const start = lineNumber;
|
|
746
746
|
const collected = [];
|
|
747
|
-
while (index < lines.length && lines[index].trim() !== "") {
|
|
747
|
+
while (index < lines.length && lines[index].trim() !== "" && !startsNewMarkdownBlock(lines[index], lines[index + 1])) {
|
|
748
|
+
collected.push(lines[index]);
|
|
749
|
+
index += 1;
|
|
750
|
+
}
|
|
751
|
+
if (index < lines.length && lines[index].trim() !== "") {
|
|
748
752
|
collected.push(lines[index]);
|
|
749
753
|
index += 1;
|
|
750
754
|
}
|
|
@@ -752,6 +756,29 @@ function buildMarkdownBlocks(content) {
|
|
|
752
756
|
}
|
|
753
757
|
return blocks;
|
|
754
758
|
}
|
|
759
|
+
function isListLine(line) {
|
|
760
|
+
return /^\s*([-*+]|\d+\.)\s+/.test(line);
|
|
761
|
+
}
|
|
762
|
+
function isIndentedContinuationLine(line) {
|
|
763
|
+
return /^\s{2,}\S/.test(line);
|
|
764
|
+
}
|
|
765
|
+
function isTableStartLine(line, nextLine) {
|
|
766
|
+
return line.includes("|") && Boolean(nextLine) && /^\s*\|?[\s:-]+\|/.test(nextLine ?? "");
|
|
767
|
+
}
|
|
768
|
+
function startsNewMarkdownBlock(line, nextLine) {
|
|
769
|
+
if (!line.trim()) return false;
|
|
770
|
+
if (/^```/.test(line.trim())) return true;
|
|
771
|
+
if (/^#{1,6}\s+/.test(line)) return true;
|
|
772
|
+
if (/^\s*>/.test(line)) return true;
|
|
773
|
+
if (isListLine(line)) return true;
|
|
774
|
+
if (isTableStartLine(line, nextLine)) return true;
|
|
775
|
+
return false;
|
|
776
|
+
}
|
|
777
|
+
function isListBlockLine(line) {
|
|
778
|
+
if (!line.trim()) return true;
|
|
779
|
+
if (isListLine(line)) return true;
|
|
780
|
+
return isIndentedContinuationLine(line);
|
|
781
|
+
}
|
|
755
782
|
function makeBlock(type, startLine, endLine, text, slugger) {
|
|
756
783
|
const seed = `${type}-${startLine}-${text.slice(0, 80)}`;
|
|
757
784
|
return {
|
|
@@ -766,8 +793,7 @@ function makeBlock(type, startLine, endLine, text, slugger) {
|
|
|
766
793
|
// src/core/prompt.ts
|
|
767
794
|
function formatPrompt(threads) {
|
|
768
795
|
return threads.map((thread) => {
|
|
769
|
-
const
|
|
770
|
-
const location = line ? `${thread.filePath}:${line}` : thread.filePath;
|
|
796
|
+
const location = getThreadLocation(thread);
|
|
771
797
|
const [firstComment, ...replies] = thread.comments;
|
|
772
798
|
const replyText = replies.map((comment, index) => {
|
|
773
799
|
const author = comment.author === "agent" ? "Agent" : "User";
|
|
@@ -777,9 +803,10 @@ ${comment.body.trim()}`;
|
|
|
777
803
|
return [`[thread:${thread.id}]`, location, firstComment?.body.trim(), replyText].filter(Boolean).join("\n");
|
|
778
804
|
}).join("\n\n");
|
|
779
805
|
}
|
|
780
|
-
function
|
|
781
|
-
if (thread.anchor.type === "file") return
|
|
782
|
-
return thread.anchor.lineNumber
|
|
806
|
+
function getThreadLocation(thread) {
|
|
807
|
+
if (thread.anchor.type === "file") return thread.filePath;
|
|
808
|
+
if (thread.anchor.type === "diff-line") return `${thread.filePath}:${thread.anchor.side}:${thread.anchor.lineNumber}`;
|
|
809
|
+
return `${thread.filePath}:${thread.anchor.lineNumber}`;
|
|
783
810
|
}
|
|
784
811
|
|
|
785
812
|
// src/server/index.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./path-BJQEcSo7.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-
|
|
1
|
+
import{n as e,t}from"./path-BJQEcSo7.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-sVycw1Bs.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|