sproutcore 1.9.2 → 1.10.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -13,64 +13,64 @@ SC.Function = /** @scope SC.Function.prototype */{
13
13
  /**
14
14
  @see Function.prototype.property
15
15
  */
16
- property: function(fn, keys) {
17
- fn.dependentKeys = SC.$A(keys) ;
18
- var guid = SC.guidFor(fn) ;
19
- fn.cacheKey = "__cache__" + guid ;
20
- fn.lastSetValueKey = "__lastValue__" + guid ;
21
- fn.isProperty = true ;
22
- return fn ;
16
+ property: function (fn, keys) {
17
+ fn.dependentKeys = SC.$A(keys);
18
+ var guid = SC.guidFor(fn);
19
+ fn.cacheKey = "__cache__" + guid;
20
+ fn.lastSetValueKey = "__lastValue__" + guid;
21
+ fn.isProperty = true;
22
+ return fn;
23
23
  },
24
24
 
25
25
  /**
26
26
  @see Function.prototype.cacheable
27
27
  */
28
- cacheable: function(fn, aFlag) {
29
- fn.isProperty = true ; // also make a property just in case
30
- if (!fn.dependentKeys) fn.dependentKeys = [] ;
31
- fn.isCacheable = (aFlag === undefined) ? true : aFlag ;
32
- return fn ;
28
+ cacheable: function (fn, aFlag) {
29
+ fn.isProperty = true; // also make a property just in case
30
+ if (!fn.dependentKeys) fn.dependentKeys = [];
31
+ fn.isCacheable = (aFlag === undefined) ? true : aFlag;
32
+ return fn;
33
33
  },
34
34
 
35
35
  /**
36
36
  @see Function.prototype.idempotent
37
37
  */
38
- idempotent: function(fn, aFlag) {
38
+ idempotent: function (fn, aFlag) {
39
39
  fn.isProperty = true; // also make a property just in case
40
- if (!fn.dependentKeys) this.dependentKeys = [] ;
41
- fn.isVolatile = (aFlag === undefined) ? true : aFlag ;
42
- return fn ;
40
+ if (!fn.dependentKeys) this.dependentKeys = [];
41
+ fn.isVolatile = (aFlag === undefined) ? true : aFlag;
42
+ return fn;
43
43
  },
44
44
 
45
45
  /**
46
46
  @see Function.prototype.enhance
47
47
  */
48
- enhance: function(fn) {
48
+ enhance: function (fn) {
49
49
  fn.isEnhancement = true;
50
- return fn ;
50
+ return fn;
51
51
  },
52
52
 
53
53
  /**
54
54
  @see Function.prototype.observes
55
55
  */
56
- observes: function(fn, propertyPaths) {
56
+ observes: function (fn, propertyPaths) {
57
57
  // sort property paths into local paths (i.e just a property name) and
58
58
  // full paths (i.e. those with a . or * in them)
59
- var loc = propertyPaths.length, local = null, paths = null ;
60
- while(--loc >= 0) {
61
- var path = propertyPaths[loc] ;
59
+ var loc = propertyPaths.length, local = null, paths = null;
60
+ while (--loc >= 0) {
61
+ var path = propertyPaths[loc];
62
62
  // local
63
- if ((path.indexOf('.')<0) && (path.indexOf('*')<0)) {
64
- if (!local) local = fn.localPropertyPaths = [] ;
63
+ if ((path.indexOf('.') < 0) && (path.indexOf('*') < 0)) {
64
+ if (!local) local = fn.localPropertyPaths = [];
65
65
  local.push(path);
66
66
 
67
67
  // regular
68
68
  } else {
69
- if (!paths) paths = fn.propertyPaths = [] ;
70
- paths.push(path) ;
69
+ if (!paths) paths = fn.propertyPaths = [];
70
+ paths.push(path);
71
71
  }
72
72
  }
73
- return fn ;
73
+ return fn;
74
74
  }
75
75
 
76
76
  };
@@ -5,8 +5,8 @@
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
8
- sc_require('mixins/enumerable') ;
9
- sc_require('mixins/observable') ;
8
+ sc_require('mixins/enumerable');
9
+ sc_require('mixins/observable');
10
10
  sc_require('mixins/freezable');
11
11
  sc_require('mixins/copyable');
12
12
 
@@ -20,16 +20,16 @@ sc_require('mixins/copyable');
20
20
  Examples
21
21
  ---
22
22
 
23
- var set = SC.IndexSet.create(ranges) ;
23
+ var set = SC.IndexSet.create(ranges);
24
24
  set.contains(index);
25
25
  set.add(index, length);
26
26
  set.remove(index, length);
27
27
 
28
28
  // uses a backing SC.Array object to return each index
29
- set.forEach(function(object) { .. })
29
+ set.forEach(function (object) { .. })
30
30
 
31
31
  // returns ranges
32
- set.forEachRange(function(start, length) { .. });
32
+ set.forEachRange(function (start, length) { .. });
33
33
 
34
34
  Implementation Notes
35
35
  ---
@@ -46,24 +46,25 @@ sc_require('mixins/copyable');
46
46
  @since SproutCore 1.0
47
47
  */
48
48
  SC.IndexSet = SC.mixin({},
49
- SC.Enumerable, SC.Observable, SC.Freezable, SC.Copyable,
49
+ SC.Observable, SC.Enumerable, SC.Freezable, SC.Copyable,
50
50
  /** @scope SC.IndexSet.prototype */ {
51
51
 
52
52
  /** @private
53
53
  Walks a content array and copies its contents to a new array. For large
54
54
  content arrays this is faster than using slice()
55
55
  */
56
- _sc_sliceContent: function(c) {
56
+ _sc_sliceContent: function (c) {
57
57
  if (c.length < 1000) return c.slice(); // use native when faster
58
58
  var cur = 0, ret = [], next = c[0];
59
59
  while(next !== 0) {
60
- ret[cur] = next ;
61
- cur = (next<0) ? (0-next) : next ;
60
+ ret[cur] = next;
61
+ cur = (next<0) ? (0-next) : next;
62
62
  next = c[cur];
63
63
  }
64
64
  ret[cur] = 0;
65
+
65
66
  this._hint(0, cur, ret); // hints are not copied manually - add them
66
- return ret ;
67
+ return ret;
67
68
  },
68
69
 
69
70
  /**
@@ -73,7 +74,7 @@ SC.IndexSet = SC.mixin({},
73
74
  @param {Number} [length] The length of the range (by default set to 1 if start is a Number)
74
75
  @returns {SC.IndexSet}
75
76
  */
76
- create: function(start, length) {
77
+ create: function (start, length) {
77
78
  var ret = SC.beget(this);
78
79
  ret.initObservable();
79
80
  ret.registerDependentKey('min', '[]');
@@ -84,7 +85,7 @@ SC.IndexSet = SC.mixin({},
84
85
  // This is here because `create` doesn't follow the
85
86
  // idiomatic SC convention of passing in an object literal to `create`.
86
87
  if (start && !(SC.typeOf(start) === SC.T_NUMBER || start.isIndexSet)) {
87
- throw "SC.IndexSet does not accept `%@` as a parameter to `create`. Take a look at the function signature for proper usage.".fmt(start);
88
+ throw new Error("SC.IndexSet does not accept `%@` as a parameter to `create`. Take a look at the function signature for proper usage.".fmt(start));
88
89
  }
89
90
  // @endif
90
91
 
@@ -93,14 +94,14 @@ SC.IndexSet = SC.mixin({},
93
94
  ret._content = this._sc_sliceContent(start._content);
94
95
  ret.max = start.max;
95
96
  ret.length = start.length;
96
- ret.source = start.source ;
97
+ ret.source = start.source;
97
98
 
98
99
  // otherwise just do a regular add
99
100
  } else {
100
101
  ret._content = [0];
101
102
  if (start !== undefined) ret.add(start, length);
102
103
  }
103
- return ret ;
104
+ return ret;
104
105
  },
105
106
 
106
107
  /**
@@ -138,7 +139,7 @@ SC.IndexSet = SC.mixin({},
138
139
 
139
140
  @type Number
140
141
  */
141
- min: function() {
142
+ min: function () {
142
143
  var content = this._content,
143
144
  cur = content[0];
144
145
  return (cur === 0) ? -1 : (cur>0) ? 0 : Math.abs(cur);
@@ -150,7 +151,7 @@ SC.IndexSet = SC.mixin({},
150
151
 
151
152
  @type Number
152
153
  */
153
- firstObject: function() {
154
+ firstObject: function () {
154
155
  return (this.get('length')>0) ? this.get('min') : undefined;
155
156
  }.property(),
156
157
 
@@ -161,18 +162,22 @@ SC.IndexSet = SC.mixin({},
161
162
  @param {Number} index
162
163
  @returns {Number} starting index
163
164
  */
164
- rangeStartForIndex: function(index) {
165
+ rangeStartForIndex: function (index) {
165
166
  var content = this._content,
166
167
  max = this.get('max'),
167
168
  ret, next, accel;
168
169
 
169
170
  // fast cases
170
- if (index >= max) return max ;
171
- if (Math.abs(content[index]) > index) return index ; // we hit a border
171
+ if (index >= max) return max;
172
+ if (Math.abs(content[index]) > index) return index; // we hit a border
172
173
 
173
174
  // use accelerator to find nearest content range
174
175
  accel = index - (index % SC.IndexSet.HINT_SIZE);
175
176
  ret = content[accel];
177
+
178
+ // If there are no hints, we are in the infinite range.
179
+ if (SC.none(ret)) { ret = this._infRange; }
180
+
176
181
  if (ret<0 || ret>index) ret = accel;
177
182
  next = content[ret];
178
183
 
@@ -186,10 +191,10 @@ SC.IndexSet = SC.mixin({},
186
191
  // now step forward through ranges until we find one that includes the
187
192
  // index.
188
193
  while (next < index) {
189
- ret = next ;
194
+ ret = next;
190
195
  next = Math.abs(content[ret]);
191
196
  }
192
- return ret ;
197
+ return ret;
193
198
  },
194
199
 
195
200
  /**
@@ -199,10 +204,10 @@ SC.IndexSet = SC.mixin({},
199
204
  @param {Object} obj another object.
200
205
  @returns {Boolean}
201
206
  */
202
- isEqual: function(obj) {
207
+ isEqual: function (obj) {
203
208
 
204
209
  // optimize for some special cases
205
- if (obj === this) return YES ;
210
+ if (obj === this) return YES;
206
211
  if (!obj || !obj.isIndexSet || (obj.max !== this.max) || (obj.length !== this.length)) return NO;
207
212
 
208
213
  // ok, now we need to actually compare the ranges of the two.
@@ -212,11 +217,11 @@ SC.IndexSet = SC.mixin({},
212
217
  next = lcontent[cur];
213
218
 
214
219
  do {
215
- if (rcontent[cur] !== next) return NO ;
216
- cur = Math.abs(next) ;
220
+ if (rcontent[cur] !== next) return NO;
221
+ cur = Math.abs(next);
217
222
  next = lcontent[cur];
218
223
  } while (cur !== 0);
219
- return YES ;
224
+ return YES;
220
225
  },
221
226
 
222
227
  /**
@@ -226,9 +231,9 @@ SC.IndexSet = SC.mixin({},
226
231
  @param {Number} index index to check
227
232
  @returns {Number} index or -1
228
233
  */
229
- indexBefore: function(index) {
234
+ indexBefore: function (index) {
230
235
 
231
- if (index===0) return -1; // fast path
236
+ if (index === 0) return -1; // fast path
232
237
  index--; // start with previous index
233
238
 
234
239
  var content = this._content,
@@ -236,10 +241,12 @@ SC.IndexSet = SC.mixin({},
236
241
  start = this.rangeStartForIndex(index);
237
242
  if (!content) return null;
238
243
 
244
+ if (!isFinite(start)) return index; // fast path
245
+
239
246
  // loop backwards until we find a range that is in the set.
240
247
  while((start===max) || (content[start]<0)) {
241
- if (start === 0) return -1 ; // nothing before; just quit
242
- index = start -1 ;
248
+ if (start === 0) return -1; // nothing before; just quit
249
+ index = start - 1;
243
250
  start = this.rangeStartForIndex(index);
244
251
  }
245
252
 
@@ -253,19 +260,19 @@ SC.IndexSet = SC.mixin({},
253
260
  @param {Number} index index to check
254
261
  @returns {Number} index or -1
255
262
  */
256
- indexAfter: function(index) {
263
+ indexAfter: function (index) {
257
264
  var content = this._content,
258
265
  max = this.get('max'),
259
- start, next ;
260
- if (!content || (index>=max)) return -1; // fast path
261
- index++; // start with next index
266
+ start, next;
262
267
 
268
+ if (!content || (index >= max)) return -1; // fast path
269
+ index++; // start with next index
263
270
 
264
271
  // loop forwards until we find a range that is in the set.
265
272
  start = this.rangeStartForIndex(index);
266
273
  next = content[start];
267
274
  while(next<0) {
268
- if (next === 0) return -1 ; //nothing after; just quit
275
+ if (next === 0) return -1; //nothing after; just quit
269
276
  index = start = Math.abs(next);
270
277
  next = content[start];
271
278
  }
@@ -280,29 +287,29 @@ SC.IndexSet = SC.mixin({},
280
287
  @param {Number} length optional range length
281
288
  @returns {Boolean}
282
289
  */
283
- contains: function(start, length) {
290
+ contains: function (start, length) {
284
291
  var content, cur, next, rstart, rnext;
285
292
 
286
293
  // normalize input
287
294
  if (length === undefined) {
288
- if (start === null || start === undefined) return NO ;
295
+ if (start === null || start === undefined) return NO;
289
296
 
290
297
  if (typeof start === SC.T_NUMBER) {
291
- length = 1 ;
298
+ length = 1;
292
299
 
293
300
  // if passed an index set, check each receiver range
294
301
  } else if (start && start.isIndexSet) {
295
- if (start === this) return YES ; // optimization
302
+ if (start === this) return YES; // optimization
296
303
 
297
- content = start._content ;
298
- cur = 0 ;
304
+ content = start._content;
305
+ cur = 0;
299
306
  next = content[cur];
300
307
  while (next !== 0) {
301
- if ((next>0) && !this.contains(cur, next-cur)) return NO ;
308
+ if ((next>0) && !this.contains(cur, next-cur)) return NO;
302
309
  cur = Math.abs(next);
303
310
  next = content[cur];
304
311
  }
305
- return YES ;
312
+ return YES;
306
313
 
307
314
  } else {
308
315
  length = start.length;
@@ -311,9 +318,13 @@ SC.IndexSet = SC.mixin({},
311
318
  }
312
319
 
313
320
  rstart = this.rangeStartForIndex(start);
314
- rnext = this._content[rstart];
321
+ if (isFinite(rstart)) {
322
+ rnext = this._content[rstart];
315
323
 
316
- return (rnext>0) && (rstart <= start) && (rnext >= (start+length));
324
+ return (rnext>0) && (rstart <= start) && (rnext >= (start+length));
325
+ } else {
326
+ return true;
327
+ }
317
328
  },
318
329
 
319
330
  /**
@@ -324,27 +335,27 @@ SC.IndexSet = SC.mixin({},
324
335
  @param {Number} length optional range length
325
336
  @returns {Boolean}
326
337
  */
327
- intersects: function(start, length) {
338
+ intersects: function (start, length) {
328
339
  var content, cur, next, lim;
329
340
 
330
341
  // normalize input
331
342
  if (length === undefined) {
332
343
  if (typeof start === SC.T_NUMBER) {
333
- length = 1 ;
344
+ length = 1;
334
345
 
335
346
  // if passed an index set, check each receiver range
336
347
  } else if (start && start.isIndexSet) {
337
- if (start === this) return YES ; // optimization
348
+ if (start === this) return YES; // optimization
338
349
 
339
- content = start._content ;
340
- cur = 0 ;
350
+ content = start._content;
351
+ cur = 0;
341
352
  next = content[cur];
342
353
  while (next !== 0) {
343
- if ((next>0) && this.intersects(cur, next-cur)) return YES ;
354
+ if ((next>0) && this.intersects(cur, next-cur)) return YES;
344
355
  cur = Math.abs(next);
345
356
  next = content[cur];
346
357
  }
347
- return NO ;
358
+ return NO;
348
359
 
349
360
  } else {
350
361
  length = start.length;
@@ -358,11 +369,11 @@ SC.IndexSet = SC.mixin({},
358
369
  lim = start + length;
359
370
  while (cur < lim) {
360
371
  if (next === 0) return NO; // no match and at end!
361
- if ((next > 0) && (next > start)) return YES ; // found a match
372
+ if ((next > 0) && (next > start)) return YES; // found a match
362
373
  cur = Math.abs(next);
363
374
  next = content[cur];
364
375
  }
365
- return NO ; // no match
376
+ return NO; // no match
366
377
  },
367
378
 
368
379
  /**
@@ -373,7 +384,7 @@ SC.IndexSet = SC.mixin({},
373
384
  @param {Number} length optional range length
374
385
  @returns {SC.IndexSet} new index set
375
386
  */
376
- without: function(start, length) {
387
+ without: function (start, length) {
377
388
  if (start === this) return SC.IndexSet.create(); // just need empty set
378
389
  return this.clone().remove(start, length);
379
390
  },
@@ -386,11 +397,11 @@ SC.IndexSet = SC.mixin({},
386
397
  @param {Number} length optional length of range.
387
398
  @returns {SC.IndexSet} receiver
388
399
  */
389
- replace: function(start, length) {
400
+ replace: function (start, length) {
390
401
 
391
402
  if (length === undefined) {
392
403
  if (typeof start === SC.T_NUMBER) {
393
- length = 1 ;
404
+ length = 1;
394
405
  } else if (start && start.isIndexSet) {
395
406
  this._content = this._sc_sliceContent(start._content);
396
407
  this.beginPropertyChanges()
@@ -399,7 +410,7 @@ SC.IndexSet = SC.mixin({},
399
410
  .set('source', start.source)
400
411
  .enumerableContentDidChange();
401
412
  this.endPropertyChanges();
402
- return this ;
413
+ return this;
403
414
 
404
415
  } else {
405
416
  length = start.length;
@@ -410,7 +421,7 @@ SC.IndexSet = SC.mixin({},
410
421
  var oldlen = this.length;
411
422
  this._content.length=1;
412
423
  this._content[0] = 0;
413
- this.length = this.max = 0 ; // reset without notifying since add()
424
+ this.length = this.max = 0; // reset without notifying since add()
414
425
  return this.add(start, length);
415
426
  },
416
427
 
@@ -418,11 +429,11 @@ SC.IndexSet = SC.mixin({},
418
429
  Adds the specified range of indexes to the set. You can also pass another
419
430
  IndexSet to union the contents of the index set with the receiver.
420
431
 
421
- @param {Number} start index, Range, or another IndexSet
422
- @param {Number} length optional length of range.
432
+ @param {Number} start Start index, Range, or another IndexSet
433
+ @param {Number} [length=1] The length of range.
423
434
  @returns {SC.IndexSet} receiver
424
435
  */
425
- add: function(start, length) {
436
+ add: function (start, length) {
426
437
 
427
438
  if (this.isFrozen) throw SC.FROZEN_ERROR;
428
439
 
@@ -435,26 +446,26 @@ SC.IndexSet = SC.mixin({},
435
446
 
436
447
  if (!content) return this; // nothing to do
437
448
 
438
- cur = 0 ;
449
+ cur = 0;
439
450
  next = content[0];
440
451
  while(next !== 0) {
441
452
  if (next>0) this.add(cur, next-cur);
442
453
  cur = next<0 ? 0-next : next;
443
454
  next = content[cur];
444
455
  }
445
- return this ;
456
+ return this;
446
457
 
447
458
  } else if (length === undefined) {
448
459
 
449
460
  if (start === null || start === undefined) {
450
461
  return this; // nothing to do
451
462
  } else if (typeof start === SC.T_NUMBER) {
452
- length = 1 ;
463
+ length = 1;
453
464
  } else {
454
465
  length = start.length;
455
466
  start = start.start;
456
467
  }
457
- } else if (length === null) length = 1 ;
468
+ } else if (length === null) length = 1;
458
469
 
459
470
  // if no length - do nothing.
460
471
  if (length <= 0) return this;
@@ -462,9 +473,9 @@ SC.IndexSet = SC.mixin({},
462
473
  // special case - appending to end of set
463
474
  var max = this.get('max'),
464
475
  oldmax = max,
465
- delta, value ;
476
+ delta, value;
466
477
 
467
- content = this._content ;
478
+ content = this._content;
468
479
 
469
480
  if (start === max) {
470
481
 
@@ -476,8 +487,8 @@ SC.IndexSet = SC.mixin({},
476
487
  // just extend range at end
477
488
  if (next > 0) {
478
489
  delete content[max]; // no 0
479
- content[cur] = max = start + length ;
480
- start = cur ;
490
+ content[cur] = max = start + length;
491
+ start = cur;
481
492
 
482
493
  // previous range was not in set, just tack onto the end
483
494
  } else {
@@ -487,21 +498,21 @@ SC.IndexSet = SC.mixin({},
487
498
  content[start] = max = length;
488
499
  }
489
500
 
490
- content[max] = 0 ;
501
+ content[max] = 0;
491
502
  this.set('max', max);
492
- this.set('length', this.length + length) ;
493
- length = max - start ;
503
+ this.set('length', this.length + length);
504
+ length = max - start;
494
505
 
495
506
  } else if (start > max) {
496
507
  content[max] = 0-start; // empty!
497
- content[start] = start+length ;
508
+ content[start] = start+length;
498
509
  content[start+length] = 0; // set end
499
- this.set('max', start + length) ;
500
- this.set('length', this.length + length) ;
510
+ this.set('max', start + length);
511
+ this.set('length', this.length + length);
501
512
 
502
513
  // affected range goes from starting range to end of content.
503
- length = start + length - max ;
504
- start = max ;
514
+ length = start + length - max;
515
+ start = max;
505
516
 
506
517
  // otherwise, merge into existing range
507
518
  } else {
@@ -509,32 +520,32 @@ SC.IndexSet = SC.mixin({},
509
520
  // find nearest starting range. split or join that range
510
521
  cur = this.rangeStartForIndex(start);
511
522
  next = content[cur];
512
- max = start + length ;
513
- delta = 0 ;
523
+ max = start + length;
524
+ delta = 0;
514
525
 
515
526
  // we are right on a boundary and we had a range or were the end, then
516
527
  // go back one more.
517
528
  if ((start>0) && (cur === start) && (next <= 0)) {
518
529
  cur = this.rangeStartForIndex(start-1);
519
- next = content[cur] ;
530
+ next = content[cur];
520
531
  }
521
532
 
522
533
  // previous range is not in set. splice it here
523
534
  if (next < 0) {
524
- content[cur] = 0-start ;
535
+ content[cur] = 0-start;
525
536
 
526
537
  // if previous range extends beyond this range, splice afterwards also
527
538
  if (Math.abs(next) > max) {
528
539
  content[start] = 0-max;
529
- content[max] = next ;
540
+ content[max] = next;
530
541
  } else content[start] = next;
531
542
 
532
543
  // previous range is in set. merge the ranges
533
544
  } else {
534
- start = cur ;
545
+ start = cur;
535
546
  if (next > max) {
536
- // delta -= next - max ;
537
- max = next ;
547
+ // delta -= next - max;
548
+ max = next;
538
549
  }
539
550
  }
540
551
 
@@ -548,21 +559,21 @@ SC.IndexSet = SC.mixin({},
548
559
  value = content[cur];
549
560
  if (value === 0) {
550
561
  content[max] = 0;
551
- next = max ;
552
- delta += max - cur ;
562
+ next = max;
563
+ delta += max - cur;
553
564
  } else {
554
565
  next = Math.abs(value);
555
566
  if (next > max) {
556
- content[max] = value ;
557
- next = max ;
567
+ content[max] = value;
568
+ next = max;
558
569
  }
559
570
 
560
571
  // ok, cur range is entirely inside top range.
561
572
  // add to delta if needed
562
- if (value < 0) delta += next - cur ;
573
+ if (value < 0) delta += next - cur;
563
574
  }
564
575
 
565
- delete content[cur] ; // and remove range
576
+ delete content[cur]; // and remove range
566
577
  cur = next;
567
578
  }
568
579
 
@@ -570,18 +581,18 @@ SC.IndexSet = SC.mixin({},
570
581
  // merge in also - don't adjust delta because these aren't new indexes
571
582
  if ((cur = content[max]) > 0) {
572
583
  delete content[max];
573
- max = cur ;
584
+ max = cur;
574
585
  }
575
586
 
576
587
  // finally set my own range.
577
- content[start] = max ;
578
- if (max > oldmax) this.set('max', max) ;
588
+ content[start] = max;
589
+ if (max > oldmax) this.set('max', max);
579
590
 
580
591
  // adjust length
581
592
  this.set('length', this.get('length') + delta);
582
593
 
583
594
  // compute hint range
584
- length = max - start ;
595
+ length = max - start;
585
596
  }
586
597
 
587
598
  this._hint(start, length);
@@ -596,7 +607,7 @@ SC.IndexSet = SC.mixin({},
596
607
  @param {Number} length optional length of range.
597
608
  @returns {SC.IndexSet} receiver
598
609
  */
599
- remove: function(start, length) {
610
+ remove: function (start, length) {
600
611
 
601
612
  if (this.isFrozen) throw SC.FROZEN_ERROR;
602
613
 
@@ -606,7 +617,7 @@ SC.IndexSet = SC.mixin({},
606
617
  return this; // nothing to do
607
618
 
608
619
  } else if (typeof start === SC.T_NUMBER) {
609
- length = 1 ;
620
+ length = 1;
610
621
 
611
622
  // if passed an index set, just add each range in the index set.
612
623
  } else if (start.isIndexSet) {
@@ -625,7 +636,7 @@ SC.IndexSet = SC.mixin({},
625
636
  var max = this.get('max'),
626
637
  oldmax = max,
627
638
  content = this._content,
628
- cur, next, delta, value, last ;
639
+ cur, next, delta, value, last;
629
640
 
630
641
  // if we're past the end, do nothing.
631
642
  if (start >= max) return this;
@@ -633,35 +644,44 @@ SC.IndexSet = SC.mixin({},
633
644
  // find nearest starting range. split or join that range
634
645
  cur = this.rangeStartForIndex(start);
635
646
  next = content[cur];
636
- last = start + length ;
637
- delta = 0 ;
647
+ last = start + length;
648
+ delta = 0;
638
649
 
639
650
  // we are right on a boundary and we had a range or were the end, then
640
651
  // go back one more.
641
- if ((start>0) && (cur === start) && (next > 0)) {
652
+ if ((start > 0) && (cur === start) && (next > 0)) {
642
653
  cur = this.rangeStartForIndex(start-1);
643
- next = content[cur] ;
654
+ next = content[cur];
644
655
  }
645
656
 
646
657
  // previous range is in set. splice it here
647
658
  if (next > 0) {
648
- content[cur] = start ;
659
+ content[cur] = start;
649
660
 
650
661
  // if previous range extends beyond this range, splice afterwards also
651
662
  if (next > last) {
652
663
  content[start] = last;
653
- content[last] = next ;
664
+ content[last] = next;
654
665
  } else content[start] = next;
655
666
 
656
667
  // previous range is not in set. merge the ranges
657
668
  } else {
658
- start = cur ;
669
+ start = cur;
659
670
  next = Math.abs(next);
660
671
  if (next > last) {
661
- last = next ;
672
+ last = next;
662
673
  }
663
674
  }
664
675
 
676
+ // If splicing into the infinite range, we have to add hints up to the start
677
+ // of the splice and adjust our pointer to the start of the infinite range.
678
+ if (!isFinite(next)) {
679
+ this._hint(cur, start - cur);
680
+
681
+ // Infinite range
682
+ this._infRange = last;
683
+ }
684
+
665
685
  // at this point there should be clean starting point for the range.
666
686
  // just walk the ranges, adding up the length delta and then removing
667
687
  // the range until we find a range that passes last
@@ -672,21 +692,21 @@ SC.IndexSet = SC.mixin({},
672
692
  value = content[cur];
673
693
  if (value === 0) {
674
694
  content[last] = 0;
675
- next = last ;
695
+ next = last;
676
696
 
677
697
  } else {
678
698
  next = Math.abs(value);
679
699
  if (next > last) {
680
- content[last] = value ;
681
- next = last ;
700
+ content[last] = value;
701
+ next = last;
682
702
  }
683
703
 
684
704
  // ok, cur range is entirely inside top range.
685
705
  // add to delta if needed
686
- if (value > 0) delta += next - cur ;
706
+ if (value > 0) delta += next - cur;
687
707
  }
688
708
 
689
- delete content[cur] ; // and remove range
709
+ delete content[cur]; // and remove range
690
710
  cur = next;
691
711
  }
692
712
 
@@ -694,24 +714,28 @@ SC.IndexSet = SC.mixin({},
694
714
  // merge in also - don't adjust delta because these aren't new indexes
695
715
  if ((cur = content[last]) < 0) {
696
716
  delete content[last];
697
- last = Math.abs(cur) ;
717
+ last = Math.abs(cur);
698
718
  }
699
719
 
700
720
  // set my own range - if the next item is 0, then clear it.
701
721
  if (content[last] === 0) {
702
722
  delete content[last];
703
- content[start] = 0 ;
723
+ content[start] = 0;
704
724
  this.set('max', start); //max has changed
705
725
 
706
726
  } else {
707
- content[start] = 0-last ;
727
+ content[start] = 0-last;
708
728
  }
709
729
 
710
730
  // adjust length
711
- this.set('length', this.get('length') - delta);
731
+ if (isFinite(delta)) {
732
+ this.set('length', this.get('length') - delta);
733
+ } else {
734
+ this.set('length', 0);
735
+ }
712
736
 
713
- // compute hint range
714
- length = last - start ;
737
+ // compute hint range. Constrain it to the length of the content.
738
+ length = Math.min(content.length, last - start);
715
739
 
716
740
  this._hint(start, length);
717
741
  if (delta !== 0) this.enumerableContentDidChange();
@@ -723,28 +747,35 @@ SC.IndexSet = SC.mixin({},
723
747
  pointing to the nearest range start. The passed range must start on a
724
748
  range boundary. It can end anywhere.
725
749
  */
726
- _hint: function(start, length, content) {
750
+ _hint: function (start, length, content) {
727
751
  if (content === undefined) content = this._content;
728
752
 
729
753
  var skip = SC.IndexSet.HINT_SIZE,
730
754
  next = Math.abs(content[start]), // start of next range
731
755
  loc = start - (start % skip) + skip, // next hint loc
732
- lim = start + length ; // stop
756
+ lim = start + length; // stop
733
757
 
734
758
  while (loc < lim) {
735
- // make sure we are in current rnage
759
+ // make sure we are in current range
736
760
  while ((next !== 0) && (next <= loc)) {
737
- start = next ;
738
- next = Math.abs(content[start]) ;
761
+ start = next;
762
+ next = Math.abs(content[start]);
739
763
  }
740
764
 
741
765
  // past end
742
766
  if (next === 0) {
743
767
  delete content[loc];
744
768
 
769
+ } else if (!isFinite(next)) {
770
+ // We can't hint the infinite range the normal way. Instead we have a
771
+ // single pointer to the start of the infinite range that we use when
772
+ // no hints exist.
773
+ this._infRange = start;
774
+ loc = Infinity;
775
+
745
776
  // do not change if on actual boundary
746
777
  } else if (loc !== start) {
747
- content[loc] = start ; // set hint
778
+ content[loc] = start; // set hint
748
779
  }
749
780
 
750
781
  loc += skip;
@@ -754,12 +785,13 @@ SC.IndexSet = SC.mixin({},
754
785
  /**
755
786
  Clears the set
756
787
  */
757
- clear: function() {
788
+ clear: function () {
758
789
  if (this.isFrozen) throw SC.FROZEN_ERROR;
759
790
 
760
791
  var oldlen = this.length;
761
- this._content.length=1;
792
+ this._content.length = 1;
762
793
  this._content[0] = 0;
794
+ this._infRange = null;
763
795
  this.set('length', 0).set('max', 0);
764
796
  if (oldlen > 0) this.enumerableContentDidChange();
765
797
  },
@@ -769,19 +801,19 @@ SC.IndexSet = SC.mixin({},
769
801
 
770
802
  @param {Enumerable} objects The list of ranges you want to add
771
803
  */
772
- addEach: function(objects) {
804
+ addEach: function (objects) {
773
805
  if (this.isFrozen) throw SC.FROZEN_ERROR;
774
806
 
775
807
  this.beginPropertyChanges();
776
- var idx = objects.get('length') ;
808
+ var idx = objects.get('length');
777
809
  if (objects.isSCArray) {
778
- while(--idx >= 0) this.add(objects.objectAt(idx)) ;
810
+ while(--idx >= 0) this.add(objects.objectAt(idx));
779
811
  } else if (objects.isEnumerable) {
780
- objects.forEach(function(idx) { this.add(idx); }, this);
812
+ objects.forEach(function (idx) { this.add(idx); }, this);
781
813
  }
782
814
  this.endPropertyChanges();
783
815
 
784
- return this ;
816
+ return this;
785
817
  },
786
818
 
787
819
  /**
@@ -789,27 +821,27 @@ SC.IndexSet = SC.mixin({},
789
821
 
790
822
  @param {Object...} objects The list of objects you want to remove
791
823
  */
792
- removeEach: function(objects) {
824
+ removeEach: function (objects) {
793
825
  if (this.isFrozen) throw SC.FROZEN_ERROR;
794
826
 
795
827
  this.beginPropertyChanges();
796
828
 
797
- var idx = objects.get('length') ;
829
+ var idx = objects.get('length');
798
830
  if (objects.isSCArray) {
799
- while(--idx >= 0) this.remove(objects.objectAt(idx)) ;
831
+ while(--idx >= 0) this.remove(objects.objectAt(idx));
800
832
  } else if (objects.isEnumerable) {
801
- objects.forEach(function(idx) { this.remove(idx); }, this);
833
+ objects.forEach(function (idx) { this.remove(idx); }, this);
802
834
  }
803
835
 
804
836
  this.endPropertyChanges();
805
837
 
806
- return this ;
838
+ return this;
807
839
  },
808
840
 
809
841
  /**
810
842
  Clones the set into a new set.
811
843
  */
812
- clone: function() {
844
+ clone: function () {
813
845
  return SC.IndexSet.create(this);
814
846
  },
815
847
 
@@ -819,7 +851,7 @@ SC.IndexSet = SC.mixin({},
819
851
 
820
852
  @returns {String}
821
853
  */
822
- inspect: function() {
854
+ inspect: function () {
823
855
  var content = this._content,
824
856
  len = content.length,
825
857
  idx = 0,
@@ -847,20 +879,20 @@ SC.IndexSet = SC.mixin({},
847
879
  @param {Object} target the object to call the callback on
848
880
  @returns {SC.IndexSet} receiver
849
881
  */
850
- forEachRange: function(callback, target) {
882
+ forEachRange: function (callback, target) {
851
883
  var content = this._content,
852
884
  cur = 0,
853
885
  next = content[cur],
854
886
  source = this.source;
855
887
 
856
- if (target === undefined) target = null ;
888
+ if (target === undefined) target = null;
857
889
  while (next !== 0) {
858
890
  if (next > 0) callback.call(target, cur, next - cur, this, source);
859
891
  cur = Math.abs(next);
860
892
  next = content[cur];
861
893
  }
862
894
 
863
- return this ;
895
+ return this;
864
896
  },
865
897
 
866
898
  /**
@@ -873,7 +905,7 @@ SC.IndexSet = SC.mixin({},
873
905
  @param {Object} target
874
906
  @returns {SC.IndexSet} receiver
875
907
  */
876
- forEachIn: function(start, length, callback, target) {
908
+ forEachIn: function (start, length, callback, target) {
877
909
  var content = this._content,
878
910
  cur = 0,
879
911
  idx = 0,
@@ -881,21 +913,21 @@ SC.IndexSet = SC.mixin({},
881
913
  source = this.source,
882
914
  next = content[cur];
883
915
 
884
- if (target === undefined) target = null ;
916
+ if (target === undefined) target = null;
885
917
  while (next !== 0) {
886
- if (cur < start) cur = start ; // skip forward
918
+ if (cur < start) cur = start; // skip forward
887
919
  while((cur < next) && (cur < lim)) {
888
920
  callback.call(target, cur++, idx++, this, source);
889
921
  }
890
922
 
891
923
  if (cur >= lim) {
892
- cur = next = 0 ;
924
+ cur = next = 0;
893
925
  } else {
894
926
  cur = Math.abs(next);
895
927
  next = content[cur];
896
928
  }
897
929
  }
898
- return this ;
930
+ return this;
899
931
  },
900
932
 
901
933
  /**
@@ -905,9 +937,9 @@ SC.IndexSet = SC.mixin({},
905
937
  @param {Number} length optional range length
906
938
  @returns {Number} count of indexes
907
939
  */
908
- lengthIn: function(start, length) {
940
+ lengthIn: function (start, length) {
909
941
 
910
- var ret = 0 ;
942
+ var ret = 0;
911
943
 
912
944
  // normalize input
913
945
  if (length === undefined) {
@@ -915,11 +947,11 @@ SC.IndexSet = SC.mixin({},
915
947
  return 0; // nothing to do
916
948
 
917
949
  } else if (typeof start === SC.T_NUMBER) {
918
- length = 1 ;
950
+ length = 1;
919
951
 
920
952
  // if passed an index set, just add each range in the index set.
921
953
  } else if (start.isIndexSet) {
922
- start.forEachRange(function(start, length) {
954
+ start.forEachRange(function (start, length) {
923
955
  ret += this.lengthIn(start, length);
924
956
  }, this);
925
957
  return ret;
@@ -936,7 +968,7 @@ SC.IndexSet = SC.mixin({},
936
968
  var content = this._content,
937
969
  cur = 0,
938
970
  next = content[cur],
939
- lim = start + length ;
971
+ lim = start + length;
940
972
 
941
973
  while (cur<lim && next !== 0) {
942
974
  if (next>0) {
@@ -946,7 +978,7 @@ SC.IndexSet = SC.mixin({},
946
978
  next = content[cur];
947
979
  }
948
980
 
949
- return ret ;
981
+ return ret;
950
982
  },
951
983
 
952
984
  // ..........................................................
@@ -968,20 +1000,20 @@ SC.IndexSet = SC.mixin({},
968
1000
  @param {Number} startAt optional starting point
969
1001
  @returns {Number} found index or -1 if not in set
970
1002
  */
971
- indexOf: function(object, startAt) {
1003
+ indexOf: function (object, startAt) {
972
1004
  var source = this.source;
973
- if (!source) throw "%@.indexOf() requires source".fmt(this);
1005
+ if (!source) throw new Error("%@.indexOf() requires source".fmt(this));
974
1006
 
975
1007
  var len = source.get('length'),
976
1008
 
977
1009
  // start with the first index in the set
978
1010
  content = this._content,
979
1011
  cur = content[0]<0 ? Math.abs(content[0]) : 0,
980
- idx ;
1012
+ idx;
981
1013
 
982
1014
  while(cur>=0 && cur<len) {
983
1015
  idx = source.indexOf(object, cur);
984
- if (idx<0) return -1 ; // not found in source
1016
+ if (idx<0) return -1; // not found in source
985
1017
  if (this.contains(idx)) return idx; // found in source and in set.
986
1018
  cur = idx+1;
987
1019
  }
@@ -997,19 +1029,19 @@ SC.IndexSet = SC.mixin({},
997
1029
  @param {Number} startAt optional starting point
998
1030
  @returns {Number} found index or -1 if not in set
999
1031
  */
1000
- lastIndexOf: function(object, startAt) {
1032
+ lastIndexOf: function (object, startAt) {
1001
1033
  var source = this.source;
1002
- if (!source) throw "%@.lastIndexOf() requires source".fmt(this);
1034
+ if (!source) throw new Error("%@.lastIndexOf() requires source".fmt(this));
1003
1035
 
1004
1036
  // start with the last index in the set
1005
1037
  var len = source.get('length'),
1006
1038
  cur = this.max-1,
1007
- idx ;
1039
+ idx;
1008
1040
 
1009
1041
  if (cur >= len) cur = len-1;
1010
1042
  while (cur>=0) {
1011
1043
  idx = source.lastIndexOf(object, cur);
1012
- if (idx<0) return -1 ; // not found in source
1044
+ if (idx<0) return -1; // not found in source
1013
1045
  if (this.contains(idx)) return idx; // found in source and in set.
1014
1046
  cur = idx+1;
1015
1047
  }
@@ -1030,16 +1062,16 @@ SC.IndexSet = SC.mixin({},
1030
1062
  @param {Object} target optional content. otherwise uses window
1031
1063
  @returns {SC.IndexSet} receiver
1032
1064
  */
1033
- forEachObject: function(callback, target) {
1065
+ forEachObject: function (callback, target) {
1034
1066
  var source = this.source;
1035
- if (!source) throw "%@.forEachObject() requires source".fmt(this);
1067
+ if (!source) throw new Error("%@.forEachObject() requires source".fmt(this));
1036
1068
 
1037
1069
  var content = this._content,
1038
1070
  cur = 0,
1039
1071
  idx = 0,
1040
1072
  next = content[cur];
1041
1073
 
1042
- if (target === undefined) target = null ;
1074
+ if (target === undefined) target = null;
1043
1075
  while (next !== 0) {
1044
1076
 
1045
1077
  while(cur < next) {
@@ -1050,7 +1082,7 @@ SC.IndexSet = SC.mixin({},
1050
1082
  cur = Math.abs(next);
1051
1083
  next = content[cur];
1052
1084
  }
1053
- return this ;
1085
+ return this;
1054
1086
  },
1055
1087
 
1056
1088
  /**
@@ -1066,9 +1098,9 @@ SC.IndexSet = SC.mixin({},
1066
1098
  match is the only one
1067
1099
  @returns {SC.IndexSet} receiver
1068
1100
  */
1069
- addObject: function(object, firstOnly) {
1101
+ addObject: function (object, firstOnly) {
1070
1102
  var source = this.source;
1071
- if (!source) throw "%@.addObject() requires source".fmt(this);
1103
+ if (!source) throw new Error("%@.addObject() requires source".fmt(this));
1072
1104
 
1073
1105
  var len = source.get('length'),
1074
1106
  cur = 0, idx;
@@ -1077,11 +1109,11 @@ SC.IndexSet = SC.mixin({},
1077
1109
  idx = source.indexOf(object, cur);
1078
1110
  if (idx >= 0) {
1079
1111
  this.add(idx);
1080
- if (firstOnly) return this ;
1112
+ if (firstOnly) return this;
1081
1113
  cur = idx++;
1082
- } else return this ;
1114
+ } else return this;
1083
1115
  }
1084
- return this ;
1116
+ return this;
1085
1117
  },
1086
1118
 
1087
1119
  /**
@@ -1093,8 +1125,8 @@ SC.IndexSet = SC.mixin({},
1093
1125
  match is the only one
1094
1126
  @returns {SC.IndexSet} receiver
1095
1127
  */
1096
- addObjects: function(objects, firstOnly) {
1097
- objects.forEach(function(object) {
1128
+ addObjects: function (objects, firstOnly) {
1129
+ objects.forEach(function (object) {
1098
1130
  this.addObject(object, firstOnly);
1099
1131
  }, this);
1100
1132
  return this;
@@ -1113,9 +1145,9 @@ SC.IndexSet = SC.mixin({},
1113
1145
  match is the only one
1114
1146
  @returns {SC.IndexSet} receiver
1115
1147
  */
1116
- removeObject: function(object, firstOnly) {
1148
+ removeObject: function (object, firstOnly) {
1117
1149
  var source = this.source;
1118
- if (!source) throw "%@.removeObject() requires source".fmt(this);
1150
+ if (!source) throw new Error("%@.removeObject() requires source".fmt(this));
1119
1151
 
1120
1152
  var len = source.get('length'),
1121
1153
  cur = 0, idx;
@@ -1124,11 +1156,11 @@ SC.IndexSet = SC.mixin({},
1124
1156
  idx = source.indexOf(object, cur);
1125
1157
  if (idx >= 0) {
1126
1158
  this.remove(idx);
1127
- if (firstOnly) return this ;
1159
+ if (firstOnly) return this;
1128
1160
  cur = idx+1;
1129
- } else return this ;
1161
+ } else return this;
1130
1162
  }
1131
- return this ;
1163
+ return this;
1132
1164
  },
1133
1165
 
1134
1166
  /**
@@ -1140,8 +1172,8 @@ SC.IndexSet = SC.mixin({},
1140
1172
  match is the only one
1141
1173
  @returns {SC.IndexSet} receiver
1142
1174
  */
1143
- removeObjects: function(objects, firstOnly) {
1144
- objects.forEach(function(object) {
1175
+ removeObjects: function (objects, firstOnly) {
1176
+ objects.forEach(function (object) {
1145
1177
  this.removeObject(object, firstOnly);
1146
1178
  }, this);
1147
1179
  return this;
@@ -1161,37 +1193,41 @@ SC.IndexSet = SC.mixin({},
1161
1193
  LOG_OBSERVING: NO,
1162
1194
 
1163
1195
  /** @private - optimized call to forEach() */
1164
- forEach: function(callback, target) {
1196
+ forEach: function (callback, target) {
1165
1197
  var content = this._content,
1166
1198
  cur = 0,
1167
1199
  idx = 0,
1168
1200
  source = this.source,
1169
1201
  next = content[cur];
1170
1202
 
1171
- if (target === undefined) target = null ;
1203
+ if (target === undefined) target = null;
1172
1204
  while (next !== 0) {
1173
- while(cur < next) {
1174
- callback.call(target, cur++, idx++, this, source);
1205
+ if (isFinite(next)) {
1206
+ while(cur < next) {
1207
+ callback.call(target, cur++, idx++, this, source);
1208
+ }
1209
+ cur = Math.abs(next);
1210
+ next = content[cur];
1211
+ } else {
1212
+ throw new Error("Developer Error: You may not iterate an infinite range in SC.IndexSet.");
1175
1213
  }
1176
- cur = Math.abs(next);
1177
- next = content[cur];
1178
1214
  }
1179
- return this ;
1215
+ return this;
1180
1216
  },
1181
1217
 
1182
1218
  /** @private - support iterators */
1183
- nextObject: function(ignore, idx, context) {
1219
+ nextObject: function (ignore, idx, context) {
1184
1220
  var content = this._content,
1185
1221
  next = context.next,
1186
1222
  max = this.get('max'); // next boundary
1187
1223
 
1188
1224
  // seed.
1189
1225
  if (idx === null) {
1190
- idx = next = 0 ;
1226
+ idx = next = 0;
1191
1227
 
1192
1228
  } else if (idx >= max) {
1193
1229
  delete context.next; // cleanup context
1194
- return null ; // nothing left to do
1230
+ return null; // nothing left to do
1195
1231
 
1196
1232
  } else idx++; // look on next index
1197
1233
 
@@ -1207,17 +1243,17 @@ SC.IndexSet = SC.mixin({},
1207
1243
  return idx;
1208
1244
  },
1209
1245
 
1210
- toString: function() {
1246
+ toString: function () {
1211
1247
  var str = [];
1212
- this.forEachRange(function(start, length) {
1248
+ this.forEachRange(function (start, length) {
1213
1249
  str.push(length === 1 ? start : "%@..%@".fmt(start, start + length - 1));
1214
1250
  }, this);
1215
- return "SC.IndexSet<%@>".fmt(str.join(',')) ;
1251
+ return "SC.IndexSet<%@>".fmt(str.join(','));
1216
1252
  },
1217
1253
 
1218
1254
  max: 0
1219
1255
 
1220
- }) ;
1256
+ });
1221
1257
 
1222
- SC.IndexSet.slice = SC.IndexSet.copy = SC.IndexSet.clone ;
1258
+ SC.IndexSet.slice = SC.IndexSet.copy = SC.IndexSet.clone;
1223
1259
  SC.IndexSet.EMPTY = SC.IndexSet.create().freeze();