@imenam/mcp-documentor 1.0.54 → 1.0.56

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.
Files changed (63) hide show
  1. package/README.md +1 -0
  2. package/dist/shared/read-only.d.ts +4 -0
  3. package/dist/shared/read-only.js +11 -0
  4. package/dist/src/core/code-ref-resolver.d.ts +14 -0
  5. package/dist/src/core/code-ref-resolver.js +118 -0
  6. package/dist/src/gui-worker.js +18 -0
  7. package/dist/src/index.js +368 -333
  8. package/dist/src/tools/create-doc.js +8 -26
  9. package/dist/src/tools/patch-doc.js +4 -1
  10. package/dist/src/tools/update-doc.js +15 -27
  11. package/dist/src/version.d.ts +1 -1
  12. package/dist/src/version.js +1 -1
  13. package/gui/dist/assets/{arc-CCHCB-wD.js → arc-hl-9jVa3.js} +1 -1
  14. package/gui/dist/assets/{architectureDiagram-3BPJPVTR-CY9HTuIq.js → architectureDiagram-3BPJPVTR-Cv0e-QlI.js} +1 -1
  15. package/gui/dist/assets/{blockDiagram-GPEHLZMM-BOVxufIP.js → blockDiagram-GPEHLZMM-DmqN7ioQ.js} +1 -1
  16. package/gui/dist/assets/{c4Diagram-AAUBKEIU-D4gw0Vvh.js → c4Diagram-AAUBKEIU-CCmx3y3D.js} +1 -1
  17. package/gui/dist/assets/channel-Be8bJJxH.js +1 -0
  18. package/gui/dist/assets/{chunk-2J33WTMH-D9MZap0G.js → chunk-2J33WTMH-DkiBzADG.js} +1 -1
  19. package/gui/dist/assets/{chunk-4BX2VUAB-DZp7afnZ.js → chunk-4BX2VUAB-DNbC5-R6.js} +1 -1
  20. package/gui/dist/assets/{chunk-55IACEB6--z45PUIk.js → chunk-55IACEB6-BDo8xvgP.js} +1 -1
  21. package/gui/dist/assets/{chunk-727SXJPM-BpzsGHwS.js → chunk-727SXJPM-BXbVbdMj.js} +1 -1
  22. package/gui/dist/assets/{chunk-AQP2D5EJ-BHrif5nf.js → chunk-AQP2D5EJ-BYle6aB3.js} +1 -1
  23. package/gui/dist/assets/{chunk-FMBD7UC4-BJnvL7mL.js → chunk-FMBD7UC4-BdIrLn1p.js} +1 -1
  24. package/gui/dist/assets/{chunk-ND2GUHAM-B30rNlK9.js → chunk-ND2GUHAM-BkjdsZf2.js} +1 -1
  25. package/gui/dist/assets/{chunk-QZHKN3VN-C30k0U0w.js → chunk-QZHKN3VN-pwVXVLDb.js} +1 -1
  26. package/gui/dist/assets/classDiagram-4FO5ZUOK-DxtDCVWj.js +1 -0
  27. package/gui/dist/assets/classDiagram-v2-Q7XG4LA2-DxtDCVWj.js +1 -0
  28. package/gui/dist/assets/{cose-bilkent-S5V4N54A-D_ZPLp5P.js → cose-bilkent-S5V4N54A-COfRIcXU.js} +1 -1
  29. package/gui/dist/assets/{dagre-BM42HDAG-2XyC0YBj.js → dagre-BM42HDAG-BnD4nd21.js} +1 -1
  30. package/gui/dist/assets/{diagram-2AECGRRQ-fNv6yQF_.js → diagram-2AECGRRQ-E9oTEn4C.js} +1 -1
  31. package/gui/dist/assets/{diagram-5GNKFQAL-BUlxr0NW.js → diagram-5GNKFQAL-oSJwag8_.js} +1 -1
  32. package/gui/dist/assets/{diagram-KO2AKTUF-CtusNGfh.js → diagram-KO2AKTUF-B5ycmD2n.js} +1 -1
  33. package/gui/dist/assets/{diagram-LMA3HP47-Dkq3FOEe.js → diagram-LMA3HP47-DUo9wv_e.js} +1 -1
  34. package/gui/dist/assets/{diagram-OG6HWLK6-rjhcMJNr.js → diagram-OG6HWLK6-C-0r9-AW.js} +1 -1
  35. package/gui/dist/assets/{erDiagram-TEJ5UH35-Bqmogkqv.js → erDiagram-TEJ5UH35-C8w0nNRI.js} +1 -1
  36. package/gui/dist/assets/{flowDiagram-I6XJVG4X-BcYYq0Bh.js → flowDiagram-I6XJVG4X-CPZzt4CO.js} +1 -1
  37. package/gui/dist/assets/{ganttDiagram-6RSMTGT7-BGmJltMK.js → ganttDiagram-6RSMTGT7-B0TRw-bC.js} +1 -1
  38. package/gui/dist/assets/{gitGraphDiagram-PVQCEYII-JIYjcd0T.js → gitGraphDiagram-PVQCEYII-CxuhZqVM.js} +1 -1
  39. package/gui/dist/assets/{index-BwW5YDD1.js → index-84YuA9I8.js} +75 -75
  40. package/gui/dist/assets/{infoDiagram-5YYISTIA-CJKrfqe4.js → infoDiagram-5YYISTIA-qLgkATyo.js} +1 -1
  41. package/gui/dist/assets/{ishikawaDiagram-YF4QCWOH-Bu4wBvlL.js → ishikawaDiagram-YF4QCWOH-Bv8EcedY.js} +1 -1
  42. package/gui/dist/assets/{journeyDiagram-JHISSGLW-B2CtojGV.js → journeyDiagram-JHISSGLW-CO1wpi9j.js} +1 -1
  43. package/gui/dist/assets/{kanban-definition-UN3LZRKU-CKbuCL_h.js → kanban-definition-UN3LZRKU-INpnb6ij.js} +1 -1
  44. package/gui/dist/assets/{linear-BdHWi7h7.js → linear-yh3g20kh.js} +1 -1
  45. package/gui/dist/assets/{mindmap-definition-RKZ34NQL-Dbf71zzi.js → mindmap-definition-RKZ34NQL-BzSJP5cs.js} +1 -1
  46. package/gui/dist/assets/{pieDiagram-4H26LBE5-P8RSqdBA.js → pieDiagram-4H26LBE5-DH9i355H.js} +1 -1
  47. package/gui/dist/assets/{quadrantDiagram-W4KKPZXB-mVsJmQan.js → quadrantDiagram-W4KKPZXB-CNmW8Mck.js} +1 -1
  48. package/gui/dist/assets/{requirementDiagram-4Y6WPE33-BfHNLWFb.js → requirementDiagram-4Y6WPE33-DIxitFst.js} +1 -1
  49. package/gui/dist/assets/{sankeyDiagram-5OEKKPKP-CF28kVcG.js → sankeyDiagram-5OEKKPKP-BI4KHeTZ.js} +1 -1
  50. package/gui/dist/assets/{sequenceDiagram-3UESZ5HK-Bvs2r29Y.js → sequenceDiagram-3UESZ5HK-CbMtHFNi.js} +1 -1
  51. package/gui/dist/assets/{stateDiagram-AJRCARHV-Cbg-3kIx.js → stateDiagram-AJRCARHV-DWXkOhjJ.js} +1 -1
  52. package/gui/dist/assets/stateDiagram-v2-BHNVJYJU-Dv9pwdh3.js +1 -0
  53. package/gui/dist/assets/{timeline-definition-PNZ67QCA-ChYm8r8v.js → timeline-definition-PNZ67QCA-DGsBQPbg.js} +1 -1
  54. package/gui/dist/assets/{vennDiagram-CIIHVFJN-CPcYOWG6.js → vennDiagram-CIIHVFJN-Dw5U_iYl.js} +1 -1
  55. package/gui/dist/assets/{wardley-L42UT6IY-KWdiWaFE.js → wardley-L42UT6IY-DGOHyaD_.js} +1 -1
  56. package/gui/dist/assets/{wardleyDiagram-YWT4CUSO-DAgBnDcZ.js → wardleyDiagram-YWT4CUSO-DpOyo37L.js} +1 -1
  57. package/gui/dist/assets/{xychartDiagram-2RQKCTM6-DwOk_srp.js → xychartDiagram-2RQKCTM6-BM5vPGiE.js} +1 -1
  58. package/gui/dist/index.html +1 -1
  59. package/package.json +1 -1
  60. package/gui/dist/assets/channel-V0oafPxe.js +0 -1
  61. package/gui/dist/assets/classDiagram-4FO5ZUOK-BZlXnsXv.js +0 -1
  62. package/gui/dist/assets/classDiagram-v2-Q7XG4LA2-BZlXnsXv.js +0 -1
  63. package/gui/dist/assets/stateDiagram-v2-BHNVJYJU-Cg1sS-MT.js +0 -1
