ember-source 2.4.3 → 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3842adfb5cd7550142040adb7fa17df41772337
4
- data.tar.gz: 7afa3913f4e940cb7392af94c5f52684a759d735
3
+ metadata.gz: 786f95319ffc2eaa8357853283443c892b565342
4
+ data.tar.gz: 4c337f1be45944b2b1f0cb74f1caf919d79cdd9d
5
5
  SHA512:
6
- metadata.gz: e33ed8b100139f4e40050f1238e5e5efab5f07ba0336bdd08b242ef56a5463dd4763c3b5d6e35ebc6e7863c32740993e7481bf30c0e2a1106c6aa51aca1148ff
7
- data.tar.gz: e9d095985d71a9751818cfbe783031420cec4c9db561a7f4c045bc5c32a547c25455742b57e335711db7b42f45f4c1ef6ad4791502ed6626b422678b89b70ec0
6
+ metadata.gz: cfb9360c98e34de7423a36a80d98a36a9c5cbd58fc2316089cb06fbc9f873cd7c6a47828f9b234710753e3bcf96170c1e17ad60e10c7e18ad568b2e387146fa6
7
+ data.tar.gz: e381737285ac85d6d73c594d485e4fd4c0e798d6165c2d907329af120f6f8d201b8134aca1967ad608149749db131029c1f797de6b17a86926a615389a4bb068
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.4.3
1
+ 2.4.4
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.4.3
9
+ * @version 2.4.4
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -4087,7 +4087,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
4087
4087
  this.lastName = 'Jones';
4088
4088
  },
4089
4089
 
