sproutcore 1.5.0.pre.4 → 1.5.0.pre.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. data/CHANGELOG +6 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/Buildfile +1 -1
  4. data/lib/buildtasks/build.rake +14 -6
  5. data/lib/buildtasks/manifest.rake +171 -72
  6. data/lib/frameworks/sproutcore/Buildfile +3 -5
  7. data/lib/frameworks/sproutcore/CHANGELOG.md +9 -0
  8. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +2 -1
  9. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +7 -17
  10. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +7 -1
  11. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +14 -1
  12. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +0 -2
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +1 -1
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +14 -3
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +1 -1
  16. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -2
  17. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +6 -0
  18. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
  19. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  20. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +49 -4
  21. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +8 -0
  22. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +46 -1
  23. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +32 -5
  24. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +32 -6
  25. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +31 -3
  26. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +15 -3
  27. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +28 -7
  28. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
  29. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +20 -1
  30. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +2 -4
  31. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +40 -34
  32. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +35 -0
  33. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +43 -0
  34. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +47 -0
  35. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +6 -16
  36. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +21 -0
  37. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +41 -1
  38. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +128 -0
  39. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -3
  40. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +13 -1
  41. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +28 -0
  42. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -0
  43. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +51 -0
  44. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
  45. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
  46. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +28 -0
  47. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +9 -1
  48. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +148 -134
  49. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -0
  50. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +30 -3
  51. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +9 -0
  52. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +52 -4
  53. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +2 -1
  54. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +36 -3
  55. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +1 -1
  56. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +9 -1
  57. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +15 -4
  58. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -6
  59. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -2
  60. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +7 -0
  61. data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -2
  62. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -1
  63. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
  64. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -9
  65. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  66. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +2 -0
  67. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  68. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +25 -1
  69. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +64 -0
  70. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -27
  71. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +42 -0
  72. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +62 -0
  73. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -8
  74. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +12 -0
  75. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +48 -1
  76. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +19 -0
  77. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +2 -0
  78. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +11 -5
  79. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +152 -74
  80. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +12 -9
  81. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1476 -176
  82. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -2
  83. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +227 -32
  84. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +11 -11
  85. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1 -1
  86. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +10 -0
  87. data/lib/frameworks/sproutcore/lib/index.rhtml +30 -8
  88. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +4 -4
  89. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +4 -4
  90. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +4 -4
  91. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +4 -4
  92. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +4 -0
  93. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +5 -1
  94. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +11 -3
  95. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -8
  96. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +2 -4
  97. data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
  98. data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
  99. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
  100. data/lib/gen/project/templates/@filename@/Buildfile +7 -2
  101. data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
  102. data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
  103. data/lib/sproutcore/builders.rb +2 -0
  104. data/lib/sproutcore/builders/chance.rb +64 -0
  105. data/lib/sproutcore/builders/chance_file.rb +59 -0
  106. data/lib/sproutcore/builders/combine.rb +0 -45
  107. data/lib/sproutcore/builders/html.rb +1 -1
  108. data/lib/sproutcore/builders/minify.rb +5 -17
  109. data/lib/sproutcore/builders/module.rb +2 -2
  110. data/lib/sproutcore/builders/string_wrapper.rb +13 -15
  111. data/lib/sproutcore/helpers.rb +1 -1
  112. data/lib/sproutcore/helpers/minifier.rb +56 -0
  113. data/lib/sproutcore/helpers/static_helper.rb +86 -40
  114. data/lib/sproutcore/models/generator.rb +16 -0
  115. data/lib/sproutcore/models/manifest_entry.rb +8 -1
  116. data/lib/sproutcore/models/target.rb +101 -33
  117. data/lib/sproutcore/tools.rb +0 -7
  118. data/lib/sproutcore/tools/build.rb +2 -37
  119. data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +100 -0
  120. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
  121. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
  122. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
  123. data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
  124. data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
  125. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +37 -4
  126. data/spec/buildtasks/manifest/spec_helper.rb +4 -0
  127. data/spec/fixtures/builder_tests/Buildfile +11 -9
  128. data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
  129. data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
  130. data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
  131. data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
  132. data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
  133. data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
  134. data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
  135. data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
  136. data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
  137. data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
  138. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
  139. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
  140. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
  141. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
  142. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
  143. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
  144. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
  145. data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
  146. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
  147. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
  148. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
  149. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
  150. data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
  151. data/spec/fixtures/real_world/Buildfile +11 -1
  152. data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
  153. data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
  154. data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
  155. data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
  156. data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
  157. data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
  158. data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
  159. data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
  160. data/spec/lib/builders/chance_file_spec.rb +63 -0
  161. data/spec/lib/builders/chance_spec.rb +81 -0
  162. data/spec/lib/builders/module_spec.rb +133 -0
  163. data/spec/lib/helpers/minifier.rb +31 -0
  164. data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
  165. data/vendor/chance/lib/chance/imagers/data_url.rb +68 -17
  166. data/vendor/chance/lib/chance/instance.rb +55 -30
  167. data/vendor/chance/lib/chance/parser.rb +1 -1
  168. data/vendor/chance/lib/chance/slicing.rb +39 -3
  169. metadata +52 -7
  170. data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +0 -163
  171. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +0 -44
  172. data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
  173. data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
  174. data/spec/lib/builders/bundle_spec.rb +0 -295
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ *SproutCore 1.5.0.pre.4.1 (March 1, 2011)*
2
+
3
+ * Fix bug in SC.TemplateCollectionView that was causing Todos demo not to work
4
+ in Firefox.
5
+ * Added default CSS for HTML-based projects.
6
+
1
7
  *SproutCore 1.5.0.pre.4 (February 28, 2011)*
