@bytechain.cn/colamd 1.5.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/.github/workflows/release.yml +66 -0
- package/.trae/documents/fix-mermaid-colors-and-sankey.md +50 -0
- package/CLAUDE.md +87 -0
- package/LICENSE +21 -0
- package/README.md +540 -0
- package/README_CN.md +543 -0
- package/demo.md +486 -0
- package/dist/main/index.js +735 -0
- package/dist/preload/index.js +71 -0
- package/dist/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/renderer/assets/arc-tTbbM8LO.js +131 -0
- package/dist/renderer/assets/architectureDiagram-3BPJPVTR-CEgYow6c.js +8720 -0
- package/dist/renderer/assets/blockDiagram-GPEHLZMM-LHyVtPwW.js +3825 -0
- package/dist/renderer/assets/c4Diagram-AAUBKEIU-C1P1eJrf.js +2482 -0
- package/dist/renderer/assets/channel-upve91Tq.js +7 -0
- package/dist/renderer/assets/chunk-2J33WTMH-lag2vhq9.js +24 -0
- package/dist/renderer/assets/chunk-4BX2VUAB-BXJ8Ggh-.js +16 -0
- package/dist/renderer/assets/chunk-55IACEB6-CiBpxRa1.js +13 -0
- package/dist/renderer/assets/chunk-727SXJPM-ODeKQFXC.js +2016 -0
- package/dist/renderer/assets/chunk-AQP2D5EJ-BK7xJolB.js +1953 -0
- package/dist/renderer/assets/chunk-FMBD7UC4-BxpCZPtz.js +19 -0
- package/dist/renderer/assets/chunk-ND2GUHAM-CqqaU9Ue.js +116 -0
- package/dist/renderer/assets/chunk-QZHKN3VN-Biq_K124.js +19 -0
- package/dist/renderer/assets/classDiagram-4FO5ZUOK-Cq95X99o.js +23 -0
- package/dist/renderer/assets/classDiagram-v2-Q7XG4LA2-Cq95X99o.js +23 -0
- package/dist/renderer/assets/cose-bilkent-S5V4N54A-XasiD0bu.js +4942 -0
- package/dist/renderer/assets/cytoscape.esm-CpHeHM5e.js +30269 -0
- package/dist/renderer/assets/dagre-BM42HDAG-Nq84Gfx4.js +705 -0
- package/dist/renderer/assets/defaultLocale-B2RvLBDe.js +206 -0
- package/dist/renderer/assets/diagram-2AECGRRQ-DwuB1GWt.js +301 -0
- package/dist/renderer/assets/diagram-5GNKFQAL-C2tgeI1h.js +169 -0
- package/dist/renderer/assets/diagram-KO2AKTUF-D5KzjNBc.js +632 -0
- package/dist/renderer/assets/diagram-LMA3HP47-C12xHS1c.js +212 -0
- package/dist/renderer/assets/diagram-OG6HWLK6-CnxI9oEa.js +851 -0
- package/dist/renderer/assets/erDiagram-TEJ5UH35-D_uPaKwn.js +1227 -0
- package/dist/renderer/assets/flowDiagram-I6XJVG4X-B6q_1-tE.js +2332 -0
- package/dist/renderer/assets/ganttDiagram-6RSMTGT7-CFo7ifF9.js +3720 -0
- package/dist/renderer/assets/gitGraphDiagram-PVQCEYII-WSexHTnq.js +1373 -0
- package/dist/renderer/assets/graph-DyX_9f6d.js +1988 -0
- package/dist/renderer/assets/index-DW7LS8C1.js +72292 -0
- package/dist/renderer/assets/index-dyHEFYvY.css +2184 -0
- package/dist/renderer/assets/infoDiagram-5YYISTIA-DaeJdLRq.js +31 -0
- package/dist/renderer/assets/init-ZxktEp_H.js +16 -0
- package/dist/renderer/assets/ishikawaDiagram-YF4QCWOH-DDCZc35f.js +967 -0
- package/dist/renderer/assets/journeyDiagram-JHISSGLW-BEdmpAgl.js +1255 -0
- package/dist/renderer/assets/kanban-definition-UN3LZRKU-BEFtQcFb.js +1052 -0
- package/dist/renderer/assets/layout-CAJgQHdw.js +2610 -0
- package/dist/renderer/assets/linear-B2ggJ8Am.js +340 -0
- package/dist/renderer/assets/mindmap-definition-RKZ34NQL-DSxVgHB5.js +1180 -0
- package/dist/renderer/assets/ordinal-DSZU4PqD.js +76 -0
- package/dist/renderer/assets/pieDiagram-4H26LBE5-CwYoJBuL.js +246 -0
- package/dist/renderer/assets/quadrantDiagram-W4KKPZXB-CST9Fvg9.js +1344 -0
- package/dist/renderer/assets/requirementDiagram-4Y6WPE33-DtrH52jS.js +1204 -0
- package/dist/renderer/assets/sankeyDiagram-5OEKKPKP-ca1tPzJ_.js +1274 -0
- package/dist/renderer/assets/sequenceDiagram-3UESZ5HK-Dfp1EJZ7.js +4514 -0
- package/dist/renderer/assets/stateDiagram-AJRCARHV-Bha2QoNB.js +450 -0
- package/dist/renderer/assets/stateDiagram-v2-BHNVJYJU-DWgFUYu1.js +21 -0
- package/dist/renderer/assets/timeline-definition-PNZ67QCA-C3h_-OTj.js +1596 -0
- package/dist/renderer/assets/vennDiagram-CIIHVFJN-DFzjSrZi.js +2486 -0
- package/dist/renderer/assets/wardley-L42UT6IY-Cx-VbqoS.js +30699 -0
- package/dist/renderer/assets/wardleyDiagram-YWT4CUSO-S2D9XqX6.js +975 -0
- package/dist/renderer/assets/xychartDiagram-2RQKCTM6-Cfxigbts.js +1932 -0
- package/dist/renderer/index.html +19 -0
- package/docs/agent-diff-view.md +48 -0
- package/electron-builder.yml +57 -0
- package/electron.vite.config.ts +30 -0
- package/package.json +40 -0
- package/resources/entitlements.mac.plist +12 -0
- package/resources/icon.icns +0 -0
- package/resources/icon.png +0 -0
- package/resources/icon.svg +23 -0
- package/resources/templates/slides/icon.png +0 -0
- package/resources/templates/slides/slides-template.md +74 -0
- package/resources/templates/slides/template.html +535 -0
- package/scripts/afterPack.js +13 -0
- package/src/main/index.ts +881 -0
- package/src/preload/index.ts +110 -0
- package/src/renderer/editor/editor.ts +204 -0
- package/src/renderer/editor/html-view.ts +15 -0
- package/src/renderer/editor/plugins/index.ts +76 -0
- package/src/renderer/editor/plugins/math-plugin.ts +297 -0
- package/src/renderer/editor/plugins/mermaid-plugin-custom.css +431 -0
- package/src/renderer/editor/plugins/mermaid-plugin-dark.css +428 -0
- package/src/renderer/editor/plugins/mermaid-plugin-elegant.css +443 -0
- package/src/renderer/editor/plugins/mermaid-plugin-newsprint.css +208 -0
- package/src/renderer/editor/plugins/mermaid-plugin.css +111 -0
- package/src/renderer/editor/plugins/mermaid-plugin.ts +679 -0
- package/src/renderer/env.d.ts +7 -0
- package/src/renderer/index.html +18 -0
- package/src/renderer/main.ts +303 -0
- package/src/renderer/themes/base.css +509 -0
- package/src/renderer/themes/theme-manager.ts +40 -0
- package/themes/README.md +280 -0
- package/themes/elegant.css +664 -0
- package/themes/guizang.css +732 -0
- package/tsconfig.json +14 -0
- package/tsconfig.main.json +11 -0
- package/tsconfig.preload.json +11 -0
- package/tsconfig.renderer.json +12 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const electron = require("electron");
|
|
3
|
+
electron.contextBridge.exposeInMainWorld("electronAPI", {
|
|
4
|
+
openFile: () => electron.ipcRenderer.invoke("open-file"),
|
|
5
|
+
openFilePath: (path) => electron.ipcRenderer.invoke("open-file-path", path),
|
|
6
|
+
saveFile: (content) => electron.ipcRenderer.invoke("save-file", content),
|
|
7
|
+
saveFileAs: (content) => electron.ipcRenderer.invoke("save-file-as", content),
|
|
8
|
+
exportPDF: () => electron.ipcRenderer.invoke("export-pdf"),
|
|
9
|
+
exportHTML: (html) => electron.ipcRenderer.invoke("export-html", html),
|
|
10
|
+
exportSlides: (content) => electron.ipcRenderer.invoke("export-slides", content),
|
|
11
|
+
newSlides: () => electron.ipcRenderer.invoke("new-slides"),
|
|
12
|
+
openAsSlides: (content) => electron.ipcRenderer.invoke("open-as-slides", content),
|
|
13
|
+
loadCustomTheme: () => electron.ipcRenderer.invoke("load-custom-theme"),
|
|
14
|
+
loadThemeCSS: (fileName) => electron.ipcRenderer.invoke("load-theme-css", fileName),
|
|
15
|
+
getPathForFile: (file) => electron.webUtils.getPathForFile(file),
|
|
16
|
+
openExternal: (url) => electron.ipcRenderer.send("open-external", url),
|
|
17
|
+
onFileChanged: (callback) => {
|
|
18
|
+
electron.ipcRenderer.on("file-changed", (_event, content) => callback(content));
|
|
19
|
+
},
|
|
20
|
+
onNewFile: (callback) => {
|
|
21
|
+
electron.ipcRenderer.on("new-file", () => callback());
|
|
22
|
+
},
|
|
23
|
+
onFileOpened: (callback) => {
|
|
24
|
+
electron.ipcRenderer.on("file-opened", (_event, data) => callback(data));
|
|
25
|
+
},
|
|
26
|
+
onMenuOpen: (callback) => {
|
|
27
|
+
electron.ipcRenderer.on("menu-open", () => callback());
|
|
28
|
+
},
|
|
29
|
+
onMenuSave: (callback) => {
|
|
30
|
+
electron.ipcRenderer.on("menu-save", () => callback());
|
|
31
|
+
},
|
|
32
|
+
onMenuSaveAs: (callback) => {
|
|
33
|
+
electron.ipcRenderer.on("menu-save-as", () => callback());
|
|
34
|
+
},
|
|
35
|
+
onMenuExportPDF: (callback) => {
|
|
36
|
+
electron.ipcRenderer.on("menu-export-pdf", () => callback());
|
|
37
|
+
},
|
|
38
|
+
onMenuExportHTML: (callback) => {
|
|
39
|
+
electron.ipcRenderer.on("menu-export-html", () => callback());
|
|
40
|
+
},
|
|
41
|
+
onMenuNewSlides: (callback) => {
|
|
42
|
+
electron.ipcRenderer.on("menu-new-slides", () => callback());
|
|
43
|
+
},
|
|
44
|
+
onMenuOpenAsSlides: (callback) => {
|
|
45
|
+
electron.ipcRenderer.on("menu-open-as-slides", () => callback());
|
|
46
|
+
},
|
|
47
|
+
onNewSlidesContent: (callback) => {
|
|
48
|
+
electron.ipcRenderer.on("new-slides-content", (_event, content) => callback(content));
|
|
49
|
+
},
|
|
50
|
+
onSetTheme: (callback) => {
|
|
51
|
+
electron.ipcRenderer.on("set-theme", (_event, theme) => callback(theme));
|
|
52
|
+
},
|
|
53
|
+
onSetCustomCSS: (callback) => {
|
|
54
|
+
electron.ipcRenderer.on("set-custom-css", (_event, css) => callback(css));
|
|
55
|
+
},
|
|
56
|
+
onMenuImportTheme: (callback) => {
|
|
57
|
+
electron.ipcRenderer.on("menu-import-theme", () => callback());
|
|
58
|
+
},
|
|
59
|
+
onMenuExportSlides: (callback) => {
|
|
60
|
+
electron.ipcRenderer.on("menu-export-slides", () => callback());
|
|
61
|
+
},
|
|
62
|
+
onAgentActivity: (callback) => {
|
|
63
|
+
electron.ipcRenderer.on("agent-activity", (_event, state) => callback(state));
|
|
64
|
+
},
|
|
65
|
+
registerPlugins: (plugins) => electron.ipcRenderer.invoke("register-plugins", plugins),
|
|
66
|
+
syncPluginState: (id, enabled) => electron.ipcRenderer.invoke("sync-plugin-state", id, enabled),
|
|
67
|
+
onMenuTogglePlugin: (callback) => {
|
|
68
|
+
electron.ipcRenderer.on("menu-toggle-plugin", (_event, id) => callback(id));
|
|
69
|
+
},
|
|
70
|
+
exportFile: (dataUrl, defaultName) => electron.ipcRenderer.invoke("save-export-file", dataUrl, defaultName)
|
|
71
|
+
});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { a0 as withPath, a1 as halfPi, a2 as epsilon, a3 as tau, a4 as cos, a5 as sin, a6 as min, a7 as abs, a8 as pi, a9 as sqrt, aa as atan2, ab as constant, ac as asin, ad as acos, ae as max } from "./index-DW7LS8C1.js";
|
|
2
|
+
function arcInnerRadius(d) {
|
|
3
|
+
return d.innerRadius;
|
|
4
|
+
}
|
|
5
|
+
function arcOuterRadius(d) {
|
|
6
|
+
return d.outerRadius;
|
|
7
|
+
}
|
|
8
|
+
function arcStartAngle(d) {
|
|
9
|
+
return d.startAngle;
|
|
10
|
+
}
|
|
11
|
+
function arcEndAngle(d) {
|
|
12
|
+
return d.endAngle;
|
|
13
|
+
}
|
|
14
|
+
function arcPadAngle(d) {
|
|
15
|
+
return d && d.padAngle;
|
|
16
|
+
}
|
|
17
|
+
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
|
|
18
|
+
var x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2, t = y32 * x10 - x32 * y10;
|
|
19
|
+
if (t * t < epsilon) return;
|
|
20
|
+
t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;
|
|
21
|
+
return [x0 + t * x10, y0 + t * y10];
|
|
22
|
+
}
|
|
23
|
+
function cornerTangents(x0, y0, x1, y1, r1, rc, cw) {
|
|
24
|
+
var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00;
|
|
25
|
+
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;
|
|
26
|
+
return {
|
|
27
|
+
cx: cx0,
|
|
28
|
+
cy: cy0,
|
|
29
|
+
x01: -ox,
|
|
30
|
+
y01: -oy,
|
|
31
|
+
x11: cx0 * (r1 / r - 1),
|
|
32
|
+
y11: cy0 * (r1 / r - 1)
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function d3arc() {
|
|
36
|
+
var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null, path = withPath(arc);
|
|
37
|
+
function arc() {
|
|
38
|
+
var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs(a1 - a0), cw = a1 > a0;
|
|
39
|
+
if (!context) context = buffer = path();
|
|
40
|
+
if (r1 < r0) r = r1, r1 = r0, r0 = r;
|
|
41
|
+
if (!(r1 > epsilon)) context.moveTo(0, 0);
|
|
42
|
+
else if (da > tau - epsilon) {
|
|
43
|
+
context.moveTo(r1 * cos(a0), r1 * sin(a0));
|
|
44
|
+
context.arc(0, 0, r1, a0, a1, !cw);
|
|
45
|
+
if (r0 > epsilon) {
|
|
46
|
+
context.moveTo(r0 * cos(a1), r0 * sin(a1));
|
|
47
|
+
context.arc(0, 0, r0, a1, a0, cw);
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = ap > epsilon && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t0, t1;
|
|
51
|
+
if (rp > epsilon) {
|
|
52
|
+
var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap));
|
|
53
|
+
if ((da0 -= p0 * 2) > epsilon) p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0;
|
|
54
|
+
else da0 = 0, a00 = a10 = (a0 + a1) / 2;
|
|
55
|
+
if ((da1 -= p1 * 2) > epsilon) p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1;
|
|
56
|
+
else da1 = 0, a01 = a11 = (a0 + a1) / 2;
|
|
57
|
+
}
|
|
58
|
+
var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10);
|
|
59
|
+
if (rc > epsilon) {
|
|
60
|
+
var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc;
|
|
61
|
+
if (da < pi) {
|
|
62
|
+
if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {
|
|
63
|
+
var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);
|
|
64
|
+
rc0 = min(rc, (r0 - lc) / (kc - 1));
|
|
65
|
+
rc1 = min(rc, (r1 - lc) / (kc + 1));
|
|
66
|
+
} else {
|
|
67
|
+
rc0 = rc1 = 0;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (!(da1 > epsilon)) context.moveTo(x01, y01);
|
|
72
|
+
else if (rc1 > epsilon) {
|
|
73
|
+
t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);
|
|
74
|
+
t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);
|
|
75
|
+
context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
|
76
|
+
if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
|
|
77
|
+
else {
|
|
78
|
+
context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
|
|
79
|
+
context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);
|
|
80
|
+
context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
|
|
81
|
+
}
|
|
82
|
+
} else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);
|
|
83
|
+
if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);
|
|
84
|
+
else if (rc0 > epsilon) {
|
|
85
|
+
t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);
|
|
86
|
+
t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);
|
|
87
|
+
context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);
|
|
88
|
+
if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);
|
|
89
|
+
else {
|
|
90
|
+
context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);
|
|
91
|
+
context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);
|
|
92
|
+
context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);
|
|
93
|
+
}
|
|
94
|
+
} else context.arc(0, 0, r0, a10, a00, cw);
|
|
95
|
+
}
|
|
96
|
+
context.closePath();
|
|
97
|
+
if (buffer) return context = null, buffer + "" || null;
|
|
98
|
+
}
|
|
99
|
+
arc.centroid = function() {
|
|
100
|
+
var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;
|
|
101
|
+
return [cos(a) * r, sin(a) * r];
|
|
102
|
+
};
|
|
103
|
+
arc.innerRadius = function(_) {
|
|
104
|
+
return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant(+_), arc) : innerRadius;
|
|
105
|
+
};
|
|
106
|
+
arc.outerRadius = function(_) {
|
|
107
|
+
return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant(+_), arc) : outerRadius;
|
|
108
|
+
};
|
|
109
|
+
arc.cornerRadius = function(_) {
|
|
110
|
+
return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant(+_), arc) : cornerRadius;
|
|
111
|
+
};
|
|
112
|
+
arc.padRadius = function(_) {
|
|
113
|
+
return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant(+_), arc) : padRadius;
|
|
114
|
+
};
|
|
115
|
+
arc.startAngle = function(_) {
|
|
116
|
+
return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), arc) : startAngle;
|
|
117
|
+
};
|
|
118
|
+
arc.endAngle = function(_) {
|
|
119
|
+
return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), arc) : endAngle;
|
|
120
|
+
};
|
|
121
|
+
arc.padAngle = function(_) {
|
|
122
|
+
return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), arc) : padAngle;
|
|
123
|
+
};
|
|
124
|
+
arc.context = function(_) {
|
|
125
|
+
return arguments.length ? (context = _ == null ? null : _, arc) : context;
|
|
126
|
+
};
|
|
127
|
+
return arc;
|
|
128
|
+
}
|
|
129
|
+
export {
|
|
130
|
+
d3arc as d
|
|
131
|
+
};
|