mcp-excalidraw-server 1.0.1 → 1.0.3

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 (107) hide show
  1. package/README.md +88 -73
  2. package/dist/assets/{ar-SA-G6X2FPQ2-BS3fMnev.js → ar-SA-G6X2FPQ2-qUMRKznH.js} +1 -1
  3. package/dist/assets/{arc-0Fwkaye8.js → arc-Dl52aH5l.js} +1 -1
  4. package/dist/assets/{az-AZ-76LH7QW2-DNgzWA8S.js → az-AZ-76LH7QW2-_i03OJEf.js} +1 -1
  5. package/dist/assets/{bg-BG-XCXSNQG7-CULoJKdI.js → bg-BG-XCXSNQG7-DET42pEl.js} +1 -1
  6. package/dist/assets/{blockDiagram-38ab4fdb-CVOkr1Ma.js → blockDiagram-38ab4fdb-ChvZhBD4.js} +1 -1
  7. package/dist/assets/{bn-BD-2XOGV67Q-9DmWphrb.js → bn-BD-2XOGV67Q-Dek_CPv5.js} +1 -1
  8. package/dist/assets/{c4Diagram-3d4e48cf-BwpfSRgq.js → c4Diagram-3d4e48cf-C4cnrCbf.js} +1 -1
  9. package/dist/assets/{ca-ES-6MX7JW3Y-gYoEYP36.js → ca-ES-6MX7JW3Y-BW0U5XdD.js} +1 -1
  10. package/dist/assets/channel-DwOBcjcx.js +1 -0
  11. package/dist/assets/{classDiagram-70f12bd4-ftK2tRy5.js → classDiagram-70f12bd4-BghzNus6.js} +1 -1
  12. package/dist/assets/{classDiagram-v2-f2320105--Nu78BDB.js → classDiagram-v2-f2320105-CdeQcsZg.js} +1 -1
  13. package/dist/assets/clone--6RafNlE.js +1 -0
  14. package/dist/assets/{createText-2e5e7dd3-DPYwmS_z.js → createText-2e5e7dd3-DOdc1FUH.js} +1 -1
  15. package/dist/assets/{cs-CZ-2BRQDIVT-DgwhrQZi.js → cs-CZ-2BRQDIVT-D_QWlFdu.js} +1 -1
  16. package/dist/assets/{da-DK-5WZEPLOC-BL1Ng5As.js → da-DK-5WZEPLOC-gf7mOoWv.js} +1 -1
  17. package/dist/assets/{de-DE-XR44H4JA-Cw-ySDmq.js → de-DE-XR44H4JA-4PO8yBVA.js} +1 -1
  18. package/dist/assets/{edges-e0da2a9e-CB2w3jS2.js → edges-e0da2a9e-GhlmD_OT.js} +1 -1
  19. package/dist/assets/{el-GR-BZB4AONW-BPJAfWZm.js → el-GR-BZB4AONW-DUAcyCiM.js} +1 -1
  20. package/dist/assets/{erDiagram-9861fffd-VwqM-D3G.js → erDiagram-9861fffd-a_anpvsT.js} +1 -1
  21. package/dist/assets/{es-ES-U4NZUMDT-oMrzPWSn.js → es-ES-U4NZUMDT-B0m4dVcg.js} +1 -1
  22. package/dist/assets/{eu-ES-A7QVB2H4-DFshkDl1.js → eu-ES-A7QVB2H4-BP1QZCLa.js} +1 -1
  23. package/dist/assets/{fa-IR-HGAKTJCU-DVU2rysM.js → fa-IR-HGAKTJCU-DIwOUeNI.js} +1 -1
  24. package/dist/assets/{fi-FI-Z5N7JZ37-BFKGqZcw.js → fi-FI-Z5N7JZ37-RNyDbRmW.js} +1 -1
  25. package/dist/assets/{flowDb-956e92f1-CZj2LmRK.js → flowDb-956e92f1-DpL5j40X.js} +1 -1
  26. package/dist/assets/{flowDiagram-66a62f08-D_vhln5h.js → flowDiagram-66a62f08-BMGTcM52.js} +1 -1
  27. package/dist/assets/flowDiagram-v2-96b9c2cf-Bz1jDaNr.js +1 -0
  28. package/dist/assets/{flowchart-elk-definition-4a651766-BJYKnLZA.js → flowchart-elk-definition-4a651766-B2Ti2x2r.js} +1 -1
  29. package/dist/assets/{fr-FR-RHASNOE6-M3Leevu1.js → fr-FR-RHASNOE6-CAV9GN4O.js} +1 -1
  30. package/dist/assets/{ganttDiagram-c361ad54-Dl0RXJiR.js → ganttDiagram-c361ad54-TU3HkAvj.js} +1 -1
  31. package/dist/assets/{gitGraphDiagram-72cf32ee-Cckr93z5.js → gitGraphDiagram-72cf32ee-Cnb81Tq3.js} +1 -1
  32. package/dist/assets/{gl-ES-HMX3MZ6V-CM77q-gv.js → gl-ES-HMX3MZ6V-YTRIEXeJ.js} +1 -1
  33. package/dist/assets/{graph-CsvWB58Y.js → graph-CkOf80-j.js} +1 -1
  34. package/dist/assets/{he-IL-6SHJWFNN-B3UI_ebx.js → he-IL-6SHJWFNN-9Y97HENf.js} +1 -1
  35. package/dist/assets/{hi-IN-IWLTKZ5I-DUAO_Nd9.js → hi-IN-IWLTKZ5I-CR1G8wpe.js} +1 -1
  36. package/dist/assets/{hu-HU-A5ZG7DT2-Dm7uZbxs.js → hu-HU-A5ZG7DT2-DX03tp-R.js} +1 -1
  37. package/dist/assets/{id-ID-SAP4L64H-sn247bNe.js → id-ID-SAP4L64H-7qPP39Kq.js} +1 -1
  38. package/dist/assets/{index-3862675e-pSTifqE7.js → index-3862675e-C8kgVt5Z.js} +1 -1
  39. package/dist/assets/{index-CMTjDsOp.js → index-D2dwBAqU.js} +4 -4
  40. package/dist/assets/{infoDiagram-f8f76790-Cy0QfHmF.js → infoDiagram-f8f76790-B_V9kL5r.js} +1 -1
  41. package/dist/assets/{it-IT-JPQ66NNP-C3cx3eLC.js → it-IT-JPQ66NNP-A8q-oWFm.js} +1 -1
  42. package/dist/assets/{ja-JP-DBVTYXUO-P2fPONfc.js → ja-JP-DBVTYXUO-0-BzIH6B.js} +1 -1
  43. package/dist/assets/{journeyDiagram-49397b02-AWYgjzgS.js → journeyDiagram-49397b02-DmVusBFi.js} +1 -1
  44. package/dist/assets/{kaa-6HZHGXH3-wmoL7do0.js → kaa-6HZHGXH3-BefcB0dp.js} +1 -1
  45. package/dist/assets/{kab-KAB-ZGHBKWFO-DNNu0Xkz.js → kab-KAB-ZGHBKWFO-BI7TKDqn.js} +1 -1
  46. package/dist/assets/{kk-KZ-P5N5QNE5-BZEEoSCw.js → kk-KZ-P5N5QNE5-JMWZKOT9.js} +1 -1
  47. package/dist/assets/{km-KH-HSX4SM5Z-4Sf3SjAI.js → km-KH-HSX4SM5Z-BZv-SNIA.js} +1 -1
  48. package/dist/assets/{ko-KR-MTYHY66A-DTzTxHW5.js → ko-KR-MTYHY66A-VL9ePyT_.js} +1 -1
  49. package/dist/assets/{ku-TR-6OUDTVRD-eWqCXim6.js → ku-TR-6OUDTVRD-WXLYGCW3.js} +1 -1
  50. package/dist/assets/{layout-ErVDAsYA.js → layout-EQ3cDdPI.js} +1 -1
  51. package/dist/assets/{line-Cvp4skCK.js → line-DVSD4YuA.js} +1 -1
  52. package/dist/assets/{linear-DlBkj_hR.js → linear-mbBIx3VI.js} +1 -1
  53. package/dist/assets/{lt-LT-XHIRWOB4-BzqmXLnL.js → lt-LT-XHIRWOB4-Cv2CooHj.js} +1 -1
  54. package/dist/assets/{lv-LV-5QDEKY6T-alH_HCjW.js → lv-LV-5QDEKY6T-BHHXu-A8.js} +1 -1
  55. package/dist/assets/{main-C1TkgC3p.js → main-BDhqALRb.js} +50 -50
  56. package/dist/assets/{mindmap-definition-fc14e90a-DQB0p-81.js → mindmap-definition-fc14e90a-CTGSqKBc.js} +1 -1
  57. package/dist/assets/{mr-IN-CRQNXWMA-Cq2VIpVa.js → mr-IN-CRQNXWMA-CaV0UqAQ.js} +1 -1
  58. package/dist/assets/{my-MM-5M5IBNSE-CBPHDdNv.js → my-MM-5M5IBNSE-B7_hW456.js} +1 -1
  59. package/dist/assets/{nb-NO-T6EIAALU-BUNp_A07.js → nb-NO-T6EIAALU-Crh0PqoK.js} +1 -1
  60. package/dist/assets/{nl-NL-IS3SIHDZ-CNz8gWhx.js → nl-NL-IS3SIHDZ-BK0dpmA4.js} +1 -1
  61. package/dist/assets/{nn-NO-6E72VCQL-BFz6U-AT.js → nn-NO-6E72VCQL-yAPpyJij.js} +1 -1
  62. package/dist/assets/{oc-FR-POXYY2M6-BjY1Oz8X.js → oc-FR-POXYY2M6-APC-Va25.js} +1 -1
  63. package/dist/assets/{pa-IN-N4M65BXN-bLY9e9o3.js → pa-IN-N4M65BXN-Bt84iMLr.js} +1 -1
  64. package/dist/assets/{pica-JUO0Loj6.js → pica-D2FXh0MS.js} +1 -1
  65. package/dist/assets/{pieDiagram-8a3498a8-BD6Rsa6P.js → pieDiagram-8a3498a8-CjNN4dpj.js} +1 -1
  66. package/dist/assets/{pl-PL-T2D74RX3-CpLUuJZ4.js → pl-PL-T2D74RX3-P1BXCuxt.js} +1 -1
  67. package/dist/assets/{pt-BR-5N22H2LF-DXSmPIb5.js → pt-BR-5N22H2LF-DPGp_1S8.js} +1 -1
  68. package/dist/assets/{pt-PT-UZXXM6DQ-CtilzVM5.js → pt-PT-UZXXM6DQ-BtIUQ-0U.js} +1 -1
  69. package/dist/assets/{quadrantDiagram-120e2f19-CvG-FK5I.js → quadrantDiagram-120e2f19-_a4jtpH6.js} +1 -1
  70. package/dist/assets/{requirementDiagram-deff3bca-CVh-bBIY.js → requirementDiagram-deff3bca-ybPXbjm9.js} +1 -1
  71. package/dist/assets/{ro-RO-JPDTUUEW-4SIE29UH.js → ro-RO-JPDTUUEW-J4zNVhAC.js} +1 -1
  72. package/dist/assets/{ru-RU-B4JR7IUQ-yWKAM4lo.js → ru-RU-B4JR7IUQ-Cp_vlib2.js} +1 -1
  73. package/dist/assets/{sankeyDiagram-04a897e0-Bb-ywaQF.js → sankeyDiagram-04a897e0-DlNlVK2S.js} +1 -1
  74. package/dist/assets/{sequenceDiagram-704730f1-BZu5e-R7.js → sequenceDiagram-704730f1-D261ut_5.js} +1 -1
  75. package/dist/assets/{si-LK-N5RQ5JYF-D-XE0eOh.js → si-LK-N5RQ5JYF-CHzf-e7S.js} +1 -1
  76. package/dist/assets/{sk-SK-C5VTKIMK-DTdiYCrX.js → sk-SK-C5VTKIMK-C4OBCYet.js} +1 -1
  77. package/dist/assets/{sl-SI-NN7IZMDC-qcTJE3hs.js → sl-SI-NN7IZMDC-DOKYGxnN.js} +1 -1
  78. package/dist/assets/{stateDiagram-587899a1-CoklS1cy.js → stateDiagram-587899a1-DSWmUUhT.js} +1 -1
  79. package/dist/assets/{stateDiagram-v2-d93cdb3a-JBfFG9Hu.js → stateDiagram-v2-d93cdb3a-DRJxcv79.js} +1 -1
  80. package/dist/assets/{styles-6aaf32cf-Cg7CSuxw.js → styles-6aaf32cf-BS9_GVDf.js} +1 -1
  81. package/dist/assets/{styles-9a916d00-Ny9GZRfC.js → styles-9a916d00-CP8oGpqa.js} +1 -1
  82. package/dist/assets/{styles-c10674c1-BMpWBEge.js → styles-c10674c1-BVWa9Osk.js} +1 -1
  83. package/dist/assets/{subset-shared.chunk-tHzjs2ro.js → subset-shared.chunk-6yLKEvTp.js} +1 -1
  84. package/dist/assets/{subset-worker.chunk-CuKy9sB1.js → subset-worker.chunk-BWYD1X9V.js} +1 -1
  85. package/dist/assets/{sv-SE-XGPEYMSR-Bi6tm-oG.js → sv-SE-XGPEYMSR-BKCj9bGh.js} +1 -1
  86. package/dist/assets/{svgDrawCommon-08f97a94-CEEsVKXL.js → svgDrawCommon-08f97a94-D7hiz2RL.js} +1 -1
  87. package/dist/assets/{ta-IN-2NMHFXQM-C7Igaqv2.js → ta-IN-2NMHFXQM-Cxn4Bwph.js} +1 -1
  88. package/dist/assets/{th-TH-HPSO5L25-BdAfwagC.js → th-TH-HPSO5L25-DfNQCUQQ.js} +1 -1
  89. package/dist/assets/{timeline-definition-85554ec2-DsgJKruU.js → timeline-definition-85554ec2-DmpGKyi0.js} +1 -1
  90. package/dist/assets/{tr-TR-DEFEU3FU-BPBRoOZh.js → tr-TR-DEFEU3FU-Bs5MFek7.js} +1 -1
  91. package/dist/assets/{uk-UA-QMV73CPH-CeJGl_H3.js → uk-UA-QMV73CPH-BOzYxvyx.js} +1 -1
  92. package/dist/assets/{vi-VN-M7AON7JQ-D537-quZ.js → vi-VN-M7AON7JQ-0OnI6Hqe.js} +1 -1
  93. package/dist/assets/{xychartDiagram-e933f94c-DqfSpZR2.js → xychartDiagram-e933f94c-CUugqGbW.js} +1 -1
  94. package/dist/assets/{zh-CN-LNUGB5OW-Bd8rr_cr.js → zh-CN-LNUGB5OW-nS_6Oo4b.js} +1 -1
  95. package/dist/assets/{zh-HK-E62DVLB3-Y1MdNiXR.js → zh-HK-E62DVLB3-6LpDueOn.js} +1 -1
  96. package/dist/assets/{zh-TW-RAJ6MFWO-BAzsCe6B.js → zh-TW-RAJ6MFWO-oqfOcjY_.js} +1 -1
  97. package/dist/frontend/index.html +1 -1
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/types.d.ts +0 -1
  100. package/dist/types.d.ts.map +1 -1
  101. package/package.json +1 -1
  102. package/src/index.js +279 -254
  103. package/src/server.js +8 -0
  104. package/src/types.js +1 -2
  105. package/dist/assets/channel-BgX0NHoH.js +0 -1
  106. package/dist/assets/clone-sj1RjrIX.js +0 -1
  107. package/dist/assets/flowDiagram-v2-96b9c2cf-CShVLez9.js +0 -1
