Devel.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /*
  2. * Copyright (c) 2006-2020, JGraph Ltd
  3. *
  4. * This provides an indirection to make sure the mxClient.js
  5. * loads before the dependent classes below are loaded. This
  6. * is used for development mode where the JS is in separate
  7. * files and the mxClient.js loads other files.
  8. */
  9. if (!mxIsElectron)
  10. {
  11. (function()
  12. {
  13. var hashes = 'default-src \'self\'; ' +
  14. 'script-src %script-src% \'self\' https://viewer.diagrams.net https://apis.google.com https://*.pusher.com ' +
  15. // Below are the SHAs of the two script blocks in index.html.
  16. // These must be updated here and in the CDN after changes.
  17. // Note: Desktop app uses only the newest hashes (replace it in electron.js [The one in index.html needs to be changed only if the second script block changes])
  18. //----------------------------------------------------------//
  19. //------------- Bootstrap script in index.html -------------//
  20. //----------------------------------------------------------//
  21. // Version 24.4.4
  22. '\'sha256-f6cHSTUnCvbQqwa6rKcbWIpgN9dLl0ROfpEKTQUQPr8=\' ' +
  23. // Version 24.3.2
  24. '\'sha256-qgjuMiWd1HsOihB9Ppd7j72lY0gT8BpBkiRIJFO3sRQ=\' ' +
  25. // Version 24.2.6
  26. '\'sha256-CuxCZzdV/xHExthsNvH0rD+sU8zQAaYT5XLu6LHfH78=\' ' +
  27. // Version 21.7.0
  28. '\'sha256-dLMFD7ijAw6AVaqecS7kbPcFFzkxQ+yeZSsKpOdLxps=\' ' +
  29. // Version 21.6.7
  30. '\'sha256-PDJOTCOfwIg8Ri7U2PH1pIpx+haCyKsJEbFxlW6hdSI=\' ' +
  31. // Version 21.5.0
  32. '\'sha256-6zAB96lsBZREqf0sT44BhH1T69sm7HrN34rpMOcWbNo=\' ' +
  33. // Version 21.4.1
  34. '\'sha256-3SkDBaLE+ouvAOfTmG2TGwmQ2EE9AT0F2YcHvZmEMeo=\' ' +
  35. // Version 20.8.14
  36. '\'sha256-vrEVJkYyBW9H4tt1lYZtK5fDowIeRwUgYZfFTT36YpE=\' ' +
  37. // Version 20.8.12
  38. '\'sha256-6g514VrT/cZFZltSaKxIVNFF46+MFaTSDTPB8WfYK+c=\' ' +
  39. //---------------------------------------------------------//
  40. //------------- App.main script in index.html -------------//
  41. //---------------------------------------------------------//
  42. // Version 13.8.2
  43. '\'sha256-vS/MxlVD7nbY7AnV+0t1Ap338uF7vrcs7y23KjERhKc=\' ' +
  44. //---------------------------------------------------------//
  45. '; ';
  46. var styleHashes = '\'sha256-pVoUz0B9cDvBP/6KP+5uOMqPh1c14hF0KFqSELqeyNQ=\' ' + // index.html
  47. '\'sha256-D9Gy46rimBnLRtBqv9U464kXQ5oT5JvkurboVMjtN0Q=\' ' + // MinimalCss/Light
  48. '\'sha256-C9BzsAi3ukZpBZzbdTpUNpxHfPR/+KJbeueKj1U6QGY=\' ' + // MinimalCss/Dark
  49. '\'sha256-7kY8ozVqKLIIBwZ24dhdmZkM26PsOlZmEi72RhmZKoM=\' ' + // mxTooltipHandler.js
  50. '\'sha256-kuk5TvxZ/Kwuobo4g6uasb1xRQwr1+nfa1A3YGePO7U=\' ' + // MathJax
  51. '\'sha256-ByOXYIXIkfNC3flUR/HoxR4Ak0pjOEF1q8XmtuIa6po=\' ' + // purify.min.js
  52. '\'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=\' ' + // spin.min.js
  53. '\'sha256-nzHi23DROym7G011m6y0DyDd9mvQL2hSJ0Gy3g2T/5Q=\' ' + // dropins.js
  54. '\'sha256-xjAW8oXqJlP0CWqxT9s80kgOtOjvENMmfnnfulL6p1A=\' ' + // gapi
  55. '\'unsafe-hashes\'; '; // Required for hashes for style attribute
  56. var directives = 'connect-src %connect-src% \'self\' https://*.draw.io https://*.diagrams.net ' +
  57. 'https://*.googleapis.com wss://app.diagrams.net wss://*.pusher.com https://*.pusher.com ' +
  58. 'https://api.github.com https://raw.githubusercontent.com https://gitlab.com ' +
  59. 'https://graph.microsoft.com https://my.microsoftpersonalcontent.com https://*.sharepoint.com https://*.1drv.com https://api.onedrive.com ' +
  60. 'https://dl.dropboxusercontent.com https://api.openai.com ' +
  61. 'https://*.google.com https://fonts.gstatic.com https://fonts.googleapis.com; ' +
  62. // font-src about: is required for MathJax HTML-CSS output with STIX
  63. 'img-src * data: blob:; media-src * data:; font-src * data: about:; ' +
  64. // www.draw.io required for browser data migration to app.diagrams.net and
  65. // viewer.diagrams.net required for iframe embed preview
  66. 'frame-src %frame-src% \'self\' https://viewer.diagrams.net https://www.draw.io https://*.google.com; ' +
  67. 'style-src %style-src% \'self\' https://fonts.googleapis.com ' +
  68. // Replaces unsafe-inline style-src with hashes with safe-style-src URL parameter
  69. ((urlParams['safe-style-src'] == '1') ? styleHashes : '\'unsafe-inline\'; ') +
  70. 'base-uri \'none\';' +
  71. 'child-src \'self\';' +
  72. 'object-src \'none\';';
  73. var csp = hashes + directives;
  74. var devCsp = csp.
  75. // Adds script tags and loads shapes with eval
  76. replace(/%script-src%/g, 'https://www.dropbox.com https://api.trello.com \'unsafe-eval\'').
  77. // Adds Trello and Dropbox backend storage
  78. replace(/%connect-src%/g, 'https://*.dropboxapi.com https://trello.com https://api.trello.com https://my.microsoftpersonalcontent.com').
  79. // Loads common.css from mxgraph
  80. replace(/%style-src%/g, '').
  81. replace(/%frame-src%/g, '').
  82. replace(/ /g, ' ');
  83. mxmeta(null, devCsp, 'Content-Security-Policy');
  84. if (urlParams['print-csp'] == '1')
  85. {
  86. console.log('Content-Security-Policy');
  87. var app_diagrams_net = csp.replace(/%script-src%/g, 'https://www.dropbox.com https://api.trello.com').
  88. replace(/%connect-src%/g, 'https://*.dropboxapi.com https://api.trello.com').
  89. replace(/%frame-src%/g, '').
  90. replace(/%style-src%/g, '').
  91. replace(/ /g, ' ') + ' frame-ancestors \'self\' https://teams.microsoft.com https://*.cloud.microsoft;';
  92. console.log('app.diagrams.net:', app_diagrams_net);
  93. var viewer_diagrams_net = hashes.replace(/%script-src%/g, 'https://www.dropbox.com https://api.trello.com https://app.diagrams.net') +
  94. 'connect-src *; ' +
  95. 'img-src * data: blob:; ' +
  96. 'media-src * data:; ' +
  97. 'font-src * data: about:; ' +
  98. 'style-src \'self\' https://fonts.googleapis.com \'unsafe-inline\'; ' +
  99. 'base-uri \'none\';' +
  100. 'object-src \'none\';' +
  101. 'worker-src https://viewer.diagrams.net/service-worker.js;'
  102. console.log('viewer.diagrams.net:', viewer_diagrams_net);
  103. var teams_diagrams_net = app_diagrams_net.replace(/ 'sha256-[^']+'/g, '') + 'worker-src https://app.diagrams.net/service-worker.js;';
  104. console.log('teams.diagrams.net:', teams_diagrams_net);
  105. var ac_draw_io = csp.replace(/%script-src%/g, 'https://aui-cdn.atlassian.com https://connect-cdn.atl-paas.net').
  106. replace(/%frame-src%/g, 'https://www.lucidchart.com https://app.lucidchart.com https://lucid.app blob:').
  107. replace(/%style-src%/g, 'https://aui-cdn.atlassian.com https://*.atlassian.net https://connect-cdn.atl-paas.net').
  108. replace(/%connect-src%/g, '').
  109. replace(/ /g, ' ') +
  110. 'worker-src https://ac.draw.io/service-worker.js;';
  111. console.log('ac.draw.io:', ac_draw_io);
  112. var aj_draw_io = csp.replace(/%script-src%/g, 'https://aui-cdn.atlassian.com https://connect-cdn.atl-paas.net').
  113. replace(/%frame-src%/g, 'blob:').
  114. replace(/%style-src%/g, 'https://aui-cdn.atlassian.com https://*.atlassian.net https://connect-cdn.atl-paas.net').
  115. replace(/%connect-src%/g, 'https://api.atlassian.com https://api.media.atlassian.com').
  116. replace(/ /g, ' ') +
  117. 'worker-src https://aj.draw.io/service-worker.js;';
  118. console.log('aj.draw.io:', aj_draw_io);
  119. console.log('import.diagrams.net:', 'default-src \'self\'; worker-src blob:; img-src \'self\' blob: data: https://www.lucidchart.com ' +
  120. 'https://app.lucidchart.com https://lucid.app; style-src \'self\' \'unsafe-inline\'; frame-src https://www.lucidchart.com https://app.lucidchart.com https://lucid.app;');
  121. console.log('Development:', devCsp);
  122. console.log('Remember to add index.html new hashes to Desktop app (electron.js). In desktop, only newest hashes are needed.');
  123. }
  124. })();
  125. }
  126. mxscript(drawDevUrl + 'js/cryptojs/aes.min.js');
  127. mxscript(drawDevUrl + 'js/spin/spin.min.js');
  128. mxscript(drawDevUrl + 'js/deflate/pako.min.js');
  129. mxscript(drawDevUrl + 'js/deflate/base64.js');
  130. mxscript(drawDevUrl + 'js/jscolor/jscolor.js');
  131. mxscript(drawDevUrl + 'js/sanitizer/purify.min.js');
  132. mxscript(drawDevUrl + 'js/rough/rough.min.js');
  133. mxscript(drawDevUrl + 'js/freehand/perfect-freehand.js');
  134. // Uses grapheditor from devhost
  135. mxscript(geBasePath +'/Editor.js');
  136. mxscript(geBasePath +'/EditorUi.js');
  137. mxscript(geBasePath +'/Sidebar.js');
  138. mxscript(geBasePath +'/Graph.js');
  139. mxscript(geBasePath +'/Format.js');
  140. mxscript(geBasePath +'/Shapes.js');
  141. mxscript(geBasePath +'/Actions.js');
  142. mxscript(geBasePath +'/Menus.js');
  143. mxscript(geBasePath +'/Toolbar.js');
  144. mxscript(geBasePath +'/Dialogs.js');
  145. // Loads main classes
  146. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar.js');
  147. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-ActiveDirectory.js');
  148. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Advanced.js');
  149. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-AlliedTelesis.js');
  150. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Android.js');
  151. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-ArchiMate.js');
  152. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-ArchiMate3.js');
  153. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Arrows2.js');
  154. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Atlassian.js');
  155. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-AWS.js');
  156. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-AWS3.js');
  157. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-AWS3D.js');
  158. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-AWS4.js');
  159. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-AWS4b.js');
  160. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Azure.js');
  161. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Azure2.js');
  162. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Basic.js');
  163. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Bootstrap.js');
  164. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-BPMN.js');
  165. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-C4.js');
  166. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Cabinet.js');
  167. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Cisco.js');
  168. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Cisco19.js');
  169. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-CiscoSafe.js');
  170. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Citrix.js');
  171. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Cumulus.js');
  172. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-DFD.js');
  173. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-EIP.js');
  174. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Electrical.js');
  175. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-ER.js');
  176. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Floorplan.js');
  177. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Flowchart.js');
  178. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-FluidPower.js');
  179. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-GCP.js');
  180. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-GCP2.js');
  181. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-GCPIcons.js');
  182. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Gmdl.js');
  183. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-IBM.js');
  184. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Infographic.js');
  185. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Ios.js');
  186. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Ios7.js');
  187. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Kubernetes.js');
  188. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-LeanMapping.js');
  189. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Mockup.js');
  190. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-MSCAE.js');
  191. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Network.js');
  192. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Office.js');
  193. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-PID.js');
  194. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Rack.js');
  195. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Salesforce.js');
  196. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-SAP.js');
  197. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Signs.js');
  198. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Sitemap.js');
  199. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Sysml.js');
  200. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-ThreatModeling.js');
  201. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-UML25.js');
  202. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Veeam.js');
  203. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Veeam2.js');
  204. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-VVD.js');
  205. mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-WebIcons.js');
  206. mxscript(drawDevUrl + 'js/diagramly/util/mxJsCanvas.js');
  207. mxscript(drawDevUrl + 'js/diagramly/util/mxAsyncCanvas.js');
  208. mxscript(drawDevUrl + 'js/diagramly/DrawioFile.js');
  209. mxscript(drawDevUrl + 'js/diagramly/LocalFile.js');
  210. mxscript(drawDevUrl + 'js/diagramly/LocalLibrary.js');
  211. mxscript(drawDevUrl + 'js/diagramly/StorageFile.js');
  212. mxscript(drawDevUrl + 'js/diagramly/StorageLibrary.js');
  213. mxscript(drawDevUrl + 'js/diagramly/RemoteFile.js');
  214. mxscript(drawDevUrl + 'js/diagramly/RemoteLibrary.js');
  215. mxscript(drawDevUrl + 'js/diagramly/EmbedFile.js');
  216. mxscript(drawDevUrl + 'js/diagramly/Dialogs.js');
  217. mxscript(drawDevUrl + 'js/diagramly/Editor.js');
  218. mxscript(drawDevUrl + 'js/diagramly/EditorUi.js');
  219. mxscript(drawDevUrl + 'js/diagramly/DiffSync.js');
  220. mxscript(drawDevUrl + 'js/diagramly/Settings.js');
  221. mxscript(drawDevUrl + 'js/diagramly/DrawioFilePolling.js');
  222. mxscript(drawDevUrl + 'js/diagramly/DrawioFileSync.js');
  223. //Comments
  224. mxscript(drawDevUrl + 'js/diagramly/DrawioComment.js');
  225. mxscript(drawDevUrl + 'js/diagramly/DriveComment.js');
  226. // Excluded in base.min.js
  227. mxscript(drawDevUrl + 'js/diagramly/DrawioClient.js');
  228. mxscript(drawDevUrl + 'js/diagramly/DrawioUser.js');
  229. mxscript(drawDevUrl + 'js/diagramly/UrlLibrary.js');
  230. mxscript(drawDevUrl + 'js/diagramly/DriveFile.js');
  231. mxscript(drawDevUrl + 'js/diagramly/DriveLibrary.js');
  232. mxscript(drawDevUrl + 'js/diagramly/DriveClient.js');
  233. mxscript(drawDevUrl + 'js/diagramly/DropboxFile.js');
  234. mxscript(drawDevUrl + 'js/diagramly/DropboxLibrary.js');
  235. mxscript(drawDevUrl + 'js/diagramly/DropboxClient.js');
  236. mxscript(drawDevUrl + 'js/diagramly/GitHubFile.js');
  237. mxscript(drawDevUrl + 'js/diagramly/GitHubLibrary.js');
  238. mxscript(drawDevUrl + 'js/diagramly/GitHubClient.js');
  239. mxscript(drawDevUrl + 'js/diagramly/OneDriveFile.js');
  240. mxscript(drawDevUrl + 'js/diagramly/OneDriveLibrary.js');
  241. mxscript(drawDevUrl + 'js/diagramly/OneDriveClient.js');
  242. mxscript(drawDevUrl + 'js/onedrive/mxODPicker.js');
  243. mxscript(drawDevUrl + 'js/diagramly/TrelloFile.js');
  244. mxscript(drawDevUrl + 'js/diagramly/TrelloLibrary.js');
  245. mxscript(drawDevUrl + 'js/diagramly/TrelloClient.js');
  246. mxscript(drawDevUrl + 'js/diagramly/GitLabFile.js');
  247. mxscript(drawDevUrl + 'js/diagramly/GitLabLibrary.js');
  248. mxscript(drawDevUrl + 'js/diagramly/GitLabClient.js');
  249. mxscript(drawDevUrl + 'js/diagramly/App.js');
  250. mxscript(drawDevUrl + 'js/diagramly/Menus.js');
  251. mxscript(drawDevUrl + 'js/diagramly/Pages.js');
  252. mxscript(drawDevUrl + 'js/diagramly/Trees.js');
  253. mxscript(drawDevUrl + 'js/diagramly/Minimal.js');
  254. mxscript(drawDevUrl + 'js/diagramly/DistanceGuides.js');
  255. mxscript(drawDevUrl + 'js/diagramly/mxRuler.js');
  256. mxscript(drawDevUrl + 'js/diagramly/mxFreehand.js');
  257. mxscript(drawDevUrl + 'js/diagramly/P2PCollab.js');
  258. mxscript(drawDevUrl + 'js/diagramly/DevTools.js');
  259. if (!window.DRAWIO_PUBLIC_BUILD)
  260. {
  261. mxscript(drawDevUrl + 'js/diagramly/Simple.js');
  262. mxscript(drawDevUrl + 'js/mermaid/mermaid2drawio.js');
  263. }
  264. // Vsdx/vssx support
  265. mxscript(drawDevUrl + 'js/diagramly/vsdx/VsdxExport.js');
  266. mxscript(drawDevUrl + 'js/diagramly/vsdx/mxVsdxCanvas2D.js');
  267. mxscript(drawDevUrl + 'js/diagramly/vsdx/bmpDecoder.js');
  268. mxscript(drawDevUrl + 'js/diagramly/vsdx/importer.js');
  269. mxscript(drawDevUrl + 'js/jszip/jszip.min.js');
  270. // GraphMl Import
  271. mxscript(drawDevUrl + 'js/diagramly/graphml/mxGraphMlCodec.js');
  272. // Org Chart Layout
  273. if (urlParams['orgChartDev'] == '1')
  274. {
  275. mxscript(drawDevUrl + 'js/orgchart/bridge.min.js');
  276. mxscript(drawDevUrl + 'js/orgchart/bridge.collections.min.js');
  277. mxscript(drawDevUrl + 'js/orgchart/OrgChart.Layout.min.js');
  278. mxscript(drawDevUrl + 'js/orgchart/mxOrgChartLayout.js');
  279. }
  280. // Miro Import
  281. mxscript(drawDevUrl + 'js/diagramly/miro/MiroImporter.js');