ember-source 1.9.0.beta.4 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of ember-source might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee42423d4ee76d64f5f163acd3821e8c48a6639e
4
- data.tar.gz: 418d9e6706cf0db86ce327632ed7ab305fae5638
3
+ metadata.gz: 052a33bf10608f0891d002cb22da0449771e6ee4
4
+ data.tar.gz: 95242bb387162aad053a261983d7e21afadf8c43
5
5
  SHA512:
6
- metadata.gz: 24a75999742dfbf9374d13a1e3a36fc50235f74ce229c7a162e314728d3362d948d2c9dd9983ff556b07f0b5c3aad4f32f2417b3d1faa9076e6bf1a03c4523de
7
- data.tar.gz: bc92ce0176001654c7b96f5dd3a8b8adb29dcff7069366fb915c4d64d53ab9b49c3bcb07136d405f56c655be7d8177ab5007b048f8ba713c9926e05b826f9889
6
+ metadata.gz: 9666eda04adfed94fb303c9a9e0dbc3440a4baf0c615f82d85b754f6d60fa561d07f494ab5268692c48a9422427b009e04385d12182875aae36551be14a25c6d
7
+ data.tar.gz: 4446210ec7e20ca347fda37bc7eddbacd011e4dee854e0661e695acc9ead25462e676005326f40acbc1b3e64ee6c3a02e81f5ac1cc0f0e4f9e547f861a539005
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.9.0-beta.4
1
+ 1.9.0
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.9.0-beta.4
8
+ * @version 1.9.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -14,6 +14,7 @@ var define, requireModule, require, requirejs, Ember;
14
14
  (function() {
15
15
  Ember = this.Ember = this.Ember || {};
16
16
  if (typeof Ember === 'undefined') { Ember = {}; };
17
+ function UNDEFINED() { }
17
18
 
18
19
  if (typeof Ember.__loader === 'undefined') {
19
20
  var registry = {}, seen = {};
@@ -23,7 +24,11 @@ var define, requireModule, require, requirejs, Ember;
23
24
  };
24
25
 
25
26
  requirejs = require = requireModule = function(name) {
26
- if (seen.hasOwnProperty(name)) { return seen[name]; }
27
+ var s = seen[name];
28
+
29
+ if (s !== undefined) { return seen[name]; }
30
+ if (s === UNDEFINED) { return undefined; }
31
+
27
32
  seen[name] = {};
28
33
 
29
34
  if (!registry[name]) {
@@ -35,34 +40,37 @@ var define, requireModule, require, requirejs, Ember;
35
40
  var callback = mod.callback;
36
41
  var reified = [];
37
42
  var exports;
43
+ var length = deps.length;
38
44
 
39
- for (var i=0, l=deps.length; i<l; i++) {
45
+ for (var i=0; i<length; i++) {
40
46
  if (deps[i] === 'exports') {
41
47
  reified.push(exports = {});
42
48
  } else {
43
- reified.push(requireModule(resolve(deps[i])));
49
+ reified.push(requireModule(resolve(deps[i], name)));
44
50
  }
45
51
  }
46
52
 
47
- var value = callback.apply(this, reified);
48
- return seen[name] = exports || value;
53
+ var value = length === 0 ? callback.call(this) : callback.apply(this, reified);
49
54
 
50
- function resolve(child) {
51
- if (child.charAt(0) !== '.') { return child; }
52
- var parts = child.split("/");
53
- var parentBase = name.split("/").slice(0, -1);
55
+ return seen[name] = exports || (value === undefined ? UNDEFINED : value);
56
+ };
54
57
 
55
- for (var i=0, l=parts.length; i<l; i++) {
56
- var part = parts[i];
58
+ function resolve(child, name) {
59
+ if (child.charAt(0) !== '.') { return child; }
60
+ var parts = child.split("/");
61
+ var parentBase = name.split("/").slice(0, -1);
57
62
 
58
- if (part === '..') { parentBase.pop(); }
59
- else if (part === '.') { continue; }
60
- else { parentBase.push(part); }
61
- }
63
+ for (var i=0, l=parts.length; i<l; i++) {
64
+ var part = parts[i];
62
65
 
63
- return parentBase.join("/");
66
+ if (part === '..') { parentBase.pop(); }
67
+ else if (part === '.') { continue; }
68
+ else { parentBase.push(part); }
64
69
  }
65
- };
70
+
71
+ return parentBase.join("/");
72
+ }
73
+
66
74
  requirejs._eak_seen = registry;
67
75
 
68
76
  Ember.__loader = {define: define, require: require, registry: registry};
@@ -4803,7 +4811,7 @@ define("ember-metal/core",
4803
4811
 
4804
4812
  @class Ember
4805
4813
  @static
4806
- @version 1.9.0-beta.4
4814
+ @version 1.9.0
4807
4815
  */
4808
4816
 
4809
4817
  if ('undefined' === typeof Ember) {
@@ -4830,10 +4838,10 @@ define("ember-metal/core",
4830
4838
  /**
4831
4839
  @property VERSION
4832
4840
  @type String
4833
- @default '1.9.0-beta.4'
4841
+ @default '1.9.0'
4834
4842
  @static
4835
4843
  */
4836
- Ember.VERSION = '1.9.0-beta.4';
4844
+ Ember.VERSION = '1.9.0';
4837
4845
 
4838
4846
  /**
4839
4847
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -9607,34 +9615,40 @@ define("ember-metal/run_loop",
9607
9615
  };
9608
9616
 
9609
9617
  /**
9610
- Provides a useful utility for when integrating with non-Ember libraries
9611
- that provide asynchronous callbacks.
9618
+ Allows you to specify which context to call the specified function in while
9619
+ adding the execution of that function to the Ember run loop. This ability
9620
+ makes this method a great way to asynchronusly integrate third-party libraries
9621
+ into your Ember application.
9612
9622
 
9613
- Ember utilizes a run-loop to batch and coalesce changes. This works by
9614
- marking the start and end of Ember-related Javascript execution.
9623
+ `run.bind` takes two main arguments, the desired context and the function to
9624
+ invoke in that context. Any additional arguments will be supplied as arguments
9625
+ to the function that is passed in.
9615
9626
 
9616
- When using events such as a View's click handler, Ember wraps the event
9617
- handler in a run-loop, but when integrating with non-Ember libraries this
9618
- can be tedious.
9619
-
9620
- For example, the following is rather verbose but is the correct way to combine
9621
- third-party events and Ember code.
9627
+ Let's use the creation of a TinyMCE component as an example. Currently,
9628
+ TinyMCE provides a setup configuration option we can use to do some processing
9629
+ after the TinyMCE instance is initialized but before it is actually rendered.
9630
+ We can use that setup option to do some additional setup for our component.
9631
+ The component itself could look something like the following:
9622
9632
 
9623
9633
  ```javascript
9624
- var that = this;
9625
- jQuery(window).on('resize', function(){
9626
- run(function(){
9627
- that.handleResize();
9628
- });
9634
+ App.RichTextEditorComponent = Ember.Component.extend({
9635
+ initializeTinyMCE: function(){
9636
+ tinymce.init({
9637
+ selector: '#' + this.$().prop('id'),
9638
+ setup: Ember.run.bind(this, this.setupEditor)
9639
+ });
9640
+ }.on('didInsertElement'),
9641
+
9642
+ setupEditor: function(editor) {
9643
+ this.set('editor', editor);
9644
+ editor.on('change', function(){ console.log('content changed!')} );
9645
+ }
9629
9646
  });
9630
9647
  ```
9631
9648
 
9632
- To reduce the boilerplate, the following can be used to construct a
9633
- run-loop-wrapped callback handler.
9634
-
9635
- ```javascript
9636
- jQuery(window).on('resize', run.bind(this, this.handleResize));
9637
- ```
9649
+ In this example, we use Ember.run.bind to bind the setupEditor message to the
9650
+ context of the App.RichTextEditorComponent and to have the invocation of that
9651
+ method be safely handled and excuted by the Ember run loop.
9638
9652
 
9639
9653
  @method bind
9640
9654
  @namespace Ember
@@ -9647,7 +9661,7 @@ define("ember-metal/run_loop",
9647
9661
  when called within an existing loop, no return value is possible.
9648
9662
  @since 1.4.0
9649
9663
  */
9650
- run.bind = function(target, method /* args*/) {
9664
+ run.bind = function(target, method /* args */) {
9651
9665
  var args = slice.call(arguments);
9652
9666
  return function() {
9653
9667
  return run.join.apply(run, args.concat(slice.call(arguments)));
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.9.0-beta.4
8
+ * @version 1.9.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -14,6 +14,7 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
14
14
  (function() {
15
15
  Ember = this.Ember = this.Ember || {};
16
16
  if (typeof Ember === 'undefined') { Ember = {}; };
17
+ function UNDEFINED() { }
17
18
 
18
19
  if (typeof Ember.__loader === 'undefined') {
19
20
  var registry = {}, seen = {};
@@ -23,7 +24,11 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
23
24
  };
24
25
 
25
26
  requirejs = eriuqer = requireModule = function(name) {
26
- if (seen.hasOwnProperty(name)) { return seen[name]; }
27
+ var s = seen[name];
28
+
29
+ if (s !== undefined) { return seen[name]; }
30
+ if (s === UNDEFINED) { return undefined; }
31
+
27
32
  seen[name] = {};
28
33
 
29
34
  if (!registry[name]) {
@@ -35,34 +40,37 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
35
40
  var callback = mod.callback;
36
41
  var reified = [];
37
42
  var exports;
43
+ var length = deps.length;
38
44
 
39
- for (var i=0, l=deps.length; i<l; i++) {
45
+ for (var i=0; i<length; i++) {
40
46
  if (deps[i] === 'exports') {
41
47
  reified.push(exports = {});
42
48
  } else {
43
- reified.push(requireModule(resolve(deps[i])));
49
+ reified.push(requireModule(resolve(deps[i], name)));
44
50
  }
45
51
  }
46
52
 
47
- var value = callback.apply(this, reified);
48
- return seen[name] = exports || value;
53
+ var value = length === 0 ? callback.call(this) : callback.apply(this, reified);
49
54
 
50
- function resolve(child) {
51
- if (child.charAt(0) !== '.') { return child; }
52
- var parts = child.split("/");
53
- var parentBase = name.split("/").slice(0, -1);
55
+ return seen[name] = exports || (value === undefined ? UNDEFINED : value);
56
+ };
54
57
 
55
- for (var i=0, l=parts.length; i<l; i++) {
56
- var part = parts[i];
58
+ function resolve(child, name) {
59
+ if (child.charAt(0) !== '.') { return child; }
60
+ var parts = child.split("/");
61
+ var parentBase = name.split("/").slice(0, -1);
57
62
 
58
- if (part === '..') { parentBase.pop(); }
59
- else if (part === '.') { continue; }
60
- else { parentBase.push(part); }
61
- }
63
+ for (var i=0, l=parts.length; i<l; i++) {
64
+ var part = parts[i];
62
65
 
63
- return parentBase.join("/");
66
+ if (part === '..') { parentBase.pop(); }
67
+ else if (part === '.') { continue; }
68
+ else { parentBase.push(part); }
64
69
  }
65
- };
70
+
71
+ return parentBase.join("/");
72
+ }
73
+
66
74
  requirejs._eak_seen = registry;
67
75
 
68
76
  Ember.__loader = {define: enifed, require: eriuqer, registry: registry};
@@ -5,7 +5,7 @@
5
5
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
6
6
  * @license Licensed under MIT license
7
7
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
8
- * @version 1.9.0-beta.4
8
+ * @version 1.9.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -14,6 +14,7 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
14
14
  (function() {
15
15
  Ember = this.Ember = this.Ember || {};
16
16
  if (typeof Ember === 'undefined') { Ember = {}; };
17
+ function UNDEFINED() { }
17
18
 
18
19
  if (typeof Ember.__loader === 'undefined') {
19
20
  var registry = {}, seen = {};
@@ -23,7 +24,11 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
23
24
  };
24
25
 
25
26
  requirejs = eriuqer = requireModule = function(name) {
26
- if (seen.hasOwnProperty(name)) { return seen[name]; }
27
+ var s = seen[name];
28
+
29
+ if (s !== undefined) { return seen[name]; }
30
+ if (s === UNDEFINED) { return undefined; }
31
+
27
32
  seen[name] = {};
28
33
 
29
34
  if (!registry[name]) {
@@ -35,34 +40,37 @@ var enifed, requireModule, eriuqer, requirejs, Ember;
35
40
  var callback = mod.callback;
36
41
  var reified = [];
37
42
  var exports;
43
+ var length = deps.length;
38
44
 
39
- for (var i=0, l=deps.length; i<l; i++) {
45
+ for (var i=0; i<length; i++) {
40
46
  if (deps[i] === 'exports') {
41
47
  reified.push(exports = {});
42
48
  } else {
43
- reified.push(requireModule(resolve(deps[i])));
49
+ reified.push(requireModule(resolve(deps[i], name)));
44
50
  }
45
51
  }
46
52
 
47
- var value = callback.apply(this, reified);
48
- return seen[name] = exports || value;
53
+ var value = length === 0 ? callback.call(this) : callback.apply(this, reified);
49
54
 
50
- function resolve(child) {
51
- if (child.charAt(0) !== '.') { return child; }
52
- var parts = child.split("/");
53
- var parentBase = name.split("/").slice(0, -1);
55
+ return seen[name] = exports || (value === undefined ? UNDEFINED : value);
56
+ };
54
57
 
55
- for (var i=0, l=parts.length; i<l; i++) {
56
- var part = parts[i];
58
+ function resolve(child, name) {
59
+ if (child.charAt(0) !== '.') { return child; }
60
+ var parts = child.split("/");
61
+ var parentBase = name.split("/").slice(0, -1);
57
62
 
58
- if (part === '..') { parentBase.pop(); }
59
- else if (part === '.') { continue; }
60
- else { parentBase.push(part); }
61
- }
63
+ for (var i=0, l=parts.length; i<l; i++) {
64
+ var part = parts[i];
62
65
 
63
- return parentBase.join("/");
66
+ if (part === '..') { parentBase.pop(); }
67
+ else if (part === '.') { continue; }
68
+ else { parentBase.push(part); }
64
69
  }
65
- };
70
+
71
+ return parentBase.join("/");
72
+ }
73
+
66
74
  requirejs._eak_seen = registry;
67
75
 
68
76
  Ember.__loader = {define: enifed, require: eriuqer, registry: registry};
@@ -7222,6 +7230,14 @@ enifed("ember-handlebars/tests/handlebars_test",
7222
7230
  ok(safeString instanceof Handlebars.SafeString, "should return SafeString");
7223
7231
  });
7224
7232
 
7233
+ test("htmlSafe should return an empty string for null", function() {
7234
+ equal(htmlSafe(null).toString(), "", "should return an empty string");
7235
+ });
7236
+
7237
+ test("htmlSafe should return an empty string for undefined", function() {
7238
+ equal(htmlSafe().toString(), "", "should return an empty string");
7239
+ });
7240
+
7225
7241
  test("should escape HTML in normal mustaches", function() {
7226
7242
  view = EmberView.create({
7227
7243
  template: EmberHandlebars.compile('{{view.output}}'),
@@ -27844,6 +27860,31 @@ enifed("ember-routing/tests/system/route_test",
27844
27860
  equal(route.modelFor('foo'), foo);
27845
27861
  });
27846
27862
 
27863
+
27864
+ test(".send just calls an action if the router is absent", function() {
27865
+ expect(7);
27866
+ var route = Ember.Route.createWithMixins({
27867
+ actions: {
27868
+ returnsTrue: function(foo, bar) {
27869
+ equal(foo, 1);
27870
+ equal(bar, 2);
27871
+ equal(this, route);
27872
+ return true;
27873
+ },
27874
+
27875
+ returnsFalse: function() {
27876
+ ok(true, "returnsFalse was called");
27877
+ return false;
27878
+ }
27879
+ }
27880
+ });
27881
+
27882
+ equal(true, route.send('returnsTrue', 1, 2));
27883
+ equal(false, route.send('returnsFalse'));
27884
+ equal(undefined, route.send('nonexistent', 1, 2, 3));
27885
+ });
27886
+
27887
+
27847
27888
  QUnit.module("Ember.Route serialize", {
27848
27889
  setup: createRoute,
27849
27890
  teardown: cleanupRoute
@@ -48078,6 +48119,27 @@ enifed("ember-views/tests/system/view_utils_test",
48078
48119
  var run = __dependency1__["default"];
48079
48120
  var View = __dependency2__["default"];
48080
48121
 
48122
+ var hasGetClientRects, hasGetBoundingClientRect;
48123
+ var ClientRectListCtor, ClientRectCtor;
48124
+
48125
+ (function() {
48126
+ if (document.createRange) {
48127
+ var range = document.createRange();
48128
+
48129
+ if (range.getClientRects) {
48130
+ var clientRectsList = range.getClientRects();
48131
+ hasGetClientRects = true;
48132
+ ClientRectListCtor = clientRectsList && clientRectsList.constructor;
48133
+ }
48134
+
48135
+ if (range.getBoundingClientRect) {
48136
+ var clientRect = range.getBoundingClientRect();
48137
+ hasGetBoundingClientRect = true;
48138
+ ClientRectCtor = clientRect && clientRect.constructor;
48139
+ }
48140
+ }
48141
+ })();
48142
+
48081
48143
  var view;
48082
48144
 
48083
48145
  QUnit.module("ViewUtils", {
@@ -48088,9 +48150,10 @@ enifed("ember-views/tests/system/view_utils_test",
48088
48150
  }
48089
48151
  });
48090
48152
 
48153
+
48091
48154
  test("getViewClientRects", function() {
48092
- if (!(window.Range && window.Range.prototype.getClientRects)) {
48093
- ok(true, "The test environment does not support the DOM API required for getViewClientRects.");
48155
+ if (!hasGetClientRects || !ClientRectListCtor) {
48156
+ ok(true, "The test environment does not support the DOM API required to run this test.");
48094
48157
  return;
48095
48158
  }
48096
48159
 
@@ -48102,12 +48165,12 @@ enifed("ember-views/tests/system/view_utils_test",
48102
48165
 
48103
48166
  run(function() { view.appendTo('#qunit-fixture'); });
48104
48167
 
48105
- ok(Ember.ViewUtils.getViewClientRects(view) instanceof window.ClientRectList);
48168
+ ok(Ember.ViewUtils.getViewClientRects(view) instanceof ClientRectListCtor);
48106
48169
  });
48107
48170
 
48108
48171
  test("getViewBoundingClientRect", function() {
48109
- if (!(window.Range && window.Range.prototype.getBoundingClientRect)) {
48110
- ok(true, "The test environment does not support the DOM API required for getViewBoundingClientRect.");
48172
+ if (!hasGetBoundingClientRect || !ClientRectCtor) {
48173
+ ok(true, "The test environment does not support the DOM API required to run this test.");
48111
48174
  return;
48112
48175
  }
48113
48176
 
@@ -48119,7 +48182,7 @@ enifed("ember-views/tests/system/view_utils_test",
48119
48182
 
48120
48183
  run(function() { view.appendTo('#qunit-fixture'); });
48121
48184
 
48122
- ok(Ember.ViewUtils.getViewBoundingClientRect(view) instanceof window.ClientRect);
48185
+ ok(Ember.ViewUtils.getViewBoundingClientRect(view) instanceof ClientRectCtor);
48123
48186
  });
48124
48187
  });
48125
48188
  enifed("ember-views/tests/system/view_utils_test.jshint",
@@ -59915,6 +59978,79 @@ enifed("ember/tests/routing/basic_test",
59915
59978
  Ember.run(router, 'transitionTo', 'out');
59916
59979
  deepEqual(calls, [['reset', 'c'], ['reset', 'a'], ['setup', 'out']]);
59917
59980
  });
59981
+
59982
+ test("Exception during initialization of non-initial route is not swallowed", function() {
59983
+ Router.map(function() {
59984
+ this.route('boom');
59985
+ });
59986
+ App.BoomRoute = Ember.Route.extend({
59987
+ init: function() {
59988
+ throw new Error("boom!");
59989
+ }
59990
+ });
59991
+ bootApplication();
59992
+ throws(function(){
59993
+ Ember.run(router, 'transitionTo', 'boom');
59994
+ }, /\bboom\b/);
59995
+ });
59996
+
59997
+
59998
+ test("Exception during load of non-initial route is not swallowed", function() {
59999
+ Router.map(function() {
60000
+ this.route('boom');
60001
+ });
60002
+ var lookup = container.lookup;
60003
+ container.lookup = function() {
60004
+ if (arguments[0] === 'route:boom') {
60005
+ throw new Error("boom!");
60006
+ }
60007
+ return lookup.apply(this, arguments);
60008
+ };
60009
+ App.BoomRoute = Ember.Route.extend({
60010
+ init: function() {
60011
+ throw new Error("boom!");
60012
+ }
60013
+ });
60014
+ bootApplication();
60015
+ throws(function(){
60016
+ Ember.run(router, 'transitionTo', 'boom');
60017
+ });
60018
+ });
60019
+
60020
+ test("Exception during initialization of initial route is not swallowed", function() {
60021
+ Router.map(function() {
60022
+ this.route('boom', {path: '/'});
60023
+ });
60024
+ App.BoomRoute = Ember.Route.extend({
60025
+ init: function() {
60026
+ throw new Error("boom!");
60027
+ }
60028
+ });
60029
+ throws(function(){
60030
+ bootApplication();
60031
+ }, /\bboom\b/);
60032
+ });
60033
+
60034
+ test("Exception during load of initial route is not swallowed", function() {
60035
+ Router.map(function() {
60036
+ this.route('boom', {path: '/'});
60037
+ });
60038
+ var lookup = container.lookup;
60039
+ container.lookup = function() {
60040
+ if (arguments[0] === 'route:boom') {
60041
+ throw new Error("boom!");
60042
+ }
60043
+ return lookup.apply(this, arguments);
60044
+ };
60045
+ App.BoomRoute = Ember.Route.extend({
60046
+ init: function() {
60047
+ throw new Error("boom!");
60048
+ }
60049
+ });
60050
+ throws(function(){
60051
+ bootApplication();
60052
+ }, /\bboom\b/);
60053
+ });
59918
60054
  });
59919
60055
  enifed("ember/tests/routing/basic_test.jshint",
59920
60056
  [],