sproutcore 1.4.5 → 1.5.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (792) hide show
  1. data/CHANGELOG +35 -0
  2. data/VERSION.yml +2 -2
  3. data/lib/Buildfile +13 -4
  4. data/lib/buildtasks/build.rake +20 -17
  5. data/lib/buildtasks/manifest.rake +143 -78
  6. data/lib/buildtasks/target.rake +1 -0
  7. data/lib/doc_templates/sproutcore/index.tmpl +18 -4
  8. data/lib/doc_templates/sproutcore/publish.js +1 -1
  9. data/lib/frameworks/sproutcore/Buildfile +24 -13
  10. data/lib/frameworks/sproutcore/{CHANGELOG-1.4.md → CHANGELOG.md} +0 -0
  11. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/file.js +8 -48
  12. data/lib/frameworks/sproutcore/apps/greenhouse/core.js +3 -5
  13. data/lib/frameworks/sproutcore/apps/greenhouse/data_source.js +1 -1
  14. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/app_page.js +26 -4
  15. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/strings.js +7 -1
  16. data/lib/frameworks/sproutcore/apps/greenhouse/main.js +1 -1
  17. data/lib/frameworks/sproutcore/apps/greenhouse/models/design.js +6 -2
  18. data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +8 -7
  19. data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +2 -2
  20. data/lib/frameworks/sproutcore/apps/greenhouse/states/inspector.js +133 -125
  21. data/lib/frameworks/sproutcore/apps/greenhouse/states/library.js +121 -112
  22. data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +233 -191
  23. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +265 -258
  24. data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +153 -141
  25. data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
  26. data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +21 -0
  27. data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +108 -0
  28. data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +36 -0
  29. data/lib/frameworks/sproutcore/apps/test_controls/core.js +29 -0
  30. data/lib/frameworks/sproutcore/apps/test_controls/main.js +14 -0
  31. data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +142 -0
  32. data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +45 -0
  33. data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +84 -0
  34. data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +40 -0
  35. data/lib/frameworks/sproutcore/apps/test_controls/resources/loading.rhtml +9 -0
  36. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +60 -0
  37. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +144 -0
  38. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +42 -0
  39. data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +48 -0
  40. data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +76 -0
  41. data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +98 -0
  42. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +60 -0
  43. data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +53 -0
  44. data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +50 -0
  45. data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +44 -0
  46. data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +41 -0
  47. data/lib/frameworks/sproutcore/apps/test_controls/theme.js +34 -0
  48. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +7 -0
  49. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/images/main-bg.png +0 -0
  50. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +24 -6
  51. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +36 -46
  52. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/controllers/array.js +175 -195
  53. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/controllers/controller.js +0 -0
  54. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/controllers/object.js +0 -0
  55. data/lib/frameworks/sproutcore/frameworks/amber/core.js +201 -0
  56. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/ext/object.js +23 -23
  57. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/ext/run_loop.js +47 -47
  58. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/mixins/delegate_support.js +36 -36
  59. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/mixins/responder_context.js +55 -55
  60. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/mixins/selection_support.js +45 -45
  61. data/lib/frameworks/sproutcore/frameworks/amber/mixins/string.js +163 -0
  62. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/panes/main.js +4 -3
  63. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/panes/pane.js +123 -9
  64. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/protocols/observable_protocol.js +11 -11
  65. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/protocols/sparse_array_delegate.js +40 -40
  66. data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → amber/resources}/core.css +0 -103
  67. data/lib/frameworks/sproutcore/frameworks/{foundation/english.lproj → amber/resources}/view.css +0 -0
  68. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/application.js +0 -2
  69. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/browser.js +0 -0
  70. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/builder.js +0 -0
  71. data/lib/frameworks/sproutcore/frameworks/amber/system/core_query.js +141 -0
  72. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/cursor.js +0 -0
  73. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/device.js +0 -0
  74. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/event.js +34 -14
  75. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/json.js +0 -0
  76. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/locale.js +0 -0
  77. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/page.js +0 -0
  78. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/platform.js +30 -10
  79. data/lib/frameworks/sproutcore/frameworks/amber/system/ready.js +77 -0
  80. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/render_context.js +330 -255
  81. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/responder.js +0 -0
  82. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/root_responder.js +152 -60
  83. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/system/selection_set.js +140 -145
  84. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/system/sparse_array.js +101 -87
  85. data/lib/frameworks/sproutcore/frameworks/amber/system/theme.js +316 -0
  86. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/system/timer.js +149 -147
  87. data/lib/frameworks/sproutcore/frameworks/amber/system/utils.js +174 -0
  88. data/lib/frameworks/sproutcore/frameworks/amber/system/utils/rect.js +98 -0
  89. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/array/array_case.js +41 -41
  90. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/array/enum_case.js +0 -0
  91. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/array/null_case.js +0 -0
  92. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/array/selection_support.js +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/array/single_case.js +9 -9
  94. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/object/empty_case.js +0 -0
  95. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/object/multiple_case.js +0 -0
  96. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/object/single_case.js +0 -0
  97. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/controllers/object/single_enumerable_case.js +0 -0
  98. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/mixins/responder_context.js +0 -0
  99. data/lib/frameworks/sproutcore/frameworks/amber/tests/mixins/string.js +55 -0
  100. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/builder.js +0 -0
  101. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/core_query/within.js +7 -8
  102. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/json.js +0 -0
  103. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/locale.js +0 -0
  104. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/begin.js +0 -0
  105. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/element.js +0 -0
  106. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/end.js +1 -1
  107. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/get.js +0 -0
  108. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/helpers_attr.js +0 -0
  109. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/helpers_basic.js +0 -0
  110. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/helpers_className.js +0 -2
  111. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/helpers_style.js +11 -3
  112. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/init.js +0 -0
  113. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/join.js +0 -0
  114. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/push_text.js +0 -0
  115. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/tag.js +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/render_context/update.js +0 -0
  117. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/root_responder/makeKeyPane.js +0 -0
  118. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/root_responder/makeMainPane.js +0 -0
  119. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/root_responder/makeMenuPane.js +0 -0
  120. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/root_responder/root_responder.js +0 -0
  121. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/root_responder/targetForAction.js +46 -9
  122. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/tests/system/selection_set/add.js +0 -0
  123. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/tests/system/selection_set/copy.js +0 -0
  124. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/tests/system/selection_set/indexSetForSource.js +0 -0
  125. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/tests/system/selection_set/isEqual.js +0 -0
  126. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/tests/system/selection_set/remove.js +0 -0
  127. data/lib/frameworks/sproutcore/frameworks/{runtime → amber}/tests/system/sparse_array.js +0 -0
  128. data/lib/frameworks/sproutcore/frameworks/amber/tests/system/theme.js +77 -0
  129. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/timer/invalidate.js +0 -0
  130. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/timer/invokeLater.js +7 -5
  131. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/timer/isPaused.js +0 -0
  132. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/timer/performAction.js +0 -0
  133. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/timer/schedule.js +0 -0
  134. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/utils/normalizeURL.js +0 -0
  135. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/system/utils/rect.js +0 -0
  136. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/main_pane.js +0 -0
  137. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/pane/append_remove.js +0 -0
  138. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/pane/firstResponder.js +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/pane/keyPane.js +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/pane/layout.js +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/pane/sendEvent.js +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/pane/sendTouchEvent.js +267 -0
  143. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/animation.js +320 -0
  144. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/build.js +85 -0
  145. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/build_children.js +89 -0
  146. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/clippingFrame.js +3 -2
  147. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/convertFrames.js +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/convertLayouts.js +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/createChildViews.js +0 -0
  150. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/createLayer.js +2 -2
  151. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/destroyLayer.js +0 -0
  152. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/didAppendToDocument.js +0 -0
  153. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/findLayerInParentLayer.js +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/init.js +0 -0
  155. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/insertBefore.js +0 -0
  156. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/isVisible.js +0 -0
  157. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/isVisibleInWindow.js +0 -0
  158. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/layer.js +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/layoutChildViews.js +0 -0
  160. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/layoutDidChange.js +22 -0
  161. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/layoutStyle.js +135 -64
  162. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/parentViewDidChange.js +0 -0
  163. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/prepareContext.js +16 -8
  164. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/removeChild.js +0 -0
  165. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/render.js +37 -5
  166. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/render_delegate_support.js +163 -0
  167. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/replaceChild.js +0 -0
  168. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/theme.js +43 -0
  169. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/updateLayer.js +12 -10
  170. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/updateLayerLocation.js +0 -0
  171. data/lib/frameworks/sproutcore/frameworks/amber/tests/views/view/view.js +64 -0
  172. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/tests/views/view/viewDidResize.js +0 -0
  173. data/lib/frameworks/sproutcore/frameworks/amber/views/base.js +1 -0
  174. data/lib/frameworks/sproutcore/frameworks/amber/views/layout_style.js +478 -0
  175. data/lib/frameworks/sproutcore/frameworks/{foundation → amber}/views/view.js +1719 -1029
  176. data/lib/frameworks/sproutcore/frameworks/animation/core.js +32 -18
  177. data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +10 -5
  178. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/bench.js +14 -0
  179. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +24 -17
  180. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +1 -13
  181. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +72 -0
  182. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +2 -2
  183. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +7 -3
  184. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +66 -4
  185. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +4 -1
  186. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +58 -10
  187. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +5 -14
  188. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +4 -5
  189. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +27 -3
  190. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +5 -8
  191. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +1 -1
  192. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +30 -4
  193. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +130 -0
  194. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +2 -0
  195. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +20 -2
  196. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +9 -27
  197. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +32 -26
  198. data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +57 -11
  199. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  200. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +78 -0
  201. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +74 -0
  202. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +24 -0
  203. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +41 -0
  204. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/helpers/slicing.js +34 -0
  205. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +30 -0
  206. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +28 -0
  207. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +47 -0
  208. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +28 -0
  209. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +43 -0
  210. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +175 -0
  211. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +74 -0
  212. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +109 -0
  213. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +70 -0
  214. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +58 -0
  215. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +39 -0
  216. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/source_list.js +8 -0
  217. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +18 -0
  218. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +29 -0
  219. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +18 -0
  220. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +79 -53
  221. data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +7 -2
  222. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +1 -1
  223. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -3
  224. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +33 -13
  225. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +11 -17
  226. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +25 -0
  227. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +128 -20
  228. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +10 -10
  229. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +35 -15
  230. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +162 -0
  231. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +153 -208
  232. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +18 -48
  233. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +26 -25
  234. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +3 -20
  235. data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +112 -0
  236. data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +74 -0
  237. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +3 -1
  238. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +388 -309
  239. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +257 -0
  240. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +8 -3
  241. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation.js +237 -0
  242. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation_bar.js +181 -0
  243. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +3 -2
  244. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +14 -76
  245. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +59 -164
  246. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +80 -47
  247. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +84 -0
  248. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +320 -289
  249. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +212 -76
  250. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +33 -36
  251. data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list.js +2 -0
  252. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +347 -248
  253. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
  254. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +1 -1
  255. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +41 -9
  256. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +1 -1
  257. data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +2 -21
  258. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +251 -0
  259. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  260. data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/default_styles.css +5 -0
  261. data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/strings.js +15 -0
  262. data/lib/frameworks/sproutcore/frameworks/forms/mixins/edit_mode.js +43 -0
  263. data/lib/frameworks/sproutcore/frameworks/forms/mixins/emptiness.js +95 -0
  264. data/lib/frameworks/sproutcore/frameworks/forms/renderer_delegates/form.js +22 -0
  265. data/lib/frameworks/sproutcore/frameworks/forms/renderer_delegates/form_row.js +21 -0
  266. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form.js +15 -0
  267. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_checkbox_field.js +15 -0
  268. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_field.js +15 -0
  269. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_label.js +15 -0
  270. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_radio_field.js +15 -0
  271. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_row.js +15 -0
  272. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_text_field.js +15 -0
  273. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +280 -0
  274. data/lib/frameworks/sproutcore/frameworks/forms/views/form_row.js +183 -0
  275. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +5 -2
  276. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +0 -150
  277. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +0 -2
  278. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/benchmark.css +146 -0
  279. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +2 -14
  280. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
  281. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore.png +0 -0
  282. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +0 -2
  283. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +4 -6
  284. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/pinch.js +81 -0
  285. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/swipe.js +144 -0
  286. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/tap.js +113 -0
  287. data/lib/frameworks/sproutcore/frameworks/foundation/license.js +24 -26
  288. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +39 -0
  289. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +244 -0
  290. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +68 -23
  291. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +8 -2
  292. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +626 -0
  293. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +214 -0
  294. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +89 -0
  295. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +139 -0
  296. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +25 -33
  297. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/string.js +57 -209
  298. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +7 -3
  299. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +100 -0
  300. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/container.js +18 -0
  301. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +97 -0
  302. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +111 -0
  303. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +17 -0
  304. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +360 -156
  305. data/lib/frameworks/sproutcore/frameworks/{runtime → foundation}/system/cookie.js +35 -35
  306. data/lib/frameworks/sproutcore/frameworks/foundation/system/core_query.js +19 -2012
  307. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +3 -0
  308. data/lib/frameworks/sproutcore/frameworks/foundation/system/gesture.js +363 -0
  309. data/lib/frameworks/sproutcore/frameworks/foundation/system/{image_cache.js → image_queue.js} +19 -22
  310. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +576 -0
  311. data/lib/frameworks/sproutcore/frameworks/foundation/system/request.js +19 -22
  312. data/lib/frameworks/sproutcore/frameworks/foundation/system/response.js +73 -61
  313. data/lib/frameworks/sproutcore/frameworks/foundation/system/routes.js +122 -23
  314. data/lib/frameworks/sproutcore/frameworks/foundation/system/staticqueue.js +53 -0
  315. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +18 -15
  316. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +82 -90
  317. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +80 -0
  318. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +76 -0
  319. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/range.js +64 -0
  320. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +247 -0
  321. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +3 -3
  322. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +2 -2
  323. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +2 -0
  324. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +2 -57
  325. data/lib/frameworks/sproutcore/frameworks/{runtime → foundation}/tests/system/cookie.js +0 -0
  326. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +13 -3
  327. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +99 -49
  328. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +24 -20
  329. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +9 -1
  330. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +31 -6
  331. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +454 -44
  332. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +10 -1
  333. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/{view → text_field}/nextValidKeyView.js +0 -0
  334. data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +1 -0
  335. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +9 -8
  336. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +1 -3
  337. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +381 -105
  338. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +44 -171
  339. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +69 -16
  340. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +376 -0
  341. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +205 -0
  342. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +7 -0
  343. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +7179 -0
  344. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +4 -2
  345. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +1 -3
  346. data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +1 -2
  347. data/lib/frameworks/sproutcore/frameworks/mini/license.js +29 -28
  348. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +366 -333
  349. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +73 -73
  350. data/lib/frameworks/sproutcore/frameworks/runtime/license.js +29 -28
  351. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +160 -150
  352. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +9 -9
  353. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +15 -15
  354. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +228 -220
  355. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +27 -27
  356. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +355 -305
  357. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +32 -32
  358. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +53 -51
  359. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +49 -106
  360. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +252 -252
  361. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +22 -22
  362. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +31 -31
  363. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +234 -234
  364. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +4 -4
  365. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +167 -157
  366. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +84 -85
  367. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +104 -91
  368. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +102 -98
  369. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +19 -49
  370. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +53 -126
  371. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +62 -33
  372. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +41 -5
  373. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +133 -98
  374. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +50 -0
  375. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +11 -11
  376. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +71 -45
  377. data/lib/frameworks/sproutcore/frameworks/statechart/core.js +3 -9
  378. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +136 -0
  379. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +636 -99
  380. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +951 -0
  381. data/lib/frameworks/sproutcore/frameworks/statechart/tests/async.js +94 -0
  382. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/advanced_event_handling.js +310 -0
  383. data/lib/frameworks/sproutcore/frameworks/statechart/tests/namespace/access_substates.js +252 -0
  384. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/is_current_state.js +64 -0
  385. data/lib/frameworks/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_history_state.js +88 -0
  386. data/lib/frameworks/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_advanced.js +234 -0
  387. data/lib/frameworks/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_async.js +123 -0
  388. data/lib/frameworks/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_basic.js +139 -0
  389. data/lib/frameworks/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_intermediate.js +119 -0
  390. data/lib/frameworks/sproutcore/frameworks/statechart/tests/with_concurrent_states/send_event.js +183 -0
  391. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/default_responder.js +90 -0
  392. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/goto_history_state.js +200 -0
  393. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/goto_state.js +256 -0
  394. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/goto_state_async.js +187 -0
  395. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/send_event.js +122 -0
  396. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/state_plugin.js +99 -0
  397. data/lib/frameworks/sproutcore/frameworks/statechart/tests/without_concurrent_states/transient.js +162 -0
  398. data/lib/frameworks/sproutcore/frameworks/table/views/table_cell.js +2 -1
  399. data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +1 -1
  400. data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +1 -1
  401. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -1
  402. data/lib/frameworks/sproutcore/lib/index.rhtml +24 -1
  403. data/lib/frameworks/sproutcore/license.js +31 -30
  404. data/lib/frameworks/sproutcore/themes/ace/designs/dark.png +0 -0
  405. data/lib/frameworks/sproutcore/themes/ace/designs/dark.psd +0 -0
  406. data/lib/frameworks/sproutcore/themes/ace/designs/light.png +0 -0
  407. data/lib/frameworks/sproutcore/themes/ace/designs/light.psd +0 -0
  408. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/active_button.psd +0 -0
  409. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/normal_button.psd +0 -0
  410. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_active_button.psd +0 -0
  411. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_button.psd +0 -0
  412. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button.psd +0 -0
  413. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_capsule.psd +0 -0
  414. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_pointer.psd +0 -0
  415. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button.psd +0 -0
  416. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_capsule.psd +0 -0
  417. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_pointer.psd +0 -0
  418. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button.psd +0 -0
  419. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_capsule.psd +0 -0
  420. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_pointer.psd +0 -0
  421. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button.psd +0 -0
  422. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_capsule.psd +0 -0
  423. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_pointer.psd +0 -0
  424. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button.psd +0 -0
  425. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button_pointer.psd +0 -0
  426. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button.psd +0 -0
  427. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button_pointer.psd +0 -0
  428. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button.psd +0 -0
  429. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button_pointer.psd +0 -0
  430. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button.psd +0 -0
  431. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button_pointer.psd +0 -0
  432. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/active_button.psd +0 -0
  433. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/normal_button.psd +0 -0
  434. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_active_button.psd +0 -0
  435. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_button.psd +0 -0
  436. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button.psd +0 -0
  437. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_capsule.psd +0 -0
  438. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_pointer.psd +0 -0
  439. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button.psd +0 -0
  440. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_capsule.psd +0 -0
  441. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_pointer.psd +0 -0
  442. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button.psd +0 -0
  443. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_capsule.psd +0 -0
  444. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_pointer.psd +0 -0
  445. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button.psd +0 -0
  446. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_capsule.psd +0 -0
  447. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_pointer.psd +0 -0
  448. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button.psd +0 -0
  449. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button_pointer.psd +0 -0
  450. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button.psd +0 -0
  451. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button_pointer.psd +0 -0
  452. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button.psd +0 -0
  453. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button_pointer.psd +0 -0
  454. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button.psd +0 -0
  455. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button_pointer.psd +0 -0
  456. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/active_select.psd +0 -0
  457. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/normal_select.psd +0 -0
  458. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
  459. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
  460. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
  461. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
  462. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
  463. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
  464. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
  465. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
  466. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
  467. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
  468. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
  469. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
  470. data/lib/frameworks/sproutcore/themes/ace/designs/psds/collection/source-list/selection.psd +0 -0
  471. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed.psd +0 -0
  472. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed_active.psd +0 -0
  473. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open.psd +0 -0
  474. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open_active.psd +0 -0
  475. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark.psd +0 -0
  476. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark_active.psd +0 -0
  477. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/down.psd +0 -0
  478. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu.psd +0 -0
  479. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
  480. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/up.psd +0 -0
  481. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/panel.psd +0 -0
  482. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover.psd +0 -0
  483. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_empty.psd +0 -0
  484. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_notoolbar.psd +0 -0
  485. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers.psd +0 -0
  486. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers_notoolbar.psd +0 -0
  487. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_content.psd +0 -0
  488. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_indeterminate_content.psd +0 -0
  489. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_track.psd +0 -0
  490. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_active.psd +0 -0
  491. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed.psd +0 -0
  492. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed_active.psd +0 -0
  493. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected.psd +0 -0
  494. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected_active.psd +0 -0
  495. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_unselected.psd +0 -0
  496. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/thumb.psd +0 -0
  497. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows.psd +0 -0
  498. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows_active.psd +0 -0
  499. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/thumb.psd +0 -0
  500. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows.psd +0 -0
  501. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows_active.psd +0 -0
  502. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_active.psd +0 -0
  503. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_normal.psd +0 -0
  504. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected.psd +0 -0
  505. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected_active.psd +0 -0
  506. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_active.psd +0 -0
  507. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_normal.psd +0 -0
  508. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected.psd +0 -0
  509. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected_active.psd +0 -0
  510. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_active.psd +0 -0
  511. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_normal.psd +0 -0
  512. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected.psd +0 -0
  513. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected_active.psd +0 -0
  514. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_active.psd +0 -0
  515. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_normal.psd +0 -0
  516. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected.psd +0 -0
  517. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected_active.psd +0 -0
  518. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob.psd +0 -0
  519. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob_active.psd +0 -0
  520. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob.psd +0 -0
  521. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob_active.psd +0 -0
  522. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob.psd +0 -0
  523. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob_active.psd +0 -0
  524. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/track.psd +0 -0
  525. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/track.psd +0 -0
  526. data/lib/frameworks/sproutcore/themes/ace/designs/psds/toolbar/toolbar.psd +0 -0
  527. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch.psd +0 -0
  528. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.png +0 -0
  529. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.psd +0 -0
  530. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.png +0 -0
  531. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.psd +0 -0
  532. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.png +0 -0
  533. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.psd +0 -0
  534. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +13 -0
  535. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/active_button.png +0 -0
  536. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +27 -0
  537. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/normal_button.png +0 -0
  538. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/selected_active_button.png +0 -0
  539. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/selected_button.png +0 -0
  540. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button.png +0 -0
  541. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button_capsule.png +0 -0
  542. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button_pointer.png +0 -0
  543. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +84 -0
  544. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button.png +0 -0
  545. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button_capsule.png +0 -0
  546. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button_pointer.png +0 -0
  547. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button.png +0 -0
  548. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_capsule.png +0 -0
  549. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_pointer.png +0 -0
  550. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button.png +0 -0
  551. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button_capsule.png +0 -0
  552. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button_pointer.png +0 -0
  553. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/active_button.png +0 -0
  554. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/active_button_pointer.png +0 -0
  555. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +66 -0
  556. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/normal_button.png +0 -0
  557. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/normal_button_pointer.png +0 -0
  558. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button.png +0 -0
  559. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button_pointer.png +0 -0
  560. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_button.png +0 -0
  561. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_button_pointer.png +0 -0
  562. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button.png +0 -0
  563. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +34 -0
  564. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button.png +0 -0
  565. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button.png +0 -0
  566. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button.png +0 -0
  567. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/button.css +28 -0
  568. data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +69 -0
  569. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button.png +0 -0
  570. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button_capsule.png +0 -0
  571. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button_pointer.png +0 -0
  572. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +84 -0
  573. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button.png +0 -0
  574. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button_capsule.png +0 -0
  575. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button_pointer.png +0 -0
  576. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button.png +0 -0
  577. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_capsule.png +0 -0
  578. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_pointer.png +0 -0
  579. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button.png +0 -0
  580. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button_capsule.png +0 -0
  581. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button_pointer.png +0 -0
  582. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/active_button.png +0 -0
  583. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/active_button_pointer.png +0 -0
  584. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +66 -0
  585. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/normal_button.png +0 -0
  586. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/normal_button_pointer.png +0 -0
  587. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button.png +0 -0
  588. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button_pointer.png +0 -0
  589. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_button.png +0 -0
  590. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_button_pointer.png +0 -0
  591. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.css +17 -0
  592. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.js +3 -0
  593. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/active_select.png +0 -0
  594. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/normal_select.png +0 -0
  595. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +20 -0
  596. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox.css +40 -0
  597. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  598. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  599. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  600. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  601. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  602. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  603. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox.css +40 -0
  604. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  605. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  606. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  607. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  608. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  609. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  610. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/checkbox.css +7 -0
  611. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +4 -0
  612. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +17 -0
  613. data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/selection.png +0 -0
  614. data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/source-list.js +3 -0
  615. data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/source_list_view.css +36 -0
  616. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +24 -0
  617. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed.png +0 -0
  618. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed_active.png +0 -0
  619. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open.png +0 -0
  620. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open_active.png +0 -0
  621. data/lib/frameworks/sproutcore/themes/ace/resources/loading.css +50 -0
  622. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +27 -0
  623. data/lib/frameworks/sproutcore/themes/ace/resources/menu/checkmark.png +0 -0
  624. data/lib/frameworks/sproutcore/themes/ace/resources/menu/checkmark_active.png +0 -0
  625. data/lib/frameworks/sproutcore/themes/ace/resources/menu/down.png +0 -0
  626. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +76 -0
  627. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.png +0 -0
  628. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  629. data/lib/frameworks/sproutcore/themes/ace/resources/menu/up.png +0 -0
  630. data/lib/frameworks/sproutcore/themes/ace/resources/pane/pane.css +3 -0
  631. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.css +13 -0
  632. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.js +20 -0
  633. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
  634. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
  635. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +32 -0
  636. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +111 -0
  637. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.js +12 -0
  638. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.png +0 -0
  639. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_empty.png +0 -0
  640. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_notoolbar.png +0 -0
  641. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_pointers.png +0 -0
  642. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_pointers_notoolbar.png +0 -0
  643. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +28 -0
  644. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress.css +27 -0
  645. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_content.png +0 -0
  646. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_track.png +0 -0
  647. data/lib/frameworks/sproutcore/themes/ace/resources/progress/progress.js +78 -0
  648. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio.css +63 -0
  649. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_active.png +0 -0
  650. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_mixed.png +0 -0
  651. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_mixed_active.png +0 -0
  652. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_selected.png +0 -0
  653. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_selected_active.png +0 -0
  654. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_unselected.png +0 -0
  655. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +78 -0
  656. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +91 -0
  657. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/thumb.png +0 -0
  658. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows.png +0 -0
  659. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows_active.png +0 -0
  660. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/thumb.png +0 -0
  661. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows.png +0 -0
  662. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows_active.png +0 -0
  663. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +80 -0
  664. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +92 -0
  665. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +91 -0
  666. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_active.png +0 -0
  667. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_normal.png +0 -0
  668. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_selected.png +0 -0
  669. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_selected_active.png +0 -0
  670. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +91 -0
  671. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_active.png +0 -0
  672. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_normal.png +0 -0
  673. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_selected.png +0 -0
  674. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_selected_active.png +0 -0
  675. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +91 -0
  676. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_active.png +0 -0
  677. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_normal.png +0 -0
  678. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_selected.png +0 -0
  679. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_selected_active.png +0 -0
  680. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +95 -0
  681. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_active.png +0 -0
  682. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_normal.png +0 -0
  683. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_selected.png +0 -0
  684. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_selected_active.png +0 -0
  685. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +79 -0
  686. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
  687. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
  688. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +27 -0
  689. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
  690. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
  691. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +27 -0
  692. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
  693. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
  694. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/slider.css +27 -0
  695. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
  696. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +3 -0
  697. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +48 -0
  698. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
  699. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +5 -0
  700. data/lib/frameworks/sproutcore/themes/ace/resources/tab/tab.css +3 -0
  701. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +8 -0
  702. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.png +0 -0
  703. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +8 -0
  704. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +19 -0
  705. data/lib/frameworks/sproutcore/themes/ace/theme.js +14 -0
  706. data/lib/frameworks/sproutcore/themes/empty_theme/theme.js +16 -0
  707. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +16 -21
  708. data/lib/sproutcore.rb +9 -2
  709. data/lib/sproutcore/builders.rb +2 -1
  710. data/lib/sproutcore/builders/base.rb +7 -2
  711. data/lib/sproutcore/builders/combine.rb +49 -1
  712. data/lib/sproutcore/builders/html.rb +2 -0
  713. data/lib/sproutcore/builders/javascript.rb +1 -1
  714. data/lib/sproutcore/builders/minify.rb +12 -12
  715. data/lib/sproutcore/builders/module.rb +72 -0
  716. data/lib/sproutcore/builders/string_wrapper.rb +43 -0
  717. data/lib/sproutcore/helpers/entry_sorter.rb +5 -9
  718. data/lib/sproutcore/helpers/static_helper.rb +13 -9
  719. data/lib/sproutcore/models/manifest_entry.rb +2 -2
  720. data/lib/sproutcore/models/target.rb +25 -11
  721. data/lib/sproutcore/rack/dev.rb +3 -3
  722. data/lib/sproutcore/tools.rb +51 -2
  723. data/lib/sproutcore/tools/build.rb +35 -7
  724. data/lib/sproutcore/version.rb +1 -0
  725. data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +5 -5
  726. data/spec/fixtures/builder_tests/Buildfile +2 -2
  727. data/spec/lib/builders/bundle_spec.rb +8 -8
  728. data/spec/lib/builders/strings_spec.rb +1 -0
  729. data/sproutcore.gemspec +9 -2
  730. data/vendor/chance/.gitignore +5 -0
  731. data/vendor/chance/Gemfile +4 -0
  732. data/vendor/chance/Rakefile +2 -0
  733. data/vendor/chance/bin/chance +72 -0
  734. data/vendor/chance/chance.gemspec +28 -0
  735. data/vendor/chance/lib/chance.rb +139 -0
  736. data/vendor/chance/lib/chance/imager.rb +13 -0
  737. data/vendor/chance/lib/chance/imagers/data_url.rb +34 -0
  738. data/vendor/chance/lib/chance/importer.rb +64 -0
  739. data/vendor/chance/lib/chance/instance.rb +225 -0
  740. data/vendor/chance/lib/chance/parser.rb +831 -0
  741. data/vendor/chance/lib/chance/perf.rb +17 -0
  742. data/vendor/chance/lib/chance/sass_extensions.rb +24 -0
  743. data/vendor/chance/lib/chance/slicing.rb +104 -0
  744. data/vendor/chance/lib/chance/version.rb +3 -0
  745. data/vendor/chance/test/case/abc.png +0 -0
  746. data/vendor/chance/test/case/more/abc.png +0 -0
  747. data/vendor/chance/test/case/more/another.css +4 -0
  748. data/vendor/chance/test/case/test1.css +22 -0
  749. data/vendor/chance/test/case/test2.css +6 -0
  750. data/vendor/sproutcore/SCCompiler.jar +0 -0
  751. data/vendor/sproutcore/lib/args4j-2.0.12.jar +0 -0
  752. data/vendor/sproutcore/lib/htmlcompressor-0.9.3.jar +0 -0
  753. data/{lib/sproutcore/vendor/yui-compressor → vendor/sproutcore/lib}/yuicompressor-2.4.2.jar +0 -0
  754. data/vendor/sproutcore/src/SCCompiler/build.xml +74 -0
  755. data/vendor/sproutcore/src/SCCompiler/lib/args4j-2.0.12.jar +0 -0
  756. data/vendor/sproutcore/src/SCCompiler/lib/htmlcompressor-0.9.3.jar +0 -0
  757. data/{lib/sproutcore/vendor/yui-compressor/SCyuicompressor-2.4.2.jar → vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.2.jar} +0 -0
  758. data/vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.4.jar +0 -0
  759. data/vendor/sproutcore/src/SCCompiler/manifest.mf +3 -0
  760. data/vendor/sproutcore/src/SCCompiler/nbproject/build-impl.xml +894 -0
  761. data/vendor/sproutcore/src/SCCompiler/nbproject/genfiles.properties +8 -0
  762. data/vendor/sproutcore/src/SCCompiler/nbproject/private/config.properties +0 -0
  763. data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.properties +10 -0
  764. data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.xml +4 -0
  765. data/vendor/sproutcore/src/SCCompiler/nbproject/project.properties +90 -0
  766. data/vendor/sproutcore/src/SCCompiler/nbproject/project.xml +15 -0
  767. data/vendor/sproutcore/src/SCCompiler/src/com/sproutcore/Main.java +348 -0
  768. metadata +686 -177
  769. data/lib/frameworks/sproutcore/CHANGELOG +0 -93
  770. data/lib/frameworks/sproutcore/frameworks/datejs/core.js +0 -865
  771. data/lib/frameworks/sproutcore/frameworks/datejs/english.lproj/en-US.js +0 -186
  772. data/lib/frameworks/sproutcore/frameworks/datejs/extras.js +0 -332
  773. data/lib/frameworks/sproutcore/frameworks/datejs/license.js +0 -25
  774. data/lib/frameworks/sproutcore/frameworks/datejs/parser.js +0 -1116
  775. data/lib/frameworks/sproutcore/frameworks/datejs/spanish.lproj/es-CO.js +0 -186
  776. data/lib/frameworks/sproutcore/frameworks/datejs/sugarpak.js +0 -475
  777. data/lib/frameworks/sproutcore/frameworks/datejs/time.js +0 -269
  778. data/lib/frameworks/sproutcore/frameworks/datejs/validators/datejs.js +0 -34
  779. data/lib/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +0 -84
  780. data/lib/frameworks/sproutcore/frameworks/foundation/system/bundle.js +0 -337
  781. data/lib/frameworks/sproutcore/frameworks/foundation/system/ready.js +0 -197
  782. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils.js +0 -710
  783. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +0 -1334
  784. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +0 -387
  785. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +0 -405
  786. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +0 -25
  787. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart.js +0 -336
  788. data/lib/frameworks/sproutcore/frameworks/statechart/tests/basic.js +0 -90
  789. data/lib/frameworks/sproutcore/frameworks/statechart/tests/history.js +0 -71
  790. data/lib/frameworks/sproutcore/frameworks/statechart/tests/nested.js +0 -59
  791. data/lib/frameworks/sproutcore/frameworks/statechart/tests/transient.js +0 -148
  792. data/lib/sproutcore/builders/bundle.rb +0 -63