2
8
 
3
9
  * We are beginning to move API that we don't believe will be ready before 1.5
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 5
4
- :patch: 0.pre.4
4
+ :patch: 0.pre.4.1
data/lib/Buildfile CHANGED
@@ -71,7 +71,7 @@ mode :all do
71
71
 
72
72
  # name a framework to use as the theme. will be included in required
73
73
  # frameworks automatically if found.
74
- :theme => 'sproutcore/standard_theme',
74
+ :theme => 'sproutcore/ace',
75
75
 
76
76
  # use default bootstrap framework
77
77
  :bootstrap_inline => 'sproutcore/bootstrap:javascript',
@@ -20,16 +20,19 @@ namespace :build do
20
20
  SC::Builder::Stylesheet.build env[:entry], env[:dst_path]
21
21
  end
22
22
 
23
+ desc "builds an image file"
24
+ build_task :image do |task, env|
25
+ # by default, just copy images
26
+ require 'fileutils'
27
+ FileUtils.mkdir_p(File.dirname(env[:dst_path]))
28
+ FileUtils.cp_r(env[:src_path], env[:dst_path])
29
+ end
30
+
23
31
  desc "converts a Handlebars file to JavaScript"
24
32
  build_task :handlebars do |task, env|
25
33
  SC::Builder::Handlebars.build env[:entry], env[:dst_path]
26
34
  end
27
35
 
28
- desc "stub task for images"
29
- build_task :image do |task, env|
30
-
31
- end
32
-
33
36
  desc "builds a single sass file"
34
37
  build_task :sass do |task, env|
35
38
  SC::Builder::Sass.build env[:entry], env[:dst_path]
@@ -67,7 +70,12 @@ namespace :build do
67
70
 
68
71
  desc "adds all the css and image files in the target to chance and lets it run on a per-target basis"
69
72
  build_task :chance do |task, env|
70
- SC::Builder::Combine.buildWithChance env[:entry], env[:dst_path]
73
+ SC::Builder::Chance.build env[:entry], env[:dst_path]
74
+ end
75
+
76
+ desc "extracts a file from the Chance entries"
77
+ build_task :chance_file do |task, env|
78
+ SC::Builder::ChanceFile.build env[:entry], env[:dst_path]
71
79
  end
72
80
 
73
81
  desc "wraps the entry into a string for prefetched modules"
@@ -202,7 +202,7 @@ namespace :manifest do
202
202
  namespace :prepare_build_tasks do
203
203
 