@@ -1,9 +1,7 @@
1
1
  import fs from "fs";
2
- import path from "path";
3
2
  import { CreateDocArgsSchema } from "../../shared/schemas/doc.schema.js";
4
- import { computeFileHash } from "./check-freshness.js";
5
- import { snapshotSection } from "../core/section-tracker.js";
6
3
  import { persistDraft } from "../core/draft-store.js";
4
+ import { resolveCodeRefs, snapshotTrackedFiles } from "../core/code-ref-resolver.js";
7
5
  export function slugify(title) {
8
6
  return title
9
7
  .normalize("NFD")
@@ -12,34 +10,14 @@ export function slugify(title) {
12
10
  .replace(/[^a-z0-9]+/g, "-")
13
11
  .replace(/^-|-$/g, "");
14
12
  }
15
- function snapshotTrackedFiles(inputs) {
16
- const tracked = [];
17
- for (const input of inputs) {
18
- const fp = typeof input === "string" ? input : input.path;
19
- const absolutePath = path.resolve(process.cwd(), fp);
20
- const mtime = fs.existsSync(absolutePath)
21
- ? fs.statSync(absolutePath).mtime.toISOString()
22
- : new Date().toISOString();
23
- if (typeof input !== "string" && input.lines.length > 0 && fs.existsSync(absolutePath)) {
24
- const sections = input.lines
25
- .filter(({ start, end }) => start <= end)
26
- .map(({ start, end }) => snapshotSection(absolutePath, start, end));
27
- tracked.push({ path: absolutePath, lastModifiedAt: mtime, sections });
28
- }
29
- else {
30
- const contentHash = fs.existsSync(absolutePath) ? computeFileHash(absolutePath) : undefined;
31
- tracked.push({ path: absolutePath, lastModifiedAt: mtime, ...(contentHash !== undefined && { contentHash }) });
32
- }
33
- }
34
- return tracked;
35
- }
36
13
  export async function createDoc(storageEngine, embeddingEngine, args) {
37
14
  try {
38
15
  const validated = CreateDocArgsSchema.parse(args);
39
16
  const { project } = (args ?? {});
40
- const content = validated.content_file
17
+ const rawContent = validated.content_file
41
18
  ? fs.readFileSync(validated.content_file, "utf-8")
42
19
  : validated.content;
20
+ const { content, additionalTrackedFiles } = resolveCodeRefs(rawContent);
43
21
  const slug = slugify(validated.title);
44
22
  const id = validated.folder ? `${validated.folder}/${slug}` : slug;
45
23
  const now = new Date().toISOString();
@@ -53,7 +31,11 @@ export async function createDoc(storageEngine, embeddingEngine, args) {
53
31
  if (project) {
54
32
  storageEngine.ensureProject(project);
55
33
  }
56
- const trackedFiles = validated.tracked_files ? snapshotTrackedFiles(validated.tracked_files) : [];
34
+ const allTrackedInputs = [
35
+ ...(validated.tracked_files ?? []),
36
+ ...additionalTrackedFiles,
37
+ ];
38
+ const trackedFiles = allTrackedInputs.length > 0 ? snapshotTrackedFiles(allTrackedInputs) : [];
57
39
  const folder = validated.folder;
58
40
  const doc = {
59
41
  id,
@@ -1,6 +1,7 @@
1
1
  import fs from "fs";
2
2
  import { PatchDocArgsSchema } from "../../shared/schemas/doc.schema.js";
3
3
  import { persistDraft } from "../core/draft-store.js";
4
+ import { resolveCodeRefs, mergeTrackedFiles } from "../core/code-ref-resolver.js";
4
5
  export async function patchDoc(storageEngine, embeddingEngine, args) {
5
6
  try {
6
7
  const validated = PatchDocArgsSchema.parse(args);
@@ -12,9 +13,10 @@ export async function patchDoc(storageEngine, embeddingEngine, args) {
12
13
  const search = validated.search_file
13
14
  ? fs.readFileSync(validated.search_file, "utf-8")
14
15
  : validated.search;
15
- const replacement = validated.replacement_file
16
+ const rawReplacement = validated.replacement_file
16
17
  ? fs.readFileSync(validated.replacement_file, "utf-8")
17
18
  : validated.replacement;
19
+ const { content: replacement, additionalTrackedFiles } = resolveCodeRefs(rawReplacement);
18
20
  if (!doc.content.includes(search)) {
19
21
  const preview = doc.content.slice(0, 300).replace(/\n/g, "↵");
20
22
  return {
@@ -26,6 +28,7 @@ export async function patchDoc(storageEngine, embeddingEngine, args) {
26
28
  };
27
29
  }
28
30
  doc.content = doc.content.replace(search, replacement);
31
+ doc.tracked_files = mergeTrackedFiles(doc.tracked_files, additionalTrackedFiles);
29
32
  doc.updatedAt = new Date().toISOString();
30
33
  await storageEngine.saveDoc(doc, resolvedProject, "patch");
31
34
  if (embeddingEngine.isConfigured()) {
@@ -1,30 +1,7 @@
1
1
  import fs from "fs";
2
- import path from "path";
3
2
  import { UpdateDocArgsSchema } from "../../shared/schemas/doc.schema.js";
4
- import { computeFileHash } from "./check-freshness.js";
5
- import { snapshotSection } from "../core/section-tracker.js";
6
3
  import { persistDraft } from "../core/draft-store.js";
7
- function snapshotTrackedFiles(inputs) {
8
- const tracked = [];
9
- for (const input of inputs) {
10
- const fp = typeof input === "string" ? input : input.path;
11
- const absolutePath = path.resolve(process.cwd(), fp);
12
- const mtime = fs.existsSync(absolutePath)
13
- ? fs.statSync(absolutePath).mtime.toISOString()
14
- : new Date().toISOString();
15
- if (typeof input !== "string" && input.lines.length > 0 && fs.existsSync(absolutePath)) {
16
- const sections = input.lines
17
- .filter(({ start, end }) => start <= end)
18
- .map(({ start, end }) => snapshotSection(absolutePath, start, end));
19
- tracked.push({ path: absolutePath, lastModifiedAt: mtime, sections });
20
- }
21
- else {
22
- const contentHash = fs.existsSync(absolutePath) ? computeFileHash(absolutePath) : undefined;
23
- tracked.push({ path: absolutePath, lastModifiedAt: mtime, ...(contentHash !== undefined && { contentHash }) });
24
- }
25
- }
26
- return tracked;
27
- }
4
+ import { resolveCodeRefs, snapshotTrackedFiles, mergeTrackedFiles } from "../core/code-ref-resolver.js";
28
5
  export async function updateDoc(storageEngine, embeddingEngine, args) {
29
6
  try {
30
7
  const validated = UpdateDocArgsSchema.parse(args);
@@ -36,14 +13,25 @@ export async function updateDoc(storageEngine, embeddingEngine, args) {
36
13
  if (validated.title !== undefined) {
37
14
  doc.title = validated.title;
38
15
  }
16
+ let additionalTrackedFiles = [];
39
17
  if (validated.content_file !== undefined) {
40
- doc.content = fs.readFileSync(validated.content_file, "utf-8");
18
+ const { content, additionalTrackedFiles: refs } = resolveCodeRefs(fs.readFileSync(validated.content_file, "utf-8"));
19
+ doc.content = content;
20
+ additionalTrackedFiles = refs;
41
21
  }
42
22
  else if (validated.content !== undefined) {
43
- doc.content = validated.content;
23
+ const { content, additionalTrackedFiles: refs } = resolveCodeRefs(validated.content);
24
+ doc.content = content;
25
+ additionalTrackedFiles = refs;
44
26
  }
45
27
  if (validated.tracked_files !== undefined) {
46
- doc.tracked_files = snapshotTrackedFiles(validated.tracked_files);
28
+ doc.tracked_files = snapshotTrackedFiles([
29
+ ...validated.tracked_files,
30
+ ...additionalTrackedFiles,
31
+ ]);
32
+ }
33
+ else {
34
+ doc.tracked_files = mergeTrackedFiles(doc.tracked_files, additionalTrackedFiles);
47
35
  }
48
36
  if (validated.tags !== undefined) {
49
37
  doc.tags = validated.tags;
@@ -1 +1 @@
1
- export declare const APP_VERSION = "1.0.54";
1
+ export declare const APP_VERSION = "1.0.56";
@@ -1,2 +1,2 @@
1
1
  // Auto-generated version file - do not edit manually
2
- export const APP_VERSION = '1.0.54';
2
+ export const APP_VERSION = '1.0.56';
@@ -1 +1 @@
1
- import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-BwW5YDD1.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(fn(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)-an,c=A.apply(this,arguments)-an,F=un(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=_(un(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<rn)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(on((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-rn/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};
1
+ import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-84YuA9I8.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(fn(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)-an,c=A.apply(this,arguments)-an,F=un(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=_(un(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<rn)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(on((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-rn/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};