pilotswarm 0.5.30 → 0.5.32
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/package.json +2 -2
- package/tui/src/node-sdk-transport.js +4 -0
- package/ui/core/src/controller.js +102 -30
- package/ui/core/src/reducer.js +50 -1
- package/ui/core/src/selectors.js +68 -22
- package/ui/core/src/state.js +2 -0
- package/ui/core/src/themes/doom.js +106 -0
- package/ui/core/src/themes/helpers.js +7 -1
- package/ui/core/src/themes/index.js +4 -0
- package/ui/core/src/themes/winamp.js +104 -0
- package/ui/react/src/components.js +25 -0
- package/ui/react/src/web-app.js +320 -51
- package/web/api/ws.js +7 -0
- package/web/authz.js +14 -81
- package/web/dist/assets/{abnfDiagram-VRR7QNED-Cimc0f-u.js → abnfDiagram-VRR7QNED-mXFQ4a3c.js} +1 -1
- package/web/dist/assets/{arc-D8-_Dx5J.js → arc-BPuuvbge.js} +1 -1
- package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-lzMAuQHJ.js → architectureDiagram-ZJ3FMSHR-Dt4uUYIe.js} +1 -1
- package/web/dist/assets/{blockDiagram-677ZJIJ3-Dp2CWjVS.js → blockDiagram-677ZJIJ3-Ax8Q22vV.js} +1 -1
- package/web/dist/assets/{c4Diagram-LMCZKHZV-DF93UkOy.js → c4Diagram-LMCZKHZV-CPiukyHt.js} +1 -1
- package/web/dist/assets/channel-BCzDctYg.js +1 -0
- package/web/dist/assets/{chunk-2Q5K7J3B-pbsQRM-F.js → chunk-2Q5K7J3B-VJLqCZJX.js} +1 -1
- package/web/dist/assets/{chunk-32BRIVSS-B_f-gG1O.js → chunk-32BRIVSS-DqOshxhf.js} +1 -1
- package/web/dist/assets/{chunk-5VM5RSS4-gqlpJDmt.js → chunk-5VM5RSS4-KPqV21jV.js} +1 -1
- package/web/dist/assets/{chunk-EX3LRPZG-Cms7hPmM.js → chunk-EX3LRPZG-DfhiCVl_.js} +1 -1
- package/web/dist/assets/{chunk-JWPE2WC7-Boq5PtPI.js → chunk-JWPE2WC7-H6khJPuW.js} +1 -1
- package/web/dist/assets/{chunk-MOJQB5TN-DVn9i8zt.js → chunk-MOJQB5TN-BKMAzQxj.js} +1 -1
- package/web/dist/assets/{chunk-RYQCIY6F-a1vKs3UX.js → chunk-RYQCIY6F-DNXRTxtj.js} +1 -1
- package/web/dist/assets/{chunk-V7JOEXUC-i60p5fHd.js → chunk-V7JOEXUC-B56PM6Gv.js} +1 -1
- package/web/dist/assets/{chunk-VR4S4FIN-a8p0o-8B.js → chunk-VR4S4FIN-Boi3hGkB.js} +1 -1
- package/web/dist/assets/{chunk-XXDRQBXY-BwP1yBKd.js → chunk-XXDRQBXY-DmJyn890.js} +1 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-ChqjVZil.js +1 -0
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-ChqjVZil.js +1 -0
- package/web/dist/assets/{cose-bilkent-JH36ORCC-HW6kGgze.js → cose-bilkent-JH36ORCC-BRdFlFWt.js} +1 -1
- package/web/dist/assets/{cynefin-VYW2F7L2-YUFMn-vE.js → cynefin-VYW2F7L2-DqE-xib2.js} +1 -1
- package/web/dist/assets/{cynefinDiagram-TSTJHNR4-Brdy17i4.js → cynefinDiagram-TSTJHNR4-D-QBZjIL.js} +1 -1
- package/web/dist/assets/{dagre-VKFMJZFB-CAiSJJj-.js → dagre-VKFMJZFB-DYu9oQV6.js} +1 -1
- package/web/dist/assets/{diagram-FQU43EPY-B63Cqe0J.js → diagram-FQU43EPY-DOwYccCg.js} +1 -1
- package/web/dist/assets/{diagram-G47NLZAW-ByktrDJ2.js → diagram-G47NLZAW-DTSEmrPr.js} +1 -1
- package/web/dist/assets/{diagram-NH7WQ7WH-BLSfRMoE.js → diagram-NH7WQ7WH-OqbzzquA.js} +1 -1
- package/web/dist/assets/{diagram-OA4YK3LP-DNVu-zpk.js → diagram-OA4YK3LP-BMVG6A8I.js} +1 -1
- package/web/dist/assets/{diagram-WEI45ONY-CNf4Sz-I.js → diagram-WEI45ONY-Rn2Q5xaz.js} +1 -1
- package/web/dist/assets/{ebnfDiagram-CCIWWBDH-9CT3ergx.js → ebnfDiagram-CCIWWBDH-aL32_v5y.js} +1 -1
- package/web/dist/assets/{erDiagram-Q63AITRT-BPJHAMgl.js → erDiagram-Q63AITRT-DKCpyczx.js} +1 -1
- package/web/dist/assets/{flowDiagram-23GEKE2U-BVtpr6Iu.js → flowDiagram-23GEKE2U-CrZTPgR_.js} +1 -1
- package/web/dist/assets/{ganttDiagram-NO4QXBWP-BTHnv9sV.js → ganttDiagram-NO4QXBWP-DnSE1OtC.js} +1 -1
- package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-BfmtqbL5.js → gitGraphDiagram-IHSO6WYX-C5SeYPUR.js} +1 -1
- package/web/dist/assets/{index-Bmb8qK39.js → index-B-TEKrRB.js} +6 -6
- package/web/dist/assets/index-D2B5bzSN.css +1 -0
- package/web/dist/assets/{infoDiagram-FWYZ7A6U-kU4i4HRu.js → infoDiagram-FWYZ7A6U-DDnJZp0X.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-Ch7i-E8O.js → ishikawaDiagram-FXEZZL3T-ewhzfFkq.js} +1 -1
- package/web/dist/assets/{journeyDiagram-5HDEW3XC-CPQxp0ps.js → journeyDiagram-5HDEW3XC-T0iWWkLM.js} +1 -1
- package/web/dist/assets/{kanban-definition-HUTT4EX6-BBgMVqoJ.js → kanban-definition-HUTT4EX6-D1MFQZjb.js} +1 -1
- package/web/dist/assets/{linear-rwksvzXJ.js → linear-BKfPK9wE.js} +1 -1
- package/web/dist/assets/{mermaid.core-o7PszRUc.js → mermaid.core-CyzD7dTc.js} +4 -4
- package/web/dist/assets/{mindmap-definition-LN4V7U3C-wgOTdzlq.js → mindmap-definition-LN4V7U3C-CWXtcTlP.js} +1 -1
- package/web/dist/assets/{papaparse.min-BRXtjEI6.js → papaparse.min-DLUoV5k5.js} +1 -1
- package/web/dist/assets/{pegDiagram-2B236MQR-BkhQqqTm.js → pegDiagram-2B236MQR-BFjZun-r.js} +1 -1
- package/web/dist/assets/{pieDiagram-ENE6RG2P-CcMnvxUz.js → pieDiagram-ENE6RG2P-DMDtW4g7.js} +1 -1
- package/web/dist/assets/pilotswarm-DA0u7Cq_.js +99 -0
- package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-_KD1QeEr.js → quadrantDiagram-ABIIQ3AL-CAwPVaYL.js} +1 -1
- package/web/dist/assets/{railroadDiagram-RFXS5EU6-CqI0olIe.js → railroadDiagram-RFXS5EU6-Co102PkQ.js} +1 -1
- package/web/dist/assets/{requirementDiagram-TGXJPOKE-1JxRwusF.js → requirementDiagram-TGXJPOKE-D19VlRSl.js} +1 -1
- package/web/dist/assets/{sankeyDiagram-HTMAVEWB-9IpFoKzi.js → sankeyDiagram-HTMAVEWB-Sd_a3ukL.js} +1 -1
- package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-teyObSQ9.js → sequenceDiagram-DBY2YBRQ-CojDRK1c.js} +1 -1
- package/web/dist/assets/{sizeCapture-X5ZJPWSS-DVhU2J_6.js → sizeCapture-X5ZJPWSS-XqXcxnDo.js} +1 -1
- package/web/dist/assets/{stateDiagram-2N3HPSRC-DHPoWpIQ.js → stateDiagram-2N3HPSRC-BcN_w699.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BV_w1D3C.js +1 -0
- package/web/dist/assets/{swimlanes-5IMT3BWC-BxTtDQoB.js → swimlanes-5IMT3BWC-BcO6ai_I.js} +2 -2
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-BnYdP0qP.js +8 -0
- package/web/dist/assets/{timeline-definition-FHXFAJF6-D0wXZx-4.js → timeline-definition-FHXFAJF6-DOPfYxUq.js} +1 -1
- package/web/dist/assets/{vennDiagram-L72KCM5P-BSFyI3iV.js → vennDiagram-L72KCM5P-BSKLkEOC.js} +1 -1
- package/web/dist/assets/{wardleyDiagram-EHGQE667-BN-S7hh0.js → wardleyDiagram-EHGQE667-BdcYAVw2.js} +1 -1
- package/web/dist/assets/{xychartDiagram-FW5EYKEG-nDNuPs7o.js → xychartDiagram-FW5EYKEG-C6EJT4jB.js} +1 -1
- package/web/dist/index.html +3 -3
- package/web/runtime.js +55 -0
- package/web/server.js +7 -0
- package/web/dist/assets/channel-OwWeiCox.js +0 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-CDaP7nuC.js +0 -1
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-CDaP7nuC.js +0 -1
- package/web/dist/assets/index-B37T1c2s.css +0 -1
- package/web/dist/assets/pilotswarm-DYXtzuUN.js +0 -99
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-DJjZWYLS.js +0 -1
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-CV12vDcK.js +0 -8
package/web/authz.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
OPERATIONS,
|
|
3
|
+
evaluateSessionAccess,
|
|
4
|
+
normalizeVisibility,
|
|
5
|
+
relationFor,
|
|
6
|
+
SESSION_VISIBILITY_VALUES,
|
|
7
|
+
} from "pilotswarm-sdk/api";
|
|
8
|
+
|
|
9
|
+
// The session-tree predicate now lives in the SDK so the WORKER evaluates the
|
|
10
|
+
// same rules for agent tools (Agent Manager proposal §4). Re-exported here so
|
|
11
|
+
// every existing import of this module keeps working unchanged.
|
|
12
|
+
export { evaluateSessionAccess, normalizeVisibility, relationFor };
|
|
2
13
|
|
|
3
14
|
/**
|
|
4
15
|
* Ownership/visibility authorization for the portal runtime
|
|
@@ -20,24 +31,18 @@ function parseBooleanEnv(value, defaultValue) {
|
|
|
20
31
|
return ["1", "true", "yes", "on"].includes(String(value).trim().toLowerCase());
|
|
21
32
|
}
|
|
22
33
|
|
|
23
|
-
const VISIBILITY_VALUES = new Set(["private", "shared_read", "shared_write"]);
|
|
24
|
-
|
|
25
34
|
export function loadAuthzConfig(env = process.env) {
|
|
26
35
|
const rawDefault = String(env.SESSIONS_DEFAULT_VISIBILITY || "").trim().toLowerCase();
|
|
36
|
+
const visibilityValues = new Set(SESSION_VISIBILITY_VALUES);
|
|
27
37
|
return {
|
|
28
38
|
enforce: parseBooleanEnv(env.AUTHZ_ENFORCE_OWNERSHIP, false),
|
|
29
|
-
defaultVisibility:
|
|
39
|
+
defaultVisibility: visibilityValues.has(rawDefault) ? rawDefault : "private",
|
|
30
40
|
// "read" (default): system sessions are metadata/content-visible to
|
|
31
41
|
// every admitted user, interaction stays admin-only. "admin": hidden.
|
|
32
42
|
systemVisibility: String(env.SESSIONS_SYSTEM_VISIBILITY || "").trim().toLowerCase() === "admin" ? "admin" : "read",
|
|
33
43
|
};
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
export function normalizeVisibility(value, fallback) {
|
|
37
|
-
const normalized = String(value || "").trim().toLowerCase();
|
|
38
|
-
return VISIBILITY_VALUES.has(normalized) ? normalized : fallback;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
46
|
// Every dispatchable method now has an OPERATIONS row — copyArtifact,
|
|
42
47
|
// setArtifactPinned and readArtifactBase64 were the last /api/rpc-only
|
|
43
48
|
// stragglers (same access classes, now declared in the table). The legacy
|
|
@@ -62,75 +67,3 @@ function ownerLabel(snapshot) {
|
|
|
62
67
|
return snapshot?.owner?.displayName || snapshot?.owner?.email || snapshot?.owner?.subject || "another user";
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
/**
|
|
66
|
-
* The caller's relation to a session tree, recorded on message payloads and
|
|
67
|
-
* shown to the agent in multi-writer sessions.
|
|
68
|
-
*/
|
|
69
|
-
export function relationFor(snapshot, { isAdmin } = {}) {
|
|
70
|
-
if (snapshot?.viewerIsOwner) return "owner";
|
|
71
|
-
if (isAdmin) return "admin";
|
|
72
|
-
return "collaborator";
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Evaluate one session-scoped access class against an access snapshot.
|
|
77
|
-
*
|
|
78
|
-
* @param accessClass "session:read" | "session:write" | "session:manage" | "session:destroy" | "session:share"
|
|
79
|
-
* @param snapshot result of getSessionAccess (null = missing/deleted session)
|
|
80
|
-
* @param opts { isAdmin, systemReadable }
|
|
81
|
-
* @returns {{ allowed: boolean, notFound?: boolean, reason?: string, breakGlass?: boolean }}
|
|
82
|
-
*/
|
|
83
|
-
export function evaluateSessionAccess(accessClass, snapshot, { isAdmin = false, systemReadable = true } = {}) {
|
|
84
|
-
if (!snapshot) {
|
|
85
|
-
// Missing/deleted session: let the underlying operation produce its
|
|
86
|
-
// own not-found; nothing to protect.
|
|
87
|
-
return { allowed: true };
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (isAdmin) {
|
|
91
|
-
// Admins pass everything; flag break-glass when this would have been
|
|
92
|
-
// invisible to a plain user in the same position.
|
|
93
|
-
const wouldBeInvisible = !snapshot.viewerIsOwner
|
|
94
|
-
&& !snapshot.isSystem
|
|
95
|
-
&& snapshot.visibility === "private"
|
|
96
|
-
&& !snapshot.viewerShareAccess;
|
|
97
|
-
return { allowed: true, breakGlass: wouldBeInvisible };
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const isRead = accessClass === "session:read";
|
|
101
|
-
|
|
102
|
-
if (snapshot.isSystem) {
|
|
103
|
-
// When system sessions are hidden from users, every class 404s so a
|
|
104
|
-
// write attempt can't confirm the session exists (review LOW-2).
|
|
105
|
-
if (!systemReadable) return { allowed: false, notFound: true };
|
|
106
|
-
if (isRead) return { allowed: true };
|
|
107
|
-
return { allowed: false, reason: "System sessions are managed by administrators." };
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const canRead = snapshot.viewerIsOwner
|
|
111
|
-
|| snapshot.visibility === "shared_read"
|
|
112
|
-
|| snapshot.visibility === "shared_write"
|
|
113
|
-
|| Boolean(snapshot.viewerShareAccess);
|
|
114
|
-
|
|
115
|
-
if (isRead) {
|
|
116
|
-
return canRead ? { allowed: true } : { allowed: false, notFound: true };
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Anything beyond read on an unreadable session is also a 404 — the
|
|
120
|
-
// caller must not learn the session exists from the error shape.
|
|
121
|
-
if (!canRead) return { allowed: false, notFound: true };
|
|
122
|
-
|
|
123
|
-
if (accessClass === "session:write") {
|
|
124
|
-
const canWrite = snapshot.viewerIsOwner
|
|
125
|
-
|| snapshot.visibility === "shared_write"
|
|
126
|
-
|| snapshot.viewerShareAccess === "write";
|
|
127
|
-
return canWrite
|
|
128
|
-
? { allowed: true }
|
|
129
|
-
: { allowed: false, reason: `You have read access to this session; write access is required. Ask ${ownerLabel(snapshot)} for write access.` };
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// manage / destroy / share: owner only (admin handled above).
|
|
133
|
-
return snapshot.viewerIsOwner
|
|
134
|
-
? { allowed: true }
|
|
135
|
-
: { allowed: false, reason: `Only the session owner (${ownerLabel(snapshot)}) or an admin can do this.` };
|
|
136
|
-
}
|
package/web/dist/assets/{abnfDiagram-VRR7QNED-Cimc0f-u.js → abnfDiagram-VRR7QNED-mXFQ4a3c.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-BKMAzQxj.js";import{p as f}from"./chunk-JWPE2WC7-H6khJPuW.js";import{_ as n,l as o}from"./mermaid.core-CyzD7dTc.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-DqE-xib2.js";import"./pilotswarm-DA0u7Cq_.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{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-
|
|
1
|
+
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-CyzD7dTc.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,z,a){var O=I-l,i=D-h,n=z-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 U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(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)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=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,B=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(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(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=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,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(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,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[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|