package/README.md CHANGED
@@ -2,7 +2,24 @@
2
2
 
3
3
  A comprehensive system that combines **Excalidraw's powerful drawing capabilities** with **Model Context Protocol (MCP)** integration, enabling AI agents to create and manipulate diagrams in real-time on a live canvas.
4
4
 
5
- > **🚀 NEW: Now available as `mcp-excalidraw-server` on npm!** Install with `npm install -g mcp-excalidraw-server` or run directly with `npx mcp-excalidraw-server`.
5
+ ## 🚦 Current Status & Version Information
6
+
7
+ > **📋 Choose Your Installation Method**
8
+
9
+ | Version | Status | Recommended For |
10
+ |---------|--------|----------------|
11
+ | **Local Development** | ✅ **FULLY TESTED** | **🎯 RECOMMENDED** |
12
+ | **NPM Published** | 🔧 **DEBUGGING IN PROGRESS** | Development testing |
13
+ | **Docker Version** | 🔧 **UNDER DEVELOPMENT** | Future deployment |
14
+
15
+ ### **Current Recommendation: Local Development**
16
+
17
+ For the most stable experience, we recommend using the local development setup. We're actively working on improving the NPM package and Docker deployment options.
18
+
19
+ ### **Development Notes**
20
+ - **NPM Package**: Currently debugging MCP tool registration issues
21
+ - **Docker Version**: Improving canvas synchronization reliability
22
+ - **Local Version**: ✅ All features fully functional
6
23
 
7
24
  ## 🚀 What This System Does
8
25
 
@@ -12,6 +29,14 @@ A comprehensive system that combines **Excalidraw's powerful drawing capabilitie
12
29
  - **🔄 WebSocket Updates**: Live synchronization across multiple connected clients
13
30
  - **🏗️ Production Ready**: Clean, minimal UI suitable for end users
14
31
 
