@itsthecsguy/linework 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +11 -0
  3. package/README.md +164 -2
  4. package/assets/drawio/LICENSE +201 -0
  5. package/assets/drawio/VERSION +1 -0
  6. package/assets/drawio/favicon.ico +0 -0
  7. package/assets/drawio/images/1x1.png +0 -0
  8. package/assets/drawio/images/2x2.png +0 -0
  9. package/assets/drawio/images/3x3.png +0 -0
  10. package/assets/drawio/images/ajax-loader.gif +0 -0
  11. package/assets/drawio/images/android-chrome-512x512.png +0 -0
  12. package/assets/drawio/images/apple-touch-icon.png +0 -0
  13. package/assets/drawio/images/aui-wait.gif +0 -0
  14. package/assets/drawio/images/broken.png +0 -0
  15. package/assets/drawio/images/browserconfig.xml +9 -0
  16. package/assets/drawio/images/close.png +0 -0
  17. package/assets/drawio/images/cloud-connector-atlas.png +0 -0
  18. package/assets/drawio/images/collapsed.gif +0 -0
  19. package/assets/drawio/images/delete.png +0 -0
  20. package/assets/drawio/images/document-google-drive-icon-80.png +0 -0
  21. package/assets/drawio/images/draw-search.png +0 -0
  22. package/assets/drawio/images/drawio.svg +19 -0
  23. package/assets/drawio/images/drawlogo-color.svg +50 -0
  24. package/assets/drawio/images/drawlogo-gray.svg +18 -0
  25. package/assets/drawio/images/drawlogo-text-bottom.svg +75 -0
  26. package/assets/drawio/images/drawlogo.svg +18 -0
  27. package/assets/drawio/images/drawlogo128.png +0 -0
  28. package/assets/drawio/images/drawlogo144.png +0 -0
  29. package/assets/drawio/images/drawlogo256.png +0 -0
  30. package/assets/drawio/images/drawlogo48-gray.png +0 -0
  31. package/assets/drawio/images/drawlogo48.png +0 -0
  32. package/assets/drawio/images/drawlogo80.png +0 -0
  33. package/assets/drawio/images/droptarget.png +0 -0
  34. package/assets/drawio/images/edit.gif +0 -0
  35. package/assets/drawio/images/edit16.png +0 -0
  36. package/assets/drawio/images/edit32.png +0 -0
  37. package/assets/drawio/images/edit80.png +0 -0
  38. package/assets/drawio/images/embed-icon.png +0 -0
  39. package/assets/drawio/images/expanded.gif +0 -0
  40. package/assets/drawio/images/facebook.png +0 -0
  41. package/assets/drawio/images/favicon-16x16.png +0 -0
  42. package/assets/drawio/images/favicon-32x32.png +0 -0
  43. package/assets/drawio/images/file.png +0 -0
  44. package/assets/drawio/images/folder.png +0 -0
  45. package/assets/drawio/images/gadget-screenshot.png +0 -0
  46. package/assets/drawio/images/gadget-thumb.png +0 -0
  47. package/assets/drawio/images/github-logo-white.svg +6 -0
  48. package/assets/drawio/images/github-logo.svg +17 -0
  49. package/assets/drawio/images/gitlab-logo-white.svg +1 -0
  50. package/assets/drawio/images/gitlab-logo.svg +1 -0
  51. package/assets/drawio/images/glyphicons_blogger.png +0 -0
  52. package/assets/drawio/images/glyphicons_facebook.png +0 -0
  53. package/assets/drawio/images/glyphicons_github.png +0 -0
  54. package/assets/drawio/images/glyphicons_google.png +0 -0
  55. package/assets/drawio/images/glyphicons_star.png +0 -0
  56. package/assets/drawio/images/glyphicons_twitter.png +0 -0
  57. package/assets/drawio/images/glyphicons_youtube.png +0 -0
  58. package/assets/drawio/images/google-drive-connector-atlas.png +0 -0
  59. package/assets/drawio/images/google-drive-connector-atlas.svg +121 -0
  60. package/assets/drawio/images/google-drive-logo-white.svg +9 -0
  61. package/assets/drawio/images/google-drive-logo.svg +17 -0
  62. package/assets/drawio/images/google-share.png +0 -0
  63. package/assets/drawio/images/icon-192-maskable.png +0 -0
  64. package/assets/drawio/images/icon-192.png +0 -0
  65. package/assets/drawio/images/icon-512-maskable.png +0 -0
  66. package/assets/drawio/images/icon-512.png +0 -0
  67. package/assets/drawio/images/icon-search.svg +21 -0
  68. package/assets/drawio/images/img-hi-res.png +0 -0
  69. package/assets/drawio/images/img-lo-res.png +0 -0
  70. package/assets/drawio/images/list.svg +16 -0
  71. package/assets/drawio/images/locked.png +0 -0
  72. package/assets/drawio/images/log.png +0 -0
  73. package/assets/drawio/images/logo-confluence.png +0 -0
  74. package/assets/drawio/images/logo-flat-small.png +0 -0
  75. package/assets/drawio/images/logo-flat.png +0 -0
  76. package/assets/drawio/images/logo-jira.png +0 -0
  77. package/assets/drawio/images/logo-small.gif +0 -0
  78. package/assets/drawio/images/logo-white.png +0 -0
  79. package/assets/drawio/images/logo.png +0 -0
  80. package/assets/drawio/images/manifest.json +25 -0
  81. package/assets/drawio/images/move.png +0 -0
  82. package/assets/drawio/images/notion-logo-white.svg +1 -0
  83. package/assets/drawio/images/notion-logo.svg +1 -0
  84. package/assets/drawio/images/onedrive-connector-atlas.png +0 -0
  85. package/assets/drawio/images/onedrive-connector-atlas.svg +248 -0
  86. package/assets/drawio/images/onedrive-logo-white.svg +29 -0
  87. package/assets/drawio/images/onedrive-logo.svg +29 -0
  88. package/assets/drawio/images/osa_database.png +0 -0
  89. package/assets/drawio/images/osa_drive-harddisk.png +0 -0
  90. package/assets/drawio/images/plant-uml-atlas.png +0 -0
  91. package/assets/drawio/images/samepage-icon-color.svg +37 -0
  92. package/assets/drawio/images/save.png +0 -0
  93. package/assets/drawio/images/sidebar-android.png +0 -0
  94. package/assets/drawio/images/sidebar-archimate.png +0 -0
  95. package/assets/drawio/images/sidebar-arrows.png +0 -0
  96. package/assets/drawio/images/sidebar-arrows2.png +0 -0
  97. package/assets/drawio/images/sidebar-basic.png +0 -0
  98. package/assets/drawio/images/sidebar-c4.png +0 -0
  99. package/assets/drawio/images/sidebar-cabinets.png +0 -0
  100. package/assets/drawio/images/sidebar-cumulus.png +0 -0
  101. package/assets/drawio/images/sidebar-dfd.png +0 -0
  102. package/assets/drawio/images/sidebar-dynamics365.png +0 -0
  103. package/assets/drawio/images/sidebar-eip.png +0 -0
  104. package/assets/drawio/images/sidebar-er.png +0 -0
  105. package/assets/drawio/images/sidebar-floorplans.png +0 -0
  106. package/assets/drawio/images/sidebar-flowchart.png +0 -0
  107. package/assets/drawio/images/sidebar-gcp3.png +0 -0
  108. package/assets/drawio/images/sidebar-general.png +0 -0
  109. package/assets/drawio/images/sidebar-kubernetes.png +0 -0
  110. package/assets/drawio/images/sidebar-leanmapping.png +0 -0
  111. package/assets/drawio/images/sidebar-mockups.png +0 -0
  112. package/assets/drawio/images/sidebar-network.png +0 -0
  113. package/assets/drawio/images/sidebar-network2.png +0 -0
  114. package/assets/drawio/images/sidebar-openstack.png +0 -0
  115. package/assets/drawio/images/sidebar-sitemap.png +0 -0
  116. package/assets/drawio/images/sidebar-threatmodeling.png +0 -0
  117. package/assets/drawio/images/sidebar-uml.png +0 -0
  118. package/assets/drawio/images/sketch-logo128.png +0 -0
  119. package/assets/drawio/images/spin.gif +0 -0
  120. package/assets/drawio/images/sprites.png +0 -0
  121. package/assets/drawio/images/stop-flat-icon-80.png +0 -0
  122. package/assets/drawio/images/submenu.gif +0 -0
  123. package/assets/drawio/images/touch-submenu.png +0 -0
  124. package/assets/drawio/images/transparent.gif +0 -0
  125. package/assets/drawio/images/trello-logo-white-orange.svg +6 -0
  126. package/assets/drawio/images/trello-logo-white.svg +6 -0
  127. package/assets/drawio/images/trello-logo.svg +1 -0
  128. package/assets/drawio/images/tweet.png +0 -0
  129. package/assets/drawio/images/update16.png +0 -0
  130. package/assets/drawio/images/update32.png +0 -0
  131. package/assets/drawio/images/update80.png +0 -0
  132. package/assets/drawio/images/youtube.png +0 -0
  133. package/assets/drawio/img/clipart/Battery_0_128x128.png +0 -0
  134. package/assets/drawio/img/clipart/Battery_100_128x128.png +0 -0
  135. package/assets/drawio/img/clipart/Battery_50_128x128.png +0 -0
  136. package/assets/drawio/img/clipart/Battery_75_128x128.png +0 -0
  137. package/assets/drawio/img/clipart/Battery_allstates_128x128.png +0 -0
  138. package/assets/drawio/img/clipart/Bluetooth_128x128.png +0 -0
  139. package/assets/drawio/img/clipart/Earth_globe_128x128.png +0 -0
  140. package/assets/drawio/img/clipart/Empty_Folder_128x128.png +0 -0
  141. package/assets/drawio/img/clipart/Full_Folder_128x128.png +0 -0
  142. package/assets/drawio/img/clipart/Gear_128x128.png +0 -0
  143. package/assets/drawio/img/clipart/Keys_128x128.png +0 -0
  144. package/assets/drawio/img/clipart/Lock_128x128.png +0 -0
  145. package/assets/drawio/img/clipart/Mouse_Pointer_128x128.png +0 -0
  146. package/assets/drawio/img/clipart/Plug_128x128.png +0 -0
  147. package/assets/drawio/img/clipart/Ships_Wheel_128x128.png +0 -0
  148. package/assets/drawio/img/clipart/Star_128x128.png +0 -0
  149. package/assets/drawio/img/clipart/Tire_128x128.png +0 -0
  150. package/assets/drawio/index.html +92 -0
  151. package/assets/drawio/js/PostConfig.js +7 -0
  152. package/assets/drawio/js/PreConfig.js +13 -0
  153. package/assets/drawio/js/app.min.js +18466 -0
  154. package/assets/drawio/js/bootstrap.js +428 -0
  155. package/assets/drawio/js/diagramly/LibavoidRouting.js +4459 -0
  156. package/assets/drawio/js/export-init.js +21 -0
  157. package/assets/drawio/js/extensions.min.js +10478 -0
  158. package/assets/drawio/js/libavoid-js/LICENSE +505 -0
  159. package/assets/drawio/js/libavoid-js/libavoid-routing.js +1633 -0
  160. package/assets/drawio/js/libavoid-js/libavoid.min.js +59 -0
  161. package/assets/drawio/js/main.js +22 -0
  162. package/assets/drawio/js/rough/rough.min.js +1 -0
  163. package/assets/drawio/js/shapes-14-6-5.min.js +3457 -0
  164. package/assets/drawio/js/stencils.min.js +447 -0
  165. package/assets/drawio/mxgraph/css/common.css +147 -0
  166. package/assets/drawio/resources/dia.txt +2901 -0
  167. package/assets/drawio/styles/dark-default.xml +109 -0
  168. package/assets/drawio/styles/default-old.xml +109 -0
  169. package/assets/drawio/styles/default.xml +203 -0
  170. package/assets/drawio/styles/fonts/ArchitectsDaughter-Regular.ttf +0 -0
  171. package/assets/drawio/styles/grapheditor.css +4501 -0
  172. package/assets/drawio/styles/high-contrast.css +128 -0
  173. package/assets/drawio/styles/thumb_horz.png +0 -0
  174. package/assets/drawio/styles/thumb_vertical.png +0 -0
  175. package/assets/fonts/ibm-plex-mono-LICENSE.txt +93 -0
  176. package/assets/fonts/ibm-plex-sans-LICENSE.txt +93 -0
  177. package/assets/fonts/kalam-400.woff2 +0 -0
  178. package/assets/fonts/kalam-700.woff2 +0 -0
  179. package/assets/fonts/kalam-LICENSE.txt +93 -0
  180. package/assets/fonts/plex-mono-400.woff2 +0 -0
  181. package/assets/fonts/plex-mono-600.woff2 +0 -0
  182. package/assets/fonts/plex-sans-400.woff2 +0 -0
  183. package/assets/fonts/plex-sans-600.woff2 +0 -0
  184. package/dist/api.js +181 -0
  185. package/dist/cli.js +262 -0
  186. package/dist/drawio/icons.js +121 -0
  187. package/dist/drawio/merge.js +309 -0
  188. package/dist/drawio/read.js +180 -0
  189. package/dist/drawio/show.js +501 -0
  190. package/dist/drawio/theme.js +425 -0
  191. package/dist/drawio/write.js +300 -0
  192. package/dist/edit/server.js +212 -0
  193. package/dist/git.js +46 -0
  194. package/dist/import/mermaid.js +569 -0
  195. package/dist/layout/layout.js +212 -0
  196. package/dist/layout/sequence.js +333 -0
  197. package/dist/layout/text.js +73 -0
  198. package/dist/lint/check.js +184 -0
  199. package/dist/lint/fixlabels.js +128 -0
  200. package/dist/mcp/server.js +239 -0
  201. package/dist/publish.js +121 -0
  202. package/dist/render/browser.js +210 -0
  203. package/dist/render/fonts.js +66 -0
  204. package/dist/report.js +36 -0
  205. package/dist/spec/model.js +53 -0
  206. package/dist/spec/parse.js +497 -0
  207. package/package.json +71 -4
  208. package/skills/linework/SKILL.md +214 -0
  209. package/skills/linework/examples/billing-er.drawio.svg +4 -0
  210. package/skills/linework/examples/billing-er.yaml +31 -0
  211. package/skills/linework/examples/checkout.drawio.svg +4 -0
  212. package/skills/linework/examples/checkout.yaml +28 -0
  213. package/skills/linework/examples/pay-sequence.drawio.svg +4 -0
  214. package/skills/linework/examples/pay-sequence.yaml +28 -0
  215. package/skills/linework/examples/payment-state.drawio.svg +4 -0
  216. package/skills/linework/examples/payment-state.yaml +22 -0
  217. package/skills/linework/examples/refund-flow.drawio.svg +4 -0
  218. package/skills/linework/examples/refund-flow.yaml +29 -0
  219. package/skills/linework/examples/serverless-aws.drawio.svg +4 -0
  220. package/skills/linework/examples/serverless-aws.yaml +23 -0
  221. package/skills/linework/references/google-docs.md +46 -0
  222. package/skills/linework/references/spec.md +312 -0
  223. package/skills/linework/references/style-guide.md +53 -0
