sproutcore 1.9.2 → 1.10.0.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. checksums.yaml +15 -0
  2. data/VERSION.yml +2 -2
  3. data/bin/sc-build +12 -9
  4. data/bin/sc-build-number +12 -9
  5. data/bin/sc-docs +12 -15
  6. data/bin/sc-gen +12 -9
  7. data/bin/sc-init +12 -9
  8. data/bin/sc-manifest +12 -9
  9. data/bin/sc-server +12 -9
  10. data/bin/sproutcore +12 -9
  11. data/lib/frameworks/sproutcore/Buildfile +14 -17
  12. data/lib/frameworks/sproutcore/CHANGELOG.md +214 -3
  13. data/lib/frameworks/sproutcore/README.md +4 -1
  14. data/lib/frameworks/sproutcore/apps/greenhouse/Buildfile +13 -0
  15. data/lib/frameworks/sproutcore/{frameworks/experimental/apps/greenhouse/README → apps/greenhouse/README.md} +1 -1
  16. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/TODO +0 -0
  17. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/beautify.js +0 -0
  18. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/design.js +3 -3
  19. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/file.js +3 -3
  20. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/files.js +3 -3
  21. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/layout.js +9 -9
  22. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/library.js +23 -23
  23. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/page.js +1 -1
  24. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property.js +1 -1
  25. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property_editor.js +2 -2
  26. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/target.js +1 -1
  27. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/targets.js +12 -12
  28. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/view_configs.js +15 -15
  29. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core.js +14 -14
  30. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core_file.js +0 -0
  31. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/data_source.js +42 -42
  32. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/app_page.js +45 -45
  33. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/app-selector.css +0 -0
  34. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/button.css +0 -0
  35. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/dock.css +0 -0
  36. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/general.css +0 -0
  37. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/icons.css +5 -0
  38. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/main-page.css +0 -0
  39. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/menu.css +0 -0
  40. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/modal.css +0 -0
  41. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/picker.css +0 -0
  42. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/search.css +0 -0
  43. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/text-field.css +0 -0
  44. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/dialogs.js +0 -0
  45. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
  46. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
  47. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
  48. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
  49. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
  50. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
  51. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
  52. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
  53. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
  54. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
  55. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
  56. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
  57. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
  58. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
  59. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
  60. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
  61. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
  62. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
  63. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
  64. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
  65. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
  66. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
  67. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
  68. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
  69. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
  70. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
  71. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
  72. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
  73. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
  74. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
  75. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
  76. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
  77. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
  78. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
  79. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
  80. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
  81. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
  82. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
  83. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
  84. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
  85. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
  86. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
  87. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
  88. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
  89. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
  90. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
  91. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
  92. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
  93. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
  94. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
  95. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
  96. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
  97. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
  98. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
  99. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
  100. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
  101. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
  102. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
  103. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
  104. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
  105. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
  106. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
  107. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
  108. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
  109. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
  110. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
  111. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
  112. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
  113. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
  114. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
  115. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
  116. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
  117. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
  118. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
  119. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
  120. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
  121. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
  122. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
  123. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
  124. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
  125. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
  126. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
  127. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
  128. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
  129. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
  130. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/main-bg.png +0 -0
  131. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
  132. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
  133. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
  134. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
  135. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
  136. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
  137. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
  138. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
  139. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
  140. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
  141. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
  142. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
  143. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
  144. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
  145. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
  146. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
  147. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/images/sc-icon-sproutcore-16.png +0 -0
  148. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
  149. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/inspectors.js +0 -0
  150. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/loading.rhtml +0 -0
  151. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/main_page.js +0 -0
  152. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/strings.js +0 -0
  153. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/fixtures/file.js +0 -0
  154. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/main.js +5 -5
  155. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/mixins/drop_down.js +14 -14
  156. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/design.js +4 -4
  157. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/dir.js +12 -12
  158. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/file.js +7 -9
  159. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/target.js +12 -12
  160. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/view_config.js +10 -10
  161. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/resources/test_page.js +0 -0
  162. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/inspector.js +11 -11
  163. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/library.js +10 -10
  164. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/main.js +26 -25
  165. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/modals.js +10 -10
  166. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/ready.js +15 -15
  167. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/design.js +0 -0
  168. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/designs.js +0 -0
  169. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/file.js +0 -0
  170. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/files.js +0 -0
  171. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/file.js +0 -0
  172. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/view_config.js +0 -0
  173. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/list_item.js +0 -0
  174. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/plist_item.js +1 -5
  175. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/theme.js +6 -6
  176. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/anchor.js +43 -43
  177. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/application_list_item.js +2 -2
  178. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/event_blocker.js +7 -7
  179. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/label_designer.js +0 -0
  180. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/list_item.js +8 -8
  181. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/plist_item.js +23 -23
  182. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/simple_button.js +31 -31
  183. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/tear_off_picker.js +12 -12
  184. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/web.js +5 -5
  185. data/lib/frameworks/sproutcore/apps/media_examples/core.js +5 -6
  186. data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +16 -17
  187. data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +4 -5
  188. data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +17 -18
  189. data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +4 -5
  190. data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +18 -19
  191. data/lib/frameworks/sproutcore/apps/showcase/Buildfile +2 -2
  192. data/lib/frameworks/sproutcore/apps/showcase/README +1 -1
  193. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +27 -7
  194. data/lib/frameworks/sproutcore/apps/showcase/core.js +6 -4
  195. data/lib/frameworks/sproutcore/apps/showcase/main.js +2 -1
  196. data/lib/frameworks/sproutcore/apps/showcase/patch.diff +529 -0
  197. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-128.png +0 -0
  198. data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +3 -2
  199. data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +35 -16
  200. data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +195 -10
  201. data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +2 -1
  202. data/lib/frameworks/sproutcore/apps/showcase/theme.js +2 -1
  203. data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +2 -1
  204. data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +2 -1
  205. data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +2 -1
  206. data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +2 -1
  207. data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +2 -1
  208. data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +3 -2
  209. data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +2 -1
  210. data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +2 -1
  211. data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +2 -1
  212. data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +2 -1
  213. data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +10 -9
  214. data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +2 -1
  215. data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +2 -1
  216. data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +2 -1
  217. data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +2 -1
  218. data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +2 -1
  219. data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +2 -1
  220. data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +2 -1
  221. data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +2 -1
  222. data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +15 -6
  223. data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +5 -4
  224. data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +2 -1
  225. data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +2 -1
  226. data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +2 -1
  227. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +5 -5
  228. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +15 -15
  229. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/styles.css +3 -0
  230. data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +11 -11
  231. data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +6 -12
  232. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +28 -33
  233. data/lib/frameworks/sproutcore/apps/tests/controllers/{detail.js → test.js} +14 -12
  234. data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +11 -15
  235. data/lib/frameworks/sproutcore/apps/tests/core.js +8 -113
  236. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +9 -19
  237. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +81 -92
  238. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +3 -1
  239. data/lib/frameworks/sproutcore/apps/tests/main.js +8 -13
  240. data/lib/frameworks/sproutcore/apps/tests/statechart.js +268 -0
  241. data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +4 -4
  242. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +16 -16
  243. data/lib/frameworks/sproutcore/apps/welcome/core.js +9 -9
  244. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/images/sproutcore.png +0 -0
  245. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +22 -25
  246. data/lib/frameworks/sproutcore/apps/welcome/main.js +3 -3
  247. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.jpg +0 -0
  248. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.png +0 -0
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.jpg +0 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.png +0 -0
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup.png +0 -0
  252. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +21 -7
  253. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +35 -2
  254. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +142 -75
  255. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +20 -2
  256. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +283 -0
  257. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +284 -0
  258. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +64 -65
  259. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +14 -14
  260. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +8 -8
  261. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +19 -19
  262. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +10 -25
  263. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +12 -6
  264. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +53 -34
  265. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +30 -24
  266. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +44 -40
  267. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +5 -2
  268. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +105 -176
  269. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +50 -0
  270. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +4 -4
  271. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +48 -0
  272. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +225 -7
  273. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +54 -34
  274. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +86 -71
  275. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +35 -35
  276. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +2 -2
  277. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +2 -2
  278. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +283 -120
  279. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +36 -37
  280. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +653 -435
  281. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +49 -42
  282. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +422 -396
  283. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +5 -5
  284. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -8
  285. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +37 -16
  286. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +5 -5
  287. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +1 -1
  288. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +15 -0
  289. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +21 -0
  290. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/cursor.js +28 -0
  291. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/platform.js +18 -0
  292. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +17 -17
  293. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +9 -9
  294. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +43 -43
  295. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +4 -14
  296. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +18 -30
  297. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +78 -43
  298. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +7 -7
  299. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +4 -3
  300. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +31 -15
  301. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +47 -2
  302. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +32 -31
  303. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +23 -22
  304. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +3 -2
  305. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +17 -16
  306. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +626 -211
  307. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +174 -0
  308. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +22 -20
  309. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +27 -0
  310. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -10
  311. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +5 -4
  312. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +10 -6
  313. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +17 -12
  314. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroy.js +60 -7
  315. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +19 -26
  316. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +14 -13
  317. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/enabled_states_test.js +341 -0
  318. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +9 -8
  319. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +26 -16
  320. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +28 -68
  321. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +35 -23
  322. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +93 -78
  323. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +62 -64
  324. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +69 -18
  325. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +26 -21
  326. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +129 -57
  327. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +436 -238
  328. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +38 -44
  329. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +14 -4
  330. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +29 -20
  331. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceAllChildren_test.js +229 -0
  332. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +33 -95
  333. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +87 -39
  334. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +684 -0
  335. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +767 -625
  336. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +4 -23
  337. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +645 -77
  338. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +1 -1
  339. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +218 -19
  340. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +648 -321
  341. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +326 -534
  342. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +120 -126
  343. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +1526 -0
  344. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +18 -23
  345. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +12 -94
  346. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +2 -2
  347. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +19 -19
  348. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +43 -27
  349. data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +5 -5
  350. data/lib/frameworks/sproutcore/frameworks/core_tools/resources/icons.css +5 -0
  351. data/lib/frameworks/sproutcore/frameworks/core_tools/resources/sc-icon-sproutcore-16.png +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +41 -41
  353. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +1 -1
  354. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +90 -90
  355. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +1 -1
  356. data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +31 -31
  357. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +3 -3
  358. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +6 -6
  359. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -1
  360. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +1 -1
  361. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  362. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -8
  363. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +74 -48
  364. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +11 -16
  365. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +187 -253
  366. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +5 -5
  367. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +14 -14
  368. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +49 -9
  369. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +2 -2
  370. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +236 -127
  371. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/instance_management.js +107 -0
  372. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +17 -0
  373. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +12 -11
  374. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +42 -17
  375. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +20 -15
  376. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +205 -92
  377. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +61 -25
  378. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +39 -9
  379. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +45 -1
  380. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/tests/system/datetime.js +88 -0
  381. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/design.js +0 -0
  382. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/object.js +0 -0
  383. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/controllers.js +3 -3
  384. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/design.js +2 -2
  385. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/designs.js +19 -19
  386. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_design.js +44 -44
  387. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_files.js +4 -4
  388. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/core.js +0 -0
  389. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_rule.js +0 -0
  390. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style.js +6 -6
  391. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style_sheet.js +37 -37
  392. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/button.js +0 -0
  393. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/label.js +0 -0
  394. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/object_designer.js +0 -0
  395. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/tab.js +0 -0
  396. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/text_field.js +0 -0
  397. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/view_designer.js +1 -1
  398. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/css/designer.css +0 -0
  399. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/design_page.js +0 -0
  400. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/high_light.css +0 -0
  401. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/controller.png +0 -0
  402. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-bg.png +0 -0
  403. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-bg.png +0 -0
  404. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-divider.png +0 -0
  405. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
  406. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
  407. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/main-bg.png +0 -0
  408. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/page.png +0 -0
  409. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/pane.png +0 -0
  410. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/view.png +0 -0
  411. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/selection_handles.css +0 -0
  412. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/binding.js +0 -0
  413. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/object.js +0 -0
  414. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/page.js +0 -0
  415. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/view.js +0 -0
  416. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/button.js +0 -0
  417. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/snap_lines.js +0 -0
  418. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/coders/page.js +0 -0
  419. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/designers/view_designer.js +0 -0
  420. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/designer_drop_target.js +36 -37
  421. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/drawing.js +1 -1
  422. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/high_light.js +17 -17
  423. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/page_item_view.js +0 -0
  424. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/selection_handles.js +14 -14
  425. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +1 -2
  426. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +51 -51
  427. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_child.js +63 -52
  428. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_thumb.js +64 -59
  429. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +113 -112
  430. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +182 -203
  431. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -13
  432. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +51 -29
  433. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +513 -307
  434. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +69 -217
  435. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +31 -26
  436. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +15 -20
  437. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +2 -6
  438. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -6
  439. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +25 -16
  440. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +6 -6
  441. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +29 -16
  442. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +1 -1
  443. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +19 -23
  444. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +14 -17
  445. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +24 -24
  446. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -4
  447. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +5 -5
  448. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split.js +0 -0
  449. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split_divider.js +0 -0
  450. data/lib/frameworks/sproutcore/frameworks/desktop/resources/modal.css +2 -0
  451. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +1 -1
  452. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +24 -98
  453. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +446 -442
  454. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +42 -21
  455. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +19 -3
  456. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +26 -28
  457. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +3 -2
  458. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +11 -7
  459. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +5 -4
  460. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +32 -26
  461. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +27 -22
  462. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +5 -4
  463. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +0 -2
  464. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +11 -8
  465. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/displayProperties.js +5 -5
  466. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/keyEquivalents.js +9 -11
  467. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +23 -23
  468. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +15 -17
  469. data/lib/frameworks/sproutcore/frameworks/desktop/tests/{mixins → views/collection}/collection_fast_path.js +18 -12
  470. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +46 -53
  471. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +101 -47
  472. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +26 -26
  473. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +89 -69
  474. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +27 -25
  475. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +32 -35
  476. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -0
  477. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +6 -11
  478. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +3 -5
  479. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +103 -8
  480. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +76 -38
  481. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +3 -5
  482. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +91 -3
  483. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +2 -17
  484. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +70 -38
  485. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +17 -19
  486. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +10 -13
  487. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +37 -30
  488. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +18 -20
  489. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +115 -28
  490. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +0 -2
  491. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +37 -1
  492. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +194 -182
  493. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +2 -3
  494. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +18 -21
  495. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +5 -6
  496. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +5 -4
  497. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/children.js +15 -15
  498. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/dividers.js +0 -0
  499. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +341 -45
  500. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_child.js +0 -0
  501. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_thumb.js +0 -0
  502. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +6 -8
  503. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +49 -52
  504. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +23 -6
  505. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +2 -4
  506. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +4 -5
  507. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +47 -38
  508. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +24 -24
  509. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +887 -740
  510. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +2 -2
  511. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +68 -55
  512. data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +3 -3
  513. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +8 -26
  514. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +189 -167
  515. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +55 -54
  516. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +8 -4
  517. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +145 -146
  518. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +21 -21
  519. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  520. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +66 -66
  521. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +40 -44
  522. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +203 -200
  523. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +11 -12
  524. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +6 -13
  525. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +87 -112
  526. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +192 -179
  527. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +23 -23
  528. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +64 -64
  529. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +56 -56
  530. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +784 -714
  531. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +21 -39
  532. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +45 -41
  533. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
  534. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -10
  535. data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +9 -47
  536. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +40 -16
  537. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -1
  538. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +62 -50
  539. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -9
  540. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +45 -45
  541. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +16 -16
  542. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +46 -6
  543. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +16 -2
  544. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +12 -12
  545. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +38 -40
  546. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +8 -8
  547. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +20 -20
  548. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +16 -16
  549. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +26 -14
  550. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +43 -43
  551. data/lib/frameworks/sproutcore/frameworks/foundation/debug/test-image.png +0 -0
  552. data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +11 -11
  553. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +63 -41
  554. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +1 -1
  555. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +60 -61
  556. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +72 -72
  557. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +142 -142
  558. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gesturable.js +1 -1
  559. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
  560. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +10 -8
  561. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +36 -29
  562. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +4 -4
  563. data/lib/frameworks/sproutcore/frameworks/foundation/protocols/swap_transition_protocol.js +150 -0
  564. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +54 -29
  565. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +23 -18
  566. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +12 -11
  567. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +21 -20
  568. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-128.png +0 -0
  569. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-256.png +0 -0
  570. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-32.png +0 -0
  571. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-48.png +0 -0
  572. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-512.png +0 -0
  573. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-64.png +0 -0
  574. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +5 -0
  575. data/lib/frameworks/sproutcore/frameworks/foundation/system/app_cache.js +412 -0
  576. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -3
  577. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +11 -5
  578. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +21 -21
  579. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +8 -3
  580. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +33 -8
  581. data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +2 -1
  582. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +9 -3
  583. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +5 -4
  584. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +49 -4
  585. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +29 -21
  586. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +3 -5
  587. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +8 -10
  588. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/app_cache_test.js +81 -0
  589. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +2 -2
  590. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +0 -3
  591. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +40 -1
  592. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/transition_test.js +143 -0
  593. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +5 -7
  594. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +187 -84
  595. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +6 -41
  596. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +51 -7
  597. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +11 -16
  598. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_bounce_transition.js +80 -0
  599. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_smooth_transition.js +39 -0
  600. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_spring_transition.js +77 -0
  601. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/bounce_transition.js +211 -0
  602. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +57 -0
  603. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +82 -0
  604. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +54 -0
  605. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +140 -0
  606. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/spring_transition.js +203 -0
  607. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +67 -0
  608. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_fade_color_transition.js +81 -0
  609. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_move_in_transition.js +104 -0
  610. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_push_transition.js +181 -0
  611. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_reveal_transition.js +90 -0
  612. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +2 -2
  613. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +483 -95
  614. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +65 -65
  615. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +111 -100
  616. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +30 -222
  617. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +38 -24
  618. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +74 -62
  619. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-1.8.3-patched.js +9485 -0
  620. data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +4 -4
  621. data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +20 -20
  622. data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +18 -17
  623. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +19 -19
  624. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +10 -11
  625. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +7 -8
  626. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +24 -24
  627. data/lib/frameworks/sproutcore/frameworks/qunit/test/test.js +2 -2
  628. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +32 -21
  629. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +72 -53
  630. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +164 -156
  631. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +20 -20
  632. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +145 -140
  633. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +1 -1
  634. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +2 -2
  635. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +393 -370
  636. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +3 -3
  637. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1045 -999
  638. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +41 -36
  639. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +10 -4
  640. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +11 -1
  641. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +7 -7
  642. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +275 -205
  643. data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +27 -27
  644. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +229 -193
  645. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +24 -24
  646. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +186 -188
  647. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
  648. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +138 -65
  649. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +11 -10
  650. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +8 -4
  651. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +4 -0
  652. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +112 -23
  653. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +71 -18
  654. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +97 -57
  655. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +22 -22
  656. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/infinite.js +184 -0
  657. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +63 -1
  658. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +73 -36
  659. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +100 -25
  660. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +7 -0
  661. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +1 -1
  662. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +2 -2
  663. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +32 -32
  664. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +449 -422
  665. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +19 -19
  666. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +612 -562
  667. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +115 -62
  668. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +145 -64
  669. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/respond_to_event.js +17 -1
  670. data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +30 -30
  671. data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +34 -34
  672. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
  673. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -2
  674. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +3 -5
  675. data/lib/frameworks/sproutcore/frameworks/template_view/tests/panes/template.js +2 -0
  676. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/core.js +2 -2
  677. data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +7 -7
  678. data/lib/frameworks/sproutcore/frameworks/template_view/views/template.js +4 -4
  679. data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +15 -21
  680. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +4 -4
  681. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +35 -35
  682. data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +34 -0
  683. data/lib/frameworks/sproutcore/tests/phantomjs_runner.phantomjs +606 -0
  684. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/PanelPane.opacity +0 -0
  685. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/Pointers.opacity +0 -0
  686. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button@2x.png +0 -0
  687. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button@2x.png +0 -0
  688. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button@2x.png +0 -0
  689. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button@2x.png +0 -0
  690. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +3 -4
  691. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +18 -0
  692. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
  693. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel@2x.png +0 -0
  694. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
  695. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel@2x.png +0 -0
  696. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +34 -14
  697. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
  698. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers@2x.png +0 -0
  699. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +5 -4
  700. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +7 -2
  701. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +5 -4
  702. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +6 -3
  703. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +7 -5
  704. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +7 -7
  705. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +37 -37
  706. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +12 -12
  707. data/lib/sproutcore/helpers/static_helper.rb +35 -27
  708. data/sproutcore.gemspec +1 -0
  709. metadata +529 -451
  710. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
  711. data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +0 -55
  712. data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +0 -29
  713. data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +0 -28
  714. data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +0 -22
  715. data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +0 -51
  716. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +0 -26
  717. data/lib/frameworks/sproutcore/apps/tests/states/ready.js +0 -56
  718. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +0 -41
  719. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +0 -48
  720. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +0 -41
  721. data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +0 -44
  722. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +0 -31
  723. data/lib/frameworks/sproutcore/apps/tests/states/start.js +0 -39
  724. data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +0 -15
  725. data/lib/frameworks/sproutcore/frameworks/animation/Buildfile +0 -3
  726. data/lib/frameworks/sproutcore/frameworks/animation/LICENSE +0 -25
  727. data/lib/frameworks/sproutcore/frameworks/animation/README.md +0 -79
  728. data/lib/frameworks/sproutcore/frameworks/animation/core.js +0 -1208
  729. data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +0 -152
  730. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +0 -67
  731. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +0 -203
  732. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +0 -213
  733. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +0 -163
  734. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +0 -97
  735. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +0 -312
  736. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +0 -961
  737. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +0 -40
  738. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +0 -27
  739. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-logo.png +0 -0
  740. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore.png +0 -0
  741. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +0 -394
  742. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +0 -133
  743. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +0 -18
  744. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +0 -8981
  745. data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +0 -40
  746. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