32
+ ## 🎥 Demo Video
33
+
34
+ > **See MCP Excalidraw in Action!**
35
+
36
+ [![MCP Excalidraw Demo](https://img.youtube.com/vi/RRN7AF7QIew/maxresdefault.jpg)](https://youtu.be/RRN7AF7QIew)
37
+
38
+ *Watch how AI agents create and manipulate diagrams in real-time on the live canvas*
39
+
15
40
  ## 🏛️ Architecture Overview
16
41
 
17
42
  ```
@@ -53,68 +78,57 @@ A comprehensive system that combines **Excalidraw's powerful drawing capabilitie
53
78
 
54
79
  ## 📦 Installation & Setup
55
80
 
56
- ### **Prerequisites**
57
- - Node.js 16+
58
- - npm or yarn
81
+ ### **✅ Recommended: Local Development Setup**
59
82
 
60
- ### **Option 1: NPM Installation (Recommended)**
83
+ > **Most stable and feature-complete option**
61
84
 
62
- #### **Global Installation**
63
- ```bash
64
- # Install globally
65
- npm install -g mcp-excalidraw-server
66
-
67
- # Run the server
68
- mcp-excalidraw-server
69
- ```
70
-
71
- #### **Run Without Installation**
72
- ```bash
73
- # Run directly with npx (no installation needed)
74
- npx mcp-excalidraw-server
75
- ```
76
-
77
- #### **Local Project Installation**
78
- ```bash
79
- # Install in your project
80
- npm install mcp-excalidraw-server
81
-
82
- # Run from node_modules
83
- npx mcp-excalidraw-server
84
- ```
85
-
86
- ### **Option 2: Clone from Source**
85
+ #### **1. Clone the Repository**
87
86
  ```bash
88
87
  git clone https://github.com/yctimlin/mcp_excalidraw.git
89
88
  cd mcp_excalidraw
90
89
  npm install
91
90
  ```
92
91
 
93
- ### **2. Build the Frontend**
92
+ #### **2. Build the Frontend**
94
93
  ```bash
95
94
  npm run build
96
95
  ```
97
96
 
98
- ### **3. Start the System**
97
+ #### **3. Start the System**
99
98
 
100
- #### **Option A: Production Mode**
99
+ ##### **Option A: Production Mode (Recommended)**
101
100
  ```bash
102
101
  # Start canvas server (serves frontend + API)
103
102
  npm run canvas
104
103
  ```
105
104
 
106
- #### **Option B: Development Mode**
105
+ ##### **Option B: Development Mode**
107
106
  ```bash
108
107
  # Start both canvas server and Vite dev server
109
108
  npm run dev
110
109
  ```
111
110
 
112
- ### **4. Access the Canvas**
111
+ #### **4. Access the Canvas**
113
112
  Open your browser and navigate to:
114
113
  ```
115
114
  http://localhost:3000
116
115
  ```
117
116
 
117
+ ### **🔧 Alternative Installation Methods (In Development)**
118
+
119
+ #### **NPM Package (Beta)**
120
+ ```bash
121
+ # Currently debugging tool registration - feedback welcome!
122
+ npm install -g mcp-excalidraw-server
123
+ npx mcp-excalidraw-server
124
+ ```
125
+
126
+ #### **Docker Version (Coming Soon)**
127
+ ```bash
128
+ # Canvas sync improvements in progress
129
+ docker run -p 3000:3000 mcp-excalidraw-server
130
+ ```
131
+
118
132
  ## 🔧 Available Scripts
119
133
 
120
134
  | Script | Description |
@@ -202,65 +216,63 @@ The MCP server provides these tools for creating visual diagrams:
202
216
 
203
217
  ## 🔌 Integration with Claude Desktop
204
218
 
205
- ### **Using NPM Package (Recommended)**
219
+ ### **✅ Recommended: Using Local Installation**
206
220
 
207
- Add this configuration to your `claude_desktop_config.json`:
221
+ For the **local development version** (most stable), add this configuration to your `claude_desktop_config.json`:
208
222
 
209
223
  ```json
210
224
  {
211
225
  "mcpServers": {
212
226
  "excalidraw": {
213
- "command": "npx",
214
- "args": ["-y", "mcp-excalidraw-server"]
227
+ "command": "node",
228
+ "args": ["/absolute/path/to/mcp_excalidraw/src/index.js"]
215
229
  }
216
230
  }
217
231
  }
218
232
  ```
219
233
 
220
- ### **Using Global Installation**
234
+ **Important**: Replace `/absolute/path/to/mcp_excalidraw` with the actual absolute path to your cloned repository.
221
235
 
222
- If you installed globally with `npm install -g mcp-excalidraw-server`:
236
+ ### **🔧 Alternative Configurations (Beta)**
223
237
 
238
+ #### **NPM Package (Beta Testing)**
224
239
  ```json
225
240
  {
226
241
  "mcpServers": {
227
242
  "excalidraw": {
228
- "command": "mcp-excalidraw-server",
229
- "args": []
243
+ "command": "npx",
244
+ "args": ["-y", "mcp-excalidraw-server"]
230
245
  }
231
246
  }
232
247
  }
233
248
  ```
249
+ *Currently debugging tool registration - let us know if you encounter issues!*
234
250
 
235
- ### **Using Source Installation**
236
-
237
- If you cloned from source:
238
-
251
+ #### **Docker Version (Coming Soon)**
239
252
  ```json
240
253
  {
241
254
  "mcpServers": {
242
255
  "excalidraw": {
243
- "command": "node",
244
- "args": ["/path/to/mcp_excalidraw/src/index.js"]
256
+ "command": "docker",
257
+ "args": ["run", "-i", "--rm", "mcp-excalidraw-server"]
245
258
  }
246
259
  }
247
260
  }
248
261
  ```
249
-
250
- **Important**: Replace `/path/to/mcp_excalidraw` with the actual absolute path to your installation.
262
+ *Canvas sync improvements in progress.*
251
263
 
252
264
  ## 🔧 Integration with Other Tools
253
265
 
254
266
  ### **Cursor IDE**
255
267
 
256
- Add to your `claude_desktop_config.json` or MCP settings:
268
+ Add to your `.cursor/mcp.json`:
257
269
 
258
270
  ```json
259
271
  {
260
272
  "mcpServers": {
261
273
  "excalidraw": {
262
- "command": "npx",
263
- "args": ["-y", "mcp-excalidraw-server"]
274
+ "command": "node",
275
+ "args": ["/absolute/path/to/mcp_excalidraw/src/index.js"]
264
276
  }
265
277
  }
266
278
  }
@@ -275,30 +287,14 @@ For VS Code MCP extension, add to your settings:
275
287
  "mcp": {
276
288
  "servers": {
277
289
  "excalidraw": {
278
- "command": "npx",
279
- "args": ["-y", "mcp-excalidraw-server"]
290
+ "command": "node",
291
+ "args": ["/absolute/path/to/mcp_excalidraw/src/index.js"]
280
292
  }
281
293
  }
282
294
  }
283
295
  }
284
296
  ```
285
297
 
286
- ### **Command Line Usage**
287
-
288
- ```bash
289
- # Run directly with npx (no installation needed)
290
- npx mcp-excalidraw-server
291
-
292
- # Run with global installation
293
- mcp-excalidraw-server
294
-
295
- # Run with custom canvas server URL
296
- EXPRESS_SERVER_URL=http://localhost:8080 npx mcp-excalidraw-server
297
-
298
- # Run with debug logging
299
- DEBUG=true npx mcp-excalidraw-server
300
- ```
301
-
302
298
  ## 🛠️ Environment Variables
303
299
 
304
300
  | Variable | Default | Description |
@@ -365,6 +361,16 @@ The canvas server provides these REST endpoints:
365
361
 
366
362
  ## 🐛 Troubleshooting
367
363
 
364
+ ### **NPM Package Issues**
365
+ - **Symptoms**: MCP tools not registering properly
366
+ - **Temporary Solution**: Use local development setup
367
+ - **Status**: Actively debugging - updates coming soon
368
+
369
+ ### **Docker Version Notes**
370
+ - **Symptoms**: Elements may not sync to canvas immediately
371
+ - **Temporary Solution**: Use local development setup
372
+ - **Status**: Improving synchronization reliability
373
+
368
374
  ### **Canvas Not Loading**
369
375
  - Ensure `npm run build` completed successfully
370
376
  - Check that `dist/index.html` exists
@@ -406,8 +412,17 @@ mcp_excalidraw/
406
412
  └── README.md # This file
407
413
  ```
408
414
 
415
+ ## 🔮 Development Roadmap
416
+
417
+ - **NPM Package**: Resolving MCP tool registration issues
418
+ - **Docker Deployment**: Improving canvas synchronization
419
+ - **Enhanced Features**: Additional MCP tools and capabilities
420
+ - **Performance Optimization**: Real-time sync improvements
421
+
409
422
  ## 🤝 Contributing
410
423
 
424
+ We welcome contributions! If you're experiencing issues with the NPM package or Docker version, please:
425
+
411
426
  1. Fork the repository
412
427
  2. Create a feature branch (`git checkout -b feature/amazing-feature`)
413
428
  3. Commit your changes (`git commit -m 'Add amazing feature'`)
@@ -421,4 +436,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
421
436
  ## 🙏 Acknowledgments
422
437
 
423
438
  - **Excalidraw Team** - For the amazing drawing library
424
- - **MCP Community** - For the Model Context Protocol specification
439
+ - **MCP Community** - For the Model Context Protocol specification
@@ -1,4 +1,4 @@
1
- import"./main-C1TkgC3p.js";var u={paste:"لصق",pasteAsPlaintext:"اللصق كنص عادي",pasteCharts:"لصق الرسوم البيانية",selectAll:"تحديد الكل",multiSelect:"إضافة عنصر للتحديد",moveCanvas:"نقل لوح الرسم",cut:"قص",copy:"نسخ",copyAsPng:"نسخ إلى الحافظة بصيغة PNG",copyAsSvg:"نسخ إلى الحافظة بصيغة SVG",copyText:"نسخ إلى الحافظة كنص",copySource:"",convertToCode:"",bringForward:"جلب للأمام",sendToBack:"أرسل للخلف",bringToFront:"أحضر للأمام",sendBackward:"أرسل للخلف",delete:"حذف",copyStyles:"نسخ الأنماط",pasteStyles:"لصق الأنماط",stroke:"الخط",background:"الخلفية",fill:"التعبئة",strokeWidth:"سُمك الخط",strokeStyle:"نمط الخط",strokeStyle_solid:"متصل",strokeStyle_dashed:"متقطع",strokeStyle_dotted:"منقط",sloppiness:"الإمالة",opacity:"الشفافية",textAlign:"محاذاة النص",edges:"الحواف",sharp:"حادة",round:"دائرية",arrowheads:"رؤوس الأسهم",arrowhead_none:"لا شيء",arrowhead_arrow:"سهم",arrowhead_bar:"شريط",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"مثلث",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"حجم الخط",fontFamily:"نوع الخط",addWatermark:'إضافة "مصنوعة بواسطة Excalidraw"',handDrawn:"رسم باليد",normal:"عادي",code:"رمز",small:"صغير",medium:"متوسط",large:"كبير",veryLarge:"كبير جدا",solid:"كامل",hachure:"خطوط",zigzag:"متعرج",crossHatch:"خطوط متقطعة",thin:"نحيف",bold:"داكن",left:"الـيسار",center:"وسط",right:"يمين",extraBold:"عريض",architect:"معماري",artist:"رسام",cartoonist:"كرتوني",fileTitle:"إسم الملف",colorPicker:"منتقي اللون",canvasColors:"تستخدم على القماش",canvasBackground:"خلفية اللوحة",drawingCanvas:"لوحة الرسم",layers:"الطبقات",actions:"الإجراءات",language:"اللغة",liveCollaboration:"التعاون المباشر...",duplicateSelection:"تكرار",untitled:"غير معنون",name:"الاسم",yourName:"اسمك",madeWithExcalidraw:"مصنوعة بواسطة Excalidraw",group:"تحديد مجموعة",ungroup:"إلغاء تحديد مجموعة",collaborators:"المتعاونون",showGrid:"إظهار الشبكة",addToLibrary:"أضف إلى المكتبة",removeFromLibrary:"حذف من المكتبة",libraryLoadingMessage:"جارٍ تحميل المكتبة…",libraries:"تصفح المكتبات",loadingScene:"جاري تحميل المشهد…",align:"محاذاة",alignTop:"محاذاة إلى اﻷعلى",alignBottom:"محاذاة إلى اﻷسفل",alignLeft:"محاذاة إلى اليسار",alignRight:"محاذاة إلى اليمين",centerVertically:"توسيط عمودي",centerHorizontally:"توسيط أفقي",distributeHorizontally:"التوزيع الأفقي",distributeVertically:"التوزيع عمودياً",flipHorizontal:"قلب عامودي",flipVertical:"قلب أفقي",viewMode:"نمط العرض",share:"مشاركة",showStroke:"إظهار منتقي لون الخط",showBackground:"إظهار منتقي لون الخلفية",toggleTheme:"غير النمط",personalLib:"المكتبة الشخصية",excalidrawLib:"مكتبتنا",decreaseFontSize:"تصغير حجم الخط",increaseFontSize:"تكبير حجم الخط",unbindText:"فك ربط النص",bindText:"ربط النص بالحاوية",createContainerFromText:"نص مغلف في حاوية",link:{edit:"تعديل الرابط",editEmbed:"تحرير الرابط وإدراجه",create:"إنشاء رابط",createEmbed:"إنشاء رابط و إدراجه",label:"رابط",labelEmbed:"رابط و إدراج",empty:"لم يتم تعيين رابط"},lineEditor:{edit:"تحرير السطر",exit:"الخروج من المُحرر"},elementLock:{lock:"قفل",unlock:"فتح",lockAll:"قفل الكل",unlockAll:"فتح الكل"},statusPublished:"نُشر",sidebarLock:"إبقاء الشريط الجانبي مفتوح",selectAllElementsInFrame:"تحديد جميع العناصر في الإطار",removeAllElementsFromFrame:"إزالة جميع العناصر من الإطار",eyeDropper:"اختيار اللون من القماش",textToDiagram:"",prompt:""},A={noItems:"لا توجد عناصر أضيفت بعد...",hint_emptyLibrary:"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",hint_emptyPrivateLibrary:"حدد عنصر على القماش لإضافته هنا."},e={clearReset:"إعادة تعيين اللوحة",exportJSON:"صدر الملف",exportImage:"تصدير الصورة...",export:"حفظ إلى...",copyToClipboard:"نسخ إلى الحافظة",save:"احفظ للملف الحالي",saveAs:"حفظ كـ",load:"فتح",getShareableLink:"احصل على رابط المشاركة",close:"غلق",selectLanguage:"اختر اللغة",scrollBackToContent:"الرجوع إلى المحتوى",zoomIn:"تكبير",zoomOut:"تصغير",resetZoom:"إعادة تعيين الشاشة",menu:"القائمة",done:"تم",edit:"تعديل",undo:"تراجع",redo:"إعادة تنفيذ",resetLibrary:"إعادة ضبط المكتبة",createNewRoom:"إنشاء غرفة جديدة",fullScreen:"شاشة كاملة",darkMode:"الوضع المظلم",lightMode:"الوضع المضيء",zenMode:"وضع التأمل",objectsSnapMode:"التقط إلى العناصر",exitZenMode:"إلغاء الوضع الليلى",cancel:"إلغاء",clear:"مسح",remove:"إزالة",embed:"تبديل الإدراج",publishLibrary:"انشر",submit:"أرسل",confirm:"تأكيد",embeddableInteractionButton:"اضغط للتفاعل"},a={clearReset:"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",couldNotCreateShareableLink:"تعذر إنشاء رابطة المشاركة.",couldNotCreateShareableLinkTooBig:"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",couldNotLoadInvalidFile:"تعذر التحميل، الملف غير صالح",importBackendFailed:"فشل الاستيراد من الخادوم.",cannotExportEmptyCanvas:"لا يمكن تصدير لوحة فارغة.",couldNotCopyToClipboard:"تعذر النسخ إلى الحافظة.",decryptFailed:"تعذر فك تشفير البيانات.",uploadedSecurly:"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",loadSceneOverridePrompt:"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
1
+ import"./main-BDhqALRb.js";var u={paste:"لصق",pasteAsPlaintext:"اللصق كنص عادي",pasteCharts:"لصق الرسوم البيانية",selectAll:"تحديد الكل",multiSelect:"إضافة عنصر للتحديد",moveCanvas:"نقل لوح الرسم",cut:"قص",copy:"نسخ",copyAsPng:"نسخ إلى الحافظة بصيغة PNG",copyAsSvg:"نسخ إلى الحافظة بصيغة SVG",copyText:"نسخ إلى الحافظة كنص",copySource:"",convertToCode:"",bringForward:"جلب للأمام",sendToBack:"أرسل للخلف",bringToFront:"أحضر للأمام",sendBackward:"أرسل للخلف",delete:"حذف",copyStyles:"نسخ الأنماط",pasteStyles:"لصق الأنماط",stroke:"الخط",background:"الخلفية",fill:"التعبئة",strokeWidth:"سُمك الخط",strokeStyle:"نمط الخط",strokeStyle_solid:"متصل",strokeStyle_dashed:"متقطع",strokeStyle_dotted:"منقط",sloppiness:"الإمالة",opacity:"الشفافية",textAlign:"محاذاة النص",edges:"الحواف",sharp:"حادة",round:"دائرية",arrowheads:"رؤوس الأسهم",arrowhead_none:"لا شيء",arrowhead_arrow:"سهم",arrowhead_bar:"شريط",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"مثلث",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"حجم الخط",fontFamily:"نوع الخط",addWatermark:'إضافة "مصنوعة بواسطة Excalidraw"',handDrawn:"رسم باليد",normal:"عادي",code:"رمز",small:"صغير",medium:"متوسط",large:"كبير",veryLarge:"كبير جدا",solid:"كامل",hachure:"خطوط",zigzag:"متعرج",crossHatch:"خطوط متقطعة",thin:"نحيف",bold:"داكن",left:"الـيسار",center:"وسط",right:"يمين",extraBold:"عريض",architect:"معماري",artist:"رسام",cartoonist:"كرتوني",fileTitle:"إسم الملف",colorPicker:"منتقي اللون",canvasColors:"تستخدم على القماش",canvasBackground:"خلفية اللوحة",drawingCanvas:"لوحة الرسم",layers:"الطبقات",actions:"الإجراءات",language:"اللغة",liveCollaboration:"التعاون المباشر...",duplicateSelection:"تكرار",untitled:"غير معنون",name:"الاسم",yourName:"اسمك",madeWithExcalidraw:"مصنوعة بواسطة Excalidraw",group:"تحديد مجموعة",ungroup:"إلغاء تحديد مجموعة",collaborators:"المتعاونون",showGrid:"إظهار الشبكة",addToLibrary:"أضف إلى المكتبة",removeFromLibrary:"حذف من المكتبة",libraryLoadingMessage:"جارٍ تحميل المكتبة…",libraries:"تصفح المكتبات",loadingScene:"جاري تحميل المشهد…",align:"محاذاة",alignTop:"محاذاة إلى اﻷعلى",alignBottom:"محاذاة إلى اﻷسفل",alignLeft:"محاذاة إلى اليسار",alignRight:"محاذاة إلى اليمين",centerVertically:"توسيط عمودي",centerHorizontally:"توسيط أفقي",distributeHorizontally:"التوزيع الأفقي",distributeVertically:"التوزيع عمودياً",flipHorizontal:"قلب عامودي",flipVertical:"قلب أفقي",viewMode:"نمط العرض",share:"مشاركة",showStroke:"إظهار منتقي لون الخط",showBackground:"إظهار منتقي لون الخلفية",toggleTheme:"غير النمط",personalLib:"المكتبة الشخصية",excalidrawLib:"مكتبتنا",decreaseFontSize:"تصغير حجم الخط",increaseFontSize:"تكبير حجم الخط",unbindText:"فك ربط النص",bindText:"ربط النص بالحاوية",createContainerFromText:"نص مغلف في حاوية",link:{edit:"تعديل الرابط",editEmbed:"تحرير الرابط وإدراجه",create:"إنشاء رابط",createEmbed:"إنشاء رابط و إدراجه",label:"رابط",labelEmbed:"رابط و إدراج",empty:"لم يتم تعيين رابط"},lineEditor:{edit:"تحرير السطر",exit:"الخروج من المُحرر"},elementLock:{lock:"قفل",unlock:"فتح",lockAll:"قفل الكل",unlockAll:"فتح الكل"},statusPublished:"نُشر",sidebarLock:"إبقاء الشريط الجانبي مفتوح",selectAllElementsInFrame:"تحديد جميع العناصر في الإطار",removeAllElementsFromFrame:"إزالة جميع العناصر من الإطار",eyeDropper:"اختيار اللون من القماش",textToDiagram:"",prompt:""},A={noItems:"لا توجد عناصر أضيفت بعد...",hint_emptyLibrary:"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",hint_emptyPrivateLibrary:"حدد عنصر على القماش لإضافته هنا."},e={clearReset:"إعادة تعيين اللوحة",exportJSON:"صدر الملف",exportImage:"تصدير الصورة...",export:"حفظ إلى...",copyToClipboard:"نسخ إلى الحافظة",save:"احفظ للملف الحالي",saveAs:"حفظ كـ",load:"فتح",getShareableLink:"احصل على رابط المشاركة",close:"غلق",selectLanguage:"اختر اللغة",scrollBackToContent:"الرجوع إلى المحتوى",zoomIn:"تكبير",zoomOut:"تصغير",resetZoom:"إعادة تعيين الشاشة",menu:"القائمة",done:"تم",edit:"تعديل",undo:"تراجع",redo:"إعادة تنفيذ",resetLibrary:"إعادة ضبط المكتبة",createNewRoom:"إنشاء غرفة جديدة",fullScreen:"شاشة كاملة",darkMode:"الوضع المظلم",lightMode:"الوضع المضيء",zenMode:"وضع التأمل",objectsSnapMode:"التقط إلى العناصر",exitZenMode:"إلغاء الوضع الليلى",cancel:"إلغاء",clear:"مسح",remove:"إزالة",embed:"تبديل الإدراج",publishLibrary:"انشر",submit:"أرسل",confirm:"تأكيد",embeddableInteractionButton:"اضغط للتفاعل"},a={clearReset:"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",couldNotCreateShareableLink:"تعذر إنشاء رابطة المشاركة.",couldNotCreateShareableLinkTooBig:"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",couldNotLoadInvalidFile:"تعذر التحميل، الملف غير صالح",importBackendFailed:"فشل الاستيراد من الخادوم.",cannotExportEmptyCanvas:"لا يمكن تصدير لوحة فارغة.",couldNotCopyToClipboard:"تعذر النسخ إلى الحافظة.",decryptFailed:"تعذر فك تشفير البيانات.",uploadedSecurly:"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",loadSceneOverridePrompt:"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
2
2
 
3
3
  (إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)`,errorAddingToLibrary:"تعذر إضافة العنصر للمكتبة",errorRemovingFromLibrary:"تعذر إزالة العنصر من المكتبة",confirmAddLibrary:"هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟",imageDoesNotContainScene:"يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟",cannotRestoreFromImage:"تعذر استعادة المشهد من ملف الصورة",invalidSceneUrl:"تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.",resetLibrary:"هذا سوف يمسح مكتبتك. هل أنت متأكد؟",removeItemsFromsLibrary:"حذف {{count}} عنصر (عناصر) من المكتبة؟",invalidEncryptionKey:"مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.",collabOfflineWarning:`لا يوجد اتصال بالانترنت.
4
4
  لن يتم حفظ التغييرات التي قمت بها!`},r={unsupportedFileType:"نوع الملف غير مدعوم.",imageInsertError:"تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...",fileTooBig:"الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.",svgImageInsertError:"تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.",failedToFetchImage:"",invalidSVGString:"SVG غير صالح.",cannotResolveCollabServer:"تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.",importLibraryError:"تعذر تحميل المكتبة",collabSaveFailed:"تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.",collabSaveFailed_sizeExceeded:"تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.",imageToolNotSupported:"",brave_measure_text_error:{line1:"يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.",line2:"قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.",line3:"من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع <link>هذه الخطوات</link> لفعل ذلك.",line4:"إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة <issueLink>بلاغ</issueLink> على حسابنا في GitHub، أو راسلنا على <discordLink>Discord</discordLink>"},libraryElementTypeError:{embeddable:"لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.",iframe:"",image:"سوف يتم دعم إضافة صور إلى المكتبة قريباً!"},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},o={selection:"تحديد",image:"إدراج صورة",rectangle:"مستطيل",diamond:"مضلع",ellipse:"دائرة",arrow:"سهم",line:"خط",freedraw:"رسم",text:"نص",library:"مكتبة",lock:"الحفاظ على أداة التحديد نشطة بعد الرسم",penMode:"وضع القلم - امنع اللمس",link:"إضافة/تحديث الرابط للشكل المحدد",eraser:"ممحاة",frame:"أداة الإطار",magicframe:"",embeddable:"تضمين ويب",laser:"مؤشر ليزر",hand:"يد (أداة الإزاحة)",extraTools:"المزيد من أﻷدوات",mermaidToExcalidraw:"",magicSettings:""},t={canvasActions:"إجراءات اللوحة",selectedShapeActions:"إجراءات الشكل المحدد",shapes:"الأشكال"},i={canvasPanning:"لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد",linearElement:"انقر لبدء نقاط متعددة، اسحب لخط واحد",freeDraw:"انقر واسحب، افرج عند الانتهاء",text:"نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار",embeddable:"اضغط مع السحب لإنشاء موقع ويب مضمّن",text_selected:"انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص",text_editing:"اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل",linearElementMulti:"انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء",lockAngle:"يمكنك تقييد الزاوية بالضغط على SHIFT",resize:`يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،
@@ -1 +1 @@
1
- import{w as ln,c as H}from"./path-CbwjOpE9.js";import{B as rn,D as M,E as D,F as an,G as y,H as on,I as j,J as _,K as un,L as t,M as sn,N as tn,O as fn}from"./index-CMTjDsOp.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,O,E,v,A,J,r){var q=O-l,i=E-h,n=J-v,m=r-A,a=m*q-n*i;if(!(a*a<y))return a=(n*(h-A)-m*(l-v))/a,[l+a*q,h+a*i]}function W(l,h,O,E,v,A,J){var r=l-O,q=h-E,i=(J?A:-A)/j(r*r+q*q),n=i*q,m=-i*r,a=l+n,s=h+m,f=O+n,c=E+m,K=(a+f)/2,o=(s+c)/2,p=f-a,g=c-s,R=p*p+g*g,T=v-A,P=a*c-f*s,B=(g<0?-1:1)*j(tn(0,T*T*R-P*P)),F=(P*g-p*B)/R,G=(-P*p-g*B)/R,w=(P*g+p*B)/R,d=(-P*p+g*B)/R,x=F-K,e=G-o,u=w-K,L=d-o;return x*x+e*e>u*u+L*L&&(F=w,G=d),{cx:F,cy:G,x01:-n,y01:-m,x11:F*(v/T-1),y11:G*(v/T-1)}}function vn(){var l=cn,h=yn,O=H(0),E=null,v=gn,A=mn,J=pn,r=null,q=ln(i);function i(){var n,m,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,K=un(c-f),o=c>f;if(r||(r=n=q()),s<a&&(m=s,s=a,a=m),!(s>y))r.moveTo(0,0);else if(K>on-y)r.moveTo(s*M(f),s*D(f)),r.arc(0,0,s,f,c,!o),a>y&&(r.moveTo(a*M(c),a*D(c)),r.arc(0,0,a,c,f,o));else{var p=f,g=c,R=f,T=c,P=K,B=K,F=J.apply(this,arguments)/2,G=F>y&&(E?+E.apply(this,arguments):j(a*a+s*s)),w=_(un(s-a)/2,+O.apply(this,arguments)),d=w,x=w,e,u;if(G>y){var L=sn(G/a*D(F)),z=sn(G/s*D(F));(P-=L*2)>y?(L*=o?1:-1,R+=L,T-=L):(P=0,R=T=(f+c)/2),(B-=z*2)>y?(z*=o?1:-1,p+=z,g-=z):(B=0,p=g=(f+c)/2)}var N=s*M(p),S=s*D(p),C=a*M(T),Q=a*D(T);if(w>y){var U=s*M(g),V=s*D(g),X=a*M(R),Y=a*D(R),I;if(K<rn)if(I=dn(N,S,X,Y,U,V,C,Q)){var Z=N-I[0],$=S-I[1],k=U-I[0],b=V-I[1],nn=1/D(fn((Z*k+$*b)/(j(Z*Z+$*$)*j(k*k+b*b)))/2),en=j(I[0]*I[0]+I[1]*I[1]);d=_(w,(a-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else d=x=0}B>y?x>y?(e=W(X,Y,N,S,s,x,o),u=W(U,V,C,Q,s,x,o),r.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?r.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(u.y01,u.x01),!o):(r.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(e.y11,e.x11),!o),r.arc(0,0,s,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),!o),r.arc(u.cx,u.cy,x,t(u.y11,u.x11),t(u.y01,u.x01),!o))):(r.moveTo(N,S),r.arc(0,0,s,p,g,!o)):r.moveTo(N,S),!(a>y)||!(P>y)?r.lineTo(C,Q):d>y?(e=W(C,Q,U,V,a,-d,o),u=W(N,S,X,Y,a,-d,o),r.lineTo(e.cx+e.x01,e.cy+e.y01),d<w?r.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(u.y01,u.x01),!o):(r.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(e.y11,e.x11),!o),r.arc(0,0,a,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),o),r.arc(u.cx,u.cy,d,t(u.y11,u.x11),t(u.y01,u.x01),!o))):r.arc(0,0,a,T,R,o)}if(r.closePath(),n)return r=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[M(m)*n,D(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:H(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:H(+n),i):h},i.cornerRadius=function(n){return arguments.length?(O=typeof n=="function"?n:H(+n),i):O},i.padRadius=function(n){return arguments.length?(E=n==null?null:typeof n=="function"?n:H(+n),i):E},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:H(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:H(+n),i):A},i.padAngle=function(n){return arguments.length?(J=typeof n=="function"?n:H(+n),i):J},i.context=function(n){return arguments.length?(r=n??null,i):r},i}export{vn as a};
1
+ import{w as ln,c as H}from"./path-CbwjOpE9.js";import{B as rn,D as M,E as D,F as an,G as y,H as on,I as j,J as _,K as un,L as t,M as sn,N as tn,O as fn}from"./index-D2dwBAqU.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,O,E,v,A,J,r){var q=O-l,i=E-h,n=J-v,m=r-A,a=m*q-n*i;if(!(a*a<y))return a=(n*(h-A)-m*(l-v))/a,[l+a*q,h+a*i]}function W(l,h,O,E,v,A,J){var r=l-O,q=h-E,i=(J?A:-A)/j(r*r+q*q),n=i*q,m=-i*r,a=l+n,s=h+m,f=O+n,c=E+m,K=(a+f)/2,o=(s+c)/2,p=f-a,g=c-s,R=p*p+g*g,T=v-A,P=a*c-f*s,B=(g<0?-1:1)*j(tn(0,T*T*R-P*P)),F=(P*g-p*B)/R,G=(-P*p-g*B)/R,w=(P*g+p*B)/R,d=(-P*p+g*B)/R,x=F-K,e=G-o,u=w-K,L=d-o;return x*x+e*e>u*u+L*L&&(F=w,G=d),{cx:F,cy:G,x01:-n,y01:-m,x11:F*(v/T-1),y11:G*(v/T-1)}}function vn(){var l=cn,h=yn,O=H(0),E=null,v=gn,A=mn,J=pn,r=null,q=ln(i);function i(){var n,m,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,K=un(c-f),o=c>f;if(r||(r=n=q()),s<a&&(m=s,s=a,a=m),!(s>y))r.moveTo(0,0);else if(K>on-y)r.moveTo(s*M(f),s*D(f)),r.arc(0,0,s,f,c,!o),a>y&&(r.moveTo(a*M(c),a*D(c)),r.arc(0,0,a,c,f,o));else{var p=f,g=c,R=f,T=c,P=K,B=K,F=J.apply(this,arguments)/2,G=F>y&&(E?+E.apply(this,arguments):j(a*a+s*s)),w=_(un(s-a)/2,+O.apply(this,arguments)),d=w,x=w,e,u;if(G>y){var L=sn(G/a*D(F)),z=sn(G/s*D(F));(P-=L*2)>y?(L*=o?1:-1,R+=L,T-=L):(P=0,R=T=(f+c)/2),(B-=z*2)>y?(z*=o?1:-1,p+=z,g-=z):(B=0,p=g=(f+c)/2)}var N=s*M(p),S=s*D(p),C=a*M(T),Q=a*D(T);if(w>y){var U=s*M(g),V=s*D(g),X=a*M(R),Y=a*D(R),I;if(K<rn)if(I=dn(N,S,X,Y,U,V,C,Q)){var Z=N-I[0],$=S-I[1],k=U-I[0],b=V-I[1],nn=1/D(fn((Z*k+$*b)/(j(Z*Z+$*$)*j(k*k+b*b)))/2),en=j(I[0]*I[0]+I[1]*I[1]);d=_(w,(a-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else d=x=0}B>y?x>y?(e=W(X,Y,N,S,s,x,o),u=W(U,V,C,Q,s,x,o),r.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?r.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(u.y01,u.x01),!o):(r.arc(e.cx,e.cy,x,t(e.y01,e.x01),t(e.y11,e.x11),!o),r.arc(0,0,s,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),!o),r.arc(u.cx,u.cy,x,t(u.y11,u.x11),t(u.y01,u.x01),!o))):(r.moveTo(N,S),r.arc(0,0,s,p,g,!o)):r.moveTo(N,S),!(a>y)||!(P>y)?r.lineTo(C,Q):d>y?(e=W(C,Q,U,V,a,-d,o),u=W(N,S,X,Y,a,-d,o),r.lineTo(e.cx+e.x01,e.cy+e.y01),d<w?r.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(u.y01,u.x01),!o):(r.arc(e.cx,e.cy,d,t(e.y01,e.x01),t(e.y11,e.x11),!o),r.arc(0,0,a,t(e.cy+e.y11,e.cx+e.x11),t(u.cy+u.y11,u.cx+u.x11),o),r.arc(u.cx,u.cy,d,t(u.y11,u.x11),t(u.y01,u.x01),!o))):r.arc(0,0,a,T,R,o)}if(r.closePath(),n)return r=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,m=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[M(m)*n,D(m)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:H(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:H(+n),i):h},i.cornerRadius=function(n){return arguments.length?(O=typeof n=="function"?n:H(+n),i):O},i.padRadius=function(n){return arguments.length?(E=n==null?null:typeof n=="function"?n:H(+n),i):E},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:H(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:H(+n),i):A},i.padAngle=function(n){return arguments.length?(J=typeof n=="function"?n:H(+n),i):J},i.context=function(n){return arguments.length?(r=n??null,i):r},i}export{vn as a};
@@ -1 +1 @@
1
- import"./main-C1TkgC3p.js";var e={paste:"Yapışdır",pasteAsPlaintext:"Düz mətn kimi yapışdırın",pasteCharts:"Diaqramları yapışdırın",selectAll:"Hamısını seç",multiSelect:"Seçimə element əlavə edin",moveCanvas:"Kanvası köçürün",cut:"Kəs",copy:"Kopyala",copyAsPng:"PNG olaraq panoya kopyala",copyAsSvg:"SVG olaraq panoya kopyala",copyText:"Mətn olaraq panoya kopyala",copySource:"",convertToCode:"",bringForward:"Önə daşı",sendToBack:"Geriyə göndərin",bringToFront:"Önə gətirin",sendBackward:"Geriyə göndərin",delete:"Sil",copyStyles:"Stilləri kopyalayın",pasteStyles:"Stilləri yapışdırın",stroke:"Strok rəngi",background:"Arxa fon",fill:"Doldur",strokeWidth:"Strok eni",strokeStyle:"Strok stili",strokeStyle_solid:"Solid",strokeStyle_dashed:"Kəsik",strokeStyle_dotted:"Nöqtəli",sloppiness:"Səliqəsizlik",opacity:"Şəffaflıq",textAlign:"Mətni uyğunlaşdır",edges:"Kənarlar",sharp:"Kəskin",round:"Dəyirmi",arrowheads:"Ox ucları",arrowhead_none:"Heç biri",arrowhead_arrow:"Ox",arrowhead_bar:"Çubuq",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"Üçbucaq",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"Şrift ölçüsü",fontFamily:"Şrift qrupu",addWatermark:'"Made with Excalidraw" əlavə et',handDrawn:"Əllə çəkilmiş",normal:"Normal",code:"Kod",small:"Kiçik",medium:"Orta",large:"Böyük",veryLarge:"Çox böyük",solid:"Solid",hachure:"Ştrix",zigzag:"Ziqzaq",crossHatch:"Çarpaz dəlik",thin:"İncə",bold:"Qalın",left:"Sol",center:"Mərkəz",right:"Sağ",extraBold:"Ekstra qalın",architect:"Memar",artist:"Rəssam",cartoonist:"Karikaturaçı",fileTitle:"Fayl adı",colorPicker:"Rəng seçən",canvasColors:"Kanvas üzərində istifadə olunur",canvasBackground:"Kanvas arxa fonu",drawingCanvas:"Kanvas çəkmək",layers:"Qatlar",actions:"Hərəkətlər",language:"Dil",liveCollaboration:"Canlı əməkdaşlıq...",duplicateSelection:"Dublikat",untitled:"Başlıqsız",name:"Ad",yourName:"Adınız",madeWithExcalidraw:"Excalidraw ilə hazırlanmışdır",group:"Qrup şəklində seçim",ungroup:"Qrupsuz seçim",collaborators:"",showGrid:"",addToLibrary:"",removeFromLibrary:"",libraryLoadingMessage:"",libraries:"",loadingScene:"",align:"",alignTop:"",alignBottom:"",alignLeft:"",alignRight:"",centerVertically:"",centerHorizontally:"",distributeHorizontally:"",distributeVertically:"",flipHorizontal:"",flipVertical:"",viewMode:"",share:"",showStroke:"",showBackground:"",toggleTheme:"",personalLib:"",excalidrawLib:"",decreaseFontSize:"",increaseFontSize:"",unbindText:"",bindText:"",createContainerFromText:"",link:{edit:"",editEmbed:"",create:"",createEmbed:"",label:"",labelEmbed:"",empty:""},lineEditor:{edit:"",exit:""},elementLock:{lock:"",unlock:"",lockAll:"",unlockAll:""},statusPublished:"",sidebarLock:"",selectAllElementsInFrame:"",removeAllElementsFromFrame:"",eyeDropper:"",textToDiagram:"",prompt:""},a={noItems:"",hint_emptyLibrary:"",hint_emptyPrivateLibrary:""},r={clearReset:"",exportJSON:"",exportImage:"",export:"",copyToClipboard:"",save:"",saveAs:"",load:"",getShareableLink:"",close:"",selectLanguage:"",scrollBackToContent:"",zoomIn:"",zoomOut:"",resetZoom:"",menu:"",done:"",edit:"",undo:"",redo:"",resetLibrary:"",createNewRoom:"",fullScreen:"",darkMode:"",lightMode:"",zenMode:"",objectsSnapMode:"",exitZenMode:"",cancel:"",clear:"",remove:"",embed:"",publishLibrary:"",submit:"",confirm:"",embeddableInteractionButton:""},o={clearReset:"",couldNotCreateShareableLink:"",couldNotCreateShareableLinkTooBig:"",couldNotLoadInvalidFile:"",importBackendFailed:"",cannotExportEmptyCanvas:"",couldNotCopyToClipboard:"",decryptFailed:"",uploadedSecurly:"",loadSceneOverridePrompt:"",collabStopOverridePrompt:"",errorAddingToLibrary:"",errorRemovingFromLibrary:"",confirmAddLibrary:"",imageDoesNotContainScene:"",cannotRestoreFromImage:"",invalidSceneUrl:"",resetLibrary:"",removeItemsFromsLibrary:"",invalidEncryptionKey:"",collabOfflineWarning:""},t={unsupportedFileType:"",imageInsertError:"",fileTooBig:"",svgImageInsertError:"",failedToFetchImage:"",invalidSVGString:"",cannotResolveCollabServer:"",importLibraryError:"",collabSaveFailed:"",collabSaveFailed_sizeExceeded:"",imageToolNotSupported:"",brave_measure_text_error:{line1:"",line2:"",line3:"",line4:""},libraryElementTypeError:{embeddable:"",iframe:"",image:""},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},i={selection:"",image:"",rectangle:"",diamond:"",ellipse:"",arrow:"",line:"",freedraw:"",text:"",library:"",lock:"",penMode:"",link:"",eraser:"",frame:"",magicframe:"",embeddable:"",laser:"",hand:"",extraTools:"",mermaidToExcalidraw:"",magicSettings:""},l={canvasActions:"",selectedShapeActions:"",shapes:""},n={canvasPanning:"",linearElement:"",freeDraw:"",text:"",embeddable:"",text_selected:"",text_editing:"",linearElementMulti:"",lockAngle:"",resize:"",resizeImage:"",rotate:"",lineEditor_info:"",lineEditor_pointSelected:"",lineEditor_nothingSelected:"",placeImage:"",publishLibrary:"",bindTextToElement:"",deepBoxSelect:"",eraserRevert:"",firefox_clipboard_write:"",disableSnapping:""},s={cannotShowPreview:"",canvasTooBig:"",canvasTooBigTip:""},d={headingMain:"",clearCanvasMessage:"",clearCanvasCaveat:"",trackedToSentry:"",openIssueMessage:"",sceneContent:""},u={desc_intro:"",desc_privacy:"",button_startSession:"",button_stopSession:"",desc_inProgressIntro:"",desc_shareLink:"",desc_exitSession:"",shareTitle:""},c={title:""},m={disk_title:"",disk_details:"",disk_button:"",link_title:"",link_details:"",link_button:"",excalidrawplus_description:"",excalidrawplus_button:"",excalidrawplus_exportError:""},p={blog:"",click:"",deepSelect:"",deepBoxSelect:"",curvedArrow:"",curvedLine:"",documentation:"",doubleClick:"",drag:"",editor:"",editLineArrowPoints:"",editText:"",github:"",howto:"",or:"",preventBinding:"",tools:"",shortcuts:"",textFinish:"",textNewLine:"",title:"",view:"",zoomToFit:"",zoomToSelection:"",toggleElementLock:"",movePageUpDown:"",movePageLeftRight:""},g={title:""},b={title:"",itemName:"",authorName:"",githubUsername:"",twitterUsername:"",libraryName:"",libraryDesc:"",website:"",placeholder:{authorName:"",libraryName:"",libraryDesc:"",githubHandle:"",twitterHandle:"",website:""},errors:{required:"",website:""},noteDescription:"",noteGuidelines:"",noteLicense:"",noteItems:"",atleastOneLibItem:"",republishWarning:""},y={title:"",content:""},x={resetLibrary:"",removeItemsFromLib:""},h={header:"",label:{withBackground:"",onlySelected:"",darkMode:"",embedScene:"",scale:"",padding:""},tooltip:{embedScene:""},title:{exportToPng:"",exportToSvg:"",copyPngToClipboard:""},button:{exportToPng:"",exportToSvg:"",copyPngToClipboard:""}},k={tooltip:"",link:""},S={angle:"",element:"",elements:"",height:"",scene:"",selected:"",storage:"",title:"",total:"",version:"",versionCopy:"",versionNotAvailable:"",width:""},v={addedToLibrary:"",copyStyles:"",copyToClipboard:"",copyToClipboardAsPng:"",fileSaved:"",fileSavedToFilename:"",canvas:"",selection:"",pasteAsSingleElement:"",unableToEmbed:"",unrecognizedLinkFormat:""},F={transparent:"",black:"",white:"",red:"",pink:"",grape:"",violet:"",gray:"",blue:"",cyan:"",teal:"",green:"",yellow:"",orange:"",bronze:""},w={app:{center_heading:"",center_heading_plus:"",menuHint:""},defaults:{menuHint:"",center_heading:"",toolbarHint:"",helpHint:""}},E={mostUsedCustomColors:"",colors:"",shades:"",hexCode:"",noShades:""},T={action:{exportToImage:{title:"",button:"",description:""},saveToDisk:{title:"",button:"",description:""},excalidrawPlus:{title:"",button:"",description:""}},modal:{loadFromFile:{title:"",button:"",description:""},shareableLink:{title:"",button:"",description:""}}},_={title:"",button:"",description:"",syntax:"",preview:""},f={labels:e,library:a,buttons:r,alerts:o,errors:t,toolBar:i,headings:l,hints:n,canvasError:s,errorSplash:d,roomDialog:u,errorDialog:c,exportDialog:m,helpDialog:p,clearCanvasDialog:g,publishDialog:b,publishSuccessDialog:y,confirmDialog:x,imageExportDialog:h,encrypted:k,stats:S,toast:v,colors:F,welcomeScreen:w,colorPicker:E,overwriteConfirm:T,mermaid:_};export{o as alerts,r as buttons,s as canvasError,g as clearCanvasDialog,E as colorPicker,F as colors,x as confirmDialog,f as default,k as encrypted,c as errorDialog,d as errorSplash,t as errors,m as exportDialog,l as headings,p as helpDialog,n as hints,h as imageExportDialog,e as labels,a as library,_ as mermaid,T as overwriteConfirm,b as publishDialog,y as publishSuccessDialog,u as roomDialog,S as stats,v as toast,i as toolBar,w as welcomeScreen};
1
+ import"./main-BDhqALRb.js";var e={paste:"Yapışdır",pasteAsPlaintext:"Düz mətn kimi yapışdırın",pasteCharts:"Diaqramları yapışdırın",selectAll:"Hamısını seç",multiSelect:"Seçimə element əlavə edin",moveCanvas:"Kanvası köçürün",cut:"Kəs",copy:"Kopyala",copyAsPng:"PNG olaraq panoya kopyala",copyAsSvg:"SVG olaraq panoya kopyala",copyText:"Mətn olaraq panoya kopyala",copySource:"",convertToCode:"",bringForward:"Önə daşı",sendToBack:"Geriyə göndərin",bringToFront:"Önə gətirin",sendBackward:"Geriyə göndərin",delete:"Sil",copyStyles:"Stilləri kopyalayın",pasteStyles:"Stilləri yapışdırın",stroke:"Strok rəngi",background:"Arxa fon",fill:"Doldur",strokeWidth:"Strok eni",strokeStyle:"Strok stili",strokeStyle_solid:"Solid",strokeStyle_dashed:"Kəsik",strokeStyle_dotted:"Nöqtəli",sloppiness:"Səliqəsizlik",opacity:"Şəffaflıq",textAlign:"Mətni uyğunlaşdır",edges:"Kənarlar",sharp:"Kəskin",round:"Dəyirmi",arrowheads:"Ox ucları",arrowhead_none:"Heç biri",arrowhead_arrow:"Ox",arrowhead_bar:"Çubuq",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"Üçbucaq",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"Şrift ölçüsü",fontFamily:"Şrift qrupu",addWatermark:'"Made with Excalidraw" əlavə et',handDrawn:"Əllə çəkilmiş",normal:"Normal",code:"Kod",small:"Kiçik",medium:"Orta",large:"Böyük",veryLarge:"Çox böyük",solid:"Solid",hachure:"Ştrix",zigzag:"Ziqzaq",crossHatch:"Çarpaz dəlik",thin:"İncə",bold:"Qalın",left:"Sol",center:"Mərkəz",right:"Sağ",extraBold:"Ekstra qalın",architect:"Memar",artist:"Rəssam",cartoonist:"Karikaturaçı",fileTitle:"Fayl adı",colorPicker:"Rəng seçən",canvasColors:"Kanvas üzərində istifadə olunur",canvasBackground:"Kanvas arxa fonu",drawingCanvas:"Kanvas çəkmək",layers:"Qatlar",actions:"Hərəkətlər",language:"Dil",liveCollaboration:"Canlı əməkdaşlıq...",duplicateSelection:"Dublikat",untitled:"Başlıqsız",name:"Ad",yourName:"Adınız",madeWithExcalidraw:"Excalidraw ilə hazırlanmışdır",group:"Qrup şəklində seçim",ungroup:"Qrupsuz seçim",collaborators:"",showGrid:"",addToLibrary:"",removeFromLibrary:"",libraryLoadingMessage:"",libraries:"",loadingScene:"",align:"",alignTop:"",alignBottom:"",alignLeft:"",alignRight:"",centerVertically:"",centerHorizontally:"",distributeHorizontally:"",distributeVertically:"",flipHorizontal:"",flipVertical:"",viewMode:"",share:"",showStroke:"",showBackground:"",toggleTheme:"",personalLib:"",excalidrawLib:"",decreaseFontSize:"",increaseFontSize:"",unbindText:"",bindText:"",createContainerFromText:"",link:{edit:"",editEmbed:"",create:"",createEmbed:"",label:"",labelEmbed:"",empty:""},lineEditor:{edit:"",exit:""},elementLock:{lock:"",unlock:"",lockAll:"",unlockAll:""},statusPublished:"",sidebarLock:"",selectAllElementsInFrame:"",removeAllElementsFromFrame:"",eyeDropper:"",textToDiagram:"",prompt:""},a={noItems:"",hint_emptyLibrary:"",hint_emptyPrivateLibrary:""},r={clearReset:"",exportJSON:"",exportImage:"",export:"",copyToClipboard:"",save:"",saveAs:"",load:"",getShareableLink:"",close:"",selectLanguage:"",scrollBackToContent:"",zoomIn:"",zoomOut:"",resetZoom:"",menu:"",done:"",edit:"",undo:"",redo:"",resetLibrary:"",createNewRoom:"",fullScreen:"",darkMode:"",lightMode:"",zenMode:"",objectsSnapMode:"",exitZenMode:"",cancel:"",clear:"",remove:"",embed:"",publishLibrary:"",submit:"",confirm:"",embeddableInteractionButton:""},o={clearReset:"",couldNotCreateShareableLink:"",couldNotCreateShareableLinkTooBig:"",couldNotLoadInvalidFile:"",importBackendFailed:"",cannotExportEmptyCanvas:"",couldNotCopyToClipboard:"",decryptFailed:"",uploadedSecurly:"",loadSceneOverridePrompt:"",collabStopOverridePrompt:"",errorAddingToLibrary:"",errorRemovingFromLibrary:"",confirmAddLibrary:"",imageDoesNotContainScene:"",cannotRestoreFromImage:"",invalidSceneUrl:"",resetLibrary:"",removeItemsFromsLibrary:"",invalidEncryptionKey:"",collabOfflineWarning:""},t={unsupportedFileType:"",imageInsertError:"",fileTooBig:"",svgImageInsertError:"",failedToFetchImage:"",invalidSVGString:"",cannotResolveCollabServer:"",importLibraryError:"",collabSaveFailed:"",collabSaveFailed_sizeExceeded:"",imageToolNotSupported:"",brave_measure_text_error:{line1:"",line2:"",line3:"",line4:""},libraryElementTypeError:{embeddable:"",iframe:"",image:""},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},i={selection:"",image:"",rectangle:"",diamond:"",ellipse:"",arrow:"",line:"",freedraw:"",text:"",library:"",lock:"",penMode:"",link:"",eraser:"",frame:"",magicframe:"",embeddable:"",laser:"",hand:"",extraTools:"",mermaidToExcalidraw:"",magicSettings:""},l={canvasActions:"",selectedShapeActions:"",shapes:""},n={canvasPanning:"",linearElement:"",freeDraw:"",text:"",embeddable:"",text_selected:"",text_editing:"",linearElementMulti:"",lockAngle:"",resize:"",resizeImage:"",rotate:"",lineEditor_info:"",lineEditor_pointSelected:"",lineEditor_nothingSelected:"",placeImage:"",publishLibrary:"",bindTextToElement:"",deepBoxSelect:"",eraserRevert:"",firefox_clipboard_write:"",disableSnapping:""},s={cannotShowPreview:"",canvasTooBig:"",canvasTooBigTip:""},d={headingMain:"",clearCanvasMessage:"",clearCanvasCaveat:"",trackedToSentry:"",openIssueMessage:"",sceneContent:""},u={desc_intro:"",desc_privacy:"",button_startSession:"",button_stopSession:"",desc_inProgressIntro:"",desc_shareLink:"",desc_exitSession:"",shareTitle:""},c={title:""},m={disk_title:"",disk_details:"",disk_button:"",link_title:"",link_details:"",link_button:"",excalidrawplus_description:"",excalidrawplus_button:"",excalidrawplus_exportError:""},p={blog:"",click:"",deepSelect:"",deepBoxSelect:"",curvedArrow:"",curvedLine:"",documentation:"",doubleClick:"",drag:"",editor:"",editLineArrowPoints:"",editText:"",github:"",howto:"",or:"",preventBinding:"",tools:"",shortcuts:"",textFinish:"",textNewLine:"",title:"",view:"",zoomToFit:"",zoomToSelection:"",toggleElementLock:"",movePageUpDown:"",movePageLeftRight:""},g={title:""},b={title:"",itemName:"",authorName:"",githubUsername:"",twitterUsername:"",libraryName:"",libraryDesc:"",website:"",placeholder:{authorName:"",libraryName:"",libraryDesc:"",githubHandle:"",twitterHandle:"",website:""},errors:{required:"",website:""},noteDescription:"",noteGuidelines:"",noteLicense:"",noteItems:"",atleastOneLibItem:"",republishWarning:""},y={title:"",content:""},x={resetLibrary:"",removeItemsFromLib:""},h={header:"",label:{withBackground:"",onlySelected:"",darkMode:"",embedScene:"",scale:"",padding:""},tooltip:{embedScene:""},title:{exportToPng:"",exportToSvg:"",copyPngToClipboard:""},button:{exportToPng:"",exportToSvg:"",copyPngToClipboard:""}},k={tooltip:"",link:""},S={angle:"",element:"",elements:"",height:"",scene:"",selected:"",storage:"",title:"",total:"",version:"",versionCopy:"",versionNotAvailable:"",width:""},v={addedToLibrary:"",copyStyles:"",copyToClipboard:"",copyToClipboardAsPng:"",fileSaved:"",fileSavedToFilename:"",canvas:"",selection:"",pasteAsSingleElement:"",unableToEmbed:"",unrecognizedLinkFormat:""},F={transparent:"",black:"",white:"",red:"",pink:"",grape:"",violet:"",gray:"",blue:"",cyan:"",teal:"",green:"",yellow:"",orange:"",bronze:""},w={app:{center_heading:"",center_heading_plus:"",menuHint:""},defaults:{menuHint:"",center_heading:"",toolbarHint:"",helpHint:""}},E={mostUsedCustomColors:"",colors:"",shades:"",hexCode:"",noShades:""},T={action:{exportToImage:{title:"",button:"",description:""},saveToDisk:{title:"",button:"",description:""},excalidrawPlus:{title:"",button:"",description:""}},modal:{loadFromFile:{title:"",button:"",description:""},shareableLink:{title:"",button:"",description:""}}},_={title:"",button:"",description:"",syntax:"",preview:""},f={labels:e,library:a,buttons:r,alerts:o,errors:t,toolBar:i,headings:l,hints:n,canvasError:s,errorSplash:d,roomDialog:u,errorDialog:c,exportDialog:m,helpDialog:p,clearCanvasDialog:g,publishDialog:b,publishSuccessDialog:y,confirmDialog:x,imageExportDialog:h,encrypted:k,stats:S,toast:v,colors:F,welcomeScreen:w,colorPicker:E,overwriteConfirm:T,mermaid:_};export{o as alerts,r as buttons,s as canvasError,g as clearCanvasDialog,E as colorPicker,F as colors,x as confirmDialog,f as default,k as encrypted,c as errorDialog,d as errorSplash,t as errors,m as exportDialog,l as headings,p as helpDialog,n as hints,h as imageExportDialog,e as labels,a as library,_ as mermaid,T as overwriteConfirm,b as publishDialog,y as publishSuccessDialog,u as roomDialog,S as stats,v as toast,i as toolBar,w as welcomeScreen};
@@ -1,4 +1,4 @@
1
- import"./main-C1TkgC3p.js";var u={paste:"Постави",pasteAsPlaintext:"Постави като обикновен текст",pasteCharts:"Постави графики",selectAll:"Маркирай всичко",multiSelect:"Добави елемент към селекция",moveCanvas:"Премести платно",cut:"Изрежи",copy:"Копирай",copyAsPng:"Копиране в клипборда",copyAsSvg:"Копирано в клипборда като SVG",copyText:"",copySource:"",convertToCode:"",bringForward:"Преместване напред",sendToBack:"Изнасяне назад",bringToFront:"Изнасяне отпред",sendBackward:"Изпрати отзад",delete:"Изтрий",copyStyles:"Копирайте стилове",pasteStyles:"Постави стилове",stroke:"Щрих",background:"Фон",fill:"Наситеност",strokeWidth:"Ширина на щриха",strokeStyle:"Стил на линия",strokeStyle_solid:"Плътен",strokeStyle_dashed:"Пунктир",strokeStyle_dotted:"Пунктирано",sloppiness:"Небрежност",opacity:"Прозрачност",textAlign:"Подравняване на текста",edges:"Крайща",sharp:"Остър",round:"Закръглено",arrowheads:"Стрелки",arrowhead_none:"Без",arrowhead_arrow:"Стрелка",arrowhead_bar:"Връх на стрелката",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"Триъгълник",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"Размер на шрифта",fontFamily:"Семейство шрифтове",addWatermark:'Добави "Направено с Excalidraw"',handDrawn:"Нарисувано на ръка",normal:"Нормален",code:"Код",small:"Малък",medium:"Среден",large:"Голям",veryLarge:"Много голям",solid:"Солиден",hachure:"Хералдика",zigzag:"Зигзаг",crossHatch:"Двойно-пресечено",thin:"Тънък",bold:"Ясно очертан",left:"Ляво",center:"Център",right:"Дясно",extraBold:"Много ясно очертан",architect:"Архитект",artist:"Художник",cartoonist:"Карикатурист",fileTitle:"Име на файл",colorPicker:"Избор на цвят",canvasColors:"Използван на платно",canvasBackground:"Фон на платно",drawingCanvas:"Платно за рисуване",layers:"Слоеве",actions:"Действия",language:"Език",liveCollaboration:"",duplicateSelection:"Дублирай",untitled:"Неозаглавено",name:"Име",yourName:"Вашето име",madeWithExcalidraw:"Направено с Excalidraw",group:"Групирай селекцията",ungroup:"Спри групирането на селекцията",collaborators:"Сътрудници",showGrid:"Показване на мрежа",addToLibrary:"Добавяне към библиотеката",removeFromLibrary:"Премахване от библиотеката",libraryLoadingMessage:"Зареждане на библиотеката…",libraries:"Разглеждане на библиотеките",loadingScene:"Зареждане на сцена…",align:"Подравняване",alignTop:"Подравняване отгоре",alignBottom:"Подравняване отдолу",alignLeft:"Подравняване отляво",alignRight:"Подравняване отдясно",centerVertically:"Центрирай вертикално",centerHorizontally:"Центрирай хоризонтално",distributeHorizontally:"Разпредели хоризонтално",distributeVertically:"Разпредели вертикално",flipHorizontal:"Хоризонтално обръщане",flipVertical:"Вертикално обръщане",viewMode:"Изглед",share:"Сподели",showStroke:"",showBackground:"",toggleTheme:"Включи тема",personalLib:"Лична Библиотека",excalidrawLib:"Excalidraw Библиотека",decreaseFontSize:"Намали размера на шрифта",increaseFontSize:"Увеличи размера на шрифта",unbindText:"",bindText:"",createContainerFromText:"",link:{edit:"Редактирай линк",editEmbed:"",create:"",createEmbed:"",label:"Линк",labelEmbed:"",empty:""},lineEditor:{edit:"",exit:""},elementLock:{lock:"Заключи",unlock:"Отключи",lockAll:"Заключи всички",unlockAll:"Отключи всички"},statusPublished:"Публикувани",sidebarLock:"",selectAllElementsInFrame:"",removeAllElementsFromFrame:"",eyeDropper:"Избери цвят от платното",textToDiagram:"",prompt:""},e={noItems:"Няма добавени неща все още...",hint_emptyLibrary:"",hint_emptyPrivateLibrary:""},E={clearReset:"Нулиране на платно",exportJSON:"",exportImage:"",export:"Запази на...",copyToClipboard:"Копиране в клипборда",save:"Запази към текущ файл",saveAs:"Запиши като",load:"Отвори",getShareableLink:"Получаване на връзка за споделяне",close:"Затвори",selectLanguage:"Избор на език",scrollBackToContent:"Превъртете обратно към съдържанието",zoomIn:"Приближаване",zoomOut:"Отдалечаване",resetZoom:"Стандартен мащаб",menu:"Меню",done:"Завършено",edit:"Редактиране",undo:"Отмяна",redo:"Повтори",resetLibrary:"Нулиране на библиотеката",createNewRoom:"Създай нова стая",fullScreen:"На цял екран",darkMode:"Тъмен режим",lightMode:"Светъл режим",zenMode:"Режим Zen",objectsSnapMode:"",exitZenMode:"Спиране на Zen режим",cancel:"Отмени",clear:"Изчисти",remove:"Премахване",embed:"",publishLibrary:"Публикувай",submit:"Изпрати",confirm:"Потвърждаване",embeddableInteractionButton:""},D={clearReset:"Това ще изчисти цялото платно. Сигурни ли сте?",couldNotCreateShareableLink:"Връзката не може да бъде създадена.",couldNotCreateShareableLinkTooBig:"Не може да се създаде връзка за споделяне: сцената е твърде голяма",couldNotLoadInvalidFile:"Невалиден файл не може да се зареди",importBackendFailed:"Импортирането от бекенд не беше успешно.",cannotExportEmptyCanvas:"Не може да се експортира празно платно.",couldNotCopyToClipboard:"Не можем да копираме в клипбоарда.",decryptFailed:"Данните не можаха да се дешифрират.",uploadedSecurly:"Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.",loadSceneOverridePrompt:"Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?",collabStopOverridePrompt:`Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?
1
+ import"./main-BDhqALRb.js";var u={paste:"Постави",pasteAsPlaintext:"Постави като обикновен текст",pasteCharts:"Постави графики",selectAll:"Маркирай всичко",multiSelect:"Добави елемент към селекция",moveCanvas:"Премести платно",cut:"Изрежи",copy:"Копирай",copyAsPng:"Копиране в клипборда",copyAsSvg:"Копирано в клипборда като SVG",copyText:"",copySource:"",convertToCode:"",bringForward:"Преместване напред",sendToBack:"Изнасяне назад",bringToFront:"Изнасяне отпред",sendBackward:"Изпрати отзад",delete:"Изтрий",copyStyles:"Копирайте стилове",pasteStyles:"Постави стилове",stroke:"Щрих",background:"Фон",fill:"Наситеност",strokeWidth:"Ширина на щриха",strokeStyle:"Стил на линия",strokeStyle_solid:"Плътен",strokeStyle_dashed:"Пунктир",strokeStyle_dotted:"Пунктирано",sloppiness:"Небрежност",opacity:"Прозрачност",textAlign:"Подравняване на текста",edges:"Крайща",sharp:"Остър",round:"Закръглено",arrowheads:"Стрелки",arrowhead_none:"Без",arrowhead_arrow:"Стрелка",arrowhead_bar:"Връх на стрелката",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"Триъгълник",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"Размер на шрифта",fontFamily:"Семейство шрифтове",addWatermark:'Добави "Направено с Excalidraw"',handDrawn:"Нарисувано на ръка",normal:"Нормален",code:"Код",small:"Малък",medium:"Среден",large:"Голям",veryLarge:"Много голям",solid:"Солиден",hachure:"Хералдика",zigzag:"Зигзаг",crossHatch:"Двойно-пресечено",thin:"Тънък",bold:"Ясно очертан",left:"Ляво",center:"Център",right:"Дясно",extraBold:"Много ясно очертан",architect:"Архитект",artist:"Художник",cartoonist:"Карикатурист",fileTitle:"Име на файл",colorPicker:"Избор на цвят",canvasColors:"Използван на платно",canvasBackground:"Фон на платно",drawingCanvas:"Платно за рисуване",layers:"Слоеве",actions:"Действия",language:"Език",liveCollaboration:"",duplicateSelection:"Дублирай",untitled:"Неозаглавено",name:"Име",yourName:"Вашето име",madeWithExcalidraw:"Направено с Excalidraw",group:"Групирай селекцията",ungroup:"Спри групирането на селекцията",collaborators:"Сътрудници",showGrid:"Показване на мрежа",addToLibrary:"Добавяне към библиотеката",removeFromLibrary:"Премахване от библиотеката",libraryLoadingMessage:"Зареждане на библиотеката…",libraries:"Разглеждане на библиотеките",loadingScene:"Зареждане на сцена…",align:"Подравняване",alignTop:"Подравняване отгоре",alignBottom:"Подравняване отдолу",alignLeft:"Подравняване отляво",alignRight:"Подравняване отдясно",centerVertically:"Центрирай вертикално",centerHorizontally:"Центрирай хоризонтално",distributeHorizontally:"Разпредели хоризонтално",distributeVertically:"Разпредели вертикално",flipHorizontal:"Хоризонтално обръщане",flipVertical:"Вертикално обръщане",viewMode:"Изглед",share:"Сподели",showStroke:"",showBackground:"",toggleTheme:"Включи тема",personalLib:"Лична Библиотека",excalidrawLib:"Excalidraw Библиотека",decreaseFontSize:"Намали размера на шрифта",increaseFontSize:"Увеличи размера на шрифта",unbindText:"",bindText:"",createContainerFromText:"",link:{edit:"Редактирай линк",editEmbed:"",create:"",createEmbed:"",label:"Линк",labelEmbed:"",empty:""},lineEditor:{edit:"",exit:""},elementLock:{lock:"Заключи",unlock:"Отключи",lockAll:"Заключи всички",unlockAll:"Отключи всички"},statusPublished:"Публикувани",sidebarLock:"",selectAllElementsInFrame:"",removeAllElementsFromFrame:"",eyeDropper:"Избери цвят от платното",textToDiagram:"",prompt:""},e={noItems:"Няма добавени неща все още...",hint_emptyLibrary:"",hint_emptyPrivateLibrary:""},E={clearReset:"Нулиране на платно",exportJSON:"",exportImage:"",export:"Запази на...",copyToClipboard:"Копиране в клипборда",save:"Запази към текущ файл",saveAs:"Запиши като",load:"Отвори",getShareableLink:"Получаване на връзка за споделяне",close:"Затвори",selectLanguage:"Избор на език",scrollBackToContent:"Превъртете обратно към съдържанието",zoomIn:"Приближаване",zoomOut:"Отдалечаване",resetZoom:"Стандартен мащаб",menu:"Меню",done:"Завършено",edit:"Редактиране",undo:"Отмяна",redo:"Повтори",resetLibrary:"Нулиране на библиотеката",createNewRoom:"Създай нова стая",fullScreen:"На цял екран",darkMode:"Тъмен режим",lightMode:"Светъл режим",zenMode:"Режим Zen",objectsSnapMode:"",exitZenMode:"Спиране на Zen режим",cancel:"Отмени",clear:"Изчисти",remove:"Премахване",embed:"",publishLibrary:"Публикувай",submit:"Изпрати",confirm:"Потвърждаване",embeddableInteractionButton:""},D={clearReset:"Това ще изчисти цялото платно. Сигурни ли сте?",couldNotCreateShareableLink:"Връзката не може да бъде създадена.",couldNotCreateShareableLinkTooBig:"Не може да се създаде връзка за споделяне: сцената е твърде голяма",couldNotLoadInvalidFile:"Невалиден файл не може да се зареди",importBackendFailed:"Импортирането от бекенд не беше успешно.",cannotExportEmptyCanvas:"Не може да се експортира празно платно.",couldNotCopyToClipboard:"Не можем да копираме в клипбоарда.",decryptFailed:"Данните не можаха да се дешифрират.",uploadedSecurly:"Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.",loadSceneOverridePrompt:"Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?",collabStopOverridePrompt:`Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?
2
2
 
3
3
  (Ако искате да продължите с локалната рисунка, просто затворете таба на браузъра.)`,errorAddingToLibrary:"Не можем да заредим от библиотеката",errorRemovingFromLibrary:"Не можем да премахнем елемент от библиотеката",confirmAddLibrary:"Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?",imageDoesNotContainScene:"",cannotRestoreFromImage:"Не може да бъде възстановена сцена от този файл",invalidSceneUrl:"",resetLibrary:"",removeItemsFromsLibrary:"Изтрий {{count}} елемент(а) от библиотеката?",invalidEncryptionKey:"",collabOfflineWarning:""},a={unsupportedFileType:"Този файлов формат не се поддържа.",imageInsertError:"",fileTooBig:"Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.",svgImageInsertError:"",failedToFetchImage:"",invalidSVGString:"Невалиден SVG.",cannotResolveCollabServer:"",importLibraryError:"Не можем да заредим библиотеката",collabSaveFailed:"",collabSaveFailed_sizeExceeded:"",imageToolNotSupported:"",brave_measure_text_error:{line1:"",line2:"",line3:"Силно препоръчваме да изключите тази настройка. Можете да следвате <link>тези стъпки</link> за това как да го направите.",line4:""},libraryElementTypeError:{embeddable:"",iframe:"",image:""},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},o={selection:"Селекция",image:"Вмъкване на изображение",rectangle:"Правоъгълник",diamond:"Диамант",ellipse:"Елипс",arrow:"Стрелка",line:"Линия",freedraw:"Рисуване",text:"Текст",library:"Библиотека",lock:"Поддържайте избрания инструмент активен след рисуване",penMode:"",link:"",eraser:"Гума",frame:"",magicframe:"",embeddable:"",laser:"",hand:"",extraTools:"Още инструменти",mermaidToExcalidraw:"",magicSettings:""},r={canvasActions:"Действия по платното",selectedShapeActions:"Избрани действия",shapes:"Фигури"},t={canvasPanning:"",linearElement:"Кликнете, за да стартирате няколко точки, плъзнете за една линия",freeDraw:"Натиснете и влачете, пуснете като сте готови",text:"Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция",embeddable:"",text_selected:"",text_editing:"",linearElementMulti:"Кликнете върху последната точка или натиснете Escape или Enter, за да завършите",lockAngle:"Можете да ограничите ъгъла, като задържите SHIFT",resize:`Може да ограничите при преоразмеряване като задържите SHIFT,
4
4
  задръжте ALT за преоразмерите през центъра`,resizeImage:"",rotate:"Можете да ограничите ъглите, като държите SHIFT, докато се въртите",lineEditor_info:"",lineEditor_pointSelected:"Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите",lineEditor_nothingSelected:"",placeImage:"",publishLibrary:"",bindTextToElement:"Натиснете Enter, за да добавите",deepBoxSelect:"",eraserRevert:"",firefox_clipboard_write:"",disableSnapping:""},i={cannotShowPreview:"Невъзможност за показване на preview",canvasTooBig:"Платното е твърде голямо.",canvasTooBigTip:"Подсказка: пробвайте да приближите далечните елементи по-близко."},A={headingMain:"Среща грешка. Опитайте <button>презареждане на страницата.</button>",clearCanvasMessage:"Ако презареждането не работи, опитайте <button>изчистване на платното.</button>",clearCanvasCaveat:" Това ще доведе до загуба на работа ",trackedToSentry:"Грешката с идентификатор {{eventId}} беше проследен в нашата система.",openIssueMessage:"Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата <button>тракер за грешки.</button> Моля, включете информация по-долу, като я копирате и добавите в GitHub.",sceneContent:"Съдържание на сцената:"},l={desc_intro:"Можете да поканите хора на текущата си сцена да си сътрудничат с вас.",desc_privacy:"Не се притеснявайте, сесията използва криптиране от край до край, така че каквото нарисувате ще остане частно. Дори нашият сървър няма да може да види какво предлагате.",button_startSession:"Стартирайте сесията",button_stopSession:"Стоп на сесията",desc_inProgressIntro:"Сесията за сътрудничество на живо е в ход.",desc_shareLink:"Споделете тази връзка с всеки, с когото искате да си сътрудничите:",desc_exitSession:"Спирането на сесията ще ви изключи от стаята, но ще можете да продължите да работите със сцената, локално. Имайте предвид, че това няма да засегне други хора и те все още ще могат да си сътрудничат с тяхната версия.",shareTitle:""},n={title:"Грешка"},F={disk_title:"",disk_details:"",disk_button:"",link_title:"",link_details:"",link_button:"",excalidrawplus_description:"",excalidrawplus_button:"Експорт",excalidrawplus_exportError:""},s={blog:"Прочетете нашия блог",click:"клик",deepSelect:"",deepBoxSelect:"",curvedArrow:"Извита стрелка",curvedLine:"Извита линия",documentation:"Документация",doubleClick:"двойно-щракване",drag:"плъзнете",editor:"Редактор",editLineArrowPoints:"",editText:"",github:"Намерихте проблем? Изпратете",howto:"Следвайте нашите ръководства",or:"или",preventBinding:"Спри прилепяне на стрелките",tools:"Инструменти",shortcuts:"Клавиши за бърз достъп",textFinish:"Завърши редактиране (текстов редактор)",textNewLine:"Добави нова линия (текстов редактор)",title:"Помощ",view:"Преглед",zoomToFit:"Приближи докато се виждат всички елементи",zoomToSelection:"Приближи селекцията",toggleElementLock:"Заключи/Отключи селекция",movePageUpDown:"Премести страница нагоре/надолу",movePageLeftRight:"Премести страница наляво/надясно"},B={title:"Изчисти платното"},d={title:"Публикувай библиотека",itemName:"Име",authorName:"Авторско име",githubUsername:"GitHub потребителско име",twitterUsername:"Twitter потребителско име",libraryName:"Име на библиотеката",libraryDesc:"Описание на библиотеката",website:"Уебсайт",placeholder:{authorName:"Името или потребителското Ви име",libraryName:"Име на библиотеката Ви",libraryDesc:"Описание на библиотеката ви, за да помогнете на хората да разберат приложенията ѝ",githubHandle:"",twitterHandle:"",website:""},errors:{required:"Задължително",website:"Въведете валиден URL адрес"},noteDescription:"",noteGuidelines:"",noteLicense:"",noteItems:"",atleastOneLibItem:"",republishWarning:""},c={title:"",content:""},C={resetLibrary:"Нулирай библиотека",removeItemsFromLib:""},m={header:"",label:{withBackground:"Фон",onlySelected:"Само избраното",darkMode:"Тъмен режим",embedScene:"",scale:"",padding:""},tooltip:{embedScene:""},title:{exportToPng:"Изнасяне в PNG",exportToSvg:"Изнасяне в SVG",copyPngToClipboard:"Копирай PNG в клипборда"},button:{exportToPng:"PNG",exportToSvg:"SVG",copyPngToClipboard:"Копиране в клипборда"}},p={tooltip:"Вашите рисунки са криптирани от край до край, така че сървърите на Excalidraw няма да могат да ги виждат.",link:""},b={angle:"Ъгъл",element:"Елемент",elements:"Елементи",height:"Височина",scene:"Сцена",selected:"Селектирано",storage:"Съхранение на данни",title:"Статистика за хакери",total:"Общо",version:"Версия",versionCopy:"Настисни за да копираш",versionNotAvailable:"Версията не е налична",width:"Широчина"},g={addedToLibrary:"Добавена към библиотеката",copyStyles:"Копирани стилове.",copyToClipboard:"Копирано в клипборда.",copyToClipboardAsPng:`Копира {{exportSelection}} в клипборда като PNG
@@ -1,4 +1,4 @@
1
- import{W as se,a6 as ye,d as H,e as Ee,l as S,q as we,j as De,g as he,_ as ve}from"./index-CMTjDsOp.js";import{c as Ne}from"./clone-sj1RjrIX.js";import{i as ke,a as Ie,b as Oe,p as Te,c as ge,d as ze}from"./edges-e0da2a9e-CB2w3jS2.js";import{G as Ce}from"./graph-CsvWB58Y.js";import"./main-C1TkgC3p.js";import{c as Ae}from"./channel-BgX0NHoH.js";import{o as Re}from"./ordinal-Cboi1Yqb.js";import{s as Be}from"./Tableau10-B-NsZVaP.js";import"./createText-2e5e7dd3-DPYwmS_z.js";import"./line-Cvp4skCK.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./init-Gi6I4Gst.js";var le,oe,ee=function(){var e=function(D,o,s,i){for(s=s||{},i=D.length;i--;s[D[i]]=o);return s},a=[1,7],d=[1,13],c=[1,14],n=[1,15],g=[1,19],l=[1,16],f=[1,17],b=[1,18],p=[8,30],x=[8,21,28,29,30,31,32,40,44,47],y=[1,23],T=[1,24],v=[8,15,16,21,28,29,30,31,32,40,44,47],N=[8,15,16,21,27,28,29,30,31,32,40,44,47],E=[1,49],L={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(o,s,i,u,h,t,m){var r=t.length-1;switch(h){case 4:u.getLogger().debug("Rule: separator (NL) ");break;case 5:u.getLogger().debug("Rule: separator (Space) ");break;case 6:u.getLogger().debug("Rule: separator (EOF) ");break;case 7:u.getLogger().debug("Rule: hierarchy: ",t[r-1]),u.setHierarchy(t[r-1]);break;case 8:u.getLogger().debug("Stop NL ");break;case 9:u.getLogger().debug("Stop EOF ");break;case 10:u.getLogger().debug("Stop NL2 ");break;case 11:u.getLogger().debug("Stop EOF2 ");break;case 12:u.getLogger().debug("Rule: statement: ",t[r]),typeof t[r].length=="number"?this.$=t[r]:this.$=[t[r]];break;case 13:u.getLogger().debug("Rule: statement #2: ",t[r-1]),this.$=[t[r-1]].concat(t[r]);break;case 14:u.getLogger().debug("Rule: link: ",t[r],o),this.$={edgeTypeStr:t[r],label:""};break;case 15:u.getLogger().debug("Rule: LABEL link: ",t[r-3],t[r-1],t[r]),this.$={edgeTypeStr:t[r],label:t[r-1]};break;case 18:const R=parseInt(t[r]),Y=u.generateId();this.$={id:Y,type:"space",label:"",width:R,children:[]};break;case 23:u.getLogger().debug("Rule: (nodeStatement link node) ",t[r-2],t[r-1],t[r]," typestr: ",t[r-1].edgeTypeStr);const F=u.edgeStrToEdgeData(t[r-1].edgeTypeStr);this.$=[{id:t[r-2].id,label:t[r-2].label,type:t[r-2].type,directions:t[r-2].directions},{id:t[r-2].id+"-"+t[r].id,start:t[r-2].id,end:t[r].id,label:t[r-1].label,type:"edge",directions:t[r].directions,arrowTypeEnd:F,arrowTypeStart:"arrow_open"},{id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions}];break;case 24:u.getLogger().debug("Rule: nodeStatement (abc88 node size) ",t[r-1],t[r]),this.$={id:t[r-1].id,label:t[r-1].label,type:u.typeStr2Type(t[r-1].typeStr),directions:t[r-1].directions,widthInColumns:parseInt(t[r],10)};break;case 25:u.getLogger().debug("Rule: nodeStatement (node) ",t[r]),this.$={id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions,widthInColumns:1};break;case 26:u.getLogger().debug("APA123",this?this:"na"),u.getLogger().debug("COLUMNS: ",t[r]),this.$={type:"column-setting",columns:t[r]==="auto"?-1:parseInt(t[r])};break;case 27:u.getLogger().debug("Rule: id-block statement : ",t[r-2],t[r-1]),u.generateId(),this.$={...t[r-2],type:"composite",children:t[r-1]};break;case 28:u.getLogger().debug("Rule: blockStatement : ",t[r-2],t[r-1],t[r]);const C=u.generateId();this.$={id:C,type:"composite",label:"",children:t[r-1]};break;case 29:u.getLogger().debug("Rule: node (NODE_ID separator): ",t[r]),this.$={id:t[r]};break;case 30:u.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",t[r-1],t[r]),this.$={id:t[r-1],label:t[r].label,typeStr:t[r].typeStr,directions:t[r].directions};break;case 31:u.getLogger().debug("Rule: dirList: ",t[r]),this.$=[t[r]];break;case 32:u.getLogger().debug("Rule: dirList: ",t[r-1],t[r]),this.$=[t[r-1]].concat(t[r]);break;case 33:u.getLogger().debug("Rule: nodeShapeNLabel: ",t[r-2],t[r-1],t[r]),this.$={typeStr:t[r-2]+t[r],label:t[r-1]};break;case 34:u.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",t[r-3],t[r-2]," #3:",t[r-1],t[r]),this.$={typeStr:t[r-3]+t[r],label:t[r-2],directions:t[r-1]};break;case 35:case 36:this.$={type:"classDef",id:t[r-1].trim(),css:t[r].trim()};break;case 37:this.$={type:"applyClass",id:t[r-1].trim(),styleClass:t[r].trim()};break;case 38:this.$={type:"applyStyles",id:t[r-1].trim(),stylesStr:t[r].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{8:[1,20]},e(p,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:d,29:c,31:n,32:g,40:l,44:f,47:b}),e(x,[2,16],{14:22,15:y,16:T}),e(x,[2,17]),e(x,[2,18]),e(x,[2,19]),e(x,[2,20]),e(x,[2,21]),e(x,[2,22]),e(v,[2,25],{27:[1,25]}),e(x,[2,26]),{19:26,26:12,32:g},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(N,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(p,[2,13]),{26:35,32:g},{32:[2,14]},{17:[1,36]},e(v,[2,24]),{11:37,13:4,14:22,15:y,16:T,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(N,[2,30]),{18:[1,43]},{18:[1,44]},e(v,[2,23]),{18:[1,45]},{30:[1,46]},e(x,[2,28]),e(x,[2,35]),e(x,[2,36]),e(x,[2,37]),e(x,[2,38]),{37:[1,47]},{34:48,35:E},{15:[1,50]},e(x,[2,27]),e(N,[2,33]),{39:[1,51]},{34:52,35:E,39:[2,31]},{32:[2,15]},e(N,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(o,s){if(s.recoverable)this.trace(o);else{var i=new Error(o);throw i.hash=s,i}},parse:function(o){var s=this,i=[0],u=[],h=[null],t=[],m=this.table,r="",R=0,Y=0,F=2,C=1,Le=t.slice.call(arguments,1),w=Object.create(this.lexer),K={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(K.yy[Z]=this.yy[Z]);w.setInput(o,K.yy),K.yy.lexer=w,K.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var J=w.yylloc;t.push(J);var me=w.options&&w.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _e(){var P;return P=u.pop()||w.lex()||C,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}for(var I,M,z,Q,W={},X,B,ae,G;;){if(M=i[i.length-1],this.defaultActions[M]?z=this.defaultActions[M]:((I===null||typeof I>"u")&&(I=_e()),z=m[M]&&m[M][I]),typeof z>"u"||!z.length||!z[0]){var $="";G=[];for(X in m[M])this.terminals_[X]&&X>F&&G.push("'"+this.terminals_[X]+"'");w.showPosition?$="Parse error on line "+(R+1)+`:
1
+ import{W as se,a6 as ye,d as H,e as Ee,l as S,q as we,j as De,g as he,_ as ve}from"./index-D2dwBAqU.js";import{c as Ne}from"./clone--6RafNlE.js";import{i as ke,a as Ie,b as Oe,p as Te,c as ge,d as ze}from"./edges-e0da2a9e-GhlmD_OT.js";import{G as Ce}from"./graph-CkOf80-j.js";import"./main-BDhqALRb.js";import{c as Ae}from"./channel-DwOBcjcx.js";import{o as Re}from"./ordinal-Cboi1Yqb.js";import{s as Be}from"./Tableau10-B-NsZVaP.js";import"./createText-2e5e7dd3-DOdc1FUH.js";import"./line-DVSD4YuA.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./init-Gi6I4Gst.js";var le,oe,ee=function(){var e=function(D,o,s,i){for(s=s||{},i=D.length;i--;s[D[i]]=o);return s},a=[1,7],d=[1,13],c=[1,14],n=[1,15],g=[1,19],l=[1,16],f=[1,17],b=[1,18],p=[8,30],x=[8,21,28,29,30,31,32,40,44,47],y=[1,23],T=[1,24],v=[8,15,16,21,28,29,30,31,32,40,44,47],N=[8,15,16,21,27,28,29,30,31,32,40,44,47],E=[1,49],L={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(o,s,i,u,h,t,m){var r=t.length-1;switch(h){case 4:u.getLogger().debug("Rule: separator (NL) ");break;case 5:u.getLogger().debug("Rule: separator (Space) ");break;case 6:u.getLogger().debug("Rule: separator (EOF) ");break;case 7:u.getLogger().debug("Rule: hierarchy: ",t[r-1]),u.setHierarchy(t[r-1]);break;case 8:u.getLogger().debug("Stop NL ");break;case 9:u.getLogger().debug("Stop EOF ");break;case 10:u.getLogger().debug("Stop NL2 ");break;case 11:u.getLogger().debug("Stop EOF2 ");break;case 12:u.getLogger().debug("Rule: statement: ",t[r]),typeof t[r].length=="number"?this.$=t[r]:this.$=[t[r]];break;case 13:u.getLogger().debug("Rule: statement #2: ",t[r-1]),this.$=[t[r-1]].concat(t[r]);break;case 14:u.getLogger().debug("Rule: link: ",t[r],o),this.$={edgeTypeStr:t[r],label:""};break;case 15:u.getLogger().debug("Rule: LABEL link: ",t[r-3],t[r-1],t[r]),this.$={edgeTypeStr:t[r],label:t[r-1]};break;case 18:const R=parseInt(t[r]),Y=u.generateId();this.$={id:Y,type:"space",label:"",width:R,children:[]};break;case 23:u.getLogger().debug("Rule: (nodeStatement link node) ",t[r-2],t[r-1],t[r]," typestr: ",t[r-1].edgeTypeStr);const F=u.edgeStrToEdgeData(t[r-1].edgeTypeStr);this.$=[{id:t[r-2].id,label:t[r-2].label,type:t[r-2].type,directions:t[r-2].directions},{id:t[r-2].id+"-"+t[r].id,start:t[r-2].id,end:t[r].id,label:t[r-1].label,type:"edge",directions:t[r].directions,arrowTypeEnd:F,arrowTypeStart:"arrow_open"},{id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions}];break;case 24:u.getLogger().debug("Rule: nodeStatement (abc88 node size) ",t[r-1],t[r]),this.$={id:t[r-1].id,label:t[r-1].label,type:u.typeStr2Type(t[r-1].typeStr),directions:t[r-1].directions,widthInColumns:parseInt(t[r],10)};break;case 25:u.getLogger().debug("Rule: nodeStatement (node) ",t[r]),this.$={id:t[r].id,label:t[r].label,type:u.typeStr2Type(t[r].typeStr),directions:t[r].directions,widthInColumns:1};break;case 26:u.getLogger().debug("APA123",this?this:"na"),u.getLogger().debug("COLUMNS: ",t[r]),this.$={type:"column-setting",columns:t[r]==="auto"?-1:parseInt(t[r])};break;case 27:u.getLogger().debug("Rule: id-block statement : ",t[r-2],t[r-1]),u.generateId(),this.$={...t[r-2],type:"composite",children:t[r-1]};break;case 28:u.getLogger().debug("Rule: blockStatement : ",t[r-2],t[r-1],t[r]);const C=u.generateId();this.$={id:C,type:"composite",label:"",children:t[r-1]};break;case 29:u.getLogger().debug("Rule: node (NODE_ID separator): ",t[r]),this.$={id:t[r]};break;case 30:u.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",t[r-1],t[r]),this.$={id:t[r-1],label:t[r].label,typeStr:t[r].typeStr,directions:t[r].directions};break;case 31:u.getLogger().debug("Rule: dirList: ",t[r]),this.$=[t[r]];break;case 32:u.getLogger().debug("Rule: dirList: ",t[r-1],t[r]),this.$=[t[r-1]].concat(t[r]);break;case 33:u.getLogger().debug("Rule: nodeShapeNLabel: ",t[r-2],t[r-1],t[r]),this.$={typeStr:t[r-2]+t[r],label:t[r-1]};break;case 34:u.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",t[r-3],t[r-2]," #3:",t[r-1],t[r]),this.$={typeStr:t[r-3]+t[r],label:t[r-2],directions:t[r-1]};break;case 35:case 36:this.$={type:"classDef",id:t[r-1].trim(),css:t[r].trim()};break;case 37:this.$={type:"applyClass",id:t[r-1].trim(),styleClass:t[r].trim()};break;case 38:this.$={type:"applyStyles",id:t[r-1].trim(),stylesStr:t[r].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{8:[1,20]},e(p,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:d,29:c,31:n,32:g,40:l,44:f,47:b}),e(x,[2,16],{14:22,15:y,16:T}),e(x,[2,17]),e(x,[2,18]),e(x,[2,19]),e(x,[2,20]),e(x,[2,21]),e(x,[2,22]),e(v,[2,25],{27:[1,25]}),e(x,[2,26]),{19:26,26:12,32:g},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(N,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(p,[2,13]),{26:35,32:g},{32:[2,14]},{17:[1,36]},e(v,[2,24]),{11:37,13:4,14:22,15:y,16:T,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:d,29:c,31:n,32:g,40:l,44:f,47:b},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(N,[2,30]),{18:[1,43]},{18:[1,44]},e(v,[2,23]),{18:[1,45]},{30:[1,46]},e(x,[2,28]),e(x,[2,35]),e(x,[2,36]),e(x,[2,37]),e(x,[2,38]),{37:[1,47]},{34:48,35:E},{15:[1,50]},e(x,[2,27]),e(N,[2,33]),{39:[1,51]},{34:52,35:E,39:[2,31]},{32:[2,15]},e(N,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(o,s){if(s.recoverable)this.trace(o);else{var i=new Error(o);throw i.hash=s,i}},parse:function(o){var s=this,i=[0],u=[],h=[null],t=[],m=this.table,r="",R=0,Y=0,F=2,C=1,Le=t.slice.call(arguments,1),w=Object.create(this.lexer),K={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(K.yy[Z]=this.yy[Z]);w.setInput(o,K.yy),K.yy.lexer=w,K.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var J=w.yylloc;t.push(J);var me=w.options&&w.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _e(){var P;return P=u.pop()||w.lex()||C,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}for(var I,M,z,Q,W={},X,B,ae,G;;){if(M=i[i.length-1],this.defaultActions[M]?z=this.defaultActions[M]:((I===null||typeof I>"u")&&(I=_e()),z=m[M]&&m[M][I]),typeof z>"u"||!z.length||!z[0]){var $="";G=[];for(X in m[M])this.terminals_[X]&&X>F&&G.push("'"+this.terminals_[X]+"'");w.showPosition?$="Parse error on line "+(R+1)+`:
2
2
  `+w.showPosition()+`
3
3
  Expecting `+G.join(", ")+", got '"+(this.terminals_[I]||I)+"'":$="Parse error on line "+(R+1)+": Unexpected "+(I==C?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError($,{text:w.match,token:this.terminals_[I]||I,line:w.yylineno,loc:J,expected:G})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+M+", token: "+I);switch(z[0]){case 1:i.push(I),h.push(w.yytext),t.push(w.yylloc),i.push(z[1]),I=null,Y=w.yyleng,r=w.yytext,R=w.yylineno,J=w.yylloc;break;case 2:if(B=this.productions_[z[1]][1],W.$=h[h.length-B],W._$={first_line:t[t.length-(B||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(B||1)].first_column,last_column:t[t.length-1].last_column},me&&(W._$.range=[t[t.length-(B||1)].range[0],t[t.length-1].range[1]]),Q=this.performAction.apply(W,[r,Y,R,K.yy,z[1],h,t].concat(Le)),typeof Q<"u")return Q;B&&(i=i.slice(0,-1*B*2),h=h.slice(0,-1*B),t=t.slice(0,-1*B)),i.push(this.productions_[z[1]][0]),h.push(W.$),t.push(W._$),ae=m[i[i.length-2]][i[i.length-1]],i.push(ae);break;case 3:return!0}}return!0}},A=function(){var D={EOF:1,parseError:function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},setInput:function(o,s){return this.yy=s||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var s=o.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},unput:function(o){var s=o.length,i=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var h=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[h[0],h[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(o){this.unput(this.match.slice(o))},pastInput:function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var o=this.pastInput(),s=new Array(o.length+1).join("-");return o+this.upcomingInput()+`