sproutcore 1.5.0.pre.5 → 1.5.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1030) hide show
  1. data/CHANGELOG +20 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/buildtasks/manifest.rake +171 -78
  4. data/lib/frameworks/sproutcore/Buildfile +7 -6
  5. data/lib/frameworks/sproutcore/CHANGELOG.md +56 -0
  6. data/lib/frameworks/sproutcore/apps/docs/core.js +1 -1
  7. data/lib/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +1 -1
  8. data/lib/frameworks/sproutcore/apps/docs/english.lproj/strings.js +1 -1
  9. data/lib/frameworks/sproutcore/apps/docs/main.js +1 -1
  10. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +3 -3
  11. data/lib/frameworks/sproutcore/apps/test_controls/controllers/alert.js +39 -0
  12. data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +1 -1
  13. data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +19 -2
  14. data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +1 -1
  15. data/lib/frameworks/sproutcore/apps/test_controls/controllers/split.js +74 -0
  16. data/lib/frameworks/sproutcore/apps/test_controls/core.js +1 -1
  17. data/lib/frameworks/sproutcore/apps/test_controls/main.js +1 -1
  18. data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +11 -7
  19. data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +2 -1
  20. data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +2 -1
  21. data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +1 -1
  22. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +7 -1
  23. data/lib/frameworks/sproutcore/apps/test_controls/resources/panels_page.js +62 -0
  24. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +2 -1
  25. data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +2 -1
  26. data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +2 -1
  27. data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +2 -1
  28. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +2 -1
  29. data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +2 -1
  30. data/lib/frameworks/sproutcore/apps/test_controls/resources/split_page.js +141 -0
  31. data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +3 -2
  32. data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +28 -4
  33. data/lib/frameworks/sproutcore/apps/test_controls/theme.js +1 -1
  34. data/lib/frameworks/sproutcore/apps/tests/controllers/detail.js +1 -1
  35. data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +1 -1
  36. data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +1 -1
  37. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  38. data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +1 -1
  39. data/lib/frameworks/sproutcore/apps/tests/core.js +1 -1
  40. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +6 -6
  41. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +1 -1
  42. data/lib/frameworks/sproutcore/apps/tests/main.js +1 -1
  43. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  44. data/lib/frameworks/sproutcore/apps/tests/states/ready.js +1 -1
  45. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  46. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  47. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  48. data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +1 -1
  49. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  50. data/lib/frameworks/sproutcore/apps/tests/states/start.js +1 -1
  51. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +1 -1
  52. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/source.js +1 -1
  53. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/target.js +1 -1
  54. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +1 -1
  55. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +1 -1
  56. data/lib/frameworks/sproutcore/apps/tests/tests/models/target.js +1 -1
  57. data/lib/frameworks/sproutcore/apps/tests/tests/models/test.js +1 -1
  58. data/lib/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +1 -1
  59. data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +1 -1
  60. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  61. data/lib/frameworks/sproutcore/apps/welcome/core.js +1 -1
  62. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +1 -1
  63. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +1 -1
  64. data/lib/frameworks/sproutcore/apps/welcome/main.js +1 -1
  65. data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +1 -1
  66. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/QuickLook/Preview.pdf +0 -0
  67. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/QuickLook/Thumbnail.tiff +0 -0
  68. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/data.plist +0 -0
  69. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/image8.png +0 -0
  70. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/QuickLook/Preview.pdf +0 -0
  71. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/QuickLook/Thumbnail.tiff +0 -0
  72. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/data.plist +0 -0
  73. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/image8.png +0 -0
  74. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/QuickLook/Preview.pdf +0 -0
  75. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/QuickLook/Thumbnail.tiff +0 -0
  76. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/data.plist +0 -0
  77. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image10.png +0 -0
  78. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image11.png +0 -0
  79. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image13.png +0 -0
  80. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image15.png +0 -0
  81. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image16.png +0 -0
  82. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image17.png +0 -0
  83. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image18.png +0 -0
  84. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image19.png +0 -0
  85. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image22.tiff +0 -0
  86. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image23.png +0 -0
  87. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image24.png +0 -0
  88. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image25.png +0 -0
  89. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image30.png +0 -0
  90. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image31.png +0 -0
  91. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image8.png +0 -0
  92. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.gaffle}/image9.png +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/bootstrap/core.js +1 -1
  94. data/lib/frameworks/sproutcore/frameworks/bootstrap/setup_body_class_names.js +1 -1
  95. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/bench.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
  97. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +1 -1
  98. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +58 -7
  99. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +1 -1
  100. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +1 -1
  101. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +1 -1
  102. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +1 -1
  104. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  105. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +1 -2
  106. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +6 -7
  107. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/string.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +28 -0
  109. data/lib/frameworks/sproutcore/frameworks/core_foundation/{views/template → mixins/template_helpers}/text_field_support.js +10 -1
  110. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +6 -0
  111. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +25 -38
  112. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +6 -0
  114. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +2 -2
  115. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +7 -0
  116. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +6 -0
  117. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/observable_protocol.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +6 -0
  120. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +2 -2
  121. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +1 -1
  122. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/bindable_span.js +164 -0
  123. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +1 -1
  124. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +1 -1
  126. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  127. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +1 -1
  128. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +45 -17
  129. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/json.js +1 -1
  130. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/page.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +24 -4
  133. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +48 -22
  134. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +1 -1
  135. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  136. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +34 -5
  137. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +1 -1
  138. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +1 -1
  139. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +1 -1
  140. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +6 -5
  141. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +8 -2
  142. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +6 -0
  143. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +84 -1
  144. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/enum_case.js +1 -1
  145. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/null_case.js +1 -1
  146. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +1 -1
  147. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/single_case.js +1 -1
  148. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/empty_case.js +1 -1
  149. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/multiple_case.js +1 -1
  150. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +1 -1
  151. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_enumerable_case.js +1 -1
  152. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +2 -1
  153. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +2 -1
  154. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/{views/template → mixins/template_helpers}/checkbox_support.js +6 -0
  155. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/{views/template → mixins/template_helpers}/text_field_support.js +6 -0
  156. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +6 -0
  157. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/builder.js +7 -0
  158. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/core_query/within.js +6 -0
  159. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/json.js +7 -0
  160. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +6 -0
  161. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/ready/done.js +8 -0
  162. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/begin.js +1 -1
  163. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/element.js +1 -1
  164. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +1 -1
  165. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/get.js +1 -1
  166. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +1 -1
  167. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_basic.js +1 -1
  168. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  169. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +1 -1
  170. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/init.js +1 -1
  171. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/join.js +1 -1
  172. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/push_text.js +1 -1
  173. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/tag.js +1 -1
  174. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +1 -1
  175. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeKeyPane.js +1 -1
  176. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMenuPane.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +7 -0
  179. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/targetForAction.js +1 -1
  180. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/add.js +1 -1
  181. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/copy.js +1 -1
  182. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/indexSetForSource.js +1 -1
  183. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/isEqual.js +1 -1
  184. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  185. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +8 -1
  186. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +2 -1
  187. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invalidate.js +6 -0
  188. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +6 -0
  189. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/isPaused.js +6 -0
  190. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/performAction.js +6 -0
  191. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/schedule.js +6 -0
  192. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/normalizeURL.js +6 -0
  193. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +23 -10
  194. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +6 -0
  195. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +6 -0
  196. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +7 -1
  197. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +6 -0
  198. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/{template_view → template}/collection.js +77 -11
  203. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/core.js +160 -0
  204. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/{template_view → template}/handlebars.js +279 -8
  205. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +6 -0
  206. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +1 -1
  207. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  208. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +1 -1
  210. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertLayouts.js +6 -0
  211. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +8 -1
  212. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +1 -1
  213. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +1 -1
  215. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +1 -1
  216. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +1 -1
  218. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +7 -1
  219. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +7 -1
  220. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +6 -0
  221. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +1 -1
  222. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +1 -1
  223. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +1 -1
  224. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +6 -0
  225. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +1 -1
  226. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +4 -4
  227. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +1 -1
  228. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +1 -1
  230. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceChild.js +1 -1
  231. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +7 -0
  232. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/theme.js +1 -1
  233. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +1 -1
  234. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +1 -1
  236. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +1 -1
  237. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +58 -8
  238. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +179 -0
  239. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +92 -65
  240. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +2 -0
  241. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +37 -15
  243. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +67 -29
  245. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +6 -1
  246. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
  248. data/lib/frameworks/sproutcore/frameworks/core_tools/english.lproj/strings.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/core_tools/fixtures/target.js +1 -1
  250. data/lib/frameworks/sproutcore/frameworks/core_tools/fixtures/test.js +1 -1
  251. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
  252. data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +1 -1
  253. data/lib/frameworks/sproutcore/frameworks/datastore/core.js +1 -1
  254. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +1 -1
  256. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +1 -1
  257. data/lib/frameworks/sproutcore/frameworks/datastore/debug/json.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +1 -1
  259. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +23 -12
  260. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +1 -0
  261. data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +1 -1
  262. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +1 -1
  263. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +211 -90
  264. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +121 -91
  265. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +15 -17
  266. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +50 -14
  267. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +35 -20
  268. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +13 -9
  269. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +56 -73
  270. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +35 -22
  271. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +138 -62
  272. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +1 -1
  273. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +1 -1
  278. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +1 -1
  279. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  280. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +5 -1
  281. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +1 -1
  282. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  283. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +1 -1
  284. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +1 -1
  285. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +1 -1
  286. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +2 -2
  287. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +1 -1
  288. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +1 -1
  289. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +1 -1
  290. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  291. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +1 -1
  292. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +1 -1
  293. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
  294. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +1 -1
  295. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  296. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/core_methods.js +1 -1
  297. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  300. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +1 -1
  301. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +1 -1
  302. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +1 -1
  303. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +1 -1
  304. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +1 -1
  305. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/contains.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/containsRecordTypes.js +1 -1
  307. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/copy.js +1 -1
  308. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +1 -1
  309. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +1 -1
  310. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/expandedRecordTypes.js +1 -1
  311. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  312. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/queryWithScope.js +1 -1
  313. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +1 -1
  314. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +1 -1
  316. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  317. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +1 -1
  318. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +49 -12
  319. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  320. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  321. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +11 -1
  322. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +1 -1
  323. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +1 -1
  324. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +1 -1
  325. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +1 -1
  326. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
  327. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/error_methods.js +1 -1
  328. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +1 -1
  329. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +1 -1
  330. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +1 -1
  331. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  332. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +1 -1
  333. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
  334. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +1 -1
  335. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +17 -1
  336. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +1 -1
  337. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +1 -1
  338. data/lib/frameworks/sproutcore/frameworks/datetime/resources/strings.js +1 -1
  339. data/lib/frameworks/sproutcore/frameworks/datetime/system/datetime.js +48 -7
  340. data/lib/frameworks/sproutcore/frameworks/datetime/tests/system/datetime.js +7 -0
  341. data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
  342. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/designer/coders/design.js +7 -5
  344. data/lib/frameworks/sproutcore/frameworks/designer/coders/object.js +7 -5
  345. data/lib/frameworks/sproutcore/frameworks/designer/controllers/controllers.js +7 -0
  346. data/lib/frameworks/sproutcore/frameworks/designer/controllers/design.js +6 -0
  347. data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +6 -0
  348. data/lib/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +7 -5
  349. data/lib/frameworks/sproutcore/frameworks/designer/controllers/page_files.js +6 -0
  350. data/lib/frameworks/sproutcore/frameworks/designer/core.js +6 -4
  351. data/lib/frameworks/sproutcore/frameworks/designer/css/css_rule.js +1 -1
  352. data/lib/frameworks/sproutcore/frameworks/designer/css/css_style.js +1 -1
  353. data/lib/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +1 -1
  354. data/lib/frameworks/sproutcore/frameworks/designer/designers/button.js +7 -5
  355. data/lib/frameworks/sproutcore/frameworks/designer/designers/label.js +7 -5
  356. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +7 -5
  357. data/lib/frameworks/sproutcore/frameworks/designer/designers/tab.js +7 -5
  358. data/lib/frameworks/sproutcore/frameworks/designer/designers/text_field.js +7 -5
  359. data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +7 -5
  360. data/lib/frameworks/sproutcore/frameworks/designer/ext/binding.js +6 -0
  361. data/lib/frameworks/sproutcore/frameworks/designer/ext/object.js +7 -5
  362. data/lib/frameworks/sproutcore/frameworks/designer/ext/page.js +7 -5
  363. data/lib/frameworks/sproutcore/frameworks/designer/ext/view.js +7 -5
  364. data/lib/frameworks/sproutcore/frameworks/designer/mixins/button.js +7 -5
  365. data/lib/frameworks/sproutcore/frameworks/designer/mixins/snap_lines.js +6 -0
  366. data/lib/frameworks/sproutcore/frameworks/designer/tests/designers/view_designer.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  368. data/lib/frameworks/sproutcore/frameworks/desktop/debug/drag.js +6 -5
  369. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -1
  370. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -27
  371. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +1 -9
  372. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +7 -5
  373. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +6 -0
  374. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +1 -1
  375. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  376. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  377. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +7 -5
  378. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +7 -5
  379. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +293 -203
  380. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +35 -107
  381. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +7 -5
  382. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +2 -1
  383. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +10 -36
  384. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +44 -4
  385. data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +1 -1
  386. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -1
  387. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +6 -5
  388. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +7 -5
  389. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +7 -5
  390. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +7 -5
  391. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +70 -63
  392. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +29 -31
  393. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +2 -1
  394. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +12 -22
  395. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/helpers/slicing.js +4 -3
  396. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +9 -3
  397. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +2 -1
  398. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +46 -33
  399. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +16 -16
  400. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +3 -2
  401. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +21 -0
  402. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +56 -143
  403. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +17 -28
  404. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +8 -1
  405. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +5 -2
  406. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +7 -4
  407. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +38 -15
  408. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/source_list.js +1 -1
  409. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +1 -1
  410. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +3 -13
  411. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +2 -2
  412. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +17 -7
  413. data/lib/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +7 -5
  414. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +7 -5
  415. data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +19 -3
  416. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +10 -1
  417. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +1 -1
  418. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +215 -53
  419. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -1
  420. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +33 -8
  421. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +1 -1
  422. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +2 -2
  423. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +4 -3
  424. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +1 -1
  425. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +4 -18
  426. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +91 -3
  427. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +2 -2
  428. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +1 -1
  429. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +1 -1
  430. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +1 -1
  431. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +4 -2
  432. data/lib/frameworks/sproutcore/frameworks/{foundation/tests/mixins → desktop/tests/views}/button/content.js +9 -15
  433. data/lib/frameworks/sproutcore/frameworks/{foundation/tests/mixins → desktop/tests/views}/button/displayProperties.js +4 -4
  434. data/lib/frameworks/sproutcore/frameworks/{foundation/tests/mixins → desktop/tests/views}/button/keyEquivalents.js +3 -3
  435. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +1 -1
  436. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +5 -5
  437. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +1 -1
  438. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +4 -7
  439. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +1 -1
  440. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +1 -1
  441. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +1 -1
  442. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/displayProperties.js +1 -1
  443. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +1 -1
  444. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +1 -1
  445. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +1 -1
  446. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +1 -1
  447. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +1 -1
  448. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  449. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +1 -1
  450. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +1 -1
  451. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +1 -1
  452. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +1 -1
  453. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +1 -1
  454. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -1
  455. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +1 -1
  456. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +1 -1
  457. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +9 -11
  458. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +1 -1
  459. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +1 -1
  460. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +0 -1
  461. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +1 -1
  462. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +1 -1
  463. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +1 -1
  464. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +1 -1
  465. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +1 -1
  466. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +1 -1
  467. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +1 -1
  468. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +5 -1
  469. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +1 -1
  470. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +1 -1
  471. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +1 -1
  472. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +1 -1
  473. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +37 -40
  474. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +1 -1
  475. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +10 -21
  476. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scene_view/databind.js +111 -0
  477. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +50 -0
  478. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +1 -1
  479. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +2 -2
  480. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +1 -1
  481. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +1 -47
  482. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +16 -16
  483. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +1 -1
  484. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +1 -1
  485. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +1 -1
  486. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +69 -6
  487. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +1 -1
  488. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +1 -1
  489. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +1 -1
  490. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +1 -1
  491. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +1 -1
  492. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +1 -1
  493. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +1 -1
  494. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -1
  495. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +1 -1
  496. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +1 -1
  497. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +1 -1
  498. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +1 -1
  499. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
  500. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/well/ui.js +1 -1
  501. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +329 -13
  502. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +4 -26
  503. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +1 -1
  504. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +1 -1
  505. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -9
  506. data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +1 -2
  507. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +6 -0
  508. data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +15 -13
  509. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +1 -1
  510. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +76 -75
  511. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +1 -1
  512. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  513. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +1 -1
  514. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation.js +1 -1
  515. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation_bar.js +1 -1
  516. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +8 -0
  517. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +18 -6
  518. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +6 -5
  519. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +1 -1
  520. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +13 -14
  521. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +20 -7
  522. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +10 -3
  523. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +15 -3
  524. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +2 -2
  525. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +11 -9
  526. data/lib/frameworks/sproutcore/frameworks/desktop/views/separator.js +7 -5
  527. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +10 -2
  528. data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list.js +1 -1
  529. data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +1 -1
  530. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +1 -1
  531. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -2
  532. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +1 -1
  533. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
  534. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +11 -10
  535. data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +1 -1
  536. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
  537. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +1 -1
  538. data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -1
  539. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +1 -1
  540. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +1 -1
  541. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +1 -1
  542. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +35 -23
  543. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +83 -9
  544. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/many.js +79 -0
  545. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +66 -0
  546. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/single.js +67 -0
  547. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +229 -0
  548. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +236 -0
  549. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +18 -0
  550. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +26 -0
  551. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +100 -0
  552. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/dividers.js +243 -0
  553. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +294 -0
  554. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_child.js +135 -0
  555. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +160 -0
  556. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +929 -0
  557. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +40 -0
  558. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +26 -0
  559. data/lib/frameworks/sproutcore/frameworks/forms/mixins/edit_mode.js +5 -0
  560. data/lib/frameworks/sproutcore/frameworks/forms/mixins/emptiness.js +1 -2
  561. data/lib/frameworks/sproutcore/frameworks/forms/renderer_delegates/form.js +1 -2
  562. data/lib/frameworks/sproutcore/frameworks/forms/renderer_delegates/form_row.js +1 -2
  563. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form.js +4 -2
  564. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_checkbox_field.js +4 -2
  565. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_field.js +4 -2
  566. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_label.js +4 -2
  567. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_radio_field.js +4 -2
  568. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_row.js +4 -2
  569. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_text_field.js +4 -2
  570. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +7 -3
  571. data/lib/frameworks/sproutcore/frameworks/forms/views/form_row.js +5 -2
  572. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +39 -38
  573. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +1 -2
  574. data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +92 -0
  575. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
  576. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +5 -0
  577. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/pinch.js +1 -1
  578. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/swipe.js +1 -1
  579. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/tap.js +6 -2
  580. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +1 -1
  581. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +239 -126
  582. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -350
  583. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +1 -1
  584. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +1 -1
  585. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +217 -0
  586. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +17 -186
  587. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +3 -7
  588. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +345 -287
  589. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +1 -1
  590. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +249 -59
  591. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +197 -0
  592. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +177 -114
  593. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +404 -340
  594. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +1 -1
  595. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  596. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/string.js +7 -0
  597. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +47 -47
  598. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +1 -1
  599. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +205 -200
  600. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/container.js +1 -1
  601. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +174 -0
  602. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +16 -32
  603. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +375 -6
  604. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +1 -1
  605. data/lib/frameworks/sproutcore/frameworks/foundation/system/cookie.js +6 -0
  606. data/lib/frameworks/sproutcore/frameworks/foundation/system/core_query.js +8 -1
  607. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +1 -1
  608. data/lib/frameworks/sproutcore/frameworks/foundation/system/gesture.js +1 -1
  609. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +1 -1
  610. data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +1 -1
  611. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -26
  612. data/lib/frameworks/sproutcore/frameworks/foundation/system/request.js +44 -29
  613. data/lib/frameworks/sproutcore/frameworks/foundation/system/response.js +1 -1
  614. data/lib/frameworks/sproutcore/frameworks/foundation/system/routes.js +1 -1
  615. data/lib/frameworks/sproutcore/frameworks/foundation/system/staticqueue.js +6 -0
  616. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +1 -1
  617. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  618. data/lib/frameworks/sproutcore/frameworks/foundation/system/time.js +6 -5
  619. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +1 -1
  620. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +7 -0
  621. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +28 -7
  622. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/range.js +7 -0
  623. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +7 -0
  624. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +1 -1
  625. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/task.js +1 -1
  626. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +1 -1
  627. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +1 -1
  628. data/lib/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +1 -1
  629. data/lib/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +1 -1
  630. data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +150 -0
  631. data/lib/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +1 -1
  632. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +6 -0
  633. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/{control → content_value_support}/content.js +8 -8
  634. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +1 -1
  635. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +194 -0
  636. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +150 -0
  637. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +151 -0
  638. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +114 -0
  639. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +151 -0
  640. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +152 -0
  641. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/api.js +1 -1
  642. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +10 -9
  643. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +6 -1
  644. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +6 -0
  645. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +1 -1
  646. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +59 -59
  647. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +114 -114
  648. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +74 -74
  649. data/lib/frameworks/sproutcore/frameworks/foundation/tests/render_delegates/render_delegate.js +78 -0
  650. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/cookie.js +4 -1
  651. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +6 -0
  652. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/math.js +1 -1
  653. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +6 -0
  654. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +6 -0
  655. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/task_queue.js +8 -2
  656. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +6 -0
  657. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +6 -0
  658. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +6 -0
  659. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +6 -0
  660. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +1 -1
  661. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/not_empty.js +1 -1
  662. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +6 -0
  663. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +6 -0
  664. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/validator.js +6 -0
  665. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +1 -1
  666. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +1 -1
  667. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +1 -1
  668. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +7 -15
  669. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +1 -1
  670. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/nextValidKeyView.js +1 -1
  671. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +1 -1
  672. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  673. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  674. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  675. data/lib/frameworks/sproutcore/frameworks/foundation/validators/email.js +1 -1
  676. data/lib/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +1 -1
  677. data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +1 -1
  678. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  679. data/lib/frameworks/sproutcore/frameworks/foundation/validators/positive_integer.js +2 -1
  680. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +1 -1
  681. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
  682. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +1 -1
  683. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +3 -3
  684. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +47 -33
  685. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +28 -4
  686. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +88 -2
  687. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/bind.js +100 -46
  688. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/collection.js +21 -46
  689. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/view.js +28 -49
  690. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +62 -28
  691. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +28 -18
  692. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +5 -0
  693. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +5 -0
  694. data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +40 -0
  695. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +1 -1
  696. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +1 -1
  697. data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +1 -1
  698. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +1 -1
  699. data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +1 -1
  700. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +1 -1
  701. data/lib/frameworks/sproutcore/frameworks/mini/license.js +2 -1
  702. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +166 -137
  703. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +1 -1
  704. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +1 -1
  705. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +1 -1
  706. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +1 -1
  707. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +1 -1
  708. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +1 -1
  709. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +1 -1
  710. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +1 -1
  711. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +1 -1
  712. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +1 -1
  713. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +1 -1
  714. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +1 -1
  715. data/lib/frameworks/sproutcore/frameworks/runtime/license.js +1 -1
  716. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +50 -13
  717. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +7 -4
  718. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +10 -3
  719. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +437 -120
  720. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +24 -25
  721. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +916 -825
  722. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +9 -6
  723. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +2 -1
  724. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +2 -1
  725. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +190 -0
  726. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +88 -95
  727. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +2 -2
  728. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +13 -11
  729. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +40 -30
  730. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +40 -38
  731. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +100 -98
  732. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +5 -2
  733. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +11 -12
  734. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +5 -3
  735. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +6 -0
  736. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +6 -0
  737. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +1 -1
  738. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +1 -1
  739. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +5 -0
  740. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +6 -0
  741. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +6 -0
  742. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +6 -0
  743. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +6 -0
  744. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +6 -0
  745. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +6 -0
  746. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +6 -0
  747. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +1 -1
  748. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/comparable.js +1 -1
  749. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/{enumerable.js → enumerable/enumerable.js} +1 -2
  750. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable_observers.js +92 -0
  751. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +32 -19
  752. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +138 -3
  753. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observersForKey.js +36 -0
  754. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +6 -0
  755. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +33 -1
  756. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +6 -0
  757. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +1 -1
  758. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +61 -7
  759. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/error.js +6 -0
  760. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +1 -1
  761. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/addEach.js +1 -1
  762. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +1 -1
  763. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +1 -1
  764. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +1 -1
  765. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +1 -1
  766. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +1 -1
  767. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +1 -1
  768. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +1 -1
  769. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +1 -1
  770. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +1 -1
  771. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +1 -1
  772. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/removeEach.js +1 -1
  773. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +1 -1
  774. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +5 -0
  775. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +6 -0
  776. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +6 -0
  777. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +6 -0
  778. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +19 -0
  779. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +6 -0
  780. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +1 -1
  781. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +1 -1
  782. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +1 -1
  783. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +1 -1
  784. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +1 -1
  785. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +6 -0
  786. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +6 -0
  787. data/lib/frameworks/sproutcore/frameworks/statechart/core.js +2 -2
  788. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +23 -4
  789. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +661 -54
  790. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +990 -324
  791. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/advanced/respond_to_event.js +401 -0
  792. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/{advanced_event_handling.js → advanced/without_concurrent_states.js} +1 -5
  793. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{with_concurrent_states/send_event.js → event_handling/basic/with_concurrent_states.js} +0 -0
  794. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/send_event.js → event_handling/basic/without_concurrent_states.js} +0 -0
  795. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/default_responder.js → event_handling/responder/pane.js} +1 -2
  796. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +109 -0
  797. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/root_responder.js +74 -0
  798. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/initial_substate.js +67 -0
  799. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/is_current_state.js +0 -4
  800. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{namespace/access_substates.js → state/namespacing.js} +0 -4
  801. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/plugin/mixin.js +68 -0
  802. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/state_plugin.js → state/plugin/nesting.js} +1 -5
  803. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/state_observes.js +235 -0
  804. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{async.js → state_transitioning/async/core.js} +0 -0
  805. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{with_concurrent_states/goto_state_async.js → state_transitioning/async/with_concurrent_states.js} +0 -0
  806. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/goto_state_async.js → state_transitioning/async/without_concurrent_states.js} +4 -0
  807. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/initial_substate/core.js +48 -0
  808. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/initial_substate/without_concurrent_states.js +218 -0
  809. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{with_concurrent_states/goto_history_state.js → state_transitioning/history_state/standard/with_concurrent_states.js} +1 -1
  810. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +191 -0
  811. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/goto_history_state.js → state_transitioning/history_state/standard/without_concurrent_states/core.js} +0 -0
  812. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{with_concurrent_states/goto_state_advanced.js → state_transitioning/standard/with_concurrent_states/advanced.js} +37 -32
  813. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{with_concurrent_states/goto_state_basic.js → state_transitioning/standard/with_concurrent_states/basic.js} +17 -25
  814. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{with_concurrent_states/goto_state_intermediate.js → state_transitioning/standard/with_concurrent_states/intermediate.js} +22 -21
  815. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/context.js +144 -0
  816. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/goto_state.js → state_transitioning/standard/without_concurrent_states/core.js} +49 -24
  817. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{without_concurrent_states/transient.js → state_transitioning/transient/without_concurrent_states.js} +1 -1
  818. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/create/assigned_root_state.js +76 -0
  819. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/create/unassigned_root_state.js +162 -0
  820. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/destroy.js +73 -0
  821. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/invoke_state_method.js +241 -0
  822. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/owner.js +236 -0
  823. data/lib/frameworks/sproutcore/frameworks/table/mixins/table_delegate.js +1 -1
  824. data/lib/frameworks/sproutcore/frameworks/table/system/table_column.js +1 -1
  825. data/lib/frameworks/sproutcore/frameworks/table/views/table.js +1 -1
  826. data/lib/frameworks/sproutcore/frameworks/table/views/table_cell.js +1 -1
  827. data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +1 -1
  828. data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +1 -1
  829. data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +1 -1
  830. data/lib/frameworks/sproutcore/frameworks/testing/core.js +1 -1
  831. data/lib/frameworks/sproutcore/frameworks/testing/extras.js +1 -1
  832. data/lib/frameworks/sproutcore/frameworks/testing/system/dump.js +1 -1
  833. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  834. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +7 -1
  835. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +1 -1
  836. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +1 -1
  837. data/lib/frameworks/sproutcore/frameworks/testing/utils.js +1 -1
  838. data/lib/frameworks/sproutcore/license.js +2 -1
  839. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +10 -6
  840. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/button.css +5 -0
  841. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.js +3 -1
  842. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +1 -0
  843. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +1 -1
  844. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +1 -1
  845. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio.css +0 -6
  846. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +2 -1
  847. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +29 -3
  848. data/lib/frameworks/sproutcore/themes/ace/theme.js +17 -1
  849. data/lib/frameworks/sproutcore/themes/empty_theme/theme.js +1 -1
  850. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +1 -1
  851. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/Data +0 -0
  852. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
  853. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
  854. data/lib/frameworks/sproutcore/themes/standard_theme/Source/SproutCore Theme Buttons.psd b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/SproutCore Theme → Buttons.psd +0 -0
  855. data/lib/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView → Pattern.drawit/Data +0 -0
  856. data/lib/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView → Pattern.drawit/QuickLook/Preview.jpg +0 -0
  857. data/lib/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView → Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
  858. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/10.png +0 -0
  859. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/100.png +0 -0
  860. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/102.png +0 -0
  861. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/110.png +0 -0
  862. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/120.png +0 -0
  863. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/127.png +0 -0
  864. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/18.png +0 -0
  865. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/19.png +0 -0
  866. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/2.png +0 -0
  867. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/24.png +0 -0
  868. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/26.png +0 -0
  869. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/27.png +0 -0
  870. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/28.png +0 -0
  871. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/29.png +0 -0
  872. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/30.png +0 -0
  873. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/31.png +0 -0
  874. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/33.png +0 -0
  875. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/37.png +0 -0
  876. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/41.png +0 -0
  877. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/99.png +0 -0
  878. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/10.png +0 -0
  879. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/100.png +0 -0
  880. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/102.png +0 -0
  881. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/110.png +0 -0
  882. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/120.png +0 -0
  883. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/127.png +0 -0
  884. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/18.png +0 -0
  885. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/19.png +0 -0
  886. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/2.png +0 -0
  887. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/24.png +0 -0
  888. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/26.png +0 -0
  889. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/27.png +0 -0
  890. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/28.png +0 -0
  891. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/29.png +0 -0
  892. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/30.png +0 -0
  893. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/31.png +0 -0
  894. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/33.png +0 -0
  895. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/37.png +0 -0
  896. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/41.png +0 -0
  897. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/99.png +0 -0
  898. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/10.png +0 -0
  899. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/100.png +0 -0
  900. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/102.png +0 -0
  901. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/110.png +0 -0
  902. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/120.png +0 -0
  903. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/127.png +0 -0
  904. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/18.png +0 -0
  905. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/19.png +0 -0
  906. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/2.png +0 -0
  907. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/24.png +0 -0
  908. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/26.png +0 -0
  909. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/27.png +0 -0
  910. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/28.png +0 -0
  911. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/29.png +0 -0
  912. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/30.png +0 -0
  913. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/31.png +0 -0
  914. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/33.png +0 -0
  915. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/37.png +0 -0
  916. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/41.png +0 -0
  917. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/99.png +0 -0
  918. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/10.png +0 -0
  919. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/18.png +0 -0
  920. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/19.png +0 -0
  921. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/2.png +0 -0
  922. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/Data +0 -0
  923. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
  924. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
  925. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/Data +0 -0
  926. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
  927. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
  928. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-repeat-x-2.psd +0 -0
  929. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-repeat-x.psd +0 -0
  930. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-sprite.psd +0 -0
  931. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-ysprite.psd +0 -0
  932. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/shared-icons.psd +0 -0
  933. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sproutcore-logo.psd +0 -0
  934. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sticky-note.psd +0 -0
  935. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/button.css +0 -0
  936. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/checkbox.css +0 -0
  937. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/collection.css +0 -0
  938. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/core.css +0 -0
  939. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/disclosure.css +0 -0
  940. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_222222.png +0 -0
  941. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_454545.png +0 -0
  942. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_888888.png +0 -0
  943. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_ffffff.png +0 -0
  944. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/panels/sprite-x.png +0 -0
  945. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/panels/sprite-y.png +0 -0
  946. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-repeat-x.png +0 -0
  947. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-repeat-y.png +0 -0
  948. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-sprite.png +0 -0
  949. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-theme-repeat-x.png +0 -0
  950. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-theme-ysprite.png +0 -0
  951. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-toolbar-view.png +0 -0
  952. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/label.css +0 -0
  953. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/list_item.css +0 -0
  954. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/menu.css +0 -0
  955. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/menu_item_view.css +0 -0
  956. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/pane.css +1 -1
  957. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/panel.css +0 -0
  958. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/picker.css +0 -0
  959. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/progress.css +0 -0
  960. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/radio.css +0 -0
  961. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/scroller.css +0 -0
  962. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/segmented.css +0 -0
  963. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/slider.css +0 -0
  964. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/split_view.css +0 -0
  965. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/tab.css +0 -0
  966. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/table.css +0 -0
  967. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/text_field.css +0 -0
  968. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/toolbar.css +0 -0
  969. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/well.css +0 -0
  970. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +89 -0
  971. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +28 -0
  972. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +194 -0
  973. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +67 -0
  974. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +27 -0
  975. data/lib/frameworks/sproutcore/themes/legacy_theme/theme.js +13 -0
  976. data/lib/sproutcore/builders.rb +0 -1
  977. data/lib/sproutcore/builders/base.rb +3 -1
  978. data/lib/sproutcore/builders/chance_file.rb +29 -10
  979. data/lib/sproutcore/builders/combine.rb +2 -4
  980. data/lib/sproutcore/builders/javascript.rb +14 -1
  981. data/lib/sproutcore/builders/minify.rb +3 -2
  982. data/lib/sproutcore/builders/module.rb +2 -0
  983. data/lib/sproutcore/helpers/minifier.rb +91 -37
  984. data/lib/sproutcore/helpers/static_helper.rb +26 -10
  985. data/lib/sproutcore/models/target.rb +36 -6
  986. data/lib/sproutcore/tools.rb +26 -20
  987. data/lib/sproutcore/tools/build.rb +2 -1
  988. data/spec/buildtasks/manifest/prepare_build_tasks/chance_2x_spec.rb +100 -0
  989. data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +17 -13
  990. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +3 -3
  991. data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_indirect_spec.rb +191 -0
  992. data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_spec.rb +185 -0
  993. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +32 -30
  994. data/spec/fixtures/builder_tests/apps/chance_test/resources/force@2x.png +0 -0
  995. data/spec/fixtures/real_world/frameworks/no_2x/resources/test.css +1 -0
  996. data/spec/fixtures/real_world/frameworks/no_2x/resources/test.png +0 -0
  997. data/spec/fixtures/real_world/frameworks/sproutcore/resources/force@2x.png +0 -0
  998. data/spec/lib/builders/chance_file_spec.rb +11 -30
  999. data/sproutcore.gemspec +2 -2
  1000. data/vendor/chance/bin/chance +20 -46
  1001. data/vendor/chance/lib/chance.rb +20 -3
  1002. data/vendor/chance/lib/chance/instance.rb +154 -76
  1003. data/vendor/chance/lib/chance/instance/data_url.rb +85 -0
  1004. data/vendor/chance/lib/chance/instance/javascript.rb +19 -0
  1005. data/vendor/chance/lib/chance/instance/slicing.rb +181 -0
  1006. data/vendor/chance/lib/chance/instance/spriting.rb +311 -0
  1007. data/vendor/chance/lib/chance/parser.rb +24 -20
  1008. data/vendor/chance/lib/tester/test.rb +108 -0
  1009. data/vendor/chance/lib/tester/test_runner.rb +27 -0
  1010. data/vendor/chance/tests/parser/basic/input/test.css +4 -0
  1011. data/vendor/chance/tests/parser/basic/output/test.parsed.css +5 -0
  1012. metadata +255 -195
  1013. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +0 -85
  1014. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +0 -20
  1015. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +0 -106
  1016. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +0 -183
  1017. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +0 -124
  1018. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +0 -69
  1019. data/lib/frameworks/sproutcore/themes/ace/resources/button/button.js +0 -75
  1020. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.js +0 -20
  1021. data/lib/frameworks/sproutcore/themes/ace/resources/progress/progress.js +0 -78
  1022. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +0 -56
  1023. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +0 -17
  1024. data/lib/sproutcore/builders/chance.rb +0 -64
  1025. data/spec/lib/builders/chance_spec.rb +0 -81
  1026. data/vendor/chance/lib/chance/imager.rb +0 -13
  1027. data/vendor/chance/lib/chance/imagers/data_url.rb +0 -117
  1028. data/vendor/chance/lib/chance/importer.rb +0 -64
  1029. data/vendor/chance/lib/chance/sass_extensions.rb +0 -24
  1030. data/vendor/chance/lib/chance/slicing.rb +0 -166
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -3,7 +3,7 @@
3
3
  * ==========================================================================
