@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,819 @@
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.typedInput', {
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');
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>').attr('value', opt.value).appendTo(menu);
367
+ if (opt.label) {
368
+ op.text(opt.label);
369
+ }
370
+ if (opt.icon) {
371
+ if (opt.icon.indexOf('<') === 0) {
372
+ $(opt.icon).prependTo(op);
373
+ } else if (opt.icon.indexOf('/') !== -1) {
374
+ $('<img>', {
375
+ src: opt.icon,
376
+ style: 'margin-right: 4px; height: 18px;',
377
+ }).prependTo(op);
378
+ } else {
379
+ $('<i>', { class: 'red-ui-typedInput-icon ' + opt.icon }).prependTo(
380
+ op
381
+ );
382
+ }
383
+ } else {
384
+ op.css({ paddingLeft: '18px' });
385
+ }
386
+ if (!opt.icon && !opt.label) {
387
+ op.text(opt.value);
388
+ }
389
+
390
+ op.click(function (event) {
391
+ event.preventDefault();
392
+ callback(opt.value);
393
+ that._hideMenu(menu);
394
+ });
395
+ });
396
+ menu.css({
397
+ display: 'none',
398
+ });
399
+ menu.appendTo(document.body);
400
+
401
+ menu.on('keydown', function (evt) {
402
+ if (evt.keyCode === 40) {
403
+ // DOWN
404
+ $(this).children(':focus').next().focus();
405
+ } else if (evt.keyCode === 38) {
406
+ // UP
407
+ $(this).children(':focus').prev().focus();
408
+ } else if (evt.keyCode === 27) {
409
+ that._hideMenu(menu);
410
+ }
411
+ });
412
+
413
+ return menu;
414
+ },
415
+ _showMenu: function (menu, relativeTo) {
416
+ if (this.disarmClick) {
417
+ this.disarmClick = false;
418
+ return;
419
+ }
420
+ var that = this;
421
+ var pos = relativeTo.offset();
422
+ var height = relativeTo.height();
423
+ var menuHeight = menu.height();
424
+ var top = height + pos.top - 3;
425
+ if (top + menuHeight > $(window).height()) {
426
+ top -= top + menuHeight - $(window).height() + 5;
427
+ }
428
+ menu.css({
429
+ top: top + 'px',
430
+ left: 2 + pos.left + 'px',
431
+ });
432
+ menu.slideDown(100);
433
+ this._delay(function () {
434
+ that.uiSelect.addClass('red-ui-typedInput-focus');
435
+ $(document).on('mousedown.close-property-select', function (event) {
436
+ if (!$(event.target).closest(menu).length) {
437
+ that._hideMenu(menu);
438
+ }
439
+ if ($(event.target).closest(relativeTo).length) {
440
+ that.disarmClick = true;
441
+ event.preventDefault();
442
+ }
443
+ });
444
+ });
445
+ },
446
+ _getLabelWidth: function (label) {
447
+ var labelWidth = label.outerWidth();
448
+ if (labelWidth === 0) {
449
+ var container = $('<div class="red-ui-typedInput-container"></div>')
450
+ .css({
451
+ position: 'absolute',
452
+ top: 0,
453
+ left: -1000,
454
+ })
455
+ .appendTo(document.body);
456
+ var newTrigger = label.clone().appendTo(container);
457
+ labelWidth = newTrigger.outerWidth();
458
+ container.remove();
459
+ }
460
+ return labelWidth;
461
+ },
462
+ _resize: function () {
463
+ if (this.uiWidth !== null) {
464
+ this.uiSelect.width(this.uiWidth);
465
+ }
466
+ var type = this.typeMap[this.propertyType];
467
+ if (type && type.hasValue === false) {
468
+ this.selectTrigger.addClass('red-ui-typedInput-full-width');
469
+ } else {
470
+ this.selectTrigger.removeClass('red-ui-typedInput-full-width');
471
+ var labelWidth = this._getLabelWidth(this.selectTrigger);
472
+ this.elementDiv.css('left', labelWidth + 'px');
473
+ if (this.optionExpandButton.is(':visible')) {
474
+ this.elementDiv.css('right', '22px');
475
+ } else {
476
+ this.elementDiv.css('right', '0');
477
+ this.input.css({
478
+ 'border-top-right-radius': '4px',
479
+ 'border-bottom-right-radius': '4px',
480
+ });
481
+ }
482
+
483
+ // if (this.optionSelectTrigger) {
484
+ // this.optionSelectTrigger.css({'left':(labelWidth)+"px",'width':'calc( 100% - '+labelWidth+'px )'});
485
+ // }
486
+
487
+ if (this.optionSelectTrigger) {
488
+ if (type && type.options && type.hasValue === true) {
489
+ this.optionSelectLabel.css({ left: 'auto' });
490
+ var lw = this._getLabelWidth(this.optionSelectLabel);
491
+ this.optionSelectTrigger.css({ width: 23 + lw + 'px' });
492
+ this.elementDiv.css('right', 23 + lw + 'px');
493
+ this.input.css({
494
+ 'border-top-right-radius': 0,
495
+ 'border-bottom-right-radius': 0,
496
+ });
497
+ } else {
498
+ this.optionSelectLabel.css({ left: '0' });
499
+ this.optionSelectTrigger.css({
500
+ width: 'calc( 100% - ' + labelWidth + 'px )',
501
+ });
502
+ if (!this.optionExpandButton.is(':visible')) {
503
+ this.elementDiv.css({ right: 0 });
504
+ this.input.css({
505
+ 'border-top-right-radius': '4px',
506
+ 'border-bottom-right-radius': '4px',
507
+ });
508
+ }
509
+ }
510
+ }
511
+ }
512
+ },
513
+ _updateOptionSelectLabel: function (o) {
514
+ var opt = this.typeMap[this.propertyType];
515
+ this.optionSelectLabel.empty();
516
+ if (o.icon) {
517
+ if (o.icon.indexOf('<') === 0) {
518
+ $(o.icon).prependTo(this.optionSelectLabel);
519
+ } else if (o.icon.indexOf('/') !== -1) {
520
+ // url
521
+ $('<img>', { src: o.icon, style: 'height: 18px;' }).prependTo(
522
+ this.optionSelectLabel
523
+ );
524
+ } else {
525
+ // icon class
526
+ $('<i>', { class: 'red-ui-typedInput-icon ' + o.icon }).prependTo(
527
+ this.optionSelectLabel
528
+ );
529
+ }
530
+ } else if (o.label) {
531
+ this.optionSelectLabel.text(o.label);
532
+ } else {
533
+ this.optionSelectLabel.text(o.value);
534
+ }
535
+ if (opt.hasValue) {
536
+ this.optionValue = o.value;
537
+ this._resize();
538
+ this.input.trigger('change', this.propertyType, this.value());
539
+ }
540
+ },
541
+ _destroy: function () {
542
+ if (this.optionMenu) {
543
+ this.optionMenu.remove();
544
+ }
545
+ this.menu.remove();
546
+ },
547
+ types: function (types) {
548
+ var that = this;
549
+ var currentType = this.type();
550
+ this.typeMap = {};
551
+ this.typeList = types.map(function (opt) {
552
+ var result;
553
+ if (typeof opt === 'string') {
554
+ result = allOptions[opt];
555
+ } else {
556
+ result = opt;
557
+ }
558
+ that.typeMap[result.value] = result;
559
+ return result;
560
+ });
561
+ this.selectTrigger.toggleClass('disabled', this.typeList.length === 1);
562
+ this.selectTrigger.find('.fa-sort-desc').toggle(this.typeList.length > 1);
563
+ if (this.menu) {
564
+ this.menu.remove();
565
+ }
566
+ this.menu = this._createMenu(this.typeList, function (v) {
567
+ that.type(v);
568
+ });
569
+ if (currentType && !this.typeMap.hasOwnProperty(currentType)) {
570
+ this.type(this.typeList[0].value);
571
+ } else {
572
+ this.propertyType = null;
573
+ this.type(currentType);
574
+ }
575
+ setTimeout(function () {
576
+ that._resize();
577
+ }, 0);
578
+ },
579
+ width: function (desiredWidth) {
580
+ this.uiWidth = desiredWidth + 20;
581
+ this._resize();
582
+ },
583
+ value: function (value) {
584
+ if (!arguments.length) {
585
+ var v = this.input.val();
586
+ if (this.typeMap[this.propertyType].export) {
587
+ v = this.typeMap[this.propertyType].export(v, this.optionValue);
588
+ }
589
+ return v;
590
+ } else {
591
+ var selectedOption;
592
+ if (this.typeMap[this.propertyType].options) {
593
+ for (
594
+ var i = 0;
595
+ i < this.typeMap[this.propertyType].options.length;
596
+ i++
597
+ ) {
598
+ var op = this.typeMap[this.propertyType].options[i];
599
+ if (typeof op === 'string') {
600
+ if (op === value) {
601
+ selectedOption = this.activeOptions[op];
602
+ break;
603
+ }
604
+ } else if (op.value === value) {
605
+ selectedOption = op;
606
+ break;
607
+ }
608
+ }
609
+ if (!selectedOption) {
610
+ selectedOption = { value: '' };
611
+ }
612
+ this._updateOptionSelectLabel(selectedOption);
613
+ }
614
+ this.input.val(value);
615
+ this.input.trigger('change', this.type(), value);
616
+ }
617
+ },
618
+ type: function (type) {
619
+ if (!arguments.length) {
620
+ return this.propertyType;
621
+ } else {
622
+ var that = this;
623
+ var opt = this.typeMap[type];
624
+ if (opt && this.propertyType !== type) {
625
+ this.propertyType = type;
626
+ if (this.typeField) {
627
+ this.typeField.val(type);
628
+ }
629
+ this.selectLabel.empty();
630
+ var image;
631
+ if (opt.icon) {
632
+ if (opt.icon.indexOf('<') === 0) {
633
+ $(opt.icon).prependTo(this.selectLabel);
634
+ } else if (opt.icon.indexOf('/') !== -1) {
635
+ image = new Image();
636
+ image.name = opt.icon;
637
+ image.src = opt.icon;
638
+ $('<img>', {
639
+ src: opt.icon,
640
+ style: 'margin-right: 4px;height: 18px;',
641
+ }).prependTo(this.selectLabel);
642
+ } else {
643
+ $('<i>', {
644
+ class: 'red-ui-typedInput-icon ' + opt.icon,
645
+ }).prependTo(this.selectLabel);
646
+ }
647
+ } else {
648
+ this.selectLabel.text(opt.label);
649
+ }
650
+ if (this.optionMenu) {
651
+ this.optionMenu.remove();
652
+ this.optionMenu = null;
653
+ }
654
+ if (opt.options) {
655
+ if (this.optionExpandButton) {
656
+ this.optionExpandButton.hide();
657
+ }
658
+ if (this.optionSelectTrigger) {
659
+ this.optionSelectTrigger.show();
660
+ if (!opt.hasValue) {
661
+ this.elementDiv.hide();
662
+ } else {
663
+ this.elementDiv.show();
664
+ }
665
+ this.activeOptions = {};
666
+ opt.options.forEach(function (o) {
667
+ if (typeof o === 'string') {
668
+ that.activeOptions[o] = { label: o, value: o };
669
+ } else {
670
+ that.activeOptions[o.value] = o;
671
+ }
672
+ });
673
+
674
+ if (!that.activeOptions.hasOwnProperty(that.optionValue)) {
675
+ that.optionValue = null;
676
+ }
677
+ this.optionMenu = this._createMenu(opt.options, function (v) {
678
+ that._updateOptionSelectLabel(that.activeOptions[v]);
679
+ if (!opt.hasValue) {
680
+ that.value(that.activeOptions[v].value);
681
+ }
682
+ });
683
+ var op;
684
+ if (!opt.hasValue) {
685
+ var currentVal = this.input.val();
686
+ var validValue = false;
687
+ for (var i = 0; i < opt.options.length; i++) {
688
+ op = opt.options[i];
689
+ if (typeof op === 'string' && op === currentVal) {
690
+ that._updateOptionSelectLabel({ value: currentVal });
691
+ validValue = true;
692
+ break;
693
+ } else if (op.value === currentVal) {
694
+ that._updateOptionSelectLabel(op);
695
+ validValue = true;
696
+ break;
697
+ }
698
+ }
699
+ if (!validValue) {
700
+ op = opt.options[0];
701
+ if (typeof op === 'string') {
702
+ this.value(op);
703
+ that._updateOptionSelectLabel({ value: op });
704
+ } else {
705
+ this.value(op.value);
706
+ that._updateOptionSelectLabel(op);
707
+ }
708
+ }
709
+ } else {
710
+ var selectedOption = this.optionValue || opt.options[0];
711
+ if (opt.parse) {
712
+ var parts = opt.parse(this.input.val());
713
+ if (parts.option) {
714
+ selectedOption = parts.option;
715
+ if (!this.activeOptions.hasOwnProperty(selectedOption)) {
716
+ parts.option = Object.keys(this.activeOptions)[0];
717
+ selectedOption = parts.option;
718
+ }
719
+ }
720
+ this.input.val(parts.value);
721
+ if (opt.export) {
722
+ this.element.val(
723
+ opt.export(parts.value, parts.option || selectedOption)
724
+ );
725
+ }
726
+ }
727
+ if (typeof selectedOption === 'string') {
728
+ this.optionValue = selectedOption;
729
+ if (!this.activeOptions.hasOwnProperty(selectedOption)) {
730
+ selectedOption = Object.keys(this.activeOptions)[0];
731
+ }
732
+ if (!selectedOption) {
733
+ this.optionSelectTrigger.hide();
734
+ } else {
735
+ this._updateOptionSelectLabel(
736
+ this.activeOptions[selectedOption]
737
+ );
738
+ }
739
+ } else if (selectedOption) {
740
+ this.optionValue = selectedOption.value;
741
+ this._updateOptionSelectLabel(selectedOption);
742
+ } else {
743
+ this.optionSelectTrigger.hide();
744
+ }
745
+ }
746
+ }
747
+ this.input.trigger('change', this.propertyType, this.value());
748
+ } else {
749
+ if (this.optionSelectTrigger) {
750
+ this.optionSelectTrigger.hide();
751
+ }
752
+ if (opt.hasValue === false) {
753
+ this.oldValue = this.input.val();
754
+ this.input.val('');
755
+ this.elementDiv.hide();
756
+ } else {
757
+ if (this.oldValue !== undefined) {
758
+ this.input.val(this.oldValue);
759
+ delete this.oldValue;
760
+ }
761
+ this.elementDiv.show();
762
+ }
763
+ if (this.optionExpandButton) {
764
+ if (opt.expand && typeof opt.expand === 'function') {
765
+ this.optionExpandButton.show();
766
+ this.optionExpandButton.off('click');
767
+ this.optionExpandButton.on('click', function (evt) {
768
+ evt.preventDefault();
769
+ opt.expand.call(that);
770
+ });
771
+ } else {
772
+ this.optionExpandButton.hide();
773
+ }
774
+ }
775
+ this.input.trigger('change', this.propertyType, this.value());
776
+ }
777
+ if (image) {
778
+ image.onload = function () {
779
+ that._resize();
780
+ };
781
+ image.onerror = function () {
782
+ that._resize();
783
+ };
784
+ } else {
785
+ this._resize();
786
+ }
787
+ }
788
+ }
789
+ },
790
+ validate: function () {
791
+ var result;
792
+ var value = this.value();
793
+ var type = this.type();
794
+ if (this.typeMap[type] && this.typeMap[type].validate) {
795
+ var val = this.typeMap[type].validate;
796
+ if (typeof val === 'function') {
797
+ result = val(value);
798
+ } else {
799
+ result = val.test(value);
800
+ }
801
+ } else {
802
+ result = true;
803
+ }
804
+ if (result) {
805
+ this.uiSelect.removeClass('input-error');
806
+ } else {
807
+ this.uiSelect.addClass('input-error');
808
+ }
809
+ return result;
810
+ },
811
+ show: function () {
812
+ this.uiSelect.show();
813
+ this._resize();
814
+ },
815
+ hide: function () {
816
+ this.uiSelect.hide();
817
+ },
818
+ });
819
+ })(jQuery);