@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,829 @@
1
+ (function($) {
2
+ var contextParse = function(v) {
3
+ var parts = RED.utils.parseContextKey(v);
4
+ return {
5
+ option: parts.store,
6
+ value: parts.key
7
+ };
8
+ };
9
+ var contextExport = function(v, opt) {
10
+ if (!opt) {
11
+ return v;
12
+ }
13
+ var store = typeof opt === 'string' ? opt : opt.value;
14
+ if (store !== RED.settings.context.default) {
15
+ return '#:(' + store + ')::' + v;
16
+ } else {
17
+ return v;
18
+ }
19
+ };
20
+ var allOptions = {
21
+ msg: {
22
+ value: 'msg',
23
+ label: 'msg.',
24
+ validate: RED.utils.validatePropertyExpression
25
+ },
26
+ flow: {
27
+ value: 'flow',
28
+ label: 'flow.',
29
+ hasValue: true,
30
+ options: [],
31
+ validate: RED.utils.validatePropertyExpression,
32
+ parse: contextParse,
33
+ export: contextExport
34
+ },
35
+ global: {
36
+ value: 'global',
37
+ label: 'global.',
38
+ hasValue: true,
39
+ options: [],
40
+ validate: RED.utils.validatePropertyExpression,
41
+ parse: contextParse,
42
+ export: contextExport
43
+ },
44
+ str: {
45
+ value: 'str',
46
+ label: 'string',
47
+ icon: 'red/images/typedInput/az.png'
48
+ },
49
+ num: {
50
+ value: 'num',
51
+ label: 'number',
52
+ icon: 'red/images/typedInput/09.png',
53
+ validate: /^[+-]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$/
54
+ },
55
+ bool: {
56
+ value: 'bool',
57
+ label: 'boolean',
58
+ icon: 'red/images/typedInput/bool.png',
59
+ options: ['true', 'false']
60
+ },
61
+ json: {
62
+ value: 'json',
63
+ label: 'JSON',
64
+ icon: 'red/images/typedInput/json.png',
65
+ validate: function(v) {
66
+ try {
67
+ JSON.parse(v);
68
+ return true;
69
+ } catch (e) {
70
+ return false;
71
+ }
72
+ },
73
+ expand: function() {
74
+ var that = this;
75
+ var value = this.value();
76
+ try {
77
+ value = JSON.stringify(JSON.parse(value), null, 4);
78
+ } catch (err) {}
79
+ RED.editor.editJSON({
80
+ value: value,
81
+ complete: function(v) {
82
+ var value = v;
83
+ try {
84
+ value = JSON.stringify(JSON.parse(v));
85
+ } catch (err) {}
86
+ that.value(value);
87
+ }
88
+ });
89
+ }
90
+ },
91
+ re: {
92
+ value: 're',
93
+ label: 'regular expression',
94
+ icon: 'red/images/typedInput/re.png'
95
+ },
96
+ date: { value: 'date', label: 'timestamp', hasValue: false },
97
+ jsonata: {
98
+ value: 'jsonata',
99
+ label: 'expression',
100
+ icon: 'red/images/typedInput/expr.png',
101
+ validate: function(v) {
102
+ try {
103
+ jsonata(v);
104
+ return true;
105
+ } catch (e) {
106
+ return false;
107
+ }
108
+ },
109
+ expand: function() {
110
+ var that = this;
111
+ RED.editor.editExpression({
112
+ value: this.value().replace(/\t/g, '\n'),
113
+ complete: function(v) {
114
+ that.value(v.replace(/\n/g, '\t'));
115
+ }
116
+ });
117
+ }
118
+ },
119
+ bin: {
120
+ value: 'bin',
121
+ label: 'buffer',
122
+ icon: 'red/images/typedInput/bin.png',
123
+ expand: function() {
124
+ var that = this;
125
+ RED.editor.editBuffer({
126
+ value: this.value(),
127
+ complete: function(v) {
128
+ that.value(v);
129
+ }
130
+ });
131
+ }
132
+ },
133
+ env: {
134
+ value: 'env',
135
+ label: 'env',
136
+ icon: 'red/images/typedInput/env.png'
137
+ },
138
+ camsg: { value: 'camsg', label: '$msg.' },
139
+ caflow: { value: 'caflow', label: '$flow.' },
140
+ caglobal: { value: 'caglobal', label: '$global.' },
141
+ caprops: { value: 'caprops', label: '$props.' },
142
+ caenv: { value: 'caenv', label: '$env.' },
143
+ cavars: { value: 'cavars', label: '$vars.' } //Based on the design (https://github.com/jteso/kumologica/issues/3#issuecomment-547248785)
144
+ };
145
+ var nlsd = false;
146
+
147
+ $.widget('nodered.typedInputLong', {
148
+ _create: function() {
149
+ try {
150
+ if (!nlsd && RED) {
151
+ for (var i in allOptions) {
152
+ if (allOptions.hasOwnProperty(i)) {
153
+ switch(i){
154
+ case 'str': allOptions[i].label = 'string'; break;
155
+ case 'num': allOptions[i].label = 'number'; break;
156
+ case 're': allOptions[i].label = 'regular expression'; break;
157
+ case 'bool': allOptions[i].label = 'boolean'; break;
158
+ case 'json': allOptions[i].label = 'JSON'; break;
159
+ case 'bin': allOptions[i].label = 'buffer'; break;
160
+ case 'date': allOptions[i].label = 'timestamp'; break;
161
+ case 'jsonata': allOptions[i].label = 'expression'; break;
162
+ case 'msg': allOptions[i].label = 'msg.'; break;
163
+ case 'flow': allOptions[i].label = 'flow.'; break;
164
+ case 'global': allOptions[i].label = 'global.'; break;
165
+ case 'camsg': allOptions[i].label = 'msg.'; break;
166
+ case 'caflow': allOptions[i].label = 'flow.'; break;
167
+ case 'caglobal': allOptions[i].label = 'global.'; break;
168
+ case 'caprops': allOptions[i].label = 'props.'; break;
169
+ case 'caenv': allOptions[i].label = 'env.'; break;
170
+ case 'cavars': allOptions[i].label = 'vars.'; break;
171
+ default: allOptions[i].label = i; break;
172
+ }
173
+ }
174
+ }
175
+ var contextStores = RED.settings.context.stores;
176
+ var contextOptions = contextStores.map(function(store) {
177
+ return {
178
+ value: store,
179
+ label: store,
180
+ icon:
181
+ '<i class="red-ui-typedInput-icon fa fa-database" style="color: #' +
182
+ (store === 'memory' ? 'ddd' : '777') +
183
+ '"></i>'
184
+ };
185
+ });
186
+ if (contextOptions.length < 2) {
187
+ allOptions.flow.options = [];
188
+ allOptions.global.options = [];
189
+ } else {
190
+ allOptions.flow.options = contextOptions;
191
+ allOptions.global.options = contextOptions;
192
+ }
193
+ }
194
+ nlsd = true;
195
+ var that = this;
196
+
197
+ this.disarmClick = false;
198
+ this.input = $('<input type="text"></input>');
199
+ this.input.insertAfter(this.element);
200
+ this.input.val(this.element.val());
201
+ this.element.addClass('red-ui-typedInput');
202
+ this.uiWidth = this.element.outerWidth();
203
+ this.elementDiv = this.input
204
+ .wrap('<div>')
205
+ .parent()
206
+ .addClass('red-ui-typedInput-input');
207
+ this.uiSelect = this.elementDiv.wrap('<div>').parent();
208
+ var attrStyle = this.element.attr('style');
209
+ var m;
210
+ if (
211
+ (m = /width\s*:\s*(calc\s*\(.*\)|\d+(%|px))/i.exec(attrStyle)) !==
212
+ null
213
+ ) {
214
+ this.input.css('width', '100%');
215
+ this.uiSelect.width(m[1]);
216
+ this.uiWidth = null;
217
+ } else {
218
+ this.uiSelect.width(this.uiWidth);
219
+ }
220
+ ['Right', 'Left'].forEach(function(d) {
221
+ var m = that.element.css('margin' + d);
222
+ that.uiSelect.css('margin' + d, m);
223
+ that.input.css('margin' + d, 0);
224
+ });
225
+
226
+ ['type', 'placeholder', 'data-i18n'].forEach(function(d) {
227
+ var m = that.element.attr(d);
228
+ that.input.attr(d, m);
229
+ });
230
+
231
+ this.uiSelect.addClass('red-ui-typedInput-container-long');
232
+
233
+ this.element.attr('type', 'hidden');
234
+
235
+ this.options.types = this.options.types || Object.keys(allOptions);
236
+
237
+ this.selectTrigger = $('<button tabindex="0"></button>').prependTo(
238
+ this.uiSelect
239
+ );
240
+ $('<i class="red-ui-typedInput-icon fa fa-sort-desc"></i>')
241
+ .toggle(this.options.types.length > 1)
242
+ .appendTo(this.selectTrigger);
243
+
244
+ this.selectLabel = $(
245
+ '<span class="red-ui-typedInput-type-label"></span>'
246
+ ).appendTo(this.selectTrigger);
247
+
248
+ this.types(this.options.types);
249
+
250
+ if (this.options.typeField) {
251
+ this.typeField = $(this.options.typeField).hide();
252
+ var t = this.typeField.val();
253
+ if (t && this.typeMap[t]) {
254
+ this.options.default = t;
255
+ }
256
+ } else {
257
+ this.typeField = $('<input>', { type: 'hidden' }).appendTo(
258
+ this.uiSelect
259
+ );
260
+ }
261
+
262
+ this.input.on('focus', function() {
263
+ that.uiSelect.addClass('red-ui-typedInput-focus');
264
+ });
265
+ this.input.on('blur', function() {
266
+ that.uiSelect.removeClass('red-ui-typedInput-focus');
267
+ });
268
+ this.input.on('change', function() {
269
+ that.validate();
270
+ that.element.val(that.value());
271
+ that.element.trigger('change', that.propertyType, that.value());
272
+ });
273
+ this.selectTrigger.click(function(event) {
274
+ event.preventDefault();
275
+ that._showTypeMenu();
276
+ });
277
+ this.selectTrigger
278
+ .on('keydown', function(evt) {
279
+ if (evt.keyCode === 40) {
280
+ // Down
281
+ that._showTypeMenu();
282
+ }
283
+ })
284
+ .on('focus', function() {
285
+ that.uiSelect.addClass('red-ui-typedInput-focus');
286
+ });
287
+
288
+ // explicitly set optionSelectTrigger display to inline-block otherwise jQ sets it to 'inline'
289
+ this.optionSelectTrigger = $(
290
+ '<button tabindex="0" class="red-ui-typedInput-option-trigger" style="display:inline-block"><span class="red-ui-typedInput-option-caret"><i class="red-ui-typedInput-icon fa fa-sort-desc"></i></span></button>'
291
+ ).appendTo(this.uiSelect);
292
+ this.optionSelectLabel = $(
293
+ '<span class="red-ui-typedInput-option-label"></span>'
294
+ ).prependTo(this.optionSelectTrigger);
295
+ RED.popover.tooltip(this.optionSelectLabel, function() {
296
+ return that.optionValue;
297
+ });
298
+ this.optionSelectTrigger
299
+ .click(function(event) {
300
+ event.preventDefault();
301
+ that._showOptionSelectMenu();
302
+ })
303
+ .on('keydown', function(evt) {
304
+ if (evt.keyCode === 40) {
305
+ // Down
306
+ that._showOptionSelectMenu();
307
+ }
308
+ })
309
+ .on('blur', function() {
310
+ that.uiSelect.removeClass('red-ui-typedInput-focus');
311
+ })
312
+ .on('focus', function() {
313
+ that.uiSelect.addClass('red-ui-typedInput-focus');
314
+ });
315
+
316
+ this.optionExpandButton = $(
317
+ '<button tabindex="0" class="red-ui-typedInput-option-expand" style="display:inline-block"><i class="red-ui-typedInput-icon fa fa-ellipsis-h"></i></button>'
318
+ ).appendTo(this.uiSelect);
319
+ this.type(this.options.default || this.typeList[0].value);
320
+ } catch (err) {
321
+ console.log(err.stack);
322
+ }
323
+ },
324
+ _showTypeMenu: function() {
325
+ if (this.typeList.length > 1) {
326
+ this._showMenu(this.menu, this.selectTrigger);
327
+ this.menu.find("[value='" + this.propertyType + "']").focus();
328
+ } else {
329
+ this.input.focus();
330
+ }
331
+ },
332
+ _showOptionSelectMenu: function() {
333
+ if (this.optionMenu) {
334
+ this.optionMenu.css({
335
+ minWidth: this.optionSelectLabel.width()
336
+ });
337
+
338
+ this._showMenu(this.optionMenu, this.optionSelectTrigger);
339
+ var selectedOption = this.optionMenu.find(
340
+ "[value='" + this.optionValue + "']"
341
+ );
342
+ if (selectedOption.length === 0) {
343
+ selectedOption = this.optionMenu.children(':first');
344
+ }
345
+ selectedOption.focus();
346
+ }
347
+ },
348
+ _hideMenu: function(menu) {
349
+ $(document).off('mousedown.close-property-select');
350
+ menu.hide();
351
+ if (this.elementDiv.is(':visible')) {
352
+ this.input.focus();
353
+ } else if (this.optionSelectTrigger.is(':visible')) {
354
+ this.optionSelectTrigger.focus();
355
+ } else {
356
+ this.selectTrigger.focus();
357
+ }
358
+ },
359
+ _createMenu: function(opts, callback) {
360
+ var that = this;
361
+ var menu = $('<div>').addClass('red-ui-typedInput-options');
362
+ opts.forEach(function(opt) {
363
+ if (typeof opt === 'string') {
364
+ opt = { value: opt, label: opt };
365
+ }
366
+ var op = $('<a href="#"></a>')
367
+ .attr('value', opt.value)
368
+ .appendTo(menu);
369
+ if (opt.label) {
370
+ op.text(opt.label);
371
+ }
372
+ if (opt.icon) {
373
+ if (opt.icon.indexOf('<') === 0) {
374
+ $(opt.icon).prependTo(op);
375
+ } else if (opt.icon.indexOf('/') !== -1) {
376
+ $('<img>', {
377
+ src: opt.icon,
378
+ style: 'margin-right: 4px; height: 18px;'
379
+ }).prependTo(op);
380
+ } else {
381
+ $('<i>', { class: 'red-ui-typedInput-icon ' + opt.icon }).prependTo(
382
+ op
383
+ );
384
+ }
385
+ } else {
386
+ op.css({ paddingLeft: '18px' });
387
+ }
388
+ if (!opt.icon && !opt.label) {
389
+ op.text(opt.value);
390
+ }
391
+
392
+ op.click(function(event) {
393
+ event.preventDefault();
394
+ callback(opt.value);
395
+ that._hideMenu(menu);
396
+ });
397
+ });
398
+ menu.css({
399
+ display: 'none'
400
+ });
401
+ menu.appendTo(document.body);
402
+
403
+ menu.on('keydown', function(evt) {
404
+ if (evt.keyCode === 40) {
405
+ // DOWN
406
+ $(this)
407
+ .children(':focus')
408
+ .next()
409
+ .focus();
410
+ } else if (evt.keyCode === 38) {
411
+ // UP
412
+ $(this)
413
+ .children(':focus')
414
+ .prev()
415
+ .focus();
416
+ } else if (evt.keyCode === 27) {
417
+ that._hideMenu(menu);
418
+ }
419
+ });
420
+
421
+ return menu;
422
+ },
423
+ _showMenu: function(menu, relativeTo) {
424
+ if (this.disarmClick) {
425
+ this.disarmClick = false;
426
+ return;
427
+ }
428
+ var that = this;
429
+ var pos = relativeTo.offset();
430
+ var height = relativeTo.height();
431
+ var menuHeight = menu.height();
432
+ var top = height + pos.top - 3;
433
+ if (top + menuHeight > $(window).height()) {
434
+ top -= top + menuHeight - $(window).height() + 5;
435
+ }
436
+ menu.css({
437
+ top: top + 'px',
438
+ left: 2 + pos.left + 'px'
439
+ });
440
+ menu.slideDown(100);
441
+ this._delay(function() {
442
+ that.uiSelect.addClass('red-ui-typedInput-focus');
443
+ $(document).on('mousedown.close-property-select', function(event) {
444
+ if (!$(event.target).closest(menu).length) {
445
+ that._hideMenu(menu);
446
+ }
447
+ if ($(event.target).closest(relativeTo).length) {
448
+ that.disarmClick = true;
449
+ event.preventDefault();
450
+ }
451
+ });
452
+ });
453
+ },
454
+ _getLabelWidth: function(label) {
455
+ var labelWidth = label.outerWidth();
456
+ if (labelWidth === 0) {
457
+ var container = $(
458
+ '<div class="red-ui-typedInput-container-long"></div>'
459
+ )
460
+ .css({
461
+ position: 'absolute',
462
+ top: 0,
463
+ left: -1000
464
+ })
465
+ .appendTo(document.body);
466
+ var newTrigger = label.clone().appendTo(container);
467
+ labelWidth = newTrigger.outerWidth();
468
+ container.remove();
469
+ }
470
+ return labelWidth;
471
+ },
472
+ _resize: function() {
473
+ if (this.uiWidth !== null) {
474
+ this.uiSelect.width(this.uiWidth);
475
+ }
476
+ var type = this.typeMap[this.propertyType];
477
+ if (type && type.hasValue === false) {
478
+ this.selectTrigger.addClass('red-ui-typedInput-full-width');
479
+ } else {
480
+ this.selectTrigger.removeClass('red-ui-typedInput-full-width');
481
+ var labelWidth = this._getLabelWidth(this.selectTrigger);
482
+ this.elementDiv.css('left', labelWidth + 'px');
483
+ if (this.optionExpandButton.is(':visible')) {
484
+ this.elementDiv.css('right', '22px');
485
+ } else {
486
+ this.elementDiv.css('right', '0');
487
+ this.input.css({
488
+ 'border-top-right-radius': '4px',
489
+ 'border-bottom-right-radius': '4px'
490
+ });
491
+ }
492
+
493
+ // if (this.optionSelectTrigger) {
494
+ // this.optionSelectTrigger.css({'left':(labelWidth)+"px",'width':'calc( 100% - '+labelWidth+'px )'});
495
+ // }
496
+
497
+ if (this.optionSelectTrigger) {
498
+ if (type && type.options && type.hasValue === true) {
499
+ this.optionSelectLabel.css({ left: 'auto' });
500
+ var lw = this._getLabelWidth(this.optionSelectLabel);
501
+ this.optionSelectTrigger.css({ width: 23 + lw + 'px' });
502
+ this.elementDiv.css('right', 23 + lw + 'px');
503
+ this.input.css({
504
+ 'border-top-right-radius': 0,
505
+ 'border-bottom-right-radius': 0
506
+ });
507
+ } else {
508
+ this.optionSelectLabel.css({ left: '0' });
509
+ this.optionSelectTrigger.css({
510
+ width: 'calc( 100% - ' + labelWidth + 'px )'
511
+ });
512
+ if (!this.optionExpandButton.is(':visible')) {
513
+ this.elementDiv.css({ right: 0 });
514
+ this.input.css({
515
+ 'border-top-right-radius': '4px',
516
+ 'border-bottom-right-radius': '4px'
517
+ });
518
+ }
519
+ }
520
+ }
521
+ }
522
+ },
523
+ _updateOptionSelectLabel: function(o) {
524
+ var opt = this.typeMap[this.propertyType];
525
+ this.optionSelectLabel.empty();
526
+ if (o.icon) {
527
+ if (o.icon.indexOf('<') === 0) {
528
+ $(o.icon).prependTo(this.optionSelectLabel);
529
+ } else if (o.icon.indexOf('/') !== -1) {
530
+ // url
531
+ $('<img>', { src: o.icon, style: 'height: 18px;' }).prependTo(
532
+ this.optionSelectLabel
533
+ );
534
+ } else {
535
+ // icon class
536
+ $('<i>', { class: 'red-ui-typedInput-icon ' + o.icon }).prependTo(
537
+ this.optionSelectLabel
538
+ );
539
+ }
540
+ } else if (o.label) {
541
+ this.optionSelectLabel.text(o.label);
542
+ } else {
543
+ this.optionSelectLabel.text(o.value);
544
+ }
545
+ if (opt.hasValue) {
546
+ this.optionValue = o.value;
547
+ this._resize();
548
+ this.input.trigger('change', this.propertyType, this.value());
549
+ }
550
+ },
551
+ _destroy: function() {
552
+ if (this.optionMenu) {
553
+ this.optionMenu.remove();
554
+ }
555
+ this.menu.remove();
556
+ },
557
+ types: function(types) {
558
+ var that = this;
559
+ var currentType = this.type();
560
+ this.typeMap = {};
561
+ this.typeList = types.map(function(opt) {
562
+ var result;
563
+ if (typeof opt === 'string') {
564
+ result = allOptions[opt];
565
+ } else {
566
+ result = opt;
567
+ }
568
+ that.typeMap[result.value] = result;
569
+ return result;
570
+ });
571
+ this.selectTrigger.toggleClass('disabled', this.typeList.length === 1);
572
+ this.selectTrigger.find('.fa-sort-desc').toggle(this.typeList.length > 1);
573
+ if (this.menu) {
574
+ this.menu.remove();
575
+ }
576
+ this.menu = this._createMenu(this.typeList, function(v) {
577
+ that.type(v);
578
+ });
579
+ if (currentType && !this.typeMap.hasOwnProperty(currentType)) {
580
+ this.type(this.typeList[0].value);
581
+ } else {
582
+ this.propertyType = null;
583
+ this.type(currentType);
584
+ }
585
+ setTimeout(function() {
586
+ that._resize();
587
+ }, 0);
588
+ },
589
+ width: function(desiredWidth) {
590
+ this.uiWidth = desiredWidth;
591
+ this._resize();
592
+ },
593
+ value: function(value) {
594
+ if (!arguments.length) {
595
+ var v = this.input.val();
596
+ if (this.typeMap[this.propertyType].export) {
597
+ v = this.typeMap[this.propertyType].export(v, this.optionValue);
598
+ }
599
+ return v;
600
+ } else {
601
+ var selectedOption;
602
+ if (this.typeMap[this.propertyType].options) {
603
+ for (
604
+ var i = 0;
605
+ i < this.typeMap[this.propertyType].options.length;
606
+ i++
607
+ ) {
608
+ var op = this.typeMap[this.propertyType].options[i];
609
+ if (typeof op === 'string') {
610
+ if (op === value) {
611
+ selectedOption = this.activeOptions[op];
612
+ break;
613
+ }
614
+ } else if (op.value === value) {
615
+ selectedOption = op;
616
+ break;
617
+ }
618
+ }
619
+ if (!selectedOption) {
620
+ selectedOption = { value: '' };
621
+ }
622
+ this._updateOptionSelectLabel(selectedOption);
623
+ }
624
+ this.input.val(value);
625
+ this.input.trigger('change', this.type(), value);
626
+ }
627
+ },
628
+ type: function(type) {
629
+ if (!arguments.length) {
630
+ return this.propertyType;
631
+ } else {
632
+ var that = this;
633
+ var opt = this.typeMap[type];
634
+ if (opt && this.propertyType !== type) {
635
+ this.propertyType = type;
636
+ if (this.typeField) {
637
+ this.typeField.val(type);
638
+ }
639
+ this.selectLabel.empty();
640
+ var image;
641
+ if (opt.icon) {
642
+ if (opt.icon.indexOf('<') === 0) {
643
+ $(opt.icon).prependTo(this.selectLabel);
644
+ } else if (opt.icon.indexOf('/') !== -1) {
645
+ image = new Image();
646
+ image.name = opt.icon;
647
+ image.src = opt.icon;
648
+ $('<img>', {
649
+ src: opt.icon,
650
+ style: 'margin-right: 4px;height: 18px;'
651
+ }).prependTo(this.selectLabel);
652
+ } else {
653
+ $('<i>', {
654
+ class: 'red-ui-typedInput-icon ' + opt.icon
655
+ }).prependTo(this.selectLabel);
656
+ }
657
+ } else {
658
+ this.selectLabel.text(opt.label);
659
+ }
660
+ if (this.optionMenu) {
661
+ this.optionMenu.remove();
662
+ this.optionMenu = null;
663
+ }
664
+ if (opt.options) {
665
+ if (this.optionExpandButton) {
666
+ this.optionExpandButton.hide();
667
+ }
668
+ if (this.optionSelectTrigger) {
669
+ this.optionSelectTrigger.show();
670
+ if (!opt.hasValue) {
671
+ this.elementDiv.hide();
672
+ } else {
673
+ this.elementDiv.show();
674
+ }
675
+ this.activeOptions = {};
676
+ opt.options.forEach(function(o) {
677
+ if (typeof o === 'string') {
678
+ that.activeOptions[o] = { label: o, value: o };
679
+ } else {
680
+ that.activeOptions[o.value] = o;
681
+ }
682
+ });
683
+
684
+ if (!that.activeOptions.hasOwnProperty(that.optionValue)) {
685
+ that.optionValue = null;
686
+ }
687
+ this.optionMenu = this._createMenu(opt.options, function(v) {
688
+ that._updateOptionSelectLabel(that.activeOptions[v]);
689
+ if (!opt.hasValue) {
690
+ that.value(that.activeOptions[v].value);
691
+ }
692
+ });
693
+ var op;
694
+ if (!opt.hasValue) {
695
+ var currentVal = this.input.val();
696
+ var validValue = false;
697
+ for (var i = 0; i < opt.options.length; i++) {
698
+ op = opt.options[i];
699
+ if (typeof op === 'string' && op === currentVal) {
700
+ that._updateOptionSelectLabel({ value: currentVal });
701
+ validValue = true;
702
+ break;
703
+ } else if (op.value === currentVal) {
704
+ that._updateOptionSelectLabel(op);
705
+ validValue = true;
706
+ break;
707
+ }
708
+ }
709
+ if (!validValue) {
710
+ op = opt.options[0];
711
+ if (typeof op === 'string') {
712
+ this.value(op);
713
+ that._updateOptionSelectLabel({ value: op });
714
+ } else {
715
+ this.value(op.value);
716
+ that._updateOptionSelectLabel(op);
717
+ }
718
+ }
719
+ } else {
720
+ var selectedOption = this.optionValue || opt.options[0];
721
+ if (opt.parse) {
722
+ var parts = opt.parse(this.input.val());
723
+ if (parts.option) {
724
+ selectedOption = parts.option;
725
+ if (!this.activeOptions.hasOwnProperty(selectedOption)) {
726
+ parts.option = Object.keys(this.activeOptions)[0];
727
+ selectedOption = parts.option;
728
+ }
729
+ }
730
+ this.input.val(parts.value);
731
+ if (opt.export) {
732
+ this.element.val(
733
+ opt.export(parts.value, parts.option || selectedOption)
734
+ );
735
+ }
736
+ }
737
+ if (typeof selectedOption === 'string') {
738
+ this.optionValue = selectedOption;
739
+ if (!this.activeOptions.hasOwnProperty(selectedOption)) {
740
+ selectedOption = Object.keys(this.activeOptions)[0];
741
+ }
742
+ if (!selectedOption) {
743
+ this.optionSelectTrigger.hide();
744
+ } else {
745
+ this._updateOptionSelectLabel(
746
+ this.activeOptions[selectedOption]
747
+ );
748
+ }
749
+ } else if (selectedOption) {
750
+ this.optionValue = selectedOption.value;
751
+ this._updateOptionSelectLabel(selectedOption);
752
+ } else {
753
+ this.optionSelectTrigger.hide();
754
+ }
755
+ }
756
+ }
757
+ this.input.trigger('change', this.propertyType, this.value());
758
+ } else {
759
+ if (this.optionSelectTrigger) {
760
+ this.optionSelectTrigger.hide();
761
+ }
762
+ if (opt.hasValue === false) {
763
+ this.oldValue = this.input.val();
764
+ this.input.val('');
765
+ this.elementDiv.hide();
766
+ } else {
767
+ if (this.oldValue !== undefined) {
768
+ this.input.val(this.oldValue);
769
+ delete this.oldValue;
770
+ }
771
+ this.elementDiv.show();
772
+ }
773
+ if (this.optionExpandButton) {
774
+ if (opt.expand && typeof opt.expand === 'function') {
775
+ this.optionExpandButton.show();
776
+ this.optionExpandButton.off('click');
777
+ this.optionExpandButton.on('click', function(evt) {
778
+ evt.preventDefault();
779
+ opt.expand.call(that);
780
+ });
781
+ } else {
782
+ this.optionExpandButton.hide();
783
+ }
784
+ }
785
+ this.input.trigger('change', this.propertyType, this.value());
786
+ }
787
+ if (image) {
788
+ image.onload = function() {
789
+ that._resize();
790
+ };
791
+ image.onerror = function() {
792
+ that._resize();
793
+ };
794
+ } else {
795
+ this._resize();
796
+ }
797
+ }
798
+ }
799
+ },
800
+ validate: function() {
801
+ var result;
802
+ var value = this.value();
803
+ var type = this.type();
804
+ if (this.typeMap[type] && this.typeMap[type].validate) {
805
+ var val = this.typeMap[type].validate;
806
+ if (typeof val === 'function') {
807
+ result = val(value);
808
+ } else {
809
+ result = val.test(value);
810
+ }
811
+ } else {
812
+ result = true;
813
+ }
814
+ if (result) {
815
+ this.uiSelect.removeClass('input-error');
816
+ } else {
817
+ this.uiSelect.addClass('input-error');
818
+ }
819
+ return result;
820
+ },
821
+ show: function() {
822
+ this.uiSelect.show();
823
+ this._resize();
824
+ },
825
+ hide: function() {
826
+ this.uiSelect.hide();
827
+ }
828
+ });
829
+ })(jQuery);