colonynote 1.0.0-beta.8 → 1.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.
Files changed (144) hide show
  1. package/README.md +6 -6
  2. package/README.zh.md +6 -6
  3. package/bin/colonynote.js +48 -81
  4. package/dist/client/assets/arc-Ezd9GmKE.js +1 -0
  5. package/dist/client/assets/architecture-YZFGNWBL-Dns9u0e5.js +1 -0
  6. package/dist/client/assets/architectureDiagram-Q4EWVU46-BmLJotd1.js +36 -0
  7. package/dist/client/assets/array-C0548cPn.js +1 -0
  8. package/dist/client/assets/blockDiagram-DXYQGD6D-ZqrNO8HM.js +132 -0
  9. package/dist/client/assets/c4Diagram-AHTNJAMY-BJWyymhT.js +10 -0
  10. package/dist/client/assets/channel-C-zEXS3V.js +1 -0
  11. package/dist/client/assets/chunk-2KRD3SAO-B1G2AY6H.js +1 -0
  12. package/dist/client/assets/chunk-4BX2VUAB-mLNpdiNK.js +1 -0
  13. package/dist/client/assets/chunk-4TB4RGXK-BsRi3qra.js +206 -0
  14. package/dist/client/assets/chunk-55IACEB6-BkCqG_Mc.js +1 -0
  15. package/dist/client/assets/chunk-67CJDMHE-Cz-mqdi4.js +1 -0
  16. package/dist/client/assets/chunk-7N4EOEYR-BFd0Oy6w.js +1 -0
  17. package/dist/client/assets/chunk-AA7GKIK3-D77gJjH7.js +1 -0
  18. package/dist/client/assets/chunk-CIAEETIT-DxQTGSBH.js +1 -0
  19. package/dist/client/assets/chunk-Dlc7tRH4.js +1 -0
  20. package/dist/client/assets/chunk-EDXVE4YY-DglU8MxC.js +1 -0
  21. package/dist/client/assets/{chunk-FMBD7UC4-aAnHvYnB.js → chunk-FMBD7UC4-B_1_v8GP.js} +2 -2
  22. package/dist/client/assets/chunk-FOC6F5B3-CEMl5H_U.js +1 -0
  23. package/dist/client/assets/chunk-K5T4RW27-Dzh5Xx8O.js +94 -0
  24. package/dist/client/assets/chunk-KGLVRYIC-Be2dMs_W.js +1 -0
  25. package/dist/client/assets/chunk-LIHQZDEY-BGBWPKdn.js +1 -0
  26. package/dist/client/assets/chunk-ORNJ4GCN-W_NT507t.js +1 -0
  27. package/dist/client/assets/chunk-OYMX7WX6-BV6RCL_j.js +231 -0
  28. package/dist/client/assets/chunk-QZHKN3VN-B0CMV9NG.js +1 -0
  29. package/dist/client/assets/chunk-YZCP3GAM-CDitFgw3.js +1 -0
  30. package/dist/client/assets/classDiagram-6PBFFD2Q-XeqY_hie.js +1 -0
  31. package/dist/client/assets/classDiagram-v2-HSJHXN6E-D5yY32qd.js +1 -0
  32. package/dist/client/assets/clone-AnN0418d.js +1 -0
  33. package/dist/client/assets/cose-bilkent-S5V4N54A-YQtZwRYb.js +1 -0
  34. package/dist/client/assets/cytoscape.esm-DT0IEibP.js +321 -0
  35. package/dist/client/assets/dagre-Cs_hK0RA.js +1 -0
  36. package/dist/client/assets/dagre-KV5264BT-DvMqAy8J.js +4 -0
  37. package/dist/client/assets/defaultLocale-ClcAPJ5U.js +1 -0
  38. package/dist/client/assets/diagram-5BDNPKRD-BwrN8bUG.js +10 -0
  39. package/dist/client/assets/diagram-G4DWMVQ6-Cqaj-jnn.js +24 -0
  40. package/dist/client/assets/diagram-MMDJMWI5-DNA312HK.js +43 -0
  41. package/dist/client/assets/diagram-TYMM5635-BujcYOHW.js +24 -0
  42. package/dist/client/assets/erDiagram-SMLLAGMA-ZjZZH-zN.js +85 -0
  43. package/dist/client/assets/flatten-DA7ZzNkq.js +1 -0
  44. package/dist/client/assets/flowDiagram-DWJPFMVM-CeIGHswO.js +162 -0
  45. package/dist/client/assets/ganttDiagram-T4ZO3ILL-BeGMFmHq.js +292 -0
  46. package/dist/client/assets/gitGraph-7Q5UKJZL-Dib3-KZp.js +1 -0
  47. package/dist/client/assets/gitGraphDiagram-UUTBAWPF-2fnUKQRp.js +106 -0
  48. package/dist/client/assets/graphlib-DRri47Ms.js +1 -0
  49. package/dist/client/assets/identity-CQcu21F9.js +1 -0
  50. package/dist/client/assets/index-DKyd5iCm.css +2 -0
  51. package/dist/client/assets/index-Ts5WhtRB.js +574 -0
  52. package/dist/client/assets/info-OMHHGYJF-oQ5--hGK.js +1 -0
  53. package/dist/client/assets/infoDiagram-42DDH7IO-KL_uq6JQ.js +2 -0
  54. package/dist/client/assets/init-TU6eJ00_.js +1 -0
  55. package/dist/client/assets/ishikawaDiagram-UXIWVN3A-DYWG2VdA.js +70 -0
  56. package/dist/client/assets/journeyDiagram-VCZTEJTY-DT7IVz7z.js +139 -0
  57. package/dist/client/assets/kanban-definition-6JOO6SKY-CHPPLj8n.js +89 -0
  58. package/dist/client/assets/katex-HOUACuRw.js +257 -0
  59. package/dist/client/assets/linear-CizMozZt.js +1 -0
  60. package/dist/client/assets/mermaid-parser.core-Bpqvb2jv.js +4 -0
  61. package/dist/client/assets/mindmap-definition-QFDTVHPH-Dov77gi8.js +96 -0
  62. package/dist/client/assets/ordinal-DCsgWfZW.js +1 -0
  63. package/dist/client/assets/packet-4T2RLAQJ-Cuyyn0tM.js +1 -0
  64. package/dist/client/assets/path-yo4Xej8w.js +1 -0
  65. package/dist/client/assets/pie-ZZUOXDRM-DajTPYmY.js +1 -0
  66. package/dist/client/assets/pieDiagram-DEJITSTG-DwmqzTu7.js +30 -0
  67. package/dist/client/assets/quadrantDiagram-34T5L4WZ-CdCBXbvb.js +7 -0
  68. package/dist/client/assets/radar-PYXPWWZC-DWe78GFc.js +1 -0
  69. package/dist/client/assets/reduce-DV5GRzs4.js +1 -0
  70. package/dist/client/assets/requirementDiagram-MS252O5E-32eCbPFl.js +84 -0
  71. package/dist/client/assets/rough.esm-DulVNktb.js +1 -0
  72. package/dist/client/assets/sankeyDiagram-XADWPNL6-BBDL_wPZ.js +10 -0
  73. package/dist/client/assets/sequenceDiagram-FGHM5R23-Ck7ukfb7.js +157 -0
  74. package/dist/client/assets/stateDiagram-FHFEXIEX-BKJrixhp.js +1 -0
  75. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Bio1QBYF.js +1 -0
  76. package/dist/client/assets/timeline-definition-GMOUNBTQ-B_D-q7Kc.js +120 -0
  77. package/dist/client/assets/treeView-SZITEDCU-BQ27_5HI.js +1 -0
  78. package/dist/client/assets/treemap-W4RFUUIX-D2TpEq--.js +1 -0
  79. package/dist/client/assets/vennDiagram-DHZGUBPP-CvHqv3h2.js +34 -0
  80. package/dist/client/assets/wardley-RL74JXVD-DoAmhKVb.js +1 -0
  81. package/dist/client/assets/wardleyDiagram-NUSXRM2D-CYRpN4xk.js +20 -0
  82. package/dist/client/assets/xychartDiagram-5P7HB3ND-Dh0MaaMp.js +7 -0
  83. package/dist/client/index.html +7 -2
  84. package/dist/config.js +122 -52
  85. package/dist/server/api.js +637 -31
  86. package/dist/server/ignore.js +221 -0
  87. package/dist/server/index.js +78 -24
  88. package/dist/server/search-ignore.test.js +51 -0
  89. package/dist/server/watcher.js +54 -18
  90. package/package.json +16 -16
  91. package/dist/client/assets/__vite-browser-external-BIHI7g3E.js +0 -1
  92. package/dist/client/assets/_basePickBy-COW6_o5l.js +0 -1
  93. package/dist/client/assets/_baseUniq-BZLZ0Cq5.js +0 -1
  94. package/dist/client/assets/arc-ChrJd4LX.js +0 -1
  95. package/dist/client/assets/architectureDiagram-2XIMDMQ5-DUvtAUqm.js +0 -36
  96. package/dist/client/assets/blockDiagram-WCTKOSBZ-CZjHlzLw.js +0 -132
  97. package/dist/client/assets/c4Diagram-IC4MRINW-Bb4QcjBn.js +0 -10
  98. package/dist/client/assets/channel-Kq606-yO.js +0 -1
  99. package/dist/client/assets/chunk-4BX2VUAB-U2gnuzht.js +0 -1
  100. package/dist/client/assets/chunk-55IACEB6-DDf5FyZA.js +0 -1
  101. package/dist/client/assets/chunk-JSJVCQXG-95g2NCsz.js +0 -1
  102. package/dist/client/assets/chunk-KX2RTZJC-Uw77DOxq.js +0 -1
  103. package/dist/client/assets/chunk-NQ4KR5QH-CEtk7AxS.js +0 -220
  104. package/dist/client/assets/chunk-QZHKN3VN-CxHNihbm.js +0 -1
  105. package/dist/client/assets/chunk-WL4C6EOR-YWnktay4.js +0 -189
  106. package/dist/client/assets/classDiagram-VBA2DB6C-Bgw-akZn.js +0 -1
  107. package/dist/client/assets/classDiagram-v2-RAHNMMFH-Bgw-akZn.js +0 -1
  108. package/dist/client/assets/clone-DXEvmIA_.js +0 -1
  109. package/dist/client/assets/cose-bilkent-S5V4N54A-BcT_Pp_t.js +0 -1
  110. package/dist/client/assets/cytoscape.esm-BQaXIfA_.js +0 -331
  111. package/dist/client/assets/dagre-KLK3FWXG-DfkYqpYp.js +0 -4
  112. package/dist/client/assets/defaultLocale-DX6XiGOO.js +0 -1
  113. package/dist/client/assets/diagram-E7M64L7V-kzGsyL8B.js +0 -24
  114. package/dist/client/assets/diagram-IFDJBPK2-DK7bXX4F.js +0 -43
  115. package/dist/client/assets/diagram-P4PSJMXO-z9xCBdYx.js +0 -24
  116. package/dist/client/assets/erDiagram-INFDFZHY-D7a5C5o_.js +0 -70
  117. package/dist/client/assets/flowDiagram-PKNHOUZH-DqBsAGYI.js +0 -162
  118. package/dist/client/assets/ganttDiagram-A5KZAMGK-CytDHso0.js +0 -292
  119. package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-C_xN53WG.js +0 -65
  120. package/dist/client/assets/graph-CZtfE55r.js +0 -1
  121. package/dist/client/assets/index-AcpT_uDS.css +0 -1
  122. package/dist/client/assets/index-Ci71-3A2.js +0 -705
  123. package/dist/client/assets/infoDiagram-LFFYTUFH-JmJVtb4-.js +0 -2
  124. package/dist/client/assets/init-Gi6I4Gst.js +0 -1
  125. package/dist/client/assets/ishikawaDiagram-PHBUUO56-BZLBgU5l.js +0 -70
  126. package/dist/client/assets/journeyDiagram-4ABVD52K-Bso62bBS.js +0 -139
  127. package/dist/client/assets/kanban-definition-K7BYSVSG-D9jsFbIS.js +0 -89
  128. package/dist/client/assets/katex-B1X10hvy.js +0 -261
  129. package/dist/client/assets/layout-Db-5vCEZ.js +0 -1
  130. package/dist/client/assets/linear-DdXT-poy.js +0 -1
  131. package/dist/client/assets/mindmap-definition-YRQLILUH-DUpkjOn4.js +0 -68
  132. package/dist/client/assets/ordinal-Cboi1Yqb.js +0 -1
  133. package/dist/client/assets/pieDiagram-SKSYHLDU-BTseg5zx.js +0 -30
  134. package/dist/client/assets/quadrantDiagram-337W2JSQ-Cf86XD1_.js +0 -7
  135. package/dist/client/assets/requirementDiagram-Z7DCOOCP-BK2yRQcz.js +0 -73
  136. package/dist/client/assets/sankeyDiagram-WA2Y5GQK-jBbEn6rj.js +0 -10
  137. package/dist/client/assets/sequenceDiagram-2WXFIKYE-qg69rBRP.js +0 -145
  138. package/dist/client/assets/stateDiagram-RAJIS63D-BFIxDKEY.js +0 -1
  139. package/dist/client/assets/stateDiagram-v2-FVOUBMTO-DYqLkNfp.js +0 -1
  140. package/dist/client/assets/timeline-definition-YZTLITO2-B17QFyRY.js +0 -61
  141. package/dist/client/assets/treemap-KZPCXAKY-CGSXpgHF.js +0 -162
  142. package/dist/client/assets/vennDiagram-LZ73GAT5-mbh453Lq.js +0 -34
  143. package/dist/client/assets/xychartDiagram-JWTSCODW-COWgeBYx.js +0 -7
  144. package/dist/server/app.js +0 -14