@@ -15,13 +15,14 @@ module("SC.Pane#layout", {
15
15
  });
16
16
  pane.append();
17
17
  },
18
-
18
+
19
19
  teardown: function() {
20
20
  pane.remove();
21
+ pane.destroy();
21
22
  }
22
23
  });
23
24
 
24
- test("make sure that a call to adjust actually adjusts the view's size", function() {
25
+ test("make sure that a call to adjust actually adjusts the view's size", function() {
25
26
  SC.RunLoop.begin();
26
27
  pane.adjust({ width: 100, height: 50 });
27
28
  SC.RunLoop.end();
@@ -14,7 +14,7 @@ module("SC.Pane#sendEvent", {
14
14
  callCount++ ;
15
15
  equals(theEvent, evt, 'should pass event');
16
16
  };
17
-
17
+
18
18
  defaultResponder = SC.Object.create({ defaultEvent: handler });
19
19
  pane = SC.Pane.create({
20
20
  defaultResponder: defaultResponder,
@@ -33,9 +33,10 @@ module("SC.Pane#sendEvent", {
33
33
  ok(barView.barEvent, 'has barEvent handler');
34
34
 
35
35
  evt = SC.Object.create(); // mock
36
- },
37
-
36
+ },
37
+
38
38
  teardown: function() {
39
+ pane.destroy();
39
40
  pane = fooView = barView = defaultResponder = evt = null ;
40
41
  }
41
42
  });
@@ -66,7 +67,7 @@ test("when invoked with target = nested view", function() {
66
67
  handler = pane.sendEvent('imaginary', evt, barView);
67
68
  equals(callCount, 0, 'should not invoke handler');
68
69
  equals(handler, null, 'should return no responder');
69
-
70
+
70
71
  });
71
72
 
72
73
 
@@ -80,7 +81,7 @@ test("when invoked with target = middle view", function() {
80
81
  equals(callCount, 0, 'should not invoke handler');
81
82
  equals(handler, null, 'should return no responder');
82
83
 
83
- // test event handler on target
84
+ // test event handler on target
84
85
  callCount = 0;
85
86
  handler = pane.sendEvent('fooEvent', evt, fooView);
86
87
  equals(callCount, 1, 'should invoke handler');
@@ -97,7 +98,7 @@ test("when invoked with target = middle view", function() {
97
98
  handler = pane.sendEvent('imaginary', evt, fooView);
98
99
  equals(callCount, 0, 'should not invoke handler');
99
100
  equals(handler, null, 'should return no responder');
100
-
101
+
101
102
  });
102
103
 
103
104
 
@@ -111,7 +112,7 @@ test("when invoked with target = pane", function() {
111
112
  equals(callCount, 0, 'should not invoke handler');
112
113
  equals(handler, null, 'should return no responder');
113
114
 
114
- // test event handler on target
115
+ // test event handler on target
115
116
  callCount = 0;
116
117
  handler = pane.sendEvent('fooEvent', evt, pane);
117
118
  equals(callCount, 0, 'should not invoke handler');
@@ -128,7 +129,7 @@ test("when invoked with target = pane", function() {
128
129
  handler = pane.sendEvent('imaginary', evt, pane);
129
130
  equals(callCount, 0, 'should not invoke handler');
130
131
  equals(handler, null, 'should return no responder');
131
-
132
+
132
133
  });
133
134
 
134
135
 
@@ -138,14 +139,14 @@ test("when invoked with target = null", function() {
138
139
 
139
140
  // should start @ first responder
140
141
  pane.firstResponder = fooView;
141
-
142
+
142
143
  // test event handler on child view of target
143
144
  callCount = 0;
144
145
  handler = pane.sendEvent('barEvent', evt);
145
146
  equals(callCount, 0, 'should not invoke handler');
146
147
  equals(handler, null, 'should return no responder');
147
148
 
148
- // test event handler on target
149
+ // test event handler on target
149
150
  callCount = 0;
150
151
  handler = pane.sendEvent('fooEvent', evt);
151
152
  equals(callCount, 1, 'should invoke handler');
@@ -162,12 +163,12 @@ test("when invoked with target = null", function() {
162
163
  handler = pane.sendEvent('imaginary', evt);
163
164
  equals(callCount, 0, 'should not invoke handler');
164
165
  equals(handler, null, 'should return no responder');
165
-
166
+
166
167
  // test event handler on pane itself
167
168
  callCount = 0;
168
169
  handler = pane.sendEvent('paneEvent', evt);
169
170
  equals(callCount, 1, 'should invoke handler on pane');
170
- equals(handler, pane, 'should return pane as responder that handled event');
171
+ equals(handler, pane, 'should return pane as responder that handled event');
171
172
 
172
173
  });
173
174
 
@@ -177,14 +178,14 @@ test("when invoked with target = null, no default or first responder", function(
177
178
  // no first or default responder
178
179
  pane.set('firstResponder', null);
179
180
  pane.set('defaultResponder', null);
180
-
181
+
181
182
  // test event handler on child view of target
182
183
  callCount = 0;
183
184
  handler = pane.sendEvent('barEvent', evt);
184
185
  equals(callCount, 0, 'should not invoke handler');
185
186
  equals(handler, null, 'should return no responder');
186
187
 
187
- // test event handler on target
188
+ // test event handler on target
188
189
  callCount = 0;
189
190
  handler = pane.sendEvent('fooEvent', evt);
190
191
  equals(callCount, 0, 'should not invoke handler');
@@ -195,12 +196,12 @@ test("when invoked with target = null, no default or first responder", function(
195
196
  handler = pane.sendEvent('imaginary', evt);
196
197
  equals(callCount, 0, 'should not invoke handler');
197
198
  equals(handler, null, 'should return no responder');
198
-
199
+
199
200
  // test event handler on pane itself
200
201
  callCount = 0;
201
202
  handler = pane.sendEvent('paneEvent', evt);
202
203
  equals(callCount, 1, 'should invoke handler on pane');
203
- equals(handler, pane, 'should return pane as responder that handled event');
204
+ equals(handler, pane, 'should return pane as responder that handled event');
204
205
 
205
206
  });
206
207
 
@@ -7,43 +7,42 @@
7
7
  // ========================================================================
8
8
  // View Animation Unit Tests
9
9
  // ========================================================================
10
+ /*global module, test, ok, equals, stop, start, expect*/
10
11
 
11
- /*globals module test ok same equals */
12
12
 
13
13
  /* These unit tests verify: animate(). */
14
-
15
14
  var view, pane, originalSupportsTransitions = SC.platform.supportsCSSTransitions;
16
15
 
17
16
  function styleFor(view) {
18
17
  return view.get('layer').style;
19
18
  }
20
19
 
21
- function transitionFor(view){
22
- return styleFor(view)[SC.platform.domCSSPrefix+"Transition"];
20
+ function transitionFor(view) {
21
+ return styleFor(view)[SC.browser.experimentalStyleNameFor('transition')];
23
22
  }
24
23
 
25
24
  var commonSetup = {
26
- setup: function() {
27
-
28
- SC.RunLoop.begin();
25
+ setup: function (wantsAcceleratedLayer) {
29
26
 
30
- pane = SC.Pane.create({
31
- backgroundColor: '#ccc',
32
- layout: { top: 0, right: 0, width: 200, height: 200, zIndex: 100 }
33
- });
34
- pane.append();
27
+ SC.run(function () {
28
+ pane = SC.Pane.create({
29
+ backgroundColor: '#ccc',
30
+ layout: { top: 0, right: 0, width: 200, height: 200, zIndex: 100 }
31
+ });
32
+ pane.append();
35
33
 
36
- view = SC.View.create({
37
- backgroundColor: '#888',
38
- layout: { left: 0, top: 0, height: 100, width: 100 }
34
+ view = SC.View.create({
35
+ backgroundColor: '#888',
36
+ layout: { left: 0, top: 0, height: 100, width: 100 },
37
+ wantsAcceleratedLayer: wantsAcceleratedLayer || NO
38
+ });
39
+ pane.appendChild(view);
39
40
  });
40
- pane.appendChild(view);
41
-
42
- SC.RunLoop.end();
43
41
  },
44
42
 
45
- teardown: function(){
43
+ teardown: function () {
46
44
  pane.remove();
45
+ pane.destroy();
47
46
  }
48
47
  };
49
48
 
@@ -51,201 +50,319 @@ if (SC.platform.supportsCSSTransitions) {
51
50
 
52
51
  module("ANIMATION", commonSetup);
53
52
 
54
- test("should work", function(){
53
+ test("should work", function () {
54
+ stop(2000);
55
55
  SC.RunLoop.begin();
56
56
  view.animate('left', 100, { duration: 1 });
57
57
  SC.RunLoop.end();
58
- equals(transitionFor(view), 'left 1s linear', 'add transition');
59
- equals(100, view.get('layout').left, 'left is 100');
58
+
59
+ setTimeout(function () {
60
+ equals(transitionFor(view), 'left 1s ease 0s', 'add transition');
61
+ equals(100, view.get('layout').left, 'left is 100');
62
+
63
+ start();
64
+ }, 5);
60
65
  });
61
66
 
62
- test("should accept shorthand notation", function(){
63
- SC.RunLoop.begin();
64
- view.animate('left', 100, 1);
65
- SC.RunLoop.end();
66
- equals(transitionFor(view), 'left 1s linear', 'add transition');
67
+ test("callbacks work in general", function () {
68
+ stop(2000);
69
+
70
+ SC.run(function () {
71
+ view.animate('left', 100, { duration: 0.5 }, function () {
72
+ ok(true, "Callback was called.");
73
+ equals(view, this, "`this` should be the view");
74
+
75
+ start();
76
+ });
77
+ });
67
78
  });
68
79
 
69
- test("callbacks work in general", function(){
80
+ test("callbacks work in general with target method", function () {
70
81
  stop(2000);
71
82
 
72
- SC.RunLoop.begin();
73
- // We shouldn't have to use invokeLater, but it's the only way to get this to work!
74
- view.invokeLater('animate', 1, 'left', 100, 0.500, function() {
75
- start();
76
- ok(true, "Callback was called.");
83
+ var ob = SC.Object.create({
84
+ callback: function () {
85
+ ok(true, "Callback was called.");
86
+ equals(ob, this, "`this` should be the target object");
87
+
88
+ start();
89
+ }
90
+ });
91
+
92
+ SC.run(function () {
93
+ view.animate('left', 100, { duration: 0.5 }, ob, 'callback');
77
94
  });
78
- SC.RunLoop.end();
79
95
  });
80
96
 
81
- test("callbacks should have appropriate data", function(){
97
+ test("callbacks should have appropriate data", function () {
82
98
  stop(2000);
83
99
 
84
100
  SC.RunLoop.begin();
85
- // We shouldn't have to use invokeLater, but it's the only way to get this to work!
86
- view.invokeLater('animate', 1, 'left', 100, 0.500, function(data) {
87
- start();
88
-
101
+ view.animate('left', 100, { duration: 0.5 }, function (data) {
89
102
  // TODO: Test this better
90
103
  ok(data.event, "has event");
91
104
  equals(data.view, view, "view is correct");
92
105
  equals(data.isCancelled, false, "animation is not cancelled");
106
+
107
+ start();
93
108
  });
94
109
  SC.RunLoop.end();
95
110
  });
96
111
 
97
- test("handles timing function string", function(){
112
+ test("handles delay function string", function () {
113
+ stop(2000);
114
+
115
+ SC.RunLoop.begin();
116
+ view.animate('left', 100, { duration: 1, delay: 1 });
117
+ SC.RunLoop.end();
118
+
119
+ setTimeout(function () {
120
+ equals(transitionFor(view), 'left 1s ease 1s', 'uses delay');
121
+
122
+ start();
123
+ }, 5);
124
+ });
125
+
126
+ test("handles timing function string", function () {
127
+ stop(2000);
128
+
98
129
  SC.RunLoop.begin();
99
130
  view.animate('left', 100, { duration: 1, timing: 'ease-in' });
100
131
  SC.RunLoop.end();
101
- equals(transitionFor(view), 'left 1s ease-in', 'uses ease-in timing');
132
+
133
+ setTimeout(function () {
134
+ equals(transitionFor(view), 'left 1s ease-in 0s', 'uses ease-in timing');
135
+
136
+ start();
137
+ }, 5);
102
138
  });
103
139
 
104
- test("handles timing function array", function(){
140
+ test("handles timing function array", function () {
141
+ stop(2000);
142
+
105
143
  SC.RunLoop.begin();
106
144
  view.animate('left', 100, { duration: 1, timing: [0.1, 0.2, 0.3, 0.4] });
107
145
  SC.RunLoop.end();
108
- equals(transitionFor(view), 'left 1s cubic-bezier(0.1, 0.2, 0.3, 0.4)', 'uses cubic-bezier timing');
146
+
147
+ setTimeout(function () {
148
+ equals(transitionFor(view), 'left 1s cubic-bezier(0.1, 0.2, 0.3, 0.4) 0s', 'uses cubic-bezier timing');
149
+
150
+ start();
151
+ }, 5);
152
+ });
153
+
154
+ test("should allow multiple keys to be set at once", function () {
155
+ stop(2000);
156
+
157
+ SC.RunLoop.begin();
158
+ view.animate({ top: 100, left: 100 }, { duration: 1 });
159
+ SC.RunLoop.end();
160
+
161
+ setTimeout(function () {
162
+ equals(transitionFor(view), 'top 1s ease 0s, left 1s ease 0s', 'should add transition');
163
+ equals(100, view.get('layout').top, 'top is 100');
164
+ equals(100, view.get('layout').left, 'left is 100');
165
+
166
+ start();
167
+ }, 5);
109
168
  });
110
169
 
111
- test("should allow multiple keys to be set at once", function(){
170
+ test("should not animate any keys that don't change", function () {
171
+ stop(2000);
172
+
112
173
  SC.RunLoop.begin();
113
- view.animate({ top: 100, left: 100 }, 1);
174
+ view.animate({ top: 0, left: 100 }, { duration: 1 });
114
175
  SC.RunLoop.end();
115
- equals(transitionFor(view), 'top 1s linear, left 1s linear', 'should add transition');
116
- equals(100, view.get('layout').top, 'top is 100');
117
- equals(100, view.get('layout').left, 'left is 100');
176
+
177
+ setTimeout(function () {
178
+ equals(transitionFor(view), 'left 1s ease 0s', 'should only add left transition');
179
+ equals(0, view.get('layout').top, 'top is 0');
180
+ equals(100, view.get('layout').left, 'left is 100');
181
+
182
+ start();
183
+ }, 5);
184
+ });
185
+
186
+ test("animating height with a centerY layout should also animate margin-top", function () {
187
+ stop(2000);
188
+
189
+ SC.RunLoop.begin();
190
+ view.adjust({ top: null, centerY: 0 });
191
+ view.animate({ height: 10 }, { duration: 1 });
192
+ SC.RunLoop.end();
193
+
194
+ setTimeout(function () {
195
+ equals(transitionFor(view), 'height 1s ease 0s, margin-top 1s ease 0s', 'should add height and margin-top transitions');
196
+ equals(view.get('layout').height, 10, 'height');
197
+ equals(view.get('layout').centerY, 0, 'centerY');
198
+
199
+ start();
200
+ }, 5);
201
+ });
202
+
203
+ test("animating width with a centerX layout should also animate margin-left", function () {
204
+ stop(2000);
205
+
206
+ SC.RunLoop.begin();
207
+ view.adjust({ left: null, centerX: 0 });
208
+ view.animate({ width: 10 }, { duration: 1 });
209
+ SC.RunLoop.end();
210
+
211
+ setTimeout(function () {
212
+ equals(transitionFor(view), 'width 1s ease 0s, margin-left 1s ease 0s', 'should add width and margin-left transitions');
213
+ equals(view.get('layout').width, 10, 'width');
214
+ equals(view.get('layout').centerX, 0, 'centerX');
215
+
216
+ start();
217
+ }, 5);
118
218
  });
119
219
 
120
220
  // Pretty sure this does the job
121
- test("callbacks should be called only once for a grouped animation", function(){
221
+ test("callbacks should be called only once for a grouped animation", function () {
122
222
  stop(2000);
123
223
  var stopped = true;
124
224
 
125
225
  expect(1);
126
226
 
127
- SC.RunLoop.begin();
128
- view.invokeLater('animate', 1, { top: 100, left: 100 }, 0.250, function(data) {
129
- if (stopped) {
130
- stopped = false;
131
- // Continue on in a short moment. Before the test times out, but after
132
- // enough time for a second callback to possibly come in.
133
- setTimeout(function() {
134
- start();
135
- }, 100);
136
- }
137
-
138
- ok(true, 'callback called back');
227
+ SC.run(function () {
228
+ view.animate({ top: 100, left: 100, width: 400 }, { duration: 0.5 }, function () {
229
+ ok(stopped, 'callback called back');
230
+ if (stopped) {
231
+ stopped = false;
232
+ // Continue on in a short moment. Before the test times out, but after
233
+ // enough time for a second callback to possibly come in.
234
+ setTimeout(function () {
235
+ start();
236
+ }, 200);
237
+ }
238
+ });
139
239
  });
140
- SC.RunLoop.end();
141
240
  });
142
241
 
143
242
  // This behavior should be up for debate. Does the callback call immediately, or does it wait until the end of
144
243
  // the specified animation period? Currently we're calling it immediately.
145
- test("callback should be called immediately when a property is animated to its current value.", function() {
146
-
244
+ test("callback should be called immediately when a property is animated to its current value.", function () {
147
245
  stop(2000);
148
246
 
149
247
  expect(1);
150
248
 
151
- SC.RunLoop.begin();
152
- view.invokeLater('animate', 1, 'top', view.getPath('layout.top'), 0.250, function(){
153
- ok(true, 'callback called back');
154
- start();
249
+ SC.run(function () {
250
+ view.animate('top', view.getPath('layout.top'), { duration: 0.5 }, function () {
251
+ ok(true, 'callback called back');
252
+
253
+ start();
254
+ });
155
255
  });
156
- SC.RunLoop.end();
157
256
  });
158
257
 
159
- test("callback should be called when a property is animated with a duration of zero.", function() {
258
+ test("callback should be called when a property is animated with a duration of zero.", function () {
160
259
  stop(2000);
161
260
 
162
261
  expect(1);
163
262
 
164
263
  SC.RunLoop.begin();
165
- view.invokeLater('animate', 1, 'top', 20, 0, function(){
264
+ view.animate('top', 20, { duration: 0 }, function () {
166
265
  ok(true, 'callback called back');
167
266
  start();
168
267
  });
169
268
  SC.RunLoop.end();
170
269
  });
171
270
 
172
- test("multiple animations should be able to run simultaneously", function() {
271
+ test("multiple animations should be able to run simultaneously", function () {
173
272
  stop(2000);
174
273
 
175
274
  expect(2);
176
275
 
177
- SC.RunLoop.begin();
178
- view.invokeLater('animate', 1, 'top', 100, 0.250, function(){
179
- ok(true, 'top finished');
180
- });
181
- view.invokeLater('animate', 2, 'left', 100, 0.500, function(){
182
- ok(true, 'left finished');
183
- start();
276
+ SC.run(function () {
277
+ view.animate('top', 100, { duration: 0.25 }, function () {
278
+ ok(true, 'top finished');
279
+ });
280
+
281
+ view.animate('left', 100, { duration: 0.5 }, function () {
282
+ ok(true, 'left finished');
283
+ start();
284
+ });
184
285
  });
185
- SC.RunLoop.end();
186
286
  });
187
287
 
188
- test("altering existing animation should call callback as cancelled", function(){
288
+ test("altering existing animation should call callback as cancelled", function () {
189
289
  stop(2000);
190
290
 
191
- expect(2);
291
+ var order = 0;
292
+ expect(6);
192
293
 
193
- SC.RunLoop.begin();
194
- view.invokeLater('animate', 1, 'top', 100, 0.500, function(data){
195
- equals(data.isCancelled, true, 'first cancelled');
196
- });
197
- view.invokeLater('animate', 250, 'top', 0, 0.500, function(data){
198
- equals(data.isCancelled, false, 'second not cancelled');
199
- start();
294
+ SC.run(function () {
295
+ view.animate('top', 100, { duration: 0.5 }, function (data) {
296
+ // Test the order to ensure that this is the proper callback that is used.
297
+ equals(order, 0, 'should be called first');
298
+ order = 1;
299
+ equals(data.isCancelled, true, 'first cancelled');
300
+ });
301
+
302
+ // Test calling animate twice in the same run loop.
303
+ view.animate('top', 100, { duration: 0.75 }, function (data) {
304
+ // Test the order to ensure that this is the proper callback that is used.
305
+ equals(order, 1, 'should be called second');
306
+ order = 2;
307
+ equals(data.isCancelled, true, 'second cancelled');
308
+ });
200
309
  });
201
- SC.RunLoop.end();
310
+
311
+ setTimeout(function () {
312
+ SC.run(function () {
313
+ view.animate('top', 0, { duration: 0.75 }, function (data) {
314
+ // Test the order to ensure that this is the proper callback that is used.
315
+ equals(order, 2, 'should be called third');
316
+ equals(data.isCancelled, false, 'third not cancelled');
317
+ start();
318
+ });
319
+ });
320
+ }, 100);
202
321
  });
203
322
 
204
- test("should not cancel callback when value hasn't changed", function() {
323
+ test("should not cancel callback when value hasn't changed", function () {
205
324
  var callbacks = 0, wasCancelled = NO, check = 0;
206
325
  stop(2000);
207
326
 
208
- SC.RunLoop.begin();
209
- view.invokeLater(function() {
327
+ SC.run(function () {
210
328
  // this triggers the initial layoutStyle code
211
- view.animate('left', 79, 0.500, function(data) {
329
+ view.animate('left', 79, { duration: 0.5 }, function (data) {
212
330
  callbacks++;
213
331
  wasCancelled = data.isCancelled;
214
332
  });
333
+
215
334
  // this triggers a re-render, re-running the layoutStyle code
216
335
  view.displayDidChange();
217
- }, 1);
218
- SC.RunLoop.end();
336
+ });
219
337
 
220
- setTimeout(function() {
338
+ setTimeout(function () {
221
339
  // capture the callbacks value
222
340
  check = callbacks;
223
341
  }, 250);
224
342
 
225
- setTimeout(function() {
226
- start();
343
+ setTimeout(function () {
227
344
  equals(check, 0, "the callback should not have been cancelled initially");
228
345
  equals(callbacks, 1, "the callback should have been fired");
229
346
  equals(wasCancelled, NO, "the callback should not have been cancelled");
347
+
348
+ start();
230
349
  }, 1000);
231
350
  });
232
351
 
233
- /**
234
- There was a bug in animation that once one property was animated, a null
235
- version of it existed in _activeAnimations, such that when another property
236
- was animated it would throw an exception iterating through _activeAnimations
237
- and not expecting a null value.
238
- */
239
- test("animating different attributes at different times should not throw an error" , function(){
352
+ // There was a bug in animation that once one property was animated, a null
353
+ // version of it existed in _activeAnimations, such that when another property
354
+ // was animated it would throw an exception iterating through _activeAnimations
355
+ // and not expecting a null value.
356
+ test("animating different attributes at different times should not throw an error", function () {
240
357
  // Run test.
241
358
  stop(2000);
242
359
 
243
360
  expect(0);
244
361
 
245
362
  // Override and wrap the problematic method to capture the error.
246
- view.layoutStyleCalculator.transitionDidEnd = function() {
363
+ view.transitionDidEnd = function () {
247
364
  try {
248
- SC.View.LayoutStyleCalculator.prototype.transitionDidEnd.apply(this, arguments);
365
+ SC.View.prototype.transitionDidEnd.apply(this, arguments);
249
366
  ok(true);
250
367
  } catch (ex) {
251
368
  ok(false);
@@ -253,190 +370,488 @@ if (SC.platform.supportsCSSTransitions) {
253
370
  };
254
371
 
255
372
  SC.RunLoop.begin();
256
- // We shouldn't have to use invokeLater, but it's the only way to get this to work!
257
- view.invokeLater(function() {
258
- view.animate('left', 75, 0.2);
259
- }, 1);
373
+ view.animate('left', 75, { duration: 0.2 });
260
374
  SC.RunLoop.end();
261
375
 
262
- setTimeout(function() {
376
+ setTimeout(function () {
263
377
  SC.RunLoop.begin();
264
- view.animate('top', 50, 0.2);
378
+ view.animate('top', 50, { duration: 0.2 });
265
379
  SC.RunLoop.end();
266
380
  }, 400);
267
381
 
268
- setTimeout(function() {
382
+ setTimeout(function () {
269
383
  start();
270
384
  }, 1000);
271
385
  });
272
386
 
273
- test("should handle transform attributes", function(){
274
- SC.RunLoop.begin();
275
- view.animate('rotateX', 45, { duration: 1 });
276
- SC.RunLoop.end();
277
- equals(transitionFor(view), '-'+SC.platform.cssPrefix+'-transform 1s linear', 'add transition');
278
- equals(styleFor(view)[SC.platform.domCSSPrefix+'Transform'], 'rotateX(45deg)', 'has both transforms');
279
- equals(45, view.get('layout').rotateX, 'rotateX is 45deg');
387
+ test("should handle transform attributes", function () {
388
+ stop(2000);
389
+
390
+ SC.run(function () {
391
+ view.animate('rotateX', 45, { duration: 1 });
392
+ });
393
+
394
+ setTimeout(function () {
395
+ equals(transitionFor(view), SC.browser.experimentalCSSNameFor('transform') + ' 1s ease 0s', 'add transition');
396
+ equals(styleFor(view)[SC.browser.experimentalStyleNameFor('transform')], 'rotateX(45deg)', 'has both transforms');
397
+ equals(45, view.get('layout').rotateX, 'rotateX is 45deg');
398
+
399
+ start();
400
+ }, 50);
280
401
  });
281
402
 
282
- test("should handle conflicting transform animations", function(){
283
- expect(5);
403
+ test("should handle conflicting transform animations", function () {
404
+ /*global console*/
405
+ stop(2000);
284
406
 
285
407
  var originalConsoleWarn = console.warn;
286
- console.warn = function(warning){
287
- equals(warning, "Can't animate transforms with different durations! Using first duration specified.", "proper warning");
408
+ console.warn = function (warning) {
409
+ equals(warning, "Developer Warning: Can't animate transforms with different durations, timings or delays! Using the first options specified.", "proper warning");
288
410
  };
289
411
 
290
- SC.RunLoop.begin();
291
- view.animate('rotateX', 45, 1).animate('scale', 2, 2);
292
- SC.RunLoop.end();
412
+ SC.run(function () {
413
+ view.animate('rotateX', 45, { duration: 1 }).animate('scale', 2, { duration: 2 });
414
+ });
293
415
 
294
- equals(transitionFor(view), '-'+SC.platform.cssPrefix+'-transform 1s linear', 'use duration of first');
295
- equals(styleFor(view)[SC.platform.domCSSPrefix+'Transform'], 'rotateX(45deg) scale(2)');
296
- equals(45, view.get('layout').rotateX, 'rotateX is 45deg');
297
- equals(2, view.get('layout').scale, 'scale is 2');
416
+ setTimeout(function () {
417
+ expect(5);
298
418
 
299
- console.warn = originalConsoleWarn;
300
- });
419
+ equals(transitionFor(view), SC.browser.experimentalCSSNameFor('transform') + ' 1s ease 0s', 'use duration of first');
420
+ equals(styleFor(view)[SC.browser.experimentalStyleNameFor('transform')], 'rotateX(45deg) scale(2)');
421
+ equals(45, view.get('layout').rotateX, 'rotateX is 45deg');
422
+ equals(2, view.get('layout').scale, 'scale is 2');
301
423
 
302
- test("should properly handle callbacks from conflicting transforms");
424
+ console.warn = originalConsoleWarn;
303
425
 
304
- test("removes animation property when done", function(){
426
+ start();
427
+ }, 25);
428
+ });
429
+
430
+ test("removes animation property when done", function () {
305
431
  stop(2000);
306
432
 
307
433
  SC.RunLoop.begin();
308
- view.invokeLater('animate', 1000, { top: 100, scale: 2 }, 0.500);
434
+ view.animate({ top: 100, scale: 2 }, { duration: 0.5 });
309
435
  SC.RunLoop.end();
310
436
 
311
- setTimeout(function(){
312
- start();
437
+ setTimeout(function () {
313
438
  equals(view.get('layout').animateTop, undefined, "animateTop is undefined");
314
439
  equals(view.get('layout').animateScale, undefined, "animateScale is undefined");
440
+
441
+ start();
315
442
  }, 1000);
316
443
  });
317
444
 
318
- module("ANIMATION WITH ACCELERATED LAYER", {
319
- setup: function(){
320
- commonSetup.setup();
321
- view.wantsAcceleratedLayer = YES;
322
- },
445
+ test("Test that cancelAnimation() removes the animation style and fires the callback with isCancelled set.", function () {
446
+ stop(2000);
323
447
 
324
- teardown: commonSetup.teardown
325
- });
448
+ expect(7);
326
449
 
327
- test("handles acceleration when appropriate", function(){
328
- SC.RunLoop.begin();
329
- view.animate('top', 100, 1);
330
- SC.RunLoop.end();
331
- equals(transitionFor(view), '-'+SC.platform.cssPrefix+'-transform 1s linear', 'transition is on transform');
332
- });
450
+ SC.run(function () {
451
+ view.animate({ left: 100 }, { duration: 0.5 }, function (data) {
452
+ ok(data.isCancelled, "The isCancelled property of the data should be true.");
453
+ });
454
+ });
333
455
 
334
- test("doesn't use acceleration when not appropriate", function(){
335
- SC.RunLoop.begin();
336
- view.adjust({ height: null, bottom: 0 });
337
- view.animate('top', 100, 1);
338
- SC.RunLoop.end();
339
- equals(transitionFor(view), 'top 1s linear', 'transition is not on transform');
340
- });
456
+ setTimeout(function () {
457
+ SC.run(function () {
458
+ var style = styleFor(view);
341
459
 
342
- test("combines accelerated layer animation with compatible transform animations", function(){
343
- SC.RunLoop.begin();
344
- view.animate('top', 100, 1).animate('rotateX', 45, 1);
345
- SC.RunLoop.end();
460
+ equals(style.left, '100px', 'Tests the left style after animate');
461
+ equals(style.top, '0px', 'Tests the top style after animate');
462
+ equals(transitionFor(view), 'left 0.5s ease 0s', 'Tests the CSS transition property');
463
+ view.cancelAnimation();
464
+ });
465
+ }, 5);
346
466
 
347
- var transform = styleFor(view)[SC.platform.domCSSPrefix+'Transform'];
467
+ setTimeout(function () {
468
+ var style = styleFor(view);
348
469
 
349
- // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
350
- ok(transform.match(/translateX\(0px\) translateY\(100px\)/), 'has translate');
351
- ok(transform.match(/rotateX\(45deg\)/), 'has rotateX');
470
+ equals(style.left, '100px', 'Tests the left style after cancel');
471
+ equals(style.top, '0px', 'Tests the top style after cancel');
472
+ equals(transitionFor(view), '', 'Tests the CSS transition property');
473
+ start();
474
+ }, 50);
352
475
  });
353
476
 
354
- test("should not use accelerated layer if other transforms are being animated at different speeds", function(){
355
- SC.RunLoop.begin();
356
- view.animate('rotateX', 45, 2).animate('top', 100, 1);
357
- SC.RunLoop.end();
477
+ test("Test that cancelAnimation(SC.LayoutState.CURRENT) removes the animation style, stops at the current position and fires the callback with isCancelled set.", function () {
478
+ stop(2000);
479
+
480
+ expect(9);
481
+
482
+ SC.run(function () {
483
+ view.animate({ left: 100, top: 100, width: 400 }, { duration: 0.5 }, function (data) {
484
+ ok(data.isCancelled, "The isCancelled property of the data should be true.");
485
+ });
486
+ });
487
+
488
+ setTimeout(function () {
489
+ SC.run(function () {
490
+ var style = styleFor(view);
358
491
 
359
- var style = styleFor(view);
492
+ equals(style.left, '100px', 'Tests the left style after animate');
493
+ equals(style.top, '100px', 'Tests the top style after animate');
494
+ equals(style.width, '400px', 'Tests the width style after animate');
495
+ equals(transitionFor(view), 'left 0.5s ease 0s, top 0.5s ease 0s, width 0.5s ease 0s', 'Tests the CSS transition property');
496
+ view.cancelAnimation(SC.LayoutState.CURRENT);
497
+ });
498
+ }, 100);
360
499
 
361
- equals(style[SC.platform.domCSSPrefix+'Transform'], 'rotateX(45deg)', 'transform should only have rotateX');
362
- equals(style['top'], '100px', 'should not accelerate top');
500
+ setTimeout(function () {
501
+ var style = styleFor(view);
502
+
503
+ ok((parseInt(style.left, 10) > 0) && (parseInt(style.left, 10) < 100), 'Tests the left style after cancel');
504
+ ok((parseInt(style.top, 10) > 0) && (parseInt(style.top, 10) < 100), 'Tests the top style after cancel');
505
+ ok((parseInt(style.width, 10) > 100) && (parseInt(style.width, 10) < 400), 'Tests the width style after cancel');
506
+ equals(transitionFor(view), '', 'Tests the CSS transition property');
507
+ start();
508
+ }, 200);
363
509
  });
364
510
 
365
- test("callbacks should work properly with acceleration", function(){
511
+ test("Test that cancelAnimation(SC.LayoutState.START) removes the animation style, returns to the start position and fires the callback with isCancelled set.", function () {
366
512
  stop(2000);
367
- var stopped = true;
368
513
 
369
- expect(1);
514
+ expect(9);
515
+
516
+ SC.run(function () {
517
+ view.animate({ left: 100, top: 100, width: 400 }, { duration: 0.5 }, function (data) {
518
+ ok(data.isCancelled, "The isCancelled property of the data should be true.");
519
+ });
520
+ });
521
+
522
+ setTimeout(function () {
523
+ SC.run(function () {
524
+ var style = styleFor(view);
525
+
526
+ equals(style.left, '100px', 'Tests the left style after animate');
527
+ equals(style.top, '100px', 'Tests the top style after animate');
528
+ equals(style.width, '400px', 'Tests the width style after animate');
529
+ equals(transitionFor(view), 'left 0.5s ease 0s, top 0.5s ease 0s, width 0.5s ease 0s', 'Tests the CSS transition property');
530
+ view.cancelAnimation(SC.LayoutState.START);
531
+ });
532
+ }, 100);
533
+
534
+ setTimeout(function () {
535
+ var style = styleFor(view);
536
+
537
+ equals(style.left, '0px', 'Tests the left style after cancel');
538
+ equals(style.top, '0px', 'Tests the top style after cancel');
539
+ equals(style.width, '100px', 'Tests the width style after animate');
540
+ equals(transitionFor(view), '', 'Tests the CSS transition property');
541
+ start();
542
+ }, 200);
543
+ });
544
+
545
+ if (SC.platform.supportsCSS3DTransforms) {
546
+ module("ANIMATION WITH ACCELERATED LAYER", {
547
+ setup: function () {
548
+ commonSetup.setup(YES);
549
+ },
550
+
551
+ teardown: commonSetup.teardown
552
+ });
553
+
554
+ test("handles acceleration when appropriate", function () {
555
+ stop(2000);
556
+
557
+ SC.RunLoop.begin();
558
+ view.animate('top', 100, { duration: 1 });
559
+ SC.RunLoop.end();
560
+
561
+ setTimeout(function () {
562
+ equals(transitionFor(view), SC.browser.experimentalCSSNameFor('transform') + ' 1s ease 0s', 'transition is on transform');
370
563
 
371
- SC.RunLoop.begin();
372
- // We shouldn't have to use invokeLater, but it's the only way to get this to work!
373
- view.invokeLater('animate', 1, { top: 100, left: 100, scale: 2 }, 0.500, function(data) {
374
- if (stopped) {
375
564
  start();
376
- stopped = false;
377
- }
565
+ }, 5);
566
+ });
567
+
568
+ test("doesn't use acceleration when not appropriate", function () {
569
+ stop(1000);
570
+
571
+ SC.RunLoop.begin();
572
+ view.adjust({ height: null, bottom: 0 });
573
+ view.animate('top', 100, { duration: 1 });
574
+ SC.RunLoop.end();
378
575
 
379
- ok(true);
576
+ setTimeout(function () {
577
+ equals(transitionFor(view), 'top 1s ease 0s', 'transition is not on transform');
578
+
579
+ start();
580
+ }, 5);
380
581
  });
381
- SC.RunLoop.end();
382
- });
383
582
 
384
- test("should not add animation for properties that have the same value as existing layout", function() {
385
- var callbacks = 0;
583
+ test("combines accelerated layer animation with compatible transform animations", function () {
584
+ stop(1000);
386
585
 
387
- SC.RunLoop.begin();
388
- // we set width to the same value, but we change height
389
- view.invokeLater('animate', 1, {width: 100, height: 50}, 0.5, function() { callbacks++; });
390
- SC.RunLoop.end();
586
+ SC.RunLoop.begin();
587
+ view.animate('top', 100, { duration: 1 }).animate('rotateX', 45, { duration: 1 });
588
+ SC.RunLoop.end();
391
589
 
392
- ok(callbacks === 0, "precond - callback should not have been run yet");
590
+ setTimeout(function () {
591
+ var transform = styleFor(view)[SC.browser.experimentalStyleNameFor('transform')];
393
592
 
394
- stop(2000);
593
+ // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
594
+ ok(transform.match(/translateX\(0px\) translateY\(100px\)/), 'has translate');
595
+ ok(transform.match(/rotateX\(45deg\)/), 'has rotateX');
395
596
 
396
- // we need to test changing the width at a later time
397
- setTimeout(function() {
398
- start();
597
+ start();
598
+ }, 5);
599
+ });
399
600
 
400
- equals(callbacks, 1, "callback should have been run once, for height change");
601
+ test("should not use accelerated layer if other transforms are being animated at different speeds", function () {
602
+ stop(1000);
401
603
 
402
604
  SC.RunLoop.begin();
403
- view.animate('width', 50, 0.5);
605
+ view.animate('rotateX', 45, { duration: 2 }).animate('top', 100, { duration: 1 });
404
606
  SC.RunLoop.end();
405
607
 
406
- equals(callbacks, 1, "callback should still have only been called once, even though width has now been animated");
407
- }, 1000);
408
- });
608
+ setTimeout(function () {
609
+ var style = styleFor(view);
610
+
611
+ equals(style[SC.browser.experimentalStyleNameFor('transform')], 'rotateX(45deg)', 'transform should only have rotateX');
612
+ equals(style.top, '100px', 'should not accelerate top');
613
+
614
+ start();
615
+ }, 5);
616
+ });
617
+
618
+ test("callbacks should work properly with acceleration", function () {
619
+ stop(1000);
620
+
621
+ SC.run(function () {
622
+ view.animate({ top: 100, left: 100, scale: 2 }, { duration: 0.25 }, function () {
623
+ ok(true);
624
+
625
+ start();
626
+ });
627
+ });
628
+ });
629
+
630
+ test("should not add animation for properties that have the same value as existing layout", function () {
631
+ var callbacks = 0;
632
+
633
+ SC.RunLoop.begin();
634
+ // we set width to the same value, but we change height
635
+ view.animate({width: 100, height: 50}, { duration: 0.5 }, function () { callbacks++; });
636
+ SC.RunLoop.end();
637
+
638
+ ok(callbacks === 0, "precond - callback should not have been run yet");
639
+
640
+ stop(2000);
641
+
642
+ // we need to test changing the width at a later time
643
+ setTimeout(function () {
644
+ start();
645
+
646
+ equals(callbacks, 1, "callback should have been run once, for height change");
647
+
648
+ SC.RunLoop.begin();
649
+ view.animate('width', 50, { duration: 0.5 });
650
+ SC.RunLoop.end();
651
+
652
+ equals(callbacks, 1, "callback should still have only been called once, even though width has now been animated");
653
+ }, 1000);
654
+ });
655
+
656
+ test("Test that cancelAnimation() removes the animation style and fires the callback with isCancelled set.", function () {
657
+ stop(2000);
658
+
659
+ SC.run(function () {
660
+ view.animate({ left: 100, top: 100, width: 400 }, { duration: 0.5 }, function (data) {
661
+ ok(data.isCancelled, "The isCancelled property of the data should be true.");
662
+ });
663
+ });
664
+
665
+ setTimeout(function () {
666
+ SC.run(function () {
667
+ var style = styleFor(view),
668
+ transform = style[SC.browser.experimentalStyleNameFor('transform')];
669
+ transform = transform.match(/\d+/g);
670
+
671
+ // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
672
+ equals(transform[0], '100', "Test translateX after animate.");
673
+ equals(transform[1], '100', "Test translateY after animate.");
674
+
675
+ equals(transitionFor(view), SC.browser.experimentalCSSNameFor('transform') + ' 0.5s ease 0s, width 0.5s ease 0s', 'Tests the CSS transition property');
676
+
677
+ equals(style.left, '0px', 'Tests the left style after animate');
678
+ equals(style.top, '0px', 'Tests the top style after animate');
679
+ equals(style.width, '400px', 'Tests the width style after animate');
680
+
681
+ view.cancelAnimation();
682
+ });
683
+ }, 250);
684
+
685
+ setTimeout(function () {
686
+ var style = styleFor(view);
687
+ equals(style.width, '400px', 'Tests the width style after cancel');
688
+
689
+ var transform = style[SC.browser.experimentalStyleNameFor('transform')];
690
+ transform = transform.match(/\d+/g);
691
+
692
+ equals(transform[0], '100', "Test translateX after cancel.");
693
+ equals(transform[1], '100', "Test translateY after cancel.");
694
+
695
+ equals(transitionFor(view), '', 'Tests that there is no CSS transition property after cancel');
696
+
697
+ start();
698
+ }, 350);
699
+ });
700
+
701
+ test("Test that cancelAnimation(SC.LayoutState.CURRENT) removes the animation style, stops at the current position and fires the callback with isCancelled set.", function () {
702
+ stop(2000);
703
+
704
+
705
+ SC.run(function () {
706
+ view.animate({ left: 200, top: 200, width: 400 }, { duration: 1 }, function (data) {
707
+ ok(data.isCancelled, "The isCancelled property of the data should be true.");
708
+ });
709
+ });
710
+
711
+ setTimeout(function () {
712
+ SC.run(function () {
713
+ var style = styleFor(view),
714
+ transform = style[SC.browser.experimentalStyleNameFor('transform')];
715
+ transform = transform.match(/\d+/g);
716
+
717
+ // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
718
+ equals(transform[0], '200', "Test translateX after animate.");
719
+ equals(transform[1], '200', "Test translateY after animate.");
720
+ equals(transitionFor(view), SC.browser.experimentalCSSNameFor('transform') + ' 1s ease 0s, width 1s ease 0s', 'Tests the CSS transition property');
721
+
722
+ equals(style.left, '0px', 'Tests the left style after animate');
723
+ equals(style.top, '0px', 'Tests the top style after animate');
724
+ equals(style.width, '400px', 'Tests the width style after animate');
409
725
 
410
- test("should warn if multiple callbacks for transitions");
726
+ view.cancelAnimation(SC.LayoutState.CURRENT);
727
+ });
728
+ }, 250);
411
729
 
730
+ setTimeout(function () {
731
+ var style = styleFor(view),
732
+ layout = view.get('layout');
733
+
734
+ equals(transitionFor(view), '', 'Tests that there is no CSS transition property after cancel');
735
+
736
+ // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
737
+ ok((layout.left > 0) && (layout.left < 200), 'Tests the left style, %@, after cancel is greater than 0 and less than 200'.fmt(style.left));
738
+ ok((layout.top > 0) && (layout.top < 200), 'Tests the top style, %@, after cancel is greater than 0 and less than 200'.fmt(style.top));
739
+ ok((parseInt(style.width, 10) > 100) && (parseInt(style.width, 10) < 400), 'Tests the width style, %@, after cancel is greater than 100 and less than 400'.fmt(style.width));
740
+ start();
741
+ }, 750);
742
+ });
743
+
744
+ test("Test that cancelAnimation(SC.LayoutState.START) removes the animation style, goes back to the start position and fires the callback with isCancelled set.", function () {
745
+ stop(2000);
746
+
747
+ // expect(12);
748
+
749
+ SC.run(function () {
750
+ view.animate({ left: 100, top: 100, width: 400 }, { duration: 0.5 }, function (data) {
751
+ ok(data.isCancelled, "The isCancelled property of the data should be true.");
752
+ });
753
+ });
754
+
755
+ setTimeout(function () {
756
+ SC.run(function () {
757
+ var style = styleFor(view),
758
+ transform = style[SC.browser.experimentalStyleNameFor('transform')];
759
+ equals(style.left, '0px', 'Tests the left style after animate');
760
+ equals(style.top, '0px', 'Tests the top style after animate');
761
+ equals(style.width, '400px', 'Tests the width style after animate');
762
+
763
+ transform = transform.match(/\d+/g);
764
+
765
+ // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
766
+ equals(transform[0], '100', "Test translateX after animate.");
767
+ equals(transform[1], '100', "Test translateY after animate.");
768
+
769
+ equals(transitionFor(view), SC.browser.experimentalCSSNameFor('transform') + ' 0.5s ease 0s, width 0.5s ease 0s', 'Tests the CSS transition property');
770
+ view.cancelAnimation(SC.LayoutState.START);
771
+ });
772
+ }, 250);
773
+
774
+ setTimeout(function () {
775
+ var style = styleFor(view);
776
+
777
+ var transform = style[SC.browser.experimentalStyleNameFor('transform')];
778
+ transform = transform.match(/\d+/g);
779
+
780
+ equals(transitionFor(view), '', 'Tests that there is no CSS transition property after cancel');
781
+
782
+ // We need to check these separately because in some cases we'll also have translateZ, this way we don't have to worry about it
783
+ equals(transform[0], '0', "Test translateX after cancel.");
784
+ equals(transform[1], '0', "Test translateY after cancel.");
785
+ equals(style.width, '100px', 'Tests the width style after cancel');
786
+ start();
787
+ }, 350);
788
+ });
789
+ } else {
790
+ test("This platform appears to not support CSS 3D transforms.");
791
+ }
792
+ } else {
793
+ test("This platform appears to not support CSS transitions.");
412
794
  }
413
795
 
414
796
  module("ANIMATION WITHOUT TRANSITIONS", {
415
- setup: function(){
797
+ setup: function () {
416
798
  commonSetup.setup();
417
799
  SC.platform.supportsCSSTransitions = NO;
418
800
  },
419
801
 
420
- teardown: function(){
802
+ teardown: function () {
421
803
  commonSetup.teardown();
422
804
  SC.platform.supportsCSSTransitions = originalSupportsTransitions;
423
805
  }
424
806
  });
425
807
 
426
- test("should update layout", function(){
427
- view.animate('left', 100, 1);
428
- equals(100, view.get('layout').left, 'left is 100');
808
+ test("should update layout", function () {
809
+ stop(2000);
810
+ SC.RunLoop.begin();
811
+ view.animate('left', 100, { duration: 1 });
812
+ SC.RunLoop.end();
813
+
814
+ setTimeout(function () {
815
+ equals(view.get('layout').left, 100, 'left is 100');
816
+ start();
817
+ }, 5);
429
818
  });
430
819
 
431
- test("should still run callback", function(){
820
+ test("should still run callback", function () {
432
821
  stop(2000);
433
822
 
434
823
  expect(1);
435
824
 
436
825
  SC.RunLoop.begin();
437
- view.animate({ top: 200, left: 100 }, 1, function() {
826
+ view.animate({ top: 200, left: 100 }, { duration: 1 }, function () {
438
827
  ok(true, "callback called");
439
828
  start();
440
829
  });
441
830
  SC.RunLoop.end();
442
831
  });
832
+
833
+ module("Animating in the next run loop", commonSetup);
834
+
835
+ test("Calling animate while flusing the invokeNext queue should not throw an exception", function () {
836
+ try {
837
+ SC.run(function () {
838
+ view.invokeNext(function () {
839
+ this.animate({ top: 250 }, { duration: 1 });
840
+ });
841
+
842
+ view.animate({ top: 200 }, { duration: 1 });
843
+ });
844
+
845
+ SC.run(function () {
846
+ // The first call to _animate and the function with animate in it run.
847
+ });
848
+
849
+ SC.run(function () {
850
+ // The second call to _animate from the function with animate in it.
851
+ });
852
+ } catch (ex) {
853
+ ok(false, "failure");
854
+ }
855
+
856
+ ok(true, "success");
857
+ });