204
204
  desc "main entrypoint for preparing all build tasks. This should invoke all needed tasks"
205
- task :all => %w(css handlebars javascript module_info sass scss less combine string_wrap minify string_wrap html strings tests packed)
205
+ task :all => %w(css handlebars javascript module_info sass less combine string_wrap minify string_wrap html strings tests packed)
206
206
 
207
207
  desc "executes prerequisites needed before one of the subtasks can be invoked. All subtasks that have this as a prereq"
208
208
  task :setup => %w(manifest:catalog manifest:hide_buildfiles manifest:localize)
@@ -283,7 +283,6 @@ namespace :manifest do
283
283
  :entry_type => :javascript
284
284
  entry.discover_build_directives!
285
285
  end
286
-
287
286
  end
288
287
 
289
288
  desc "scans for css files, creates a transform and annotates them"
@@ -291,26 +290,53 @@ namespace :manifest do
291
290
  manifest = env[:manifest]
292
291
  config = env[:target].config
293
292
 
294
- if config[:no_chance]
295
- # select all original entries with with ext of css
296
- entries = manifest.entries.select do |e|
297
- e.original? && e[:ext] == 'css'
298
- end
293
+ # select all original entries with with ext of css
294
+ entries = manifest.entries.select do |e|
295
+ e.original? && ['css', 'scss'].include?(e[:ext])
296
+ end
299
297
 
300
- # add transform & tag with build directives.
301
- entries.each do |entry|
302
- entry = manifest.add_transform entry,
303
- :filename => ['source', entry[:filename]].join('/'),
304
- :build_path => File.join(manifest[:build_root], 'source', entry[:filename]),
305
- :url => [manifest[:url_root], 'source', entry[:filename]].join("/"),
306
- :build_task => 'build:css',
307
- :resource => 'stylesheet',
308
- :entry_type => :css
309
- entry.discover_build_directives!
310
- end
298
+ # add transform & tag with build directives.
299
+ entries.each do |entry|
300
+ filename = entry[:filename]
301
+
302
+ # We want it to appear as CSS
303
+ filename.gsub! /\.scss$/, '.css'
304
+
305
+ entry = manifest.add_transform entry,
306
+ :filename => ['source', filename].join('/'),
307
+ :build_path => File.join(manifest[:build_root], 'source', entry[:filename]),
308
+ :url => [manifest[:url_root], 'source', entry[:filename]].join("/"),
309
+ :build_task => 'build:css',
310
+ :resource => 'stylesheet',
311
+ :entry_type => :css,
312
+ :ext => 'css',
313
+ :from_scss => (entry[:ext] == 'scss') # for testing
314
+ entry.discover_build_directives!
311
315
  end
312
316
  end
313
317
 
318
+ desc "scans for image files, creates a transform and annotates them"
319
+ task :images => :setup do |task, env|
320
+ manifest = env[:manifest]
321
+ config = env[:target].config
322
+
323
+ # select all original entries with with ext of png
324
+ entries = manifest.entries.select do |e|
325
+ e.original? && e[:ext] == 'png'
326
+ end
327
+
328
+ # add transform & tag with build directives.
329
+ entries.each do |entry|
330
+ entry = manifest.add_transform entry,
331
+ :filename => ['source', entry[:filename]].join('/'),
332
+ :build_path => File.join(manifest[:build_root], 'source', entry[:filename]),
333
+ :url => [manifest[:url_root], 'source', entry[:filename]].join("/"),
334
+ :build_task => 'build:image',
335
+ :entry_type => :image
336
+ end
337
+
338
+ end
339
+
314
340
  desc "scans for Handlebars templates and converts them to JavaScript"
315
341
  task :handlebars => %w(setup) do |task, env|
316
342
  manifest = env[:manifest]
@@ -337,18 +363,20 @@ namespace :manifest do
337
363
  config = CONFIG
338
364
 
339
365
  # Populate module_info for all deferred_modules frameworks.
340
- # Add :debug_deferred_modules and :test_deferred_modules depending on
366
+ # Add :debug_required and :test_required depending on
341
367
  # the build mode.
342
368
  debug = config[:load_debug]
