luca 0.9.9 → 0.9.42

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 (604) hide show
  1. data/CHANGELOG +9 -153
  2. data/Gemfile +1 -10
  3. data/Gemfile.lock +40 -113
  4. data/Guardfile +25 -3
  5. data/README.md +57 -54
  6. data/ROADMAP +32 -15
  7. data/Rakefile +75 -24
  8. data/app.rb +46 -12
  9. data/{app/assets → assets}/images/glyphicons-halflings-white.png +0 -0
  10. data/{app/assets → assets}/images/glyphicons-halflings.png +0 -0
  11. data/assets/javascripts/dependencies/backbone-min.js +37 -0
  12. data/assets/javascripts/dependencies/backbone-query.min.js +1 -0
  13. data/assets/javascripts/dependencies/bootstrap.min.js +7 -0
  14. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-coffeescript.js +0 -0
  15. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-css.js +0 -0
  16. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-html.js +0 -0
  17. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-javascript.js +0 -0
  18. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-less.js +0 -0
  19. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror-vim.js +0 -0
  20. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/codemirror.js +0 -0
  21. data/assets/javascripts/dependencies/coffee-script.js +12189 -0
  22. data/{spec → assets}/javascripts/dependencies/jasmine-html.js +0 -0
  23. data/{spec → assets}/javascripts/dependencies/jasmine.js +0 -0
  24. data/assets/javascripts/dependencies/jquery.js +4 -0
  25. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modal.js +0 -0
  26. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/modernizr.min.js +0 -0
  27. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/prettify.js +0 -0
  28. data/{spec → assets}/javascripts/dependencies/sinon.js +0 -0
  29. data/{vendor/assets/javascripts → assets/javascripts/dependencies}/spin-min.js +0 -0
  30. data/assets/javascripts/dependencies/underscore-min.js +31 -0
  31. data/assets/javascripts/dependencies/underscore-string.min.js +14 -0
  32. data/assets/javascripts/dependencies.coffee +5 -0
  33. data/assets/javascripts/luca/index.coffee +1 -0
  34. data/assets/javascripts/luca-templates.js +1 -0
  35. data/assets/javascripts/luca-ui-base.coffee +1 -0
  36. data/assets/javascripts/luca-ui-bootstrap.js +1 -0
  37. data/assets/javascripts/luca-ui-development-tools.coffee +9 -0
  38. data/assets/javascripts/luca-ui-full.js +3 -0
  39. data/assets/javascripts/luca-ui-spec.coffee +2 -0
  40. data/assets/javascripts/luca-ui.js +3 -0
  41. data/assets/javascripts/sandbox/application.coffee +57 -0
  42. data/assets/javascripts/sandbox/config.coffee +7 -0
  43. data/assets/javascripts/sandbox/router.coffee +24 -0
  44. data/assets/javascripts/sandbox/templates/builder/component_list.luca +1 -0
  45. data/assets/javascripts/sandbox/templates/builder.luca +2 -0
  46. data/assets/javascripts/sandbox/templates/main.luca +53 -0
  47. data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +1 -0
  48. data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +8 -0
  49. data/assets/javascripts/sandbox/templates/sandbox/readme.luca +30 -0
  50. data/assets/javascripts/sandbox/templates/sandbox.luca +1 -0
  51. data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +3 -0
  52. data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +6 -0
  53. data/assets/javascripts/sandbox/views/builder/component_list.coffee +38 -0
  54. data/assets/javascripts/sandbox/views/builder/project_browser.coffee +14 -0
  55. data/assets/javascripts/sandbox/views/builder.coffee +133 -0
  56. data/assets/javascripts/sandbox/views/docs_controller.coffee +7 -0
  57. data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +18 -0
  58. data/{app/assets/stylesheets/luca/containers/modal_view.scss → assets/javascripts/sandbox/views/inspector/instance_list.coffee} +0 -0
  59. data/assets/javascripts/sandbox/views/inspector.coffee +11 -0
  60. data/assets/javascripts/sandbox/views/top_navigation.coffee +4 -0
  61. data/assets/javascripts/sandbox.coffee +7 -0
  62. data/assets/javascripts/spec-dependencies.coffee +4 -0
  63. data/assets/stylesheets/bootstrap-responsive.min.css +2 -0
  64. data/assets/stylesheets/bootstrap.min.css +727 -0
  65. data/{vendor/assets → assets}/stylesheets/codemirror-blackboard.css +0 -0
  66. data/{vendor/assets → assets}/stylesheets/codemirror-monokai.css +0 -0
  67. data/{vendor/assets → assets}/stylesheets/codemirror.css +0 -0
  68. data/{vendor/assets → assets}/stylesheets/jasmine.css +0 -0
  69. data/assets/stylesheets/luca-ui-bootstrap.css +4 -0
  70. data/assets/stylesheets/luca-ui-development-tools.css +5 -0
  71. data/assets/stylesheets/luca-ui-full.css +3 -0
  72. data/assets/stylesheets/luca-ui-spec.css +3 -0
  73. data/assets/stylesheets/luca-ui.css +3 -0
  74. data/assets/stylesheets/prettify.css +40 -0
  75. data/assets/stylesheets/sandbox/builder.scss +79 -0
  76. data/assets/stylesheets/sandbox/sandbox.scss +18 -0
  77. data/assets/stylesheets/sandbox.css +3 -0
  78. data/assets/stylesheets/themes/amelia-bootstrap.css +826 -0
  79. data/assets/stylesheets/themes/slate-bootstrap.css +797 -0
  80. data/assets/stylesheets/themes/superhero-bootstrap.css +830 -0
  81. data/config.ru +2 -1
  82. data/docs/{old/application.md → application.md} +0 -0
  83. data/docs/{old/collection.md → collection.md} +0 -0
  84. data/docs/{old/collection_manager.md → collection_manager.md} +0 -0
  85. data/docs/{old/container_philosophy.md → container_philosophy.md} +0 -0
  86. data/docs/{old/event_binding_helpers.md → event_binding_helpers.md} +0 -0
  87. data/docs/{old/method_caching_and_computed_properties.md → method_caching_and_computed_properties.md} +0 -0
  88. data/docs/{old/view.md → view.md} +0 -0
  89. data/lib/luca/code_browser.rb +55 -0
  90. data/lib/luca/command_line.rb +69 -0
  91. data/lib/luca/rails/engine.rb +0 -12
  92. data/lib/luca/rails/version.rb +2 -1
  93. data/lib/luca/rails.rb +3 -5
  94. data/lib/luca/template.rb +0 -2
  95. data/lib/luca.rb +1 -25
  96. data/luca.gemspec +7 -16
  97. data/site/assets/bootstrap.min.js +7 -0
  98. data/site/assets/dependencies.js +94 -0
  99. data/site/assets/glyphicons-halflings-white.png +0 -0
  100. data/site/assets/glyphicons-halflings.png +0 -0
  101. data/site/assets/luca-ui-bootstrap.css +1331 -0
  102. data/site/assets/luca-ui-bootstrap.js +9 -0
  103. data/site/assets/luca-ui-development-tools.css +234 -0
  104. data/site/assets/luca-ui-development-tools.js +18561 -0
  105. data/site/assets/luca-ui-development-tools.min.js +15 -0
  106. data/site/assets/luca-ui-full.min.js +8 -0
  107. data/site/assets/luca-ui.min.js +4 -0
  108. data/site/assets/sandbox.css +62 -0
  109. data/site/assets/sandbox.js +469 -0
  110. data/site/docs/application.html +41 -0
  111. data/site/docs/caching.html +43 -0
  112. data/site/docs/collection.html +75 -0
  113. data/site/docs/collection_manager.html +71 -0
  114. data/site/docs/containers.html +118 -0
  115. data/site/docs/events.html +153 -0
  116. data/site/docs/view.html +128 -0
  117. data/site/img/glyphicons-halflings-white.png +0 -0
  118. data/site/img/glyphicons-halflings.png +0 -0
  119. data/site/index.html +20 -0
  120. data/site/source-map.js +1 -0
  121. data/spec/{javascripts/components → components}/application_spec.coffee +0 -0
  122. data/spec/{javascripts/components → components}/collection_loader_view_spec.coffee +0 -0
  123. data/{site/source/app/assets/javascripts/docs/lib/util.coffee → spec/components/controller_spec.coffee} +0 -0
  124. data/spec/{javascripts/components → components}/fields/checkbox_array_spec.coffee +0 -0
  125. data/spec/components/form_view_spec.coffee +80 -0
  126. data/spec/{javascripts/components → components}/grid_view_spec.coffee +0 -0
  127. data/spec/{javascripts/components → components}/record_manager_spec.coffee +0 -0
  128. data/spec/{javascripts/components → components}/template_spec.coffee +0 -0
  129. data/spec/containers/card_view_spec.coffee +50 -0
  130. data/{site/source/app/assets/javascripts/docs/views/components/code_editor/index.coffee → spec/containers/column_view_spec.coffee} +0 -0
  131. data/spec/{javascripts/containers → containers}/modal_view_spec.coffee +0 -0
  132. data/spec/{javascripts/containers → containers}/panel_view_spec.coffee +0 -0
  133. data/spec/{javascripts/components/pagination_control_spec.coffee → containers/split_view_spec.coffee} +0 -0
  134. data/spec/{javascripts/containers → containers}/tab_view_spec.coffee +0 -0
  135. data/spec/{javascripts/containers → containers}/viewport_spec.coffee +0 -0
  136. data/spec/{javascripts/core → core}/collection_spec.coffee +1 -26
  137. data/spec/core/container_spec.coffee +66 -0
  138. data/spec/{javascripts/concerns/paginatable_spec.coffee → core/field_spec.coffee} +0 -0
  139. data/spec/{javascripts/core → core}/model_spec.coffee +3 -26
  140. data/spec/{javascripts/core → core}/observer_spec.coffee +0 -0
  141. data/spec/{javascripts/core → core}/view_spec.coffee +38 -114
  142. data/spec/{javascripts/core/framework_spec.coffee → framework_spec.coffee} +2 -31
  143. data/spec/{javascripts/helper.coffee → helper.coffee} +0 -0
  144. data/spec/{javascripts/managers → managers}/collection_manager_spec.coffee +0 -0
  145. data/spec/{javascripts/managers → managers}/socket_manager_spec.coffee +0 -0
  146. data/src/components/application.coffee +318 -0
  147. data/src/components/base_toolbar.coffee +15 -0
  148. data/{app/assets/javascripts/luca → src}/components/collection_loader_view.coffee +1 -3
  149. data/src/components/collection_view.coffee +131 -0
  150. data/src/components/controller.coffee +63 -0
  151. data/src/components/fields/button_field.coffee +38 -0
  152. data/{app/assets/javascripts/luca → src}/components/fields/checkbox_array.coffee +7 -18
  153. data/{app/assets/javascripts/luca → src}/components/fields/checkbox_field.coffee +10 -19
  154. data/{app/assets/javascripts/luca → src}/components/fields/file_upload_field.coffee +4 -5
  155. data/src/components/fields/hidden_field.coffee +12 -0
  156. data/src/components/fields/label_field.coffee +14 -0
  157. data/src/components/fields/select_field.coffee +97 -0
  158. data/src/components/fields/text_area_field.coffee +40 -0
  159. data/{app/assets/javascripts/luca → src}/components/fields/text_field.coffee +5 -16
  160. data/src/components/fields/type_ahead_field.coffee +22 -0
  161. data/src/components/form_button_toolbar.coffee +25 -0
  162. data/src/components/form_view.coffee +275 -0
  163. data/src/components/grid_view.coffee +269 -0
  164. data/src/components/index.coffee +1 -0
  165. data/src/components/load_mask.coffee +3 -0
  166. data/src/components/nav_bar.coffee +22 -0
  167. data/src/components/page_controller.coffee +2 -0
  168. data/{app/assets/javascripts/luca → src}/components/record_manager.coffee +0 -0
  169. data/{app/assets/javascripts/luca → src}/components/router.coffee +1 -6
  170. data/src/components/table_view.coffee +53 -0
  171. data/src/components/template.coffee +5 -0
  172. data/src/components/toolbar_dialog.coffee +25 -0
  173. data/src/containers/card_view.coffee +93 -0
  174. data/src/containers/column_view.coffee +42 -0
  175. data/{app/assets/javascripts/luca → src}/containers/modal_view.coffee +9 -9
  176. data/src/containers/page_view.coffee +2 -0
  177. data/{app/assets/javascripts/luca → src}/containers/panel_toolbar.coffee +84 -89
  178. data/src/containers/panel_view.coffee +23 -0
  179. data/src/containers/split_view.coffee +8 -0
  180. data/{app/assets/javascripts/luca → src}/containers/tab_view.coffee +21 -27
  181. data/{app/assets/javascripts/luca → src}/containers/viewport.coffee +18 -14
  182. data/{app/assets/javascripts/luca → src}/core/collection.coffee +51 -97
  183. data/src/core/container.coffee +374 -0
  184. data/{tutorials/component-definitions.md → src/core/core.coffee} +0 -0
  185. data/src/core/field.coffee +79 -0
  186. data/src/core/model.coffee +43 -0
  187. data/{app/assets/javascripts/luca → src}/core/observer.coffee +0 -0
  188. data/src/core/panel.coffee +118 -0
  189. data/{app/assets/javascripts/luca/core/registry → src/core}/registry.coffee +43 -63
  190. data/{app/assets/javascripts/luca/util → src/core}/script_loader.coffee +0 -0
  191. data/src/core/view.coffee +264 -0
  192. data/src/define.coffee +110 -0
  193. data/{app/assets/javascripts/luca → src}/framework.coffee +103 -98
  194. data/src/index.coffee +23 -0
  195. data/{app/assets/javascripts/luca → src}/managers/collection_manager.coffee +13 -37
  196. data/src/managers/socket_manager.coffee +54 -0
  197. data/{app/assets/javascripts/luca/concerns → src/modules}/deferrable.coffee +4 -5
  198. data/src/modules/grid_layout.coffee +3 -0
  199. data/{app/assets/javascripts/luca/concerns/loadmaskable.coffee → src/modules/load_mask.coffee} +11 -23
  200. data/{app/assets/javascripts/luca/concerns → src/modules}/local_storage.coffee +0 -0
  201. data/src/plugins/development_tool_helpers.coffee +21 -0
  202. data/src/plugins/events.coffee +54 -0
  203. data/src/samples/definition.coffee +49 -0
  204. data/{tutorials/component-definitions/01_intro.md → src/stylesheets/base.scss} +0 -0
  205. data/{app/assets/stylesheets/luca → src/stylesheets}/components/checkbox_array.scss +1 -1
  206. data/src/stylesheets/components/form_view.scss +59 -0
  207. data/{app/assets/stylesheets/luca → src/stylesheets}/components/grid_view.scss +0 -0
  208. data/{app/assets/stylesheets/luca → src/stylesheets}/components/load_mask.scss +0 -0
  209. data/src/stylesheets/components/toolbar.scss +0 -0
  210. data/{app/assets/stylesheets/luca → src/stylesheets}/components/viewport.scss +4 -1
  211. data/src/stylesheets/containers/container.scss +16 -0
  212. data/src/stylesheets/containers/modal_view.scss +0 -0
  213. data/{app/assets/stylesheets/luca → src/stylesheets}/containers/panels.scss +0 -0
  214. data/{app/assets/stylesheets/luca → src/stylesheets}/containers/tab_view.scss +5 -5
  215. data/{app/assets/stylesheets/luca → src/stylesheets}/normalize.scss +0 -0
  216. data/src/stylesheets/tools/class_browser.scss +32 -0
  217. data/src/stylesheets/tools/code_editor.scss +24 -0
  218. data/src/stylesheets/tools/component_tester.scss +26 -0
  219. data/{app/assets/stylesheets/luca/development → src/stylesheets/tools}/console.scss +0 -0
  220. data/src/templates/components/bootstrap_form_controls.luca +7 -0
  221. data/src/templates/components/collection_loader_view.luca +5 -0
  222. data/src/templates/components/form_alert +0 -0
  223. data/src/templates/components/form_alert.luca +3 -0
  224. data/src/templates/components/grid_view.luca +7 -0
  225. data/src/templates/components/grid_view_empty_text.luca +3 -0
  226. data/src/templates/components/load_mask.luca +3 -0
  227. data/src/templates/components/nav_bar.luca +2 -0
  228. data/src/templates/containers/basic.luca +1 -0
  229. data/src/templates/containers/tab_selector_container.luca +8 -0
  230. data/src/templates/containers/tab_view.luca +2 -0
  231. data/src/templates/containers/toolbar_wrapper.luca +1 -0
  232. data/src/templates/fields/button_field.luca +2 -0
  233. data/src/templates/fields/button_field_link.luca +5 -0
  234. data/src/templates/fields/checkbox_array.luca +4 -0
  235. data/src/templates/fields/checkbox_array_item.luca +4 -0
  236. data/src/templates/fields/checkbox_field.luca +9 -0
  237. data/src/templates/fields/file_upload_field.luca +8 -0
  238. data/src/templates/fields/hidden_field.luca +1 -0
  239. data/src/templates/fields/select_field.luca +8 -0
  240. data/src/templates/fields/text_area_field.luca +8 -0
  241. data/src/templates/fields/text_field.luca +17 -0
  242. data/src/templates/sample/contents.luca +1 -0
  243. data/src/templates/sample/welcome.luca +1 -0
  244. data/src/templates/table_view.luca +4 -0
  245. data/src/tools/application_inspector.coffee +2 -0
  246. data/src/tools/code_editor.coffee +258 -0
  247. data/{app/assets/javascripts/luca/development → src/tools}/code_mirror_field.coffee +1 -2
  248. data/src/tools/coffee_script_editor.coffee +82 -0
  249. data/src/tools/collection_inspector.coffee +4 -0
  250. data/src/tools/collections/components.coffee +59 -0
  251. data/src/tools/collections/instances.coffee +15 -0
  252. data/src/tools/component_tester.coffee +462 -0
  253. data/{app/assets/javascripts/luca/development → src/tools}/console.coffee +24 -55
  254. data/src/tools/models/components.coffee +25 -0
  255. data/src/tools/models/instance.coffee +2 -0
  256. data/src/tools/templates/component_tester/help.luca +14 -0
  257. data/{app/assets/javascripts/luca/util/luca.coffee → src/util.coffee} +6 -90
  258. data/vendor/assets/javascripts/luca-ui-development-tools.js +18533 -0
  259. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +15 -0
  260. data/vendor/assets/javascripts/luca-ui-full.js +4806 -0
  261. data/vendor/assets/javascripts/luca-ui-full.min.js +8 -0
  262. data/vendor/assets/javascripts/luca-ui-templates.js +24 -0
  263. data/vendor/assets/javascripts/luca-ui.js +1703 -4394
  264. data/vendor/assets/javascripts/luca-ui.min.js +4 -5
  265. data/vendor/assets/luca-ui/base.css +85 -0
  266. data/vendor/assets/luca-ui/components/application.js +91 -0
  267. data/vendor/assets/luca-ui/components/base_toolbar.js +23 -0
  268. data/vendor/assets/luca-ui/components/controller.js +38 -0
  269. data/vendor/assets/luca-ui/components/fields/button_field.js +45 -0
  270. data/vendor/assets/luca-ui/components/fields/checkbox_field.js +43 -0
  271. data/vendor/assets/luca-ui/components/fields/file_upload_field.js +20 -0
  272. data/vendor/assets/luca-ui/components/fields/hidden_field.js +20 -0
  273. data/vendor/assets/luca-ui/components/fields/select_field.js +97 -0
  274. data/vendor/assets/luca-ui/components/fields/text_area_field.js +48 -0
  275. data/vendor/assets/luca-ui/components/fields/text_field.js +46 -0
  276. data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +13 -0
  277. data/vendor/assets/luca-ui/components/form_button_toolbar.js +32 -0
  278. data/vendor/assets/luca-ui/components/form_view.css +32 -0
  279. data/vendor/assets/luca-ui/components/form_view.js +207 -0
  280. data/{app/assets/stylesheets/luca/components/table_view.scss → vendor/assets/luca-ui/components/grid_view.css} +51 -60
  281. data/vendor/assets/luca-ui/components/grid_view.js +202 -0
  282. data/vendor/assets/luca-ui/components/record_manager.js +207 -0
  283. data/vendor/assets/luca-ui/components/router.js +36 -0
  284. data/vendor/assets/luca-ui/components/template.js +26 -0
  285. data/vendor/assets/luca-ui/components/toolbar.css +11 -0
  286. data/vendor/assets/luca-ui/containers/card_view.js +98 -0
  287. data/vendor/assets/luca-ui/containers/column_view.js +52 -0
  288. data/vendor/assets/luca-ui/containers/container.css +3 -0
  289. data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
  290. data/vendor/assets/luca-ui/containers/modal_view.js +87 -0
  291. data/vendor/assets/luca-ui/containers/panel_view.js +34 -0
  292. data/vendor/assets/luca-ui/containers/split_view.js +13 -0
  293. data/vendor/assets/luca-ui/containers/tab_view.css +16 -0
  294. data/vendor/assets/luca-ui/containers/tab_view.js +80 -0
  295. data/vendor/assets/luca-ui/containers/viewport.js +18 -0
  296. data/vendor/assets/luca-ui/core/collection.js +221 -0
  297. data/vendor/assets/luca-ui/core/container.js +205 -0
  298. data/vendor/assets/luca-ui/core/field.js +59 -0
  299. data/vendor/assets/luca-ui/core/observer.js +42 -0
  300. data/vendor/assets/luca-ui/core/view.js +127 -0
  301. data/vendor/assets/luca-ui/framework.js +110 -0
  302. data/vendor/assets/luca-ui/index.js +5 -0
  303. data/vendor/assets/luca-ui/managers/collection_manager.js +98 -0
  304. data/vendor/assets/luca-ui/managers/socket_manager.js +52 -0
  305. data/vendor/assets/luca-ui/modules/deferrable.js +21 -0
  306. data/vendor/assets/luca-ui/modules/local_storage.js +81 -0
  307. data/vendor/assets/luca-ui/normalize.css +359 -0
  308. data/vendor/assets/luca-ui/stylesheets/base.css +85 -0
  309. data/vendor/assets/luca-ui/stylesheets/components/form_view.css +32 -0
  310. data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +76 -0
  311. data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +11 -0
  312. data/vendor/assets/luca-ui/stylesheets/containers/container.css +3 -0
  313. data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
  314. data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +16 -0
  315. data/vendor/assets/luca-ui/stylesheets/normalize.css +359 -0
  316. data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +4 -0
  317. data/vendor/assets/luca-ui/templates/components/form_view.js +4 -0
  318. data/vendor/assets/luca-ui/templates/components/grid_view.js +4 -0
  319. data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +4 -0
  320. data/vendor/assets/luca-ui/templates/containers/basic.js +4 -0
  321. data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +4 -0
  322. data/vendor/assets/luca-ui/templates/containers/tab_view.js +4 -0
  323. data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +4 -0
  324. data/vendor/assets/luca-ui/templates/fields/button_field.js +4 -0
  325. data/vendor/assets/luca-ui/templates/fields/button_field_link.js +4 -0
  326. data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +4 -0
  327. data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +4 -0
  328. data/vendor/assets/luca-ui/templates/fields/hidden_field.js +4 -0
  329. data/vendor/assets/luca-ui/templates/fields/select_field.js +4 -0
  330. data/vendor/assets/luca-ui/templates/fields/text_area_field.js +4 -0
  331. data/vendor/assets/luca-ui/templates/fields/text_field.js +4 -0
  332. data/vendor/assets/luca-ui/templates/sample/contents.js +4 -0
  333. data/vendor/assets/luca-ui/templates/sample/welcome.js +4 -0
  334. data/vendor/assets/stylesheets/luca-ui.css +471 -68
  335. data/views/jasmine.erb +2 -2
  336. metadata +328 -496
  337. data/app/assets/javascripts/luca/basic.coffee +0 -8
  338. data/app/assets/javascripts/luca/components/application.coffee +0 -530
  339. data/app/assets/javascripts/luca/components/collection_view.coffee +0 -211
  340. data/app/assets/javascripts/luca/components/controller.coffee +0 -176
  341. data/app/assets/javascripts/luca/components/fields/base.coffee +0 -144
  342. data/app/assets/javascripts/luca/components/fields/button_field.coffee +0 -91
  343. data/app/assets/javascripts/luca/components/fields/hidden_field.coffee +0 -11
  344. data/app/assets/javascripts/luca/components/fields/label_field.coffee +0 -12
  345. data/app/assets/javascripts/luca/components/fields/select_field.coffee +0 -159
  346. data/app/assets/javascripts/luca/components/fields/text_area_field.coffee +0 -57
  347. data/app/assets/javascripts/luca/components/fields/type_ahead_field.coffee +0 -20
  348. data/app/assets/javascripts/luca/components/form_view.coffee +0 -421
  349. data/app/assets/javascripts/luca/components/grid_layout_view.coffee +0 -42
  350. data/app/assets/javascripts/luca/components/index.coffee +0 -7
  351. data/app/assets/javascripts/luca/components/load_mask.coffee +0 -8
  352. data/app/assets/javascripts/luca/components/multi_collection_view.coffee +0 -92
  353. data/app/assets/javascripts/luca/components/nav_bar.coffee +0 -80
  354. data/app/assets/javascripts/luca/components/page.coffee +0 -70
  355. data/app/assets/javascripts/luca/components/pagination_control.coffee +0 -104
  356. data/app/assets/javascripts/luca/components/simple_collection_view.coffee +0 -10
  357. data/app/assets/javascripts/luca/components/table_view.coffee +0 -93
  358. data/app/assets/javascripts/luca/components/table_view_scrollable.coffee +0 -23
  359. data/app/assets/javascripts/luca/concerns/application_event_bindings.coffee +0 -19
  360. data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +0 -47
  361. data/app/assets/javascripts/luca/concerns/development_tool_helpers.coffee +0 -30
  362. data/app/assets/javascripts/luca/concerns/dom_helpers.coffee +0 -61
  363. data/app/assets/javascripts/luca/concerns/enhanced_properties.coffee +0 -23
  364. data/app/assets/javascripts/luca/concerns/filterable.coffee +0 -101
  365. data/app/assets/javascripts/luca/concerns/form_model_bindings.coffee +0 -20
  366. data/app/assets/javascripts/luca/concerns/grid_layout.coffee +0 -15
  367. data/app/assets/javascripts/luca/concerns/modal_view.coffee +0 -63
  368. data/app/assets/javascripts/luca/concerns/model_presenter.coffee +0 -23
  369. data/app/assets/javascripts/luca/concerns/paginatable.coffee +0 -79
  370. data/app/assets/javascripts/luca/concerns/query_collection_bindings.coffee +0 -52
  371. data/app/assets/javascripts/luca/concerns/sortable.coffee +0 -69
  372. data/app/assets/javascripts/luca/concerns/state_model.coffee +0 -58
  373. data/app/assets/javascripts/luca/concerns/templating.coffee +0 -13
  374. data/app/assets/javascripts/luca/config.coffee +0 -54
  375. data/app/assets/javascripts/luca/containers/card_view.coffee +0 -178
  376. data/app/assets/javascripts/luca/containers/container.coffee +0 -711
  377. data/app/assets/javascripts/luca/containers/index.coffee +0 -2
  378. data/app/assets/javascripts/luca/containers/page_controller.coffee +0 -25
  379. data/app/assets/javascripts/luca/core/events.coffee +0 -114
  380. data/app/assets/javascripts/luca/core/index.coffee +0 -12
  381. data/app/assets/javascripts/luca/core/model.coffee +0 -56
  382. data/app/assets/javascripts/luca/core/panel.coffee +0 -124
  383. data/app/assets/javascripts/luca/core/registry/component_definition.coffee +0 -319
  384. data/app/assets/javascripts/luca/core/registry/concerns.coffee +0 -70
  385. data/app/assets/javascripts/luca/core/registry/index.coffee +0 -4
  386. data/app/assets/javascripts/luca/core/registry/meta_data.coffee +0 -99
  387. data/app/assets/javascripts/luca/core/templates.coffee +0 -51
  388. data/app/assets/javascripts/luca/core/view.coffee +0 -383
  389. data/app/assets/javascripts/luca/dependencies.coffee +0 -9
  390. data/app/assets/javascripts/luca/development/code_sync_manager.coffee +0 -173
  391. data/app/assets/javascripts/luca/development/component.coffee +0 -76
  392. data/app/assets/javascripts/luca/development/components.coffee +0 -57
  393. data/app/assets/javascripts/luca/development/index.coffee +0 -5
  394. data/app/assets/javascripts/luca/index.coffee +0 -9
  395. data/app/assets/javascripts/luca/managers/index.coffee +0 -2
  396. data/app/assets/javascripts/luca/managers/socket_manager.coffee +0 -89
  397. data/app/assets/javascripts/luca/templates/components/bootstrap_form_controls.jst.ejs +0 -10
  398. data/app/assets/javascripts/luca/templates/components/collection_loader_view.jst.ejs +0 -6
  399. data/app/assets/javascripts/luca/templates/components/form_alert.jst.ejs +0 -4
  400. data/app/assets/javascripts/luca/templates/components/grid_view.jst.ejs +0 -11
  401. data/app/assets/javascripts/luca/templates/components/grid_view_empty_text.jst.ejs +0 -3
  402. data/app/assets/javascripts/luca/templates/components/load_mask.jst.ejs +0 -5
  403. data/app/assets/javascripts/luca/templates/components/nav_bar.jst.ejs +0 -19
  404. data/app/assets/javascripts/luca/templates/components/pagination.jst.ejs +0 -10
  405. data/app/assets/javascripts/luca/templates/components/table_view.jst.ejs +0 -4
  406. data/app/assets/javascripts/luca/templates/containers/basic.jst.ejs +0 -1
  407. data/app/assets/javascripts/luca/templates/containers/tab_selector_container.jst.ejs +0 -12
  408. data/app/assets/javascripts/luca/templates/containers/tab_view.jst.ejs +0 -2
  409. data/app/assets/javascripts/luca/templates/containers/toolbar_wrapper.jst.ejs +0 -1
  410. data/app/assets/javascripts/luca/templates/fields/button_field.jst.ejs +0 -2
  411. data/app/assets/javascripts/luca/templates/fields/button_field_link.jst.ejs +0 -6
  412. data/app/assets/javascripts/luca/templates/fields/checkbox_array.jst.ejs +0 -4
  413. data/app/assets/javascripts/luca/templates/fields/checkbox_array_item.jst.ejs +0 -3
  414. data/app/assets/javascripts/luca/templates/fields/checkbox_field.jst.ejs +0 -10
  415. data/app/assets/javascripts/luca/templates/fields/file_upload_field.jst.ejs +0 -10
  416. data/app/assets/javascripts/luca/templates/fields/hidden_field.jst.ejs +0 -1
  417. data/app/assets/javascripts/luca/templates/fields/select_field.jst.ejs +0 -11
  418. data/app/assets/javascripts/luca/templates/fields/text_area_field.jst.ejs +0 -11
  419. data/app/assets/javascripts/luca/templates/fields/text_field.jst.ejs +0 -16
  420. data/app/assets/javascripts/luca/util/deprecations.coffee +0 -18
  421. data/app/assets/javascripts/luca/util/index.coffee +0 -4
  422. data/app/assets/javascripts/luca/util/keybindings.coffee +0 -24
  423. data/app/assets/javascripts/luca/util/logging.coffee +0 -30
  424. data/app/assets/javascripts/luca-ui.js +0 -1
  425. data/app/assets/stylesheets/luca/components/form_view.scss +0 -7
  426. data/app/assets/stylesheets/luca/containers/container.scss +0 -19
  427. data/app/assets/stylesheets/luca/development/index.css +0 -3
  428. data/app/assets/stylesheets/luca/index.css +0 -4
  429. data/bin/luca +0 -14
  430. data/docs/framework.json +0 -1
  431. data/docs/luca-framework-documentation.js +0 -1
  432. data/lib/generators/luca/application/application_generator.rb +0 -75
  433. data/lib/generators/luca/application/templates/controller.rb +0 -4
  434. data/lib/generators/luca/application/templates/index.html.erb +0 -19
  435. data/lib/generators/luca/application/templates/index.html.haml +0 -7
  436. data/lib/generators/luca/application/templates/javascripts/application.coffee +0 -18
  437. data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +0 -2
  438. data/lib/generators/luca/application/templates/javascripts/config.coffee +0 -3
  439. data/lib/generators/luca/application/templates/javascripts/dependencies.coffee +0 -3
  440. data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +0 -2
  441. data/lib/generators/luca/application/templates/javascripts/index.coffee +0 -15
  442. data/lib/generators/luca/application/templates/javascripts/router.coffee +0 -4
  443. data/lib/guard/luca.rb +0 -84
  444. data/lib/luca/asset_compiler.rb +0 -117
  445. data/lib/luca/cli/generate.rb +0 -37
  446. data/lib/luca/cli/server.rb +0 -20
  447. data/lib/luca/cli/sync.rb +0 -40
  448. data/lib/luca/cli/watch.rb +0 -16
  449. data/lib/luca/cli.rb +0 -68
  450. data/lib/luca/collection/endpoint.rb +0 -38
  451. data/lib/luca/collection/file_backend.rb +0 -121
  452. data/lib/luca/collection/redis_backend.rb +0 -153
  453. data/lib/luca/collection.rb +0 -64
  454. data/lib/luca/compiled_asset.rb +0 -61
  455. data/lib/luca/component_definition.rb +0 -356
  456. data/lib/luca/luca_application.rb +0 -258
  457. data/lib/luca/project.rb +0 -73
  458. data/lib/luca/project_harness.rb +0 -96
  459. data/lib/luca/server.rb +0 -7
  460. data/lib/luca/stylesheet.rb +0 -35
  461. data/lib/luca/template_asset.rb +0 -64
  462. data/lib/luca/version.rb +0 -3
  463. data/lib/luca/watcher.rb +0 -72
  464. data/lib/railties/luca/tasks.rake +0 -38
  465. data/site/.bundle/config +0 -2
  466. data/site/.gitignore +0 -5
  467. data/site/.rvmrc +0 -1
  468. data/site/CHANGELOG.md +0 -41
  469. data/site/DOCS.md +0 -41
  470. data/site/Gemfile +0 -8
  471. data/site/Gemfile.lock +0 -134
  472. data/site/LICENSE.md +0 -19
  473. data/site/config.rb +0 -84
  474. data/site/helpers/site_helpers.rb +0 -20
  475. data/site/html5bp-docs/README.md +0 -38
  476. data/site/html5bp-docs/contribute.md +0 -104
  477. data/site/html5bp-docs/crossdomain.md +0 -21
  478. data/site/html5bp-docs/css.md +0 -135
  479. data/site/html5bp-docs/extend.md +0 -507
  480. data/site/html5bp-docs/faq.md +0 -77
  481. data/site/html5bp-docs/htaccess.md +0 -323
  482. data/site/html5bp-docs/html.md +0 -170
  483. data/site/html5bp-docs/js.md +0 -31
  484. data/site/html5bp-docs/misc.md +0 -25
  485. data/site/html5bp-docs/usage.md +0 -109
  486. data/site/readme.md +0 -47
  487. data/site/source/.htaccess +0 -540
  488. data/site/source/404.html +0 -157
  489. data/site/source/app/assets/javascripts/dependencies.js.coffee +0 -6
  490. data/site/source/app/assets/javascripts/docs/application.coffee +0 -64
  491. data/site/source/app/assets/javascripts/docs/collections/docs_documentation.coffee +0 -17
  492. data/site/source/app/assets/javascripts/docs/collections/github_repositories.coffee +0 -7
  493. data/site/source/app/assets/javascripts/docs/collections/index.coffee +0 -1
  494. data/site/source/app/assets/javascripts/docs/collections/luca_documentation.coffee +0 -17
  495. data/site/source/app/assets/javascripts/docs/collections/public_gists.coffee +0 -4
  496. data/site/source/app/assets/javascripts/docs/config.coffee +0 -5
  497. data/site/source/app/assets/javascripts/docs/index.coffee +0 -12
  498. data/site/source/app/assets/javascripts/docs/lib/router.coffee +0 -3
  499. data/site/source/app/assets/javascripts/docs/models/component.coffee +0 -99
  500. data/site/source/app/assets/javascripts/docs/models/github_repository.coffee +0 -3
  501. data/site/source/app/assets/javascripts/docs/models/index.coffee +0 -1
  502. data/site/source/app/assets/javascripts/docs/templates/component_documentation.jst.ejs +0 -55
  503. data/site/source/app/assets/javascripts/docs/templates/examples_browser/overview.jst.ejs +0 -4
  504. data/site/source/app/assets/javascripts/docs/templates/examples_browser/selector.jst.ejs +0 -11
  505. data/site/source/app/assets/javascripts/docs/templates/github_repository.jst.ejs +0 -4
  506. data/site/source/app/assets/javascripts/docs/templates/layouts/main.jst.ejs +0 -4
  507. data/site/source/app/assets/javascripts/docs/templates/left_navigation.jst.ejs +0 -5
  508. data/site/source/app/assets/javascripts/docs/templates/pages/getting_started.jst.ejs +0 -78
  509. data/site/source/app/assets/javascripts/docs/templates/pages/home.jst.ejs +0 -57
  510. data/site/source/app/assets/javascripts/docs/views/components/code_editor.coffee +0 -45
  511. data/site/source/app/assets/javascripts/docs/views/components/component_documentation.coffee +0 -72
  512. data/site/source/app/assets/javascripts/docs/views/index.coffee +0 -3
  513. data/site/source/app/assets/javascripts/docs/views/pages/browse_source/details.coffee +0 -37
  514. data/site/source/app/assets/javascripts/docs/views/pages/browse_source/list.coffee +0 -31
  515. data/site/source/app/assets/javascripts/docs/views/pages/browse_source.coffee +0 -46
  516. data/site/source/app/assets/javascripts/docs/views/pages/component_editor.coffee +0 -10
  517. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/docs.coffee +0 -12
  518. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser/source.coffee +0 -13
  519. data/site/source/app/assets/javascripts/docs/views/pages/examples_browser.coffee +0 -102
  520. data/site/source/app/assets/javascripts/docs/views/pages/home.coffee +0 -10
  521. data/site/source/app/assets/javascripts/docs/views/views/api_browser/index.coffee +0 -43
  522. data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/grid_layout_view_example.coffee +0 -14
  523. data/site/source/app/assets/javascripts/docs/views/views/collection_view_examples/table_view_example.coffee +0 -39
  524. data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/basic_example.coffee +0 -38
  525. data/site/source/app/assets/javascripts/docs/views/views/form_view_examples/complex_layout.coffee +0 -110
  526. data/site/source/app/assets/javascripts/docs/views/views/top_navigation.coffee +0 -6
  527. data/site/source/app/assets/javascripts/docs-docs.js +0 -1
  528. data/site/source/app/assets/javascripts/luca-docs.js +0 -1
  529. data/site/source/app/assets/javascripts/luca-framework-documentation.js +0 -1
  530. data/site/source/app/assets/javascripts/site.js.coffee +0 -4
  531. data/site/source/app/assets/javascripts/vendor/codemirror.js +0 -4786
  532. data/site/source/app/assets/javascripts/vendor/coffeescript.js +0 -346
  533. data/site/source/app/assets/javascripts/vendor/css.js +0 -465
  534. data/site/source/app/assets/javascripts/vendor/htmlmixed.js +0 -84
  535. data/site/source/app/assets/javascripts/vendor/javascript.js +0 -422
  536. data/site/source/app/assets/javascripts/vendor/js-beautify.js +0 -1353
  537. data/site/source/app/assets/javascripts/vendor/modernizr-2.6.1.min.js +0 -4
  538. data/site/source/app/assets/javascripts/vendor/vim.js +0 -2511
  539. data/site/source/app/assets/stylesheets/docs/api-browser.css.scss +0 -5
  540. data/site/source/app/assets/stylesheets/docs/application.css.scss +0 -35
  541. data/site/source/app/assets/stylesheets/docs/browse-source.css.scss +0 -5
  542. data/site/source/app/assets/stylesheets/docs/scrollable-table.css.scss +0 -5
  543. data/site/source/app/assets/stylesheets/site.css.scss +0 -2
  544. data/site/source/app/assets/stylesheets/vendor/codemirror.css +0 -240
  545. data/site/source/app/assets/stylesheets/vendor/prettify-tomorrow-night-bright.css +0 -160
  546. data/site/source/app/assets/stylesheets/vendor/twilight.css +0 -26
  547. data/site/source/crossdomain.xml +0 -15
  548. data/site/source/documentation.html.haml +0 -1
  549. data/site/source/favicon_base.png +0 -0
  550. data/site/source/humans.txt +0 -15
  551. data/site/source/images/background.png +0 -0
  552. data/site/source/images/middleman.png +0 -0
  553. data/site/source/index.html.haml +0 -1
  554. data/site/source/layouts/layout.haml +0 -55
  555. data/site/source/readme.md +0 -63
  556. data/site/source/robots.txt +0 -3
  557. data/spec/javascripts/components/collection_view_spec.coffee +0 -59
  558. data/spec/javascripts/components/controller_spec.coffee +0 -62
  559. data/spec/javascripts/components/form_view_spec.coffee +0 -162
  560. data/spec/javascripts/components/multi_collection_view_spec.coffee +0 -5
  561. data/spec/javascripts/components/table_view_spec.coffee +0 -17
  562. data/spec/javascripts/concerns/collection_event_bindings_spec.coffee +0 -15
  563. data/spec/javascripts/concerns/dom_helpers_spec.coffee +0 -16
  564. data/spec/javascripts/concerns/filterable_spec.coffee +0 -25
  565. data/spec/javascripts/concerns/model_presenter_spec.coffee +0 -31
  566. data/spec/javascripts/concerns/state_model_spec.coffee +0 -55
  567. data/spec/javascripts/containers/card_view_spec.coffee +0 -108
  568. data/spec/javascripts/core/concerns_spec.coffee +0 -88
  569. data/spec/javascripts/core/container_spec.coffee +0 -287
  570. data/spec/javascripts/core/define_spec.coffee +0 -116
  571. data/spec/javascripts/core/events_spec.coffee +0 -26
  572. data/spec/javascripts/core/field_spec.coffee +0 -4
  573. data/spec/javascripts/core/util_spec.coffee +0 -24
  574. data/spec/javascripts/dependencies/index.coffee +0 -3
  575. data/spec/lib/component_definition_spec.rb +0 -63
  576. data/spec/lib/input_compiler_spec.rb +0 -9
  577. data/spec/lib/luca_application_spec.rb +0 -30
  578. data/spec/support/fixtures/application.coffee +0 -45
  579. data/spec/support/fixtures/component.coffee +0 -34
  580. data/tutorials/component-driven-design.md +0 -140
  581. data/tutorials/structure-of-a-project.md +0 -63
  582. data/vendor/assets/javascripts/backbone-ext.js +0 -21
  583. data/vendor/assets/javascripts/backbone-min.js +0 -42
  584. data/vendor/assets/javascripts/backbone-query.min.js +0 -1
  585. data/vendor/assets/javascripts/bootstrap.min.js +0 -7
  586. data/vendor/assets/javascripts/codemirror-ui.js +0 -503
  587. data/vendor/assets/javascripts/hogan.js +0 -707
  588. data/vendor/assets/javascripts/inflections.js +0 -656
  589. data/vendor/assets/javascripts/jasmine-html.js +0 -190
  590. data/vendor/assets/javascripts/jasmine.js +0 -2476
  591. data/vendor/assets/javascripts/jquery.js +0 -5
  592. data/vendor/assets/javascripts/keymaster.min.js +0 -4
  593. data/vendor/assets/javascripts/luca-dependencies.min.js +0 -8
  594. data/vendor/assets/javascripts/luca-development.min.js +0 -1
  595. data/vendor/assets/javascripts/luca-spec.js +0 -11
  596. data/vendor/assets/javascripts/luca.full.min.js +0 -12
  597. data/vendor/assets/javascripts/luca.min.js +0 -5
  598. data/vendor/assets/javascripts/sinon.js +0 -3469
  599. data/vendor/assets/javascripts/underscore-min.js +0 -1
  600. data/vendor/assets/javascripts/underscore-string.min.js +0 -1
  601. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +0 -9
  602. data/vendor/assets/stylesheets/bootstrap.min.css +0 -9
  603. data/vendor/assets/stylesheets/luca-components.css +0 -202
  604. data/vendor/assets/stylesheets/luca-development.css +0 -23