@@ -7,33 +7,33 @@
7
7
 
8
8
  /**
9
9
  @namespace
10
-
10
+
11
11
  Implements some standard methods for comparing objects. Add this mixin to
12
12
  any class you create that can compare its instances.
13
-
13
+
14
14
  You should implement the compare() method.
15
-
15
+
16
16
  @since SproutCore 1.0
17
17
  */
18
18
  SC.Comparable = {
19
-
19
+
20
20
  /**
21
21
  walk like a duck. Indicates that the object can be compared.
22
-
22
+
23
23
  @type Boolean
24
24
  */
25
25
  isComparable: YES,
26
-
26
+
27
27
  /**
28
28
  Override to return the result of the comparison of the two parameters. The
29
29
  compare method should return
30
30
  -1 if a < b
31
31
  0 if a == b
32
32
  1 if a > b
33
-
33
+
34
34
  Default implementation raises
35
35
  an exception.
36
-
36
+
37
37
  @param a {Object} the first object to compare
38
38
  @param b {Object} the second object to compare
39
39
  @returns {Integer} the result of the comparison
@@ -41,5 +41,5 @@ SC.Comparable = {
41
41
  compare: function(a, b) {
42
42
  throw "%@.compare() is not implemented".fmt(this.toString());
43
43
  }
44
-
44
+
45
45
  };
@@ -7,27 +7,27 @@
7
7
 
8
8
  /**
9
9
  @namespace
10
-
10
+
11
11
  Impelements some standard methods for copying an object. Add this mixin to
12
- any object you create that can create a copy of itself. This mixin is
12
+ any object you create that can create a copy of itself. This mixin is
13
13
  added automatically to the built-in array.
14
-
15
- You should generally implement the copy() method to return a copy of the
14
+
15
+ You should generally implement the copy() method to return a copy of the
16
16
  receiver.
17
-
17
+
18
18
  Note that frozenCopy() will only work if you also implement SC.Freezable.
19
19
 
20
20
  @since SproutCore 1.0
21
21
  */
22
22
  SC.Copyable = {
23
-
23
+
24
24
  /**
25
25
  Walk like a duck. Indicates that the object can be copied.
26
-
26
+
27
27
  @type Boolean
28
28
  */
29
29
  isCopyable: YES,
30
-
30
+
31
31
  /**
32
32
  Override to return a copy of the receiver. Default implementation raises
33
33
  an exception.
@@ -38,18 +38,18 @@ SC.Copyable = {
38
38
  copy: function(deep) {
39
39
  throw "%@.copy() is not implemented";
40
40
  },
41
-
41
+
42
42
  /**
43
- If the object implements SC.Freezable, then this will return a new copy
44
- if the object is not frozen and the receiver if the object is frozen.
45
-
43
+ If the object implements SC.Freezable, then this will return a new copy
44
+ if the object is not frozen and the receiver if the object is frozen.
45
+
46
46
  Raises an exception if you try to call this method on a object that does
47
47
  not support freezing.
48
-
48
+
49
49
  You should use this method whenever you want a copy of a freezable object
50
- since a freezable object can simply return itself without actually
50
+ since a freezable object can simply return itself without actually
51
51
  consuming more memory.
52
-
52
+
53
53
  @returns {Object} copy of receiver or receiver
54
54
  */
55
55
  frozenCopy: function() {
@@ -13,110 +13,110 @@ require('system/enumerator');
13
13
  /**
14
14
  @namespace
15
15
 
16
- This mixin defines the common interface implemented by enumerable objects
16
+ This mixin defines the common interface implemented by enumerable objects
17
17
  in SproutCore. Most of these methods follow the standard Array iteration
18
18
  API defined up to JavaScript 1.8 (excluding language-specific features that
19
19
  cannot be emulated in older versions of JavaScript).
20
-
20
+
21
21
  This mixin is applied automatically to the Array class on page load, so you
22
22
  can use any of these methods on simple arrays. If Array already implements
23
23
  one of these methods, the mixin will not override them.
24
-
24
+
25
25
  h3. Writing Your Own Enumerable
26
26
 
27
27
  To make your own custom class enumerable, you need two items:
28
-
28
+
29
29
  1. You must have a length property. This property should change whenever
30
30
  the number of items in your enumerable object changes. If you using this
31
- with an SC.Object subclass, you should be sure to change the length
31
+ with an SC.Object subclass, you should be sure to change the length
32
32
  property using set().
33
-
33
+
34
34
  2. If you must implement nextObject(). See documentation.
35
-
35
+
36
36
  Once you have these two methods implement, apply the SC.Enumerable mixin
37
37
  to your class and you will be able to enumerate the contents of your object
38
38
  like any other collection.
39
-
39
+
40
40
  h3. Using SproutCore Enumeration with Other Libraries
41
-
41
+
42
42
  Many other libraries provide some kind of iterator or enumeration like
43
- facility. This is often where the most common API conflicts occur.
44
- SproutCore's API is designed to be as friendly as possible with other
43
+ facility. This is often where the most common API conflicts occur.
44
+ SproutCore's API is designed to be as friendly as possible with other
45
45
  libraries by implementing only methods that mostly correspond to the
46
- JavaScript 1.8 API.
47
-
46
+ JavaScript 1.8 API.
47
+
48
48
  @since SproutCore 1.0
49
49
  */
50
50
  SC.Enumerable = {
51
51
 
52
- /**
52
+ /**
53
53
  Walk like a duck.
54
-
54
+
55
55
  @property {Boolean}
56
56
  */
57
57
  isEnumerable: YES,
58
-
58
+
59
59
  /**
60
60
  Implement this method to make your class enumerable.
61
-
61
+
62
62
  This method will be call repeatedly during enumeration. The index value
63
63
  will always begin with 0 and increment monotonically. You don't have to
64
64
  rely on the index value to determine what object to return, but you should
65
65
  always check the value and start from the beginning when you see the
66
66
  requested index is 0.
67
-
67
+
68
68
  The previousObject is the object that was returned from the last call
69
- to nextObject for the current iteration. This is a useful way to
69
+ to nextObject for the current iteration. This is a useful way to
70
70
  manage iteration if you are tracing a linked list, for example.
71
-
72
- Finally the context paramter will always contain a hash you can use as
71
+
72
+ Finally the context paramter will always contain a hash you can use as
73
73
  a "scratchpad" to maintain any other state you need in order to iterate
74
- properly. The context object is reused and is not reset between
74
+ properly. The context object is reused and is not reset between
75
75
  iterations so make sure you setup the context with a fresh state whenever
76
76
  the index parameter is 0.
77
-
77
+
78
78
  Generally iterators will continue to call nextObject until the index
79
- reaches the your current length-1. If you run out of data before this
79
+ reaches the your current length-1. If you run out of data before this
80
80
  time for some reason, you should simply return undefined.
81
-
81
+
82
82
  The default impementation of this method simply looks up the index.
83
83
  This works great on any Array-like objects.
84
-
84
+
85
85
  @param index {Number} the current index of the iteration
86
86
  @param previousObject {Object} the value returned by the last call to nextObject.
87
87
  @param context {Object} a context object you can use to maintain state.
88
- @returns {Object} the next object in the iteration or undefined
89
- */
88
+ @returns {Object} the next object in the iteration or undefined
89
+ */
90
90
  nextObject: function(index, previousObject, context) {
91
91
  return this.objectAt ? this.objectAt(index) : this[index] ;
92
92
  },
93
-
93
+
94
94
  /**
95
95
  Helper method returns the first object from a collection. This is usually
96
- used by bindings and other parts of the framework to extract a single
96
+ used by bindings and other parts of the framework to extract a single
97
97
  object if the enumerable contains only one item.
98
-
99
- If you override this method, you should implement it so that it will
98
+
99
+ If you override this method, you should implement it so that it will
100
100
  always return the same value each time it is called. If your enumerable
101
101
  contains only one object, this method should always return that object.
102
102
  If your enumerable is empty, this method should return undefined.
103
-
103
+
104
104
  @returns {Object} the object or undefined
105
105
  */
106
106
  firstObject: function() {
107
107
  if (this.get('length')===0) return undefined ;
108
108
  if (this.objectAt) return this.objectAt(0); // support arrays out of box
109
-
109
+
110
110
  // handle generic enumerables
111
111
  var context = SC.Enumerator._popContext(), ret;
112
112
  ret = this.nextObject(0, null, context);
113
- context = SC.Enumerator._pushContext(context);
113
+ context = SC.Enumerator._pushContext(context);
114
114
  return ret ;
115
115
  }.property(),
116
-
116
+
117
117
  /**
118
118
  Helper method returns the last object from a collection.
119
-
119
+
120
120
  @returns {Object} the object or undefined
121
121
  */
122
122
  lastObject: function() {
@@ -124,36 +124,36 @@ SC.Enumerable = {
124
124
  if (len===0) return undefined ;
125
125
  if (this.objectAt) return this.objectAt(len-1); // support arrays out of box
126
126
  }.property(),
127
-
127
+
128
128
  /**
129
129
  Returns a new enumerator for this object. See SC.Enumerator for
130
130
  documentation on how to use this object. Enumeration is an alternative
131
131
  to using one of the other iterators described here.
132
-
132
+
133
133
  @returns {SC.Enumerator} an enumerator for the receiver
134
134
  */
135
135
  enumerator: function() { return SC.Enumerator.create(this); },
136
-
136
+
137
137
  /**
138
138
  Iterates through the enumerable, calling the passed function on each
139
- item. This method corresponds to the forEach() method defined in
139
+ item. This method corresponds to the forEach() method defined in
140
140
  JavaScript 1.6.
141
-
141
+
142
142
  The callback method you provide should have the following signature (all
143
143
  parameters are optional):
144
-
144
+
145
145
  {{{
146
- function(item, index, enumerable) ;
146
+ function(item, index, enumerable) ;
147
147
  }}}
148
-
148
+
149
149
  - *item* is the current item in the iteration.
150
150
  - *index* is the current index in the iteration
151
151
  - *enumerable* is the enumerable object itself.
152
-
152
+
153
153
  Note that in addition to a callback, you can also pass an optional target
154
154
  object that will be set as "this" on the context. This is a good way
155
155
  to give your iterator function access to the current object.
156
-
156
+
157
157
  @params callback {Function} the callback to execute
158
158
  @params target {Object} the target object to use
159
159
  @returns {Object} this
@@ -162,7 +162,7 @@ SC.Enumerable = {
162
162
  if (typeof callback !== "function") throw new TypeError() ;
163
163
  var len = this.get ? this.get('length') : this.length ;
164
164
  if (target === undefined) target = null;
165
-
165
+
166
166
  var last = null ;
167
167
  var context = SC.Enumerator._popContext();
168
168
  for(var idx=0;idx<len;idx++) {
@@ -174,13 +174,13 @@ SC.Enumerable = {
174
174
  context = SC.Enumerator._pushContext(context);
175
175
  return this ;
176
176
  },
177
-
177
+
178
178
  /**
179
179
  Retrieves the named value on each member object. This is more efficient
180
- than using one of the wrapper methods defined here. Objects that
180
+ than using one of the wrapper methods defined here. Objects that
181
181
  implement SC.Observable will use the get() method, otherwise the property
182
182
  will be accessed directly.
183
-
183
+
184
184
  @param {String} key the key to retrieve
185
185
  @returns {Array} extracted values
186
186
  */
@@ -195,7 +195,7 @@ SC.Enumerable = {
195
195
  efficient than using other methods defined on this helper. If the object
196
196
  implements SC.Observable, the value will be changed to set(), otherwise
197
197
  it will be set directly. null objects are skipped.
198
-
198
+
199
199
  @param {String} key the key to set
200
200
  @param {Object} value the object to set
201
201
  @returns {Object} receiver
@@ -209,28 +209,28 @@ SC.Enumerable = {
209
209
  }, this);
210
210
  return this ;
211
211
  },
212
-
212
+
213
213
  /**
214
- Maps all of the items in the enumeration to another value, returning
214
+ Maps all of the items in the enumeration to another value, returning
215
215
  a new array. This method corresponds to map() defined in JavaScript 1.6.
216
-
216
+
217
217
  The callback method you provide should have the following signature (all
218
218
  parameters are optional):
219
-
219
+
220
220
  {{{
221
- function(item, index, enumerable) ;
221
+ function(item, index, enumerable) ;
222
222
  }}}
223
-
223
+
224
224
  - *item* is the current item in the iteration.
225
225
  - *index* is the current index in the iteration
226
226
  - *enumerable* is the enumerable object itself.
227
-
227
+
228
228
  It should return the mapped value.
229
-
229
+
230
230
  Note that in addition to a callback, you can also pass an optional target
231
231
  object that will be set as "this" on the context. This is a good way
232
232
  to give your iterator function access to the current object.
233
-
233
+
234
234
  @params callback {Function} the callback to execute
235
235
  @params target {Object} the target object to use
236
236
  @returns {Array} The mapped array.
@@ -239,7 +239,7 @@ SC.Enumerable = {
239
239
  if (typeof callback !== "function") throw new TypeError() ;
240
240
  var len = this.get ? this.get('length') : this.length ;
241
241
  if (target === undefined) target = null;
242
-
242
+
243
243
  var ret = [];
244
244
  var last = null ;
245
245
  var context = SC.Enumerator._popContext();
@@ -256,38 +256,38 @@ SC.Enumerable = {
256
256
  /**
257
257
  Similar to map, this specialized function returns the value of the named
258
258
  property on all items in the enumeration.
259
-
259
+
260
260
  @params key {String} name of the property
261
261
  @returns {Array} The mapped array.
262
262
  */
263
263
  mapProperty: function(key) {
264
- return this.map(function(next) {
264
+ return this.map(function(next) {
265
265
  return next ? (next.get ? next.get(key) : next[key]) : null;
266
266
  });
267
267
  },
268
268
 
269
269
  /**
270
270
  Returns an array with all of the items in the enumeration that the passed
271
- function returns YES for. This method corresponds to filter() defined in
271
+ function returns YES for. This method corresponds to filter() defined in
272
272
  JavaScript 1.6.
273
-
273
+
274
274
  The callback method you provide should have the following signature (all
275
275
  parameters are optional):
276
-
276
+
277
277
  {{{
278
- function(item, index, enumerable) ;
278
+ function(item, index, enumerable) ;
279
279
  }}}
280
-
280
+
281
281
  - *item* is the current item in the iteration.
282
282
  - *index* is the current index in the iteration
283
283
  - *enumerable* is the enumerable object itself.
284
-
284
+
285
285
  It should return the YES to include the item in the results, NO otherwise.
286
-
286
+
287
287
  Note that in addition to a callback, you can also pass an optional target
288
288
  object that will be set as "this" on the context. This is a good way
289
289
  to give your iterator function access to the current object.
290
-
290
+
291
291
  @params callback {Function} the callback to execute
292
292
  @params target {Object} the target object to use
293
293
  @returns {Array} A filtered array.
@@ -296,7 +296,7 @@ SC.Enumerable = {
296
296
  if (typeof callback !== "function") throw new TypeError() ;
297
297
  var len = this.get ? this.get('length') : this.length ;
298
298
  if (target === undefined) target = null;
299
-
299
+
300
300
  var ret = [];
301
301
  var last = null ;
302
302
  var context = SC.Enumerator._popContext();
@@ -310,11 +310,11 @@ SC.Enumerable = {
310
310
  return ret ;
311
311
  },
312
312
 
313
- /**
313
+ /**
314
314
  Returns an array sorted by the value of the passed key parameters.
315
315
  null objects will be sorted first. You can pass either an array of keys
316
316
  or multiple parameters which will act as key names
317
-
317
+
318
318
  @param {String} key one or more key names
319
319
  @returns {Array}
320
320
  */
@@ -322,18 +322,18 @@ SC.Enumerable = {
322
322
  var keys = (typeof key === SC.T_STRING) ? arguments : key,
323
323
  len = keys.length,
324
324
  src;
325
-
326
- // get the src array to sort
325
+
326
+ // get the src array to sort
327
327
  if (this instanceof Array) src = this;
328
328
  else {
329
329
  src = [];
330
330
  this.forEach(function(i) { src.push(i); });
331
331
  }
332
-
332
+
333
333
  if (!src) return [];
334
334
  return src.sort(function(a,b) {
335
335
  var idx, key, aValue, bValue, ret = 0;
336
-
336
+
337
337
  for(idx=0;ret===0 && idx<len;idx++) {
338
338
  key = keys[idx];
339
339
  aValue = a ? (a.get ? a.get(key) : a[key]) : null;
@@ -343,13 +343,13 @@ SC.Enumerable = {
343
343
  return ret ;
344
344
  });
345
345
  },
346
-
346
+
347
347
 
348
348
  /**
349
349
  Returns an array with just the items with the matched property. You
350
350
  can pass an optional second argument with the target value. Otherwise
351
351
  this will match any property that evaluates to true.
352
-
352
+
353
353
  @params key {String} the property to test
354
354
  @param value {String} optional value to test against.
355
355
  @returns {Array} filtered array
@@ -370,7 +370,7 @@ SC.Enumerable = {
370
370
  context = SC.Enumerator._pushContext(context);
371
371
  return ret ;
372
372
  },
373
-
373
+
374
374
  /**
375
375
  Returns the first item in the array for which the callback returns YES.
376
376
  This method works similar to the filter() method defined in JavaScript 1.6
@@ -380,7 +380,7 @@ SC.Enumerable = {
380
380
  parameters are optional):
381
381
 
382
382
  {{{
383
- function(item, index, enumerable) ;
383
+ function(item, index, enumerable) ;
384
384
  }}}
385
385
 
386
386
  - *item* is the current item in the iteration.
@@ -417,9 +417,9 @@ SC.Enumerable = {
417
417
  Returns an the first item with a property matching the passed value. You
418
418
  can pass an optional second argument with the target value. Otherwise
419
419
  this will match any property that evaluates to true.
420
-
420
+
421
421
  This method works much like the more generic find() method.
422
-
422
+
423
423
  @params key {String} the property to test
424
424
  @param value {String} optional value to test against.
425
425
  @returns {Object} found item or null
@@ -439,43 +439,43 @@ SC.Enumerable = {
439
439
  context = SC.Enumerator._pushContext(context);
440
440
  return ret ;
441
441
  },
442
-
442
+
443
443
  /**
444
444
  Returns YES if the passed function returns YES for every item in the
445
445
  enumeration. This corresponds with the every() method in JavaScript 1.6.
446
-
446
+
447
447
  The callback method you provide should have the following signature (all
448
448
  parameters are optional):
449
-
449
+
450
450
  {{{
451
- function(item, index, enumerable) ;
451
+ function(item, index, enumerable) ;
452
452
  }}}
453
-
453
+
454
454
  - *item* is the current item in the iteration.
455
455
  - *index* is the current index in the iteration
456
456
  - *enumerable* is the enumerable object itself.
457
-
457
+
458
458
  It should return the YES or NO.
459
-
459
+
460
460
  Note that in addition to a callback, you can also pass an optional target
461
461
  object that will be set as "this" on the context. This is a good way
462
462
  to give your iterator function access to the current object.
463
-
463
+
464
464
  h4. Example Usage
465
-
465
+
466
466
  {{{
467
467
  if (people.every(isEngineer)) { Paychecks.addBigBonus(); }
468
468
  }}}
469
-
469
+
470
470
  @params callback {Function} the callback to execute
471
471
  @params target {Object} the target object to use
472
- @returns {Boolean}
472
+ @returns {Boolean}
473
473
  */
474
474
  every: function(callback, target) {
475
475
  if (typeof callback !== "function") throw new TypeError() ;
476
476
  var len = this.get ? this.get('length') : this.length ;
477
477
  if (target === undefined) target = null;
478
-
478
+
479
479
  var ret = YES;
480
480
  var last = null ;
481
481
  var context = SC.Enumerator._popContext();
@@ -512,35 +512,35 @@ SC.Enumerable = {
512
512
  context = SC.Enumerator._pushContext(context);
513
513
  return ret ;
514
514
  },
515
-
516
-
515
+
516
+
517
517
  /**
518
- Returns YES if the passed function returns true for any item in the
518
+ Returns YES if the passed function returns true for any item in the
519
519
  enumeration. This corresponds with the every() method in JavaScript 1.6.
520
-
520
+
521
521
  The callback method you provide should have the following signature (all
522
522
  parameters are optional):
523
-
523
+
524
524
  {{{
525
- function(item, index, enumerable) ;
525
+ function(item, index, enumerable) ;
526
526
  }}}
527
-
527
+
528
528
  - *item* is the current item in the iteration.
529
529
  - *index* is the current index in the iteration
530
530
  - *enumerable* is the enumerable object itself.
531
-
531
+
532
532
  It should return the YES to include the item in the results, NO otherwise.
533
-
533
+
534
534
  Note that in addition to a callback, you can also pass an optional target
535
535
  object that will be set as "this" on the context. This is a good way
536
536
  to give your iterator function access to the current object.
537
-
537
+
538
538
  h4. Usage Example
539
-
539
+
540
540
  {{{
541
541
  if (people.some(isManager)) { Paychecks.addBiggerBonus(); }
542
542
  }}}
543
-
543
+
544
544
  @params callback {Function} the callback to execute
545
545
  @params target {Object} the target object to use
546
546
  @returns {Array} A filtered array.
@@ -549,7 +549,7 @@ SC.Enumerable = {
549
549
  if (typeof callback !== "function") throw new TypeError() ;
550
550
  var len = this.get ? this.get('length') : this.length ;
551
551
  if (target === undefined) target = null;
552
-
552
+
553
553
  var ret = NO;
554
554
  var last = null ;
555
555
  var context = SC.Enumerator._popContext();
@@ -569,7 +569,7 @@ SC.Enumerable = {
569
569
 
570
570
  @params key {String} the property to test
571
571
  @param value {String} optional value to test against.
572
- @returns {Boolean} YES
572
+ @returns {Boolean} YES
573
573
  */
574
574
  someProperty: function(key, value) {
575
575
  var len = this.get ? this.get('length') : this.length ;
@@ -588,17 +588,17 @@ SC.Enumerable = {
588
588
  },
589
589
 
590
590
  /**
591
- This will combine the values of the enumerator into a single value. It
591
+ This will combine the values of the enumerator into a single value. It
592
592
  is a useful way to collect a summary value from an enumeration. This
593
593
  corresponds to the reduce() method defined in JavaScript 1.8.
594
-
594
+
595
595
  The callback method you provide should have the following signature (all
596
596
  parameters are optional):
597
-
597
+
598
598
  {{{
599
- function(previousValue, item, index, enumerable) ;
599
+ function(previousValue, item, index, enumerable) ;
600
600
  }}}
601
-
601
+
602
602
  - *previousValue* is the value returned by the last call to the iterator.
603
603
  - *item* is the current item in the iteration.
604
604
  - *index* is the current index in the iteration
@@ -610,10 +610,10 @@ SC.Enumerable = {
610
610
  will be raised if you do not pass an initial value and the enumerator is
611
611
  empty.
612
612
 
613
- Note that unlike the other methods, this method does not allow you to
613
+ Note that unlike the other methods, this method does not allow you to
614
614
  pass a target object to set as this for the callback. It's part of the
615
615
  spec. Sorry.
616
-
616
+
617
617
  @params callback {Function} the callback to execute
618
618
  @params initialValue {Object} initial value for the reduce
619
619
  @params reducerProperty {String} internal use only. May not be available.
@@ -625,13 +625,13 @@ SC.Enumerable = {
625
625
 
626
626
  // no value to return if no initial value & empty
627
627
  if (len===0 && initialValue === undefined) throw new TypeError();
628
-
628
+
629
629
  var ret = initialValue;
630
630
  var last = null ;
631
631
  var context = SC.Enumerator._popContext();
632
632
  for(var idx=0;idx<len;idx++) {
633
633
  var next = this.nextObject(idx, last, context) ;
634
-
634
+
635
635
  // while ret is still undefined, just set the first value we get as ret.
636
636
  // this is not the ideal behavior actually but it matches the FireFox
637
637
  // implementation... :(
@@ -646,17 +646,17 @@ SC.Enumerable = {
646
646
  }
647
647
  last = null ;
648
648
  context = SC.Enumerator._pushContext(context);
649
-
649
+
650
650
  // uh oh...we never found a value!
651
651
  if (ret === undefined) throw new TypeError() ;
652
652
  return ret ;
653
653
  },
654
-
654
+
655
655
  /**
656
656
  Invokes the named method on every object in the receiver that
657
657
  implements it. This method corresponds to the implementation in
658
658
  Prototype 1.6.
659
-
659
+
660
660
  @param methodName {String} the name of the method
661
661
  @param args {Object...} optional arguments to pass as well.
662
662
  @returns {Array} return values from calling invoke.
@@ -664,16 +664,16 @@ SC.Enumerable = {
664
664
  invoke: function(methodName) {
665
665
  var len = this.get ? this.get('length') : this.length ;
666
666
  if (len <= 0) return [] ; // nothing to invoke....
667
-
667
+
668
668
  var idx;
669
-
669
+
670
670
  // collect the arguments
671
671
  var args = [] ;
672
672
  var alen = arguments.length ;
673
673
  if (alen > 1) {
674
674
  for(idx=1;idx<alen;idx++) args.push(arguments[idx]) ;
675
675
  }
676
-
676
+
677
677
  // call invoke
678
678
  var ret = [] ;
679
679
  var last = null ;
@@ -691,7 +691,7 @@ SC.Enumerable = {
691
691
 
692
692
  /**
693
693
  Invokes the passed method and optional arguments on the receiver elements
694
- as long as the methods return value matches the target value. This is
694
+ as long as the methods return value matches the target value. This is
695
695
  a useful way to attempt to apply changes to a collection of objects unless
696
696
  or until one fails.
697
697
 
@@ -712,7 +712,7 @@ SC.Enumerable = {
712
712
  if (alen > 2) {
713
713
  for(idx=2;idx<alen;idx++) args.push(arguments[idx]) ;
714
714
  }
715
-
715
+
716
716
  // call invoke
717
717
  var ret = targetValue ;
718
718
  var last = null ;
@@ -727,12 +727,12 @@ SC.Enumerable = {
727
727
  context = SC.Enumerator._pushContext(context);
728
728
  return ret ;
729
729
  },
730
-
730
+
731
731
  /**
732
732
  Simply converts the enumerable into a genuine array. The order, of
733
- course, is not gauranteed. Corresponds to the method implemented by
733
+ course, is not gauranteed. Corresponds to the method implemented by
734
734
  Prototype.
735
-
735
+
736
736
  @returns {Array} the enumerable as an array.
737
737
  */
738
738
  toArray: function() {
@@ -740,37 +740,41 @@ SC.Enumerable = {
740
740
  this.forEach(function(o) { ret.push(o); }, this);
741
741
  return ret ;
742
742
  },
743
-
743
+
744
744
  /**
745
- Converts an enumerable into a matrix, with inner arrays grouped based
745
+ Converts an enumerable into a matrix, with inner arrays grouped based
746
746
  on a particular property of the elements of the enumerable.
747
747
 
748
748
  @params key {String} the property to test
749
749
  @returns {Array} matrix of arrays
750
- */
750
+ */
751
751
  groupBy: function(key){
752
752
  var len = this.get ? this.get('length') : this.length,
753
753
  ret = [],
754
754
  last = null,
755
755
  context = SC.Enumerator._popContext(),
756
756
  grouped = [],
757
- keyValues = [];
758
- for(var idx=0;idx<len;idx++) {
759
- var next = this.nextObject(idx, last, context) ;
760
- var cur = next ? (next.get ? next.get(key) : next[key]) : null;
761
- if(SC.none(grouped[cur])){ grouped[cur] = []; keyValues.push(cur); }
757
+ keyValues = [],
758
+ idx, next, cur;
759
+
760
+ for(idx=0;idx<len;idx++) {
761
+ next = this.nextObject(idx, last, context) ;
762
+ cur = next ? (next.get ? next.get(key) : next[key]) : null;
763
+ if(SC.none(grouped[cur])) {
764
+ grouped[cur] = []; keyValues.push(cur);
765
+ }
762
766
  grouped[cur].push(next);
763
767
  last = next;
764
768
  }
765
769
  last = null;
766
770
  context = SC.Enumerator._pushContext(context);
767
771
 
768
- for(var idx=0,len2=keyValues.length; idx < len2; idx++){
772
+ for(idx=0,len=keyValues.length; idx < len; idx++){
769
773
  ret.push(grouped[keyValues[idx]]);
770
774
  }
771
775
  return ret ;
772
776
  }
773
-
777
+
774
778
  } ;
775
779
 
776
780
  // Build in a separate function to avoid unintential leaks through closures...
@@ -781,7 +785,7 @@ SC._buildReducerFor = function(reducerKey, reducerProperty) {
781
785
  return this.unknownProperty ? this.unknownProperty(key, value) : null;
782
786
  } else {
783
787
  // Invoke the reduce method defined in enumerable instead of using the
784
- // one implemented in the receiver. The receiver might be a native
788
+ // one implemented in the receiver. The receiver might be a native
785
789
  // implementation that does not support reducerProperty.
786
790
  var ret = SC.Enumerable.reduce.call(this, reducer, null, reducerProperty) ;
787
791
  return ret ;
@@ -794,10 +798,10 @@ SC.Reducers = /** @lends SC.Enumerable */ {
794
798
  This property will trigger anytime the enumerable's content changes.
795
799
  You can observe this property to be notified of changes to the enumerables
796
800
  content.
797
-
801
+
798
802
  For plain enumerables, this property is read only. SC.Array overrides
799
803
  this method.
800
-
804
+
801
805
  @property {SC.Array}
802
806
  */
803
807
  '[]': function(key, value) { return this ; }.property(),
@@ -805,32 +809,32 @@ SC.Reducers = /** @lends SC.Enumerable */ {
805
809
  /**
806
810
  Invoke this method when the contents of your enumerable has changed.
807
811
  This will notify any observers watching for content changes. If your are
808
- implementing an ordered enumerable (such as an array), also pass the
812
+ implementing an ordered enumerable (such as an array), also pass the
809
813
  start and end values where the content changed so that it can be used to
810
814
  notify range observers.
811
-
815
+
812
816
  @param {Number} start optional start offset for the content change
813
817
  @param {Number} length optional length of change
814
- @returns {Object} receiver
818
+ @returns {Object} receiver
815
819
  */
816
820
  enumerableContentDidChange: function(start, length) {
817
821
  this.notifyPropertyChange('[]') ;
818
822
  return this ;
819
823
  },
820
-
824
+
821
825
  /**
822
- Call this method from your unknownProperty() handler to implement
823
- automatic reduced properties. A reduced property is a property that
824
- collects its contents dynamically from your array contents. Reduced
825
- properties always begin with "@". Getting this property will call
826
+ Call this method from your unknownProperty() handler to implement
827
+ automatic reduced properties. A reduced property is a property that
828
+ collects its contents dynamically from your array contents. Reduced
829
+ properties always begin with "@". Getting this property will call
826
830
  reduce() on your array with the function matching the key name as the
827
831
  processor.
828
-
829
- The return value of this will be either the return value from the
830
- reduced property or undefined, which means this key is not a reduced
832
+
833
+ The return value of this will be either the return value from the
834
+ reduced property or undefined, which means this key is not a reduced
831
835
  property. You can call this at the top of your unknownProperty handler
832
836
  like so:
833
-
837
+
834
838
  {{{
835
839
  unknownProperty: function(key, value) {
836
840
  var ret = this.handleReduceProperty(key, value) ;
@@ -839,36 +843,36 @@ SC.Reducers = /** @lends SC.Enumerable */ {
839
843
  }
840
844
  }
841
845
  }}}
842
-
846
+
843
847
  @param {String} key
844
848
  the reduce property key
845
-
849
+
846
850
  @param {Object} value
847
851
  a value or undefined.
848
-
852
+
849
853
  @param {Boolean} generateProperty
850
- only set to false if you do not want an optimized computed property
854
+ only set to false if you do not want an optimized computed property
851
855
  handler generated for this. Not common.
852
-
856
+
853
857
  @returns {Object} the reduced property or undefined
854
858
  */
855
859
  reducedProperty: function(key, value, generateProperty) {
856
-
860
+
857
861
  if (!key || key.charAt(0) !== '@') return undefined ; // not a reduced property
858
-
862
+
859
863
  // get the reducer key and the reducer
860
864
  var matches = key.match(/^@([^(]*)(\(([^)]*)\))?$/) ;
861
865
  if (!matches || matches.length < 2) return undefined ; // no match
862
-
866
+
863
867
  var reducerKey = matches[1]; // = 'max' if key = '@max(balance)'
864
868
  var reducerProperty = matches[3] ; // = 'balance' if key = '@max(balance)'
865
869
  reducerKey = "reduce" + reducerKey.slice(0,1).toUpperCase() + reducerKey.slice(1);
866
870
  var reducer = this[reducerKey] ;
867
871
 
868
- // if there is no reduce function defined for this key, then we can't
872
+ // if there is no reduce function defined for this key, then we can't
869
873
  // build a reducer for it.
870
874
  if (SC.typeOf(reducer) !== SC.T_FUNCTION) return undefined;
871
-
875
+
872
876
  // if we can't generate the property, just run reduce
873
877
  if (generateProperty === NO) {
874
878
  return SC.Enumerable.reduce.call(this, reducer, null, reducerProperty) ;
@@ -877,10 +881,10 @@ SC.Reducers = /** @lends SC.Enumerable */ {
877
881
  // ok, found the reducer. Let's build the computed property and install
878
882
  var func = SC._buildReducerFor(reducerKey, reducerProperty);
879
883
  var p = this.constructor.prototype ;
880
-
884
+
881
885
  if (p) {
882
886
  p[key] = func ;
883
-
887
+
884
888
  // add the function to the properties array so that new instances
885
889
  // will have their dependent key registered.
886
890
  var props = p._properties || [] ;
@@ -888,12 +892,12 @@ SC.Reducers = /** @lends SC.Enumerable */ {
888
892
  p._properties = props ;
889
893
  this.registerDependentKey(key, '[]') ;
890
894
  }
891
-
895
+
892
896
  // and reduce anyway...
893
897
  return SC.Enumerable.reduce.call(this, reducer, null, reducerProperty) ;
894
898
  },
895
-
896
- /**
899
+
900
+ /**
897
901
  Reducer for @max reduced property.
898
902
  */
899
903
  reduceMax: function(previousValue, item, index, e, reducerProperty) {
@@ -904,11 +908,11 @@ SC.Reducers = /** @lends SC.Enumerable */ {
904
908
  return (item > previousValue) ? item : previousValue ;
905
909
  },
906
910
 
907
- /**
911
+ /**
908
912
  Reducer for @maxObject reduced property.
909
913
  */
910
914
  reduceMaxObject: function(previousItem, item, index, e, reducerProperty) {
911
-
915
+
912
916
  // get the value for both the previous and current item. If no
913
917
  // reducerProperty was supplied, use the items themselves.
914
918
  var previousValue = previousItem, itemValue = item ;
@@ -916,7 +920,7 @@ SC.Reducers = /** @lends SC.Enumerable */ {
916
920
  if (item) {
917
921
  itemValue = item.get ? item.get(reducerProperty) : item[reducerProperty] ;
918
922
  }
919
-
923
+
920
924
  if (previousItem) {
921
925
  previousValue = previousItem.get ? previousItem.get(reducerProperty) : previousItem[reducerProperty] ;
922
926
  }
@@ -925,7 +929,7 @@ SC.Reducers = /** @lends SC.Enumerable */ {
925
929
  return (itemValue > previousValue) ? item : previousItem ;
926
930
  },
927
931
 
928
- /**
932
+ /**
929
933
  Reducer for @min reduced property.
930
934
  */
931
935
  reduceMin: function(previousValue, item, index, e, reducerProperty) {
@@ -936,7 +940,7 @@ SC.Reducers = /** @lends SC.Enumerable */ {
936
940
  return (item < previousValue) ? item : previousValue ;
937
941
  },
938
942
 
939
- /**
943
+ /**
940
944
  Reducer for @maxObject reduced property.
941
945
  */
942
946
  reduceMinObject: function(previousItem, item, index, e, reducerProperty) {
@@ -948,7 +952,7 @@ SC.Reducers = /** @lends SC.Enumerable */ {
948
952
  if (item) {
949
953
  itemValue = item.get ? item.get(reducerProperty) : item[reducerProperty] ;
950
954
  }
951
-
955
+
952
956
  if (previousItem) {
953
957
  previousValue = previousItem.get ? previousItem.get(reducerProperty) : previousItem[reducerProperty] ;
954
958
  }
@@ -957,7 +961,7 @@ SC.Reducers = /** @lends SC.Enumerable */ {
957
961
  return (itemValue < previousValue) ? item : previousItem ;
958
962
  },
959
963
 
960
- /**
964
+ /**
961
965
  Reducer for @average reduced property.
962
966
  */
963
967
  reduceAverage: function(previousValue, item, index, e, reducerProperty) {
@@ -967,10 +971,10 @@ SC.Reducers = /** @lends SC.Enumerable */ {
967
971
  var ret = (previousValue || 0) + item ;
968
972
  var len = e.get ? e.get('length') : e.length;
969
973
  if (index >= len-1) ret = ret / len; //avg after last item.
970
- return ret ;
974
+ return ret ;
971
975
  },
972
976
 
973
- /**
977
+ /**
974
978
  Reducer for @sum reduced property.
975
979
  */
976
980
  reduceSum: function(previousValue, item, index, e, reducerProperty) {
@@ -993,11 +997,11 @@ Array.prototype.isEnumerable = YES ;
993
997
  // Implement the same enhancements on Array. We use specialized methods
994
998
  // because working with arrays are so common.
995
999
  (function() {
996
-
1000
+
997
1001
  // These methods will be applied even if they already exist b/c we do it
998
1002
  // better.
999
1003
  var alwaysMixin = {
1000
-
1004
+
1001
1005
  // this is supported so you can get an enumerator. The rest of the
1002
1006
  // methods do not use this just to squeeze every last ounce of perf as
1003
1007
  // possible.
@@ -1006,7 +1010,7 @@ Array.prototype.isEnumerable = YES ;
1006
1010
  firstObject: SC.Enumerable.firstObject,
1007
1011
  lastObject: SC.Enumerable.lastObject,
1008
1012
  sortProperty: SC.Enumerable.sortProperty,
1009
-
1013
+
1010
1014
  // see above...
1011
1015
  mapProperty: function(key) {
1012
1016
  var len = this.length ;
@@ -1028,26 +1032,28 @@ Array.prototype.isEnumerable = YES ;
1028
1032
  if (matched) ret.push(next) ;
1029
1033
  }
1030
1034
  return ret ;
1031
- },
1035
+ },
1032
1036
 
1033
1037
  //returns a matrix
1034
1038
  groupBy: function(key) {
1035
1039
  var len = this.length,
1036
1040
  ret = [],
1037
1041
  grouped = [],
1038
- keyValues = [];
1039
- for(var idx=0;idx<len;idx++) {
1040
- var next = this[idx] ;
1041
- var cur = next ? (next.get ? next.get(key) : next[key]) : null;
1042
+ keyValues = [],
1043
+ idx, next, cur;
1044
+
1045
+ for(idx=0;idx<len;idx++) {
1046
+ next = this[idx] ;
1047
+ cur = next ? (next.get ? next.get(key) : next[key]) : null;
1042
1048
  if(SC.none(grouped[cur])){ grouped[cur] = []; keyValues.push(cur); }
1043
1049
  grouped[cur].push(next);
1044
1050
  }
1045
- for(var idx=0,len2=keyValues.length; idx < len2; idx++){
1051
+
1052
+ for(idx=0,len=keyValues.length; idx < len; idx++){
1046
1053
  ret.push(grouped[keyValues[idx]]);
1047
1054
  }
1048
1055
  return ret ;
1049
- },
1050
-
1056
+ },
1051
1057
 
1052
1058
  find: function(callback, target) {
1053
1059
  if (typeof callback !== "function") throw new TypeError() ;
@@ -1073,7 +1079,7 @@ Array.prototype.isEnumerable = YES ;
1073
1079
  }
1074
1080
  next=null;
1075
1081
  return ret ;
1076
- },
1082
+ },
1077
1083
 
1078
1084
  everyProperty: function(key, value) {
1079
1085
  var len = this.length ;
@@ -1085,7 +1091,7 @@ Array.prototype.isEnumerable = YES ;
1085
1091
  }
1086
1092
  return ret ;
1087
1093
  },
1088
-
1094
+
1089
1095
  someProperty: function(key, value) {
1090
1096
  var len = this.length ;
1091
1097
  var ret = NO;
@@ -1096,7 +1102,7 @@ Array.prototype.isEnumerable = YES ;
1096
1102
  }
1097
1103
  return ret ; // return the invert
1098
1104
  },
1099
-
1105
+
1100
1106
  invoke: function(methodName) {
1101
1107
  var len = this.length ;
1102
1108
  if (len <= 0) return [] ; // nothing to invoke....
@@ -1155,7 +1161,7 @@ Array.prototype.isEnumerable = YES ;
1155
1161
  }
1156
1162
  return ret ;
1157
1163
  },
1158
-
1164
+
1159
1165
  getEach: function(key) {
1160
1166
  var ret = [];
1161
1167
  var len = this.length ;
@@ -1165,7 +1171,7 @@ Array.prototype.isEnumerable = YES ;
1165
1171
  }
1166
1172
  return ret ;
1167
1173
  },
1168
-
1174
+
1169
1175
  setEach: function(key, value) {
1170
1176
  var len = this.length;
1171
1177
  for(var idx=0;idx<len;idx++) {
@@ -1178,47 +1184,49 @@ Array.prototype.isEnumerable = YES ;
1178
1184
  }
1179
1185
  return this ;
1180
1186
  }
1181
-
1182
- };
1183
-
1184
- // These methods will only be applied if they are not already defined b/c
1187
+
1188
+ };
1189
+
1190
+ // These methods will only be applied if they are not already defined b/c
1185
1191
  // the browser is probably getting it.
1186
1192
  var mixinIfMissing = {
1187
1193
 
1194
+ // QUESTION: The lack of DRY is burning my eyes [YK]
1188
1195
  forEach: function(callback, target) {
1189
1196
  if (typeof callback !== "function") throw new TypeError() ;
1190
- var len = this.length ;
1197
+
1198
+ // QUESTION: Is this necessary?
1191
1199
  if (target === undefined) target = null;
1192
1200
 
1193
- for(var idx=0;idx<len;idx++) {
1194
- var next = this[idx] ;
1195
- callback.call(target, next, idx, this);
1201
+ for(var i=0, l=this.length; i<l; i++) {
1202
+ var next = this[i] ;
1203
+ callback.call(target, next, i, this);
1196
1204
  }
1197
1205
  return this ;
1198
1206
  },
1199
1207
 
1200
1208
  map: function(callback, target) {
1201
1209
  if (typeof callback !== "function") throw new TypeError() ;
1202
- var len = this.length ;
1210
+
1203
1211
  if (target === undefined) target = null;
1204
1212
 
1205
1213
  var ret = [];
1206
- for(var idx=0;idx<len;idx++) {
1207
- var next = this[idx] ;
1208
- ret[idx] = callback.call(target, next, idx, this) ;
1214
+ for(var i=0, l=this.length; i<l; i++) {
1215
+ var next = this[i] ;
1216
+ ret[i] = callback.call(target, next, i, this) ;
1209
1217
  }
1210
1218
  return ret ;
1211
1219
  },
1212
1220
 
1213
1221
  filter: function(callback, target) {
1214
1222
  if (typeof callback !== "function") throw new TypeError() ;
1215
- var len = this.length ;
1223
+
1216
1224
  if (target === undefined) target = null;
1217
1225
 
1218
1226
  var ret = [];
1219
- for(var idx=0;idx<len;idx++) {
1220
- var next = this[idx] ;
1221
- if(callback.call(target, next, idx, this)) ret.push(next) ;
1227
+ for(var i=0, l=this.length; i<l; i++) {
1228
+ var next = this[i] ;
1229
+ if(callback.call(target, next, i, this)) ret.push(next) ;
1222
1230
  }
1223
1231
  return ret ;
1224
1232
  },
@@ -1260,8 +1268,8 @@ Array.prototype.isEnumerable = YES ;
1260
1268
  for(var idx=0;idx<len;idx++) {
1261
1269
  var next = this[idx] ;
1262
1270
 
1263
- // while ret is still undefined, just set the first value we get as
1264
- // ret. this is not the ideal behavior actually but it matches the
1271
+ // while ret is still undefined, just set the first value we get as
1272
+ // ret. this is not the ideal behavior actually but it matches the
1265
1273
  // FireFox implementation... :(
1266
1274
  if (next !== null) {
1267
1275
  if (ret === undefined) {
@@ -1275,24 +1283,24 @@ Array.prototype.isEnumerable = YES ;
1275
1283
  // uh oh...we never found a value!
1276
1284
  if (ret === undefined) throw new TypeError() ;
1277
1285
  return ret ;
1278
- }
1286
+ }
1279
1287
  };
1280
-
1288
+
1281
1289
  // Apply methods if missing...
1282
1290
  for(var key in mixinIfMissing) {
1283
1291
  if (!mixinIfMissing.hasOwnProperty(key)) continue ;
1284
-
1292
+
1285
1293
  // The mixinIfMissing methods should be applied if they are not defined.
1286
1294
  // If Prototype 1.6 is included, some of these methods will be defined
1287
- // already, but we want to override them anyway in this special case
1295
+ // already, but we want to override them anyway in this special case
1288
1296
  // because our version is faster and functionally identitical.
1289
1297
  if (!Array.prototype[key] || ((typeof Prototype === 'object') && Prototype.Version.match(/^1\.6/))) {
1290
1298
  Array.prototype[key] = mixinIfMissing[key] ;
1291
1299
  }
1292
1300
  }
1293
-
1301
+
1294
1302
  // Apply other methods...
1295
1303
  SC.mixin(Array.prototype, alwaysMixin) ;
1296
-
1304
+
1297
1305
  })() ;
1298
1306