package/README.md CHANGED
@@ -35,7 +35,7 @@ colonynote [options]
35
35
 
36
36
  | Option | Alias | Description | Default |
37
37
  |--------|-------|-------------|---------|
38
- | `--root` | `-r` | Root directory for documents | Current directory |
38
+ | `--dir` | `-d` | Directory for documents | Current directory |
39
39
  | `--port` | `-p` | Server port | `5787` |
40
40
  | `--host` | | Server host | `0.0.0.0` |
41
41
  | `--config` | `-c` | Config file path | `colonynote.config.js` |
@@ -48,8 +48,8 @@ colonynote [options]
48
48
  # Start with default settings
49
49
  colonynote
50
50
 
51
- # Specify root directory
52
- colonynote -r /path/to/docs
51
+ # Specify directory
52
+ colonynote -d /path/to/docs
53
53
 
54
54
  # Specify port
55
55
  colonynote -p 3000
@@ -58,16 +58,16 @@ colonynote -p 3000
58
58
  colonynote -c ./my-config.js
59
59
 
60
60
  # Combine options
61
- colonynote -r ./docs -p 8080
61
+ colonynote -d ./docs -p 8080
62
62
  ```
63
63
 
64
64
  ## Configuration
65
65
 
66
- Create a `colonynote.config.js` file in your project root:
66
+ Create a `colonynote.config.js` file in your project directory:
67
67
 
68
68
  ```javascript
