ember-source 1.11.0.beta.5 → 1.11.0

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.

Potentially problematic release.


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

@@ -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.11.0-beta.5.1501308c
8
+ * @version 1.11.0
9
9
  */
10
10
 
11
11
  (function() {
@@ -1136,7 +1136,11 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1136
1136
  */
1137
1137
  function Container(registry, options) {
1138
1138
  this._registry = registry || (function() {
1139
- Ember['default'].deprecate("A container should only be created for an already instantiated registry. For backward compatibility, an isolated registry will be instantiated just for this container.");
1139
+ Ember['default'].deprecate(
1140
+ "A container should only be created for an already instantiated " +
1141
+ "registry. For backward compatibility, an isolated registry will " +
1142
+ "be instantiated just for this container."
1143
+ );
1140
1144
 
1141
1145
  // TODO - See note above about transpiler import workaround.
1142
1146
  if (!Registry) { Registry = requireModule('container/registry')['default']; }
@@ -1155,6 +1159,7 @@ enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/keys'
1155
1159
 
1156
1160
  @property _registry
1157
1161
  @type Registry
1162
+ @since 1.11.0
1158
1163
  */
1159
1164
  _registry: null,
1160
1165
 
@@ -1503,6 +1508,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1503
1508
 
1504
1509
  @private
1505
1510
  @class Registry
1511
+ @since 1.11.0
1506
1512
  */
1507
1513
  function Registry(options) {
1508
1514
  this.fallback = options && options.fallback ? options.fallback : null;
@@ -1618,7 +1624,7 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1618
1624
  @property _defaultContainer
1619
1625
  @type Container
1620
1626
  */
1621
- _defaultContainer: null,
1627
+ _defaultContainer: null,
1622
1628
 
1623
1629
  /**
1624
1630
  Creates a container based on this registry.
@@ -1659,7 +1665,11 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1659
1665
  Ember['default'].assert('Create a container on the registry (with `registry.container()`) before calling `lookup`.', this._defaultContainer);
1660
1666
 
1661
1667
  if (instanceInitializersFeatureEnabled) {
1662
- Ember['default'].deprecate('`lookup` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.', { url: "http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers" });
1668
+ Ember['default'].deprecate(
1669
+ '`lookup` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.',
1670
+ false,
1671
+ { url: "http://emberjs.com/guides/deprecations#toc_access-to-instances-in-initializers" }
1672
+ );
1663
1673
  }
1664
1674
 
1665
1675
  return this._defaultContainer.lookup(fullName, options);
@@ -1669,7 +1679,11 @@ enifed('container/registry', ['exports', 'ember-metal/core', 'ember-metal/dictio
1669
1679
  Ember['default'].assert('Create a container on the registry (with `registry.container()`) before calling `lookupFactory`.', this._defaultContainer);
1670
1680
 
1671
1681
  if (instanceInitializersFeatureEnabled) {
1672
- Ember['default'].deprecate('`lookupFactory` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.', { url: "http://emberjs.com/guides/deprecations#toc_deprecate-access-to-instances-in-initializers" });
1682
+ Ember['default'].deprecate(
1683
+ '`lookupFactory` was called on a Registry. The `initializer` API no longer receives a container, and you should use an `instanceInitializer` to look up objects from the container.',
1684
+ false,
1685
+ { url: "http://emberjs.com/guides/deprecations#toc_access-to-instances-in-initializers" }
1686
+ );
1673
1687
  }
1674
1688
 
1675
1689
  return this._defaultContainer.lookupFactory(fullName);
@@ -4394,7 +4408,11 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4394
4408
  @deprecated
4395
4409
  */
4396
4410
  then: function() {
4397
- Ember['default'].deprecate('Do not use `.then` on an instance of Ember.Application. Please use the `.ready` hook instead.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-code-then-code-on-ember-application' });
4411
+ Ember['default'].deprecate(
4412
+ 'Do not use `.then` on an instance of Ember.Application. Please use the `.ready` hook instead.',
4413
+ false,
4414
+ { url: 'http://emberjs.com/guides/deprecations/#toc_code-then-code-on-ember-application' }
4415
+ );
4398
4416
 
4399
4417
  this._super.apply(this, arguments);
4400
4418
  }
@@ -4636,7 +4654,10 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4636
4654
  @return {*} the resolved value for a given lookup
4637
4655
  */
4638
4656
  function resolverFor(namespace) {
4639
- Ember['default'].deprecate('Application.resolver is deprecated in favor of Application.Resolver', !namespace.get('resolver'));
4657
+ Ember['default'].deprecate(
4658
+ 'Application.resolver is deprecated in favor of Application.Resolver',
4659
+ !namespace.get('resolver')
4660
+ );
4640
4661
 
4641
4662
  var ResolverClass = namespace.get('resolver') || namespace.get('Resolver') || DefaultResolver['default'];
4642
4663
  var resolver = ResolverClass.create({
@@ -4659,7 +4680,7 @@ enifed('ember-application/system/application', ['exports', 'dag-map', 'container
4659
4680
  if (resolver.normalize) {
4660
4681
  return resolver.normalize(fullName);
4661
4682
  } else {
4662
- Ember['default'].deprecate('The Resolver should now provide a \'normalize\' function', false);
4683
+ Ember['default'].deprecate('The Resolver should now provide a \'normalize\' function');
4663
4684
  return fullName;
4664
4685
  }
4665
4686
  };
@@ -6492,8 +6513,11 @@ enifed('ember-htmlbars/helpers/collection', ['exports', 'ember-metal/core', 'emb
6492
6513
  function collectionHelper(params, hash, options, env) {
6493
6514
  var path = params[0];
6494
6515
 
6495
- Ember['default'].deprecate("Using the {{collection}} helper without specifying a class has been" +
6496
- " deprecated as the {{each}} helper now supports the same functionality.", path !== 'collection');
6516
+ Ember['default'].deprecate(
6517
+ "Using the {{collection}} helper without specifying a class has been" +
6518
+ " deprecated as the {{each}} helper now supports the same functionality.",
6519
+ path !== 'collection'
6520
+ );
6497
6521
 
6498
6522
  Ember['default'].assert("You cannot pass more than one argument to the collection helper", params.length <= 1);
6499
6523
 
@@ -6571,8 +6595,8 @@ enifed('ember-htmlbars/helpers/collection', ['exports', 'ember-metal/core', 'emb
6571
6595
  if (inverse) {
6572
6596
  emptyViewClass = property_get.get(collectionPrototype, 'emptyViewClass');
6573
6597
  emptyViewClass = emptyViewClass.extend({
6574
- template: inverse,
6575
- tagName: itemHash.tagName
6598
+ template: inverse,
6599
+ tagName: itemHash.tagName
6576
6600
  });
6577
6601
  } else if (hash.emptyViewClass) {
6578
6602
  emptyViewClass = utils.readViewFactory(hash.emptyViewClass, container);
@@ -6908,8 +6932,10 @@ enifed('ember-htmlbars/helpers/template', ['exports', 'ember-metal/core'], funct
6908
6932
  exports.templateHelper = templateHelper;
6909
6933
 
6910
6934
  function templateHelper(params, hash, options, env) {
6911
- Ember['default'].deprecate("The `template` helper has been deprecated in favor of the `partial` helper." +
6912
- " Please use `partial` instead, which will work the same way.");
6935
+ Ember['default'].deprecate(
6936
+ "The `template` helper has been deprecated in favor of the `partial` helper." +
6937
+ " Please use `partial` instead, which will work the same way."
6938
+ );
6913
6939
 
6914
6940
  options.helperName = options.helperName || 'template';
6915
6941
 
@@ -7120,7 +7146,7 @@ enifed('ember-htmlbars/helpers/yield', ['exports', 'ember-metal/core', 'ember-me
7120
7146
  }
7121
7147
 
7122
7148
  });
7123
- enifed('ember-htmlbars/hooks/attribute', ['exports', 'ember-views/attr_nodes/attr_node', 'ember-metal/error', 'ember-metal/streams/utils', 'ember-views/system/sanitize_attribute_value'], function (exports, AttrNode, EmberError, utils, sanitizeAttributeValue) {
7149
+ enifed('ember-htmlbars/hooks/attribute', ['exports', 'ember-views/attr_nodes/attr_node', 'ember-metal/error', 'ember-metal/streams/utils', 'morph-attr/sanitize-attribute-value'], function (exports, AttrNode, EmberError, utils, sanitizeAttributeValue) {
7124
7150
 
7125
7151
  'use strict';
7126
7152
 
@@ -7672,9 +7698,15 @@ enifed('ember-htmlbars/system/merge-view-bindings', ['exports', 'ember-metal/cor
7672
7698
 
7673
7699
  if (mixin.IS_BINDING.test(key)) {
7674
7700
  if (typeof value === 'string') {
7701
+ Ember['default'].deprecate(
7702
+ "You're attempting to render a view by passing " + key + " " +
7703
+ "to a view helper, but this syntax is deprecated. You should use `" +
7704
+ key.slice(0, -7) + "=someValue` instead."
7705
+ );
7706
+
7675
7707
  props[key] = view._getBindingForStream(value);
7676
7708
  } else if (utils.isStream(value)) {
7677
- Ember['default'].warn(
7709
+ Ember['default'].deprecate(
7678
7710
  "You're attempting to render a view by passing " + key + " " +
7679
7711
  "to a view helper without a quoted value, but this syntax is " +
7680
7712
  "ambiguous. You should either surround " + key + "'s value in " +
@@ -7703,7 +7735,7 @@ enifed('ember-htmlbars/system/merge-view-bindings', ['exports', 'ember-metal/cor
7703
7735
  );
7704
7736
 
7705
7737
  if (hash.id) {
7706
- props.elementId = utils.read(hash.id);
7738
+ props.id = props.elementId = utils.read(hash.id);
7707
7739
  }
7708
7740
 
7709
7741
  if (hash.tag) {
@@ -7715,8 +7747,15 @@ enifed('ember-htmlbars/system/merge-view-bindings', ['exports', 'ember-metal/cor
7715
7747
  if (hash['class']) {
7716
7748
  if (typeof hash['class'] === 'string') {
7717
7749
  props.classNames = hash['class'].split(' ');
7718
- } else {
7750
+ } else if (hash['class']._label) {
7751
+ // label exists for via property paths in the template
7752
+ // but not for streams with nested sub-expressions
7719
7753
  classBindings.push(hash['class']._label);
7754
+ } else {
7755
+ // this stream did not have a label which means that
7756
+ // it is not a simple property path type stream (likely
7757
+ // the result of a sub-expression)
7758
+ classBindings.push(hash['class']);
7720
7759
  }
7721
7760
  }
7722
7761
 
@@ -7732,7 +7771,15 @@ enifed('ember-htmlbars/system/merge-view-bindings', ['exports', 'ember-metal/cor
7732
7771
  props.classNameBindings = classBindings;
7733
7772
 
7734
7773
  for (var i = 0; i < classBindings.length; i++) {
7735
- var classBinding = class_name_binding.streamifyClassNameBinding(view, classBindings[i]);
7774
+ var initialValue = classBindings[i];
7775
+ var classBinding;
7776
+
7777
+ if (utils.isStream(initialValue)) {
7778
+ classBinding = initialValue;
7779
+ } else {
7780
+ classBinding = class_name_binding.streamifyClassNameBinding(view, initialValue);
7781
+ }
7782
+
7736
7783
  if (utils.isStream(classBinding)) {
7737
7784
  classBindings[i] = classBinding;
7738
7785
  } else {
@@ -7771,8 +7818,8 @@ enifed('ember-htmlbars/system/render-view', ['exports', 'ember-metal/core', 'emb
7771
7818
  function renderHTMLBarsTemplate(view, buffer, template) {
7772
7819
  Ember['default'].assert(
7773
7820
  'The template being rendered by `' + view + '` was compiled with `' + template.revision +
7774
- '` which does not match `Ember@1.11.0-beta.5.1501308c` (this revision).',
7775
- template.revision === 'Ember@1.11.0-beta.5.1501308c'
7821
+ '` which does not match `Ember@1.11.0` (this revision).',
7822
+ template.revision === 'Ember@1.11.0'
7776
7823
  );
7777
7824
 
7778
7825
  var contextualElement = buffer.innerContextualElement();
@@ -7812,7 +7859,7 @@ enifed('ember-htmlbars/templates/component', ['exports', 'ember-template-compile
7812
7859
  exports['default'] = template['default']((function() {
7813
7860
  return {
7814
7861
  isHTMLBars: true,
7815
- revision: "Ember@1.11.0-beta.5.1501308c",
7862
+ revision: "Ember@1.11.0",
7816
7863
  blockParams: 0,
7817
7864
  cachedFragment: null,
7818
7865
  hasRendered: false,
@@ -7859,7 +7906,7 @@ enifed('ember-htmlbars/templates/empty', ['exports', 'ember-template-compiler/sy
7859
7906
  exports['default'] = template['default']((function() {
7860
7907
  return {
7861
7908
  isHTMLBars: true,
7862
- revision: "Ember@1.11.0-beta.5.1501308c",
7909
+ revision: "Ember@1.11.0",
7863
7910
  blockParams: 0,
7864
7911
  cachedFragment: null,
7865
7912
  hasRendered: false,
@@ -7899,7 +7946,7 @@ enifed('ember-htmlbars/templates/link-to-escaped', ['exports', 'ember-template-c
7899
7946
  exports['default'] = template['default']((function() {
7900
7947
  return {
7901
7948
  isHTMLBars: true,
7902
- revision: "Ember@1.11.0-beta.5.1501308c",
7949
+ revision: "Ember@1.11.0",
7903
7950
  blockParams: 0,
7904
7951
  cachedFragment: null,
7905
7952
  hasRendered: false,
@@ -7946,7 +7993,7 @@ enifed('ember-htmlbars/templates/link-to-unescaped', ['exports', 'ember-template
7946
7993
  exports['default'] = template['default']((function() {
7947
7994
  return {
7948
7995
  isHTMLBars: true,
7949
- revision: "Ember@1.11.0-beta.5.1501308c",
7996
+ revision: "Ember@1.11.0",
7950
7997
  blockParams: 0,
7951
7998
  cachedFragment: null,
7952
7999
  hasRendered: false,
@@ -7994,7 +8041,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
7994
8041
  var child0 = (function() {
7995
8042
  return {
7996
8043
  isHTMLBars: true,
7997
- revision: "Ember@1.11.0-beta.5.1501308c",
8044
+ revision: "Ember@1.11.0",
7998
8045
  blockParams: 0,
7999
8046
  cachedFragment: null,
8000
8047
  hasRendered: false,
@@ -8037,7 +8084,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8037
8084
  var child0 = (function() {
8038
8085
  return {
8039
8086
  isHTMLBars: true,
8040
- revision: "Ember@1.11.0-beta.5.1501308c",
8087
+ revision: "Ember@1.11.0",
8041
8088
  blockParams: 0,
8042
8089
  cachedFragment: null,
8043
8090
  hasRendered: false,
@@ -8077,7 +8124,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8077
8124
  }());
8078
8125
  return {
8079
8126
  isHTMLBars: true,
8080
- revision: "Ember@1.11.0-beta.5.1501308c",
8127
+ revision: "Ember@1.11.0",
8081
8128
  blockParams: 0,
8082
8129
  cachedFragment: null,
8083
8130
  hasRendered: false,
@@ -8119,7 +8166,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8119
8166
  var child0 = (function() {
8120
8167
  return {
8121
8168
  isHTMLBars: true,
8122
- revision: "Ember@1.11.0-beta.5.1501308c",
8169
+ revision: "Ember@1.11.0",
8123
8170
  blockParams: 0,
8124
8171
  cachedFragment: null,
8125
8172
  hasRendered: false,
@@ -8159,7 +8206,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8159
8206
  }());
8160
8207
  return {
8161
8208
  isHTMLBars: true,
8162
- revision: "Ember@1.11.0-beta.5.1501308c",
8209
+ revision: "Ember@1.11.0",
8163
8210
  blockParams: 0,
8164
8211
  cachedFragment: null,
8165
8212
  hasRendered: false,
@@ -8199,7 +8246,7 @@ enifed('ember-htmlbars/templates/select', ['exports', 'ember-template-compiler/s
8199
8246
  }());
8200
8247
  return {
8201
8248
  isHTMLBars: true,
8202
- revision: "Ember@1.11.0-beta.5.1501308c",
8249
+ revision: "Ember@1.11.0",
8203
8250
  blockParams: 0,
8204
8251
  cachedFragment: null,
8205
8252
  hasRendered: false,
@@ -11201,8 +11248,8 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met
11201
11248
  This is a more semantically meaningful alias of `computed.oneWay`,
11202
11249
  whose name is somewhat ambiguous as to which direction the data flows.
11203
11250
 
11204
- @method computed.reads
11205
- @for Ember
11251
+ @method reads
11252
+ @for Ember.computed
11206
11253
  @param {String} dependentKey
11207
11254
  @return {Ember.ComputedProperty} computed property which creates a
11208
11255
  one way computed property to the original value for property.
@@ -11346,7 +11393,7 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11346
11393
 
11347
11394
  @class Ember
11348
11395
  @static
11349
- @version 1.11.0-beta.5.1501308c
11396
+ @version 1.11.0
11350
11397
  */
11351
11398
 
11352
11399
  if ('undefined' === typeof Ember) {
@@ -11374,10 +11421,10 @@ enifed('ember-metal/core', ['exports'], function (exports) {
11374
11421
  /**
11375
11422
  @property VERSION
11376
11423
  @type String
11377
- @default '1.11.0-beta.5.1501308c'
11424
+ @default '1.11.0'
11378
11425
  @static
11379
11426
  */
11380
- Ember.VERSION = '1.11.0-beta.5.1501308c';
11427
+ Ember.VERSION = '1.11.0';
11381
11428
 
11382
11429
  /**
11383
11430
  Standard environmental variables. You can define these in a global `EmberENV`
@@ -11542,7 +11589,7 @@ enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/platform/create',
11542
11589
  // Remove "use strict"; from transpiled module until
11543
11590
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
11544
11591
  //
11545
- // REMOVE_USE_STRICT: true
11592
+ "REMOVE_USE_STRICT: true";
11546
11593
 
11547
11594
  function keysForDep(depsMeta, depKey) {
11548
11595
  var keys = depsMeta[depKey];
@@ -11998,7 +12045,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils'
11998
12045
  // Remove "use strict"; from transpiled module until
11999
12046
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
12000
12047
  //
12001
- // REMOVE_USE_STRICT: true
12048
+ "REMOVE_USE_STRICT: true";
12002
12049
 
12003
12050
  /**
12004
12051
  @module ember-metal
@@ -13216,7 +13263,10 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array',
13216
13263
  @return {Boolean}
13217
13264
  */
13218
13265
  remove: function(obj, _guid) {
13219
- Ember.deprecate('Calling `OrderedSet.prototype.remove` has been deprecated, please use `OrderedSet.prototype.delete` instead.', this._silenceRemoveDeprecation);
13266
+ Ember.deprecate(
13267
+ 'Calling `OrderedSet.prototype.remove` has been deprecated, please use `OrderedSet.prototype.delete` instead.',
13268
+ this._silenceRemoveDeprecation
13269
+ );
13220
13270
 
13221
13271
  return this["delete"](obj, _guid);
13222
13272
  },
@@ -13631,7 +13681,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge',
13631
13681
  // Remove "use strict"; from transpiled module until
13632
13682
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
13633
13683
  //
13634
- // REMOVE_USE_STRICT: true
13684
+ "REMOVE_USE_STRICT: true";
13635
13685
 
13636
13686
  /**
13637
13687
  @module ember
@@ -14783,8 +14833,7 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p
14783
14833
  // Remove "use strict"; from transpiled module until
14784
14834
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
14785
14835
  //
14786
- // REMOVE_USE_STRICT: true
14787
- //
14836
+ "REMOVE_USE_STRICT: true";
14788
14837
 
14789
14838
  var create;
14790
14839
  // ES5 15.2.3.5
@@ -15000,7 +15049,7 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
15000
15049
  })();
15001
15050
 
15002
15051
  if (!canDefinePropertyOnDOM) {
15003
- defineProperty = function(obj, keyName, desc) {
15052
+ exports.defineProperty = defineProperty = function(obj, keyName, desc) {
15004
15053
  var isNode;
15005
15054
 
15006
15055
  if (typeof Node === "object") {
@@ -15020,7 +15069,7 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
15020
15069
  }
15021
15070
 
15022
15071
  if (!hasES5CompliantDefineProperty) {
15023
- defineProperty = function definePropertyPolyfill(obj, keyName, desc) {
15072
+ exports.defineProperty = defineProperty = function definePropertyPolyfill(obj, keyName, desc) {
15024
15073
  if (!desc.get) { obj[keyName] = desc.value; }
15025
15074
  };
15026
15075
  }
@@ -15029,7 +15078,6 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) {
15029
15078
  var canDefineNonEnumerableProperties = hasES5CompliantDefineProperty;
15030
15079
 
15031
15080
  exports.hasES5CompliantDefineProperty = hasES5CompliantDefineProperty;
15032
- exports.defineProperty = defineProperty;
15033
15081
  exports.hasPropertyAccessors = hasPropertyAccessors;
15034
15082
  exports.canDefineNonEnumerableProperties = canDefineNonEnumerableProperties;
15035
15083
 
@@ -17072,7 +17120,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor
17072
17120
  // Remove "use strict"; from transpiled module until
17073
17121
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
17074
17122
  //
17075
- // REMOVE_USE_STRICT: true
17123
+ "REMOVE_USE_STRICT: true";
17076
17124
 
17077
17125
  var _uuid = 0;
17078
17126
 
@@ -17724,7 +17772,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor
17724
17772
 
17725
17773
  var tryFinally;
17726
17774
  if (needsFinallyFix) {
17727
- tryFinally = function(tryable, finalizer, binding) {
17775
+ exports.tryFinally = tryFinally = function(tryable, finalizer, binding) {
17728
17776
  var result, finalResult, finalError;
17729
17777
 
17730
17778
  binding = binding || this;
@@ -17744,7 +17792,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor
17744
17792
  return (finalResult === undefined) ? result : finalResult;
17745
17793
  };
17746
17794
  } else {
17747
- tryFinally = function(tryable, finalizer, binding) {
17795
+ exports.tryFinally = tryFinally = function(tryable, finalizer, binding) {
17748
17796
  var result, finalResult;
17749
17797
 
17750
17798
  binding = binding || this;
@@ -17800,7 +17848,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor
17800
17848
  */
17801
17849
  var tryCatchFinally;
17802
17850
  if (needsFinallyFix) {
17803
- tryCatchFinally = function(tryable, catchable, finalizer, binding) {
17851
+ exports.tryCatchFinally = tryCatchFinally = function(tryable, catchable, finalizer, binding) {
17804
17852
  var result, finalResult, finalError;
17805
17853
 
17806
17854
  binding = binding || this;
@@ -17822,7 +17870,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor
17822
17870
  return (finalResult === undefined) ? result : finalResult;
17823
17871
  };
17824
17872
  } else {
17825
- tryCatchFinally = function(tryable, catchable, finalizer, binding) {
17873
+ exports.tryCatchFinally = tryCatchFinally = function(tryable, catchable, finalizer, binding) {
17826
17874
  var result, finalResult;
17827
17875
 
17828
17876
  binding = binding || this;
@@ -18020,8 +18068,6 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor
18020
18068
  exports.GUID_KEY = GUID_KEY;
18021
18069
  exports.META_DESC = META_DESC;
18022
18070
  exports.EMPTY_META = EMPTY_META;
18023
- exports.tryCatchFinally = tryCatchFinally;
18024
- exports.tryFinally = tryFinally;
18025
18071
 
18026
18072
  });
18027
18073
  enifed('ember-metal/watch_key', ['exports', 'ember-metal/core', 'ember-metal/utils', 'ember-metal/platform/define_property', 'ember-metal/properties'], function (exports, Ember, utils, define_property, properties) {
@@ -18738,7 +18784,7 @@ enifed('ember-routing-htmlbars/helpers/query-params', ['exports', 'ember-metal/c
18738
18784
  }
18739
18785
 
18740
18786
  });
18741
- enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core', 'ember-metal/error', 'ember-runtime/system/string', 'ember-routing/system/generate_controller', 'ember-metal/streams/utils', 'ember-htmlbars/system/merge-view-bindings', 'ember-htmlbars/system/append-templated-view'], function (exports, Ember, EmberError, string, generate_controller, utils, mergeViewBindings, appendTemplatedView) {
18787
+ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core', 'ember-metal/error', 'ember-runtime/system/string', 'ember-routing/system/generate_controller', 'ember-metal/streams/utils', 'ember-htmlbars/system/merge-view-bindings', 'ember-htmlbars/system/append-templated-view', 'ember-metal/platform/create'], function (exports, Ember, EmberError, string, generate_controller, utils, mergeViewBindings, appendTemplatedView, create) {
18742
18788
 
18743
18789
  'use strict';
18744
18790
 
@@ -18788,8 +18834,19 @@ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core',
18788
18834
  name = name.replace(/\//g, '.');
18789
18835
  // \ legacy slash as namespace support
18790
18836
 
18837
+ var templateName = 'template:' + name;
18838
+ Ember['default'].assert(
18839
+ "You used `{{render '" + name + "'}}`, but '" + name + "' can not be " +
18840
+ "found as either a template or a view.",
18841
+ container._registry.has("view:" + name) || container._registry.has(templateName) || !!options.template
18842
+ );
18791
18843
 
18792
- view = container.lookup('view:' + name) || container.lookup('view:default');
18844
+ var template = options.template;
18845
+ view = container.lookup('view:' + name);
18846
+ if (!view) {
18847
+ view = container.lookup('view:default');
18848
+ template = template || container.lookup(templateName);
18849
+ }
18793
18850
 
18794
18851
  // provide controller override
18795
18852
  var controllerName;
@@ -18838,14 +18895,6 @@ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core',
18838
18895
 
18839
18896
  hash.viewName = string.camelize(name);
18840
18897
 
18841
- var templateName = 'template:' + name;
18842
- Ember['default'].assert(
18843
- "You used `{{render '" + name + "'}}`, but '" + name + "' can not be " +
18844
- "found as either a template or a view.",
18845
- container._registry.has("view:" + name) || container._registry.has(templateName) || !!options.template
18846
- );
18847
- var template = options.template || container.lookup(templateName);
18848
-
18849
18898
  if (router && !initialContext) {
18850
18899
  router._connectActiveView(name, view);
18851
18900
  }
@@ -18856,10 +18905,55 @@ enifed('ember-routing-htmlbars/helpers/render', ['exports', 'ember-metal/core',
18856
18905
  helperName: 'render "' + name + '"'
18857
18906
  };
18858
18907
 
18908
+ impersonateAnOutlet(currentView, view, name);
18859
18909
  mergeViewBindings['default'](currentView, props, hash);
18860
18910
  appendTemplatedView['default'](currentView, options.morph, view, props);
18861
18911
  }
18862
18912
 
18913
+ // Megahax to make outlets inside the render helper work, until we
18914
+ // can kill that behavior at 2.0.
18915
+ function impersonateAnOutlet(currentView, view, name) {
18916
+ view._childOutlets = Ember['default'].A();
18917
+ view._isOutlet = true;
18918
+ view._outletName = '__ember_orphans__';
18919
+ view._matchOutletName = name;
18920
+ view.setOutletState = function(state) {
18921
+ var ownState;
18922
+ if (state && (ownState = state.outlets[this._matchOutletName])) {
18923
+ this._outletState = {
18924
+ render: { name: 'render helper stub' },
18925
+ outlets: create['default'](null)
18926
+ };
18927
+ this._outletState.outlets[ownState.render.outlet] = ownState;
18928
+ ownState.wasUsed = true;
18929
+ } else {
18930
+ this._outletState = null;
18931
+ }
18932
+ for (var i = 0; i < this._childOutlets.length; i++) {
18933
+ var child = this._childOutlets[i];
18934
+ child.setOutletState(this._outletState && this._outletState.outlets[child._outletName]);
18935
+ }
18936
+ };
18937
+
18938
+ var pointer = currentView;
18939
+ var po;
18940
+ while (pointer && !pointer._isOutlet) {
18941
+ pointer = pointer._parentView;
18942
+ }
18943
+ while (pointer && (po = pointer._parentOutlet())) {
18944
+ pointer = po;
18945
+ }
18946
+ if (pointer) {
18947
+ // we've found the toplevel outlet. Subscribe to its
18948
+ // __ember_orphan__ child outlet, which is our hack convention for
18949
+ // stashing outlet state that may target the render helper.
18950
+ pointer._childOutlets.push(view);
18951
+ if (pointer._outletState) {
18952
+ view.setOutletState(pointer._outletState.outlets[view._outletName]);
18953
+ }
18954
+ }
18955
+ }
18956
+
18863
18957
  });
18864
18958
  enifed('ember-routing-views', ['exports', 'ember-metal/core', 'ember-routing-views/views/link', 'ember-routing-views/views/outlet'], function (exports, Ember, link, outlet) {
18865
18959
 
@@ -19081,7 +19175,10 @@ enifed('ember-routing-views/views/link', ['exports', 'ember-metal/core', 'ember-
19081
19175
  init: function() {
19082
19176
  this._super.apply(this, arguments);
19083
19177
 
19084
- Ember['default'].deprecate('Using currentWhen with {{link-to}} is deprecated in favor of `current-when`.', !this.currentWhen);
19178
+ Ember['default'].deprecate(
19179
+ 'Using currentWhen with {{link-to}} is deprecated in favor of `current-when`.',
19180
+ !this.currentWhen
19181
+ );
19085
19182
 
19086
19183
  // Map desired event name to invoke function
19087
19184
  var eventName = property_get.get(this, 'eventName');
@@ -19501,7 +19598,7 @@ enifed('ember-routing-views/views/outlet', ['exports', 'ember-views/views/contai
19501
19598
  var CoreOutletView = ContainerView['default'].extend({
19502
19599
  init: function() {
19503
19600
  this._super();
19504
- this._childOutlets = [];
19601
+ this._childOutlets = Ember.A();
19505
19602
  this._outletState = null;
19506
19603
  },
19507
19604
 
@@ -20066,7 +20163,7 @@ enifed('ember-routing/location/api', ['exports', 'ember-metal/core', 'ember-meta
20066
20163
  */
20067
20164
  registerImplementation: function(name, implementation) {
20068
20165
  Ember['default'].deprecate('Using the Ember.Location.registerImplementation is no longer supported.' +
20069
- ' Register your custom location implementation with the container instead.', false);
20166
+ ' Register your custom location implementation with the container instead.');
20070
20167
 
20071
20168
  this.implementations[name] = implementation;
20072
20169
  },
@@ -20947,7 +21044,7 @@ enifed('ember-routing/system/controller_for', ['exports'], function (exports) {
20947
21044
  exports['default'] = controllerFor;
20948
21045
 
20949
21046
  });
20950
- enifed('ember-routing/system/dsl', ['exports', 'ember-metal/core'], function (exports, Ember) {
21047
+ enifed('ember-routing/system/dsl', ['exports', 'ember-metal/core', 'ember-metal/array'], function (exports, Ember, array) {
20951
21048
 
20952
21049
  'use strict';
20953
21050
 
@@ -20975,7 +21072,7 @@ enifed('ember-routing/system/dsl', ['exports', 'ember-metal/core'], function (ex
20975
21072
  (function() {
20976
21073
  if (options.overrideNameAssertion === true) { return true; }
20977
21074
 
20978
- return ['array', 'basic', 'object', 'application'].indexOf(name) === -1;
21075
+ return array.indexOf.call(['array', 'basic', 'object', 'application'], name) === -1;
20979
21076
  })()
20980
21077
  );
20981
21078
 
@@ -21353,7 +21450,7 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
21353
21450
  variable and getQueryParamsFor, using the supplied routeName.
21354
21451
 
21355
21452
  @method paramsFor
21356
- @param {String} routename
21453
+ @param {String} name
21357
21454
 
21358
21455
  */
21359
21456
  paramsFor: function(name) {
@@ -21719,6 +21816,38 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
21719
21816
  @param {Transition} transition
21720
21817
  */
21721
21818
 
21819
+ /**
21820
+ This event is triggered when the router enters the route. It is
21821
+ not executed when the model for the route changes.
21822
+
21823
+ ```javascript
21824
+ App.ApplicationRoute = Ember.Route.extend({
21825
+ collectAnalytics: function(){
21826
+ collectAnalytics();
21827
+ }.on('activate')
21828
+ });
21829
+ ```
21830
+
21831
+ @event activate
21832
+ @since 1.9.0
21833
+ */
21834
+
21835
+ /**
21836
+ This event is triggered when the router completely exits this
21837
+ route. It is not executed when the model for the route changes.
21838
+
21839
+ ```javascript
21840
+ App.IndexRoute = Ember.Route.extend({
21841
+ trackPageLeaveAnalytics: function(){
21842
+ trackPageLeaveAnalytics();
21843
+ }.on('deactivate')
21844
+ });
21845
+ ```
21846
+
21847
+ @event deactivate
21848
+ @since 1.9.0
21849
+ */
21850
+
21722
21851
  /**
21723
21852
  The controller associated with this route.
21724
21853
 
@@ -22967,27 +23096,45 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
22967
23096
  disconnectOutlet: function(options) {
22968
23097
  var outletName;
22969
23098
  var parentView;
22970
- var parent;
22971
23099
  if (!options || typeof options === "string") {
22972
23100
  outletName = options;
22973
23101
  } else {
22974
23102
  outletName = options.outlet;
22975
23103
  parentView = options.parentView;
22976
23104
  }
22977
-
22978
23105
  parentView = parentView && parentView.replace(/\//g, '.');
22979
- parent = parentRoute(this);
23106
+ outletName = outletName || 'main';
23107
+ this._disconnectOutlet(outletName, parentView);
23108
+ for (var i = 0; i < this.router.router.currentHandlerInfos.length; i++) {
23109
+ // This non-local state munging is sadly necessary to maintain
23110
+ // backward compatibility with our existing semantics, which allow
23111
+ // any route to disconnectOutlet things originally rendered by any
23112
+ // other route. This should all get cut in 2.0.
23113
+ this.router.router.
23114
+ currentHandlerInfos[i].handler._disconnectOutlet(outletName, parentView);
23115
+ }
23116
+ },
23117
+
23118
+ _disconnectOutlet: function(outletName, parentView) {
23119
+ var parent = parentRoute(this);
22980
23120
  if (parent && parentView === parent.routeName) {
22981
23121
  parentView = undefined;
22982
23122
  }
22983
- outletName = outletName || 'main';
22984
-
22985
23123
  for (var i = 0; i < this.connections.length; i++) {
22986
23124
  var connection = this.connections[i];
22987
23125
  if (connection.outlet === outletName && connection.into === parentView) {
22988
- this.connections.splice(i, 1);
23126
+ // This neuters the disconnected outlet such that it doesn't
23127
+ // render anything, but it leaves an entry in the outlet
23128
+ // hierarchy so that any existing other renders that target it
23129
+ // don't suddenly blow up. They will still stick themselves
23130
+ // into its outlets, which won't render anywhere. All of this
23131
+ // statefulness should get the machete in 2.0.
23132
+ this.connections[i] = {
23133
+ into: connection.into,
23134
+ outlet: connection.outlet,
23135
+ name: connection.name
23136
+ };
22989
23137
  run['default'].once(this.router, '_setOutlets');
22990
- return;
22991
23138
  }
22992
23139
  }
22993
23140
  },
@@ -23079,8 +23226,6 @@ enifed('ember-routing/system/route', ['exports', 'ember-metal/core', 'ember-meta
23079
23226
  }
23080
23227
  }
23081
23228
 
23082
- Ember['default'].assert("An outlet ("+outlet+") was specified but was not found.", outlet === 'main' || into);
23083
-
23084
23229
  var parent;
23085
23230
  if (into && (parent = parentRoute(route)) && into === parentRoute(route).routeName) {
23086
23231
  into = undefined;
@@ -23320,15 +23465,18 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/core', 'ember-met
23320
23465
 
23321
23466
  for (var i = 0; i < handlerInfos.length; i++) {
23322
23467
  route = handlerInfos[i].handler;
23323
- var connections = normalizedConnections(route);
23468
+ var connections = route.connections;
23324
23469
  var ownState;
23325
23470
  for (var j = 0; j < connections.length; j++) {
23326
23471
  var appended = appendLiveRoute(liveRoutes, defaultParentState, connections[j]);
23327
23472
  liveRoutes = appended.liveRoutes;
23328
- if (appended.ownState.render.name === route.routeName) {
23473
+ if (appended.ownState.render.name === route.routeName || appended.ownState.render.outlet === 'main') {
23329
23474
  ownState = appended.ownState;
23330
23475
  }
23331
23476
  }
23477
+ if (connections.length === 0) {
23478
+ ownState = representEmptyRoute(liveRoutes, defaultParentState, route);
23479
+ }
23332
23480
  defaultParentState = ownState;
23333
23481
  }
23334
23482
  if (!this._toplevelView) {
@@ -24140,8 +24288,17 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/core', 'ember-met
24140
24288
  if (target) {
24141
24289
  property_set.set(target.outlets, renderOptions.outlet, myState);
24142
24290
  } else {
24143
- Ember['default'].assert("You attempted to render into '" + renderOptions.into + "' but it was not found", !renderOptions.into);
24144
- liveRoutes = myState;
24291
+ if (renderOptions.into) {
24292
+ // Megahax time. Post-2.0-breaking-changes, we will just assert
24293
+ // right here that the user tried to target a nonexistent
24294
+ // thing. But for now we still need to support the `render`
24295
+ // helper, and people are allowed to target templates rendered
24296
+ // by the render helper. So instead we defer doing anyting with
24297
+ // these orphan renders until afterRender.
24298
+ appendOrphan(liveRoutes, renderOptions.into, myState);
24299
+ } else {
24300
+ liveRoutes = myState;
24301
+ }
24145
24302
  }
24146
24303
  return {
24147
24304
  liveRoutes: liveRoutes,
@@ -24149,36 +24306,47 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/core', 'ember-met
24149
24306
  };
24150
24307
  }
24151
24308
 
24152
- function normalizedConnections(route) {
24153
- var connections = route.connections;
24154
- var mainConnections = [];
24155
- var otherConnections = [];
24156
-
24157
- for (var i = 0; i < connections.length; i++) {
24158
- var connection = connections[i];
24159
- if (connection.outlet === 'main') {
24160
- mainConnections.push(connection);
24161
- } else {
24162
- otherConnections.push(connection);
24163
- }
24309
+ function appendOrphan(liveRoutes, into, myState) {
24310
+ if (!liveRoutes.outlets.__ember_orphans__) {
24311
+ liveRoutes.outlets.__ember_orphans__ = {
24312
+ render: {
24313
+ name: '__ember_orphans__'
24314
+ },
24315
+ outlets: create['default'](null)
24316
+ };
24164
24317
  }
24318
+ liveRoutes.outlets.__ember_orphans__.outlets[into] = myState;
24319
+ Ember['default'].run.schedule('afterRender', function() {
24320
+ // `wasUsed` gets set by the render helper. See the function
24321
+ // `impersonateAnOutlet`.
24322
+ Ember['default'].assert("You attempted to render into '" + into + "' but it was not found",
24323
+ liveRoutes.outlets.__ember_orphans__.outlets[into].wasUsed);
24324
+ });
24325
+ }
24165
24326
 
24166
- if (mainConnections.length === 0) {
24167
- // There's always an entry to represent the route, even if it
24168
- // doesn't actually render anything into its own
24169
- // template. This gives other routes a place to target.
24170
- mainConnections.push({
24171
- name: route.routeName,
24172
- outlet: 'main'
24173
- });
24327
+ function representEmptyRoute(liveRoutes, defaultParentState, route) {
24328
+ // the route didn't render anything
24329
+ var alreadyAppended = findLiveRoute(liveRoutes, route.routeName);
24330
+ if (alreadyAppended) {
24331
+ // But some other route has already rendered our default
24332
+ // template, so that becomes the default target for any
24333
+ // children we may have.
24334
+ return alreadyAppended;
24335
+ } else {
24336
+ // Create an entry to represent our default template name,
24337
+ // just so other routes can target it and inherit its place
24338
+ // in the outlet hierarchy.
24339
+ defaultParentState.outlets.main = {
24340
+ render: {
24341
+ name: route.routeName,
24342
+ outlet: 'main'
24343
+ },
24344
+ outlets: {}
24345
+ };
24346
+ return defaultParentState;
24174
24347
  }
24175
-
24176
- // We process main connections first, because a main connection may
24177
- // be targeted by other connections.
24178
- return mainConnections.concat(otherConnections);
24179
24348
  }
24180
24349
 
24181
-
24182
24350
  exports['default'] = EmberRouter;
24183
24351
 
24184
24352
  });
@@ -26365,7 +26533,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal
26365
26533
  exports.union = union;
26366
26534
 
26367
26535
  });
26368
- enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/enumerable_utils', 'ember-runtime/system/array_proxy', 'ember-runtime/mixins/sortable', 'ember-runtime/mixins/controller', 'ember-metal/computed', 'ember-metal/error'], function (exports, Ember, property_get, enumerable_utils, ArrayProxy, SortableMixin, ControllerMixin, computed, EmberError) {
26536
+ enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/core', 'ember-metal/property_get', 'ember-metal/enumerable_utils', 'ember-runtime/system/array_proxy', 'ember-runtime/mixins/sortable', 'ember-runtime/mixins/controller', 'ember-metal/computed', 'ember-metal/error', 'ember-runtime/mixins/array'], function (exports, Ember, property_get, enumerable_utils, ArrayProxy, SortableMixin, ControllerMixin, computed, EmberError, EmberArray) {
26369
26537
 
26370
26538
  'use strict';
26371
26539
 
@@ -26475,7 +26643,17 @@ enifed('ember-runtime/controllers/array_controller', ['exports', 'ember-metal/co
26475
26643
  this._subControllers = [];
26476
26644
  },
26477
26645
 
26478
- model: computed.computed(function () {
26646
+ model: computed.computed(function (key, value) {
26647
+ if (arguments.length > 1) {
26648
+ Ember['default'].assert(
26649
+ 'ArrayController expects `model` to implement the Ember.Array mixin. ' +
26650
+ 'This can often be fixed by wrapping your model with `Ember.A()`.',
26651
+ EmberArray['default'].detect(value)
26652
+ );
26653
+
26654
+ return value;
26655
+ }
26656
+
26479
26657
  return Ember['default'].A();
26480
26658
  }),
26481
26659
 
@@ -26559,7 +26737,7 @@ enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/core', '
26559
26737
 
26560
26738
  function controllerInjectionHelper(factory) {
26561
26739
  Ember['default'].assert("Defining an injected controller property on a " +
26562
- "non-controller is not allowed.", Controller.detect(factory));
26740
+ "non-controller is not allowed.", Mixin['default'].detect(factory.PrototypeMixin));
26563
26741
  }
26564
26742
 
26565
26743
  /**
@@ -26585,8 +26763,9 @@ enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/core', '
26585
26763
  });
26586
26764
  ```
26587
26765
 
26588
- @method inject.controller
26589
- @for Ember
26766
+ @method controller
26767
+ @since 1.10.0
26768
+ @for Ember.inject
26590
26769
  @param {String} name (optional) name of the controller to inject, defaults
26591
26770
  to the property's name
26592
26771
  @return {Ember.InjectedProperty} injection descriptor instance
@@ -26624,7 +26803,11 @@ enifed('ember-runtime/controllers/object_controller', ['exports', 'ember-metal/c
26624
26803
  **/
26625
26804
  exports['default'] = ObjectProxy['default'].extend(ControllerMixin['default'], {
26626
26805
  init: function() {
26627
- Ember['default'].deprecate(objectControllerDeprecation, this.isGenerated);
26806
+ this._super();
26807
+
26808
+ Ember['default'].deprecate(objectControllerDeprecation, this.isGenerated, {
26809
+ url: 'http://emberjs.com/guides/deprecations/#toc_objectcontroller'
26810
+ });
26628
26811
  }
26629
26812
  });
26630
26813
 
@@ -27014,13 +27197,13 @@ enifed('ember-runtime/ext/rsvp', ['exports', 'ember-metal/core', 'ember-metal/lo
27014
27197
 
27015
27198
  if (Ember['default'].testing && async) { asyncStart(); }
27016
27199
 
27017
- run['default'].backburner.schedule('actions', function(){
27200
+ run['default'].backburner.schedule('actions', function() {
27018
27201
  if (Ember['default'].testing && async) { asyncEnd(); }
27019
27202
  callback(promise);
27020
27203
  });
27021
27204
  });
27022
27205
 
27023
- RSVP.Promise.prototype.fail = function(callback, label){
27206
+ RSVP.Promise.prototype.fail = function(callback, label) {
27024
27207
  Ember['default'].deprecate('RSVP.Promise.fail has been renamed as RSVP.Promise.catch');
27025
27208
  return this['catch'](callback, label);
27026
27209
  };
@@ -27192,7 +27375,8 @@ enifed('ember-runtime/inject', ['exports', 'ember-metal/core', 'ember-metal/enum
27192
27375
 
27193
27376
  @private
27194
27377
  @method createInjectionHelper
27195
- @namespace Ember
27378
+ @since 1.10.0
27379
+ @for Ember
27196
27380
  @param {String} type The container type the helper will inject
27197
27381
  @param {Function} validator A validation callback that is executed at mixin-time
27198
27382
  */
@@ -27210,7 +27394,8 @@ enifed('ember-runtime/inject', ['exports', 'ember-metal/core', 'ember-metal/enum
27210
27394
 
27211
27395
  @private
27212
27396
  @method validatePropertyInjections
27213
- @namespace Ember
27397
+ @since 1.10.0
27398
+ @for Ember
27214
27399
  @param {Object} factory The factory object
27215
27400
  */
27216
27401
  function validatePropertyInjections(factory) {
@@ -27304,7 +27489,8 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-metal/core', 'ember-met
27304
27489
  Ember['default'].deprecate(
27305
27490
  string.fmt('You attempted to access `%@` from `%@`, but object proxying is deprecated. ' +
27306
27491
  'Please use `model.%@` instead.', [key, this, key]),
27307
- !this.isController
27492
+ !this.isController,
27493
+ { url: 'http://emberjs.com/guides/deprecations/#toc_objectcontroller' }
27308
27494
  );
27309
27495
  return property_get.get(content, key);
27310
27496
  }
@@ -27326,7 +27512,8 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'ember-metal/core', 'ember-met
27326
27512
  Ember['default'].deprecate(
27327
27513
  string.fmt('You attempted to set `%@` from `%@`, but object proxying is deprecated. ' +
27328
27514
  'Please use `model.%@` instead.', [key, this, key]),
27329
- !this.isController
27515
+ !this.isController,
27516
+ { url: 'http://emberjs.com/guides/deprecations/#toc_objectcontroller' }
27330
27517
  );
27331
27518
  return property_set.set(content, key, value);
27332
27519
  }
@@ -27483,7 +27670,7 @@ enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal/merge', '
27483
27670
  hashName = 'actions';
27484
27671
  } else if (utils.typeOf(props.events) === 'object') {
27485
27672
  Ember.deprecate('Action handlers contained in an `events` object are deprecated in favor' +
27486
- ' of putting them in an `actions` object', false);
27673
+ ' of putting them in an `actions` object');
27487
27674
  hashName = 'events';
27488
27675
  }
27489
27676
 
@@ -28151,7 +28338,7 @@ enifed('ember-runtime/mixins/controller_content_model_alias_deprecation', ['expo
28151
28338
  props.model = props.content;
28152
28339
  delete props['content'];
28153
28340
 
28154
- Ember['default'].deprecate('Do not specify `content` on a Controller, use `model` instead.', false);
28341
+ Ember['default'].deprecate('Do not specify `content` on a Controller, use `model` instead.');
28155
28342
  }
28156
28343
  }
28157
28344
  });
@@ -28260,7 +28447,11 @@ enifed('ember-runtime/mixins/deferred', ['exports', 'ember-metal/core', 'ember-m
28260
28447
  },
28261
28448
 
28262
28449
  _deferred: computed.computed(function() {
28263
- Ember['default'].deprecate('Usage of Ember.DeferredMixin or Ember.Deferred is deprecated.', this._suppressDeferredDeprecation, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-ember-deferredmixin-and-ember-deferred' });
28450
+ Ember['default'].deprecate(
28451
+ 'Usage of Ember.DeferredMixin or Ember.Deferred is deprecated.',
28452
+ this._suppressDeferredDeprecation,
28453
+ { url: 'http://emberjs.com/guides/deprecations/#toc_ember-deferredmixin-and-ember-deferred' }
28454
+ );
28264
28455
 
28265
28456
  return RSVP['default'].defer('Ember: DeferredMixin - ' + this);
28266
28457
  })
@@ -30315,7 +30506,11 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal/core', 'ember
30315
30506
  },
30316
30507
 
30317
30508
  addBeforeObserver: function(key, target, method) {
30318
- Ember['default'].deprecate('Before observers are deprecated and will be removed in a future release. If you want to keep track of previous values you have to implement it yourself.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-beforeobservers' });
30509
+ Ember['default'].deprecate(
30510
+ 'Before observers are deprecated and will be removed in a future release. If you want to keep track of previous values you have to implement it yourself.',
30511
+ false,
30512
+ { url: 'http://emberjs.com/guides/deprecations/#toc_beforeobserver' }
30513
+ );
30319
30514
  observer.addBeforeObserver(this, key, target, method);
30320
30515
  },
30321
30516
 
@@ -31465,7 +31660,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal', 'ember-met
31465
31660
  // Remove "use strict"; from transpiled module until
31466
31661
  // https://bugs.webkit.org/show_bug.cgi?id=138038 is fixed
31467
31662
  //
31468
- // REMOVE_USE_STRICT: true
31663
+ "REMOVE_USE_STRICT: true";
31469
31664
 
31470
31665
  /**
31471
31666
  @module ember
@@ -32338,7 +32533,11 @@ enifed('ember-runtime/system/deferred', ['exports', 'ember-metal/core', 'ember-r
32338
32533
 
32339
32534
  var Deferred = EmberObject['default'].extend(DeferredMixin['default'], {
32340
32535
  init: function() {
32341
- Ember['default'].deprecate('Usage of Ember.Deferred is deprecated.', false, { url: 'http://emberjs.com/guides/deprecations/#toc_deprecate-ember-deferredmixin-and-ember-deferred' });
32536
+ Ember['default'].deprecate(
32537
+ 'Usage of Ember.Deferred is deprecated.',
32538
+ false,
32539
+ { url: 'http://emberjs.com/guides/deprecations/#toc_deferredmixin-and-ember-deferred' }
32540
+ );
32342
32541
  this._super.apply(this, arguments);
32343
32542
  }
32344
32543
  });
@@ -32923,7 +33122,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
32923
33122
  }
32924
33123
  });
32925
33124
 
32926
- NativeArray = NativeArray.without.apply(NativeArray, ignore);
33125
+ exports.NativeArray = NativeArray = NativeArray.without.apply(NativeArray, ignore);
32927
33126
 
32928
33127
  /**
32929
33128
  Creates an `Ember.NativeArray` from an Array like object.
@@ -32980,7 +33179,7 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
32980
33179
  NativeArray.activate = function() {
32981
33180
  NativeArray.apply(Array.prototype);
32982
33181
 
32983
- A = function(arr) { return arr || []; };
33182
+ exports.A = A = function(arr) { return arr || []; };
32984
33183
  };
32985
33184
 
32986
33185
  if (Ember['default'].EXTEND_PROTOTYPES === true || Ember['default'].EXTEND_PROTOTYPES.Array) {
@@ -32991,7 +33190,6 @@ enifed('ember-runtime/system/native_array', ['exports', 'ember-metal/core', 'emb
32991
33190
  exports['default'] = NativeArray;
32992
33191
 
32993
33192
  exports.A = A;
32994
- exports.NativeArray = NativeArray;
32995
33193
 
32996
33194
  });
32997
33195
  enifed('ember-runtime/system/object', ['exports', 'ember-runtime/system/core_object', 'ember-runtime/mixins/observable'], function (exports, CoreObject, Observable) {
@@ -33028,6 +33226,7 @@ enifed('ember-runtime/system/service', ['exports', 'ember-runtime/system/object'
33028
33226
  @class Service
33029
33227
  @namespace Ember
33030
33228
  @extends Ember.Object
33229
+ @since 1.10.0
33031
33230
  */
33032
33231
  exports['default'] = Object['default'].extend();
33033
33232
 
@@ -34510,7 +34709,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta
34510
34709
  var disableComponentGeneration = true;
34511
34710
 
34512
34711
  return {
34513
- revision: 'Ember@1.11.0-beta.5.1501308c',
34712
+ revision: 'Ember@1.11.0',
34514
34713
 
34515
34714
  disableComponentGeneration: disableComponentGeneration,
34516
34715
 
@@ -34669,13 +34868,12 @@ enifed('ember-testing/adapters/qunit', ['exports', 'ember-testing/adapters/adapt
34669
34868
  });
34670
34869
 
34671
34870
  });
34672
- enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/run_loop', 'ember-views/system/jquery', 'ember-testing/test'], function (Ember, property_get, EmberError, run, jQuery, Test) {
34871
+ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/run_loop', 'ember-views/system/jquery', 'ember-testing/test', 'ember-runtime/ext/rsvp'], function (Ember, property_get, EmberError, run, jQuery, Test, RSVP) {
34673
34872
 
34674
34873
  'use strict';
34675
34874
 
34676
34875
  var helper = Test['default'].registerHelper;
34677
34876
  var asyncHelper = Test['default'].registerAsyncHelper;
34678
- var countAsync = 0;
34679
34877
 
34680
34878
  function currentRouteName(app) {
34681
34879
  var appController = app.__container__.lookup('controller:application');
@@ -34862,12 +35060,7 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
34862
35060
  }
34863
35061
 
34864
35062
  function wait(app, value) {
34865
- return Test['default'].promise(function(resolve) {
34866
- // If this is the first async promise, kick off the async test
34867
- if (++countAsync === 1) {
34868
- Test['default'].adapter.asyncStart();
34869
- }
34870
-
35063
+ return new RSVP['default'].Promise(function(resolve) {
34871
35064
  // Every 10ms, poll for the async thing to have finished
34872
35065
  var watcher = setInterval(function() {
34873
35066
  var router = app.__container__.lookup('router:main');
@@ -34891,11 +35084,6 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
34891
35084
  // Stop polling
34892
35085
  clearInterval(watcher);
34893
35086
 
34894
- // If this is the last async promise, end the async test
34895
- if (--countAsync === 0) {
34896
- Test['default'].adapter.asyncEnd();
34897
- }
34898
-
34899
35087
  // Synchronously resolve the promise
34900
35088
  run['default'](null, resolve, value);
34901
35089
  }, 10);
@@ -35547,7 +35735,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
35547
35735
 
35548
35736
  return function() {
35549
35737
  var args = slice.call(arguments);
35550
- var lastPromise = Test.lastPromise;
35738
+ var lastPromise;
35551
35739
 
35552
35740
  args.unshift(app);
35553
35741
 
@@ -35558,35 +35746,28 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
35558
35746
  return fn.apply(app, args);
35559
35747
  }
35560
35748
 
35561
- if (!lastPromise) {
35562
- // It's the first async helper in current context
35563
- lastPromise = fn.apply(app, args);
35564
- } else {
35565
- // wait for last helper's promise to resolve and then
35566
- // execute. To be safe, we need to tell the adapter we're going
35567
- // asynchronous here, because fn may not be invoked before we
35568
- // return.
35569
- Test.adapter.asyncStart();
35570
- run(function() {
35571
- lastPromise = Test.resolve(lastPromise).then(function() {
35572
- try {
35573
- return fn.apply(app, args);
35574
- } finally {
35575
- Test.adapter.asyncEnd();
35576
- }
35577
- });
35578
- });
35579
- }
35749
+ lastPromise = run(function() {
35750
+ return Test.resolve(Test.lastPromise);
35751
+ });
35580
35752
 
35581
- return lastPromise;
35753
+ // wait for last helper's promise to resolve and then
35754
+ // execute. To be safe, we need to tell the adapter we're going
35755
+ // asynchronous here, because fn may not be invoked before we
35756
+ // return.
35757
+ Test.adapter.asyncStart();
35758
+ return lastPromise.then(function() {
35759
+ return fn.apply(app, args);
35760
+ })["finally"](function() {
35761
+ Test.adapter.asyncEnd();
35762
+ });
35582
35763
  };
35583
35764
  }
35584
35765
 
35585
35766
  function run(fn) {
35586
35767
  if (!emberRun['default'].currentRunLoop) {
35587
- emberRun['default'](fn);
35768
+ return emberRun['default'](fn);
35588
35769
  } else {
35589
- fn();
35770
+ return fn();
35590
35771
  }
35591
35772
  }
35592
35773
 
@@ -35750,6 +35931,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
35750
35931
 
35751
35932
  Test.Promise.prototype = create['default'](RSVP['default'].Promise.prototype);
35752
35933
  Test.Promise.prototype.constructor = Test.Promise;
35934
+ Test.Promise.resolve = Test.resolve;
35753
35935
 
35754
35936
  // Patch `then` to isolate async methods
35755
35937
  // specifically `Ember.Test.lastPromise`
@@ -35766,7 +35948,6 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
35766
35948
  // 1. Set `Ember.Test.lastPromise` to null
35767
35949
  // 2. Invoke method
35768
35950
  // 3. Return the last promise created during method
35769
- // 4. Restore `Ember.Test.lastPromise` to original value
35770
35951
  function isolate(fn, val) {
35771
35952
  var value, lastPromise;
35772
35953
 
@@ -35776,6 +35957,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
35776
35957
  value = fn(val);
35777
35958
 
35778
35959
  lastPromise = Test.lastPromise;
35960
+ Test.lastPromise = null;
35779
35961
 
35780
35962
  // If the method returned a promise
35781
35963
  // return that promise. If not,
@@ -35783,12 +35965,11 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
35783
35965
  if ((value && (value instanceof Test.Promise)) || !lastPromise) {
35784
35966
  return value;
35785
35967
  } else {
35786
- run(function() {
35787
- lastPromise = Test.resolve(lastPromise).then(function() {
35968
+ return run(function() {
35969
+ return Test.resolve(lastPromise).then(function() {
35788
35970
  return value;
35789
35971
  });
35790
35972
  });
35791
- return lastPromise;
35792
35973
  }
35793
35974
  }
35794
35975
 
@@ -35847,7 +36028,7 @@ enifed('ember-views', ['exports', 'ember-runtime', 'ember-views/system/jquery',
35847
36028
  exports['default'] = Ember['default'];
35848
36029
 
35849
36030
  });
35850
- enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/streams/utils', 'ember-metal/run_loop'], function (exports, utils, run) {
36031
+ enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/core', 'ember-metal/streams/utils', 'ember-metal/run_loop'], function (exports, Ember, utils, run) {
35851
36032
 
35852
36033
  'use strict';
35853
36034
 
@@ -35860,7 +36041,13 @@ enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/streams/util
35860
36041
  this.init(attrName, attrValue);
35861
36042
  }
35862
36043
 
36044
+ var styleWarning = 'Binding style attributes may introduce cross-site scripting vulnerabilities; ' +
36045
+ 'please ensure that values being bound are properly escaped. For more information, ' +
36046
+ 'including how to disable this warning, see ' +
36047
+ 'http://emberjs.com/deprecations/v1.x/#toc_warning-when-binding-style-attributes.';
36048
+
35863
36049
  AttrNode.prototype.init = function init(attrName, simpleAttrValue) {
36050
+ this.isAttrNode = true;
35864
36051
  this.isView = true;
35865
36052
 
35866
36053
  this.tagName = '';
@@ -35892,12 +36079,18 @@ enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/streams/util
35892
36079
  if (this.isDestroying) {
35893
36080
  return;
35894
36081
  }
36082
+
35895
36083
  var value = utils.read(this.attrValue);
35896
36084
 
35897
36085
  if (this.attrName === 'value' && (value === null || value === undefined)) {
35898
36086
  value = '';
35899
36087
  }
35900
36088
 
36089
+ if (value === undefined) {
36090
+ value = null;
36091
+ }
36092
+
36093
+
35901
36094
  // If user is typing in a value we don't want to rerender and loose cursor position.
35902
36095
  if (this.hasRenderedInitially && this.attrName === 'value' && this._morph.element.value === value) {
35903
36096
  this.lastValue = value;
@@ -35905,12 +36098,31 @@ enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/streams/util
35905
36098
  }
35906
36099
 
35907
36100
  if (this.lastValue !== null || value !== null) {
36101
+ this._deprecateEscapedStyle(value);
35908
36102
  this._morph.setContent(value);
35909
36103
  this.lastValue = value;
35910
36104
  this.hasRenderedInitially = true;
35911
36105
  }
35912
36106
  };
35913
36107
 
36108
+ AttrNode.prototype._deprecateEscapedStyle = function AttrNode_deprecateEscapedStyle(value) {
36109
+ Ember['default'].warn(
36110
+ styleWarning,
36111
+ (function(name, value, escaped) {
36112
+ // SafeString
36113
+ if (value && value.toHTML) {
36114
+ return true;
36115
+ }
36116
+
36117
+ if (name !== 'style') {
36118
+ return true;
36119
+ }
36120
+
36121
+ return !escaped;
36122
+ }(this.attrName, value, this._morph.escaped))
36123
+ );
36124
+ };
36125
+
35914
36126
  AttrNode.prototype.rerender = function render() {
35915
36127
  this.isDirty = true;
35916
36128
  run['default'].schedule('render', this, this.renderIfDirty);
@@ -35927,8 +36139,19 @@ enifed('ember-views/attr_nodes/attr_node', ['exports', 'ember-metal/streams/util
35927
36139
  }
35928
36140
  };
35929
36141
 
36142
+ AttrNode.prototype.propertyDidChange = function render() {
36143
+ };
36144
+
36145
+ AttrNode.prototype._notifyBecameHidden = function render() {
36146
+ };
36147
+
36148
+ AttrNode.prototype._notifyBecameVisible = function render() {
36149
+ };
36150
+
35930
36151
  exports['default'] = AttrNode;
35931
36152
 
36153
+ exports.styleWarning = styleWarning;
36154
+
35932
36155
  });
35933
36156
  enifed('ember-views/attr_nodes/legacy_bind', ['exports', './attr_node', 'ember-runtime/system/string', 'ember-metal/utils', 'ember-metal/streams/utils', 'ember-metal/platform/create'], function (exports, AttrNode, string, utils, streams__utils, o_create) {
35934
36157
 
@@ -35956,14 +36179,15 @@ enifed('ember-views/attr_nodes/legacy_bind', ['exports', './attr_node', 'ember-r
35956
36179
  value = null;
35957
36180
  }
35958
36181
 
35959
- if (this.attrName === 'value' && value === null) {
36182
+ if ((this.attrName === 'value' || this.attrName === 'src') && value === null) {
35960
36183
  value = '';
35961
36184
  }
35962
36185
 
35963
36186
  Ember.assert(string.fmt("Attributes must be numbers, strings or booleans, not %@", [value]),
35964
- value === null || value === undefined || utils.typeOf(value) === 'number' || utils.typeOf(value) === 'string' || utils.typeOf(value) === 'boolean');
36187
+ value === null || value === undefined || utils.typeOf(value) === 'number' || utils.typeOf(value) === 'string' || utils.typeOf(value) === 'boolean' || !!(value && value.toHTML));
35965
36188
 
35966
36189
  if (this.lastValue !== null || value !== null) {
36190
+ this._deprecateEscapedStyle(value);
35967
36191
  this._morph.setContent(value);
35968
36192
  this.lastValue = value;
35969
36193
  }
@@ -37611,7 +37835,11 @@ enifed('ember-views/streams/utils', ['exports', 'ember-metal/core', 'ember-metal
37611
37835
  if (typeof value === 'string') {
37612
37836
  if (path_cache.isGlobal(value)) {
37613
37837
  viewClass = property_get.get(null, value);
37614
- Ember['default'].deprecate('Resolved the view "'+value+'" on the global context. Pass a view name to be looked up on the container instead, such as {{view "select"}}.', !viewClass, { url: 'http://emberjs.com/guides/deprecations/#toc_global-lookup-of-views' });
37838
+ Ember['default'].deprecate(
37839
+ 'Resolved the view "'+value+'" on the global context. Pass a view name to be looked up on the container instead, such as {{view "select"}}.',
37840
+ !viewClass,
37841
+ { url: 'http://emberjs.com/guides/deprecations/#toc_global-lookup-of-views' }
37842
+ );
37615
37843
  } else {
37616
37844
  Ember['default'].assert("View requires a container to resolve views not passed in through the context", !!container);
37617
37845
  viewClass = container.lookupFactory('view:'+value);
@@ -38715,70 +38943,6 @@ enifed('ember-views/system/renderer', ['exports', 'ember-metal/core', 'ember-met
38715
38943
 
38716
38944
  exports['default'] = EmberRenderer;
38717
38945
 
38718
- });
38719
- enifed('ember-views/system/sanitize_attribute_value', ['exports'], function (exports) {
38720
-
38721
- 'use strict';
38722
-
38723
- /* jshint scripturl:true */
38724
-
38725
- var badProtocols = {
38726
- 'javascript:': true,
38727
- 'vbscript:': true
38728
- };
38729
-
38730
- var badTags = {
38731
- 'A': true,
38732
- 'BODY': true,
38733
- 'LINK': true,
38734
- 'IMG': true,
38735
- 'IFRAME': true
38736
- };
38737
-
38738
- var badAttributes = {
38739
- 'href': true,
38740
- 'src': true,
38741
- 'background': true
38742
- };
38743
-
38744
- function sanitizeAttributeValue(dom, element, attribute, value) {
38745
- var tagName;
38746
-
38747
- if (!element) {
38748
- tagName = null;
38749
- } else {
38750
- tagName = element.tagName;
38751
- }
38752
-
38753
- if (value && value.toHTML) {
38754
- return value.toHTML();
38755
- }
38756
-
38757
- if ((tagName === null || badTags[tagName]) && badAttributes[attribute]) {
38758
- // Previously, we relied on creating a new `<a>` element and setting
38759
- // its `href` in order to get the DOM to parse and extract its protocol.
38760
- // Naive approaches to URL parsing are susceptible to all sorts of XSS
38761
- // attacks.
38762
- //
38763
- // However, this approach does not work in environments without a DOM,
38764
- // such as Node & FastBoot. We have extracted the logic for parsing to
38765
- // the DOM helper, so that in locations without DOM, we can substitute
38766
- // our own robust URL parsing.
38767
- //
38768
- // This will also allow us to use the new `URL` API in browsers that
38769
- // support it, and skip the process of creating an element entirely.
38770
- var protocol = dom.protocolForURL(value);
38771
- if (badProtocols[protocol] === true) {
38772
- return 'unsafe:' + value;
38773
- }
38774
- }
38775
-
38776
- return value;
38777
- }
38778
- exports['default'] = sanitizeAttributeValue;
38779
-
38780
- exports.badAttributes = badAttributes;
38781
-
38782
38946
  });
38783
38947
  enifed('ember-views/system/utils', ['exports'], function (exports) {
38784
38948
 
@@ -40258,8 +40422,11 @@ enifed('ember-views/views/metamorph_view', ['exports', 'ember-metal/core', 'embe
40258
40422
 
40259
40423
  init: function() {
40260
40424
  this._super.apply(this, arguments);
40261
- Ember['default'].deprecate('Supplying a tagName to Metamorph views is unreliable and is deprecated.' +
40262
- ' You may be setting the tagName on a Handlebars helper that creates a Metamorph.', !this.tagName);
40425
+ Ember['default'].deprecate(
40426
+ 'Supplying a tagName to Metamorph views is unreliable and is deprecated.' +
40427
+ ' You may be setting the tagName on a Handlebars helper that creates a Metamorph.',
40428
+ !this.tagName
40429
+ );
40263
40430
  }
40264
40431
  });
40265
40432
 
@@ -40288,7 +40455,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/enumerable_utils', '
40288
40455
 
40289
40456
  var selectOptionDefaultTemplate = {
40290
40457
  isHTMLBars: true,
40291
- revision: 'Ember@1.11.0-beta.5.1501308c',
40458
+ revision: 'Ember@1.11.0',
40292
40459
  render: function(context, env, contextualElement) {
40293
40460
  var lazyValue = context.getStream('view.label');
40294
40461
 
@@ -42101,6 +42268,7 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
42101
42268
  @namespace Ember
42102
42269
  @extends Ember.CoreView
42103
42270
  */
42271
+ // jscs:disable validateIndentation
42104
42272
  var View = CoreView['default'].extend(
42105
42273
  ViewStreamSupport['default'],
42106
42274
  ViewKeywordSupport['default'],
@@ -42782,6 +42950,7 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
42782
42950
  return scheduledFn;
42783
42951
  }
42784
42952
  });
42953
+ // jscs:enable validateIndentation
42785
42954
 
42786
42955
  deprecate_property.deprecateProperty(View.prototype, 'state', '_state');
42787
42956
  deprecate_property.deprecateProperty(View.prototype, 'states', '_states');
@@ -42804,14 +42973,14 @@ enifed('ember-views/views/view', ['exports', 'ember-metal/core', 'ember-runtime/
42804
42973
  on a destroyed view.
42805
42974
  */
42806
42975
 
42807
- // in the destroyed state, everything is illegal
42976
+ // in the destroyed state, everything is illegal
42808
42977
 
42809
- // before rendering has begun, all legal manipulations are noops.
42978
+ // before rendering has begun, all legal manipulations are noops.
42810
42979
 
42811
- // inside the buffer, legal manipulations are done on the buffer
42980
+ // inside the buffer, legal manipulations are done on the buffer
42812
42981
 
42813
- // once the view has been inserted into the DOM, legal manipulations
42814
- // are done on the DOM element.
42982
+ // once the view has been inserted into the DOM, legal manipulations
42983
+ // are done on the DOM element.
42815
42984
 
42816
42985
  var mutation = EmberObject['default'].extend(Evented['default']).create();
42817
42986
  // TODO MOVE TO RENDERER HOOKS
@@ -42951,7 +43120,10 @@ enifed('ember', ['ember-metal', 'ember-runtime', 'ember-views', 'ember-routing',
42951
43120
  @module ember
42952
43121
  */
42953
43122
 
42954
- Ember.deprecate('Usage of Ember is deprecated for Internet Explorer 6 and 7, support will be removed in the next major version.', !environment['default'].userAgent.match(/MSIE [67]/));
43123
+ Ember.deprecate(
43124
+ 'Usage of Ember is deprecated for Internet Explorer 6 and 7, support will be removed in the next major version.',
43125
+ !environment['default'].userAgent.match(/MSIE [67]/)
43126
+ );
42955
43127
 
42956
43128
  });
42957
43129
  enifed("htmlbars-util",
@@ -43293,7 +43465,12 @@ enifed("morph-attr/sanitize-attribute-value",
43293
43465
  'BODY': true,
43294
43466
  'LINK': true,
43295
43467
  'IMG': true,
43296
- 'IFRAME': true
43468
+ 'IFRAME': true,
43469
+ 'BASE': true
43470
+ };
43471
+
43472
+ var badTagsForDataURI = {
43473
+ 'EMBED': true
43297
43474
  };
43298
43475
 
43299
43476
  var badAttributes = {
@@ -43302,13 +43479,17 @@ enifed("morph-attr/sanitize-attribute-value",
43302
43479
  'background': true
43303
43480
  };
43304
43481
  __exports__.badAttributes = badAttributes;
43482
+ var badAttributesForDataURI = {
43483
+ 'src': true
43484
+ };
43485
+
43305
43486
  function sanitizeAttributeValue(dom, element, attribute, value) {
43306
43487
  var tagName;
43307
43488
 
43308
43489
  if (!element) {
43309
43490
  tagName = null;
43310
43491
  } else {
43311
- tagName = element.tagName;
43492
+ tagName = element.tagName.toUpperCase();
43312
43493
  }
43313
43494
 
43314
43495
  if (value && value.toHTML) {
@@ -43322,6 +43503,10 @@ enifed("morph-attr/sanitize-attribute-value",
43322
43503
  }
43323
43504
  }
43324
43505
 
43506
+ if (badTagsForDataURI[tagName] && badAttributesForDataURI[attribute]) {
43507
+ return 'unsafe:' + value;
43508
+ }
43509
+
43325
43510
  return value;
43326
43511
  }
43327
43512
 
@@ -44639,7 +44824,17 @@ enifed("router/router",
44639
44824
 
44640
44825
  var pop = Array.prototype.pop;
44641
44826
 
44642
- function Router() {
44827
+ function Router(_options) {
44828
+ var options = _options || {};
44829
+ this.getHandler = options.getHandler || this.getHandler;
44830
+ this.updateURL = options.updateURL || this.updateURL;
44831
+ this.replaceURL = options.replaceURL || this.replaceURL;
44832
+ this.didTransition = options.didTransition || this.didTransition;
44833
+ this.willTransition = options.willTransition || this.willTransition;
44834
+ this.delegate = options.delegate || this.delegate;
44835
+ this.triggerEvent = options.triggerEvent || this.triggerEvent;
44836
+ this.log = options.log || this.log;
44837
+
44643
44838
  this.recognizer = new RouteRecognizer();
44644
44839
  this.reset();
44645
44840
  }
@@ -44663,7 +44858,7 @@ enifed("router/router",
44663
44858
  }
44664
44859
 
44665
44860
  // No-op. No need to create a new transition.
44666
- return new Transition(this);
44861
+ return this.activeTransition || new Transition(this);
44667
44862
  }
44668
44863
 
44669
44864
  if (isIntermediate) {
@@ -44723,6 +44918,8 @@ enifed("router/router",
44723
44918
  return this.recognizer.hasRoute(route);
44724
44919
  },
44725
44920
 
44921
+ getHandler: function() {},
44922
+
44726
44923
  queryParamsTransition: function(changelist, wasTransitioning, oldState, newState) {
44727
44924
  var router = this;
44728
44925
 
@@ -44984,16 +45181,7 @@ enifed("router/router",
44984
45181
 
44985
45182
  @param {String} message The message to log.
44986
45183
  */
44987
- log: null,
44988
-
44989
- _willChangeContextEvent: 'willChangeContext',
44990
- _triggerWillChangeContext: function(handlerInfos, newTransition) {
44991
- trigger(this, handlerInfos, true, [this._willChangeContextEvent, newTransition]);
44992
- },
44993
-
44994
- _triggerWillLeave: function(handlerInfos, newTransition, leavingChecker) {
44995
- trigger(this, handlerInfos, true, ['willLeave', newTransition, leavingChecker]);
44996
- }
45184
+ log: null
44997
45185
  };
44998
45186
 
44999
45187
  /**
@@ -45423,12 +45611,6 @@ enifed("router/router",
45423
45611
  }
45424
45612
  return false;
45425
45613
  };
45426
-
45427
- router._triggerWillLeave(leaving, newTransition, leavingChecker);
45428
- }
45429
-
45430
- if (changing.length > 0) {
45431
- router._triggerWillChangeContext(changing, newTransition);
45432
45614
  }
45433
45615
 
45434
45616
  trigger(router, oldHandlers, true, ['willTransition', newTransition]);
@@ -45662,8 +45844,8 @@ enifed("router/transition-intent/named-transition-intent",
45662
45844
  });
45663
45845
  });
45664
45846
  enifed("router/transition-intent/url-transition-intent",
45665
- ["../transition-intent","../transition-state","../handler-info/factory","../utils","exports"],
45666
- function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
45847
+ ["../transition-intent","../transition-state","../handler-info/factory","../utils","./../unrecognized-url-error","exports"],
45848
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
45667
45849
  "use strict";
45668
45850
  var TransitionIntent = __dependency1__["default"];
45669
45851
  var TransitionState = __dependency2__["default"];
@@ -45671,6 +45853,7 @@ enifed("router/transition-intent/url-transition-intent",
45671
45853
  var oCreate = __dependency4__.oCreate;
45672
45854
  var merge = __dependency4__.merge;
45673
45855
  var subclass = __dependency4__.subclass;
45856
+ var UnrecognizedURLError = __dependency5__["default"];
45674
45857
 
45675
45858
  __exports__["default"] = subclass(TransitionIntent, {
45676
45859
  url: null,
@@ -45721,15 +45904,6 @@ enifed("router/transition-intent/url-transition-intent",
45721
45904
  return newState;
45722
45905
  }
45723
45906
  });
45724
-
45725
- /**
45726
- Promise reject reasons passed to promise rejection
45727
- handlers for failed transitions.
45728
- */
45729
- function UnrecognizedURLError(message) {
45730
- this.message = (message || "UnrecognizedURLError");
45731
- this.name = "UnrecognizedURLError";
45732
- }
45733
45907
  });
45734
45908
  enifed("router/transition-state",
45735
45909
  ["./handler-info","./utils","rsvp/promise","exports"],
@@ -46159,6 +46333,26 @@ enifed("router/transition",
46159
46333
  __exports__.logAbort = logAbort;
46160
46334
  __exports__.TransitionAborted = TransitionAborted;
46161
46335
  });
46336
+ enifed("router/unrecognized-url-error",
46337
+ ["./utils","exports"],
46338
+ function(__dependency1__, __exports__) {
46339
+ "use strict";
46340
+ var oCreate = __dependency1__.oCreate;
46341
+
46342
+ /**
46343
+ Promise reject reasons passed to promise rejection
46344
+ handlers for failed transitions.
46345
+ */
46346
+ function UnrecognizedURLError(message) {
46347
+ this.message = (message || "UnrecognizedURLError");
46348
+ this.name = "UnrecognizedURLError";
46349
+ Error.call(this);
46350
+ }
46351
+
46352
+ UnrecognizedURLError.prototype = oCreate(Error.prototype);
46353
+
46354
+ __exports__["default"] = UnrecognizedURLError;
46355
+ });
46162
46356
  enifed("router/utils",
46163
46357
  ["exports"],
46164
46358
  function(__exports__) {