@@ -0,0 +1,428 @@
1
+ /**
2
+ * Copyright (c) 2020-2025, JGraph Holdings Ltd
3
+ * Copyright (c) 2020-2025, draw.io AG
4
+ */
5
+ /**
6
+ * URL Parameters and protocol description are here:
7
+ *
8
+ * https://www.drawio.com/doc/faq/supported-url-parameters
9
+ *
10
+ * Parameters for developers:
11
+ *
12
+ * - dev=1: For developers only
13
+ * - test=1: For developers only
14
+ * - ignoremime=1: For developers only (see DriveClient.js). Use Cmd-S to override mime.
15
+ * - createindex=1: For developers only (see etc/build/README)
16
+ * - filesupport=0: For developers only (see Editor.js in core)
17
+ * - savesidebar=1: For developers only (see Sidebar.js)
18
+ * - pages=1: For developers only (see Pages.js)
19
+ * - lic=email: For developers only (see LicenseServlet.java)
20
+ * --
21
+ * - networkshapes=1: For testing network shapes (temporary)
22
+ */
23
+ // Parses URL parameters
24
+ var urlParams = (function()
25
+ {
26
+ var result = new Object();
27
+ var params = window.location.search.slice(1).split('&');
28
+
29
+ for (var i = 0; i < params.length; i++)
30
+ {
31
+ var idx = params[i].indexOf('=');
32
+
33
+ if (idx > 0)
34
+ {
35
+ result[params[i].substring(0, idx)] = params[i].substring(idx + 1);
36
+ }
37
+ }
38
+
39
+ return result;
40
+ })();
41
+
42
+ // Forces CDN caches by passing URL parameters via URL hash
43
+ if (window.location.hash != null && window.location.hash.substring(0, 2) == '#P')
44
+ {
45
+ try
46
+ {
47
+ var params = urlParams;
48
+ urlParams = JSON.parse(decodeURIComponent(window.location.hash.substring(2)));
49
+
50
+ if (urlParams.hash != null)
51
+ {
52
+ window.location.hash = urlParams.hash;
53
+ delete urlParams.hash;
54
+ }
55
+
56
+ for (var key in params)
57
+ {
58
+ if (urlParams[key] == null)
59
+ {
60
+ urlParams[key] = params[key];
61
+ }
62
+ }
63
+ }
64
+ catch (e)
65
+ {
66
+ // ignore
67
+ }
68
+ }
69
+
70
+ // Global variable for desktop
71
+ var mxIsElectron = navigator.userAgent != null && navigator.userAgent.toLowerCase().indexOf(' electron/') > -1 &&
72
+ navigator.userAgent.indexOf(' draw.io/') > -1;
73
+
74
+ // Redirects page if required
75
+ if (urlParams['dev'] != '1')
76
+ {
77
+ (function()
78
+ {
79
+ var proto = window.location.protocol;
80
+
81
+ if (!mxIsElectron)
82
+ {
83
+ var host = window.location.host;
84
+
85
+ // Redirects apex, drive and rt to www
86
+ if (host === 'draw.io' || host === 'rt.draw.io' || host === 'drive.draw.io')
87
+ {
88
+ host = 'app.diagrams.net';
89
+ }
90
+
91
+ var href = proto + '//' + host + window.location.href.substring(
92
+ window.location.protocol.length +
93
+ window.location.host.length + 2);
94
+
95
+ // Redirects if href changes
96
+ if (href != window.location.href)
97
+ {
98
+ window.location.href = href;
99
+ }
100
+ }
101
+ })();
102
+ }
103
+
104
+ // Opens Microsoft 365 files from viewer links in the app. Links from before
105
+ // 31.5.3 use the viewer, whose Azure app has no /ms365 redirect URI, so the
106
+ // sign-in fails with AADSTS50011 [jgraph/drawio#5663]. The target host is
107
+ // fixed and frames are not redirected because the app only allows framing
108
+ // by itself and Microsoft hosts.
109
+ var mxM365Redirect = urlParams['dev'] != '1' &&
110
+ window.location.hostname == 'viewer.diagrams.net' &&
111
+ window.location.hash.substring(0, 2) == '#M' &&
112
+ window.top === window;
113
+
114
+ if (mxM365Redirect)
115
+ {
116
+ (function()
117
+ {
118
+ var search = window.location.search;
119
+
120
+ // The viewer host forces lightbox mode
121
+ if (!/[?&]lightbox=1(&|$)/.test(search))
122
+ {
123
+ search = ((search.length > 1) ? search + '&' : '?') + 'lightbox=1';
124
+ }
125
+
126
+ window.location.replace('https://app.diagrams.net/' + search + window.location.hash);
127
+ })();
128
+ }
129
+
130
+ /**
131
+ * Adds meta tag to the page.
132
+ */
133
+ function mxmeta(name, content, httpEquiv)
134
+ {
135
+ try
136
+ {
137
+ var s = document.createElement('meta');
138
+
139
+ if (name != null)
140
+ {
141
+ s.setAttribute('name', name);
142
+ }
143
+
144
+ s.setAttribute('content', content);
145
+
146
+ if (httpEquiv != null)
147
+ {
148
+ s.setAttribute('http-equiv', httpEquiv);
149
+ }
150
+
151
+ var t = document.getElementsByTagName('meta')[0];
152
+ t.parentNode.insertBefore(s, t);
153
+ }
154
+ catch (e)
155
+ {
156
+ // ignore
157
+ }
158
+ };
159
+
160
+ /**
161
+ * Synchronously adds scripts to the page.
162
+ */
163
+ function mxscript(src, onLoad, id, dataAppKey, noWrite, onError)
164
+ {
165
+ if ((urlParams['dev'] != '1' && typeof document.createElement('canvas').getContext === "function") ||
166
+ onLoad != null || noWrite)
167
+ {
168
+ var s = document.createElement('script');
169
+ s.setAttribute('type', 'text/javascript');
170
+ s.setAttribute('defer', 'true');
171
+ s.setAttribute('src', src);
172
+
173
+ if (id != null)
174
+ {
175
+ s.setAttribute('id', id);
176
+ }
177
+
178
+ if (dataAppKey != null)
179
+ {
180
+ s.setAttribute('data-app-key', dataAppKey);
181
+ }
182
+
183
+ if (onLoad != null)
184
+ {
185
+ var r = false;
186
+
187
+ s.onload = s.onreadystatechange = function()
188
+ {
189
+ if (!r && (!this.readyState || this.readyState == 'complete'))
190
+ {
191
+ r = true;
192
+ onLoad();
193
+ }
194
+ };
195
+ }
196
+
197
+ if (onError != null)
198
+ {
199
+ s.onerror = function(e)
200
+ {
201
+ onError('Failed to load ' + src, e);
202
+ };
203
+ }
204
+
205
+ var t = document.getElementsByTagName('script')[0];
206
+
207
+ if (t != null)
208
+ {
209
+ t.parentNode.insertBefore(s, t);
210
+ }
211
+ }
212
+ else
213
+ {
214
+ document.write('<script src="' + src + '"' + ((id != null) ? ' id="' + id +'" ' : '') +
215
+ ((dataAppKey != null) ? ' data-app-key="' + dataAppKey +'" ' : '') + '></scr' + 'ipt>');
216
+ }
217
+ };
218
+
219
+ /**
220
+ * Asynchronously adds scripts to the page.
221
+ */
222
+ function mxinclude(src)
223
+ {
224
+ var g = document.createElement('script');
225
+ g.type = 'text/javascript';
226
+ g.async = true;
227
+ g.src = src;
228
+
229
+ var s = document.getElementsByTagName('script')[0];
230
+ s.parentNode.insertBefore(g, s);
231
+ };
232
+
233
+ /**
234
+ * Adds meta tags with application name (depends on offline URL parameter)
235
+ */
236
+ (function()
237
+ {
238
+ var name = 'diagrams.net';
239
+ mxmeta('apple-mobile-web-app-title', name);
240
+ mxmeta('application-name', name);
241
+
242
+ if (mxIsElectron)
243
+ {
244
+ mxmeta(null, 'default-src \'self\'; script-src \'self\' \'sha256-6g514VrT/cZFZltSaKxIVNFF46+MFaTSDTPB8WfYK+c=\' ' +
245
+ (urlParams['dev'] != '1' ? '' : ' \'unsafe-eval\'') + '; ' +
246
+ 'connect-src \'self\' https://*.draw.io https://*.diagrams.net https://fonts.googleapis.com https://fonts.gstatic.com; ' +
247
+ 'img-src * data:; media-src *; font-src * data:; frame-src \'self\'; style-src \'self\' \'unsafe-inline\' ' +
248
+ 'https://fonts.googleapis.com; base-uri \'none\';child-src \'self\';object-src \'none\';', 'Content-Security-Policy');
249
+ }
250
+ })();
251
+
252
+ // Checks for local storage
253
+ var isLocalStorage = false;
254
+
255
+ try
256
+ {
257
+ isLocalStorage = urlParams['local'] != '1' && typeof(localStorage) != 'undefined';
258
+ }
259
+ catch (e)
260
+ {
261
+ // ignored
262
+ }
263
+
264
+ // Release channel: ?channel=stable pins this browser to the stable channel
265
+ // before any login (enterprise onboarding link), ?channel=beta clears the
266
+ // pin (the next daily login check of a listed domain switches it back).
267
+ // Stored here so the service worker registration in App.main sees it on
268
+ // this same load.
269
+ if (isLocalStorage && urlParams['channel'] != null)
270
+ {
271
+ try
272
+ {
273
+ if (urlParams['channel'] == 'stable')
274
+ {
275
+ localStorage.setItem('.drawio-channel', 'stable');
276
+ }
277
+ else if (urlParams['channel'] == 'beta')
278
+ {
279
+ localStorage.removeItem('.drawio-channel');
280
+ }
281
+
282
+ localStorage.removeItem('.drawio-channel-ts');
283
+ }
284
+ catch (e)
285
+ {
286
+ // ignored
287
+ }
288
+ }
289
+
290
+ var mxScriptsLoaded = false, mxWinLoaded = false;
291
+
292
+ function checkAllLoaded()
293
+ {
294
+ if (mxScriptsLoaded && mxWinLoaded)
295
+ {
296
+ App.main();
297
+ }
298
+ };
299
+
300
+ var t0 = new Date();
301
+
302
+ // Changes paths for local development environment
303
+ if (urlParams['dev'] == '1')
304
+ {
305
+ // Used to request grapheditor/mxgraph sources in dev mode
306
+ var mxDevUrl = '';
307
+
308
+ // Used to request draw.io sources in dev mode
309
+ var drawDevUrl = '';
310
+ var geBasePath = 'js/grapheditor';
311
+ var mxBasePath = 'mxgraph/src';
312
+
313
+ if (document.location.protocol == 'file:')
314
+ {
315
+ // Forces includes for dev environment in node.js
316
+ mxForceIncludes = true;
317
+ }
318
+
319
+ mxForceIncludes = false;
320
+
321
+ mxscript(drawDevUrl + 'js/PreConfig.js');
322
+ mxscript(drawDevUrl + 'js/diagramly/Init.js');
323
+ mxscript(geBasePath + '/Init.js');
324
+ mxscript(mxBasePath + '/mxClient.js');
325
+
326
+ // Adds all JS code that depends on mxClient. This indirection via Devel.js is
327
+ // required in some browsers to make sure mxClient.js (and the files that it
328
+ // loads asynchronously) are available when the code loaded in Devel.js runs.
329
+ mxscript(drawDevUrl + 'js/diagramly/Devel.js');
330
+
331
+ // Electron
332
+ if (mxIsElectron)
333
+ {
334
+ mxscript('js/desktop/DesktopLibrary.js');
335
+ mxscript('js/desktop/ElectronApp.js');
336
+
337
+ // ELK, Mermaid and PlantUML are loaded by Devel.js above. Do not
338
+ // load js/elk/drawio-elk.min.js again here: re-running its footer
339
+ // (var ElkLayout = ELK.ElkLayout) replaces the class after the
340
+ // ElkLayout.js editor statics have attached, breaking Arrange >
341
+ // Layout with "ElkLayout.runWithDialog is not a function".
342
+ }
343
+
344
+ mxscript(drawDevUrl + 'js/PostConfig.js');
345
+ }
346
+ // Skips the app while the page is redirected
347
+ else if (!mxM365Redirect)
348
+ {
349
+ (function()
350
+ {
351
+ var hostName = window.location.hostname;
352
+
353
+ // Supported domains are *.draw.io and the packaged version in Quip
354
+ var supportedDomain = (hostName.substring(hostName.length - 8, hostName.length) === '.draw.io') ||
355
+ (hostName.substring(hostName.length - 13, hostName.length) === '.diagrams.net');
356
+
357
+ function loadAppJS()
358
+ {
359
+ mxscript('js/app.min.js', function()
360
+ {
361
+ mxScriptsLoaded = true;
362
+ checkAllLoaded();
363
+
364
+ // Electron
365
+ if (mxIsElectron)
366
+ {
367
+ mxscript('js/diagramly/DesktopLibrary.js', function()
368
+ {
369
+ mxscript('js/diagramly/ElectronApp.js', function()
370
+ {
371
+ mxscript('js/extensions.min.js', function()
372
+ {
373
+ mxscript('js/stencils.min.js', function()
374
+ {
375
+ mxscript('js/shapes-14-6-5.min.js', function()
376
+ {
377
+ // ELK and Mermaid ship inside extensions.min.js
378
+ // above (elk bundle, then the ElkLayout editor
379
+ // statics, then mermaid). Loading
380
+ // js/elk/drawio-elk.min.js again would re-run its
381
+ // footer (var ElkLayout = ELK.ElkLayout) and swap
382
+ // in a bare class without the statics, breaking
383
+ // Arrange > Layout with "ElkLayout.runWithDialog
384
+ // is not a function" [jgraph/drawio-desktop#2471].
385
+ // Only PlantUML is not in extensions.min.js; it
386
+ // is preloaded here and EditorUi.loadPlantUml
387
+ // skips its own load once mxPlantUmlToDrawio is
388
+ // defined.
389
+ mxscript('js/plantuml/drawio-plantuml.min.js', function()
390
+ {
391
+ mxscript('js/PostConfig.js');
392
+ });
393
+ });
394
+ });
395
+ });
396
+ });
397
+ });
398
+ }
399
+ else if (!supportedDomain)
400
+ {
401
+ mxscript('js/PostConfig.js');
402
+ }
403
+ });
404
+ };
405
+
406
+ if (!supportedDomain || mxIsElectron)
407
+ {
408
+ mxscript('js/PreConfig.js', loadAppJS);
409
+ }
410
+ else
411
+ {
412
+ loadAppJS();
413
+ }
414
+ })();
415
+ }
416
+
417
+ // Adds basic error handling
418
+ window.onerror = function()
419
+ {
420
+ var status = document.getElementById('geStatus');
421
+
422
+ if (status != null)
423
+ {
424
+ status.innerHTML = 'Page could not be loaded. Please try refreshing.';
425
+ }
426
+ };
427
+
428
+