@kumologica/sdk 3.0.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 (540) hide show
  1. package/README.md +1 -0
  2. package/bin/kl.js +3 -0
  3. package/cli/cli.js +6 -0
  4. package/cli/commands/build-commands/aws.js +49 -0
  5. package/cli/commands/build-commands/azure.js +43 -0
  6. package/cli/commands/build-commands/kumohub.js +7 -0
  7. package/cli/commands/build.js +6 -0
  8. package/cli/commands/create.js +32 -0
  9. package/cli/commands/deploy-commands/kumohub.js +114 -0
  10. package/cli/commands/deploy.js +6 -0
  11. package/cli/commands/doc-commands/html.js +61 -0
  12. package/cli/commands/doc.js +6 -0
  13. package/cli/commands/export-commands/cloudformation.js +338 -0
  14. package/cli/commands/export-commands/serverless.js +164 -0
  15. package/cli/commands/export-commands/terraform-commands/aws.js +193 -0
  16. package/cli/commands/export-commands/terraform-commands/azure.js +148 -0
  17. package/cli/commands/export-commands/terraform.js +6 -0
  18. package/cli/commands/export-commands/utils/validator.js +152 -0
  19. package/cli/commands/export.js +6 -0
  20. package/cli/commands/import-commands/mulesoft.js +61 -0
  21. package/cli/commands/import.js +6 -0
  22. package/cli/commands/open.js +46 -0
  23. package/cli/commands/test-utils/TestSuiteController.js +359 -0
  24. package/cli/commands/test-utils/TestSuiteController.test.js +171 -0
  25. package/cli/commands/test-utils/fixtures/example3-flow.json +148 -0
  26. package/cli/commands/test-utils/fixtures/package.json +6 -0
  27. package/cli/commands/test-utils/fixtures/s3-event.js +43 -0
  28. package/cli/commands/test-utils/util/output.js +14 -0
  29. package/cli/commands/test-utils/util/updates/index.js +17 -0
  30. package/cli/commands/test-utils/util/updates/pkg.js +13 -0
  31. package/cli/commands/test-utils/util/updates/templates/default-settings.js +209 -0
  32. package/cli/commands/test.js +66 -0
  33. package/cli/commands/utils.js +14 -0
  34. package/package.json +158 -0
  35. package/src/app/lib/aws/aws-profile.js +43 -0
  36. package/src/app/lib/aws/ca-alexa-api.js +29 -0
  37. package/src/app/lib/aws/ca-apigw-api.js +216 -0
  38. package/src/app/lib/aws/ca-cloudwatch-api.js +78 -0
  39. package/src/app/lib/aws/ca-codecommit-api.js +63 -0
  40. package/src/app/lib/aws/ca-dynamodb-api.js +27 -0
  41. package/src/app/lib/aws/ca-elb-api.js +44 -0
  42. package/src/app/lib/aws/ca-events-api.js +27 -0
  43. package/src/app/lib/aws/ca-iot-api.js +105 -0
  44. package/src/app/lib/aws/ca-s3-api.js +115 -0
  45. package/src/app/lib/aws/ca-sns-api.js +38 -0
  46. package/src/app/lib/aws/ca-sqs-api.js +51 -0
  47. package/src/app/lib/aws/cf.js +439 -0
  48. package/src/app/lib/aws/index.js +970 -0
  49. package/src/app/lib/aws/kl-iam-api.js +27 -0
  50. package/src/app/lib/aws/kl-rekognition-api.js +66 -0
  51. package/src/app/lib/aws/kl-ssm-api.js +24 -0
  52. package/src/app/lib/azure/index.js +80 -0
  53. package/src/app/lib/dependencies.js +50 -0
  54. package/src/app/lib/kumohub/index.js +201 -0
  55. package/src/app/lib/runtime-loader/index.js +42 -0
  56. package/src/app/lib/serverless/index.js +318 -0
  57. package/src/app/lib/stores/aws-cloud-config-store.js +35 -0
  58. package/src/app/lib/stores/azure-config-store.js +24 -0
  59. package/src/app/lib/stores/kumohub-config-store.js +24 -0
  60. package/src/app/lib/stores/project-info-config-store.js +26 -0
  61. package/src/app/lib/stores/settings-cloud-store.js +117 -0
  62. package/src/app/lib/stores/settings-cloud-store.spec.js +26 -0
  63. package/src/app/lib/stores/settings-network-store.js +119 -0
  64. package/src/app/lib/stores/settings-network-store.spec.js +27 -0
  65. package/src/app/lib/stores/store.js +97 -0
  66. package/src/app/lib/stores/test-config-store.js +26 -0
  67. package/src/app/lib/stores/user-preference-store.js +44 -0
  68. package/src/app/lib/utils/editor.js +98 -0
  69. package/src/app/lib/utils/fix-path.js +15 -0
  70. package/src/app/main-process/favicon.ico +0 -0
  71. package/src/app/main-process/main-window.js +209 -0
  72. package/src/app/main-process/menu.js +219 -0
  73. package/src/app/main-process/modal-home.js +118 -0
  74. package/src/app/main-process/modal-newproject.js +119 -0
  75. package/src/app/main-process/modal-nodelibrary.js +90 -0
  76. package/src/app/main-process/modal-welcome.js +114 -0
  77. package/src/app/main-process/runtime-manager.js +141 -0
  78. package/src/app/main.js +590 -0
  79. package/src/app/preload.js +633 -0
  80. package/src/app/ui/editor-api/lib/admin/context.js +42 -0
  81. package/src/app/ui/editor-api/lib/admin/flow.js +55 -0
  82. package/src/app/ui/editor-api/lib/admin/flows.js +53 -0
  83. package/src/app/ui/editor-api/lib/admin/index.js +155 -0
  84. package/src/app/ui/editor-api/lib/admin/nodes.js +164 -0
  85. package/src/app/ui/editor-api/lib/auth/clients.js +17 -0
  86. package/src/app/ui/editor-api/lib/auth/index.js +267 -0
  87. package/src/app/ui/editor-api/lib/auth/permissions.js +51 -0
  88. package/src/app/ui/editor-api/lib/auth/strategies.js +144 -0
  89. package/src/app/ui/editor-api/lib/auth/tokens.js +138 -0
  90. package/src/app/ui/editor-api/lib/auth/users.js +122 -0
  91. package/src/app/ui/editor-api/lib/editor/comms.js +247 -0
  92. package/src/app/ui/editor-api/lib/editor/credentials.js +22 -0
  93. package/src/app/ui/editor-api/lib/editor/index.js +234 -0
  94. package/src/app/ui/editor-api/lib/editor/library.js +69 -0
  95. package/src/app/ui/editor-api/lib/editor/locales.js +37 -0
  96. package/src/app/ui/editor-api/lib/editor/projects.js +497 -0
  97. package/src/app/ui/editor-api/lib/editor/settings.js +118 -0
  98. package/src/app/ui/editor-api/lib/editor/sshkeys.js +87 -0
  99. package/src/app/ui/editor-api/lib/editor/theme.js +184 -0
  100. package/src/app/ui/editor-api/lib/editor/ui.js +149 -0
  101. package/src/app/ui/editor-api/lib/index.js +149 -0
  102. package/src/app/ui/editor-api/lib/runner/index.js +81 -0
  103. package/src/app/ui/editor-api/lib/util.js +51 -0
  104. package/src/app/ui/editor-client/README.md +10 -0
  105. package/src/app/ui/editor-client/constants.js +5 -0
  106. package/src/app/ui/editor-client/index.js +3 -0
  107. package/src/app/ui/editor-client/public/favicon.ico +0 -0
  108. package/src/app/ui/editor-client/public/red/images/bolt.png +0 -0
  109. package/src/app/ui/editor-client/public/red/images/debugger/continue-full.png +0 -0
  110. package/src/app/ui/editor-client/public/red/images/debugger/continue-outline.png +0 -0
  111. package/src/app/ui/editor-client/public/red/images/debugger/pause.png +0 -0
  112. package/src/app/ui/editor-client/public/red/images/debugger/restart.png +0 -0
  113. package/src/app/ui/editor-client/public/red/images/debugger/stepover.png +0 -0
  114. package/src/app/ui/editor-client/public/red/images/debugger/stop.png +0 -0
  115. package/src/app/ui/editor-client/public/red/images/deploy-flows-o.png +0 -0
  116. package/src/app/ui/editor-client/public/red/images/deploy-flows.png +0 -0
  117. package/src/app/ui/editor-client/public/red/images/deploy-full-o.png +0 -0
  118. package/src/app/ui/editor-client/public/red/images/deploy-full.png +0 -0
  119. package/src/app/ui/editor-client/public/red/images/deploy-nodes-o.png +0 -0
  120. package/src/app/ui/editor-client/public/red/images/deploy-nodes.png +0 -0
  121. package/src/app/ui/editor-client/public/red/images/deploy-reload.png +0 -0
  122. package/src/app/ui/editor-client/public/red/images/grip.png +0 -0
  123. package/src/app/ui/editor-client/public/red/images/icons/arrow-in.png +0 -0
  124. package/src/app/ui/editor-client/public/red/images/icons/bolt.png +0 -0
  125. package/src/app/ui/editor-client/public/red/images/icons/node-changed.png +0 -0
  126. package/src/app/ui/editor-client/public/red/images/icons/node-error.png +0 -0
  127. package/src/app/ui/editor-client/public/red/images/icons/node-play.png +0 -0
  128. package/src/app/ui/editor-client/public/red/images/kumologica-app.png +0 -0
  129. package/src/app/ui/editor-client/public/red/images/node-red-256.png +0 -0
  130. package/src/app/ui/editor-client/public/red/images/node-red-icon-black.svg +9 -0
  131. package/src/app/ui/editor-client/public/red/images/node-red-icon.svg +33 -0
  132. package/src/app/ui/editor-client/public/red/images/node-red.png +0 -0
  133. package/src/app/ui/editor-client/public/red/images/pw_maze_white.png +0 -0
  134. package/src/app/ui/editor-client/public/red/images/spin.svg +41 -0
  135. package/src/app/ui/editor-client/public/red/images/spinner.gif +0 -0
  136. package/src/app/ui/editor-client/public/red/images/subflow_tab.png +0 -0
  137. package/src/app/ui/editor-client/public/red/images/test-icon.png +0 -0
  138. package/src/app/ui/editor-client/public/red/images/typedInput/09.png +0 -0
  139. package/src/app/ui/editor-client/public/red/images/typedInput/az.png +0 -0
  140. package/src/app/ui/editor-client/public/red/images/typedInput/bin.png +0 -0
  141. package/src/app/ui/editor-client/public/red/images/typedInput/bool.png +0 -0
  142. package/src/app/ui/editor-client/public/red/images/typedInput/env.png +0 -0
  143. package/src/app/ui/editor-client/public/red/images/typedInput/expr.png +0 -0
  144. package/src/app/ui/editor-client/public/red/images/typedInput/json.png +0 -0
  145. package/src/app/ui/editor-client/public/red/images/typedInput/re.png +0 -0
  146. package/src/app/ui/editor-client/public/red/keymap.json +54 -0
  147. package/src/app/ui/editor-client/public/red/main-modals.js +14 -0
  148. package/src/app/ui/editor-client/public/red/main-modals.min.js +16 -0
  149. package/src/app/ui/editor-client/public/red/main.js +10 -0
  150. package/src/app/ui/editor-client/public/red/main.min.js +16 -0
  151. package/src/app/ui/editor-client/public/red/red.js +44903 -0
  152. package/src/app/ui/editor-client/public/red/red.min.js +16 -0
  153. package/src/app/ui/editor-client/public/red/style.min.css +24 -0
  154. package/src/app/ui/editor-client/public/vendor/ace/LICENSE +24 -0
  155. package/src/app/ui/editor-client/public/vendor/ace/ace.js +17 -0
  156. package/src/app/ui/editor-client/public/vendor/ace/ext-language_tools.js +8 -0
  157. package/src/app/ui/editor-client/public/vendor/ace/ext-searchbox.js +8 -0
  158. package/src/app/ui/editor-client/public/vendor/ace/mode-css.js +8 -0
  159. package/src/app/ui/editor-client/public/vendor/ace/mode-handlebars.js +8 -0
  160. package/src/app/ui/editor-client/public/vendor/ace/mode-html.js +8 -0
  161. package/src/app/ui/editor-client/public/vendor/ace/mode-javascript.js +8 -0
  162. package/src/app/ui/editor-client/public/vendor/ace/mode-json.js +8 -0
  163. package/src/app/ui/editor-client/public/vendor/ace/mode-jsonata.js +1 -0
  164. package/src/app/ui/editor-client/public/vendor/ace/mode-markdown.js +8 -0
  165. package/src/app/ui/editor-client/public/vendor/ace/mode-properties.js +8 -0
  166. package/src/app/ui/editor-client/public/vendor/ace/mode-python.js +8 -0
  167. package/src/app/ui/editor-client/public/vendor/ace/mode-sql.js +8 -0
  168. package/src/app/ui/editor-client/public/vendor/ace/mode-swift.js +8 -0
  169. package/src/app/ui/editor-client/public/vendor/ace/mode-text.js +8 -0
  170. package/src/app/ui/editor-client/public/vendor/ace/mode-xml.js +8 -0
  171. package/src/app/ui/editor-client/public/vendor/ace/mode-yaml.js +8 -0
  172. package/src/app/ui/editor-client/public/vendor/ace/snippets/css.js +8 -0
  173. package/src/app/ui/editor-client/public/vendor/ace/snippets/handlebars.js +8 -0
  174. package/src/app/ui/editor-client/public/vendor/ace/snippets/html.js +8 -0
  175. package/src/app/ui/editor-client/public/vendor/ace/snippets/javascript.js +8 -0
  176. package/src/app/ui/editor-client/public/vendor/ace/snippets/json.js +8 -0
  177. package/src/app/ui/editor-client/public/vendor/ace/snippets/jsonata.js +1 -0
  178. package/src/app/ui/editor-client/public/vendor/ace/snippets/markdown.js +8 -0
  179. package/src/app/ui/editor-client/public/vendor/ace/snippets/properties.js +8 -0
  180. package/src/app/ui/editor-client/public/vendor/ace/snippets/python.js +8 -0
  181. package/src/app/ui/editor-client/public/vendor/ace/snippets/sql.js +8 -0
  182. package/src/app/ui/editor-client/public/vendor/ace/snippets/swift.js +8 -0
  183. package/src/app/ui/editor-client/public/vendor/ace/snippets/text.js +8 -0
  184. package/src/app/ui/editor-client/public/vendor/ace/snippets/xml.js +8 -0
  185. package/src/app/ui/editor-client/public/vendor/ace/snippets/yaml.js +8 -0
  186. package/src/app/ui/editor-client/public/vendor/ace/theme-chrome.js +8 -0
  187. package/src/app/ui/editor-client/public/vendor/ace/theme-tomorrow.js +8 -0
  188. package/src/app/ui/editor-client/public/vendor/ace/worker-css.js +1 -0
  189. package/src/app/ui/editor-client/public/vendor/ace/worker-html.js +1 -0
  190. package/src/app/ui/editor-client/public/vendor/ace/worker-javascript.js +1 -0
  191. package/src/app/ui/editor-client/public/vendor/ace/worker-json.js +1 -0
  192. package/src/app/ui/editor-client/public/vendor/ace/worker-jsonata.js +2140 -0
  193. package/src/app/ui/editor-client/public/vendor/ace/worker-xml.js +1 -0
  194. package/src/app/ui/editor-client/public/vendor/beautifyjs/beautify.min.js +1 -0
  195. package/src/app/ui/editor-client/public/vendor/bootstrap/css/bootstrap.min.css +9 -0
  196. package/src/app/ui/editor-client/public/vendor/bootstrap/img/glyphicons-halflings-white.png +0 -0
  197. package/src/app/ui/editor-client/public/vendor/bootstrap/img/glyphicons-halflings.png +0 -0
  198. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/active-line.js +72 -0
  199. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/coffeescript-lint.js +47 -0
  200. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/javascript-hint.js +157 -0
  201. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/javascript-lint.js +63 -0
  202. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/jshint.js +29591 -0
  203. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/lint.css +73 -0
  204. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/lint.js +252 -0
  205. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/show-hint.css +36 -0
  206. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/show-hint.js +460 -0
  207. package/src/app/ui/editor-client/public/vendor/code-mirror/addon/sql-hint.js +304 -0
  208. package/src/app/ui/editor-client/public/vendor/code-mirror/lib/codemirror.css +350 -0
  209. package/src/app/ui/editor-client/public/vendor/code-mirror/lib/codemirror.js +9800 -0
  210. package/src/app/ui/editor-client/public/vendor/code-mirror/mode/javascript.js +927 -0
  211. package/src/app/ui/editor-client/public/vendor/code-mirror/mode/sql.js +494 -0
  212. package/src/app/ui/editor-client/public/vendor/code-mirror/theme/base16-dark.css +38 -0
  213. package/src/app/ui/editor-client/public/vendor/code-mirror/theme/monokai.css +42 -0
  214. package/src/app/ui/editor-client/public/vendor/code-mirror/theme/solarized.css +168 -0
  215. package/src/app/ui/editor-client/public/vendor/d3-context-menu/d3-context-menu.css +43 -0
  216. package/src/app/ui/editor-client/public/vendor/d3-context-menu/d3-context-menu.js +87 -0
  217. package/src/app/ui/editor-client/public/vendor/easy-json-schema/index.js +88 -0
  218. package/src/app/ui/editor-client/public/vendor/font-awesome/css/font-awesome.min.css +4 -0
  219. package/src/app/ui/editor-client/public/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  220. package/src/app/ui/editor-client/public/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  221. package/src/app/ui/editor-client/public/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  222. package/src/app/ui/editor-client/public/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  223. package/src/app/ui/editor-client/public/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  224. package/src/app/ui/editor-client/public/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  225. package/src/app/ui/editor-client/public/vendor/icofont/fonts/icofont.eot +0 -0
  226. package/src/app/ui/editor-client/public/vendor/icofont/fonts/icofont.svg +2105 -0
  227. package/src/app/ui/editor-client/public/vendor/icofont/fonts/icofont.ttf +0 -0
  228. package/src/app/ui/editor-client/public/vendor/icofont/fonts/icofont.woff +0 -0
  229. package/src/app/ui/editor-client/public/vendor/icofont/fonts/icofont.woff2 +0 -0
  230. package/src/app/ui/editor-client/public/vendor/icofont/icofont.min.css +7 -0
  231. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/animated-overlay.gif +0 -0
  232. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  233. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  234. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  235. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  236. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  237. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  238. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  239. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  240. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-icons_222222_256x240.png +0 -0
  241. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  242. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-icons_454545_256x240.png +0 -0
  243. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-icons_888888_256x240.png +0 -0
  244. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  245. package/src/app/ui/editor-client/public/vendor/jquery/css/smoothness/jquery-ui-1.10.3.custom.min.css +5 -0
  246. package/src/app/ui/editor-client/public/vendor/jsonata/jsonata.min.js +183 -0
  247. package/src/app/ui/editor-client/public/vendor/misc/toggleswitch.css +181 -0
  248. package/src/app/ui/editor-client/public/vendor/misc/toggleswitch.js +48 -0
  249. package/src/app/ui/editor-client/public/vendor/simplemde/simplemde.min.css +7 -0
  250. package/src/app/ui/editor-client/public/vendor/simplemde/simplemde.min.js +15 -0
  251. package/src/app/ui/editor-client/public/vendor/vendor.css +0 -0
  252. package/src/app/ui/editor-client/public/vendor/vendor.js +125 -0
  253. package/src/app/ui/editor-client/public/vendor/xterm/lib/xterm.js +2 -0
  254. package/src/app/ui/editor-client/src/ace/README.md +50 -0
  255. package/src/app/ui/editor-client/src/ace/mode/nrjavascript.js +35 -0
  256. package/src/app/ui/editor-client/src/ace/mode/nrjavascript_worker.js +189 -0
  257. package/src/app/ui/editor-client/src/favicon.ico +0 -0
  258. package/src/app/ui/editor-client/src/images/bolt.png +0 -0
  259. package/src/app/ui/editor-client/src/images/debugger/continue-full.png +0 -0
  260. package/src/app/ui/editor-client/src/images/debugger/continue-outline.png +0 -0
  261. package/src/app/ui/editor-client/src/images/debugger/pause.png +0 -0
  262. package/src/app/ui/editor-client/src/images/debugger/restart.png +0 -0
  263. package/src/app/ui/editor-client/src/images/debugger/stepover.png +0 -0
  264. package/src/app/ui/editor-client/src/images/debugger/stop.png +0 -0
  265. package/src/app/ui/editor-client/src/images/deploy-flows-o.png +0 -0
  266. package/src/app/ui/editor-client/src/images/deploy-flows.png +0 -0
  267. package/src/app/ui/editor-client/src/images/deploy-full-o.png +0 -0
  268. package/src/app/ui/editor-client/src/images/deploy-full.png +0 -0
  269. package/src/app/ui/editor-client/src/images/deploy-nodes-o.png +0 -0
  270. package/src/app/ui/editor-client/src/images/deploy-nodes.png +0 -0
  271. package/src/app/ui/editor-client/src/images/deploy-reload.png +0 -0
  272. package/src/app/ui/editor-client/src/images/grip.png +0 -0
  273. package/src/app/ui/editor-client/src/images/icons/arrow-in.png +0 -0
  274. package/src/app/ui/editor-client/src/images/icons/bolt.png +0 -0
  275. package/src/app/ui/editor-client/src/images/icons/node-changed.png +0 -0
  276. package/src/app/ui/editor-client/src/images/icons/node-error.png +0 -0
  277. package/src/app/ui/editor-client/src/images/icons/node-play.png +0 -0
  278. package/src/app/ui/editor-client/src/images/kumologica-app.png +0 -0
  279. package/src/app/ui/editor-client/src/images/node-red-256.png +0 -0
  280. package/src/app/ui/editor-client/src/images/node-red-icon-black.svg +9 -0
  281. package/src/app/ui/editor-client/src/images/node-red-icon.svg +33 -0
  282. package/src/app/ui/editor-client/src/images/node-red.png +0 -0
  283. package/src/app/ui/editor-client/src/images/pw_maze_white.png +0 -0
  284. package/src/app/ui/editor-client/src/images/spin.svg +41 -0
  285. package/src/app/ui/editor-client/src/images/spinner.gif +0 -0
  286. package/src/app/ui/editor-client/src/images/subflow_tab.png +0 -0
  287. package/src/app/ui/editor-client/src/images/test-icon.png +0 -0
  288. package/src/app/ui/editor-client/src/images/typedInput/09.png +0 -0
  289. package/src/app/ui/editor-client/src/images/typedInput/az.png +0 -0
  290. package/src/app/ui/editor-client/src/images/typedInput/bin.png +0 -0
  291. package/src/app/ui/editor-client/src/images/typedInput/bool.png +0 -0
  292. package/src/app/ui/editor-client/src/images/typedInput/env.png +0 -0
  293. package/src/app/ui/editor-client/src/images/typedInput/expr.png +0 -0
  294. package/src/app/ui/editor-client/src/images/typedInput/json.png +0 -0
  295. package/src/app/ui/editor-client/src/images/typedInput/re.png +0 -0
  296. package/src/app/ui/editor-client/src/js/comms.js +174 -0
  297. package/src/app/ui/editor-client/src/js/events.js +39 -0
  298. package/src/app/ui/editor-client/src/js/font-awesome.js +818 -0
  299. package/src/app/ui/editor-client/src/js/history.js +337 -0
  300. package/src/app/ui/editor-client/src/js/i18n.js +81 -0
  301. package/src/app/ui/editor-client/src/js/jquery-addons.js +21 -0
  302. package/src/app/ui/editor-client/src/js/keymap.json +54 -0
  303. package/src/app/ui/editor-client/src/js/main-modals.js +14 -0
  304. package/src/app/ui/editor-client/src/js/main.js +10 -0
  305. package/src/app/ui/editor-client/src/js/modals/modal-home.js +162 -0
  306. package/src/app/ui/editor-client/src/js/modals/modal-new-project.js +86 -0
  307. package/src/app/ui/editor-client/src/js/modals/modal-node-library.js +255 -0
  308. package/src/app/ui/editor-client/src/js/modals/modal-welcome.js +102 -0
  309. package/src/app/ui/editor-client/src/js/nodes.js +1736 -0
  310. package/src/app/ui/editor-client/src/js/red.js +704 -0
  311. package/src/app/ui/editor-client/src/js/settings.js +275 -0
  312. package/src/app/ui/editor-client/src/js/text/bidi.js +116 -0
  313. package/src/app/ui/editor-client/src/js/text/format.js +1316 -0
  314. package/src/app/ui/editor-client/src/js/ui/actions.js +39 -0
  315. package/src/app/ui/editor-client/src/js/ui/clipboard.js +510 -0
  316. package/src/app/ui/editor-client/src/js/ui/common/checkboxSet.js +117 -0
  317. package/src/app/ui/editor-client/src/js/ui/common/editableList.js +322 -0
  318. package/src/app/ui/editor-client/src/js/ui/common/menu.js +277 -0
  319. package/src/app/ui/editor-client/src/js/ui/common/panels.js +104 -0
  320. package/src/app/ui/editor-client/src/js/ui/common/popover.js +268 -0
  321. package/src/app/ui/editor-client/src/js/ui/common/searchBox.js +98 -0
  322. package/src/app/ui/editor-client/src/js/ui/common/stack.js +184 -0
  323. package/src/app/ui/editor-client/src/js/ui/common/tabs.js +730 -0
  324. package/src/app/ui/editor-client/src/js/ui/common/treeList.js +170 -0
  325. package/src/app/ui/editor-client/src/js/ui/common/typedInput.js +819 -0
  326. package/src/app/ui/editor-client/src/js/ui/common/typedInputLong.js +829 -0
  327. package/src/app/ui/editor-client/src/js/ui/deploy.js +422 -0
  328. package/src/app/ui/editor-client/src/js/ui/diff.js +2225 -0
  329. package/src/app/ui/editor-client/src/js/ui/editor.js +3020 -0
  330. package/src/app/ui/editor-client/src/js/ui/editors/buffer.js +195 -0
  331. package/src/app/ui/editor-client/src/js/ui/editors/expression.js +627 -0
  332. package/src/app/ui/editor-client/src/js/ui/editors/js.js +89 -0
  333. package/src/app/ui/editor-client/src/js/ui/editors/json.js +107 -0
  334. package/src/app/ui/editor-client/src/js/ui/editors/markdown.js +267 -0
  335. package/src/app/ui/editor-client/src/js/ui/editors/string.js +75 -0
  336. package/src/app/ui/editor-client/src/js/ui/event-log.js +107 -0
  337. package/src/app/ui/editor-client/src/js/ui/header.js +372 -0
  338. package/src/app/ui/editor-client/src/js/ui/keyboard.js +565 -0
  339. package/src/app/ui/editor-client/src/js/ui/library.js +570 -0
  340. package/src/app/ui/editor-client/src/js/ui/logviewer.js +116 -0
  341. package/src/app/ui/editor-client/src/js/ui/notifications.js +282 -0
  342. package/src/app/ui/editor-client/src/js/ui/palette-editor.js +1061 -0
  343. package/src/app/ui/editor-client/src/js/ui/palette.js +788 -0
  344. package/src/app/ui/editor-client/src/js/ui/project-info.js +232 -0
  345. package/src/app/ui/editor-client/src/js/ui/projects/projectSettings.js +1651 -0
  346. package/src/app/ui/editor-client/src/js/ui/projects/projectUserSettings.js +404 -0
  347. package/src/app/ui/editor-client/src/js/ui/projects/projects.js +2395 -0
  348. package/src/app/ui/editor-client/src/js/ui/projects/tab-versionControl.js +1383 -0
  349. package/src/app/ui/editor-client/src/js/ui/search.js +366 -0
  350. package/src/app/ui/editor-client/src/js/ui/sidebar.js +409 -0
  351. package/src/app/ui/editor-client/src/js/ui/state.js +14 -0
  352. package/src/app/ui/editor-client/src/js/ui/subflow.js +748 -0
  353. package/src/app/ui/editor-client/src/js/ui/tab-awsDeploy.js +1427 -0
  354. package/src/app/ui/editor-client/src/js/ui/tab-azure.js +852 -0
  355. package/src/app/ui/editor-client/src/js/ui/tab-config.js +452 -0
  356. package/src/app/ui/editor-client/src/js/ui/tab-context.js +406 -0
  357. package/src/app/ui/editor-client/src/js/ui/tab-info.js +661 -0
  358. package/src/app/ui/editor-client/src/js/ui/tab-kumohub.js +800 -0
  359. package/src/app/ui/editor-client/src/js/ui/tab-nodeInfo.js +60 -0
  360. package/src/app/ui/editor-client/src/js/ui/tab-test.js +915 -0
  361. package/src/app/ui/editor-client/src/js/ui/terminal.js +240 -0
  362. package/src/app/ui/editor-client/src/js/ui/touch/radialMenu.js +170 -0
  363. package/src/app/ui/editor-client/src/js/ui/tray.js +411 -0
  364. package/src/app/ui/editor-client/src/js/ui/typeSearch.js +411 -0
  365. package/src/app/ui/editor-client/src/js/ui/ui-settings.js +422 -0
  366. package/src/app/ui/editor-client/src/js/ui/update-panel.js +84 -0
  367. package/src/app/ui/editor-client/src/js/ui/userSettings.js +673 -0
  368. package/src/app/ui/editor-client/src/js/ui/utils.js +1287 -0
  369. package/src/app/ui/editor-client/src/js/ui/view-navigator.js +169 -0
  370. package/src/app/ui/editor-client/src/js/ui/view-tools.js +123 -0
  371. package/src/app/ui/editor-client/src/js/ui/view.js +5333 -0
  372. package/src/app/ui/editor-client/src/js/ui/workspaces.js +498 -0
  373. package/src/app/ui/editor-client/src/js/user.js +282 -0
  374. package/src/app/ui/editor-client/src/js/validators.js +54 -0
  375. package/src/app/ui/editor-client/src/kumologica-app.png +0 -0
  376. package/src/app/ui/editor-client/src/sass/ace.scss +29 -0
  377. package/src/app/ui/editor-client/src/sass/bootstrap.scss +21 -0
  378. package/src/app/ui/editor-client/src/sass/colors.scss +76 -0
  379. package/src/app/ui/editor-client/src/sass/debug.scss +383 -0
  380. package/src/app/ui/editor-client/src/sass/diff.scss +695 -0
  381. package/src/app/ui/editor-client/src/sass/dragdrop.scss +37 -0
  382. package/src/app/ui/editor-client/src/sass/dropdownMenu.scss +93 -0
  383. package/src/app/ui/editor-client/src/sass/editor.scss +683 -0
  384. package/src/app/ui/editor-client/src/sass/flow.scss +330 -0
  385. package/src/app/ui/editor-client/src/sass/forms.scss +1093 -0
  386. package/src/app/ui/editor-client/src/sass/header.scss +502 -0
  387. package/src/app/ui/editor-client/src/sass/jquery.scss +152 -0
  388. package/src/app/ui/editor-client/src/sass/keyboard.scss +136 -0
  389. package/src/app/ui/editor-client/src/sass/library.scss +54 -0
  390. package/src/app/ui/editor-client/src/sass/mixins.scss +283 -0
  391. package/src/app/ui/editor-client/src/sass/modals/modalHome.scss +138 -0
  392. package/src/app/ui/editor-client/src/sass/modals/modalNewProject.scss +96 -0
  393. package/src/app/ui/editor-client/src/sass/modals/modalNodeLibrary.scss +131 -0
  394. package/src/app/ui/editor-client/src/sass/modals/modalWelcome.scss +102 -0
  395. package/src/app/ui/editor-client/src/sass/notifications.scss +118 -0
  396. package/src/app/ui/editor-client/src/sass/palette-editor.scss +275 -0
  397. package/src/app/ui/editor-client/src/sass/palette.scss +279 -0
  398. package/src/app/ui/editor-client/src/sass/panels.scss +61 -0
  399. package/src/app/ui/editor-client/src/sass/popover.scss +166 -0
  400. package/src/app/ui/editor-client/src/sass/project-info.scss +74 -0
  401. package/src/app/ui/editor-client/src/sass/projects.scss +875 -0
  402. package/src/app/ui/editor-client/src/sass/search.scss +201 -0
  403. package/src/app/ui/editor-client/src/sass/sidebar.scss +201 -0
  404. package/src/app/ui/editor-client/src/sass/style.scss +170 -0
  405. package/src/app/ui/editor-client/src/sass/tab-azure.scss +68 -0
  406. package/src/app/ui/editor-client/src/sass/tab-cloud.scss +67 -0
  407. package/src/app/ui/editor-client/src/sass/tab-config.scss +100 -0
  408. package/src/app/ui/editor-client/src/sass/tab-context.scss +54 -0
  409. package/src/app/ui/editor-client/src/sass/tab-info.scss +307 -0
  410. package/src/app/ui/editor-client/src/sass/tab-kumohub.scss +68 -0
  411. package/src/app/ui/editor-client/src/sass/tab-test.scss +257 -0
  412. package/src/app/ui/editor-client/src/sass/tabs.scss +395 -0
  413. package/src/app/ui/editor-client/src/sass/terminal.scss +246 -0
  414. package/src/app/ui/editor-client/src/sass/ui/common/checkboxSet.scss +29 -0
  415. package/src/app/ui/editor-client/src/sass/ui/common/editableList.scss +81 -0
  416. package/src/app/ui/editor-client/src/sass/ui/common/nodeList.scss +65 -0
  417. package/src/app/ui/editor-client/src/sass/ui/common/searchBox.scss +77 -0
  418. package/src/app/ui/editor-client/src/sass/ui/common/stack.scss +26 -0
  419. package/src/app/ui/editor-client/src/sass/ui/common/treeList.scss +108 -0
  420. package/src/app/ui/editor-client/src/sass/ui/common/typedInput.scss +181 -0
  421. package/src/app/ui/editor-client/src/sass/ui/common/typedInputLong.scss +183 -0
  422. package/src/app/ui/editor-client/src/sass/ui-settings.scss +119 -0
  423. package/src/app/ui/editor-client/src/sass/update-panel.scss +18 -0
  424. package/src/app/ui/editor-client/src/sass/userSettings.scss +93 -0
  425. package/src/app/ui/editor-client/src/sass/widgetStyle.scss +23 -0
  426. package/src/app/ui/editor-client/src/sass/workspace.scss +123 -0
  427. package/src/app/ui/editor-client/src/sass/workspaceToolbar.scss +85 -0
  428. package/src/app/ui/editor-client/src/vendor/ace/LICENSE +24 -0
  429. package/src/app/ui/editor-client/src/vendor/ace/ace.js +17 -0
  430. package/src/app/ui/editor-client/src/vendor/ace/ext-language_tools.js +8 -0
  431. package/src/app/ui/editor-client/src/vendor/ace/ext-searchbox.js +8 -0
  432. package/src/app/ui/editor-client/src/vendor/ace/mode-css.js +8 -0
  433. package/src/app/ui/editor-client/src/vendor/ace/mode-handlebars.js +8 -0
  434. package/src/app/ui/editor-client/src/vendor/ace/mode-html.js +8 -0
  435. package/src/app/ui/editor-client/src/vendor/ace/mode-javascript.js +8 -0
  436. package/src/app/ui/editor-client/src/vendor/ace/mode-json.js +8 -0
  437. package/src/app/ui/editor-client/src/vendor/ace/mode-markdown.js +8 -0
  438. package/src/app/ui/editor-client/src/vendor/ace/mode-properties.js +8 -0
  439. package/src/app/ui/editor-client/src/vendor/ace/mode-python.js +8 -0
  440. package/src/app/ui/editor-client/src/vendor/ace/mode-sql.js +8 -0
  441. package/src/app/ui/editor-client/src/vendor/ace/mode-swift.js +8 -0
  442. package/src/app/ui/editor-client/src/vendor/ace/mode-text.js +8 -0
  443. package/src/app/ui/editor-client/src/vendor/ace/mode-xml.js +8 -0
  444. package/src/app/ui/editor-client/src/vendor/ace/mode-yaml.js +8 -0
  445. package/src/app/ui/editor-client/src/vendor/ace/snippets/css.js +8 -0
  446. package/src/app/ui/editor-client/src/vendor/ace/snippets/handlebars.js +8 -0
  447. package/src/app/ui/editor-client/src/vendor/ace/snippets/html.js +8 -0
  448. package/src/app/ui/editor-client/src/vendor/ace/snippets/javascript.js +8 -0
  449. package/src/app/ui/editor-client/src/vendor/ace/snippets/json.js +8 -0
  450. package/src/app/ui/editor-client/src/vendor/ace/snippets/markdown.js +8 -0
  451. package/src/app/ui/editor-client/src/vendor/ace/snippets/properties.js +8 -0
  452. package/src/app/ui/editor-client/src/vendor/ace/snippets/python.js +8 -0
  453. package/src/app/ui/editor-client/src/vendor/ace/snippets/sql.js +8 -0
  454. package/src/app/ui/editor-client/src/vendor/ace/snippets/swift.js +8 -0
  455. package/src/app/ui/editor-client/src/vendor/ace/snippets/text.js +8 -0
  456. package/src/app/ui/editor-client/src/vendor/ace/snippets/xml.js +8 -0
  457. package/src/app/ui/editor-client/src/vendor/ace/snippets/yaml.js +8 -0
  458. package/src/app/ui/editor-client/src/vendor/ace/theme-chrome.js +8 -0
  459. package/src/app/ui/editor-client/src/vendor/ace/theme-tomorrow.js +8 -0
  460. package/src/app/ui/editor-client/src/vendor/ace/worker-css.js +1 -0
  461. package/src/app/ui/editor-client/src/vendor/ace/worker-html.js +1 -0
  462. package/src/app/ui/editor-client/src/vendor/ace/worker-javascript.js +1 -0
  463. package/src/app/ui/editor-client/src/vendor/ace/worker-json.js +1 -0
  464. package/src/app/ui/editor-client/src/vendor/ace/worker-xml.js +1 -0
  465. package/src/app/ui/editor-client/src/vendor/beautifyjs/beautify.min.js +1 -0
  466. package/src/app/ui/editor-client/src/vendor/bootstrap/css/bootstrap.css +5406 -0
  467. package/src/app/ui/editor-client/src/vendor/bootstrap/css/bootstrap.min.css +9 -0
  468. package/src/app/ui/editor-client/src/vendor/bootstrap/img/glyphicons-halflings-white.png +0 -0
  469. package/src/app/ui/editor-client/src/vendor/bootstrap/img/glyphicons-halflings.png +0 -0
  470. package/src/app/ui/editor-client/src/vendor/bootstrap/js/bootstrap.min.js +6 -0
  471. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/active-line.js +72 -0
  472. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/coffeescript-lint.js +47 -0
  473. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/javascript-hint.js +157 -0
  474. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/javascript-lint.js +63 -0
  475. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/jshint.js +29591 -0
  476. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/lint.css +73 -0
  477. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/lint.js +252 -0
  478. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/show-hint.css +36 -0
  479. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/show-hint.js +460 -0
  480. package/src/app/ui/editor-client/src/vendor/code-mirror/addon/sql-hint.js +304 -0
  481. package/src/app/ui/editor-client/src/vendor/code-mirror/lib/codemirror.css +350 -0
  482. package/src/app/ui/editor-client/src/vendor/code-mirror/lib/codemirror.js +9800 -0
  483. package/src/app/ui/editor-client/src/vendor/code-mirror/mode/javascript.js +927 -0
  484. package/src/app/ui/editor-client/src/vendor/code-mirror/mode/sql.js +494 -0
  485. package/src/app/ui/editor-client/src/vendor/code-mirror/theme/base16-dark.css +38 -0
  486. package/src/app/ui/editor-client/src/vendor/code-mirror/theme/monokai.css +42 -0
  487. package/src/app/ui/editor-client/src/vendor/code-mirror/theme/solarized.css +168 -0
  488. package/src/app/ui/editor-client/src/vendor/d3/d3.v3.min.js +4 -0
  489. package/src/app/ui/editor-client/src/vendor/d3/d3.v4.min.js +2 -0
  490. package/src/app/ui/editor-client/src/vendor/d3-context-menu/d3-context-menu.css +43 -0
  491. package/src/app/ui/editor-client/src/vendor/d3-context-menu/d3-context-menu.js +87 -0
  492. package/src/app/ui/editor-client/src/vendor/easy-json-schema/index.js +88 -0
  493. package/src/app/ui/editor-client/src/vendor/font-awesome/css/font-awesome.min.css +4 -0
  494. package/src/app/ui/editor-client/src/vendor/font-awesome/fonts/FontAwesome.otf +0 -0
  495. package/src/app/ui/editor-client/src/vendor/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  496. package/src/app/ui/editor-client/src/vendor/font-awesome/fonts/fontawesome-webfont.svg +2671 -0
  497. package/src/app/ui/editor-client/src/vendor/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  498. package/src/app/ui/editor-client/src/vendor/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  499. package/src/app/ui/editor-client/src/vendor/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  500. package/src/app/ui/editor-client/src/vendor/i18next/i18next.min.js +5 -0
  501. package/src/app/ui/editor-client/src/vendor/icofont/fonts/icofont.eot +0 -0
  502. package/src/app/ui/editor-client/src/vendor/icofont/fonts/icofont.svg +2105 -0
  503. package/src/app/ui/editor-client/src/vendor/icofont/fonts/icofont.ttf +0 -0
  504. package/src/app/ui/editor-client/src/vendor/icofont/fonts/icofont.woff +0 -0
  505. package/src/app/ui/editor-client/src/vendor/icofont/fonts/icofont.woff2 +0 -0
  506. package/src/app/ui/editor-client/src/vendor/icofont/icofont.min.css +7 -0
  507. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/animated-overlay.gif +0 -0
  508. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  509. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  510. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  511. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  512. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  513. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  514. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  515. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  516. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-icons_222222_256x240.png +0 -0
  517. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  518. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-icons_454545_256x240.png +0 -0
  519. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-icons_888888_256x240.png +0 -0
  520. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  521. package/src/app/ui/editor-client/src/vendor/jquery/css/smoothness/jquery-ui-1.10.3.custom.min.css +5 -0
  522. package/src/app/ui/editor-client/src/vendor/jquery/js/jquery-1.11.3.min.js +5 -0
  523. package/src/app/ui/editor-client/src/vendor/jquery/js/jquery-ui-1.10.3.custom.min.js +7 -0
  524. package/src/app/ui/editor-client/src/vendor/jquery/js/jquery.ui.touch-punch.min.js +11 -0
  525. package/src/app/ui/editor-client/src/vendor/jsonata/formatter.js +183 -0
  526. package/src/app/ui/editor-client/src/vendor/jsonata/mode-jsonata.js +134 -0
  527. package/src/app/ui/editor-client/src/vendor/jsonata/snippets-jsonata.js +11 -0
  528. package/src/app/ui/editor-client/src/vendor/jsonata/worker-jsonata.js +2140 -0
  529. package/src/app/ui/editor-client/src/vendor/marked/marked.min.js +6 -0
  530. package/src/app/ui/editor-client/src/vendor/misc/toggleswitch.css +181 -0
  531. package/src/app/ui/editor-client/src/vendor/misc/toggleswitch.js +48 -0
  532. package/src/app/ui/editor-client/templates/index.mst +314 -0
  533. package/src/app/ui/editor-client/templates/modals/modalHome.mst +107 -0
  534. package/src/app/ui/editor-client/templates/modals/modalNewProject.mst +104 -0
  535. package/src/app/ui/editor-client/templates/modals/modalNodeLibrary.mst +72 -0
  536. package/src/app/ui/editor-client/templates/modals/modalWelcome.mst +111 -0
  537. package/src/assets/eula.txt +170 -0
  538. package/src/assets/icon.icns +0 -0
  539. package/src/assets/kumologica-app.png +0 -0
  540. package/src/assets/license_en.txt +170 -0
