@itsthecsguy/linework 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +11 -0
- package/README.md +206 -2
- package/assets/drawio/LICENSE +201 -0
- package/assets/drawio/VERSION +1 -0
- package/assets/drawio/favicon.ico +0 -0
- package/assets/drawio/images/1x1.png +0 -0
- package/assets/drawio/images/2x2.png +0 -0
- package/assets/drawio/images/3x3.png +0 -0
- package/assets/drawio/images/ajax-loader.gif +0 -0
- package/assets/drawio/images/android-chrome-512x512.png +0 -0
- package/assets/drawio/images/apple-touch-icon.png +0 -0
- package/assets/drawio/images/aui-wait.gif +0 -0
- package/assets/drawio/images/broken.png +0 -0
- package/assets/drawio/images/browserconfig.xml +9 -0
- package/assets/drawio/images/close.png +0 -0
- package/assets/drawio/images/cloud-connector-atlas.png +0 -0
- package/assets/drawio/images/collapsed.gif +0 -0
- package/assets/drawio/images/delete.png +0 -0
- package/assets/drawio/images/document-google-drive-icon-80.png +0 -0
- package/assets/drawio/images/draw-search.png +0 -0
- package/assets/drawio/images/drawio.svg +19 -0
- package/assets/drawio/images/drawlogo-color.svg +50 -0
- package/assets/drawio/images/drawlogo-gray.svg +18 -0
- package/assets/drawio/images/drawlogo-text-bottom.svg +75 -0
- package/assets/drawio/images/drawlogo.svg +18 -0
- package/assets/drawio/images/drawlogo128.png +0 -0
- package/assets/drawio/images/drawlogo144.png +0 -0
- package/assets/drawio/images/drawlogo256.png +0 -0
- package/assets/drawio/images/drawlogo48-gray.png +0 -0
- package/assets/drawio/images/drawlogo48.png +0 -0
- package/assets/drawio/images/drawlogo80.png +0 -0
- package/assets/drawio/images/droptarget.png +0 -0
- package/assets/drawio/images/edit.gif +0 -0
- package/assets/drawio/images/edit16.png +0 -0
- package/assets/drawio/images/edit32.png +0 -0
- package/assets/drawio/images/edit80.png +0 -0
- package/assets/drawio/images/embed-icon.png +0 -0
- package/assets/drawio/images/expanded.gif +0 -0
- package/assets/drawio/images/facebook.png +0 -0
- package/assets/drawio/images/favicon-16x16.png +0 -0
- package/assets/drawio/images/favicon-32x32.png +0 -0
- package/assets/drawio/images/file.png +0 -0
- package/assets/drawio/images/folder.png +0 -0
- package/assets/drawio/images/gadget-screenshot.png +0 -0
- package/assets/drawio/images/gadget-thumb.png +0 -0
- package/assets/drawio/images/github-logo-white.svg +6 -0
- package/assets/drawio/images/github-logo.svg +17 -0
- package/assets/drawio/images/gitlab-logo-white.svg +1 -0
- package/assets/drawio/images/gitlab-logo.svg +1 -0
- package/assets/drawio/images/glyphicons_blogger.png +0 -0
- package/assets/drawio/images/glyphicons_facebook.png +0 -0
- package/assets/drawio/images/glyphicons_github.png +0 -0
- package/assets/drawio/images/glyphicons_google.png +0 -0
- package/assets/drawio/images/glyphicons_star.png +0 -0
- package/assets/drawio/images/glyphicons_twitter.png +0 -0
- package/assets/drawio/images/glyphicons_youtube.png +0 -0
- package/assets/drawio/images/google-drive-connector-atlas.png +0 -0
- package/assets/drawio/images/google-drive-connector-atlas.svg +121 -0
- package/assets/drawio/images/google-drive-logo-white.svg +9 -0
- package/assets/drawio/images/google-drive-logo.svg +17 -0
- package/assets/drawio/images/google-share.png +0 -0
- package/assets/drawio/images/icon-192-maskable.png +0 -0
- package/assets/drawio/images/icon-192.png +0 -0
- package/assets/drawio/images/icon-512-maskable.png +0 -0
- package/assets/drawio/images/icon-512.png +0 -0
- package/assets/drawio/images/icon-search.svg +21 -0
- package/assets/drawio/images/img-hi-res.png +0 -0
- package/assets/drawio/images/img-lo-res.png +0 -0
- package/assets/drawio/images/list.svg +16 -0
- package/assets/drawio/images/locked.png +0 -0
- package/assets/drawio/images/log.png +0 -0
- package/assets/drawio/images/logo-confluence.png +0 -0
- package/assets/drawio/images/logo-flat-small.png +0 -0
- package/assets/drawio/images/logo-flat.png +0 -0
- package/assets/drawio/images/logo-jira.png +0 -0
- package/assets/drawio/images/logo-small.gif +0 -0
- package/assets/drawio/images/logo-white.png +0 -0
- package/assets/drawio/images/logo.png +0 -0
- package/assets/drawio/images/manifest.json +25 -0
- package/assets/drawio/images/move.png +0 -0
- package/assets/drawio/images/notion-logo-white.svg +1 -0
- package/assets/drawio/images/notion-logo.svg +1 -0
- package/assets/drawio/images/onedrive-connector-atlas.png +0 -0
- package/assets/drawio/images/onedrive-connector-atlas.svg +248 -0
- package/assets/drawio/images/onedrive-logo-white.svg +29 -0
- package/assets/drawio/images/onedrive-logo.svg +29 -0
- package/assets/drawio/images/osa_database.png +0 -0
- package/assets/drawio/images/osa_drive-harddisk.png +0 -0
- package/assets/drawio/images/plant-uml-atlas.png +0 -0
- package/assets/drawio/images/samepage-icon-color.svg +37 -0
- package/assets/drawio/images/save.png +0 -0
- package/assets/drawio/images/sidebar-android.png +0 -0
- package/assets/drawio/images/sidebar-archimate.png +0 -0
- package/assets/drawio/images/sidebar-arrows.png +0 -0
- package/assets/drawio/images/sidebar-arrows2.png +0 -0
- package/assets/drawio/images/sidebar-basic.png +0 -0
- package/assets/drawio/images/sidebar-c4.png +0 -0
- package/assets/drawio/images/sidebar-cabinets.png +0 -0
- package/assets/drawio/images/sidebar-cumulus.png +0 -0
- package/assets/drawio/images/sidebar-dfd.png +0 -0
- package/assets/drawio/images/sidebar-dynamics365.png +0 -0
- package/assets/drawio/images/sidebar-eip.png +0 -0
- package/assets/drawio/images/sidebar-er.png +0 -0
- package/assets/drawio/images/sidebar-floorplans.png +0 -0
- package/assets/drawio/images/sidebar-flowchart.png +0 -0
- package/assets/drawio/images/sidebar-gcp3.png +0 -0
- package/assets/drawio/images/sidebar-general.png +0 -0
- package/assets/drawio/images/sidebar-kubernetes.png +0 -0
- package/assets/drawio/images/sidebar-leanmapping.png +0 -0
- package/assets/drawio/images/sidebar-mockups.png +0 -0
- package/assets/drawio/images/sidebar-network.png +0 -0
- package/assets/drawio/images/sidebar-network2.png +0 -0
- package/assets/drawio/images/sidebar-openstack.png +0 -0
- package/assets/drawio/images/sidebar-sitemap.png +0 -0
- package/assets/drawio/images/sidebar-threatmodeling.png +0 -0
- package/assets/drawio/images/sidebar-uml.png +0 -0
- package/assets/drawio/images/sketch-logo128.png +0 -0
- package/assets/drawio/images/spin.gif +0 -0
- package/assets/drawio/images/sprites.png +0 -0
- package/assets/drawio/images/stop-flat-icon-80.png +0 -0
- package/assets/drawio/images/submenu.gif +0 -0
- package/assets/drawio/images/touch-submenu.png +0 -0
- package/assets/drawio/images/transparent.gif +0 -0
- package/assets/drawio/images/trello-logo-white-orange.svg +6 -0
- package/assets/drawio/images/trello-logo-white.svg +6 -0
- package/assets/drawio/images/trello-logo.svg +1 -0
- package/assets/drawio/images/tweet.png +0 -0
- package/assets/drawio/images/update16.png +0 -0
- package/assets/drawio/images/update32.png +0 -0
- package/assets/drawio/images/update80.png +0 -0
- package/assets/drawio/images/youtube.png +0 -0
- package/assets/drawio/img/clipart/Battery_0_128x128.png +0 -0
- package/assets/drawio/img/clipart/Battery_100_128x128.png +0 -0
- package/assets/drawio/img/clipart/Battery_50_128x128.png +0 -0
- package/assets/drawio/img/clipart/Battery_75_128x128.png +0 -0
- package/assets/drawio/img/clipart/Battery_allstates_128x128.png +0 -0
- package/assets/drawio/img/clipart/Bluetooth_128x128.png +0 -0
- package/assets/drawio/img/clipart/Earth_globe_128x128.png +0 -0
- package/assets/drawio/img/clipart/Empty_Folder_128x128.png +0 -0
- package/assets/drawio/img/clipart/Full_Folder_128x128.png +0 -0
- package/assets/drawio/img/clipart/Gear_128x128.png +0 -0
- package/assets/drawio/img/clipart/Keys_128x128.png +0 -0
- package/assets/drawio/img/clipart/Lock_128x128.png +0 -0
- package/assets/drawio/img/clipart/Mouse_Pointer_128x128.png +0 -0
- package/assets/drawio/img/clipart/Plug_128x128.png +0 -0
- package/assets/drawio/img/clipart/Ships_Wheel_128x128.png +0 -0
- package/assets/drawio/img/clipart/Star_128x128.png +0 -0
- package/assets/drawio/img/clipart/Tire_128x128.png +0 -0
- package/assets/drawio/index.html +92 -0
- package/assets/drawio/js/PostConfig.js +7 -0
- package/assets/drawio/js/PreConfig.js +13 -0
- package/assets/drawio/js/app.min.js +18466 -0
- package/assets/drawio/js/bootstrap.js +428 -0
- package/assets/drawio/js/diagramly/LibavoidRouting.js +4459 -0
- package/assets/drawio/js/export-init.js +21 -0
- package/assets/drawio/js/extensions.min.js +10478 -0
- package/assets/drawio/js/libavoid-js/LICENSE +505 -0
- package/assets/drawio/js/libavoid-js/libavoid-routing.js +1633 -0
- package/assets/drawio/js/libavoid-js/libavoid.min.js +59 -0
- package/assets/drawio/js/main.js +22 -0
- package/assets/drawio/js/rough/rough.min.js +1 -0
- package/assets/drawio/js/shapes-14-6-5.min.js +3457 -0
- package/assets/drawio/js/stencils.min.js +447 -0
- package/assets/drawio/mxgraph/css/common.css +147 -0
- package/assets/drawio/resources/dia.txt +2901 -0
- package/assets/drawio/styles/dark-default.xml +109 -0
- package/assets/drawio/styles/default-old.xml +109 -0
- package/assets/drawio/styles/default.xml +203 -0
- package/assets/drawio/styles/fonts/ArchitectsDaughter-Regular.ttf +0 -0
- package/assets/drawio/styles/grapheditor.css +4501 -0
- package/assets/drawio/styles/high-contrast.css +128 -0
- package/assets/drawio/styles/thumb_horz.png +0 -0
- package/assets/drawio/styles/thumb_vertical.png +0 -0
- package/assets/fonts/ibm-plex-mono-LICENSE.txt +93 -0
- package/assets/fonts/ibm-plex-sans-LICENSE.txt +93 -0
- package/assets/fonts/kalam-400.woff2 +0 -0
- package/assets/fonts/kalam-700.woff2 +0 -0
- package/assets/fonts/kalam-LICENSE.txt +93 -0
- package/assets/fonts/plex-mono-400.woff2 +0 -0
- package/assets/fonts/plex-mono-600.woff2 +0 -0
- package/assets/fonts/plex-sans-400.woff2 +0 -0
- package/assets/fonts/plex-sans-600.woff2 +0 -0
- package/dist/api.js +218 -0
- package/dist/cli.js +275 -0
- package/dist/drawio/icons.js +121 -0
- package/dist/drawio/merge.js +309 -0
- package/dist/drawio/read.js +180 -0
- package/dist/drawio/show.js +501 -0
- package/dist/drawio/theme.js +425 -0
- package/dist/drawio/write.js +300 -0
- package/dist/edit/server.js +212 -0
- package/dist/git.js +46 -0
- package/dist/import/mermaid.js +569 -0
- package/dist/layout/layout.js +212 -0
- package/dist/layout/sequence.js +333 -0
- package/dist/layout/text.js +73 -0
- package/dist/lint/check.js +188 -0
- package/dist/lint/fixlabels.js +128 -0
- package/dist/mcp/server.js +239 -0
- package/dist/publish.js +121 -0
- package/dist/render/browser.js +236 -0
- package/dist/render/fonts.js +66 -0
- package/dist/report.js +36 -0
- package/dist/spec/model.js +53 -0
- package/dist/spec/parse.js +497 -0
- package/package.json +71 -4
- package/skills/linework/SKILL.md +233 -0
- package/skills/linework/examples/billing-er.yaml +31 -0
- package/skills/linework/examples/checkout.yaml +28 -0
- package/skills/linework/examples/pay-sequence.yaml +28 -0
- package/skills/linework/examples/payment-state.yaml +22 -0
- package/skills/linework/examples/refund-flow.yaml +29 -0
- package/skills/linework/examples/serverless-aws.yaml +23 -0
- package/skills/linework/references/google-docs.md +46 -0
- package/skills/linework/references/spec.md +312 -0
- 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
|
+
|