4090
- fullName: Ember.computed({
4090
+ fullName: Ember.computed('firstName', 'lastName', {
4091
4091
  get(key) {
4092
4092
  return `${this.get('firstName')} ${this.get('lastName')}`;
4093
4093
  },
@@ -4875,7 +4875,7 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
4875
4875
 
4876
4876
  @class Ember
4877
4877
  @static
4878
- @version 2.4.3
4878
+ @version 2.4.4
4879
4879
  @public
4880
4880
  */
4881
4881
 
@@ -4917,11 +4917,11 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
4917
4917
 
4918
4918
  @property VERSION
4919
4919
  @type String
4920
- @default '2.4.3'
4920
+ @default '2.4.4'
4921
4921
  @static
4922
4922
  @public
4923
4923
  */
4924
- Ember.VERSION = '2.4.3';
4924
+ Ember.VERSION = '2.4.4';
4925
4925
 
4926
4926
  /**
4927
4927
  The hash of environment variables used to control various configuration
@@ -14975,8 +14975,19 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
14975
14975
  on the array. Just get an equivalent property on this object and it will
14976
14976
  return an enumerable that maps automatically to the named key on the
14977
14977
  member objects.
14978
- If you merely want to watch for any items being added or removed to the array,
14979
- use the `[]` property instead of `@each`.
14978
+ @each should only be used in a non-terminal context. Example:
14979
+ ```javascript
14980
+ myMethod: computed('posts.@each.author', function(){
14981
+ ...
14982
+ });
14983
+ ```
14984
+ If you merely want to watch for the array being changed, like an object being
14985
+ replaced, added or removed, use `[]` instead of `@each`.
14986
+ ```javascript
14987
+ myMethod: computed('posts.[]', function(){
14988
+ ...
14989
+ });
14990
+ ```
14980
14991
  @property @each
14981
14992
  @public
14982
14993
  */
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.4.3
9
+ * @version 2.4.4
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -1355,7 +1355,8 @@ enifed('ember-debug/index', ['exports', 'ember-metal/core', 'ember-metal/debug',
1355
1355
  /**
1356
1356
  Define an assertion that will throw an exception if the condition is not
1357
1357
  met. Ember build tools will remove any calls to `Ember.assert()` when
1358
- doing a production build. Example:
1358
+ doing an Ember.js framework production build and will make the assertion a
1359
+ no-op for an application production build. Example:
1359
1360
 
1360
1361
  ```javascript
1361
1362
  // Test for truthiness
@@ -3311,7 +3312,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
3311
3312
  this.lastName = 'Jones';
3312
3313
  },
3313
3314
 
3314
- fullName: Ember.computed({
3315
+ fullName: Ember.computed('firstName', 'lastName', {
3315
3316
  get(key) {
3316
3317
  return `${this.get('firstName')} ${this.get('lastName')}`;
3317
3318
  },
@@ -4099,7 +4100,7 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
4099
4100
 
4100
4101
  @class Ember
4101
4102
  @static
4102
- @version 2.4.3
4103
+ @version 2.4.4
4103
4104
  @public
4104
4105
  */
4105
4106
 
@@ -4141,11 +4142,11 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
4141
4142
 
4142
4143
  @property VERSION
4143
4144
  @type String
4144
- @default '2.4.3'
4145
+ @default '2.4.4'
4145
4146
  @static
4146
4147
  @public
4147
4148
  */
4148
- Ember.VERSION = '2.4.3';
4149
+ Ember.VERSION = '2.4.4';
4149
4150
 
4150
4151
  /**
4151
4152
  The hash of environment variables used to control various configuration
@@ -11771,12 +11772,13 @@ enifed('ember-template-compiler/compat', ['exports', 'ember-metal/core', 'ember-
11771
11772
  EmberHandlebars.compile = _emberTemplateCompilerSystemCompile.default;
11772
11773
  EmberHandlebars.template = _emberTemplateCompilerSystemTemplate.default;
11773
11774
  });
11774
- enifed('ember-template-compiler/index', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/transform-unescaped-inline-link-to', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsTransformUnescapedInlineLinkTo, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
11775
+ enifed('ember-template-compiler/index', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-closure-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/transform-unescaped-inline-link-to', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformClosureComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsTransformUnescapedInlineLinkTo, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
11775
11776
  'use strict';
11776
11777
 
11777
11778
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldBindingSyntax.default);
11778
11779
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default);
11779
11780
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformItemClass.default);
11781
+ _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformClosureComponentAttrsIntoMut.default);
11780
11782
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut.default);
11781
11783
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly.default);
11782
11784
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformAngleBracketComponents.default);
@@ -11958,6 +11960,88 @@ enifed('ember-template-compiler/plugins/transform-angle-bracket-components', ['e
11958
11960
 
11959
11961
  exports.default = TransformAngleBracketComponents;
11960
11962
  });
11963
+ enifed('ember-template-compiler/plugins/transform-closure-component-attrs-into-mut', ['exports'], function (exports) {
11964
+ 'use strict';
11965
+
11966
+ function TransformClosureComponentAttrsIntoMut() {
11967
+ // set later within HTMLBars to the syntax package
11968
+ this.syntax = null;
11969
+ }
11970
+
11971
+ /**
11972
+ @private
11973
+ @method transform
11974
+ @param {AST} ast The AST to be transformed.
11975
+ */
11976
+ TransformClosureComponentAttrsIntoMut.prototype.transform = function TransformClosureComponentAttrsIntoMut_transform(ast) {
11977
+ var b = this.syntax.builders;
11978
+ var walker = new this.syntax.Walker();
11979
+
11980
+ walker.visit(ast, function (node) {
11981
+ if (validate(node)) {
11982
+ processExpression(b, node);
11983
+ }
11984
+ });
11985
+
11986
+ return ast;
11987
+ };
11988
+
11989
+ function processExpression(builder, node) {
11990
+ processSubExpressionsInNode(builder, node);
11991
+
11992
+ if (isComponentClosure(node)) {
11993
+ mutParameters(builder, node);
11994
+ }
11995
+ }
11996
+
11997
+ function processSubExpressionsInNode(builder, node) {
11998
+ for (var i = 0; i < node.params.length; i++) {
11999
+ if (node.params[i].type === 'SubExpression') {
12000
+ processExpression(builder, node.params[i]);
12001
+ }
12002
+ }
12003
+
12004
+ each(node.hash.pairs, function (pair) {
12005
+ var value = pair.value;
12006
+
12007
+ if (value.type === 'SubExpression') {
12008
+ processExpression(builder, value);
12009
+ }
12010
+ });
12011
+ }
12012
+
12013
+ function isComponentClosure(node) {
12014
+ return node.type === 'SubExpression' && node.path.original === 'component';
12015
+ }
12016
+
12017
+ function mutParameters(builder, node) {
12018
+ for (var i = 1; i < node.params.length; i++) {
12019
+ if (node.params[i].type === 'PathExpression') {
12020
+ node.params[i] = builder.sexpr(builder.path('@mut'), [node.params[i]]);
12021
+ }
12022
+ }
12023
+
12024
+ each(node.hash.pairs, function (pair) {
12025
+ var value = pair.value;
12026
+
12027
+ if (value.type === 'PathExpression') {
12028
+ pair.value = builder.sexpr(builder.path('@mut'), [pair.value]);
12029
+ }
12030
+ });
12031
+ }
12032
+
12033
+ function validate(node) {
12034
+ return node.type === 'BlockStatement' || node.type === 'MustacheStatement';
12035
+ }
12036
+
12037
+ function each(list, callback) {
12038
+ for (var i = 0, l = list.length; i < l; i++) {
12039
+ callback(list[i]);
12040
+ }
12041
+ }
12042
+
12043
+ exports.default = TransformClosureComponentAttrsIntoMut;
12044
+ });
11961
12045
  enifed('ember-template-compiler/plugins/transform-component-attrs-into-mut', ['exports'], function (exports) {
11962
12046
  'use strict';
11963
12047
 
@@ -12817,7 +12901,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
12817
12901
  options.buildMeta = function buildMeta(program) {
12818
12902
  return {
12819
12903
  fragmentReason: fragmentReason(program),
12820
- revision: 'Ember@2.4.3',
12904
+ revision: 'Ember@2.4.4',
12821
12905
  loc: program.loc,
12822
12906
  moduleName: options.moduleName
12823
12907
  };
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.4.3
9
+ * @version 2.4.4
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -314,7 +314,8 @@ enifed('ember-debug/index', ['exports', 'ember-metal/core', 'ember-metal/debug',
314
314
  /**
315
315
  Define an assertion that will throw an exception if the condition is not
316
316
  met. Ember build tools will remove any calls to `Ember.assert()` when
317
- doing a production build. Example:
317
+ doing an Ember.js framework production build and will make the assertion a
318
+ no-op for an application production build. Example:
318
319
 
319
320
  ```javascript
320
321
  // Test for truthiness
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.4.3
9
+ * @version 2.4.4
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, requirejs, Ember;
@@ -6345,7 +6345,8 @@ enifed('ember-debug/index', ['exports', 'ember-metal/core', 'ember-metal/debug',
6345
6345
  /**
6346
6346
  Define an assertion that will throw an exception if the condition is not
6347
6347
  met. Ember build tools will remove any calls to `Ember.assert()` when
6348
- doing a production build. Example:
6348
+ doing an Ember.js framework production build and will make the assertion a
6349
+ no-op for an application production build. Example:
6349
6350
 
6350
6351
  ```javascript
6351
6352
  // Test for truthiness
@@ -7421,7 +7422,7 @@ enifed('ember-htmlbars/helper', ['exports', 'ember-runtime/system/object'], func
7421
7422
  Each time the input to a helper changes, the `compute` function will be
7422
7423
  called again.
7423
7424
 
7424
- As instances, these helpers also have access to the container an will accept
7425
+ As instances, these helpers also have access to the container and will accept
7425
7426
  injected dependencies.
7426
7427
 
7427
7428
  Additionally, class helpers can call `recompute` to force a new computation.
@@ -7935,7 +7936,7 @@ enifed('ember-htmlbars/helpers/if_unless', ['exports', 'ember-metal/debug', 'emb
7935
7936
  the `else` helper.
7936
7937
 
7937
7938
  ```handlebars
7938
- {{!Is it raining outside?}}
7939
+ {{! is it raining outside?}}
7939
7940
  {{#if isRaining}}
7940
7941
  Yes, grab an umbrella!
7941
7942
  {{else}}
@@ -10520,7 +10521,7 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/debug', 'ember
10520
10521
 
10521
10522
  'use strict';
10522
10523
 
10523
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.3';
10524
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.4';
10524
10525
 
10525
10526
  /**
10526
10527
  The `{{outlet}}` helper lets you specify where a child routes will render in
@@ -15404,7 +15405,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/debug', 'ember-metal/pro
15404
15405
  this.lastName = 'Jones';
15405
15406
  },
15406
15407
 
15407
- fullName: Ember.computed({
15408
+ fullName: Ember.computed('firstName', 'lastName', {
15408
15409
  get(key) {
15409
15410
  return `${this.get('firstName')} ${this.get('lastName')}`;
15410
15411
  },
@@ -16192,7 +16193,7 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
16192
16193
 
16193
16194
  @class Ember
16194
16195
  @static
16195
- @version 2.4.3
16196
+ @version 2.4.4
16196
16197
  @public
16197
16198
  */
16198
16199
 
@@ -16234,11 +16235,11 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require)
16234
16235
 
16235
16236
  @property VERSION
16236
16237
  @type String
16237
- @default '2.4.3'
16238
+ @default '2.4.4'
16238
16239
  @static
16239
16240
  @public
16240
16241
  */
16241
- Ember.VERSION = '2.4.3';
16242
+ Ember.VERSION = '2.4.4';
16242
16243
 
16243
16244
  /**
16244
16245
  The hash of environment variables used to control various configuration
@@ -26347,7 +26348,7 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
26347
26348
  var totalChanged = Object.keys(changed).concat(Object.keys(removed));
26348
26349
  for (var i = 0, len = totalChanged.length; i < len; ++i) {
26349
26350
  var qp = qpMap[totalChanged[i]];
26350
- if (qp && _emberMetalProperty_get.get(this._optionsForQueryParam(qp), 'refreshModel')) {
26351
+ if (qp && _emberMetalProperty_get.get(this._optionsForQueryParam(qp), 'refreshModel') && this.router.currentState) {
26351
26352
  this.refresh();
26352
26353
  }
26353
26354
  }
@@ -27391,7 +27392,7 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
27391
27392
  //
27392
27393
  this.render('post', { // the template name associated with 'post' Route
27393
27394
  into: 'application', // the parent route to 'post' Route
27394
- outlet: 'main', // {{outlet}} and {{outlet 'main' are synonymous}},
27395
+ outlet: 'main', // {{outlet}} and {{outlet 'main'}} are synonymous,
27395
27396
  view: 'post', // the view associated with the 'post' Route
27396
27397
  controller: 'post', // the controller associated with the 'post' Route
27397
27398
  })
@@ -28343,6 +28344,12 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m
28343
28344
  _emberMetalDebug.assert('The route ' + targetRouteName + ' was not found', targetRouteName && this.router.hasRoute(targetRouteName));
28344
28345
 
28345
28346
  var queryParams = {};
28347
+ // merge in any queryParams from the active transition which could include
28348
+ // queryparams from the url on initial load.
28349
+ if (this.router.activeTransition) {
28350
+ _emberMetalAssign.default(queryParams, this.router.activeTransition.queryParams);
28351
+ }
28352
+
28346
28353
  _emberMetalAssign.default(queryParams, _queryParams);
28347
28354
  this._prepareQueryParams(targetRouteName, models, queryParams);
28348
28355
 
@@ -29356,7 +29363,8 @@ enifed('ember-routing-htmlbars/keywords/action', ['exports', 'htmlbars-runtime/h
29356
29363
 
29357
29364
  ### Event Propagation
29358
29365
 
29359
- `{{action` helpers called in element space can control event bubbling.
29366
+ `{{action}}` helpers called in element space can control event bubbling. Note
29367
+ that the closure style actions cannot.
29360
29368
 
29361
29369
  Events triggered through the action helper will automatically have
29362
29370
  `.preventDefault()` called on them. You do not need to do so in your event
@@ -29376,6 +29384,28 @@ enifed('ember-routing-htmlbars/keywords/action', ['exports', 'htmlbars-runtime/h
29376
29384
  <button {{action 'edit' post bubbles=false}}>Edit</button>
29377
29385
  ```
29378
29386
 
29387
+ To disable bubbling with closure style actions you must create your own
29388
+ wrapper helper that makes use of `event.stopPropagation()`:
29389
+
29390
+ ```handlebars
29391
+ <div onclick={{disable-bubbling (action "sayHello")}}>Hello</div>
29392
+ ```
29393
+
29394
+ ```js
29395
+ // app/helpers/disable-bubbling.js
29396
+ import Ember from 'ember';
29397
+
29398
+ export function disableBubbling([action]) {
29399
+ return function(event) {
29400
+ event.stopPropagation();
29401
+
29402
+ return action(event);
29403
+ };
29404
+ }
29405
+
29406
+ export default Ember.Helper.helper(disableBubbling);
29407
+ ```
29408
+
29379
29409
  If you need the default handler to trigger you should either register your
29380
29410
  own event handler, or use event methods on your view class. See [Ember.View](/api/classes/Ember.View.html)
29381
29411
  'Responding to Browser Events' for more information.
@@ -29496,6 +29526,9 @@ enifed('ember-routing-htmlbars/keywords/closure-action', ['exports', 'ember-meta
29496
29526
  if (!action) {
29497
29527
  throw new _emberMetalError.default('An action named \'' + actionName + '\' was not found in ' + target + '.');
29498
29528
  }
29529
+ } else if (action && typeof action[INVOKE] === 'function') {
29530
+ target = action;
29531
+ action = action[INVOKE];
29499
29532
  } else if (actionType !== 'function') {
29500
29533
  throw new _emberMetalError.default('An action could not be made for `' + rawAction.label + '` in ' + target + '. Please confirm that you are using either a quoted action name (i.e. `(action \'' + rawAction.label + '\')`) or a function available in ' + target + '.');
29501
29534
  }
@@ -29867,6 +29900,7 @@ enifed('ember-routing-htmlbars/keywords/render', ['exports', 'ember-metal/debug'
29867
29900
  }
29868
29901
 
29869
29902
  var parentController = _emberMetalStreamsUtils.read(scope.getLocal('controller'));
29903
+ var target = parentController || router;
29870
29904
  var controller;
29871
29905
 
29872
29906
  // choose name
@@ -29876,7 +29910,7 @@ enifed('ember-routing-htmlbars/keywords/render', ['exports', 'ember-metal/debug'
29876
29910
  controller = factory.create({
29877
29911
  model: _emberMetalStreamsUtils.read(context),
29878
29912
  parentController: parentController,
29879
- target: parentController
29913
+ target: target
29880
29914
  });
29881
29915
 
29882
29916
  node.addDestruction(controller);
@@ -29884,7 +29918,7 @@ enifed('ember-routing-htmlbars/keywords/render', ['exports', 'ember-metal/debug'
29884
29918
  controller = owner.lookup(controllerFullName) || _emberRoutingSystemGenerate_controller.default(owner, controllerName);
29885
29919
 
29886
29920
  controller.setProperties({
29887
- target: parentController,
29921
+ target: target,
29888
29922
  parentController: parentController
29889
29923
  });
29890
29924
  }
@@ -30304,7 +30338,7 @@ enifed('ember-routing-views/components/link-to', ['exports', 'ember-metal/logger
30304
30338
 
30305
30339
  'use strict';
30306
30340
 
30307
- _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.4.3';
30341
+ _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.4.4';
30308
30342
 
30309
30343
  /**
30310
30344
  `Ember.LinkComponent` renders an element whose `click` event triggers a
@@ -30743,7 +30777,7 @@ enifed('ember-routing-views/components/link-to', ['exports', 'ember-metal/logger
30743
30777
  _emberMetalDebug.assert('You must provide one or more parameters to the link-to component.', params.length);
30744
30778
 
30745
30779
  var disabledWhen = _emberMetalProperty_get.get(this, 'disabledWhen');
30746
- if (disabledWhen) {
30780
+ if (disabledWhen !== undefined) {
30747
30781
  this.set('disabled', disabledWhen);
30748
30782
  }
30749
30783
 
@@ -30807,7 +30841,7 @@ enifed('ember-routing-views/views/outlet', ['exports', 'ember-views/views/view',
30807
30841
 
30808
30842
  'use strict';
30809
30843
 
30810
- _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.3';
30844
+ _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.4';
30811
30845
 
30812
30846
  var CoreOutletView = _emberViewsViewsView.default.extend({
30813
30847
  defaultTemplate: _emberHtmlbarsTemplatesTopLevelView.default,
@@ -33275,8 +33309,19 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta
33275
33309
  on the array. Just get an equivalent property on this object and it will
33276
33310
  return an enumerable that maps automatically to the named key on the
33277
33311
  member objects.
33278
- If you merely want to watch for any items being added or removed to the array,
33279
- use the `[]` property instead of `@each`.
33312
+ @each should only be used in a non-terminal context. Example:
33313
+ ```javascript
33314
+ myMethod: computed('posts.@each.author', function(){
33315
+ ...
33316
+ });
33317
+ ```
33318
+ If you merely want to watch for the array being changed, like an object being
33319
+ replaced, added or removed, use `[]` instead of `@each`.
33320
+ ```javascript
33321
+ myMethod: computed('posts.[]', function(){
33322
+ ...
33323
+ });
33324
+ ```
33280
33325
  @property @each
33281
33326
  @public
33282
33327
  */
@@ -38780,12 +38825,13 @@ enifed('ember-template-compiler/compat', ['exports', 'ember-metal/core', 'ember-
38780
38825
  EmberHandlebars.compile = _emberTemplateCompilerSystemCompile.default;
38781
38826
  EmberHandlebars.template = _emberTemplateCompilerSystemTemplate.default;
38782
38827
  });
38783
- enifed('ember-template-compiler/index', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/transform-unescaped-inline-link-to', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsTransformUnescapedInlineLinkTo, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
38828
+ enifed('ember-template-compiler/index', ['exports', 'ember-metal', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-old-binding-syntax', 'ember-template-compiler/plugins/transform-old-class-binding-syntax', 'ember-template-compiler/plugins/transform-item-class', 'ember-template-compiler/plugins/transform-closure-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-attrs-into-mut', 'ember-template-compiler/plugins/transform-component-curly-to-readonly', 'ember-template-compiler/plugins/transform-angle-bracket-components', 'ember-template-compiler/plugins/transform-input-on-to-onEvent', 'ember-template-compiler/plugins/transform-top-level-components', 'ember-template-compiler/plugins/transform-each-into-collection', 'ember-template-compiler/plugins/transform-unescaped-inline-link-to', 'ember-template-compiler/plugins/assert-no-view-and-controller-paths', 'ember-template-compiler/plugins/assert-no-view-helper', 'ember-template-compiler/compat'], function (exports, _emberMetal, _emberTemplateCompilerSystemPrecompile, _emberTemplateCompilerSystemCompile, _emberTemplateCompilerSystemTemplate, _emberTemplateCompilerPlugins, _emberTemplateCompilerPluginsTransformOldBindingSyntax, _emberTemplateCompilerPluginsTransformOldClassBindingSyntax, _emberTemplateCompilerPluginsTransformItemClass, _emberTemplateCompilerPluginsTransformClosureComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut, _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly, _emberTemplateCompilerPluginsTransformAngleBracketComponents, _emberTemplateCompilerPluginsTransformInputOnToOnEvent, _emberTemplateCompilerPluginsTransformTopLevelComponents, _emberTemplateCompilerPluginsTransformEachIntoCollection, _emberTemplateCompilerPluginsTransformUnescapedInlineLinkTo, _emberTemplateCompilerPluginsAssertNoViewAndControllerPaths, _emberTemplateCompilerPluginsAssertNoViewHelper, _emberTemplateCompilerCompat) {
38784
38829
  'use strict';
38785
38830
 
38786
38831
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldBindingSyntax.default);
38787
38832
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformOldClassBindingSyntax.default);
38788
38833
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformItemClass.default);
38834
+ _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformClosureComponentAttrsIntoMut.default);
38789
38835
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentAttrsIntoMut.default);
38790
38836
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformComponentCurlyToReadonly.default);
38791
38837
  _emberTemplateCompilerPlugins.registerPlugin('ast', _emberTemplateCompilerPluginsTransformAngleBracketComponents.default);
@@ -38967,6 +39013,88 @@ enifed('ember-template-compiler/plugins/transform-angle-bracket-components', ['e
38967
39013
 
38968
39014
  exports.default = TransformAngleBracketComponents;
38969
39015
  });
39016
+ enifed('ember-template-compiler/plugins/transform-closure-component-attrs-into-mut', ['exports'], function (exports) {
39017
+ 'use strict';
39018
+
39019
+ function TransformClosureComponentAttrsIntoMut() {
39020
+ // set later within HTMLBars to the syntax package
39021
+ this.syntax = null;
39022
+ }
39023
+
39024
+ /**
39025
+ @private
39026
+ @method transform
39027
+ @param {AST} ast The AST to be transformed.
39028
+ */
39029
+ TransformClosureComponentAttrsIntoMut.prototype.transform = function TransformClosureComponentAttrsIntoMut_transform(ast) {
39030
+ var b = this.syntax.builders;
39031
+ var walker = new this.syntax.Walker();
39032
+
39033
+ walker.visit(ast, function (node) {
39034
+ if (validate(node)) {
39035
+ processExpression(b, node);
39036
+ }
39037
+ });
39038
+
39039
+ return ast;
39040
+ };
39041
+
39042
+ function processExpression(builder, node) {
39043
+ processSubExpressionsInNode(builder, node);
39044
+
39045
+ if (isComponentClosure(node)) {
39046
+ mutParameters(builder, node);
39047
+ }
39048
+ }
39049
+
39050
+ function processSubExpressionsInNode(builder, node) {
39051
+ for (var i = 0; i < node.params.length; i++) {
39052
+ if (node.params[i].type === 'SubExpression') {
39053
+ processExpression(builder, node.params[i]);
39054
+ }
39055
+ }
39056
+
39057
+ each(node.hash.pairs, function (pair) {
39058
+ var value = pair.value;
39059
+
39060
+ if (value.type === 'SubExpression') {
39061
+ processExpression(builder, value);
39062
+ }
39063
+ });
39064
+ }
39065
+
39066
+ function isComponentClosure(node) {
39067
+ return node.type === 'SubExpression' && node.path.original === 'component';
39068
+ }
39069
+
39070
+ function mutParameters(builder, node) {
39071
+ for (var i = 1; i < node.params.length; i++) {
39072
+ if (node.params[i].type === 'PathExpression') {
39073
+ node.params[i] = builder.sexpr(builder.path('@mut'), [node.params[i]]);
39074
+ }
39075
+ }
39076
+
39077
+ each(node.hash.pairs, function (pair) {
39078
+ var value = pair.value;
39079
+
39080
+ if (value.type === 'PathExpression') {
39081
+ pair.value = builder.sexpr(builder.path('@mut'), [pair.value]);
39082
+ }
39083
+ });
39084
+ }
39085
+
39086
+ function validate(node) {
39087
+ return node.type === 'BlockStatement' || node.type === 'MustacheStatement';
39088
+ }
39089
+
39090
+ function each(list, callback) {
39091
+ for (var i = 0, l = list.length; i < l; i++) {
39092
+ callback(list[i]);
39093
+ }
39094
+ }
39095
+
39096
+ exports.default = TransformClosureComponentAttrsIntoMut;
39097
+ });
38970
39098
  enifed('ember-template-compiler/plugins/transform-component-attrs-into-mut', ['exports'], function (exports) {
38971
39099
  'use strict';
38972
39100
 
@@ -39826,7 +39954,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
39826
39954
  options.buildMeta = function buildMeta(program) {
39827
39955
  return {
39828
39956
  fragmentReason: fragmentReason(program),
39829
- revision: 'Ember@2.4.3',
39957
+ revision: 'Ember@2.4.4',
39830
39958
  loc: program.loc,
39831
39959
  moduleName: options.moduleName
39832
39960
  };
@@ -41396,6 +41524,7 @@ enifed('ember-views/components/component', ['exports', 'ember-metal/debug', 'emb
41396
41524
  @class Component
41397
41525
  @namespace Ember
41398
41526
  @extends Ember.View
41527
+ @uses Ember.ViewTargetActionSupport
41399
41528
  @public
41400
41529
  */
41401
41530
  var Component = _emberViewsViewsView.default.extend(_emberRuntimeMixinsTarget_action_support.default, {
@@ -45166,7 +45295,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb
45166
45295
  enifed('ember-views/views/container_view', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-runtime/mixins/mutable_array', 'ember-runtime/system/native_array', 'ember-views/views/view', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/events', 'ember-htmlbars/templates/container-view'], function (exports, _emberMetalCore, _emberMetalDebug, _emberRuntimeMixinsMutable_array, _emberRuntimeSystemNative_array, _emberViewsViewsView, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalEvents, _emberHtmlbarsTemplatesContainerView) {
45167
45296
  'use strict';
45168
45297
 
45169
- _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.4.3';
45298
+ _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.4.4';
45170
45299
 
45171
45300
  /**
45172
45301
  @module ember
@@ -46975,21 +47104,20 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-metal/de
46975
47104
  ```
46976
47105
 
46977
47106
  If the return value of an `attributeBindings` monitored property is a boolean
46978
- the property will follow HTML's pattern of repeating the attribute's name as
46979
- its value:
47107
+ the property's value will be set as a coerced string:
46980
47108
 
46981
47109
  ```javascript
46982
47110
  MyTextInput = Ember.View.extend({
46983
47111
  tagName: 'input',
46984
47112
  attributeBindings: ['disabled'],
46985
- disabled: true
47113
+ disabled: false
46986
47114
  });
46987
47115
  ```
46988
47116
 
46989
- Will result in view instances with an HTML representation of:
47117
+ Will result in a view instance with an HTML representation of:
46990
47118
 
46991
47119
  ```html
46992
- <input id="ember1" class="ember-view" disabled="disabled" />
47120
+ <input id="ember1" class="ember-view" disabled="false" />
46993
47121
  ```
46994
47122
 
46995
47123
  `attributeBindings` can refer to computed properties:
@@ -47008,6 +47136,17 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-metal/de
47008
47136
  });
47009
47137
  ```
47010
47138
 
47139
+ To prevent setting an attribute altogether, use `null` or `undefined` as the
47140
+ return value of the `attributeBindings` monitored property:
47141
+
47142
+ ```javascript
47143
+ MyTextInput = Ember.View.extend({
47144
+ tagName: 'form',
47145
+ attributeBindings: ['novalidate'],
47146
+ novalidate: null
47147
+ });
47148
+ ```
47149
+
47011
47150
  Updates to the property of an attribute binding will result in automatic
47012
47151
  update of the HTML attribute in the view's rendered HTML representation.
47013
47152
 
@@ -47336,6 +47475,7 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-metal/de
47336
47475
  @namespace Ember
47337
47476
  @extends Ember.CoreView
47338
47477
  @deprecated See http://emberjs.com/deprecations/v1.x/#toc_ember-view
47478
+ @uses Ember.ViewSupport
47339
47479
  @uses Ember.ViewContextSupport
47340
47480
  @uses Ember.ViewChildViewsSupport
47341
47481
  @uses Ember.TemplateRenderingSupport