colonynote 0.0.0 → 1.0.0-beta.5
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/LICENSE +21 -0
- package/README.md +125 -0
- package/README.zh.md +125 -0
- package/bin/colonynote.js +167 -0
- package/dist/client/assets/__vite-browser-external-BIHI7g3E.js +1 -0
- package/dist/client/assets/_basePickBy-DQNnJulJ.js +1 -0
- package/dist/client/assets/_baseUniq-BpN3LXh7.js +1 -0
- package/dist/client/assets/arc-B3vMFc_-.js +1 -0
- package/dist/client/assets/architectureDiagram-2XIMDMQ5-OOyb8QzE.js +36 -0
- package/dist/client/assets/blockDiagram-WCTKOSBZ-DwP2mFgK.js +132 -0
- package/dist/client/assets/c4Diagram-IC4MRINW-uMhxnH_Q.js +10 -0
- package/dist/client/assets/channel-DJ0OuX8p.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-C1jnxL0_.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-C7X_ukOS.js +1 -0
- package/dist/client/assets/chunk-FMBD7UC4-CKwmmVSp.js +15 -0
- package/dist/client/assets/chunk-JSJVCQXG-LzNUZn6m.js +1 -0
- package/dist/client/assets/chunk-KX2RTZJC-DtCP2ik-.js +1 -0
- package/dist/client/assets/chunk-NQ4KR5QH-DbFodZDz.js +220 -0
- package/dist/client/assets/chunk-QZHKN3VN-CZ4FJos-.js +1 -0
- package/dist/client/assets/chunk-WL4C6EOR-zSxGVRYG.js +189 -0
- package/dist/client/assets/classDiagram-VBA2DB6C-CuqnwDzV.js +1 -0
- package/dist/client/assets/classDiagram-v2-RAHNMMFH-CuqnwDzV.js +1 -0
- package/dist/client/assets/clone-DVDEUA33.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-avD4tk--.js +1 -0
- package/dist/client/assets/cytoscape.esm-BQaXIfA_.js +331 -0
- package/dist/client/assets/dagre-KLK3FWXG-DKbBGu-V.js +4 -0
- package/dist/client/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/client/assets/diagram-E7M64L7V-C5Svq2ZN.js +24 -0
- package/dist/client/assets/diagram-IFDJBPK2-C__GSvhM.js +43 -0
- package/dist/client/assets/diagram-P4PSJMXO-WMOXDULa.js +24 -0
- package/dist/client/assets/erDiagram-INFDFZHY-DrqE_4E1.js +70 -0
- package/dist/client/assets/flowDiagram-PKNHOUZH-DvXRSm0W.js +162 -0
- package/dist/client/assets/ganttDiagram-A5KZAMGK-pXwiTDGG.js +292 -0
- package/dist/client/assets/gitGraphDiagram-K3NZZRJ6-BrUWlI54.js +65 -0
- package/dist/client/assets/graph-Ck0bLaxs.js +1 -0
- package/dist/client/assets/index-C0XzXrci.js +690 -0
- package/dist/client/assets/index-kembRYBc.css +1 -0
- package/dist/client/assets/infoDiagram-LFFYTUFH-w0t_PDEy.js +2 -0
- package/dist/client/assets/init-Gi6I4Gst.js +1 -0
- package/dist/client/assets/ishikawaDiagram-PHBUUO56-BVqIa8kK.js +70 -0
- package/dist/client/assets/journeyDiagram-4ABVD52K-xd00814g.js +139 -0
- package/dist/client/assets/kanban-definition-K7BYSVSG-BiIIen7f.js +89 -0
- package/dist/client/assets/katex-B1X10hvy.js +261 -0
- package/dist/client/assets/layout-D0hxU9wl.js +1 -0
- package/dist/client/assets/linear-DdKMJZL9.js +1 -0
- package/dist/client/assets/mindmap-definition-YRQLILUH-CvWGjQmo.js +68 -0
- package/dist/client/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/client/assets/pieDiagram-SKSYHLDU-BtMtKrdm.js +30 -0
- package/dist/client/assets/quadrantDiagram-337W2JSQ-CArnbrfO.js +7 -0
- package/dist/client/assets/requirementDiagram-Z7DCOOCP-CPeYj5j1.js +73 -0
- package/dist/client/assets/sankeyDiagram-WA2Y5GQK-DkkyMVo3.js +10 -0
- package/dist/client/assets/sequenceDiagram-2WXFIKYE-CgijRo3r.js +145 -0
- package/dist/client/assets/stateDiagram-RAJIS63D-BSG1BRiW.js +1 -0
- package/dist/client/assets/stateDiagram-v2-FVOUBMTO-D56dRcy_.js +1 -0
- package/dist/client/assets/timeline-definition-YZTLITO2-YJGkx10_.js +61 -0
- package/dist/client/assets/treemap-KZPCXAKY-D0zvv-Fu.js +162 -0
- package/dist/client/assets/vennDiagram-LZ73GAT5-DECCEd__.js +34 -0
- package/dist/client/assets/xychartDiagram-JWTSCODW-ErP0LobH.js +7 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/index.html +23 -0
- package/dist/client/logo.png +0 -0
- package/dist/config.js +83 -0
- package/dist/server/api.js +249 -0
- package/dist/server/app.js +14 -0
- package/dist/server/index.js +78 -0
- package/dist/server/watcher.js +37 -0
- package/package.json +101 -10
- package/index.js +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 岳晓亮
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# ColonyNote
|
|
2
|
+
|
|
3
|
+
[简体中文](./README.zh.md) | English
|
|
4
|
+
|
|
5
|
+
A modern Markdown online editor with real-time preview, Mermaid diagrams, and LaTeX support.
|
|
6
|
+
|
|
7
|
+
> **Edit server-side Markdown files** - No upload needed, edit directly in your browser!
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Server-side Editing** - Edit markdown files on server directly in browser
|
|
12
|
+
- **Real-time Preview** - Live rendering as you type
|
|
13
|
+
- **Mermaid Support** - Render flowcharts, sequence diagrams, Gantt charts, and more
|
|
14
|
+
- **LaTeX Formulas** - Full support for mathematical expressions
|
|
15
|
+
- **Code Highlighting** - Syntax highlighting for various programming languages
|
|
16
|
+
- **Dark Theme** - Follow system preference or manual toggle
|
|
17
|
+
- **Mobile Friendly** - Responsive design optimized for mobile devices
|
|
18
|
+
- **Real-time Sync** - WebSocket-based file change notifications
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g colonynote
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
### Start the server
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
colonynote [options]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Options
|
|
35
|
+
|
|
36
|
+
| Option | Alias | Description | Default |
|
|
37
|
+
|--------|-------|-------------|---------|
|
|
38
|
+
| `--root` | `-r` | Root directory for documents | Current directory |
|
|
39
|
+
| `--port` | `-p` | Server port | `5787` |
|
|
40
|
+
| `--host` | | Server host | `0.0.0.0` |
|
|
41
|
+
| `--config` | `-c` | Config file path | `colonynote.config.js` |
|
|
42
|
+
| `--help` | `-h` | Show help | |
|
|
43
|
+
| `--version` | | Show version | |
|
|
44
|
+
|
|
45
|
+
### Examples
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Start with default settings
|
|
49
|
+
colonynote
|
|
50
|
+
|
|
51
|
+
# Specify root directory
|
|
52
|
+
colonynote -r /path/to/docs
|
|
53
|
+
|
|
54
|
+
# Specify port
|
|
55
|
+
colonynote -p 3000
|
|
56
|
+
|
|
57
|
+
# Use config file
|
|
58
|
+
colonynote -c ./my-config.js
|
|
59
|
+
|
|
60
|
+
# Combine options
|
|
61
|
+
colonynote -r ./docs -p 8080
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Configuration
|
|
65
|
+
|
|
66
|
+
Create a `colonynote.config.js` file in your project root:
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
export default {
|
|
70
|
+
root: './docs', // Root directory for documents
|
|
71
|
+
port: 5787, // Server port
|
|
72
|
+
host: '0.0.0.0', // Server host
|
|
73
|
+
allowedExtensions: ['.md', '.markdown'], // Supported file extensions
|
|
74
|
+
theme: {
|
|
75
|
+
default: 'system', // Theme: light | dark | system
|
|
76
|
+
},
|
|
77
|
+
editor: {
|
|
78
|
+
autosave: true, // Auto save
|
|
79
|
+
debounceMs: 300, // Save debounce delay
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Development
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Clone the repository
|
|
88
|
+
git clone https://github.com/opencolony/note.git
|
|
89
|
+
|
|
90
|
+
# Install dependencies
|
|
91
|
+
npm install
|
|
92
|
+
|
|
93
|
+
# Start development server (backend + frontend with hot reload)
|
|
94
|
+
npm run dev
|
|
95
|
+
|
|
96
|
+
# Frontend only (Vite dev server, port 5787)
|
|
97
|
+
npm run dev:frontend
|
|
98
|
+
|
|
99
|
+
# Backend only (Hono server, port 5788)
|
|
100
|
+
npm run dev:backend
|
|
101
|
+
|
|
102
|
+
# Build for production
|
|
103
|
+
npm run build
|
|
104
|
+
|
|
105
|
+
# Run production build
|
|
106
|
+
npm start
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Tech Stack
|
|
110
|
+
|
|
111
|
+
- **Backend**: Hono, @hono/node-server, ws (WebSocket)
|
|
112
|
+
- **Frontend**: React 18, Vite, Tailwind CSS v4
|
|
113
|
+
- **UI Components**: shadcn/ui (Radix UI)
|
|
114
|
+
- **Editor**: TipTap 3, tiptap-markdown
|
|
115
|
+
- **Diagrams**: Mermaid
|
|
116
|
+
- **LaTeX**: KaTeX
|
|
117
|
+
- **Icons**: lucide-react
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
MIT
|
|
122
|
+
|
|
123
|
+
## Author
|
|
124
|
+
|
|
125
|
+
岳晓亮 <hi@yuexiaoliang.com>
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# ColonyNote
|
|
2
|
+
|
|
3
|
+
[English](./README.md) | 简体中文
|
|
4
|
+
|
|
5
|
+
一个支持实时预览、Mermaid 图表和 LaTeX 公式的 Markdown 在线编辑器。
|
|
6
|
+
|
|
7
|
+
> **在线编辑服务端 Markdown 文件** - 无需上传下载,直接在浏览器中编辑!
|
|
8
|
+
|
|
9
|
+
## 功能特性
|
|
10
|
+
|
|
11
|
+
- **服务端编辑** - 在浏览器中直接编辑服务器上的 Markdown 文件
|
|
12
|
+
- **实时预览** - 实时渲染输入内容
|
|
13
|
+
- **Mermaid 支持** - 渲染流程图、时序图、甘特图等
|
|
14
|
+
- **LaTeX 公式** - 完整支持数学公式
|
|
15
|
+
- **代码高亮** - 支持多种编程语言的语法高亮
|
|
16
|
+
- **深色主题** - 跟随系统偏好或手动切换
|
|
17
|
+
- **移动端适配** - 响应式设计,适配移动设备
|
|
18
|
+
- **实时同步** - 基于 WebSocket 的文件变更通知
|
|
19
|
+
|
|
20
|
+
## 安装
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g colonynote
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 使用方法
|
|
27
|
+
|
|
28
|
+
### 启动服务器
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
colonynote [选项]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 选项
|
|
35
|
+
|
|
36
|
+
| 选项 | 别名 | 描述 | 默认值 |
|
|
37
|
+
|------|------|------|--------|
|
|
38
|
+
| `--root` | `-r` | 文档根目录 | 当前目录 |
|
|
39
|
+
| `--port` | `-p` | 服务器端口 | `5787` |
|
|
40
|
+
| `--host` | | 服务器地址 | `0.0.0.0` |
|
|
41
|
+
| `--config` | `-c` | 配置文件路径 | `colonynote.config.js` |
|
|
42
|
+
| `--help` | `-h` | 显示帮助 | |
|
|
43
|
+
| `--version` | | 显示版本 | |
|
|
44
|
+
|
|
45
|
+
### 示例
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 使用默认设置启动
|
|
49
|
+
colonynote
|
|
50
|
+
|
|
51
|
+
# 指定根目录
|
|
52
|
+
colonynote -r /path/to/docs
|
|
53
|
+
|
|
54
|
+
# 指定端口
|
|
55
|
+
colonynote -p 3000
|
|
56
|
+
|
|
57
|
+
# 使用配置文件
|
|
58
|
+
colonynote -c ./my-config.js
|
|
59
|
+
|
|
60
|
+
# 组合选项
|
|
61
|
+
colonynote -r ./docs -p 8080
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 配置
|
|
65
|
+
|
|
66
|
+
在项目根目录创建 `colonynote.config.js` 文件:
|
|
67
|
+
|
|
68
|
+
```javascript
|
|
69
|
+
export default {
|
|
70
|
+
root: './docs', // 文档根目录
|
|
71
|
+
port: 5787, // 服务器端口
|
|
72
|
+
host: '0.0.0.0', // 服务器地址
|
|
73
|
+
allowedExtensions: ['.md', '.markdown'], // 支持的文件扩展名
|
|
74
|
+
theme: {
|
|
75
|
+
default: 'system', // 主题:light | dark | system
|
|
76
|
+
},
|
|
77
|
+
editor: {
|
|
78
|
+
autosave: true, // 自动保存
|
|
79
|
+
debounceMs: 300, // 保存防抖延迟
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 开发
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# 克隆仓库
|
|
88
|
+
git clone https://github.com/opencolony/note.git
|
|
89
|
+
|
|
90
|
+
# 安装依赖
|
|
91
|
+
npm install
|
|
92
|
+
|
|
93
|
+
# 启动开发服务器(后端 + 前端热更新)
|
|
94
|
+
npm run dev
|
|
95
|
+
|
|
96
|
+
# 仅前端开发(Vite 开发服务器,端口 5787)
|
|
97
|
+
npm run dev:frontend
|
|
98
|
+
|
|
99
|
+
# 仅后端开发(Hono 服务器,端口 5788)
|
|
100
|
+
npm run dev:backend
|
|
101
|
+
|
|
102
|
+
# 构建生产版本
|
|
103
|
+
npm run build
|
|
104
|
+
|
|
105
|
+
# 运行生产版本
|
|
106
|
+
npm start
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 技术栈
|
|
110
|
+
|
|
111
|
+
- **后端**: Hono, @hono/node-server, ws (WebSocket)
|
|
112
|
+
- **前端**: React 18, Vite, Tailwind CSS v4
|
|
113
|
+
- **UI 组件**: shadcn/ui (Radix UI)
|
|
114
|
+
- **编辑器**: TipTap 3, tiptap-markdown
|
|
115
|
+
- **图表**: Mermaid
|
|
116
|
+
- **LaTeX 公式**: KaTeX
|
|
117
|
+
- **图标**: lucide-react
|
|
118
|
+
|
|
119
|
+
## 许可证
|
|
120
|
+
|
|
121
|
+
MIT
|
|
122
|
+
|
|
123
|
+
## 作者
|
|
124
|
+
|
|
125
|
+
岳晓亮 <hi@yuexiaoliang.com>
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { serve } from '@hono/node-server'
|
|
4
|
+
import { Hono } from 'hono'
|
|
5
|
+
import { cors } from 'hono/cors'
|
|
6
|
+
import { createFileRouter } from '../dist/server/api.js'
|
|
7
|
+
import { loadConfig } from '../dist/config.js'
|
|
8
|
+
import { setupWatcher } from '../dist/server/watcher.js'
|
|
9
|
+
import { WebSocketServer, WebSocket } from 'ws'
|
|
10
|
+
import { readFileSync, existsSync } from 'fs'
|
|
11
|
+
import { fileURLToPath } from 'url'
|
|
12
|
+
import { dirname, join, extname } from 'path'
|
|
13
|
+
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
15
|
+
const __dirname = dirname(__filename)
|
|
16
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'))
|
|
17
|
+
|
|
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
|
+
}
|
|
48
|
+
|
|
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
|
+
}
|
|
56
|
+
|
|
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
|
+
}
|
|
74
|
+
|
|
75
|
+
if (args.version) {
|
|
76
|
+
console.log(`colonynote v${pkg.version}`)
|
|
77
|
+
process.exit(0)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
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
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const app = new Hono()
|
|
94
|
+
app.use('*', cors())
|
|
95
|
+
|
|
96
|
+
const fileRouter = createFileRouter(config)
|
|
97
|
+
app.route('/api/files', fileRouter)
|
|
98
|
+
|
|
99
|
+
const publicDir = join(dirname(fileURLToPath(import.meta.url)), '../dist/client')
|
|
100
|
+
|
|
101
|
+
app.get('/assets/*', async (c) => {
|
|
102
|
+
const filePath = c.req.path.replace('/assets', '')
|
|
103
|
+
const fullPath = join(publicDir, 'assets', filePath)
|
|
104
|
+
if (!existsSync(fullPath)) {
|
|
105
|
+
return c.notFound()
|
|
106
|
+
}
|
|
107
|
+
const content = readFileSync(fullPath)
|
|
108
|
+
const ext = extname(filePath)
|
|
109
|
+
const contentType = ext === '.js' ? 'application/javascript' : ext === '.css' ? 'text/css' : 'text/plain'
|
|
110
|
+
return new Response(content, { headers: { 'Content-Type': contentType } })
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
app.get('*', async (c) => {
|
|
114
|
+
const indexPath = join(publicDir, 'index.html')
|
|
115
|
+
if (existsSync(indexPath)) {
|
|
116
|
+
const content = readFileSync(indexPath, 'utf-8')
|
|
117
|
+
return new Response(content, {
|
|
118
|
+
headers: { 'Content-Type': 'text/html' },
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
return c.notFound()
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
const server = serve({
|
|
125
|
+
fetch: app.fetch,
|
|
126
|
+
port: config.port,
|
|
127
|
+
hostname: config.host,
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
const clients = new Set()
|
|
131
|
+
const wss = new WebSocketServer({ noServer: true })
|
|
132
|
+
|
|
133
|
+
wss.on('connection', (ws) => {
|
|
134
|
+
clients.add(ws)
|
|
135
|
+
ws.on('close', () => clients.delete(ws))
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
server.on('upgrade', (request, socket, head) => {
|
|
139
|
+
if (request.url === '/ws') {
|
|
140
|
+
wss.handleUpgrade(request, socket, head, (ws) => {
|
|
141
|
+
wss.emit('connection', ws, request)
|
|
142
|
+
})
|
|
143
|
+
}
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
setupWatcher(config, {
|
|
147
|
+
onFileChange: (event, path) => {
|
|
148
|
+
const relativePath = path.replace(config.root, '')
|
|
149
|
+
const message = JSON.stringify({ type: 'file:change', event, path: relativePath })
|
|
150
|
+
clients.forEach((client) => {
|
|
151
|
+
if (client.readyState === WebSocket.OPEN) {
|
|
152
|
+
client.send(message)
|
|
153
|
+
}
|
|
154
|
+
})
|
|
155
|
+
},
|
|
156
|
+
})
|
|
157
|
+
|
|
158
|
+
console.log(`\n ColonyNote is running!\n`)
|
|
159
|
+
console.log(` Local: http://localhost:${config.port}`)
|
|
160
|
+
console.log(` Network: http://${config.host}:${config.port}`)
|
|
161
|
+
console.log(` Root: ${config.root}\n`)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
main().catch((e) => {
|
|
165
|
+
console.error('Failed to start:', e)
|
|
166
|
+
process.exit(1)
|
|
167
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-BpN3LXh7.js";import{aU as g,aC as $,aV as E,aW as F,aX as M,aY as l,aZ as B,a_ as T,a$ as y,b0 as S}from"./index-C0XzXrci.js";var C=/\s/;function G(n){for(var r=n.length;r--&&C.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var o=NaN,R=/^[-+]0x[0-9a-f]+$/i,W=/^0b[01]+$/i,X=/^0o[0-7]+$/i,Y=parseInt;function q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=W.test(n);return t||X.test(n)?Y(n.slice(2),t?2:8):R.test(n)?o:+n}var v=1/0,z=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=q(n),n===v||n===-v){var r=n<0?-1:1;return r*z}return n===n?n:0}function U(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,Z=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!Z.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:U(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=D(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,U as j,un as l,gn as m,K as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{bh as S,bi as Rn,aZ as T,bj as w,aY as sn,bk as xn,bl as mn,bm as Cn,bn as un,bo as x,aW as U,bp as Mn,bq as on,br as Fn,bs as E,bf as gn,bt as R,aU as ln,bu as Dn,bv as D,bw as Gn,bx as Un,by as _,b0 as Bn,bz as Nn,aX as Kn,bA as X,bB as jn,bC as Hn,a$ as qn,a_ as cn,bd as Yn,bD as C}from"./index-C0XzXrci.js";var Zn="[object Symbol]";function B(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(B(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||B(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||B(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Br="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Br:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Un(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Bn(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Be="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Be:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,B as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
|
|
@@ -0,0 +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-C0XzXrci.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};
|