343
369
  test = config[:load_tests]
344
370
 
345
371
  # find all of the modules required by this target
346
372
  targets = target.modules({ :debug => debug, :test => test, :theme => true })
347
- targets.each do |target|
348
- target.manifest_for(manifest.variation).build!
349
- end
350
373
 
351
374
  unless targets.size == 0
375
+
376
+ targets.each do |target|
377
+ target.manifest_for(manifest.variation).build!
378
+ end
379
+
352
380
  manifest.add_entry 'module_info.js',
353
381
  :dynamic => true, # required to get correct timestamp for cacheable_url
354
382
  :build_task => 'build:module_info',
@@ -366,50 +394,127 @@ namespace :manifest do
366
394
 
367
395
  task :module_info => :tests # IMPORTANT! to avoid JS including unit tests.
368
396
 
369
- desc "generates combined entries for javascript and css"
370
- task :combine => %w(setup css javascript module_info sass scss less) do |task, env|
397
+ desc "generates combined entries for CSS"
398
+ task :chance => %w(setup images javascript module_info css sass less) do |task, env|
399
+ config = CONFIG
400
+ manifest = env[:manifest]
401
+
402
+ # the image files will be shared between all css_entries-- that is,
403
+ # all instances of Chance created
404
+ global_chance_entries = []
405
+
406
+ # For each "resource" a separate css entry will be created.
407
+ css_entries = {}
408
+
409
+ manifest.entries.each do |entry|
410
+ # Chance needs to know about image files so it can embed as data URIs in the
411
+ # CSS. For this reason, if Chance is enabled, we need to send entries for image
412
+ # files to the 'build:chance' buildtask.
413
+ is_chance_file = File.extname(entry[:filename]) === '.png'
414
+
415
+ next if entry[:resource].nil? and not is_chance_file
416
+
417
+ if is_chance_file
418
+ global_chance_entries << entry
419
+ elsif entry[:entry_type] == :css
420
+ (css_entries[entry[:resource]] ||= []) << entry
421
+ entry.hide! if config[:combine_stylesheets]
422
+ end
423
+
424
+ end
425
+
426
+ chance_entries = []
427
+
428
+ # We need a collection of source paths for our mhtml and JS files to
429
+ # check mtimes against.
430
+ source_paths = []
431
+
432
+ # build combined CSS entry
433
+ css_entries.each do |resource_name, entries|
434
+ # Send image files to the build task if Chance is being used
435
+ entries.concat global_chance_entries
436
+
437
+ # Add a composite entry for the combined CSS.
438
+ # Note that we manually hid the CSS entries above, but, if Chance
439
+ # is enabled, we need to keep the images visible so they are still
440
+ # copied into the final product.
441
+ entry = manifest.add_composite resource_name.ext('css'),
442
+ :build_task => 'build:chance',
443
+ :source_entries => entries,
444
+ :hide_entries => false, # We hid entries manually above
445
+ :ordered_entries => SC::Helpers::EntrySorter.sort(entries),
446
+ :entry_type => :css,
447
+ :combined => true
448
+
449
+ chance_entries << entry
450
+
451
+
452
+ # ADD A 2X version
453
+ # Because the @2x file is not a _real_ composite entry, and as such has
454
+ # no true source entries (because we don't want to stage them as that
455
+ # adversely impacts performance), we need to give a set of source paths
456
+ # for the entry to compare mtimes with to know if it needs to update.
457
+ entry_source_paths = entries.map {|e| e[:source_path] }
458
+
459
+ # Rather than run Chance an extra time for 2x, we create a composite entry
460
+ # referencing the chance entry as a source
461
+ manifest.add_entry resource_name + "@2x.css",
462
+ :variation => manifest.variation,
463
+ :build_task => 'build:chance_file',
464
+ :chance_entry => entry,
465
+ :entry_type => :css,
466
+ :combined => true,
467
+ :chance_file => "chance@2x.css",
468
+
469
+ # For cache-busting, we must support timestamped urls, but the entry
470
+ # will be unable to calculate the timestamp for this on its own. So, we
471
+ # must supply the calculated timestamp.
472
+ :timestamp => entry.timestamp,
473
+
474
+ :source_paths => entry_source_paths
475
+
476
+ # We also have a set of all source paths for the chance task. We need
477
+ # to keep it up-to-date so that the MHTML and JS tasks can compare mtimes
478
+ # with the entries.
479
+ source_paths += entry_source_paths
480
+ end
481
+
482
+ manifest.add_entry "__sc_chance.js",
483
+ :build_task => 'build:chance_file',
484
+ :chance_entries => chance_entries,
485
+ :entry_type => :javascript,
486
+ :resource => "javascript",
487
+ :chance_file => "chance.js",
488
+ :timestamp => chance_entries.map {|e| e.timestamp }.max,
489
+ :source_paths => source_paths
490
+
491
+ manifest.add_entry "__sc_chance_mhtml.txt",
492
+ :build_task => 'build:chance_file',
493
+ :chance_entries => chance_entries,
494
+ :entry_type => :mhtml,
495
+ :chance_file => "chance-mhtml.txt",
496
+ :timestamp => chance_entries.map {|e| e.timestamp }.max,
497
+ :source_paths => source_paths
498
+
499
+ end
500
+
501
+ desc "generates combined entries for javascript"
502
+ task :combine => %w(setup chance javascript module_info) do |task, env|
371
503
  config = env[:target].config
