sproutcore 1.0.1042 → 1.0.1043
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION.yml +3 -3
- data/doc_templates/sproutcore/publish.js +2 -1
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +8 -3
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +5 -4
- data/frameworks/sproutcore/frameworks/animation/core.js +80 -30
- data/frameworks/sproutcore/frameworks/animation/tests/core.js +26 -1
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +47 -4
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +0 -1
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +9 -2
- data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +331 -122
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +92 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +68 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +191 -90
- data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +0 -97
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +6 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/SproutCore Theme Buttons.psd +0 -0
- data/lib/sproutcore/builders/minify.rb +6 -7
- data/lib/sproutcore/models/target.rb +8 -8
- data/lib/sproutcore/rack/builder.rb +10 -1
- data/lib/sproutcore/tools/build.rb +21 -16
- metadata +4 -2
@@ -9,101 +9,4 @@ SC.RootResponder = SC.RootResponder.extend({
|
|
9
9
|
|
10
10
|
platform: 'mobile',
|
11
11
|
|
12
|
-
/**
|
13
|
-
Setup event listeners for touch events.
|
14
|
-
*/
|
15
|
-
setup: function() {
|
16
|
-
sc_super();
|
17
|
-
this.listenFor('touchstart touchmove touchend touchcancel'.w(), document);
|
18
|
-
},
|
19
|
-
|
20
|
-
touchstart: function(evt) {
|
21
|
-
try {
|
22
|
-
var view = this.targetViewForEvent(evt) ;
|
23
|
-
view = this._touchView = this.sendEvent('touchStart', evt, view) ;
|
24
|
-
if (view && view.respondsTo('touchDragged')) this._touchCanDrag = YES ;
|
25
|
-
} catch (e) {
|
26
|
-
console.log('Exception during touchStart: %@'.fmt(e)) ;
|
27
|
-
this._touchView = null ;
|
28
|
-
this._touchCanDrag = NO ;
|
29
|
-
return NO ;
|
30
|
-
}
|
31
|
-
return view ? evt.hasCustomEventHandling : YES;
|
32
|
-
},
|
33
|
-
|
34
|
-
touchmove: function(evt) {
|
35
|
-
SC.RunLoop.begin();
|
36
|
-
try {
|
37
|
-
var lh = this._lastHovered || [] ;
|
38
|
-
var nh = [] ;
|
39
|
-
var view = this.targetViewForEvent(evt) ;
|
40
|
-
|
41
|
-
// work up the view chain. Notify of touchEntered and
|
42
|
-
// touchMoved if implemented.
|
43
|
-
while(view && (view !== this)) {
|
44
|
-
if (lh.indexOf(view) !== -1) {
|
45
|
-
view.tryToPerform('touchMoved', evt);
|
46
|
-
nh.push(view) ;
|
47
|
-
} else {
|
48
|
-
view.tryToPerform('touchEntered', evt);
|
49
|
-
nh.push(view) ;
|
50
|
-
}
|
51
|
-
|
52
|
-
view = view.get('nextResponder');
|
53
|
-
}
|
54
|
-
|
55
|
-
// now find those views last hovered over that were no longer found
|
56
|
-
// in this chain and notify of mouseExited.
|
57
|
-
for(var loc=0; loc < lh.length; loc++) {
|
58
|
-
view = lh[loc] ;
|
59
|
-
var exited = view.respondsTo('touchExited') ;
|
60
|
-
if (exited && !(nh.indexOf(view) !== -1)) {
|
61
|
-
view.tryToPerform('touchExited',evt);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
this._lastHovered = nh;
|
66
|
-
|
67
|
-
// also, if a touchView exists, call the touchDragged action, if
|
68
|
-
// it exists.
|
69
|
-
if (this._touchView) this._touchView.tryToPerform('touchDragged', evt);
|
70
|
-
} catch (e) {
|
71
|
-
console.log('Exception during touchMove: %@'.fmt(e)) ;
|
72
|
-
}
|
73
|
-
SC.RunLoop.end();
|
74
|
-
return YES ;
|
75
|
-
},
|
76
|
-
|
77
|
-
touchend: function(evt) {
|
78
|
-
try {
|
79
|
-
evt.cancel = NO ;
|
80
|
-
var handler = null, view = this._touchView ;
|
81
|
-
|
82
|
-
// attempt the call only if there's a target.
|
83
|
-
// don't want a touch end going to anyone unless they handled the
|
84
|
-
// touch start...
|
85
|
-
if (view) handler = this.sendEvent('touchEnd', evt, view) ;
|
86
|
-
|
87
|
-
// try whoever's under the mouse if we haven't handle the mouse up yet
|
88
|
-
if (!handler) view = this.targetViewForEvent(evt) ;
|
89
|
-
|
90
|
-
// cleanup
|
91
|
-
this._touchCanDrag = NO; this._touchView = null ;
|
92
|
-
} catch (e) {
|
93
|
-
console.log('Exception during touchEnd: %@'.fmt(e)) ;
|
94
|
-
this._touchCanDrag = NO; this._touchView = null ;
|
95
|
-
return NO ;
|
96
|
-
}
|
97
|
-
return (handler) ? evt.hasCustomEventHandling : YES ;
|
98
|
-
},
|
99
|
-
|
100
|
-
/** @private
|
101
|
-
Handle touch cancel event. Works just like touch end except evt.cancel
|
102
|
-
is set to YES.
|
103
|
-
*/
|
104
|
-
touchcancel: function(evt) {
|
105
|
-
evt.cancel = YES ;
|
106
|
-
return this.touchend(evt);
|
107
|
-
}
|
108
|
-
|
109
12
|
}) ;
|
@@ -1328,6 +1328,7 @@ SC.logChange = function logChange(target, key, value) {
|
|
1328
1328
|
SC.mixin(SC, {
|
1329
1329
|
get: function(object, key) {
|
1330
1330
|
if (!object) return undefined;
|
1331
|
+
if (key === undefined) return this[object];
|
1331
1332
|
if (object.get) return object.get(key);
|
1332
1333
|
return object[key];
|
1333
1334
|
}
|
@@ -126,6 +126,12 @@ test("should return undefined if the provided object is undefined", function() {
|
|
126
126
|
equals(SC.get(undefined, 'key'), undefined);
|
127
127
|
});
|
128
128
|
|
129
|
+
test("should work when object is SC (used in SC.objectForPropertyPath)", function() {
|
130
|
+
equals(SC.objectForPropertyPath('SC.RunLoop'), SC.RunLoop);
|
131
|
+
equals(SC.get('RunLoop'), SC.RunLoop);
|
132
|
+
equals(SC.get(SC, 'RunLoop'), SC.RunLoop);
|
133
|
+
});
|
134
|
+
|
129
135
|
// ..........................................................
|
130
136
|
// SET()
|
131
137
|
//
|
Binary file
|
@@ -35,7 +35,7 @@ module SC
|
|
35
35
|
def build_css(dst_path)
|
36
36
|
a = Regexp.new('^'+MANIFEST.build_root)
|
37
37
|
if dst_path =~ a
|
38
|
-
$to_minify
|
38
|
+
$to_minify << dst_path
|
39
39
|
FileUtils.mkdir_p(File.dirname(dst_path))
|
40
40
|
FileUtils.copy(entry.source_path, dst_path)
|
41
41
|
else
|
@@ -45,7 +45,7 @@ module SC
|
|
45
45
|
filecompress = "java -jar " + jar_path + " --charset utf-8 --line-break 0 --nomunge --preserve-semi --disable-optimizations " + entry.source_path + " -o \"" + dst_path + "\" 2>&1"
|
46
46
|
SC.logger.info 'Compressing CSS with YUI .... '+ dst_path
|
47
47
|
SC.logger.debug `#{filecompress}`
|
48
|
-
|
48
|
+
|
49
49
|
if $?.exitstatus != 0
|
50
50
|
_report_error(output, entry.filename, entry.source_path)
|
51
51
|
SC.logger.fatal("!!!!YUI compressor failed, please check that your css code is valid.")
|
@@ -58,7 +58,7 @@ module SC
|
|
58
58
|
def build_javascript(dst_path)
|
59
59
|
a = Regexp.new('^'+MANIFEST.build_root)
|
60
60
|
if dst_path =~ a
|
61
|
-
$to_minify
|
61
|
+
$to_minify << dst_path
|
62
62
|
FileUtils.mkdir_p(File.dirname(dst_path))
|
63
63
|
FileUtils.copy(entry.source_path, dst_path)
|
64
64
|
else
|
@@ -67,7 +67,7 @@ module SC
|
|
67
67
|
FileUtils.mkdir_p(File.dirname(dst_path)) # make sure loc exists...
|
68
68
|
filecompress = "java -jar " + jar_path + " --charset utf-8 --line-break 80 " + entry.source_path + " -o \"" + dst_path + "\" 2>&1"
|
69
69
|
SC.logger.info 'Compressing with YUI: '+ dst_path + "..."
|
70
|
-
|
70
|
+
|
71
71
|
output = `#{filecompress}` # It'd be nice to just read STDERR, but
|
72
72
|
# I can't find a reasonable, commonly-
|
73
73
|
# installed, works-on-all-OSes solution.
|
@@ -81,7 +81,6 @@ module SC
|
|
81
81
|
|
82
82
|
def build_inline_javascript(dst_path)
|
83
83
|
SC.logger.info 'Compressing inline Javascript with YUI: ' + dst_path + "..."
|
84
|
-
system(yui_command('--line-break 0', dst_path))
|
85
84
|
yui_root = File.expand_path(File.join(LIBPATH, '..', 'vendor', 'yui-compressor'))
|
86
85
|
jar_path = File.join(yui_root, 'yuicompressor-2.4.2.jar')
|
87
86
|
FileUtils.mkdir_p(File.dirname(dst_path)) # make sure loc exists...
|
@@ -89,8 +88,8 @@ module SC
|
|
89
88
|
SC.logger.info 'Compressing with YUI: '+ dst_path + "..."
|
90
89
|
|
91
90
|
output = `#{filecompress}` # It'd be nice to just read STDERR, but
|
92
|
-
|
93
|
-
|
91
|
+
# I can't find a reasonable, commonly-
|
92
|
+
# installed, works-on-all-OSes solution.
|
94
93
|
if $?.exitstatus != 0
|
95
94
|
_report_error(output, entry.filename, entry.source_path)
|
96
95
|
SC.logger.fatal("!!!!YUI compressor failed, please check that your js code is valid")
|
@@ -332,15 +332,15 @@ module SC
|
|
332
332
|
def file_attr(attr_name, path, &block)
|
333
333
|
|
334
334
|
# read cache from disk if needed
|
335
|
-
if @file_attr_cache.nil?
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
end
|
335
|
+
if @file_attr_cache.nil? && File.exists?(file_attr_cache_path)
|
336
|
+
require 'yaml'
|
337
|
+
@file_attr_cache = YAML.load_file file_attr_cache_path
|
338
|
+
|
339
|
+
# Sometimes the file is corrupted, in this case, clear the cache
|
340
|
+
File.delete file_attr_cache_path unless @file_attr_cache
|
342
341
|
end
|
343
|
-
|
342
|
+
@file_attr_cache ||= {}
|
343
|
+
|
344
344
|
path_root = (@file_attr_cache[path] ||= {})
|
345
345
|
attr_info = (path_root[attr_name.to_s] ||= {})
|
346
346
|
attr_mtime = attr_info['mtime'].to_i
|
@@ -322,7 +322,16 @@ module SC
|
|
322
322
|
# a few bug fixes.
|
323
323
|
def mime_type(build_path)
|
324
324
|
ext = File.extname(build_path)
|
325
|
-
|
325
|
+
|
326
|
+
case ext
|
327
|
+
when '.js'
|
328
|
+
'text/javascript'
|
329
|
+
when '.ttf'
|
330
|
+
'font/ttf'
|
331
|
+
else
|
332
|
+
::Rack::Mime.mime_type(ext, 'text/plain')
|
333
|
+
end
|
334
|
+
|
326
335
|
end
|
327
336
|
|
328
337
|
end
|
@@ -6,8 +6,9 @@
|
|
6
6
|
# ===========================================================================
|
7
7
|
|
8
8
|
require File.expand_path(File.join(File.dirname(__FILE__), 'manifest'))
|
9
|
+
require 'pathname'
|
9
10
|
|
10
|
-
$to_minify=
|
11
|
+
$to_minify = []
|
11
12
|
|
12
13
|
module SC
|
13
14
|
class Tools
|
@@ -69,27 +70,31 @@ module SC
|
|
69
70
|
if entries.size > 0
|
70
71
|
info "Building entries for #{manifest.target.target_name}:#{manifest.language}..."
|
71
72
|
|
73
|
+
target_build_root = Pathname.new(manifest.target.project.project_root)
|
72
74
|
entries.each do |entry|
|
73
|
-
|
75
|
+
dst = Pathname.new(entry.build_path).relative_path_from(target_build_root)
|
76
|
+
info " #{entry.filename} -> #{dst}"
|
74
77
|
entry.build!
|
75
78
|
end
|
76
79
|
end
|
77
80
|
end
|
78
|
-
yui_root = File.expand_path(File.join(LIBPATH, '..', 'vendor', 'yui-compressor'))
|
79
|
-
jar_path = File.join(yui_root, 'SCyuicompressor-2.4.2.jar')
|
80
|
-
filecompress = "java -jar " + jar_path + " --charset utf-8 --line-break 80 " + $to_minify + " 2>&1"
|
81
|
-
SC.logger.info filecompress
|
82
|
-
SC.logger.info 'Compressing with YUI: '+ $to_minify + "..."
|
83
81
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
82
|
+
if $to_minify.length > 0
|
83
|
+
yui_root = File.expand_path(File.join(LIBPATH, '..', 'vendor', 'yui-compressor'))
|
84
|
+
jar_path = File.join(yui_root, 'SCyuicompressor-2.4.2.jar')
|
85
|
+
filecompress = "java -jar " + jar_path + " --charset utf-8 --line-break 80 " + $to_minify * ' ' + " 2>&1"
|
86
|
+
SC.logger.info 'Compressing with YUI...'
|
87
|
+
|
88
|
+
output = `#{filecompress}` # It'd be nice to just read STDERR, but
|
89
|
+
# I can't find a reasonable, commonly-
|
90
|
+
# installed, works-on-all-OSes solution.
|
91
|
+
SC.logger.info output
|
92
|
+
if $?.exitstatus != 0
|
93
|
+
SC.logger.fatal(output)
|
94
|
+
SC.logger.fatal("!!!!YUI compressor failed, please check that your js code is valid")
|
95
|
+
SC.logger.fatal("!!!!Failed compressing ... "+ build_root)
|
96
|
+
exit(1)
|
97
|
+
end
|
93
98
|
end
|
94
99
|
end
|
95
100
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sproutcore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1043
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sprout Systems, Inc. Apple Inc. and contributors
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-16 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -696,6 +696,7 @@ files:
|
|
696
696
|
- frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js
|
697
697
|
- frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js
|
698
698
|
- frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js
|
699
|
+
- frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js
|
699
700
|
- frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js
|
700
701
|
- frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js
|
701
702
|
- frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js
|
@@ -933,6 +934,7 @@ files:
|
|
933
934
|
- frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data
|
934
935
|
- frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg
|
935
936
|
- frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg
|
937
|
+
- frameworks/sproutcore/themes/standard_theme/Source/SproutCore Theme Buttons.psd
|
936
938
|
- frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data
|
937
939
|
- frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg
|
938
940
|
- frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg
|