4
4
  * SproutCore Costello -- Property Observing Library
5
5
  * Copyright ©2006-2011, Strobe Inc. and contributors.
6
- * Portions copyright ©2008-2010 Apple Inc. All rights reserved.
6
+ * Portions copyright ©2008-2011 Apple Inc. All rights reserved.
7
7
  *
8
8
  * Permission is hereby granted, free of charge, to any person obtaining a
9
9
  * copy of this software and associated documentation files (the "Software"),
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -45,10 +45,11 @@ SC.OUT_OF_RANGE_EXCEPTION = "Index out of range" ;
45
45
  @extends SC.Enumerable
46
46
  @since SproutCore 0.9.0
47
47
  */
48
- SC.Array = {
48
+ SC.Array = /** @scope SC.Array.prototype */{
49
49
 
50
50
  /**
51
51
  Walk like a duck - use isSCArray to avoid conflicts
52
+ @type Boolean
52
53
  */
53
54
  isSCArray: YES,
54
55
 
@@ -65,6 +66,9 @@ SC.Array = {
65
66
  should replace amt objects started at idx with the objects in the passed
66
67
  array. You should also call this.enumerableContentDidChange() ;
67
68
 
69
+ NOTE: JavaScript arrays already implement SC.Array and
70
+ calls this.enumerableContentDidChange.
71
+
68
72
  @param {Number} idx
69
73
  Starting index in the array to replace. If idx >= length, then append to
70
74
  the end of the array.
@@ -199,6 +203,10 @@ SC.Array = {
199
203
  /**
200
204
  Push the object onto the end of the array. Works just like push() but it
201
205
  is KVO-compliant.
206
+
207
+ @param {Object} object the objects to push
208
+
209
+ @return {Object} The passed object
202
210
  */
203
211
  pushObject: function(obj) {
204
212
  this.insertAt(this.get('length'), obj) ;
@@ -223,6 +231,8 @@ SC.Array = {
223
231
  /**
224
232
  Pop object from array or nil if none are left. Works just like pop() but
225
233
  it is KVO-compliant.
234
+
235
+ @return {Object} The popped object
226
236
  */
227
237
  popObject: function() {
228
238
  var len = this.get('length') ;
@@ -236,6 +246,8 @@ SC.Array = {
236
246
  /**
237
247
  Shift an object from start of array or nil if none are left. Works just
238
248
  like shift() but it is KVO-compliant.
249
+
250
+ @return {Object} The shifted object
239
251
  */
240
252
  shiftObject: function() {
241
253
  if (this.get('length') === 0) return null ;
@@ -247,6 +259,9 @@ SC.Array = {
247
259
  /**
248
260
  Unshift an object to start of array. Works just like unshift() but it is
249
261
  KVO-compliant.
262
+
263
+ @param {Object} obj the object to add
264
+ @return {Object} The passed object
250
265
  */
251
266
  unshiftObject: function(obj) {
252
267
  this.insertAt(0, obj) ;
@@ -269,7 +284,10 @@ SC.Array = {
269
284
  },
270
285
 
271
286
  /**
272
- Compares each item in the array. Returns true if they are equal.
287
+ Compares each item in the passed array to this one.
288
+
289
+ @param {Array} ary The array you want to compare to
290
+ @returns {Boolean} true if they are equal.
273
291
  */
274
292
  isEqual: function(ary) {
275
293
  if (!ary) return false ;
@@ -288,7 +306,7 @@ SC.Array = {
288
306
  Generates a new array with the contents of the old array, sans any null
289
307
  values.
290
308
 
291
- @returns {Array}
309
+ @returns {Array} The new, compact array
292
310
  */
293
311
  compact: function() { return this.without(null); },
294
312
 
@@ -296,8 +314,8 @@ SC.Array = {
296
314
  Generates a new array with the contents of the old array, sans the passed
297
315
  value.
298
316
 
299
- @param {Object} value
300
- @returns {Array}
317
+ @param {Object} value The value you want to be removed
318
+ @returns {Array} The new, filtered array
301
319
  */
302
320
  without: function(value) {
303
321
  if (this.indexOf(value)<0) return this; // value not present.
@@ -312,7 +330,7 @@ SC.Array = {
312
330
  Generates a new array with only unique values from the contents of the
313
331
  old array.
314
332
 
315
- @returns {Array}
333
+ @returns {Array} The new, de-duped array
316
334
  */
317
335
  uniq: function() {
318
336
  var ret = [] ;
@@ -366,9 +384,7 @@ SC.Array = {
366
384
 
367
385
  The callback for a range observer should have the signature:
368
386
 
369
- {{{
370
- function rangePropertyDidChange(array, objects, key, indexes, context)
371
- }}}
387
+ function rangePropertyDidChange(array, objects, key, indexes, context)
372
388
 
373
389
  If the passed key is '[]' it means that the object itself changed.
374
390
 
@@ -484,10 +500,15 @@ SC.Array = {
484
500
  changes.add(start, length);
485
501
  }
486
502
 
487
- this._setupEnumerableObservers(addedObjects, removedObjects);
503
+ this._setupContentObservers(addedObjects, removedObjects);
488
504
  this.notifyPropertyChange('[]') ;
489
505
  this.endPropertyChanges();
490
506
 
507
+ // Only notify enumerable observers if we have enough information to do so.
508
+ if (addedObjects && removedObjects) {
509
+ this._notifyEnumerableObservers(addedObjects, removedObjects, start);
510
+ }
511
+
491
512
  return this ;
492
513
  },
493
514
 
@@ -519,6 +540,9 @@ SC.Array = SC.mixin({}, SC.Enumerable, SC.Array) ;
519
540
  Returns a new array that is a slice of the receiver. This implementation
520
541
  uses the observable array methods to retrieve the objects for the new
521
542
  slice.
543
+
544
+ If you don't pass in beginIndex and endIndex, it will act as a copy of the
545
+ array.
522
546
 
523
547
  @param beginIndex {Integer} (Optional) index to begin slicing from.
524
548
  @param endIndex {Integer} (Optional) index to end the slice at.
@@ -605,6 +629,7 @@ if (!Array.prototype.lastIndexOf) {
605
629
  // replaced range. Otherwise, pass the full remaining array length
606
630
  // since everything has shifted
607
631
  var len = objects ? (objects.get ? objects.get('length') : objects.length) : 0;
632
+ objects = SC.isArray(objects) ? objects : [objects];
608
633
  this.enumerableContentDidChange(idx, amt, len - amt, objects, removedObjects) ;
609
634
  return this ;
610
635
  },
@@ -621,10 +646,15 @@ if (!Array.prototype.lastIndexOf) {
621
646
 
622
647
  });
623
648
 
624
- // If browser did not implement indexOf natively, then override with
625
- // specialized version
626
649
  var indexOf = Array.prototype.indexOf;
627
650
  if (!indexOf || (indexOf === SC.Array.indexOf)) {
651
+ /**
652
+ Returns the index for a particular object in the index.
653
+
654
+ @param {Object} object the item to search for
655
+ @param {NUmber} startAt optional starting location to search, default 0
656
+ @returns {Number} index of -1 if not found
657
+ */
628
658
  Array.prototype.indexOf = function(object, startAt) {
629
659
  var idx, len = this.length;
630
660
 
@@ -641,6 +671,13 @@ if (!Array.prototype.lastIndexOf) {
641
671
 
642
672
  var lastIndexOf = Array.prototype.lastIndexOf ;
643
673
  if (!lastIndexOf || (lastIndexOf === SC.Array.lastIndexOf)) {
674
+ /**
675
+ Returns the last index for a particular object in the index.
676
+
677
+ @param {Object} object the item to search for
678
+ @param {NUmber} startAt optional starting location to search, default 0
679
+ @returns {Number} index of -1 if not found
680
+ */
644
681
  Array.prototype.lastIndexOf = function(object, startAt) {
645
682
  var idx, len = this.length;
646
683
 
@@ -1,12 +1,12 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
8
8
  /**
9
- @namespace
9
+ @class
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.
@@ -27,12 +27,15 @@ SC.Comparable = {
27
27
  /**
28
28
  Override to return the result of the comparison of the two parameters. The
29
29
  compare method should return
30
+
31
+ <pre>
30
32
  -1 if a < b
31
33
  0 if a == b
32
34
  1 if a > b
35
+ </pre>
33
36
 
34
- Default implementation raises
35
- an exception.
37
+
38
+ Default implementation raises an exception.
36
39
 
37
40
  @param a {Object} the first object to compare
38
41
  @param b {Object} the second object to compare
@@ -1,12 +1,12 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
8
8
  /**
9
- @namespace
9
+ @class
10
10
 
11
11
  Impelements some standard methods for copying an object. Add this mixin to
12
12
  any object you create that can create a copy of itself. This mixin is
@@ -19,7 +19,7 @@
19
19
 
20
20
  @since SproutCore 1.0
21
21
  */
22
- SC.Copyable = {
22
+ SC.Copyable = /** @scope SC.Copyable.prototype */{
23
23
 
24
24
  /**
25
25
  Walk like a duck. Indicates that the object can be copied.
@@ -62,6 +62,13 @@ SC.Copyable = {
62
62
 
63
63
  // Make Array copyable
64
64
  SC.mixin(Array.prototype, SC.Copyable);
65
+ /**
66
+ Override to return a copy of the receiver. Default implementation raises
67
+ an exception.
68
+
69
+ @param deep {Boolean} if true, a deep copy of the object should be made
70
+ @returns {Object} copy of receiver
71
+ */
65
72
  Array.prototype.copy = function(deep) {
66
73
  var ret = this.slice(), idx;
67
74
  if (deep) {
@@ -1,7 +1,7 @@
1
1
  // ==========================================================================
2
2
  // Project: SproutCore Costello - Property Observing Library
3
3
  // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
4
+ // Portions ©2008-2011 Apple Inc. All rights reserved.
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
@@ -11,7 +11,7 @@ sc_require('system/enumerator');
11
11
  /*globals Prototype */
12
12
 
13
13
  /**
14
- @namespace
14
+ @class
15
15
 
16
16
  This mixin defines the common interface implemented by enumerable objects
17
17
  in SproutCore. Most of these methods follow the standard Array iteration
@@ -22,7 +22,8 @@ sc_require('system/enumerator');
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
- h3. Writing Your Own Enumerable
25
+ Writing Your Own Enumerable
26
+ -----
26
27
 
27
28
  To make your own custom class enumerable, you need two items:
28
29
 
@@ -33,11 +34,12 @@ sc_require('system/enumerator');
33
34
 
34
35
  2. If you must implement nextObject(). See documentation.
35
36
 
36
- Once you have these two methods implement, apply the SC.Enumerable mixin
37
+ Once you have these two methods implemented, apply the SC.Enumerable mixin
37
38
  to your class and you will be able to enumerate the contents of your object
38
39
  like any other collection.
39
40
 
40
- h3. Using SproutCore Enumeration with Other Libraries
41
+ Using SproutCore Enumeration with Other Libraries
42
+ -----
41
43
 
42
44
  Many other libraries provide some kind of iterator or enumeration like
43
45
  facility. This is often where the most common API conflicts occur.
@@ -47,12 +49,12 @@ sc_require('system/enumerator');
47
49
 
48
50
  @since SproutCore 1.0
49
51
  */
50
- SC.Enumerable = {
52
+ SC.Enumerable = /** @scope SC.Enumerable.prototype */{
51
53
 
52
54
  /**
53
55
  Walk like a duck.
54
56
 
55
- @property {Boolean}
57
+ @type Boolean
56
58
  */
57
59
  isEnumerable: YES,
58
60
 
@@ -82,9 +84,9 @@ SC.Enumerable = {
82
84
  The default impementation of this method simply looks up the index.
83
85
  This works great on any Array-like objects.
84
86
 
85
- @param index {Number} the current index of the iteration
86
- @param previousObject {Object} the value returned by the last call to nextObject.
87
- @param context {Object} a context object you can use to maintain state.
87
+ @param {Number} index the current index of the iteration
88
+ @param {Object} previousObject the value returned by the last call to nextObject.
89
+ @param {Object} context a context object you can use to maintain state.
88
90
  @returns {Object} the next object in the iteration or undefined
89
91
  */
90
92
  nextObject: function(index, previousObject, context) {
@@ -142,9 +144,7 @@ SC.Enumerable = {
142
144
  The callback method you provide should have the following signature (all
143
145
  parameters are optional):
144
146
 
145
- {{{
146
- function(item, index, enumerable) ;
147
- }}}
147
+ function(item, index, enumerable) ;
148
148
 
149
149
  - *item* is the current item in the iteration.
150
150
  - *index* is the current index in the iteration
@@ -154,8 +154,8 @@ SC.Enumerable = {
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
- @params callback {Function} the callback to execute
158
- @params target {Object} the target object to use
157
+ @param {Function} callback the callback to execute
158
+ @param {Object} target the target object to use
159
159
  @returns {Object} this
160
160
  */
161
161
  forEach: function(callback, target) {
@@ -217,9 +217,7 @@ SC.Enumerable = {
217
217
  The callback method you provide should have the following signature (all
218
218
  parameters are optional):
219
219
 
220
- {{{
221
- function(item, index, enumerable) ;
222
- }}}
220
+ function(item, index, enumerable) ;
223
221
 
224
222
  - *item* is the current item in the iteration.
225
223
  - *index* is the current index in the iteration
@@ -231,8 +229,8 @@ SC.Enumerable = {
231
229
  object that will be set as "this" on the context. This is a good way
232
230
  to give your iterator function access to the current object.
233
231
 
234
- @params callback {Function} the callback to execute
235
- @params target {Object} the target object to use
232
+ @param {Function} callback the callback to execute
233
+ @param {Object} target the target object to use
236
234
  @returns {Array} The mapped array.
237
235
  */
238
236
  map: function(callback, target) {
@@ -257,7 +255,7 @@ SC.Enumerable = {
257
255
  Similar to map, this specialized function returns the value of the named
258
256
  property on all items in the enumeration.
259
257
 
260
- @params key {String} name of the property
258
+ @param {String} key name of the property
261
259
  @returns {Array} The mapped array.
262
260
  */
263
261
  mapProperty: function(key) {
@@ -274,9 +272,7 @@ SC.Enumerable = {
274
272
  The callback method you provide should have the following signature (all
275
273
  parameters are optional):
276
274
 
277
- {{{
278
- function(item, index, enumerable) ;
279
- }}}
275
+ function(item, index, enumerable) ;
280
276
 
281
277
  - *item* is the current item in the iteration.
282
278
  - *index* is the current index in the iteration
@@ -288,8 +284,8 @@ SC.Enumerable = {
288
284
  object that will be set as "this" on the context. This is a good way
289
285
  to give your iterator function access to the current object.
290
286
 
291
- @params callback {Function} the callback to execute
292
- @params target {Object} the target object to use
287
+ @param {Function} callback the callback to execute
288
+ @param {Object} target the target object to use
293
289
  @returns {Array} A filtered array.
294
290
  */
295
291
  filter: function(callback, target) {
@@ -350,8 +346,8 @@ SC.Enumerable = {
350
346
  can pass an optional second argument with the target value. Otherwise
351
347
  this will match any property that evaluates to true.
352
348
 
353
- @params key {String} the property to test
354
- @param value {String} optional value to test against.
349
+ @param {String} key the property to test
350
+ @param {String} value optional value to test against.
355
351
  @returns {Array} filtered array
356
352
  */
357
353
  filterProperty: function(key, value) {
@@ -379,9 +375,7 @@ SC.Enumerable = {
379
375
  The callback method you provide should have the following signature (all
380
376
  parameters are optional):
381
377
 
382
- {{{
383
- function(item, index, enumerable) ;
384
- }}}
378
+ function(item, index, enumerable) ;
385
379
 
386
380
  - *item* is the current item in the iteration.
387
381
  - *index* is the current index in the iteration
@@ -393,8 +387,8 @@ SC.Enumerable = {
393
387
  object that will be set as "this" on the context. This is a good way
394
388
  to give your iterator function access to the current object.
395
389
 
396
- @params callback {Function} the callback to execute
397
- @params target {Object} the target object to use
390
+ @param {Function} callback the callback to execute
391
+ @param {Object} target the target object to use
398
392
  @returns {Object} Found item or null.
399
393
  */
400
394
  find: function(callback, target) {
@@ -420,8 +414,8 @@ SC.Enumerable = {
420
414
 
421
415
  This method works much like the more generic find() method.
422
416
 
423
- @params key {String} the property to test
424
- @param value {String} optional value to test against.
417
+ @param {String} key the property to test
418
+ @param {String} value optional value to test against.
425
419
  @returns {Object} found item or null
426
420
  */
427
421
  findProperty: function(key, value) {
@@ -447,9 +441,7 @@ SC.Enumerable = {
447
441
  The callback method you provide should have the following signature (all
448
442
  parameters are optional):
449
443
 
450
- {{{
451
- function(item, index, enumerable) ;
452
- }}}
444
+ function(item, index, enumerable) ;
453
445
 
454
446
  - *item* is the current item in the iteration.
455
447
  - *index* is the current index in the iteration
@@ -461,14 +453,12 @@ SC.Enumerable = {
461
453
  object that will be set as "this" on the context. This is a good way
462
454
  to give your iterator function access to the current object.
463
455
 
464
- h4. Example Usage
456
+ Example Usage:
465
457
 
466
- {{{
467
- if (people.every(isEngineer)) { Paychecks.addBigBonus(); }
468
- }}}
458
+ if (people.every(isEngineer)) { Paychecks.addBigBonus(); }
469
459
 
470
- @params callback {Function} the callback to execute
471
- @params target {Object} the target object to use
460
+ @param {Function} callback the callback to execute
461
+ @param {Object} target the target object to use
472
462
  @returns {Boolean}
473
463
  */
474
464
  every: function(callback, target) {
@@ -493,8 +483,8 @@ SC.Enumerable = {
493
483
  Returns YES if the passed property resolves to true for all items in the
494
484
  enumerable. This method is often simpler/faster than using a callback.
495
485
 
496
- @params key {String} the property to test
497
- @param value {String} optional value to test against.
486
+ @param {String} key the property to test
487
+ @param {String} value optional value to test against.
498
488
  @returns {Array} filtered array
499
489
  */
500
490
  everyProperty: function(key, value) {
@@ -521,9 +511,7 @@ SC.Enumerable = {
521
511
  The callback method you provide should have the following signature (all
522
512
  parameters are optional):
523
513
 
524
- {{{
525
- function(item, index, enumerable) ;
526
- }}}
514
+ function(item, index, enumerable) ;
527
515
 
528
516
  - *item* is the current item in the iteration.
529
517
  - *index* is the current index in the iteration
@@ -535,14 +523,12 @@ SC.Enumerable = {
535
523
  object that will be set as "this" on the context. This is a good way
536
524
  to give your iterator function access to the current object.
537
525
 
538
- h4. Usage Example
526
+ Usage Example:
539
527
 
540
- {{{
541
- if (people.some(isManager)) { Paychecks.addBiggerBonus(); }
542
- }}}
528
+ if (people.some(isManager)) { Paychecks.addBiggerBonus(); }
543
529
 
544
- @params callback {Function} the callback to execute
545
- @params target {Object} the target object to use
530
+ @param {Function} callback the callback to execute
531
+ @param {Object} target the target object to use
546
532
  @returns {Array} A filtered array.
547
533
  */
548
534
  some: function(callback, target) {
@@ -567,8 +553,8 @@ SC.Enumerable = {
567
553
  Returns YES if the passed property resolves to true for any item in the
568
554
  enumerable. This method is often simpler/faster than using a callback.
569
555
 
570
- @params key {String} the property to test
571
- @param value {String} optional value to test against.
556
+ @param {String} key the property to test
557
+ @param {String} value optional value to test against.
572
558
  @returns {Boolean} YES
573
559
  */
574
560
  someProperty: function(key, value) {
@@ -595,9 +581,7 @@ SC.Enumerable = {
595
581
  The callback method you provide should have the following signature (all
596
582
  parameters are optional):
597
583
 
598
- {{{
599
- function(previousValue, item, index, enumerable) ;
600
- }}}
584
+ function(previousValue, item, index, enumerable) ;
601
585
 
602
586
  - *previousValue* is the value returned by the last call to the iterator.
603
587
  - *item* is the current item in the iteration.
@@ -614,10 +598,10 @@ SC.Enumerable = {
614
598
  pass a target object to set as this for the callback. It's part of the
615
599
  spec. Sorry.
616
600
 
617
- @params callback {Function} the callback to execute
618
- @params initialValue {Object} initial value for the reduce
619
- @params reducerProperty {String} internal use only. May not be available.
620
- @returns {Array} A filtered array.
601
+ @param {Function} callback the callback to execute
602
+ @param {Object} initialValue initial value for the reduce
603
+ @param {String} reducerProperty internal use only. May not be available.
604
+ @returns {Object} The reduced value.
621
605
  */
622
606
  reduce: function(callback, initialValue, reducerProperty) {
623
607
  if (typeof callback !== "function") throw new TypeError() ;
@@ -657,8 +641,8 @@ SC.Enumerable = {
657
641
  implements it. This method corresponds to the implementation in
658
642
  Prototype 1.6.
659
643
 
660
- @param methodName {String} the name of the method
661
- @param args {Object...} optional arguments to pass as well.
644
+ @param {String} methodName the name of the method
645
+ @param {Object...} args optional arguments to pass as well.
662
646
  @returns {Array} return values from calling invoke.
663
647
  */
664
648
  invoke: function(methodName) {
@@ -695,9 +679,9 @@ SC.Enumerable = {
695
679
  a useful way to attempt to apply changes to a collection of objects unless
696
680
  or until one fails.
697
681
 
698
- @param targetValue {Object} the target return value
699
- @param methodName {String} the name of the method
700
- @param args {Object...} optional arguments to pass as well.
682
+ @param {Object} targetValue the target return value
683
+ @param {String} methodName the name of the method
684
+ @param {Object...} args optional arguments to pass as well.
701
685
  @returns {Array} return values from calling invoke.
702
686
  */
703
687
  invokeWhile: function(targetValue, methodName) {
@@ -745,7 +729,7 @@ SC.Enumerable = {
745
729
  Converts an enumerable into a matrix, with inner arrays grouped based
746
730
  on a particular property of the elements of the enumerable.
747
731
 
748
- @params key {String} the property to test
732
+ @param {String} key the property to test
749
733
  @returns {Array} matrix of arrays
750
734
  */
751
735
  groupBy: function(key){
@@ -753,14 +737,14 @@ SC.Enumerable = {
753
737
  ret = [],
754
738
  last = null,
755
739
  context = SC.Enumerator._popContext(),
756
- grouped = [],
740
+ grouped = [],
757
741
  keyValues = [],
758
742
  idx, next, cur;
759
-
743
+
760
744
  for(idx=0;idx<len;idx++) {
761
745
  next = this.nextObject(idx, last, context) ;
762
746
  cur = next ? (next.get ? next.get(key) : next[key]) : null;
763
- if(SC.none(grouped[cur])) {
747
+ if(SC.none(grouped[cur])) {
764
748
  grouped[cur] = []; keyValues.push(cur);
765
749
  }
766
750
  grouped[cur].push(next);
@@ -768,9 +752,9 @@ SC.Enumerable = {
768
752
  }
769
753
  last = null;
770
754
  context = SC.Enumerator._pushContext(context);
771
-
755
+
772
756
  for(idx=0,len=keyValues.length; idx < len; idx++){
773
- ret.push(grouped[keyValues[idx]]);
757
+ ret.push(grouped[keyValues[idx]]);
774
758
  }
775
759
  return ret ;
776
760
  }
@@ -793,7 +777,8 @@ SC._buildReducerFor = function(reducerKey, reducerProperty) {
793
777
  }.property('[]') ;
794
778
  };
795
779
 
796
- SC.Reducers = /** @lends SC.Enumerable */ {
780
+ /** @class */
781
+ SC.Reducers = /** @scope SC.Reducers.prototype */ {
797
782
  /**
798
783
  This property will trigger anytime the enumerable's content changes.
799
784
  You can observe this property to be notified of changes to the enumerables
@@ -821,18 +806,258 @@ SC.Reducers = /** @lends SC.Enumerable */ {
821
806
  @returns {Object} receiver
822
807
  */
823
808
  enumerableContentDidChange: function(start, length, delta, addedObjects, removedObjects) {
824
- this._setupEnumerableObservers(addedObjects, removedObjects);
809
+ this._setupContentObservers(addedObjects, removedObjects);
825
810
  this.notifyPropertyChange('[]') ;
811
+ this._notifyEnumerableObservers(addedObjects, removedObjects, start);
812
+ },
813
+
814
+ /**
815
+ For all registered property chains on this object, removed them from objects
816
+ being removed from the enumerable, and clone them onto newly added objects.
817
+
818
+ @param {Object[]} addedObjects the objects being added to the enumerable
819
+ @param {Object[]} removedObjects the objected being removed from the enumerable
820
+ @returns {Object} receiver
821
+ */
822
+ setupPropertyChainsForEnumerableContent: function(addedObjects, removedObjects) {
823
+ var chains = this._kvo_enumerable_property_chains;
824
+
825
+ if (chains) {
826
+ chains.forEach(function(chain) {
827
+ var idx, len = removedObjects.get('length'),
828
+ chainGuid = SC.guidFor(chain),
829
+ clonedChain, item, kvoChainList = '_kvo_enumerable_property_clones';
830
+
831
+ chain.notifyPropertyDidChange();
832
+
833
+ for (idx = 0; idx < len; idx++) {
834
+ item = removedObjects[idx];
835
+ clonedChain = item[kvoChainList][chainGuid];
836
+ clonedChain.deactivate();
837
+ delete item[kvoChainList][chainGuid];
838
+ }
826
839
 
840
+ len = addedObjects.get('length');
841
+ for (idx = 0; idx < len; idx++) {
842
+ this._clonePropertyChainToItem(chain, addedObjects[idx]);
843
+ }
844
+ }, this);
845
+ }
827
846
  return this ;
828
847
  },
829
848
 
849
+ /**
850
+ Register a property chain to propagate to enumerable content.
851
+
852
+ This will clone the property chain to each item in the enumerable,
853
+ then save it so that it is automatically set up and torn down when
854
+ the enumerable content changes.
855
+
856
+ @param {String} property the property being listened for on this object
857
+ @param {SC._PropertyChain} chain the chain to clone to items
858
+ */
859
+ registerDependentKeyWithChain: function(property, chain) {
860
+ // Get the set of all existing property chains that should
861
+ // be propagated to enumerable contents. If that set doesn't
862
+ // exist yet, _kvo_for() will create it.
863
+ var kvoChainList = '_kvo_enumerable_property_chains',
864
+ chains, item, clone, cloneList;
865
+
866
+ chains = this._kvo_for(kvoChainList, SC.CoreSet);
867
+
868
+ // Save a reference to the chain on this object. If new objects
869
+ // are added to the enumerable, we will clone this chain and add
870
+ // it to the new object.
871
+ chains.add(chain);
872
+
873
+ this.forEach(function(item) {
874
+ this._clonePropertyChainToItem(chain, item);
875
+ }, this);
876
+ },
877
+
878
+ /**
879
+ Clones an SC._PropertyChain to a content item.
880
+
881
+ @param {SC._PropertyChain} chain
882
+ @param {Object} item
883
+ */
884
+ _clonePropertyChainToItem: function(chain, item) {
885
+ var clone = SC.clone(chain),
886
+ kvoCloneList = '_kvo_enumerable_property_clones',
887
+ cloneList;
888
+
889
+ clone.object = item;
890
+
891
+ cloneList = item[kvoCloneList] = item[kvoCloneList] || {};
892
+ cloneList[SC.guidFor(chain)] = clone;
893
+
894
+ clone.activate(item);
895
+ },
896
+
897
+ /**
898
+ Removes a dependent key from the enumerable, and tears it down on
899
+ all content objects.
900
+
901
+ @param {String} property
902
+ @param {SC._PropertyChain} chain
903
+ */
904
+ removeDependentKeyWithChain: function(property, chain) {
905
+ var kvoChainList = '_kvo_enumerable_property_chains',
906
+ kvoCloneList = '_kvo_enumerable_property_clones',
907
+ chains, item, clone, cloneList;
908
+
909
+ this.forEach(function(item) {
910
+ item.removeDependentKeyWithChain(property, chain);
911
+
912
+ cloneList = item[kvoCloneList];
913
+ clone = cloneList[SC.guidFor(chain)];
914
+
915
+ clone.deactivate(item);
916
+ }, this);
917
+ },
918
+
919
+ /**
920
+ Called when the contents of the enumerable mutates.
921
+
922
+ Implementers of classes that mixin SC.Enumerable should ensure that they
923
+ call enumerableContentDidChange(), which invokes this method automatically.
924
+
925
+ @param {Array} addedObjects the array of objects that were added to the enumerable
926
+ @param {Array} removedObjects the array of objects that were removed from the enumerable
927
+ @param {Number} index the index at which the mutation occurred
928
+ */
929
+ _notifyEnumerableObservers: function(addedObjects, removedObjects, index) {
930
+ var observers, members, member, memberLoc, membersLength;
931
+ var target, method, context;
932
+
933
+ observers = this._kvo_enumerable_observers;
934
+
935
+ if (observers) {
936
+ members = SC.clone(observers.getMembers());
937
+ membersLength = members.length;
938
+
939
+ for(memberLoc=0; memberLoc < membersLength; memberLoc++) {
940
+ member = members[memberLoc];
941
+
942
+ target = member[0];
943
+ method = member[1];
944
+ context = member[2];
945
+
946
+ method.call(target, addedObjects, removedObjects, index, this, context);
947
+ }
948
+ }
949
+ },
950
+
951
+ /**
952
+ Adds an enumerable observer to the enumerable.
953
+
954
+ Enumerable observers are called whenever the enumerable's content
955
+ mutates. For example, adding an object via pushObject(), or replacing
956
+ objects via replace(), will cause all enumerable observers to be fired.
957
+
958
+ Observer methods that you register should have the following signature:
959
+
960
+ enumerableDidChange: function(addedObjects, removedObjects, index, source)
961
+
962
+ addedObjects will contain an array of the objects added and removedObjects
963
+ will contain an array of the objects that were removed. The index parameter
964
+ contains the index at which the mutation occurred.
965
+
966
+ The fourth parameter, source, is the enumerable that mutated. This is useful
967
+ if you register the same observer method on multiple enumerables.
968
+
969
+ If you pass a context parameter to addEnumerableObserver(), it will be
970
+ included when the observer is fired:
971
+
972
+ function(addedObjects, removedObjects, sender, context);
973
+
974
+ @param {Object} target the target object to invoke
975
+ @param {String|Function} method the method to invoke
976
+ @param {Object} context optional context
977
+
978
+ @returns {SC.Object} self
979
+ */
980
+ addEnumerableObserver: function(target, method, context) {
981
+ var observers;
982
+
983
+ // Normalize parameters. If a function is passed as
984
+ // target, make it the method.
985
+ if (method === undefined) {
986
+ method = target;
987
+ target = this;
988
+ }
989
+
990
+ // Call the observer in the context of the enumerable
991
+ // if no explicit target is given.
992
+ if (!target) { target = this; }
993
+
994
+ // If the method is provided as a string, look it up on
995
+ // the target.
996
+ if (typeof method === "string") {
997
+ method = target[method];
998
+ }
999
+
1000
+ if (!method) {
1001
+ throw "You must pass a method to addEnumerableObserver()";
1002
+ }
1003
+
1004
+ observers = this._kvo_for('_kvo_enumerable_observers', SC.ObserverSet);
1005
+ observers.add(target, method, context);
1006
+
1007
+ return this;
1008
+ },
1009
+
1010
+ /**
1011
+ Removes an enumerable observer. Expects the same target and method that
1012
+ were used to register the observer.
1013
+
1014
+ @param {Object} target the target object to invoke
1015
+ @param {String|Function} method the method to invoke
1016
+
1017
+ @returns {SC.Object} self
1018
+ */
1019
+ removeEnumerableObserver: function(target, method) {
1020
+ var observers;
1021
+
1022
+ // Normalize parameters. If a function is passed as
1023
+ // target, make it the method.
1024
+ if (method === undefined) {
1025
+ method = target;
1026
+ target = this;
1027
+ }
1028
+
1029
+ // Call the observer in the context of the enumerable
1030
+ // if no explicit target is given.
1031
+ if (!target) { target = this; }
1032
+
1033
+ // If the method is provided as a string, look it up on
1034
+ // the target.
1035
+ if (typeof method === "string") {
1036
+ method = target[method];
1037
+ }
1038
+
1039
+ if (!method) {
1040
+ throw "You must pass a method to removeEnumerableObserver()";
1041
+ }
1042
+
1043
+ observers = this._kvo_enumerable_observers;
1044
+
1045
+ if (observers) {
1046
+ observers.remove(target, method);
1047
+ } else {
1048
+ throw "%@: Can't remove observers if no observer has been added.";
1049
+ }
1050
+
1051
+ return this;
1052
+ },
1053
+
830
1054
  /**
831
1055
  @private
832
1056
 
833
1057
  Clones a segment of an observer chain and applies it
834
1058
  to an element of this Enumerable.
835
1059
 
1060
+ @param {Object} item The element
836
1061
  @param {SC._ChainObserver} chainObserver the chain segment to begin from
837
1062
  */
838
1063
  _resumeChainObservingForItemWithChainObserver: function(item, chainObserver) {
@@ -853,7 +1078,7 @@ SC.Reducers = /** @lends SC.Enumerable */ {
853
1078
 
854
1079
  // Maintain a list of observers on the item so we can remove them
855
1080
  // if it is removed from the enumerable.
856
- item._kvo_for(SC.keyFor('_kvo_enumerable_observers', key)).push(observer);
1081
+ item._kvo_for(SC.keyFor('_kvo_content_observers', key)).push(observer);
857
1082
  },
858
1083
 
859
1084
  /**
@@ -866,31 +1091,43 @@ SC.Reducers = /** @lends SC.Enumerable */ {
866
1091
  @param {Array} addedObjects the array of objects that have been added
867
1092
  @param {Array} removedObjects the array of objects that have been removed
868
1093
  */
869
- _setupEnumerableObservers: function(addedObjects, removedObjects) {
1094
+ _setupContentObservers: function(addedObjects, removedObjects) {
870
1095
  if (!addedObjects) { addedObjects = this; }
871
1096
  if (!removedObjects) { removedObjects = []; }
872
1097
 
873
- var observedKeys = this._kvo_for('_kvo_enumerable_observed_keys', SC.CoreSet);
1098
+ // Check the last values passed and skip this step if they are
1099
+ // the same.
1100
+ //
1101
+ // TODO: This is obviously a suboptimal workaround to the fact that
1102
+ // enumerableContentDidChange can get called twice when implementing
1103
+ // SC.ArrayController. We should revisit how enumerableContentDidChange
1104
+ // works in that context. --TD
1105
+ var lastAdded = this._lastAdded;
1106
+ var lastRemoved = this._lastRemoved;
1107
+
1108
+ if(lastAdded === addedObjects) { addedObjects = []; }
1109
+ if(lastRemoved === removedObjects) { removedObjects = []; }
1110
+
1111
+ this._lastAdded = addedObjects;
1112
+ this._lastRemoved = removedObjects;
1113
+
1114
+ var observedKeys = this._kvo_for('_kvo_content_observed_keys', SC.CoreSet);
874
1115
  var kvoKey;
875
1116
 
876
1117
  // Only setup and teardown enumerable observers if we have keys to observe
877
1118
  if (observedKeys.get('length') > 0) {
878
- // Loop through removed objects and remove any enumerable observers that
879
- // belong to them.
880
- removedObjects.forEach(function(item) {
881
- item._kvo_for('_kvo_enumerable_observers').forEach(function(observer) {
882
- // Remove the observer if it is pointing at this enumerable.
883
- // If the observer belongs to another enumerable, just ignore it.
884
- if (observer.object === this) {
885
- item.removeObserver(observer.key, observer, observer.propertyDidChange);
886
- }
887
- });
888
- });
889
1119
 
890
1120
  // added and resume the chain observer.
891
1121
  observedKeys.forEach(function(key) {
892
- kvoKey = SC.keyFor('_kvo_enumerable_observers', key);
893
-
1122
+ kvoKey = SC.keyFor('_kvo_content_observers', key);
1123
+
1124
+ // Loop through removed objects and remove any enumerable observers that
1125
+ // belong to them.
1126
+ removedObjects.forEach(function(item) {
1127
+ item._kvo_for(kvoKey).forEach(function(observer) {
1128
+ observer.destroyChain();
1129
+ }, this);
1130
+ }, this);
894
1131
  var lastObserver;
895
1132
 
896
1133
  // Get all original ChainObservers associated with the key
@@ -918,28 +1155,61 @@ SC.Reducers = /** @lends SC.Enumerable */ {
918
1155
  /**
919
1156
  @private
920
1157
 
921
- Adds an enumerable observer. Enumerable observers are able to
1158
+ Adds a content observer. Content observers are able to
922
1159
  propagate chain observers to each member item in the enumerable,
923
1160
  so that the observer is fired whenever a single item changes.
924
1161
 
925
1162
  You should never call this method directly. Instead, you should
926
- call addObserver() with the special '[]' property in the path.
1163
+ call addObserver() with the special '@each' property in the path.
927
1164
 
928
1165
  For example, if you wanted to observe changes to each item's isDone
929
1166
  property, you could call:
930
1167
 
931
- arrayController.addObserver('[].isDone');
1168
+ arrayController.addObserver('@each.isDone');
1169
+
1170
+ @param {SC._ChainObserver} chainObserver the chain observer to propagate
932
1171
  */
933
- addEnumerableObserver: function(key, target, action) {
1172
+ _addContentObserver: function(chainObserver) {
1173
+ var key = chainObserver.next.property;
1174
+
934
1175
  // Add the key to a set so we know what we are observing
935
- this._kvo_for('_kvo_enumerable_observed_keys', SC.CoreSet).push(key);
1176
+ this._kvo_for('_kvo_content_observed_keys', SC.CoreSet).push(key);
936
1177
 
937
1178
  // Add the passed ChainObserver to an ObserverSet for that key
938
- var kvoKey = SC.keyFor('_kvo_enumerable_observers', key);
939
- this._kvo_for(kvoKey).push(target);
1179
+ var kvoKey = SC.keyFor('_kvo_content_observers', key);
1180
+ this._kvo_for(kvoKey).push(chainObserver);
940
1181
 
941
1182
  // set up chained observers on the initial content
942
- this._setupEnumerableObservers(this);
1183
+ this._setupContentObservers(this);
1184
+ },
1185
+
1186
+ /**
1187
+ @private
1188
+
1189
+ Removes a content observer. Pass the same chain observer
1190
+ that was used to add the content observer.
1191
+
1192
+ @param {SC._ChainObserver} chainObserver the chain observer to propagate
1193
+ */
1194
+
1195
+ _removeContentObserver: function(chainObserver) {
1196
+ var observers, kvoKey;
1197
+ var observedKeys = this._kvo_content_observed_keys;
1198
+ var key = chainObserver.next.property;
1199
+
1200
+ if (observedKeys.contains(key)) {
1201
+
1202
+ kvoKey = SC.keyFor('_kvo_content_observers', key);
1203
+ observers = this._kvo_for(kvoKey);
1204
+
1205
+ observers.removeObject(chainObserver);
1206
+
1207
+ this._setupContentObservers([], this);
1208
+
1209
+ if (observers.length === 0) {
1210
+ this._kvo_for('_kvo_content_observed_keys').remove(key);
1211
+ }
1212
+ }
943
1213
  },
944
1214
 
945
1215
  /**
@@ -955,24 +1225,19 @@ SC.Reducers = /** @lends SC.Enumerable */ {
955
1225
  property. You can call this at the top of your unknownProperty handler
956
1226
  like so:
957
1227
 
958
- {{{
959
1228
  unknownProperty: function(key, value) {
960
1229
  var ret = this.handleReduceProperty(key, value) ;
961
1230
  if (ret === undefined) {
962
1231
  // process like normal
963
1232
  }
964
1233
  }
965
- }}}
966
1234
 
967
- @param {String} key
968
- the reduce property key
1235
+ @param {String} key the reduce property key
969
1236
 
970
- @param {Object} value
971
- a value or undefined.
1237
+ @param {Object} value a value or undefined.
972
1238
 
973
- @param {Boolean} generateProperty
974
- only set to false if you do not want an optimized computed property
975
- handler generated for this. Not common.
1239
+ @param {Boolean} generateProperty only set to false if you do not want
1240
+ an optimized computed property handler generated for this. Not common.
976
1241
 
977
1242
  @returns {Object} the reduced property or undefined
978
1243
  */
@@ -1019,6 +1284,13 @@ SC.Reducers = /** @lends SC.Enumerable */ {
1019
1284
 
1020
1285
  /**
1021
1286
  Reducer for @max reduced property.
1287
+
1288
+ @param {Object} previousValue The previous value in the enumerable
1289
+ @param {Object} item The current value in the enumerable
1290
+ @param {Number} index The index of the current item in the enumerable
1291
+ @param {String} reducerProperty (Optional) The property in the enumerable being reduced
1292
+
1293
+ @returns {Object} reduced value
1022
1294
  */
1023
1295
  reduceMax: function(previousValue, item, index, e, reducerProperty) {
1024
1296
  if (reducerProperty && item) {
@@ -1029,7 +1301,16 @@ SC.Reducers = /** @lends SC.Enumerable */ {
1029
1301
  },
1030
1302
 
1031
1303
  /**
1032
- Reducer for @maxObject reduced property.
1304
+ Reduces an enumberable to the max of the items in the enumerable. If
1305
+ reducerProperty is passed, it will reduce that property. Otherwise, it will
1306
+ reduce the item itself.
1307
+
1308
+ @param {Object} previousValue The previous value in the enumerable
1309
+ @param {Object} item The current value in the enumerable
1310
+ @param {Number} index The index of the current item in the enumerable
1311
+ @param {String} reducerProperty (Optional) The property in the enumerable being reduced
1312
+
1313
+ @returns {Object} reduced value
1033
1314
  */
1034
1315
  reduceMaxObject: function(previousItem, item, index, e, reducerProperty) {
1035
1316
 
@@ -1050,7 +1331,16 @@ SC.Reducers = /** @lends SC.Enumerable */ {
1050
1331
  },
1051
1332
 
1052
1333
  /**
1053
- Reducer for @min reduced property.
1334
+ Reduces an enumberable to the min of the items in the enumerable. If
1335
+ reducerProperty is passed, it will reduce that property. Otherwise, it will
1336
+ reduce the item itself.
1337
+
1338
+ @param {Object} previousValue The previous value in the enumerable
1339
+ @param {Object} item The current value in the enumerable
1340
+ @param {Number} index The index of the current item in the enumerable
1341
+ @param {String} reducerProperty (Optional) The property in the enumerable being reduced
1342
+
1343
+ @returns {Object} reduced value
1054
1344
  */
1055
1345
  reduceMin: function(previousValue, item, index, e, reducerProperty) {
1056
1346
  if (reducerProperty && item) {
@@ -1061,7 +1351,16 @@ SC.Reducers = /** @lends SC.Enumerable */ {
1061
1351
  },
1062
1352
 
1063
1353
  /**
1064
- Reducer for @maxObject reduced property.
1354
+ Reduces an enumberable to the max of the items in the enumerable. If
1355
+ reducerProperty is passed, it will reduce that property. Otherwise, it will
1356
+ reduce the item itself.
1357
+
1358
+ @param {Object} previousValue The previous value in the enumerable
1359
+ @param {Object} item The current value in the enumerable
1360
+ @param {Number} index The index of the current item in the enumerable
1361
+ @param {String} reducerProperty (Optional) The property in the enumerable being reduced
1362
+
1363
+ @returns {Object} reduced value
1065
1364
  */
1066
1365
  reduceMinObject: function(previousItem, item, index, e, reducerProperty) {
1067
1366
 
@@ -1082,7 +1381,16 @@ SC.Reducers = /** @lends SC.Enumerable */ {
1082
1381
  },
1083
1382
 
1084
1383
  /**
1085
- Reducer for @average reduced property.
1384
+ Reduces an enumberable to the average of the items in the enumerable. If
1385
+ reducerProperty is passed, it will reduce that property. Otherwise, it will
1386
+ reduce the item itself.
1387
+
1388
+ @param {Object} previousValue The previous value in the enumerable
1389
+ @param {Object} item The current value in the enumerable
1390
+ @param {Number} index The index of the current item in the enumerable
1391
+ @param {String} reducerProperty (Optional) The property in the enumerable being reduced
1392
+
1393
+ @returns {Object} reduced value
1086
1394
  */
1087
1395
  reduceAverage: function(previousValue, item, index, e, reducerProperty) {
1088
1396
  if (reducerProperty && item) {
@@ -1095,7 +1403,16 @@ SC.Reducers = /** @lends SC.Enumerable */ {
1095
1403
  },
1096
1404
 
1097
1405
  /**
1098
- Reducer for @sum reduced property.
1406
+ Reduces an enumberable to the sum of the items in the enumerable. If
1407
+ reducerProperty is passed, it will reduce that property. Otherwise, it will
1408
+ reduce the item itself.
1409
+
1410
+ @param {Object} previousValue The previous value in the enumerable
1411
+ @param {Object} item The current value in the enumerable
1412
+ @param {Number} index The index of the current item in the enumerable
1413
+ @param {String} reducerProperty (Optional) The property in the enumerable being reduced
1414
+
1415
+ @returns {Object} reduced value
1099
1416
  */
1100
1417
  reduceSum: function(previousValue, item, index, e, reducerProperty) {
1101
1418
  if (reducerProperty && item) {
@@ -1158,23 +1475,23 @@ Array.prototype.isEnumerable = YES ;
1158
1475
  groupBy: function(key) {
1159
1476
  var len = this.length,
1160
1477
  ret = [],
1161
- grouped = [],
1478
+ grouped = [],
1162
1479
  keyValues = [],
1163
1480
  idx, next, cur;
1164
-
1481
+
1165
1482
  for(idx=0;idx<len;idx++) {
1166
1483
  next = this[idx] ;
1167
1484
  cur = next ? (next.get ? next.get(key) : next[key]) : null;
1168
1485
  if(SC.none(grouped[cur])){ grouped[cur] = []; keyValues.push(cur); }
1169
1486
  grouped[cur].push(next);
1170
1487
  }
1171
-
1488
+
1172
1489
  for(idx=0,len=keyValues.length; idx < len; idx++){
1173
- ret.push(grouped[keyValues[idx]]);
1490
+ ret.push(grouped[keyValues[idx]]);
1174
1491
  }
1175
1492
  return ret ;
1176
1493
  },
1177
-
1494
+
1178
1495
  find: function(callback, target) {
1179
1496
  if (typeof callback !== "function") throw new TypeError() ;
1180
1497
  var len = this.length ;