@@ -0,0 +1,2225 @@
1
+ // RED.diff = (function() {
2
+
3
+ // var currentDiff = {};
4
+ // var diffVisible = false;
5
+ // var diffList;
6
+
7
+ // function init() {
8
+
9
+ // // RED.actions.add("core:show-current-diff",showLocalDiff);
10
+ // RED.actions.add("core:show-remote-diff",showRemoteDiff);
11
+ // // RED.keyboard.add("*","ctrl-shift-l","core:show-current-diff");
12
+ // // RED.keyboard.add("*","ctrl-shift-r","core:show-remote-diff");
13
+
14
+
15
+ // // RED.actions.add("core:show-test-flow-diff-1",function(){showTestFlowDiff(1)});
16
+ // // RED.keyboard.add("*","ctrl-shift-f 1","core:show-test-flow-diff-1");
17
+ // //
18
+ // // RED.actions.add("core:show-test-flow-diff-2",function(){showTestFlowDiff(2)});
19
+ // // RED.keyboard.add("*","ctrl-shift-f 2","core:show-test-flow-diff-2");
20
+ // // RED.actions.add("core:show-test-flow-diff-3",function(){showTestFlowDiff(3)});
21
+ // // RED.keyboard.add("*","ctrl-shift-f 3","core:show-test-flow-diff-3");
22
+
23
+ // }
24
+ // function createDiffTable(container,CurrentDiff) {
25
+ // var diffList = $('<ol class="node-dialog-view-diff-diff"></ol>').appendTo(container);
26
+ // diffList.editableList({
27
+ // addButton: false,
28
+ // height: "auto",
29
+ // scrollOnAdd: false,
30
+ // addItem: function(container,i,object) {
31
+ // var localDiff = object.diff;
32
+ // var remoteDiff = object.remoteDiff;
33
+ // var tab = object.tab.n;
34
+ // var def = object.def;
35
+ // var conflicts = CurrentDiff.conflicts;
36
+
37
+ // var tabDiv = $('<div>',{class:"node-diff-tab"}).appendTo(container);
38
+ // tabDiv.addClass('collapsed');
39
+ // var titleRow = $('<div>',{class:"node-diff-tab-title"}).appendTo(tabDiv);
40
+ // var nodesDiv = $('<div>').appendTo(tabDiv);
41
+ // var originalCell = $('<div>',{class:"node-diff-node-entry-cell"}).appendTo(titleRow);
42
+ // var localCell = $('<div>',{class:"node-diff-node-entry-cell node-diff-node-local"}).appendTo(titleRow);
43
+ // var remoteCell;
44
+ // var selectState;
45
+
46
+ // if (remoteDiff) {
47
+ // remoteCell = $('<div>',{class:"node-diff-node-entry-cell node-diff-node-remote"}).appendTo(titleRow);
48
+ // }
49
+ // $('<span class="node-diff-chevron"><i class="fa fa-angle-down"></i></span>').appendTo(originalCell);
50
+ // createNodeIcon(tab,def).appendTo(originalCell);
51
+ // var tabForLabel = (object.newTab || object.tab).n;
52
+ // var titleSpan = $('<span>',{class:"node-diff-tab-title-meta"}).appendTo(originalCell);
53
+ // if (tabForLabel.type === 'tab') {
54
+ // titleSpan.text(tabForLabel.label||tabForLabel.id);
55
+ // } else if (tab.type === 'subflow') {
56
+ // titleSpan.text((tabForLabel.name||tabForLabel.id));
57
+ // } else {
58
+ // titleSpan.text(RED._("diff.globalNodes"));
59
+ // }
60
+ // var flowStats = {
61
+ // local: {
62
+ // addedCount:0,
63
+ // deletedCount:0,
64
+ // changedCount:0,
65
+ // unchangedCount: 0
66
+ // },
67
+ // remote: {
68
+ // addedCount:0,
69
+ // deletedCount:0,
70
+ // changedCount:0,
71
+ // unchangedCount: 0
72
+ // },
73
+ // conflicts: 0
74
+ // }
75
+ // if (object.newTab || object.remoteTab) {
76
+ // var localTabNode = {
77
+ // node: localDiff.newConfig.all[tab.id],
78
+ // all: localDiff.newConfig.all,
79
+ // diff: localDiff
80
+ // }
81
+ // var remoteTabNode;
82
+ // if (remoteDiff) {
83
+ // remoteTabNode = {
84
+ // node:remoteDiff.newConfig.all[tab.id]||null,
85
+ // all: remoteDiff.newConfig.all,
86
+ // diff: remoteDiff
87
+ // }
88
+ // }
89
+ // if (tab.type !== undefined) {
90
+ // var div = $("<div>",{class:"node-diff-node-entry node-diff-node-props collapsed"}).appendTo(nodesDiv);
91
+ // var row = $("<div>",{class:"node-diff-node-entry-header"}).appendTo(div);
92
+ // var originalNodeDiv = $("<div>",{class:"node-diff-node-entry-cell"}).appendTo(row);
93
+ // var localNodeDiv = $("<div>",{class:"node-diff-node-entry-cell node-diff-node-local"}).appendTo(row);
94
+ // var localChanged = false;
95
+ // var remoteChanged = false;
96
+
97
+ // if (!localDiff.newConfig.all[tab.id]) {
98
+ // localNodeDiv.addClass("node-diff-empty");
99
+ // } else if (localDiff.added[tab.id]) {
100
+ // localNodeDiv.addClass("node-diff-node-added");
101
+ // localChanged = true;
102
+ // $('<span class="node-diff-status"><i class="fa fa-plus-square"></i> <span data-i18n="diff.type.added"></span></span>').appendTo(localNodeDiv);
103
+ // } else if (localDiff.changed[tab.id]) {
104
+ // localNodeDiv.addClass("node-diff-node-changed");
105
+ // localChanged = true;
106
+ // $('<span class="node-diff-status"><i class="fa fa-square"></i> <span data-i18n="diff.type.changed"></span></span>').appendTo(localNodeDiv);
107
+ // } else {
108
+ // localNodeDiv.addClass("node-diff-node-unchanged");
109
+ // $('<span class="node-diff-status"><i class="fa fa-square-o"></i> <span data-i18n="diff.type.unchanged"></span></span>').appendTo(localNodeDiv);
110
+ // }
111
+
112
+ // var remoteNodeDiv;
113
+ // if (remoteDiff) {
114
+ // remoteNodeDiv = $("<div>",{class:"node-diff-node-entry-cell node-diff-node-remote"}).appendTo(row);
115
+ // if (!remoteDiff.newConfig.all[tab.id]) {
116
+ // remoteNodeDiv.addClass("node-diff-empty");
117
+ // if (remoteDiff.deleted[tab.id]) {
118
+ // remoteChanged = true;
119
+ // }
120
+ // } else if (remoteDiff.added[tab.id]) {
121
+ // remoteNodeDiv.addClass("node-diff-node-added");
122
+ // remoteChanged = true;
123
+ // $('<span class="node-diff-status"><i class="fa fa-plus-square"></i> <span data-i18n="diff.type.added"></span></span>').appendTo(remoteNodeDiv);
124
+ // } else if (remoteDiff.changed[tab.id]) {
125
+ // remoteNodeDiv.addClass("node-diff-node-changed");
126
+ // remoteChanged = true;
127
+ // $('<span class="node-diff-status"><i class="fa fa-square"></i> <span data-i18n="diff.type.changed"></span></span>').appendTo(remoteNodeDiv);
128
+ // } else {
129
+ // remoteNodeDiv.addClass("node-diff-node-unchanged");
130
+ // $('<span class="node-diff-status"><i class="fa fa-square-o"></i> <span data-i18n="diff.type.unchanged"></span></span>').appendTo(remoteNodeDiv);
131
+ // }
132
+ // }
133
+ // $('<span class="node-diff-chevron"><i class="fa fa-angle-down"></i></span>').appendTo(originalNodeDiv);
134
+ // $('<span>').text(RED._("diff.flowProperties")).appendTo(originalNodeDiv);
135
+
136
+ // row.click(function(evt) {
137
+ // evt.preventDefault();
138
+ // $(this).parent().toggleClass('collapsed');
139
+ // });
140
+
141
+ // createNodePropertiesTable(def,tab,localTabNode,remoteTabNode,conflicts).appendTo(div);
142
+ // selectState = "";
143
+ // if (conflicts[tab.id]) {
144
+ // flowStats.conflicts++;
145
+
146
+ // if (!localNodeDiv.hasClass("node-diff-empty")) {
147
+ // $('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i></span></span>').prependTo(localNodeDiv);
148
+ // }
149
+ // if (!remoteNodeDiv.hasClass("node-diff-empty")) {
150
+ // $('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i></span></span>').prependTo(remoteNodeDiv);
151
+ // }
152
+ // div.addClass("node-diff-node-entry-conflict");
153
+ // } else {
154
+ // selectState = CurrentDiff.resolutions[tab.id];
155
+ // }
156
+ // // Tab properties row
157
+ // createNodeConflictRadioBoxes(tab,div,localNodeDiv,remoteNodeDiv,true,!conflicts[tab.id],selectState,CurrentDiff);
158
+ // }
159
+ // }
160
+ // // var stats = $('<span>',{class:"node-diff-tab-stats"}).appendTo(titleRow);
161
+ // var localNodeCount = 0;
162
+ // var remoteNodeCount = 0;
163
+ // var seen = {};
164
+ // object.tab.nodes.forEach(function(node) {
165
+ // seen[node.id] = true;
166
+ // createNodeDiffRow(node,flowStats,CurrentDiff).appendTo(nodesDiv)
167
+ // });
168
+ // if (object.newTab) {
169
+ // localNodeCount = object.newTab.nodes.length;
170
+ // object.newTab.nodes.forEach(function(node) {
171
+ // if (!seen[node.id]) {
172
+ // seen[node.id] = true;
173
+ // createNodeDiffRow(node,flowStats,CurrentDiff).appendTo(nodesDiv)
174
+ // }
175
+ // });
176
+ // }
177
+ // if (object.remoteTab) {
178
+ // remoteNodeCount = object.remoteTab.nodes.length;
179
+ // object.remoteTab.nodes.forEach(function(node) {
180
+ // if (!seen[node.id]) {
181
+ // createNodeDiffRow(node,flowStats,CurrentDiff).appendTo(nodesDiv)
182
+ // }
183
+ // });
184
+ // }
185
+ // titleRow.click(function(evt) {
186
+ // // if (titleRow.parent().find(".node-diff-node-entry:not(.hide)").length > 0) {
187
+ // titleRow.parent().toggleClass('collapsed');
188
+ // if ($(this).parent().hasClass('collapsed')) {
189
+ // $(this).parent().find('.node-diff-node-entry').addClass('collapsed');
190
+ // $(this).parent().find('.debug-message-element').addClass('collapsed');
191
+ // }
192
+ // // }
193
+ // })
194
+
195
+ // if (localDiff.deleted[tab.id]) {
196
+ // $('<span class="node-diff-node-deleted"><span class="node-diff-status"><i class="fa fa-minus-square"></i> <span data-i18n="diff.type.flowDeleted"></span></span></span>').appendTo(localCell);
197
+ // } else if (object.newTab) {
198
+ // if (localDiff.added[tab.id]) {
199
+ // $('<span class="node-diff-node-added"><span class="node-diff-status"><i class="fa fa-plus-square"></i> <span data-i18n="diff.type.flowAdded"></span></span></span>').appendTo(localCell);
200
+ // } else {
201
+ // if (tab.id) {
202
+ // if (localDiff.changed[tab.id]) {
203
+ // flowStats.local.changedCount++;
204
+ // } else {
205
+ // flowStats.local.unchangedCount++;
206
+ // }
207
+ // }
208
+ // var localStats = $('<span>',{class:"node-diff-tab-stats"}).appendTo(localCell);
209
+ // $('<span class="node-diff-status"></span>').text(RED._('diff.nodeCount',{count:localNodeCount})).appendTo(localStats);
210
+
211
+ // if (flowStats.conflicts + flowStats.local.addedCount + flowStats.local.changedCount + flowStats.local.deletedCount > 0) {
212
+ // $('<span class="node-diff-status"> [ </span>').appendTo(localStats);
213
+ // if (flowStats.conflicts > 0) {
214
+ // $('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i> '+flowStats.conflicts+'</span></span>').appendTo(localStats);
215
+ // }
216
+ // if (flowStats.local.addedCount > 0) {
217
+ // $('<span class="node-diff-node-added"><span class="node-diff-status"><i class="fa fa-plus-square"></i> '+flowStats.local.addedCount+'</span></span>').appendTo(localStats);
218
+ // }
219
+ // if (flowStats.local.changedCount > 0) {
220
+ // $('<span class="node-diff-node-changed"><span class="node-diff-status"><i class="fa fa-square"></i> '+flowStats.local.changedCount+'</span></span>').appendTo(localStats);
221
+ // }
222
+ // if (flowStats.local.deletedCount > 0) {
223
+ // $('<span class="node-diff-node-deleted"><span class="node-diff-status"><i class="fa fa-minus-square"></i> '+flowStats.local.deletedCount+'</span></span>').appendTo(localStats);
224
+ // }
225
+ // $('<span class="node-diff-status"> ] </span>').appendTo(localStats);
226
+ // }
227
+
228
+ // }
229
+ // } else {
230
+ // localCell.addClass("node-diff-empty");
231
+ // }
232
+
233
+ // if (remoteDiff) {
234
+ // if (remoteDiff.deleted[tab.id]) {
235
+ // $('<span class="node-diff-node-deleted"><span class="node-diff-status"><i class="fa fa-minus-square"></i> <span data-i18n="diff.type.flowDeleted"></span></span></span>').appendTo(remoteCell);
236
+ // } else if (object.remoteTab) {
237
+ // if (remoteDiff.added[tab.id]) {
238
+ // $('<span class="node-diff-node-added"><span class="node-diff-status"><i class="fa fa-plus-square"></i> <span data-i18n="diff.type.flowAdded"></span></span></span>').appendTo(remoteCell);
239
+ // } else {
240
+ // if (tab.id) {
241
+ // if (remoteDiff.changed[tab.id]) {
242
+ // flowStats.remote.changedCount++;
243
+ // } else {
244
+ // flowStats.remote.unchangedCount++;
245
+ // }
246
+ // }
247
+ // var remoteStats = $('<span>',{class:"node-diff-tab-stats"}).appendTo(remoteCell);
248
+ // $('<span class="node-diff-status"></span>').text(RED._('diff.nodeCount',{count:remoteNodeCount})).appendTo(remoteStats);
249
+ // if (flowStats.conflicts + flowStats.remote.addedCount + flowStats.remote.changedCount + flowStats.remote.deletedCount > 0) {
250
+ // $('<span class="node-diff-status"> [ </span>').appendTo(remoteStats);
251
+ // if (flowStats.conflicts > 0) {
252
+ // $('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i> '+flowStats.conflicts+'</span></span>').appendTo(remoteStats);
253
+ // }
254
+ // if (flowStats.remote.addedCount > 0) {
255
+ // $('<span class="node-diff-node-added"><span class="node-diff-status"><i class="fa fa-plus-square"></i> '+flowStats.remote.addedCount+'</span></span>').appendTo(remoteStats);
256
+ // }
257
+ // if (flowStats.remote.changedCount > 0) {
258
+ // $('<span class="node-diff-node-changed"><span class="node-diff-status"><i class="fa fa-square"></i> '+flowStats.remote.changedCount+'</span></span>').appendTo(remoteStats);
259
+ // }
260
+ // if (flowStats.remote.deletedCount > 0) {
261
+ // $('<span class="node-diff-node-deleted"><span class="node-diff-status"><i class="fa fa-minus-square"></i> '+flowStats.remote.deletedCount+'</span></span>').appendTo(remoteStats);
262
+ // }
263
+ // $('<span class="node-diff-status"> ] </span>').appendTo(remoteStats);
264
+ // }
265
+ // }
266
+ // } else {
267
+ // remoteCell.addClass("node-diff-empty");
268
+ // }
269
+ // selectState = "";
270
+ // if (flowStats.conflicts > 0) {
271
+ // titleRow.addClass("node-diff-node-entry-conflict");
272
+ // } else {
273
+ // selectState = CurrentDiff.resolutions[tab.id];
274
+ // }
275
+ // if (tab.id) {
276
+ // var hide = !(flowStats.conflicts > 0 &&(localDiff.deleted[tab.id] || remoteDiff.deleted[tab.id]));
277
+ // // Tab parent row
278
+ // createNodeConflictRadioBoxes(tab,titleRow,localCell,remoteCell, false, hide, selectState, CurrentDiff);
279
+ // }
280
+ // }
281
+
282
+ // if (tabDiv.find(".node-diff-node-entry").length === 0) {
283
+ // tabDiv.addClass("node-diff-tab-empty");
284
+ // }
285
+ // container.i18n();
286
+ // }
287
+ // });
288
+ // return diffList;
289
+ // }
290
+ // function buildDiffPanel(container,diff,options) {
291
+ // var diffPanel = $('<div class="node-dialog-view-diff-panel"></div>').appendTo(container);
292
+ // var diffHeaders = $('<div class="node-dialog-view-diff-headers"></div>').appendTo(diffPanel);
293
+ // if (options.mode === "merge") {
294
+ // diffPanel.addClass("node-dialog-view-diff-panel-merge");
295
+ // }
296
+ // var diffList = createDiffTable(diffPanel, diff);
297
+
298
+ // var localDiff = diff.localDiff;
299
+ // var remoteDiff = diff.remoteDiff;
300
+ // var conflicts = diff.conflicts;
301
+
302
+ // var currentConfig = localDiff.currentConfig;
303
+ // var newConfig = localDiff.newConfig;
304
+
305
+
306
+ // if (remoteDiff !== undefined) {
307
+ // diffPanel.addClass('node-diff-three-way');
308
+ // var localTitle = options.oldRevTitle || RED._('diff.local');
309
+ // var remoteTitle = options.newRevTitle || RED._('diff.remote');
310
+ // $('<div></div>').text(localTitle).appendTo(diffHeaders);
311
+ // $('<div></div>').text(remoteTitle).appendTo(diffHeaders);
312
+ // } else {
313
+ // diffPanel.removeClass('node-diff-three-way');
314
+ // }
315
+
316
+ // return {
317
+ // list: diffList,
318
+ // finish: function() {
319
+ // var el = {
320
+ // diff: localDiff,
321
+ // def: {
322
+ // category: 'config',
323
+ // color: '#f0f0f0'
324
+ // },
325
+ // tab: {
326
+ // n: {},
327
+ // nodes: currentConfig.globals
328
+ // },
329
+ // newTab: {
330
+ // n: {},
331
+ // nodes: newConfig.globals
332
+ // }
333
+ // };
334
+ // if (remoteDiff !== undefined) {
335
+ // el.remoteTab = {
336
+ // n:{},
337
+ // nodes:remoteDiff.newConfig.globals
338
+ // };
339
+ // el.remoteDiff = remoteDiff;
340
+ // }
341
+ // diffList.editableList('addItem',el);
342
+
343
+ // var seenTabs = {};
344
+
345
+ // currentConfig.tabOrder.forEach(function(tabId) {
346
+ // var tab = currentConfig.tabs[tabId];
347
+ // var el = {
348
+ // diff: localDiff,
349
+ // def: RED.nodes.getType('tab'),
350
+ // tab:tab
351
+ // };
352
+ // if (newConfig.tabs.hasOwnProperty(tabId)) {
353
+ // el.newTab = newConfig.tabs[tabId];
354
+ // }
355
+ // if (remoteDiff !== undefined) {
356
+ // el.remoteTab = remoteDiff.newConfig.tabs[tabId];
357
+ // el.remoteDiff = remoteDiff;
358
+ // }
359
+ // seenTabs[tabId] = true;
360
+ // diffList.editableList('addItem',el)
361
+ // });
362
+ // newConfig.tabOrder.forEach(function(tabId) {
363
+ // if (!seenTabs[tabId]) {
364
+ // seenTabs[tabId] = true;
365
+ // var tab = newConfig.tabs[tabId];
366
+ // var el = {
367
+ // diff: localDiff,
368
+ // def: RED.nodes.getType('tab'),
369
+ // tab:tab,
370
+ // newTab: tab
371
+ // };
372
+ // if (remoteDiff !== undefined) {
373
+ // el.remoteDiff = remoteDiff;
374
+ // }
375
+ // diffList.editableList('addItem',el)
376
+ // }
377
+ // });
378
+ // if (remoteDiff !== undefined) {
379
+ // remoteDiff.newConfig.tabOrder.forEach(function(tabId) {
380
+ // if (!seenTabs[tabId]) {
381
+ // var tab = remoteDiff.newConfig.tabs[tabId];
382
+ // // TODO how to recognise this is a remotely added flow
383
+ // var el = {
384
+ // diff: localDiff,
385
+ // remoteDiff: remoteDiff,
386
+ // def: RED.nodes.getType('tab'),
387
+ // tab:tab,
388
+ // remoteTab:tab
389
+ // };
390
+ // diffList.editableList('addItem',el)
391
+ // }
392
+ // });
393
+ // }
394
+ // var subflowId;
395
+ // for (subflowId in currentConfig.subflows) {
396
+ // if (currentConfig.subflows.hasOwnProperty(subflowId)) {
397
+ // seenTabs[subflowId] = true;
398
+ // el = {
399
+ // diff: localDiff,
400
+ // def: {
401
+ // defaults:{},
402
+ // icon:"subflow.png",
403
+ // category: "subflows",
404
+ // color: "#da9"
405
+ // },
406
+ // tab:currentConfig.subflows[subflowId]
407
+ // }
408
+ // if (newConfig.subflows.hasOwnProperty(subflowId)) {
409
+ // el.newTab = newConfig.subflows[subflowId];
410
+ // }
411
+ // if (remoteDiff !== undefined) {
412
+ // el.remoteTab = remoteDiff.newConfig.subflows[subflowId];
413
+ // el.remoteDiff = remoteDiff;
414
+ // }
415
+ // diffList.editableList('addItem',el)
416
+ // }
417
+ // }
418
+ // for (subflowId in newConfig.subflows) {
419
+ // if (newConfig.subflows.hasOwnProperty(subflowId) && !seenTabs[subflowId]) {
420
+ // seenTabs[subflowId] = true;
421
+ // el = {
422
+ // diff: localDiff,
423
+ // def: {
424
+ // defaults:{},
425
+ // icon:"subflow.png",
426
+ // category: "subflows",
427
+ // color: "#da9"
428
+ // },
429
+ // tab:newConfig.subflows[subflowId],
430
+ // newTab:newConfig.subflows[subflowId]
431
+ // }
432
+ // if (remoteDiff !== undefined) {
433
+ // el.remoteDiff = remoteDiff;
434
+ // }
435
+ // diffList.editableList('addItem',el)
436
+ // }
437
+ // }
438
+ // if (remoteDiff !== undefined) {
439
+ // for (subflowId in remoteDiff.newConfig.subflows) {
440
+ // if (remoteDiff.newConfig.subflows.hasOwnProperty(subflowId) && !seenTabs[subflowId]) {
441
+ // el = {
442
+ // diff: localDiff,
443
+ // remoteDiff: remoteDiff,
444
+ // def: {
445
+ // defaults:{},
446
+ // icon:"subflow.png",
447
+ // category: "subflows",
448
+ // color: "#da9"
449
+ // },
450
+ // tab:remoteDiff.newConfig.subflows[subflowId],
451
+ // remoteTab: remoteDiff.newConfig.subflows[subflowId]
452
+ // }
453
+ // diffList.editableList('addItem',el)
454
+ // }
455
+ // }
456
+ // }
457
+ // }
458
+ // };
459
+ // }
460
+ // function formatWireProperty(wires,allNodes) {
461
+ // var result = $("<div>",{class:"node-diff-property-wires"})
462
+ // var list = $("<ol></ol>");
463
+ // var c = 0;
464
+ // wires.forEach(function(p,i) {
465
+ // var port = $("<li>").appendTo(list);
466
+ // if (p && p.length > 0) {
467
+ // $("<span>").text(i+1).appendTo(port);
468
+ // var links = $("<ul>").appendTo(port);
469
+ // p.forEach(function(d) {
470
+ // c++;
471
+ // var entry = $("<li>").appendTo(links);
472
+ // var node = allNodes[d];
473
+ // if (node) {
474
+ // var def = RED.nodes.getType(node.type)||{};
475
+ // createNode(node,def).appendTo(entry);
476
+ // } else {
477
+ // entry.text(d);
478
+ // }
479
+ // })
480
+ // } else {
481
+ // port.text('none');
482
+ // }
483
+ // })
484
+ // if (c === 0) {
485
+ // result.text("none");
486
+ // } else {
487
+ // list.appendTo(result);
488
+ // }
489
+ // return result;
490
+ // }
491
+ // function createNodeIcon(node,def) {
492
+ // var nodeDiv = $("<div>",{class:"node-diff-node-entry-node"});
493
+ // var colour = RED.utils.getNodeColor(node.type,def);
494
+ // var icon_url = RED.utils.getNodeIcon(def,node);
495
+ // if (node.type === 'tab') {
496
+ // colour = "#C0DEED";
497
+ // }
498
+ // nodeDiv.css('backgroundColor',colour);
499
+
500
+ // var iconContainer = $('<div/>',{class:"palette_icon_container"}).appendTo(nodeDiv);
501
+ // RED.utils.createIconElement(icon_url, iconContainer, false);
502
+
503
+ // return nodeDiv;
504
+ // }
505
+ // function createNode(node,def) {
506
+ // var nodeTitleDiv = $("<div>",{class:"node-diff-node-entry-title"})
507
+ // createNodeIcon(node,def).appendTo(nodeTitleDiv);
508
+ // var contentDiv = $('<div>',{class:"node-diff-node-description"}).appendTo(nodeTitleDiv);
509
+ // var nodeLabel = node.label || node.name || node.id;
510
+ // $('<span>',{class:"node-diff-node-label"}).text(nodeLabel).appendTo(contentDiv);
511
+ // return nodeTitleDiv;
512
+ // }
513
+ // function createNodeDiffRow(node,stats,CurrentDiff) {
514
+ // var localDiff = CurrentDiff.localDiff;
515
+ // var remoteDiff = CurrentDiff.remoteDiff;
516
+ // var conflicted = CurrentDiff.conflicts[node.id];
517
+
518
+ // var hasChanges = false; // exists in original and local/remote but with changes
519
+ // var unChanged = true; // existing in original,local,remote unchanged
520
+ // var localChanged = false;
521
+
522
+ // if (localDiff.added[node.id]) {
523
+ // stats.local.addedCount++;
524
+ // unChanged = false;
525
+ // }
526
+ // if (remoteDiff && remoteDiff.added[node.id]) {
527
+ // stats.remote.addedCount++;
528
+ // unChanged = false;
529
+ // }
530
+ // if (localDiff.deleted[node.id]) {
531
+ // stats.local.deletedCount++;
532
+ // unChanged = false;
533
+ // }
534
+ // if (remoteDiff && remoteDiff.deleted[node.id]) {
535
+ // stats.remote.deletedCount++;
536
+ // unChanged = false;
537
+ // }
538
+ // if (localDiff.changed[node.id]) {
539
+ // stats.local.changedCount++;
540
+ // hasChanges = true;
541
+ // unChanged = false;
542
+ // }
543
+ // if (remoteDiff && remoteDiff.changed[node.id]) {
544
+ // stats.remote.changedCount++;
545
+ // hasChanges = true;
546
+ // unChanged = false;
547
+ // }
548
+ // // console.log(node.id,localDiff.added[node.id],remoteDiff.added[node.id],localDiff.deleted[node.id],remoteDiff.deleted[node.id],localDiff.changed[node.id],remoteDiff.changed[node.id])
549
+ // var def = RED.nodes.getType(node.type);
550
+ // if (def === undefined) {
551
+ // if (/^subflow:/.test(node.type)) {
552
+ // def = {
553
+ // icon:"subflow.png",
554
+ // category: "subflows",
555
+ // color: "#da9",
556
+ // defaults:{name:{value:""}}
557
+ // }
558
+ // } else {
559
+ // def = {};
560
+ // }
561
+ // }
562
+ // var div = $("<div>",{class:"node-diff-node-entry collapsed"});
563
+ // var row = $("<div>",{class:"node-diff-node-entry-header"}).appendTo(div);
564
+
565
+ // var originalNodeDiv = $("<div>",{class:"node-diff-node-entry-cell"}).appendTo(row);
566
+ // var localNodeDiv = $("<div>",{class:"node-diff-node-entry-cell node-diff-node-local"}).appendTo(row);
567
+ // var remoteNodeDiv;
568
+ // var chevron;
569
+ // if (remoteDiff) {
570
+ // remoteNodeDiv = $("<div>",{class:"node-diff-node-entry-cell node-diff-node-remote"}).appendTo(row);
571
+ // }
572
+ // $('<span class="node-diff-chevron"><i class="fa fa-angle-down"></i></span>').appendTo(originalNodeDiv);
573
+
574
+ // if (unChanged) {
575
+ // stats.local.unchangedCount++;
576
+ // createNode(node,def).appendTo(originalNodeDiv);
577
+ // localNodeDiv.addClass("node-diff-node-unchanged");
578
+ // $('<span class="node-diff-status"><i class="fa fa-square-o"></i> <span data-i18n="diff.type.unchanged"></span></span>').appendTo(localNodeDiv);
579
+ // if (remoteDiff) {
580
+ // stats.remote.unchangedCount++;
581
+ // remoteNodeDiv.addClass("node-diff-node-unchanged");
582
+ // $('<span class="node-diff-status"><i class="fa fa-square-o"></i> <span data-i18n="diff.type.unchanged"></span></span>').appendTo(remoteNodeDiv);
583
+ // }
584
+ // div.addClass("node-diff-node-unchanged");
585
+ // } else if (localDiff.added[node.id]) {
586
+ // localNodeDiv.addClass("node-diff-node-added");
587
+ // if (remoteNodeDiv) {
588
+ // remoteNodeDiv.addClass("node-diff-empty");
589
+ // }
590
+ // $('<span class="node-diff-status"><i class="fa fa-plus-square"></i> <span data-i18n="diff.type.added"></span></span>').appendTo(localNodeDiv);
591
+ // createNode(node,def).appendTo(originalNodeDiv);
592
+ // } else if (remoteDiff && remoteDiff.added[node.id]) {
593
+ // localNodeDiv.addClass("node-diff-empty");
594
+ // remoteNodeDiv.addClass("node-diff-node-added");
595
+ // $('<span class="node-diff-status"><i class="fa fa-plus-square"></i> <span data-i18n="diff.type.added"></span></span>').appendTo(remoteNodeDiv);
596
+ // createNode(node,def).appendTo(originalNodeDiv);
597
+ // } else {
598
+ // createNode(node,def).appendTo(originalNodeDiv);
599
+ // if (localDiff.moved[node.id]) {
600
+ // var localN = localDiff.newConfig.all[node.id];
601
+ // if (!localDiff.deleted[node.z] && node.z !== localN.z && node.z !== "" && !localDiff.newConfig.all[node.z]) {
602
+ // localNodeDiv.addClass("node-diff-empty");
603
+ // } else {
604
+ // localNodeDiv.addClass("node-diff-node-moved");
605
+ // var localMovedMessage = "";
606
+ // if (node.z === localN.z) {
607
+ // localMovedMessage = RED._("diff.type.movedFrom",{id:(localDiff.currentConfig.all[node.id].z||'global')});
608
+ // } else {
609
+ // localMovedMessage = RED._("diff.type.movedTo",{id:(localN.z||'global')});
610
+ // }
611
+ // $('<span class="node-diff-status"><i class="fa fa-caret-square-o-right"></i> '+localMovedMessage+'</span>').appendTo(localNodeDiv);
612
+ // }
613
+ // localChanged = true;
614
+ // } else if (localDiff.deleted[node.z]) {
615
+ // localNodeDiv.addClass("node-diff-empty");
616
+ // localChanged = true;
617
+ // } else if (localDiff.deleted[node.id]) {
618
+ // localNodeDiv.addClass("node-diff-node-deleted");
619
+ // $('<span class="node-diff-status"><i class="fa fa-minus-square"></i> <span data-i18n="diff.type.deleted"></span></span>').appendTo(localNodeDiv);
620
+ // localChanged = true;
621
+ // } else if (localDiff.changed[node.id]) {
622
+ // if (localDiff.newConfig.all[node.id].z !== node.z) {
623
+ // localNodeDiv.addClass("node-diff-empty");
624
+ // } else {
625
+ // localNodeDiv.addClass("node-diff-node-changed");
626
+ // $('<span class="node-diff-status"><i class="fa fa-square"></i> <span data-i18n="diff.type.changed"></span></span>').appendTo(localNodeDiv);
627
+ // localChanged = true;
628
+ // }
629
+ // } else {
630
+ // if (localDiff.newConfig.all[node.id].z !== node.z) {
631
+ // localNodeDiv.addClass("node-diff-empty");
632
+ // } else {
633
+ // stats.local.unchangedCount++;
634
+ // localNodeDiv.addClass("node-diff-node-unchanged");
635
+ // $('<span class="node-diff-status"><i class="fa fa-square-o"></i> <span data-i18n="diff.type.unchanged"></span></span>').appendTo(localNodeDiv);
636
+ // }
637
+ // }
638
+
639
+ // if (remoteDiff) {
640
+ // if (remoteDiff.moved[node.id]) {
641
+ // var remoteN = remoteDiff.newConfig.all[node.id];
642
+ // if (!remoteDiff.deleted[node.z] && node.z !== remoteN.z && node.z !== "" && !remoteDiff.newConfig.all[node.z]) {
643
+ // remoteNodeDiv.addClass("node-diff-empty");
644
+ // } else {
645
+ // remoteNodeDiv.addClass("node-diff-node-moved");
646
+ // var remoteMovedMessage = "";
647
+ // if (node.z === remoteN.z) {
648
+ // remoteMovedMessage = RED._("diff.type.movedFrom",{id:(remoteDiff.currentConfig.all[node.id].z||'global')});
649
+ // } else {
650
+ // remoteMovedMessage = RED._("diff.type.movedTo",{id:(remoteN.z||'global')});
651
+ // }
652
+ // $('<span class="node-diff-status"><i class="fa fa-caret-square-o-right"></i> '+remoteMovedMessage+'</span>').appendTo(remoteNodeDiv);
653
+ // }
654
+ // } else if (remoteDiff.deleted[node.z]) {
655
+ // remoteNodeDiv.addClass("node-diff-empty");
656
+ // } else if (remoteDiff.deleted[node.id]) {
657
+ // remoteNodeDiv.addClass("node-diff-node-deleted");
658
+ // $('<span class="node-diff-status"><i class="fa fa-minus-square"></i> <span data-i18n="diff.type.deleted"></span></span>').appendTo(remoteNodeDiv);
659
+ // } else if (remoteDiff.changed[node.id]) {
660
+ // if (remoteDiff.newConfig.all[node.id].z !== node.z) {
661
+ // remoteNodeDiv.addClass("node-diff-empty");
662
+ // } else {
663
+ // remoteNodeDiv.addClass("node-diff-node-changed");
664
+ // $('<span class="node-diff-status"><i class="fa fa-square"></i> <span data-i18n="diff.type.changed"></span></span>').appendTo(remoteNodeDiv);
665
+ // }
666
+ // } else {
667
+ // if (remoteDiff.newConfig.all[node.id].z !== node.z) {
668
+ // remoteNodeDiv.addClass("node-diff-empty");
669
+ // } else {
670
+ // stats.remote.unchangedCount++;
671
+ // remoteNodeDiv.addClass("node-diff-node-unchanged");
672
+ // $('<span class="node-diff-status"><i class="fa fa-square-o"></i> <span data-i18n="diff.type.unchanged"></span></span>').appendTo(remoteNodeDiv);
673
+ // }
674
+ // }
675
+ // }
676
+ // }
677
+ // var localNode = {
678
+ // node: localDiff.newConfig.all[node.id],
679
+ // all: localDiff.newConfig.all,
680
+ // diff: localDiff
681
+ // };
682
+ // var remoteNode;
683
+ // if (remoteDiff) {
684
+ // remoteNode = {
685
+ // node:remoteDiff.newConfig.all[node.id]||null,
686
+ // all: remoteDiff.newConfig.all,
687
+ // diff: remoteDiff
688
+ // }
689
+ // }
690
+
691
+ // var selectState = "";
692
+
693
+ // if (conflicted) {
694
+ // stats.conflicts++;
695
+ // if (!localNodeDiv.hasClass("node-diff-empty")) {
696
+ // $('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i></span></span>').prependTo(localNodeDiv);
697
+ // }
698
+ // if (!remoteNodeDiv.hasClass("node-diff-empty")) {
699
+ // $('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i></span></span>').prependTo(remoteNodeDiv);
700
+ // }
701
+ // div.addClass("node-diff-node-entry-conflict");
702
+ // } else {
703
+ // selectState = CurrentDiff.resolutions[node.id];
704
+ // }
705
+ // // Node row
706
+ // createNodeConflictRadioBoxes(node,div,localNodeDiv,remoteNodeDiv,false,!conflicted,selectState,CurrentDiff);
707
+ // row.click(function(evt) {
708
+ // $(this).parent().toggleClass('collapsed');
709
+
710
+ // if($(this).siblings('.node-diff-node-entry-properties').length === 0) {
711
+ // createNodePropertiesTable(def,node,localNode,remoteNode).appendTo(div);
712
+ // }
713
+ // });
714
+
715
+ // return div;
716
+ // }
717
+ // function createNodePropertiesTable(def,node,localNodeObj,remoteNodeObj) {
718
+ // var propertyElements = {};
719
+ // var localNode = localNodeObj.node;
720
+ // var remoteNode;
721
+ // if (remoteNodeObj) {
722
+ // remoteNode = remoteNodeObj.node;
723
+ // }
724
+
725
+ // var nodePropertiesDiv = $("<div>",{class:"node-diff-node-entry-properties"});
726
+ // var nodePropertiesTable = $("<table>").appendTo(nodePropertiesDiv);
727
+ // var nodePropertiesTableCols = $('<colgroup><col/><col/></colgroup>').appendTo(nodePropertiesTable);
728
+ // if (remoteNode !== undefined) {
729
+ // $("<col/>").appendTo(nodePropertiesTableCols);
730
+ // }
731
+ // var nodePropertiesTableBody = $("<tbody>").appendTo(nodePropertiesTable);
732
+
733
+ // var row;
734
+ // var localCell, remoteCell;
735
+ // var element;
736
+ // var currentValue, localValue, remoteValue;
737
+ // var localChanged = false;
738
+ // var remoteChanged = false;
739
+ // var localChanges = 0;
740
+ // var remoteChanges = 0;
741
+ // var conflict = false;
742
+ // var status;
743
+
744
+ // row = $("<tr>").appendTo(nodePropertiesTableBody);
745
+ // $("<td>",{class:"node-diff-property-cell-label"}).text("id").appendTo(row);
746
+ // localCell = $("<td>",{class:"node-diff-property-cell node-diff-node-local"}).appendTo(row);
747
+ // if (localNode) {
748
+ // localCell.addClass("node-diff-node-unchanged");
749
+ // $('<span class="node-diff-status"></span>').appendTo(localCell);
750
+ // element = $('<span class="node-diff-element"></span>').appendTo(localCell);
751
+ // propertyElements['local.id'] = RED.utils.createObjectElement(localNode.id).appendTo(element);
752
+ // } else {
753
+ // localCell.addClass("node-diff-empty");
754
+ // }
755
+ // if (remoteNode !== undefined) {
756
+ // remoteCell = $("<td>",{class:"node-diff-property-cell node-diff-node-remote"}).appendTo(row);
757
+ // remoteCell.addClass("node-diff-node-unchanged");
758
+ // if (remoteNode) {
759
+ // $('<span class="node-diff-status"></span>').appendTo(remoteCell);
760
+ // element = $('<span class="node-diff-element"></span>').appendTo(remoteCell);
761
+ // propertyElements['remote.id'] = RED.utils.createObjectElement(remoteNode.id).appendTo(element);
762
+ // } else {
763
+ // remoteCell.addClass("node-diff-empty");
764
+ // }
765
+ // }
766
+
767
+
768
+ // if (node.hasOwnProperty('x')) {
769
+ // if (localNode) {
770
+ // if (localNode.x !== node.x || localNode.y !== node.y) {
771
+ // localChanged = true;
772
+ // localChanges++;
773
+ // }
774
+ // }
775
+ // if (remoteNode) {
776
+ // if (remoteNode.x !== node.x || remoteNode.y !== node.y) {
777
+ // remoteChanged = true;
778
+ // remoteChanges++;
779
+ // }
780
+ // }
781
+ // if ( (remoteChanged && localChanged && (localNode.x !== remoteNode.x || localNode.y !== remoteNode.y)) ||
782
+ // (!localChanged && remoteChanged && localNodeObj.diff.deleted[node.id]) ||
783
+ // (localChanged && !remoteChanged && remoteNodeObj.diff.deleted[node.id])
784
+ // ) {
785
+ // conflict = true;
786
+ // }
787
+ // row = $("<tr>").appendTo(nodePropertiesTableBody);
788
+ // $("<td>",{class:"node-diff-property-cell-label"}).text("position").appendTo(row);
789
+ // localCell = $("<td>",{class:"node-diff-property-cell node-diff-node-local"}).appendTo(row);
790
+ // if (localNode) {
791
+ // localCell.addClass("node-diff-node-"+(localChanged?"changed":"unchanged"));
792
+ // $('<span class="node-diff-status">'+(localChanged?'<i class="fa fa-square"></i>':'')+'</span>').appendTo(localCell);
793
+ // element = $('<span class="node-diff-element"></span>').appendTo(localCell);
794
+ // propertyElements['local.position'] = RED.utils.createObjectElement({x:localNode.x,y:localNode.y},
795
+ // {
796
+ // path: "position",
797
+ // exposeApi: true,
798
+ // ontoggle: function(path,state) {
799
+ // if (propertyElements['remote.'+path]) {
800
+ // propertyElements['remote.'+path].prop('expand')(path,state)
801
+ // }
802
+ // }
803
+ // }
804
+ // ).appendTo(element);
805
+ // } else {
806
+ // localCell.addClass("node-diff-empty");
807
+ // }
808
+
809
+ // if (remoteNode !== undefined) {
810
+ // remoteCell = $("<td>",{class:"node-diff-property-cell node-diff-node-remote"}).appendTo(row);
811
+ // remoteCell.addClass("node-diff-node-"+(remoteChanged?"changed":"unchanged"));
812
+ // if (remoteNode) {
813
+ // $('<span class="node-diff-status">'+(remoteChanged?'<i class="fa fa-square"></i>':'')+'</span>').appendTo(remoteCell);
814
+ // element = $('<span class="node-diff-element"></span>').appendTo(remoteCell);
815
+ // propertyElements['remote.position'] = RED.utils.createObjectElement({x:remoteNode.x,y:remoteNode.y},
816
+ // {
817
+ // path: "position",
818
+ // exposeApi: true,
819
+ // ontoggle: function(path,state) {
820
+ // if (propertyElements['local.'+path]) {
821
+ // propertyElements['local.'+path].prop('expand')(path,state);
822
+ // }
823
+ // }
824
+ // }
825
+ // ).appendTo(element);
826
+ // } else {
827
+ // remoteCell.addClass("node-diff-empty");
828
+ // }
829
+ // }
830
+ // }
831
+ // //
832
+ // localChanged = remoteChanged = conflict = false;
833
+ // if (node.hasOwnProperty('wires')) {
834
+ // currentValue = JSON.stringify(node.wires);
835
+ // if (localNode) {
836
+ // localValue = JSON.stringify(localNode.wires);
837
+ // if (currentValue !== localValue) {
838
+ // localChanged = true;
839
+ // localChanges++;
840
+ // }
841
+ // }
842
+ // if (remoteNode) {
843
+ // remoteValue = JSON.stringify(remoteNode.wires);
844
+ // if (currentValue !== remoteValue) {
845
+ // remoteChanged = true;
846
+ // remoteChanges++;
847
+ // }
848
+ // }
849
+ // if ( (remoteChanged && localChanged && (localValue !== remoteValue)) ||
850
+ // (!localChanged && remoteChanged && localNodeObj.diff.deleted[node.id]) ||
851
+ // (localChanged && !remoteChanged && remoteNodeObj.diff.deleted[node.id])
852
+ // ){
853
+ // conflict = true;
854
+ // }
855
+ // row = $("<tr>").appendTo(nodePropertiesTableBody);
856
+ // $("<td>",{class:"node-diff-property-cell-label"}).text("wires").appendTo(row);
857
+ // localCell = $("<td>",{class:"node-diff-property-cell node-diff-node-local"}).appendTo(row);
858
+ // if (localNode) {
859
+ // if (!conflict) {
860
+ // localCell.addClass("node-diff-node-"+(localChanged?"changed":"unchanged"));
861
+ // $('<span class="node-diff-status">'+(localChanged?'<i class="fa fa-square"></i>':'')+'</span>').appendTo(localCell);
862
+ // } else {
863
+ // localCell.addClass("node-diff-node-conflict");
864
+ // $('<span class="node-diff-status"><i class="fa fa-exclamation"></i></span>').appendTo(localCell);
865
+ // }
866
+ // formatWireProperty(localNode.wires,localNodeObj.all).appendTo(localCell);
867
+ // } else {
868
+ // localCell.addClass("node-diff-empty");
869
+ // }
870
+
871
+ // if (remoteNode !== undefined) {
872
+ // remoteCell = $("<td>",{class:"node-diff-property-cell node-diff-node-remote"}).appendTo(row);
873
+ // if (remoteNode) {
874
+ // if (!conflict) {
875
+ // remoteCell.addClass("node-diff-node-"+(remoteChanged?"changed":"unchanged"));
876
+ // $('<span class="node-diff-status">'+(remoteChanged?'<i class="fa fa-square"></i>':'')+'</span>').appendTo(remoteCell);
877
+ // } else {
878
+ // remoteCell.addClass("node-diff-node-conflict");
879
+ // $('<span class="node-diff-status"><i class="fa fa-exclamation"></i></span>').appendTo(remoteCell);
880
+ // }
881
+ // formatWireProperty(remoteNode.wires,remoteNodeObj.all).appendTo(remoteCell);
882
+ // } else {
883
+ // remoteCell.addClass("node-diff-empty");
884
+ // }
885
+ // }
886
+ // }
887
+ // var properties = Object.keys(node).filter(function(p) { return p!='inputLabels'&&p!='outputLabels'&&p!='z'&&p!='wires'&&p!=='x'&&p!=='y'&&p!=='id'&&p!=='type'&&(!def.defaults||!def.defaults.hasOwnProperty(p))});
888
+ // if (def.defaults) {
889
+ // properties = properties.concat(Object.keys(def.defaults));
890
+ // }
891
+ // if (node.type !== 'tab') {
892
+ // properties = properties.concat(['inputLabels','outputLabels']);
893
+ // }
894
+ // if ( ((localNode && localNode.hasOwnProperty('icon')) || (remoteNode && remoteNode.hasOwnProperty('icon'))) &&
895
+ // properties.indexOf('icon') === -1
896
+ // ) {
897
+ // properties.unshift('icon');
898
+ // }
899
+
900
+
901
+ // properties.forEach(function(d) {
902
+ // localChanged = false;
903
+ // remoteChanged = false;
904
+ // conflict = false;
905
+ // currentValue = JSON.stringify(node[d]);
906
+ // if (localNode) {
907
+ // localValue = JSON.stringify(localNode[d]);
908
+ // if (currentValue !== localValue) {
909
+ // localChanged = true;
910
+ // localChanges++;
911
+ // }
912
+ // }
913
+ // if (remoteNode) {
914
+ // remoteValue = JSON.stringify(remoteNode[d]);
915
+ // if (currentValue !== remoteValue) {
916
+ // remoteChanged = true;
917
+ // remoteChanges++;
918
+ // }
919
+ // }
920
+
921
+ // if ( (remoteChanged && localChanged && (localValue !== remoteValue)) ||
922
+ // (!localChanged && remoteChanged && localNodeObj.diff.deleted[node.id]) ||
923
+ // (localChanged && !remoteChanged && remoteNodeObj.diff.deleted[node.id])
924
+ // ){
925
+ // conflict = true;
926
+ // }
927
+
928
+ // row = $("<tr>").appendTo(nodePropertiesTableBody);
929
+ // var propertyNameCell = $("<td>",{class:"node-diff-property-cell-label"}).text(d).appendTo(row);
930
+ // localCell = $("<td>",{class:"node-diff-property-cell node-diff-node-local"}).appendTo(row);
931
+ // if (localNode) {
932
+ // if (!conflict) {
933
+ // localCell.addClass("node-diff-node-"+(localChanged?"changed":"unchanged"));
934
+ // $('<span class="node-diff-status">'+(localChanged?'<i class="fa fa-square"></i>':'')+'</span>').appendTo(localCell);
935
+ // } else {
936
+ // localCell.addClass("node-diff-node-conflict");
937
+ // $('<span class="node-diff-status"><i class="fa fa-exclamation"></i></span>').appendTo(localCell);
938
+ // }
939
+ // element = $('<span class="node-diff-element"></span>').appendTo(localCell);
940
+ // propertyElements['local.'+d] = RED.utils.createObjectElement(localNode[d],
941
+ // {
942
+ // path: d,
943
+ // exposeApi: true,
944
+ // ontoggle: function(path,state) {
945
+ // if (propertyElements['remote.'+d]) {
946
+ // propertyElements['remote.'+d].prop('expand')(path,state)
947
+ // }
948
+ // }
949
+ // }
950
+ // ).appendTo(element);
951
+ // } else {
952
+ // localCell.addClass("node-diff-empty");
953
+ // }
954
+ // if (remoteNode !== undefined) {
955
+ // remoteCell = $("<td>",{class:"node-diff-property-cell node-diff-node-remote"}).appendTo(row);
956
+ // if (remoteNode) {
957
+ // if (!conflict) {
958
+ // remoteCell.addClass("node-diff-node-"+(remoteChanged?"changed":"unchanged"));
959
+ // $('<span class="node-diff-status">'+(remoteChanged?'<i class="fa fa-square"></i>':'')+'</span>').appendTo(remoteCell);
960
+ // } else {
961
+ // remoteCell.addClass("node-diff-node-conflict");
962
+ // $('<span class="node-diff-status"><i class="fa fa-exclamation"></i></span>').appendTo(remoteCell);
963
+ // }
964
+ // element = $('<span class="node-diff-element"></span>').appendTo(remoteCell);
965
+ // propertyElements['remote.'+d] = RED.utils.createObjectElement(remoteNode[d],
966
+ // {
967
+ // path: d,
968
+ // exposeApi: true,
969
+ // ontoggle: function(path,state) {
970
+ // if (propertyElements['local.'+d]) {
971
+ // propertyElements['local.'+d].prop('expand')(path,state)
972
+ // }
973
+ // }
974
+ // }
975
+ // ).appendTo(element);
976
+ // } else {
977
+ // remoteCell.addClass("node-diff-empty");
978
+ // }
979
+ // }
980
+ // if (localNode && remoteNode && typeof localNode[d] === "string") {
981
+ // if (/\n/.test(localNode[d]) || /\n/.test(remoteNode[d])) {
982
+ // $('<button class="editor-button editor-button-small node-diff-text-diff-button"><i class="fa fa-file-o"> <i class="fa fa-caret-left"></i> <i class="fa fa-caret-right"></i> <i class="fa fa-file-o"></i></button>').click(function() {
983
+ // showTextDiff(localNode[d],remoteNode[d]);
984
+ // }).appendTo(propertyNameCell);
985
+ // }
986
+ // }
987
+
988
+
989
+ // });
990
+ // return nodePropertiesDiv;
991
+ // }
992
+ // function createNodeConflictRadioBoxes(node,row,localDiv,remoteDiv,propertiesTable,hide,state,diff) {
993
+ // var safeNodeId = "node-diff-selectbox-"+node.id.replace(/\./g,'-')+(propertiesTable?"-props":"");
994
+ // var className = "";
995
+ // if (node.z||propertiesTable) {
996
+ // className = "node-diff-selectbox-tab-"+(propertiesTable?node.id:node.z).replace(/\./g,'-');
997
+ // }
998
+ // var titleRow = !propertiesTable && (node.type === 'tab' || node.type === 'subflow');
999
+ // var changeHandler = function(evt) {
1000
+ // var className;
1001
+ // if (node.type === undefined) {
1002
+ // // TODO: handle globals
1003
+ // } else if (titleRow) {
1004
+ // className = "node-diff-selectbox-tab-"+node.id.replace(/\./g,'-');
1005
+ // $("."+className+"-"+this.value).prop('checked',true);
1006
+ // if (this.value === 'local') {
1007
+ // $("."+className+"-"+this.value).closest(".node-diff-node-entry").addClass("node-diff-select-local");
1008
+ // $("."+className+"-"+this.value).closest(".node-diff-node-entry").removeClass("node-diff-select-remote");
1009
+ // } else {
1010
+ // $("."+className+"-"+this.value).closest(".node-diff-node-entry").removeClass("node-diff-select-local");
1011
+ // $("."+className+"-"+this.value).closest(".node-diff-node-entry").addClass("node-diff-select-remote");
1012
+ // }
1013
+ // } else {
1014
+ // // Individual node or properties table
1015
+ // var parentId = "node-diff-selectbox-"+(propertiesTable?node.id:node.z).replace(/\./g,'-');
1016
+ // $('#'+parentId+"-local").prop('checked',false);
1017
+ // $('#'+parentId+"-remote").prop('checked',false);
1018
+ // var titleRowDiv = $('#'+parentId+"-local").closest(".node-diff-tab").find(".node-diff-tab-title");
1019
+ // titleRowDiv.removeClass("node-diff-select-local");
1020
+ // titleRowDiv.removeClass("node-diff-select-remote");
1021
+ // }
1022
+ // if (this.value === 'local') {
1023
+ // row.removeClass("node-diff-select-remote");
1024
+ // row.addClass("node-diff-select-local");
1025
+ // } else if (this.value === 'remote') {
1026
+ // row.addClass("node-diff-select-remote");
1027
+ // row.removeClass("node-diff-select-local");
1028
+ // }
1029
+ // refreshConflictHeader(diff);
1030
+ // }
1031
+
1032
+ // var localSelectDiv = $('<label>',{class:"node-diff-selectbox",for:safeNodeId+"-local"}).click(function(e) { e.stopPropagation();}).appendTo(localDiv);
1033
+ // var localRadio = $('<input>',{id:safeNodeId+"-local",type:'radio',value:"local",name:safeNodeId,class:className+"-local"+(titleRow?"":" node-diff-select-node")}).data('node-id',node.id).change(changeHandler).appendTo(localSelectDiv);
1034
+ // var remoteSelectDiv = $('<label>',{class:"node-diff-selectbox",for:safeNodeId+"-remote"}).click(function(e) { e.stopPropagation();}).appendTo(remoteDiv);
1035
+ // var remoteRadio = $('<input>',{id:safeNodeId+"-remote",type:'radio',value:"remote",name:safeNodeId,class:className+"-remote"+(titleRow?"":" node-diff-select-node")}).data('node-id',node.id).change(changeHandler).appendTo(remoteSelectDiv);
1036
+ // if (state === 'local') {
1037
+ // localRadio.prop('checked',true);
1038
+ // } else if (state === 'remote') {
1039
+ // remoteRadio.prop('checked',true);
1040
+ // }
1041
+ // if (hide||localDiv.hasClass("node-diff-empty") || remoteDiv.hasClass("node-diff-empty")) {
1042
+ // localSelectDiv.hide();
1043
+ // remoteSelectDiv.hide();
1044
+ // }
1045
+
1046
+ // }
1047
+ // function refreshConflictHeader(currentDiff) {
1048
+ // var resolutionCount = 0;
1049
+ // $(".node-diff-selectbox>input:checked").each(function() {
1050
+ // if (currentDiff.conflicts[$(this).data('node-id')]) {
1051
+ // resolutionCount++;
1052
+ // }
1053
+ // currentDiff.resolutions[$(this).data('node-id')] = $(this).val();
1054
+ // })
1055
+ // var conflictCount = Object.keys(currentDiff.conflicts).length;
1056
+ // if (conflictCount - resolutionCount === 0) {
1057
+ // $("#node-diff-toolbar-resolved-conflicts").html('<span class="node-diff-node-added"><span class="node-diff-status"><i class="fa fa-check"></i></span></span> '+RED._("diff.unresolvedCount",{count:conflictCount - resolutionCount}));
1058
+ // } else {
1059
+ // $("#node-diff-toolbar-resolved-conflicts").html('<span class="node-diff-node-conflict"><span class="node-diff-status"><i class="fa fa-exclamation"></i></span></span> '+RED._("diff.unresolvedCount",{count:conflictCount - resolutionCount}));
1060
+ // }
1061
+ // if (conflictCount === resolutionCount) {
1062
+ // $("#node-diff-view-diff-merge").removeClass('disabled');
1063
+ // $("#node-diff-view-resolve-diff").removeClass('disabled');
1064
+ // }
1065
+ // }
1066
+ // function getRemoteDiff(callback) {
1067
+ // $.ajax({
1068
+ // headers: {
1069
+ // "Accept":"application/json",
1070
+ // },
1071
+ // cache: false,
1072
+ // url: 'flows',
1073
+ // success: function(nodes) {
1074
+ // var localFlow = RED.nodes.createCompleteNodeSet();
1075
+ // var originalFlow = RED.nodes.originalFlow();
1076
+ // var remoteFlow = nodes.flows;
1077
+ // var localDiff = generateDiff(originalFlow,localFlow);
1078
+ // var remoteDiff = generateDiff(originalFlow,remoteFlow);
1079
+ // remoteDiff.rev = nodes.rev;
1080
+ // callback(resolveDiffs(localDiff,remoteDiff))
1081
+ // }
1082
+ // });
1083
+
1084
+ // }
1085
+ // // function showLocalDiff() {
1086
+ // // var nns = RED.nodes.createCompleteNodeSet();
1087
+ // // var originalFlow = RED.nodes.originalFlow();
1088
+ // // var diff = generateDiff(originalFlow,nns);
1089
+ // // showDiff(diff);
1090
+ // // }
1091
+ // function showRemoteDiff(diff) {
1092
+ // if (diff === undefined) {
1093
+ // getRemoteDiff(showRemoteDiff);
1094
+ // } else {
1095
+ // showDiff(diff,{mode:'merge'});
1096
+ // }
1097
+ // }
1098
+ // function parseNodes(nodeList) {
1099
+ // var tabOrder = [];
1100
+ // var tabs = {};
1101
+ // var subflows = {};
1102
+ // var globals = [];
1103
+ // var all = {};
1104
+
1105
+ // nodeList.forEach(function(node) {
1106
+ // all[node.id] = node;
1107
+ // if (node.type === 'tab') {
1108
+ // tabOrder.push(node.id);
1109
+ // tabs[node.id] = {n:node,nodes:[]};
1110
+ // } else if (node.type === 'subflow') {
1111
+ // subflows[node.id] = {n:node,nodes:[]};
1112
+ // }
1113
+ // });
1114
+
1115
+ // nodeList.forEach(function(node) {
1116
+ // if (node.type !== 'tab' && node.type !== 'subflow') {
1117
+ // if (tabs[node.z]) {
1118
+ // tabs[node.z].nodes.push(node);
1119
+ // } else if (subflows[node.z]) {
1120
+ // subflows[node.z].nodes.push(node);
1121
+ // } else {
1122
+ // globals.push(node);
1123
+ // }
1124
+ // }
1125
+ // });
1126
+
1127
+ // return {
1128
+ // all: all,
1129
+ // tabOrder: tabOrder,
1130
+ // tabs: tabs,
1131
+ // subflows: subflows,
1132
+ // globals: globals
1133
+ // }
1134
+ // }
1135
+ // function generateDiff(currentNodes,newNodes) {
1136
+ // var currentConfig = parseNodes(currentNodes);
1137
+ // var newConfig = parseNodes(newNodes);
1138
+ // var added = {};
1139
+ // var deleted = {};
1140
+ // var changed = {};
1141
+ // var moved = {};
1142
+
1143
+ // Object.keys(currentConfig.all).forEach(function(id) {
1144
+ // var node = RED.nodes.workspace(id)||RED.nodes.subflow(id)||RED.nodes.node(id);
1145
+ // if (!newConfig.all.hasOwnProperty(id)) {
1146
+ // deleted[id] = true;
1147
+ // } else if (JSON.stringify(currentConfig.all[id]) !== JSON.stringify(newConfig.all[id])) {
1148
+ // changed[id] = true;
1149
+
1150
+ // if (currentConfig.all[id].z !== newConfig.all[id].z) {
1151
+ // moved[id] = true;
1152
+ // }
1153
+ // }
1154
+ // });
1155
+ // Object.keys(newConfig.all).forEach(function(id) {
1156
+ // if (!currentConfig.all.hasOwnProperty(id)) {
1157
+ // added[id] = true;
1158
+ // }
1159
+ // });
1160
+
1161
+ // var diff = {
1162
+ // currentConfig: currentConfig,
1163
+ // newConfig: newConfig,
1164
+ // added: added,
1165
+ // deleted: deleted,
1166
+ // changed: changed,
1167
+ // moved: moved
1168
+ // };
1169
+ // return diff;
1170
+ // }
1171
+ // function resolveDiffs(localDiff,remoteDiff) {
1172
+ // var conflicted = {};
1173
+ // var resolutions = {};
1174
+ // var diff = {
1175
+ // localDiff: localDiff,
1176
+ // remoteDiff: remoteDiff,
1177
+ // conflicts: conflicted,
1178
+ // resolutions: resolutions
1179
+ // }
1180
+ // var seen = {};
1181
+ // var id,node;
1182
+ // for (id in localDiff.currentConfig.all) {
1183
+ // if (localDiff.currentConfig.all.hasOwnProperty(id)) {
1184
+ // seen[id] = true;
1185
+ // var localNode = localDiff.newConfig.all[id];
1186
+ // if (localDiff.changed[id] && remoteDiff.deleted[id]) {
1187
+ // conflicted[id] = true;
1188
+ // } else if (localDiff.deleted[id] && remoteDiff.changed[id]) {
1189
+ // conflicted[id] = true;
1190
+ // } else if (localDiff.changed[id] && remoteDiff.changed[id]) {
1191
+ // var remoteNode = remoteDiff.newConfig.all[id];
1192
+ // if (JSON.stringify(localNode) !== JSON.stringify(remoteNode)) {
1193
+ // conflicted[id] = true;
1194
+ // }
1195
+ // }
1196
+ // if (!conflicted[id]) {
1197
+ // if (remoteDiff.added[id]||remoteDiff.changed[id]||remoteDiff.deleted[id]) {
1198
+ // resolutions[id] = 'remote';
1199
+ // } else {
1200
+ // resolutions[id] = 'local';
1201
+ // }
1202
+ // }
1203
+ // }
1204
+ // }
1205
+ // for (id in localDiff.added) {
1206
+ // if (localDiff.added.hasOwnProperty(id)) {
1207
+ // node = localDiff.newConfig.all[id];
1208
+ // if (remoteDiff.deleted[node.z]) {
1209
+ // conflicted[id] = true;
1210
+ // // conflicted[node.z] = true;
1211
+ // } else {
1212
+ // resolutions[id] = 'local';
1213
+ // }
1214
+ // }
1215
+ // }
1216
+ // for (id in remoteDiff.added) {
1217
+ // if (remoteDiff.added.hasOwnProperty(id)) {
1218
+ // node = remoteDiff.newConfig.all[id];
1219
+ // if (localDiff.deleted[node.z]) {
1220
+ // conflicted[id] = true;
1221
+ // // conflicted[node.z] = true;
1222
+ // } else {
1223
+ // resolutions[id] = 'remote';
1224
+ // }
1225
+ // }
1226
+ // }
1227
+ // // console.log(diff.resolutions);
1228
+ // // console.log(conflicted);
1229
+ // return diff;
1230
+ // }
1231
+
1232
+ // function showDiff(diff,options) {
1233
+ // if (diffVisible) {
1234
+ // return;
1235
+ // }
1236
+ // options = options || {};
1237
+ // var mode = options.mode || 'merge';
1238
+
1239
+ // var localDiff = diff.localDiff;
1240
+ // var remoteDiff = diff.remoteDiff;
1241
+ // var conflicts = diff.conflicts;
1242
+ // // currentDiff = diff;
1243
+
1244
+ // var trayOptions = {
1245
+ // title: options.title||RED._("diff.reviewChanges"),
1246
+ // width: Infinity,
1247
+ // overlay: true,
1248
+ // buttons: [
1249
+ // {
1250
+ // text: RED._((options.mode === 'merge')?"common.label.cancel":"common.label.close"),
1251
+ // click: function() {
1252
+ // RED.tray.close();
1253
+ // }
1254
+ // }
1255
+ // ],
1256
+ // resize: function(dimensions) {
1257
+ // // trayWidth = dimensions.width;
1258
+ // },
1259
+ // open: function(tray) {
1260
+ // var trayBody = tray.find('.editor-tray-body');
1261
+ // var toolbar = $('<div class="node-diff-toolbar">'+
1262
+ // '<span><span id="node-diff-toolbar-resolved-conflicts"></span></span> '+
1263
+ // '</div>').prependTo(trayBody);
1264
+ // var diffContainer = $('<div class="node-diff-container"></div>').appendTo(trayBody);
1265
+ // var diffTable = buildDiffPanel(diffContainer,diff,options);
1266
+ // diffTable.list.hide();
1267
+ // if (remoteDiff) {
1268
+ // $("#node-diff-view-diff-merge").show();
1269
+ // if (Object.keys(conflicts).length === 0) {
1270
+ // $("#node-diff-view-diff-merge").removeClass('disabled');
1271
+ // } else {
1272
+ // $("#node-diff-view-diff-merge").addClass('disabled');
1273
+ // }
1274
+ // } else {
1275
+ // $("#node-diff-view-diff-merge").hide();
1276
+ // }
1277
+ // refreshConflictHeader(diff);
1278
+ // // console.log("--------------");
1279
+ // // console.log(localDiff);
1280
+ // // console.log(remoteDiff);
1281
+
1282
+ // setTimeout(function() {
1283
+ // diffTable.finish();
1284
+ // diffTable.list.show();
1285
+ // },300);
1286
+ // $("#sidebar-shade").show();
1287
+ // },
1288
+ // close: function() {
1289
+ // diffVisible = false;
1290
+ // $("#sidebar-shade").hide();
1291
+
1292
+ // },
1293
+ // show: function() {
1294
+
1295
+ // }
1296
+ // }
1297
+ // if (options.mode === 'merge') {
1298
+ // trayOptions.buttons.push(
1299
+ // {
1300
+ // id: "node-diff-view-diff-merge",
1301
+ // text: RED._("deploy.confirm.button.merge"),
1302
+ // class: "primary disabled",
1303
+ // click: function() {
1304
+ // if (!$("#node-diff-view-diff-merge").hasClass('disabled')) {
1305
+ // refreshConflictHeader(diff);
1306
+ // mergeDiff(diff);
1307
+ // RED.tray.close();
1308
+ // }
1309
+ // }
1310
+ // }
1311
+ // );
1312
+ // }
1313
+
1314
+ // RED.tray.show(trayOptions);
1315
+ // }
1316
+
1317
+ // function applyDiff(diff) {
1318
+ // var currentConfig = diff.localDiff.currentConfig;
1319
+ // var localDiff = diff.localDiff;
1320
+ // var remoteDiff = diff.remoteDiff;
1321
+ // var conflicts = diff.conflicts;
1322
+ // var resolutions = diff.resolutions;
1323
+ // var id;
1324
+
1325
+ // for (id in conflicts) {
1326
+ // if (conflicts.hasOwnProperty(id)) {
1327
+ // if (!resolutions.hasOwnProperty(id)) {
1328
+ // console.log(diff);
1329
+ // throw new Error("No resolution for conflict on node",id);
1330
+ // }
1331
+ // }
1332
+ // }
1333
+
1334
+ // var newConfig = [];
1335
+ // var node;
1336
+ // var nodeChangedStates = {};
1337
+ // var localChangedStates = {};
1338
+ // for (id in localDiff.newConfig.all) {
1339
+ // if (localDiff.newConfig.all.hasOwnProperty(id)) {
1340
+ // node = RED.nodes.node(id);
1341
+ // if (resolutions[id] === 'local') {
1342
+ // if (node) {
1343
+ // nodeChangedStates[id] = node.changed;
1344
+ // }
1345
+ // newConfig.push(localDiff.newConfig.all[id]);
1346
+ // } else if (resolutions[id] === 'remote') {
1347
+ // if (!remoteDiff.deleted[id] && remoteDiff.newConfig.all.hasOwnProperty(id)) {
1348
+ // if (node) {
1349
+ // nodeChangedStates[id] = node.changed;
1350
+ // }
1351
+ // localChangedStates[id] = 1;
1352
+ // newConfig.push(remoteDiff.newConfig.all[id]);
1353
+ // }
1354
+ // } else {
1355
+ // console.log("Unresolved",id)
1356
+ // }
1357
+ // }
1358
+ // }
1359
+ // for (id in remoteDiff.added) {
1360
+ // if (remoteDiff.added.hasOwnProperty(id)) {
1361
+ // node = RED.nodes.node(id);
1362
+ // if (node) {
1363
+ // nodeChangedStates[id] = node.changed;
1364
+ // }
1365
+ // if (!localDiff.added.hasOwnProperty(id)) {
1366
+ // localChangedStates[id] = 2;
1367
+ // newConfig.push(remoteDiff.newConfig.all[id]);
1368
+ // }
1369
+ // }
1370
+ // }
1371
+ // return {
1372
+ // config: newConfig,
1373
+ // nodeChangedStates: nodeChangedStates,
1374
+ // localChangedStates: localChangedStates
1375
+ // }
1376
+ // }
1377
+
1378
+ // function mergeDiff(diff) {
1379
+ // //console.log(diff);
1380
+ // var appliedDiff = applyDiff(diff);
1381
+
1382
+ // var newConfig = appliedDiff.config;
1383
+ // var nodeChangedStates = appliedDiff.nodeChangedStates;
1384
+ // var localChangedStates = appliedDiff.localChangedStates;
1385
+
1386
+ // var isDirty = RED.nodes.dirty();
1387
+
1388
+ // var historyEvent = {
1389
+ // t:"replace",
1390
+ // config: RED.nodes.createCompleteNodeSet(),
1391
+ // changed: nodeChangedStates,
1392
+ // dirty: isDirty,
1393
+ // rev: RED.nodes.version()
1394
+ // }
1395
+
1396
+ // RED.history.push(historyEvent);
1397
+
1398
+ // var originalFlow = RED.nodes.originalFlow();
1399
+ // // originalFlow is what the editor things it loaded
1400
+ // // - add any newly added nodes from remote diff as they are now part of the record
1401
+ // for (var id in diff.remoteDiff.added) {
1402
+ // if (diff.remoteDiff.added.hasOwnProperty(id)) {
1403
+ // if (diff.remoteDiff.newConfig.all.hasOwnProperty(id)) {
1404
+ // originalFlow.push(JSON.parse(JSON.stringify(diff.remoteDiff.newConfig.all[id])));
1405
+ // }
1406
+ // }
1407
+ // }
1408
+
1409
+ // RED.nodes.clear();
1410
+ // var imported = RED.nodes.import(newConfig);
1411
+
1412
+ // // Restore the original flow so subsequent merge resolutions can properly
1413
+ // // identify new-vs-old
1414
+ // RED.nodes.originalFlow(originalFlow);
1415
+ // imported[0].forEach(function(n) {
1416
+ // if (nodeChangedStates[n.id] || localChangedStates[n.id]) {
1417
+ // n.changed = true;
1418
+ // }
1419
+ // })
1420
+
1421
+ // RED.nodes.version(diff.remoteDiff.rev);
1422
+
1423
+ // if (isDirty) {
1424
+ // RED.nodes.dirty(true);
1425
+ // }
1426
+
1427
+ // RED.view.redraw(true);
1428
+ // RED.palette.refresh();
1429
+ // RED.workspaces.refresh();
1430
+ // RED.sidebar.config.refresh();
1431
+ // }
1432
+
1433
+ // function showTestFlowDiff(index) {
1434
+ // if (index === 1) {
1435
+ // var localFlow = RED.nodes.createCompleteNodeSet();
1436
+ // var originalFlow = RED.nodes.originalFlow();
1437
+ // showTextDiff(JSON.stringify(localFlow,null,4),JSON.stringify(originalFlow,null,4))
1438
+ // } else if (index === 2) {
1439
+ // var local = "1\n2\n3\n4\n5\nA\n6\n7\n8\n9\n";
1440
+ // var remote = "1\nA\n2\n3\nD\nE\n6\n7\n8\n9\n";
1441
+ // showTextDiff(local,remote);
1442
+ // } else if (index === 3) {
1443
+ // var local = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22";
1444
+ // var remote = "1\nTWO\nTHREE\nEXTRA\n4\n5\n6\n7\n8\n9\n10\n11\n12\nTHIRTEEN\n14\n15\n16\n17\n18\n19\n20\n21\n22";
1445
+ // showTextDiff(local,remote);
1446
+ // }
1447
+ // }
1448
+
1449
+ // function showTextDiff(textA,textB) {
1450
+ // var trayOptions = {
1451
+ // title: RED._("diff.compareChanges"),
1452
+ // width: Infinity,
1453
+ // overlay: true,
1454
+ // buttons: [
1455
+ // {
1456
+ // text: RED._("common.label.close"),
1457
+ // click: function() {
1458
+ // RED.tray.close();
1459
+ // }
1460
+ // }
1461
+ // ],
1462
+ // resize: function(dimensions) {
1463
+ // // trayWidth = dimensions.width;
1464
+ // },
1465
+ // open: function(tray) {
1466
+ // var trayBody = tray.find('.editor-tray-body');
1467
+ // var diffPanel = $('<div class="node-text-diff"></div>').appendTo(trayBody);
1468
+
1469
+ // var codeTable = $("<table>",{class:"node-text-diff-content"}).appendTo(diffPanel);
1470
+ // $('<colgroup><col width="50"><col width="50%"><col width="50"><col width="50%"></colgroup>').appendTo(codeTable);
1471
+ // var codeBody = $('<tbody>').appendTo(codeTable);
1472
+ // var diffSummary = diffText(textA||"",textB||"");
1473
+ // var aIndex = 0;
1474
+ // var bIndex = 0;
1475
+ // var diffLength = Math.max(diffSummary.a.length, diffSummary.b.length);
1476
+
1477
+ // var diffLines = [];
1478
+ // var diffBlocks = [];
1479
+ // var currentBlock;
1480
+ // var blockLength = 0;
1481
+ // var blockType = 0;
1482
+
1483
+ // for (var i=0;i<diffLength;i++) {
1484
+ // var diffLine = diffSummary[i];
1485
+ // var Adiff = (aIndex < diffSummary.a.length)?diffSummary.a[aIndex]:{type:2,line:""};
1486
+ // var Bdiff = (bIndex < diffSummary.b.length)?diffSummary.b[bIndex]:{type:2,line:""};
1487
+ // if (Adiff.type === 0 && Bdiff.type !== 0) {
1488
+ // Adiff = {type:2,line:""};
1489
+ // bIndex++;
1490
+ // } else if (Bdiff.type === 0 && Adiff.type !== 0) {
1491
+ // Bdiff = {type:2,line:""};
1492
+ // aIndex++;
1493
+ // } else {
1494
+ // aIndex++;
1495
+ // bIndex++;
1496
+ // }
1497
+ // diffLines.push({
1498
+ // a: Adiff,
1499
+ // b: Bdiff
1500
+ // });
1501
+ // if (currentBlock === undefined) {
1502
+ // currentBlock = {start:i,end:i};
1503
+ // blockLength = 0;
1504
+ // blockType = (Adiff.type === 0 && Bdiff.type === 0)?0:1;
1505
+ // } else {
1506
+ // if (Adiff.type === 0 && Bdiff.type === 0) {
1507
+ // // Unchanged line
1508
+ // if (blockType === 0) {
1509
+ // // still unchanged - extend the block
1510
+ // currentBlock.end = i;
1511
+ // blockLength++;
1512
+ // } else if (blockType === 1) {
1513
+ // // end of a change
1514
+ // currentBlock.end = i;
1515
+ // blockType = 2;
1516
+ // blockLength = 0;
1517
+ // } else if (blockType === 2) {
1518
+ // // post-change unchanged
1519
+ // currentBlock.end = i;
1520
+ // blockLength++;
1521
+ // if (blockLength === 8) {
1522
+ // currentBlock.end -= 5; // rollback the end
1523
+ // diffBlocks.push(currentBlock);
1524
+ // currentBlock = {start:i-5,end:i-5};
1525
+ // blockType = 0;
1526
+ // blockLength = 0;
1527
+ // }
1528
+ // }
1529
+ // } else {
1530
+ // // in a change
1531
+ // currentBlock.end = i;
1532
+ // blockLength++;
1533
+ // if (blockType === 0) {
1534
+ // if (currentBlock.end > 3) {
1535
+ // currentBlock.end -= 3;
1536
+ // currentBlock.empty = true;
1537
+ // diffBlocks.push(currentBlock);
1538
+ // currentBlock = {start:i-3,end:i-3};
1539
+ // }
1540
+ // blockType = 1;
1541
+ // } else if (blockType === 2) {
1542
+ // // we were in unchanged, but hit a change again
1543
+ // blockType = 1;
1544
+ // }
1545
+ // }
1546
+ // }
1547
+ // }
1548
+ // if (blockType === 0) {
1549
+ // currentBlock.empty = true;
1550
+ // }
1551
+ // currentBlock.end = diffLength;
1552
+ // diffBlocks.push(currentBlock);
1553
+ // // console.table(diffBlocks);
1554
+ // var diffRow;
1555
+ // for (var b = 0; b<diffBlocks.length; b++) {
1556
+ // currentBlock = diffBlocks[b];
1557
+ // if (currentBlock.empty) {
1558
+ // diffRow = createExpandLine(currentBlock.start,currentBlock.end,diffLines).appendTo(codeBody);
1559
+ // } else {
1560
+ // for (var i=currentBlock.start;i<currentBlock.end;i++) {
1561
+ // var row = createDiffLine(diffLines[i]).appendTo(codeBody);
1562
+ // if (i === currentBlock.start) {
1563
+ // row.addClass("start-block");
1564
+ // } else if (i === currentBlock.end-1) {
1565
+ // row.addClass("end-block");
1566
+ // }
1567
+ // }
1568
+ // }
1569
+ // }
1570
+
1571
+ // },
1572
+ // close: function() {
1573
+ // diffVisible = false;
1574
+
1575
+ // },
1576
+ // show: function() {
1577
+
1578
+ // }
1579
+ // }
1580
+ // RED.tray.show(trayOptions);
1581
+ // }
1582
+
1583
+ // function createExpandLine(start,end,diffLines) {
1584
+ // diffRow = $('<tr class="node-text-diff-header node-text-diff-expand">');
1585
+ // var content = $('<td colspan="4"> <i class="fa fa-arrows-v"></i> </td>').appendTo(diffRow);
1586
+ // var label = $('<span></span>').appendTo(content);
1587
+ // if (end < diffLines.length-1) {
1588
+ // label.text("@@ -"+(diffLines[end-1].a.i+1)+" +"+(diffLines[end-1].b.i+1));
1589
+ // }
1590
+ // diffRow.click(function(evt) {
1591
+ // // console.log(start,end,diffLines.length);
1592
+ // if (end - start > 20) {
1593
+ // var startPos = $(this).offset();
1594
+ // // console.log(startPos);
1595
+ // if (start > 0) {
1596
+ // for (var i=start;i<start+10;i++) {
1597
+ // createDiffLine(diffLines[i]).addClass("unchanged").insertBefore($(this));
1598
+ // }
1599
+ // start += 10;
1600
+ // }
1601
+ // if (end < diffLines.length-1) {
1602
+ // for (var i=end-1;i>end-11;i--) {
1603
+ // createDiffLine(diffLines[i]).addClass("unchanged").insertAfter($(this));
1604
+ // }
1605
+ // end -= 10;
1606
+ // }
1607
+ // if (end < diffLines.length-1) {
1608
+ // label.text("@@ -"+(diffLines[end-1].a.i+1)+" +"+(diffLines[end-1].b.i+1));
1609
+ // }
1610
+ // var endPos = $(this).offset();
1611
+ // var delta = endPos.top - startPos.top;
1612
+ // $(".node-text-diff").scrollTop($(".node-text-diff").scrollTop() + delta);
1613
+ // } else {
1614
+ // for (var i=start;i<end;i++) {
1615
+ // createDiffLine(diffLines[i]).addClass("unchanged").insertBefore($(this));
1616
+ // }
1617
+ // $(this).remove();
1618
+ // }
1619
+ // });
1620
+ // return diffRow;
1621
+ // }
1622
+
1623
+ // function createDiffLine(diffLine) {
1624
+ // var diffRow = $('<tr>');
1625
+ // var Adiff = diffLine.a;
1626
+ // var Bdiff = diffLine.b;
1627
+ // //console.log(diffLine);
1628
+ // var cellNo = $('<td class="lineno">').text(Adiff.type === 2?"":Adiff.i).appendTo(diffRow);
1629
+ // var cellLine = $('<td class="linetext">').text(Adiff.line).appendTo(diffRow);
1630
+ // if (Adiff.type === 2) {
1631
+ // cellNo.addClass('blank');
1632
+ // cellLine.addClass('blank');
1633
+ // } else if (Adiff.type === 4) {
1634
+ // cellNo.addClass('added');
1635
+ // cellLine.addClass('added');
1636
+ // } else if (Adiff.type === 1) {
1637
+ // cellNo.addClass('removed');
1638
+ // cellLine.addClass('removed');
1639
+ // }
1640
+ // cellNo = $('<td class="lineno">').text(Bdiff.type === 2?"":Bdiff.i).appendTo(diffRow);
1641
+ // cellLine = $('<td class="linetext">').text(Bdiff.line).appendTo(diffRow);
1642
+ // if (Bdiff.type === 2) {
1643
+ // cellNo.addClass('blank');
1644
+ // cellLine.addClass('blank');
1645
+ // } else if (Bdiff.type === 4) {
1646
+ // cellNo.addClass('added');
1647
+ // cellLine.addClass('added');
1648
+ // } else if (Bdiff.type === 1) {
1649
+ // cellNo.addClass('removed');
1650
+ // cellLine.addClass('removed');
1651
+ // }
1652
+ // return diffRow;
1653
+ // }
1654
+
1655
+ // function diffText(string1, string2,ignoreWhitespace) {
1656
+ // var lines1 = string1.split(/\r?\n/);
1657
+ // var lines2 = string2.split(/\r?\n/);
1658
+ // var i = lines1.length;
1659
+ // var j = lines2.length;
1660
+ // var k;
1661
+ // var m;
1662
+ // var diffSummary = {a:[],b:[]};
1663
+ // var diffMap = [];
1664
+ // for (k = 0; k < i + 1; k++) {
1665
+ // diffMap[k] = [];
1666
+ // for (m = 0; m < j + 1; m++) {
1667
+ // diffMap[k][m] = 0;
1668
+ // }
1669
+ // }
1670
+ // var c = 0;
1671
+ // for (k = i - 1; k >= 0; k--) {
1672
+ // for (m = j - 1; m >=0; m--) {
1673
+ // c++;
1674
+ // if (compareLines(lines1[k],lines2[m],ignoreWhitespace) !== 1) {
1675
+ // diffMap[k][m] = diffMap[k+1][m+1]+1;
1676
+ // } else {
1677
+ // diffMap[k][m] = Math.max(diffMap[(k + 1)][m], diffMap[k][(m + 1)]);
1678
+ // }
1679
+ // }
1680
+ // }
1681
+ // //console.log(c);
1682
+ // k = 0;
1683
+ // m = 0;
1684
+
1685
+ // while ((k < i) && (m < j)) {
1686
+ // var n = compareLines(lines1[k],lines2[m],ignoreWhitespace);
1687
+ // if (n !== 1) {
1688
+ // var d = 0;
1689
+ // if (n===0) {
1690
+ // d = 0;
1691
+ // } else if (n==2) {
1692
+ // d = 3;
1693
+ // }
1694
+ // diffSummary.a.push({i:k+1,j:m+1,line:lines1[k],type:d});
1695
+ // diffSummary.b.push({i:m+1,j:k+1,line:lines2[m],type:d});
1696
+ // k++;
1697
+ // m++;
1698
+ // } else if (diffMap[(k + 1)][m] >= diffMap[k][(m + 1)]) {
1699
+ // diffSummary.a.push({i:k+1,line:lines1[k],type:1});
1700
+ // k++;
1701
+ // } else {
1702
+ // diffSummary.b.push({i:m+1,line:lines2[m],type:4});
1703
+ // m++;
1704
+ // }
1705
+ // }
1706
+ // while ((k < i) || (m < j)) {
1707
+ // if (k == i) {
1708
+ // diffSummary.b.push({i:m+1,line:lines2[m],type:4});
1709
+ // m++;
1710
+ // } else if (m == j) {
1711
+ // diffSummary.a.push({i:k+1,line:lines1[k],type:1});
1712
+ // k++;
1713
+ // }
1714
+ // }
1715
+ // return diffSummary;
1716
+ // }
1717
+
1718
+ // function compareLines(string1, string2, ignoreWhitespace) {
1719
+ // if (ignoreWhitespace) {
1720
+ // if (string1 === string2) {
1721
+ // return 0;
1722
+ // }
1723
+ // return string1.trim() === string2.trime() ? 2 : 1;
1724
+ // }
1725
+ // return string1 === string2 ? 0 : 1;
1726
+ // }
1727
+
1728
+ // function createUnifiedDiffTable(files,commitOptions) {
1729
+ // var diffPanel = $('<div></div>');
1730
+ // files.forEach(function(file) {
1731
+ // var hunks = file.hunks;
1732
+ // var isBinary = file.binary;
1733
+ // var codeTable = $("<table>",{class:"node-text-diff-content"}).appendTo(diffPanel);
1734
+ // $('<colgroup><col width="50"><col width="50"><col width="100%"></colgroup>').appendTo(codeTable);
1735
+ // var codeBody = $('<tbody>').appendTo(codeTable);
1736
+
1737
+ // var diffFileRow = $('<tr class="node-text-diff-file-header">').appendTo(codeBody);
1738
+ // var content = $('<td colspan="3"></td>').appendTo(diffFileRow);
1739
+
1740
+ // var chevron = $('<i class="node-diff-chevron fa fa-angle-down"></i>').appendTo(content);
1741
+ // diffFileRow.click(function(e) {
1742
+ // diffFileRow.toggleClass("collapsed");
1743
+ // var isCollapsed = diffFileRow.hasClass("collapsed");
1744
+ // diffFileRow.nextUntil(".node-text-diff-file-header").toggle(!isCollapsed);
1745
+ // })
1746
+ // var label = $('<span class="filename"></span>').text(file.file).appendTo(content);
1747
+
1748
+ // var conflictHeader;
1749
+ // var unresolvedConflicts = 0;
1750
+ // var resolvedConflicts = 0;
1751
+ // var conflictResolutions = {};
1752
+ // if (commitOptions.project.files && commitOptions.project.files.flow === file.file) {
1753
+ // if (commitOptions.unmerged) {
1754
+ // $('<span style="float: right;"><span id="node-diff-toolbar-resolved-conflicts"></span></span>').appendTo(content);
1755
+ // }
1756
+ // var diffRow = $('<tr class="node-text-diff-header">').appendTo(codeBody);
1757
+ // var flowDiffContent = $('<td class="flow-diff" colspan="3"></td>').appendTo(diffRow);
1758
+
1759
+ // var projectName = commitOptions.project.name;
1760
+ // var filename = commitOptions.project.files.flow;
1761
+ // var commonVersionUrl = "projects/"+projectName+"/files/"+commitOptions.commonRev+"/"+filename;
1762
+ // var oldVersionUrl = "projects/"+projectName+"/files/"+commitOptions.oldRev+"/"+filename;
1763
+ // var newVersionUrl = "projects/"+projectName+"/files/"+commitOptions.newRev+"/"+filename;
1764
+ // var promises = [$.Deferred(),$.Deferred(),$.Deferred()];
1765
+ // if (commitOptions.commonRev) {
1766
+ // var commonVersionUrl = "projects/"+projectName+"/files/"+commitOptions.commonRev+"/"+filename;
1767
+ // $.ajax({dataType: "json",url: commonVersionUrl}).then(function(data) { promises[0].resolve(data); }).fail(function() { promises[0].resolve(null);})
1768
+ // } else {
1769
+ // promises[0].resolve(null);
1770
+ // }
1771
+
1772
+ // $.ajax({dataType: "json",url: oldVersionUrl}).then(function(data) { promises[1].resolve(data); }).fail(function() { promises[1].resolve({content:"[]"});})
1773
+ // $.ajax({dataType: "json",url: newVersionUrl}).then(function(data) { promises[2].resolve(data); }).fail(function() { promises[2].resolve({content:"[]"});})
1774
+ // $.when.apply($,promises).always(function(commonVersion, oldVersion,newVersion) {
1775
+ // var commonFlow;
1776
+ // var oldFlow;
1777
+ // var newFlow;
1778
+ // if (commonVersion) {
1779
+ // try {
1780
+ // commonFlow = JSON.parse(commonVersion.content||"[]");
1781
+ // } catch(err) {
1782
+ // console.log(RED._("diff.commonVersionError"),commonVersionUrl);
1783
+ // console.log(err);
1784
+ // return;
1785
+ // }
1786
+ // }
1787
+ // try {
1788
+ // oldFlow = JSON.parse(oldVersion.content||"[]");
1789
+ // } catch(err) {
1790
+ // console.log(RED._("diff.oldVersionError"),oldVersionUrl);
1791
+ // console.log(err);
1792
+ // return;
1793
+ // }
1794
+ // if (!commonFlow) {
1795
+ // commonFlow = oldFlow;
1796
+ // }
1797
+ // try {
1798
+ // newFlow = JSON.parse(newVersion.content||"[]");
1799
+ // } catch(err) {
1800
+ // console.log(RED._("diff.newVersionError"),newFlow);
1801
+ // console.log(err);
1802
+ // return;
1803
+ // }
1804
+ // var localDiff = generateDiff(commonFlow,oldFlow);
1805
+ // var remoteDiff = generateDiff(commonFlow,newFlow);
1806
+ // commitOptions.currentDiff = resolveDiffs(localDiff,remoteDiff);
1807
+ // var diffTable = buildDiffPanel(flowDiffContent,commitOptions.currentDiff,{
1808
+ // title: filename,
1809
+ // mode: commitOptions.commonRev?'merge':'view',
1810
+ // oldRevTitle: commitOptions.oldRevTitle,
1811
+ // newRevTitle: commitOptions.newRevTitle
1812
+ // });
1813
+ // diffTable.list.hide();
1814
+ // refreshConflictHeader(commitOptions.currentDiff);
1815
+ // setTimeout(function() {
1816
+ // diffTable.finish();
1817
+ // diffTable.list.show();
1818
+ // },300);
1819
+ // // var flowDiffRow = $("<tr>").insertAfter(diffRow);
1820
+ // // var content = $('<td colspan="3"></td>').appendTo(flowDiffRow);
1821
+ // // currentDiff = diff;
1822
+ // // var diffTable = buildDiffPanel(content,diff,{mode:"view"}).finish();
1823
+ // });
1824
+
1825
+
1826
+
1827
+ // } else
1828
+
1829
+ // if (isBinary) {
1830
+ // var diffBinaryRow = $('<tr class="node-text-diff-header">').appendTo(codeBody);
1831
+ // var binaryContent = $('<td colspan="3"></td>').appendTo(diffBinaryRow);
1832
+ // $('<span></span>').text(RED._("diff.noBinaryFileShowed")).appendTo(binaryContent);
1833
+
1834
+ // } else {
1835
+ // if (commitOptions.unmerged) {
1836
+ // conflictHeader = $('<span style="float: right;">'+RED._("diff.conflictHeader",{resolved:resolvedConflicts, unresolved:unresolvedConflicts})+'</span>').appendTo(content);
1837
+ // }
1838
+ // hunks.forEach(function(hunk) {
1839
+ // var diffRow = $('<tr class="node-text-diff-header">').appendTo(codeBody);
1840
+ // var content = $('<td colspan="3"></td>').appendTo(diffRow);
1841
+ // var label = $('<span></span>').text(hunk.header).appendTo(content);
1842
+ // var isConflict = hunk.conflict;
1843
+ // var localLine = hunk.localStartLine;
1844
+ // var remoteLine = hunk.remoteStartLine;
1845
+ // if (isConflict) {
1846
+ // unresolvedConflicts++;
1847
+ // }
1848
+
1849
+ // hunk.lines.forEach(function(lineText,lineNumber) {
1850
+ // // if (lineText[0] === '\\' || lineText === "") {
1851
+ // // // Comment line - bail out of this hunk
1852
+ // // break;
1853
+ // // }
1854
+
1855
+ // var actualLineNumber = hunk.diffStart + lineNumber;
1856
+ // var isMergeHeader = isConflict && /^\+\+(<<<<<<<|=======$|>>>>>>>)/.test(lineText);
1857
+ // var diffRow = $('<tr>').appendTo(codeBody);
1858
+ // var localLineNo = $('<td class="lineno">').appendTo(diffRow);
1859
+ // var remoteLineNo;
1860
+ // if (!isMergeHeader) {
1861
+ // remoteLineNo = $('<td class="lineno">').appendTo(diffRow);
1862
+ // } else {
1863
+ // localLineNo.attr('colspan',2);
1864
+ // }
1865
+ // var line = $('<td class="linetext">').appendTo(diffRow);
1866
+ // var prefixStart = 0;
1867
+ // var prefixEnd = 1;
1868
+ // if (isConflict) {
1869
+ // prefixEnd = 2;
1870
+ // }
1871
+ // if (!isMergeHeader) {
1872
+ // var changeMarker = lineText[0];
1873
+ // if (isConflict && !commitOptions.unmerged && changeMarker === ' ') {
1874
+ // changeMarker = lineText[1];
1875
+ // }
1876
+ // $('<span class="prefix">').text(changeMarker).appendTo(line);
1877
+ // var handledlLine = false;
1878
+ // if (isConflict && commitOptions.unmerged) {
1879
+ // $('<span class="prefix">').text(lineText[1]).appendTo(line);
1880
+ // if (lineText[0] === '+') {
1881
+ // localLineNo.text(localLine++);
1882
+ // handledlLine = true;
1883
+ // }
1884
+ // if (lineText[1] === '+') {
1885
+ // remoteLineNo.text(remoteLine++);
1886
+ // handledlLine = true;
1887
+ // }
1888
+ // } else {
1889
+ // if (lineText[0] === '+' || (isConflict && lineText[1] === '+')) {
1890
+ // localLineNo.addClass("added");
1891
+ // remoteLineNo.addClass("added");
1892
+ // line.addClass("added");
1893
+ // remoteLineNo.text(remoteLine++);
1894
+ // handledlLine = true;
1895
+ // } else if (lineText[0] === '-' || (isConflict && lineText[1] === '-')) {
1896
+ // localLineNo.addClass("removed");
1897
+ // remoteLineNo.addClass("removed");
1898
+ // line.addClass("removed");
1899
+ // localLineNo.text(localLine++);
1900
+ // handledlLine = true;
1901
+ // }
1902
+ // }
1903
+ // if (!handledlLine) {
1904
+ // line.addClass("unchanged");
1905
+ // if (localLine > 0 && lineText[0] !== '\\' && lineText !== "") {
1906
+ // localLineNo.text(localLine++);
1907
+ // }
1908
+ // if (remoteLine > 0 && lineText[0] !== '\\' && lineText !== "") {
1909
+ // remoteLineNo.text(remoteLine++);
1910
+ // }
1911
+ // }
1912
+ // $('<span>').text(lineText.substring(prefixEnd)).appendTo(line);
1913
+ // } else {
1914
+ // diffRow.addClass("mergeHeader");
1915
+ // var isSeparator = /^\+\+=======$/.test(lineText);
1916
+ // if (!isSeparator) {
1917
+ // var isOurs = /^..<<<<<<</.test(lineText);
1918
+ // if (isOurs) {
1919
+ // $('<span>').text("<<<<<<< Local Changes").appendTo(line);
1920
+ // hunk.localChangeStart = actualLineNumber;
1921
+ // } else {
1922
+ // hunk.remoteChangeEnd = actualLineNumber;
1923
+ // $('<span>').text(">>>>>>> Remote Changes").appendTo(line);
1924
+
1925
+ // }
1926
+ // diffRow.addClass("mergeHeader-"+(isOurs?"ours":"theirs"));
1927
+ // $('<button class="editor-button editor-button-small" style="float: right; margin-right: 20px;"><i class="fa fa-angle-double-'+(isOurs?"down":"up")+'"></i> use '+(isOurs?"local":"remote")+' changes</button>')
1928
+ // .appendTo(line)
1929
+ // .click(function(evt) {
1930
+ // evt.preventDefault();
1931
+ // resolvedConflicts++;
1932
+ // var addedRows;
1933
+ // var midRow;
1934
+ // if (isOurs) {
1935
+ // addedRows = diffRow.nextUntil(".mergeHeader-separator");
1936
+ // midRow = addedRows.last().next();
1937
+ // midRow.nextUntil(".mergeHeader").remove();
1938
+ // midRow.next().remove();
1939
+ // } else {
1940
+ // addedRows = diffRow.prevUntil(".mergeHeader-separator");
1941
+ // midRow = addedRows.last().prev();
1942
+ // midRow.prevUntil(".mergeHeader").remove();
1943
+ // midRow.prev().remove();
1944
+ // }
1945
+ // midRow.remove();
1946
+ // diffRow.remove();
1947
+ // addedRows.find(".linetext").addClass('added');
1948
+ // conflictHeader.empty();
1949
+ // $('<span>'+RED._("diff.conflictHeader",{resolved:resolvedConflicts, unresolved:unresolvedConflicts})+'</span>').appendTo(conflictHeader);
1950
+
1951
+ // conflictResolutions[file.file] = conflictResolutions[file.file] || {};
1952
+ // conflictResolutions[file.file][hunk.localChangeStart] = {
1953
+ // changeStart: hunk.localChangeStart,
1954
+ // separator: hunk.changeSeparator,
1955
+ // changeEnd: hunk.remoteChangeEnd,
1956
+ // selection: isOurs?"A":"B"
1957
+ // }
1958
+ // if (commitOptions.resolveConflict) {
1959
+ // commitOptions.resolveConflict({
1960
+ // conflicts: unresolvedConflicts,
1961
+ // resolved: resolvedConflicts,
1962
+ // resolutions: conflictResolutions
1963
+ // });
1964
+ // }
1965
+ // })
1966
+ // } else {
1967
+ // hunk.changeSeparator = actualLineNumber;
1968
+ // diffRow.addClass("mergeHeader-separator");
1969
+ // }
1970
+ // }
1971
+ // });
1972
+ // });
1973
+ // }
1974
+ // });
1975
+ // return diffPanel;
1976
+ // }
1977
+
1978
+ // function showCommitDiff(options) {
1979
+ // var commit = parseCommitDiff(options.commit);
1980
+ // var trayOptions = {
1981
+ // title: RED._("diff.viewCommitDiff"),
1982
+ // width: Infinity,
1983
+ // overlay: true,
1984
+ // buttons: [
1985
+ // {
1986
+ // text: RED._("common.label.close"),
1987
+ // click: function() {
1988
+ // RED.tray.close();
1989
+ // }
1990
+ // }
1991
+ // ],
1992
+ // resize: function(dimensions) {
1993
+ // // trayWidth = dimensions.width;
1994
+ // },
1995
+ // open: function(tray) {
1996
+ // var trayBody = tray.find('.editor-tray-body');
1997
+ // var diffPanel = $('<div class="node-text-diff"></div>').appendTo(trayBody);
1998
+
1999
+ // var codeTable = $("<table>",{class:"node-text-diff-content"}).appendTo(diffPanel);
2000
+ // $('<colgroup><col width="50"><col width="50"><col width="100%"></colgroup>').appendTo(codeTable);
2001
+ // var codeBody = $('<tbody>').appendTo(codeTable);
2002
+
2003
+ // var diffRow = $('<tr class="node-text-diff-commit-header">').appendTo(codeBody);
2004
+ // var content = $('<td colspan="3"></td>').appendTo(diffRow);
2005
+
2006
+ // $("<h3>").text(commit.title).appendTo(content);
2007
+ // $('<div class="commit-body"></div>').text(commit.comment).appendTo(content);
2008
+ // var summary = $('<div class="commit-summary"></div>').appendTo(content);
2009
+ // $('<div style="float: right">').text("Commit "+commit.sha).appendTo(summary);
2010
+ // $('<div>').text((commit.authorName||commit.author)+" - "+options.date).appendTo(summary);
2011
+
2012
+ // if (commit.files) {
2013
+ // createUnifiedDiffTable(commit.files,options).appendTo(diffPanel);
2014
+ // }
2015
+
2016
+
2017
+ // },
2018
+ // close: function() {
2019
+ // diffVisible = false;
2020
+ // },
2021
+ // show: function() {
2022
+
2023
+ // }
2024
+ // }
2025
+ // RED.tray.show(trayOptions);
2026
+ // }
2027
+ // function showUnifiedDiff(options) {
2028
+ // var diff = options.diff;
2029
+ // var title = options.title;
2030
+ // var files = parseUnifiedDiff(diff);
2031
+
2032
+ // var currentResolution;
2033
+ // if (options.unmerged) {
2034
+ // options.resolveConflict = function(results) {
2035
+ // currentResolution = results;
2036
+ // if (results.conflicts === results.resolved) {
2037
+ // $("#node-diff-view-resolve-diff").removeClass('disabled');
2038
+ // }
2039
+ // }
2040
+ // }
2041
+
2042
+ // var trayOptions = {
2043
+ // title: title|| RED._("diff.compareChanges"),
2044
+ // width: Infinity,
2045
+ // overlay: true,
2046
+ // buttons: [
2047
+ // {
2048
+ // text: RED._((options.unmerged)?"common.label.cancel":"common.label.close"),
2049
+ // click: function() {
2050
+ // if (options.oncancel) {
2051
+ // options.oncancel();
2052
+ // }
2053
+ // RED.tray.close();
2054
+ // }
2055
+ // }
2056
+ // ],
2057
+ // resize: function(dimensions) {
2058
+ // // trayWidth = dimensions.width;
2059
+ // },
2060
+ // open: function(tray) {
2061
+ // var trayBody = tray.find('.editor-tray-body');
2062
+ // var diffPanel = $('<div class="node-text-diff"></div>').appendTo(trayBody);
2063
+ // createUnifiedDiffTable(files,options).appendTo(diffPanel);
2064
+ // },
2065
+ // close: function() {
2066
+ // diffVisible = false;
2067
+ // },
2068
+ // show: function() {
2069
+
2070
+ // }
2071
+ // }
2072
+ // if (options.unmerged) {
2073
+ // trayOptions.buttons.push(
2074
+ // {
2075
+ // id: "node-diff-view-resolve-diff",
2076
+ // text: RED._("diff.saveConflict"),
2077
+ // class: "primary disabled",
2078
+ // click: function() {
2079
+ // if (!$("#node-diff-view-resolve-diff").hasClass('disabled')) {
2080
+ // if (options.currentDiff) {
2081
+ // // This is a flow file. Need to apply the diff
2082
+ // // and generate the new flow.
2083
+ // var result = applyDiff(options.currentDiff);
2084
+ // currentResolution = {
2085
+ // resolutions:{}
2086
+ // };
2087
+ // currentResolution.resolutions[options.project.files.flow] = JSON.stringify(result.config,"",4);
2088
+ // }
2089
+ // if (options.onresolve) {
2090
+ // options.onresolve(currentResolution);
2091
+ // }
2092
+ // RED.tray.close();
2093
+ // }
2094
+ // }
2095
+ // }
2096
+ // );
2097
+ // }
2098
+ // RED.tray.show(trayOptions);
2099
+ // }
2100
+
2101
+ // function parseCommitDiff(diff) {
2102
+ // var result = {};
2103
+ // var lines = diff.split("\n");
2104
+ // var comment = [];
2105
+ // for (var i=0;i<lines.length;i++) {
2106
+ // if (/^commit /.test(lines[i])) {
2107
+ // result.sha = lines[i].substring(7);
2108
+ // } else if (/^Author: /.test(lines[i])) {
2109
+ // result.author = lines[i].substring(8);
2110
+ // var m = /^(.*) <(.*)>$/.exec(result.author);
2111
+ // if (m) {
2112
+ // result.authorName = m[1];
2113
+ // result.authorEmail = m[2];
2114
+ // }
2115
+ // } else if (/^Date: /.test(lines[i])) {
2116
+ // result.date = lines[i].substring(8);
2117
+ // } else if (/^ /.test(lines[i])) {
2118
+ // if (!result.title) {
2119
+ // result.title = lines[i].substring(4);
2120
+ // } else {
2121
+ // if (lines[i].length !== 4 || comment.length > 0) {
2122
+ // comment.push(lines[i].substring(4));
2123
+ // }
2124
+ // }
2125
+ // } else if (/^diff /.test(lines[i])) {
2126
+ // result.files = parseUnifiedDiff(lines.slice(i));
2127
+ // break;
2128
+ // }
2129
+ // }
2130
+ // result.comment = comment.join("\n");
2131
+ // return result;
2132
+ // }
2133
+ // function parseUnifiedDiff(diff) {
2134
+ // var lines;
2135
+ // if (Array.isArray(diff)) {
2136
+ // lines = diff;
2137
+ // } else {
2138
+ // lines = diff.split("\n");
2139
+ // }
2140
+ // var diffHeader = /^diff (?:(?:--git a\/(.*) b\/(.*))|(?:--cc (.*)))$/;
2141
+ // var fileHeader = /^\+\+\+ b\/(.*)\t?/;
2142
+ // var binaryFile = /^Binary files /;
2143
+ // var hunkHeader = /^@@ -((\d+)(,(\d+))?) \+((\d+)(,(\d+))?) @@ ?(.*)$/;
2144
+ // var conflictHunkHeader = /^@+ -((\d+)(,(\d+))?) -((\d+)(,(\d+))?) \+((\d+)(,(\d+))?) @+/;
2145
+ // var files = [];
2146
+ // var currentFile;
2147
+ // var hunks = [];
2148
+ // var currentHunk;
2149
+ // for (var i=0;i<lines.length;i++) {
2150
+ // var line = lines[i];
2151
+ // var diffLine = diffHeader.exec(line);
2152
+ // if (diffLine) {
2153
+ // if (currentHunk) {
2154
+ // currentFile.hunks.push(currentHunk);
2155
+ // files.push(currentFile);
2156
+ // }
2157
+ // currentHunk = null;
2158
+ // currentFile = {
2159
+ // file: diffLine[1]||diffLine[3],
2160
+ // hunks: []
2161
+ // }
2162
+ // } else if (binaryFile.test(line)) {
2163
+ // if (currentFile) {
2164
+ // currentFile.binary = true;
2165
+ // }
2166
+ // } else {
2167
+ // var fileLine = fileHeader.exec(line);
2168
+ // if (fileLine) {
2169
+ // currentFile.file = fileLine[1];
2170
+ // } else {
2171
+ // var hunkLine = hunkHeader.exec(line);
2172
+ // if (hunkLine) {
2173
+ // if (currentHunk) {
2174
+ // currentFile.hunks.push(currentHunk);
2175
+ // }
2176
+ // currentHunk = {
2177
+ // header: line,
2178
+ // localStartLine: hunkLine[2],
2179
+ // localLength: hunkLine[4]||1,
2180
+ // remoteStartLine: hunkLine[6],
2181
+ // remoteLength: hunkLine[8]||1,
2182
+ // lines: [],
2183
+ // conflict: false
2184
+ // }
2185
+ // continue;
2186
+ // }
2187
+ // hunkLine = conflictHunkHeader.exec(line);
2188
+ // if (hunkLine) {
2189
+ // if (currentHunk) {
2190
+ // currentFile.hunks.push(currentHunk);
2191
+ // }
2192
+ // currentHunk = {
2193
+ // header: line,
2194
+ // localStartLine: hunkLine[2],
2195
+ // localLength: hunkLine[4]||1,
2196
+ // remoteStartLine: hunkLine[6],
2197
+ // remoteLength: hunkLine[8]||1,
2198
+ // diffStart: parseInt(hunkLine[10]),
2199
+ // lines: [],
2200
+ // conflict: true
2201
+ // }
2202
+ // continue;
2203
+ // }
2204
+ // if (currentHunk) {
2205
+ // currentHunk.lines.push(line);
2206
+ // }
2207
+ // }
2208
+ // }
2209
+ // }
2210
+ // if (currentHunk) {
2211
+ // currentFile.hunks.push(currentHunk);
2212
+ // }
2213
+ // files.push(currentFile);
2214
+ // return files;
2215
+ // }
2216
+
2217
+ // return {
2218
+ // init: init,
2219
+ // getRemoteDiff: getRemoteDiff,
2220
+ // showRemoteDiff: showRemoteDiff,
2221
+ // showUnifiedDiff: showUnifiedDiff,
2222
+ // showCommitDiff: showCommitDiff,
2223
+ // mergeDiff: mergeDiff
2224
+ // }
2225
+ // })();