ember-source 1.11.0.beta.5 → 1.11.0

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

Potentially problematic release.


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

@@ -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__) {