69
69
  export default {
70
- root: './docs', // Root directory for documents
70
+ dirs: ['./docs'], // Directories for documents
71
71
  port: 5787, // Server port
72
72
  host: '0.0.0.0', // Server host
73
73
  allowedExtensions: ['.md', '.markdown'], // Supported file extensions
package/README.zh.md CHANGED
@@ -35,7 +35,7 @@ colonynote [选项]
35
35
 
36
36
  | 选项 | 别名 | 描述 | 默认值 |
37
37
  |------|------|------|--------|
38
- | `--root` | `-r` | 文档根目录 | 当前目录 |
38
+ | `--dir` | `-d` | 目录 | 当前目录 |
39
39
  | `--port` | `-p` | 服务器端口 | `5787` |
40
40
  | `--host` | | 服务器地址 | `0.0.0.0` |
41
41
  | `--config` | `-c` | 配置文件路径 | `colonynote.config.js` |
@@ -48,8 +48,8 @@ colonynote [选项]
48
48
  # 使用默认设置启动
49
49
  colonynote
50
50
 
51
- # 指定根目录
52
- colonynote -r /path/to/docs
51
+ # 指定目录
52
+ colonynote -d /path/to/docs
53
53
 
54
54
  # 指定端口
55
55
  colonynote -p 3000
@@ -58,16 +58,16 @@ colonynote -p 3000
58
58
  colonynote -c ./my-config.js
59
59
 
60
60
  # 组合选项
61
- colonynote -r ./docs -p 8080
61
+ colonynote -d ./docs -p 8080
62
62
  ```
63
63
 
64
64
  ## 配置
65
65
 
66
- 在项目根目录创建 `colonynote.config.js` 文件:
66
+ 在项目目录创建 `colonynote.config.js` 文件:
67
67
 
68
68
  ```javascript
69
69
  export default {
70
- root: './docs', // 文档根目录
70
+ dirs: ['./docs'], // 文档目录
71
71
  port: 5787, // 服务器端口
72
72
  host: '0.0.0.0', // 服务器地址
73
73
  allowedExtensions: ['.md', '.markdown'], // 支持的文件扩展名
package/bin/colonynote.js CHANGED
@@ -3,97 +3,64 @@
3
3
  import { serve } from '@hono/node-server'
4
4
  import { Hono } from 'hono'
5
5
  import { cors } from 'hono/cors'
6
- import { createFileRouter } from '../dist/server/api.js'
7
- import { loadConfig } from '../dist/config.js'
6
+ import { createFileRouter, createMutableConfigHolder } from '../dist/server/api.js'
7
+ import { loadConfig, DEFAULT_PORT, DEFAULT_HOST } from '../dist/config.js'
8
8
  import { setupWatcher } from '../dist/server/watcher.js'
9
+ import { IgnoreMatcher } from '../dist/server/ignore.js'
9
10
  import { WebSocketServer, WebSocket } from 'ws'
10
11
  import { readFileSync, existsSync } from 'fs'
11
12
  import { fileURLToPath } from 'url'
12
- import { dirname, join, extname } from 'path'
13
+ import { dirname, join, extname, resolve } from 'path'
14
+ import { Command } from 'commander'
13
15
 
14
16
  const __filename = fileURLToPath(import.meta.url)
15
17
  const __dirname = dirname(__filename)
16
18
  const pkg = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'))
17
19
 
18
- const argv = process.argv.slice(2)
19
- const args = {}
20
- const validOptions = new Set(['root', 'r', 'port', 'p', 'host', 'config', 'c', 'help', 'h', 'version'])
21
-
22
- for (let i = 0; i < argv.length; i++) {
23
- const arg = argv[i]
24
- if (arg.startsWith('--')) {
25
- const key = arg.slice(2)
26
- const next = argv[i + 1]
27
- if (next && !next.startsWith('-')) {
28
- args[key] = next
29
- i++
30
- } else {
31
- args[key] = true
32
- }
33
- } else if (arg.startsWith('-')) {
34
- const key = arg.slice(1)
35
- const next = argv[i + 1]
36
- if (next && !next.startsWith('-')) {
37
- args[key] = next
38
- i++
39
- } else {
40
- args[key] = true
41
- }
42
- } else {
43
- console.error(`Unknown argument: ${arg}`)
44
- console.error(`Run 'colonynote --help' for usage.`)
45
- process.exit(1)
46
- }
47
- }
20
+ const program = new Command()
48
21
 
49
- for (const key of Object.keys(args)) {
50
- if (!validOptions.has(key)) {
51
- console.error(`Unknown option: --${key}`)
52
- console.error(`Run 'colonynote --help' for usage.`)
53
- process.exit(1)
54
- }
55
- }
22
+ program
23
+ .name('colonynote')
24
+ .description('Markdown online editor')
25
+ .version(pkg.version)
26
+ .option('-d, --dir <path>', 'Root directory (can be specified multiple times)', collect, [])
27
+ .option('-p, --port <number>', 'Server port', DEFAULT_PORT.toString())
28
+ .option('--host <host>', 'Server host', DEFAULT_HOST)
29
+ .parse()
56
30
 
57
- if (args.h || args.help) {
58
- console.log(`
59
- colonynote - Markdown online editor
60
-
61
- Usage:
62
- colonynote [options]
63
-
64
- Options:
65
- -r, --root <path> Root directory (default: current directory)
66
- -p, --port <number> Server port (default: 5787)
67
- --host <host> Server host (default: 0.0.0.0)
68
- -c, --config <path> Config file path
69
- -h, --help Show this help
70
- --version Show version
71
- `)
72
- process.exit(0)
73
- }
31
+ const options = program.opts()
74
32
 
75
- if (args.version) {
76
- console.log(`colonynote v${pkg.version}`)
77
- process.exit(0)
33
+ function collect(value, previous) {
34
+ return previous.concat([value])
78
35
  }
79
36
 
80
37
  async function main() {
81
- const config = await loadConfig(args.config)
82
-
83
- if (args.r || args.root) {
84
- config.root = args.r || args.root
85
- }
86
- if (args.p || args.port) {
87
- config.port = parseInt(args.p || args.port, 10)
88
- }
89
- if (args.host) {
90
- config.host = args.host
38
+ const config = await loadConfig()
39
+
40
+ if (options.dir && options.dir.length > 0) {
41
+ for (const rootPath of options.dir) {
42
+ const resolvedPath = resolve(rootPath)
43
+ const exists = config.dirs.some((r) => resolve(r.path) === resolvedPath)
44
+ if (exists) {
45
+ console.warn(`Skipping duplicate dir: ${rootPath}`)
46
+ continue
47
+ }
48
+ config.dirs.unshift({ path: resolvedPath, isCli: true })
49
+ }
91
50
  }
92
51
 
52
+ const port = parseInt(options.port, 10)
53
+ const host = options.host
54
+
55
+ const matcher = new IgnoreMatcher(config.dirs.map(d => d.path), {
56
+ globalPatterns: config.ignore.patterns,
57
+ })
58
+
93
59
  const app = new Hono()
94
60
  app.use('*', cors())
95
61
 
96
- const fileRouter = createFileRouter(config)
62
+ const holder = createMutableConfigHolder(config, matcher)
63
+ const fileRouter = createFileRouter(holder)
97
64
  app.route('/api/files', fileRouter)
98
65
 
99
66
  const publicDir = join(dirname(fileURLToPath(import.meta.url)), '../dist/client')
@@ -141,8 +108,8 @@ async function main() {
141
108
 
142
109
  const server = serve({
143
110
  fetch: app.fetch,
144
- port: config.port,
145
- hostname: config.host,
111
+ port,
112
+ hostname: host,
146
113
  })
147
114
 
148
115
  const clients = new Set()
@@ -161,10 +128,10 @@ async function main() {
161
128
  }
162
129
  })
163
130
 
164
- setupWatcher(config, {
165
- onFileChange: (event, path) => {
166
- const relativePath = path.replace(config.root, '')
167
- const message = JSON.stringify({ type: 'file:change', event, path: relativePath })
131
+ setupWatcher(config, matcher, {
132
+ onFileChange: (rootPath, event, filePath) => {
133
+ const relativePath = filePath.replace(rootPath, '')
134
+ const message = JSON.stringify({ type: 'file:change', event, path: relativePath, rootPath })
168
135
  clients.forEach((client) => {
169
136
  if (client.readyState === WebSocket.OPEN) {
170
137
  client.send(message)
@@ -174,12 +141,12 @@ async function main() {
174
141
  })
175
142
 
176
143
  console.log(`\n ColonyNote is running!\n`)
177
- console.log(` Local: http://localhost:${config.port}`)
178
- console.log(` Network: http://${config.host}:${config.port}`)
179
- console.log(` Root: ${config.root}\n`)
144
+ console.log(` Local: http://localhost:${port}`)
145
+ console.log(` Network: http://${host}:${port}`)
146
+ console.log(` Dirs: ${config.dirs.map(r => r.path).join(', ')}\n`)
180
147
  }
181
148
 
182
149
  main().catch((e) => {
183
150
  console.error('Failed to start:', e)
184
151
  process.exit(1)
185
- })
152
+ })
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./path-yo4Xej8w.js";import{Ct as n,St as r,_t as i,bt as a,dt as o,ft as s,ht as c,mt as l,pt as u,vt as d,xt as f,yt as p}from"./index-Ts5WhtRB.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,i,a,o,s){var c=e-n,l=t-i,u=(s?o:-o)/r(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=i+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=a-o,w=m*_-g*h,T=(x<0?-1:1)*r(d(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*(a/C-1),y11:D*(a/C-1)}}function x(){var d=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+d.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-i,_=T.apply(this,arguments)-i,v=o(_-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>n-1e-12)D.moveTo(h*c(g),h*f(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*c(_),m*f(_)),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):r(m*m+h*h)),R=p(o(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=u(L/m*f(I)),W=u(L/h*f(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*c(A),K=h*f(A),q=m*c(N),J=m*f(N);if(R>1e-12){var Y=h*c(j),X=h*f(j),Z=m*c(M),Q=m*f(M),$;if(v<a)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/f(s((ee*ne+te*re)/(r(ee*ee+te*te)*r(ne*ne+re*re)))/2),ae=r($[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,l(V.y01,V.x01),l(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,l(V.y01,V.x01),l(V.y11,V.x11),!k),D.arc(0,0,h,l(V.cy+V.y11,V.cx+V.x11),l(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,l(H.y11,H.x11),l(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,l(V.y01,V.x01),l(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,l(V.y01,V.x01),l(V.y11,V.x11),!k),D.arc(0,0,m,l(V.cy+V.y11,V.cx+V.x11),l(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,l(H.y11,H.x11),l(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=(+d.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-a/2;return[c(t)*e,f(t)*e]},k.innerRadius=function(t){return arguments.length?(d=typeof t==`function`?t:e(+t),k):d},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};
@@ -0,0 +1 @@
1
+ import"./chunk-K5T4RW27-Dzh5Xx8O.js";import{n as e}from"./chunk-7N4EOEYR-BFd0Oy6w.js";export{e as createArchitectureServices};