@@ -1,70 +0,0 @@
1
- Luca.concern = (mixinName)->
2
- namespace = _( Luca.concern.namespaces ).detect (space)->
3
- Luca.util.resolve(space)?[ mixinName ]?
4
-
5
- namespace ||= "Luca.concerns"
6
-
7
- resolved = Luca.util.resolve(namespace)[ mixinName ]
8
-
9
- console.log "Could not find #{ mixinName } in ", Luca.concern.namespaces unless resolved?
10
-
11
- resolved
12
-
13
- Luca.concern.namespaces = [
14
- "Luca.concerns"
15
- ]
16
-
17
- Luca.concern.namespace = (namespace)->
18
- Luca.concern.namespaces.push(namespace)
19
- Luca.concern.namespaces = _( Luca.concern.namespaces ).uniq()
20
-
21
- Luca.concern.setup = ()->
22
- if @concerns?.length > 0
23
- for module in @concerns
24
- Luca.concern(module)?.__initializer?.call(@, @, module)
25
-
26
- # Luca.decorate('Luca.View').with('Luca.concerns.MyCustomMixin')
27
- Luca.decorate = (target)->
28
- try
29
- if _.isString(target)
30
- componentName = target
31
- componentClass = Luca.util.resolve(componentName)
32
-
33
- componentClass = target if _.isFunction(target)
34
- componentPrototype = componentClass.prototype
35
- componentName = componentName || componentClass.displayName
36
- componentName ||= componentPrototype.displayName
37
- catch e
38
- console.log e.message
39
- console.log e.stack
40
- console.log "Error calling Luca.decorate on ", componentClass, componentPrototype, componentName
41
-
42
- throw(e)
43
-
44
- return with: (mixinName)->
45
- mixinDefinition = Luca.concern(mixinName)
46
- mixinDefinition.__displayName ||= mixinName
47
-
48
- mixinPrivates = _( mixinDefinition ).chain().keys().select (key)->
49
- "#{ key }".match(/^__/) or key is "classMethods"
50
-
51
- sanitized = _( mixinDefinition ).omit( mixinPrivates.value() )
52
-
53
- _.extend(componentPrototype, sanitized)
54
-
55
- if mixinDefinition.classMethods?
56
- for method, fn of mixinDefinition.classMethods
57
- componentClass[ method ] = _.bind(fn, componentClass)
58
-
59
- # When a mixin is included, we may want to do things
60
- mixinDefinition?.__included?(componentName, componentClass, mixinDefinition)
61
-
62
- superclassMixins = componentPrototype._superClass()::concerns
63
-
64
- componentPrototype.concerns ||= []
65
- componentPrototype.concerns.push( mixinName )
66
- componentPrototype.concerns = componentPrototype.concerns.concat( superclassMixins )
67
-
68
- componentPrototype.concerns = _( componentPrototype.concerns ).chain().uniq().compact().value()
69
-
70
- componentPrototype
@@ -1,4 +0,0 @@
1
- #= require ./concerns
2
- #= require ./component_definition
3
- #= require ./registry
4
- #= require ./meta_data
@@ -1,99 +0,0 @@
1
- Luca.registry.componentMetaData = {}
2
-
3
- Luca.registry.getMetaDataFor = (componentName)->
4
- new MetaDataProxy(Luca.registry.componentMetaData[ componentName ])
5
-
6
- Luca.registry.addMetaData = (componentName, key, value)->
7
- data = Luca.registry.componentMetaData[ componentName ] ||= {}
8
- data[ key ] = _(value).clone()
9
- data
10
-
11
- class MetaDataProxy
12
- constructor: (@meta={})->
13
- _.defaults @meta,
14
- "super class name" : ""
15
- "display name" : ""
16
- "descendants": []
17
- "aliases": []
18
- "public interface" : []
19
- "public configuration" : []
20
- "private interface" : []
21
- "private configuration" : []
22
- "class configuration" : []
23
- "class interface" : []
24
-
25
- className: ()->
26
- @meta["display name"]
27
- superClass: ()->
28
- Luca.util.resolve(@meta["super class name"])
29
-
30
- componentDefinition: ()->
31
- Luca.registry.find @meta["display name"]
32
-
33
- componentPrototype: ()->
34
- @componentDefinition()?.prototype
35
-
36
- prototypeFunctions: ()->
37
- _.functions( @componentPrototype() )
38
-
39
- classAttributes: ()->
40
- _.uniq @classInterface().concat( @classConfiguration() )
41
-
42
- publicAttributes: ()->
43
- _.uniq @publicInterface().concat( @publicConfiguration() )
44
-
45
- privateAttributes: ()->
46
- _.uniq @privateInterface().concat( @privateConfiguration() )
47
-
48
- classMethods: ()->
49
- list = _.functions( @componentDefinition() )
50
- _( list ).intersection( @classAttributes() )
51
-
52
- publicMethods: ()->
53
- _( @prototypeFunctions() ).intersection( @publicAttributes() )
54
-
55
- privateMethods: ()->
56
- _( @prototypeFunctions() ).intersection( @privateAttributes() )
57
-
58
- classConfiguration: ()->
59
- @meta["class configuration"]
60
-
61
- publicConfiguration: ()->
62
- @meta["public configuration"]
63
-
64
- privateConfiguration: ()->
65
- @meta["private configuration"]
66
-
67
- classInterface: ()->
68
- @meta["class interface"]
69
-
70
- publicInterface: ()->
71
- @meta["public interface"]
72
-
73
- privateInterface: ()->
74
- @meta["private interface"]
75
-
76
- triggers: ()->
77
- @meta["hooks"]
78
-
79
- hooks: ()->
80
- @meta["hooks"]
81
-
82
- descendants: ()->
83
- @meta["descendants"]
84
- styleHierarchy: ()->
85
- list = _( @classHierarchy() ).map (cls)->
86
- Luca.util.toCssClass(cls, 'views', 'components', 'core','fields','containers')
87
-
88
- _( list ).without('backbone-view','luca-view')
89
-
90
- classHierarchy: ()->
91
- list = [ @meta["display name"], @meta["super class name"]]
92
-
93
- proxy = @superClass()?.prototype?.componentMetaData?()
94
-
95
- until not proxy
96
- list = list.concat( proxy?.classHierarchy() )
97
- proxy = proxy.superClass()?.prototype?.componentMetaData?()
98
-
99
- _( list ).uniq()
@@ -1,51 +0,0 @@
1
- Luca.templates ||= {}
2
-
3
- if window.JST?
4
- for templateId, templateFn of JST when templateId.match(/^luca\/templates\//)
5
- Luca.templates[ templateId.replace('luca/templates/','') ] = templateFn
6
- _( JST ).delete( templateId )
7
-
8
- # This is a convenience method for accessing the templates
9
- # available to the client side app, either the ones which ship with Luca
10
- # available in Luca.templates ( these take precedence ) or
11
- # the app's own templates which are usually available in JST
12
-
13
- # optionally, passing in variables will compile the template for you, instead
14
- # of returning a reference to the function which you would then call yourself
15
- Luca.template = (template_name, variables, partials)->
16
- window.JST ||= {}
17
-
18
- if _.isFunction(template_name)
19
- return template_name(variables)
20
-
21
- luca = Luca.templates?[ template_name ]
22
- jst = JST?[ template_name ]
23
-
24
- unless luca? or jst?
25
- needle = new RegExp("#{ template_name }$")
26
-
27
- luca = _( Luca.templates ).detect (fn,template_id)->
28
- needle.exec( template_id )
29
-
30
- jst = _( JST ).detect (fn,template_id)->
31
- needle.exec( template_id )
32
-
33
- throw "Could not find template named #{ template_name }" unless luca || jst
34
-
35
- template = luca || jst
36
-
37
- if template instanceof Hogan.template
38
- if variables?
39
- return template.render(variables, partials)
40
-
41
- return template(variables) if variables?
42
-
43
- template
44
-
45
- Luca.available_templates = (filter="")->
46
- available = _( Luca.templates ).keys()
47
-
48
- if filter.length > 0
49
- _( available ).select (tmpl)-> tmpl.match(filter)
50
- else
51
- available
@@ -1,383 +0,0 @@
1
- # `Luca.View` is an enhanced `Backbone.View` which provides common patterns for view components,
2
- # and various helper methods and configuration conventions.
3
- #
4
- # #### Instance caching / naming
5
- #
6
- # If you provide a `@name` property to your views, they will be accessible by that property
7
- # using the Application helper.
8
- #
9
- # view = new Luca.View(name:"my_view")
10
- # Luca("my_view") === view
11
- #
12
- # #### CSS @className conventions
13
- #
14
- # In order to make it easier to componentize your views, extending from `Luca.View` will
15
- # enable CSS class based inheritance based on the names of the view class.
16
- #
17
- # ##### For Example:
18
- #
19
- # base = Luca.register "App.views.BaseViewClass"
20
- # base.extends "Luca.View"
21
- # base.defines
22
- # className: "some-other-class"
23
- #
24
- # child = Luca.register "App.views.ChildViewClass"
25
- # child.extends "App.views.BaseViewClass"
26
- # child.defines
27
- # myClasses: ()->
28
- # @$el.attr('class')
29
- #
30
- # view = new App.views.ChildViewClass()
31
- # view.myClasses() #=> "app-base-view-class app-child-view-class some-other-class"
32
- #
33
- # This establishes a convention for css class names, and allows you to componetize your css
34
- # along with the component by joining them based on the name of your view class. When using
35
- # Sass scoping / nesting it fits very nicely together.
36
- #
37
- # #### Internal state machine
38
- #
39
- # Any `Luca.View` class which defines a `@stateful` property will automatically generate a
40
- # `@state` model that can be used to get/set attributes on the view as well as bind to change events on these attributes.
41
- #
42
- # This gives your views a dedicated place to store state, and you can bind to your data models separately
43
- # and update the DOM without confusing the two.
44
- #
45
- # statefulView = Luca.register "App.views.StatefulView"
46
- # statefulView.extends "Luca.View"
47
- #
48
- # statefulView.defines
49
- # # Passing an object allows you to set default values on the @state model.
50
- # stateful:
51
- # attribute: "value"
52
- #
53
- # # Whenever the attribute specified changes, call the specified method.
54
- # stateChangeEvents:
55
- # "attribute" : "onAttributeChange"
56
- #
57
- # onAttributeChange: (stateMachine, attributeValue)->
58
- # @doSomethingWhenAttributeChanges()
59
- #
60
- # If this type of declarative style isn't your thing, you can still bind to events in code:
61
- #
62
- # view = new App.views.StatefulView()
63
- # view.on "state:change:attribute", (stateMachine, attributeValue)=> @$el.html("New Attribute: #")
64
- # view.set "attribute", "something"
65
- #
66
- # #### Event binding helpers
67
- #
68
- # In addition to the `@stateChangeEvent` bindings documented above, you have available
69
- # to you similar configuration helpers for binding to events emitted by the singletons:
70
- #
71
- # - `Luca.Application` via `@applicationEvents`
72
- # - `Luca.CollectionManager` via `@collectionEvents`
73
- # - `Luca.SocketManager` via `@socketEvents`
74
- view = Luca.register "Luca.View"
75
- view.extends "Backbone.View"
76
-
77
- # includes are extensions to the prototype, and have no special behavior
78
- view.includes "Luca.Events",
79
- "Luca.concerns.DomHelpers",
80
- "Luca.concerns.DevelopmentToolHelpers"
81
-
82
- # concerns are includes with special property / method conventions
83
- # which customize the components through the use of __initializer and
84
- # __included method names. These will be called every time an instance
85
- # is created, and the first time the mixin is used to enhance a component.
86
- view.mixesIn "DomHelpers",
87
- "Templating",
88
- "EnhancedProperties",
89
- "CollectionEventBindings",
90
- "ApplicationEventBindings",
91
- "StateModel"
92
-
93
- # Luca.View classes have the concept of special events called hooks
94
- # which allow you to tap into the lifecycle events of your view to
95
- # customize their behavior. This is especially useful in subclasses.
96
- #
97
- # You can utilize a @hook method by camelcasing the triggers defined below:
98
- view.triggers "before:initialize",
99
- "after:initialize",
100
- "before:render",
101
- "after:render",
102
- "first:activation",
103
- "activation",
104
- "deactivation"
105
-
106
- view.publicConfiguration
107
- # Specifying a `@name` for your views is useful for views which
108
- # there will only be one instance. This allows you to reference
109
- # the view instances by name using the application helper:
110
- # Luca("my_view_name")
111
- name: undefined
112
-
113
- # Setting this property to true will automatically bind the context
114
- # of your event handler methods to the instance of this view. This
115
- # saves you from having to manually do:
116
- #
117
- # Luca.View.extend
118
- # events:
119
- # "click .one" : "oneHandler"
120
- # "click .two" : "twoHandler"
121
- # initialize: ()->
122
- # _.bindAll(@, "oneHandler", "twoHandler")
123
- #
124
- # Instead:
125
- #
126
- # Luca.View.extend
127
- # autoBindEventHandlers: true
128
- # events:
129
- # "click .one" : "oneHandler"
130
- #
131
- # Optionally, you can define an array of method names you want bound
132
- # to this view:
133
- #
134
- # Luca.View.extend
135
- # bindMethods:["oneHandler","twoHandler"]
136
- #
137
- autoBindEventHandlers: false
138
-
139
- # Supplying configuration to `@_inheritEvents` will ensure that this configuration
140
- # is present on views which extend from this view. In normal Backbone behavior
141
- # the `@events` property can be overridden by views which extend, and this isn't
142
- # always what you want from your component.
143
- _inheritEvents: undefined
144
-
145
-
146
-
147
- # Luca.View decorates Backbone.View with some patterns and conventions.
148
- view.publicMethods
149
- identifier: ()->
150
- (@displayName || @type ) + ":" + (@name || @role || @cid)
151
-
152
- # Calls Backbone.View::remove, and removes the view from the
153
- # instance cache. Triggers a "before:remove" event.
154
- remove: ()->
155
- @trigger("before:remove", @)
156
- Luca.remove(@)
157
- Backbone.View::remove.apply(@, arguments)
158
-
159
- initialize: (@options={})->
160
- @trigger "before:initialize", @, @options
161
-
162
- _.extend @, @options
163
-
164
- if @autoBindEventHandlers is true or @bindAllEvents is true
165
- bindAllEventHandlers.call(@)
166
-
167
- @cid = _.uniqueId(@name) if @name?
168
-
169
- @$el.attr("data-luca-id", @name || @cid)
170
-
171
- Luca.registry.cacheInstance( @cid, @ )
172
-
173
- @setupHooks _( Luca.View::hooks.concat( @hooks ) ).uniq()
174
-
175
- Luca.concern.setup.call(@)
176
-
177
- @delegateEvents() unless _.isEmpty(@events)
178
-
179
- @trigger "after:initialize", @
180
-
181
- _.bindAll(@, @bindMethods...) if @bindMethods?.legth > 0
182
-
183
- unless _.isEmpty(@_inheritEvents)
184
- for eventId, handler of @_inheritEvents
185
- @registerEvent(eventId, handler)
186
-
187
-
188
- debug: (args...)->
189
- if @debugMode is true or window.LucaDebugMode is true
190
- args.unshift @identifier()
191
- console.log args...
192
-
193
- trigger: ()->
194
- if Luca.enableGlobalObserver
195
- if Luca.developmentMode is true or @observeEvents is true
196
- Luca.ViewObserver ||= new Luca.Observer(type:"view")
197
- Luca.ViewObserver.relay @, arguments
198
-
199
- Backbone.View::trigger.apply @, arguments
200
-
201
- # Backbone.View.prototype.make is removed in 0.9.10.
202
- # As we happen to rely on this little utility heavily,
203
- # we add it to Luca.View
204
- make: (tagName, attributes, content)->
205
- el = document.createElement(tagName);
206
- if (attributes)
207
- Backbone.$(el).attr(attributes)
208
- if (content != null)
209
- Backbone.$(el).html(content)
210
-
211
- el
212
-
213
- registerEvent: (selector, handler)->
214
- @events ||= {}
215
-
216
- if _.isObject(selector)
217
- @events = _.extend(@events, selector)
218
- else
219
- if _.isFunction(handler) || (_.isString(handler) && @[handler]?)
220
- @events[selector] = handler
221
-
222
- @delegateEvents()
223
-
224
- view.privateMethods
225
- # Returns a reference to the class which this view is an instance of.
226
- definitionClass: ()->
227
- Luca.util.resolve(@displayName, window)?.prototype
228
-
229
- # Returns a list of all of the collections which are properties on this view.
230
- _collections: ()->
231
- Luca.util.selectProperties( Luca.isBackboneCollection, @ )
232
-
233
- # Returns a list of all of the models which are properties on this view.
234
- _models: ()->
235
- Luca.util.selectProperties( Luca.isBackboneModel, @ )
236
-
237
- # Returns a list of all of the views which are properties on this view.
238
- _views: ()->
239
- Luca.util.selectProperties( Luca.isBackboneView, @ )
240
-
241
- # views which inherit from Luca.View can define hooks
242
- # or events which can be emitted from them. Automatically,
243
- # any functions on the view which are named according to the
244
- # convention will automatically get run.
245
- #
246
- # by default, all Luca.View classes come with the following:
247
- #
248
- # - before:render : beforeRender()
249
- # - after:render : afterRender()
250
- # - after:initialize : afterInitialize()
251
- # - first:activation : firstActivation()
252
- setupHooks: Luca.util.setupHooks
253
-
254
- # In order to support some Luca apps which rely
255
- # on Backbone.View.make.
256
- view.afterDefinition ()->
257
- if not Backbone.View::make?
258
- Backbone.View::make = ()->
259
- console.log "Backbone.View::make has been removed from backbone. You should use Luca.View::make instead."
260
- Luca.View::make
261
-
262
- view.register()
263
-
264
- Luca.View._originalExtend = Backbone.View.extend
265
-
266
- # Note:
267
- #
268
- # I will be removing this prior to 1.0. Optimizing for collection based
269
- # views does not belong in here, so the deferrable / collection binding stuff
270
- # needs to go.
271
- #
272
- # Being able to defer rendering until the firing of an event on another object
273
- # is something that does ask for some syntactic sugar though, so need to rethink.
274
-
275
- Luca.View.renderStrategies =
276
- legacy: ( _userSpecifiedMethod )->
277
- view = @
278
- # if a view has a deferrable property set
279
-
280
- if @deferrable
281
- target = @deferrable_target
282
-
283
- unless Luca.isBackboneCollection(@deferrable)
284
- @deferrable = @collection
285
-
286
- target ||= @deferrable
287
- trigger = if @deferrable_event then @deferrable_event else Luca.View.deferrableEvent
288
-
289
- deferred = ()->
290
- _userSpecifiedMethod.call(view)
291
- @rendered = true
292
- view.trigger("after:render", view)
293
-
294
- view.defer(deferred).until(target, trigger)
295
-
296
- view.trigger "before:render", @
297
-
298
- autoTrigger = @deferrable_trigger || @deferUntil
299
-
300
- if !autoTrigger?
301
- target[ (@deferrable_method||"fetch") ].call(target)
302
- else
303
- fn = _.once ()=> @deferrable[ (@deferrable_method||"fetch") ]?()
304
- (@deferrable_target || @ ).bind(@deferrable_trigger, fn)
305
-
306
- return @
307
-
308
- else
309
- @trigger "before:render", @
310
- _userSpecifiedMethod.apply(@, arguments)
311
- @rendered = true
312
- @trigger "after:render", @
313
-
314
- return @
315
-
316
- improved: (_userSpecifiedMethod)->
317
- @trigger "before:render", @
318
-
319
- deferred = ()=>
320
- _userSpecifiedMethod.apply(@, arguments)
321
- @trigger "after:render", @
322
-
323
- console.log "doing the improved one", @deferrable
324
-
325
- if @deferrable? and not _.isString(@deferrable)
326
- throw "Deferrable property is expected to be a event id"
327
-
328
- if _.isString(@deferrable)
329
- console.log "binding to #{ @deferrable } on #{ @cid }"
330
- view.on @deferrable, ()->
331
- console.log "did the improved one"
332
- deferred.call(view)
333
- view.unbind(listenForEvent, @)
334
-
335
- else
336
- deferred.call(@)
337
-
338
-
339
-
340
- Luca.View.renderWrapper = (definition)->
341
- _userSpecifiedMethod = definition.render
342
-
343
- _userSpecifiedMethod ||= ()-> @trigger "empty:render"
344
-
345
- definition.render = ()->
346
- strategy = Luca.View.renderStrategies[ @renderStrategy ||= "legacy" ]
347
-
348
- unless _.isFunction(strategy)
349
- throw "Invalid rendering strategy. Please see Luca.View.renderStrategies"
350
-
351
- strategy.call(@, _userSpecifiedMethod)
352
-
353
- @
354
-
355
- definition
356
-
357
- bindAllEventHandlers = ()->
358
- for config in [@events, @componentEvents, @collectionEvents, @applicationEvents] when not _.isEmpty(config)
359
- bindEventHandlers.call(@, config)
360
-
361
- bindEventHandlers = (events={})->
362
- for eventSignature, handler of events
363
- if _.isString(handler)
364
- try
365
- _.bindAll @, handler
366
- catch e
367
- console.log "Error binding to handler - #{handler} = #{e} #{@identifier()}"
368
-
369
- Luca.View.deferrableEvent = "reset"
370
-
371
- Luca.View.extend = (definition={})->
372
- definition = Luca.View.renderWrapper( definition )
373
- # for backward compatibility
374
- definition.concerns ||= definition.concerns if definition.concerns?
375
-
376
- componentClass = Luca.View._originalExtend.call(@, definition)
377
-
378
- if definition.concerns? and _.isArray( definition.concerns )
379
- for module in definition.concerns
380
- Luca.decorate( componentClass ).with( module )
381
-
382
- componentClass
383
-
@@ -1,9 +0,0 @@
1
- #= require jquery
2
- #= require underscore-min
3
- #= require underscore-string.min
4
- #= require hogan.js
5
- #= require backbone-min
6
- #= require backbone-query.min
7
- #= require bootstrap.min
8
- #= require keymaster.min
9
- #= require_self