372
504
  manifest = env[:manifest]
373
505
  config = CONFIG
374
506
 
375
- chance_types = [
376
- '.css',
377
- '.jpg',
378
- '.png',
379
- '.gif'
380
- ]
381
-
382
- # sort entries...
383
- css_entries = []
384
507
  javascript_entries = {}
508
+
385
509
  manifest.entries.each do |entry|
386
- is_chance_file = false
387
- if not config[:no_chance] and chance_types.include?(File.extname(entry[:filename]))
388
- is_chance_file = true
389
- end
390
-
391
510
  # we can only combine entries with a resource property.
392
- next if entry[:resource].nil? and not is_chance_file
511
+ next if entry[:resource].nil?
393
512
 
394
- # look for CSS or JS type entries
395
- if entry[:entry_type] == :css or (is_chance_file and File.extname(entry[:filename]) == '.css')
396
- css_entries << entry
397
- entry.hide! if config[:combine_stylesheets]
398
- elsif is_chance_file
399
- css_entries << entry
400
- elsif entry[:entry_type] == :javascript
513
+ if entry[:entry_type] == :javascript
401
514
  (javascript_entries[entry[:resource]] ||= []) << entry
402
515
  end
403
516
  end
404
517
 
405
- # build combined CSS entry
406
- manifest.add_composite 'stylesheet.css',
407
- :build_task => config[:no_chance] ? 'build:combine' : 'build:chance',
408
- :source_entries => css_entries,
409
- :hide_entries => false, # we hide entries manually above
410
- :ordered_entries => SC::Helpers::EntrySorter.sort(css_entries),
411
- :entry_type => :css,
412
- :combined => true
413
518
 
414
519
  # build combined JS entry
415
520
  javascript_entries.each do |resource_name, entries|
@@ -424,11 +529,10 @@ namespace :manifest do
424
529
  :entry_type => :javascript,
425
530
  :combined => true
426
531
  end
427
-
428
532
  end
429
533
 
430
534
  desc "Wraps the javascript.js file into a string if the target is a prefetched module"
431
- task :string_wrap => %w(setup css javascript module_info sass scss less combine minify) do |task, env|
535
+ task :string_wrap => %w(setup css javascript module_info sass less combine minify) do |task, env|
432
536
  manifest = env[:manifest]
433
537
  target = env[:target]
434
538
 
@@ -483,36 +587,39 @@ namespace :manifest do
483
587
  target = env[:target]
484
588
  manifest = env[:manifest]
485
589
 
486
- # don't add packed entries for apps.
590
+ %w(stylesheet stylesheet@2x).each {|resource|
487
591
 
488
592
  # Handle CSS version. get all required targets and find their
489
593
  # stylesheet.css. Build packed css from that.
490
- targets = target.expand_required_targets(:theme=>true) + [target]
594
+ targets = target.expand_required_targets + [target]
491
595
  entries = targets.map do |target|
492
596
  m = target.manifest_for(manifest.variation).build!
493
597
 
494
598
  # need to find the version that is not minified
495
- entry = m.entry_for('stylesheet.css')
599
+ entry = m.entry_for(resource + ".css")
496
600
  entry = entry.source_entry while entry && entry.minified?
497
601
  entry
498
602
  end
499
603
 
500
604
  entries.compact!
501
- manifest.add_composite 'stylesheet-packed.css',
605
+ manifest.add_composite resource + '-packed.css',
502
606
  :build_task => 'build:combine',
503
607
  :source_entries => entries,
504
608
  :hide_entries => false,
505
609
  :entry_type => :css,
506
610
  :combined => true,
507
- :ordered_entries => entries, # orderd by load order
611
+ :ordered_entries => entries, # ordered by load order
508
612
  :targets => targets,
509
613
  :packed => true
510
614
 
615
+ }
616
+
511
617
  end
618
+
512
619
  task :minify => :packed # IMPORTANT: don't want minified version
513
620
 
514
- #Create builder tasks for sass, scss (sass v3) and less in a DRY way
515
- [:sass, :scss, :less].each do |csscompiler|
621
+ #Create builder tasks for sass and less in a DRY way
622
+ [:sass, :less].each do |csscompiler|
516
623
  desc sprintf("create a builder task for all %s files to create css files", csscompiler.to_s)
517
624
  task csscompiler => :setup do |task, env|
518
625
  manifest = env[:manifest]
@@ -575,7 +682,6 @@ namespace :manifest do
575
682
  end
576
683
  (entries_by_resource[entry[:resource]] ||= []) << entry
577
684
  end
578
-
579
685
  end
580
686
 
581
687
  # even if no resource was found for the index.html, add one anyway if
@@ -629,12 +735,11 @@ namespace :manifest do
629
735
  is_hidden = true if (rep_cnt>=2) && !is_pref_lang
630
736
  end
631
737
  end
632
-
633
738
  end
634
739
  end
635
740
 
636
741
  desc "creates transform entries for all css and Js entries to minify them if needed"
637
- task :minify => %w(setup javascript module_info css combine sass scss less) do |task, env|
742
+ task :minify => %w(setup javascript module_info css combine sass less) do |task, env|
638
743
  manifest = env[:manifest]
639
744
  config = CONFIG
640
745
 
@@ -664,9 +769,7 @@ namespace :manifest do
664
769
  :packed => entry.packed? # carry forward
665
770
  end
666
771
  end
667
-
668
772
  end
669
-
670
773
  end
671
774
 
672
775
  desc "adds a loc strings entry that generates a yaml file server-side functions can use"
@@ -691,9 +794,5 @@ namespace :manifest do
691
794
  desc "..."
692
795
  task :image => :setup do
693
796
  end
694
-
695
-
696
797
  end
697
-
698
-
699
798
  end
@@ -81,13 +81,11 @@ config :standard_theme,
81
81
 
82
82
  config :ace,
83
83
  :required => :empty_theme,
84
- :theme_name => 'sc-theme',
84
+ :theme_name => nil,
85
85
  :test_required => ['sproutcore/testing'],
86
86
  :debug_required => ['sproutcore/debug'],
87
87
  :css_theme => 'ace'
88
88
 
89
- # CONFIGURE APPS
90
-
91
89
  # CONFIGURE APPS
92
90
  config :core_tools, :required => [:desktop, :datastore, :animation, :forms]
93
91
 
@@ -100,11 +98,11 @@ config :core_tools, :required => [:desktop, :datastore, :animation, :forms]
100
98
  :required => [:desktop, :datastore, :core_tools],
101
99
  :theme => :ace,
102
100
  :html5_history => true
103
-
101
+
104
102
  # mode :debug do
105
103
  # config app_target, :combine_javascript => false
106
104
  # end
107
-
105
+
108
106
  end
109
107
 
110
108
  config :test_controls, :css_theme => 'ace.test-controls'