dist/ember-runtime.js in ember-source-3.0.0.beta.1 vs dist/ember-runtime.js in ember-source-3.0.0.beta.2
- old
+ new
@@ -4,11 +4,11 @@
* @copyright Copyright 2011-2018 Tilde Inc. and contributors
* Portions Copyright 2006-2011 Strobe Inc.
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
* @license Licensed under MIT license
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
- * @version 3.0.0-beta.1
+ * @version 3.0.0-beta.2
*/
/*globals process */
var enifed, requireModule, Ember;
@@ -1138,13 +1138,21 @@
var _console4;
return (_console4 = console).info.apply(_console4, arguments);
},
debug: function () {
- var _console5, _console6;
+ var _console6;
- return console.debug && (_console5 = console).debug.apply(_console5, arguments) || (_console6 = console).info.apply(_console6, arguments); // eslint-disable-line no-console
+ /* eslint-disable no-console */
+ if (console.debug) {
+ var _console5;
+
+ return (_console5 = console).debug.apply(_console5, arguments);
+ }
+
+ return (_console6 = console).info.apply(_console6, arguments);
+ /* eslint-enable no-console */
},
assert: function () {
var _console7;
return (_console7 = console).assert.apply(_console7, arguments);
@@ -1309,16 +1317,15 @@
exports.ENV = ENV;
exports.context = context;
exports.environment = environment;
});
-enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember/features', 'ember-babel', '@glimmer/reference', 'require', 'backburner', 'ember-console'], function (exports, emberEnvironment, emberUtils, emberDebug, features, emberBabel, reference, require, Backburner, Logger) {
+enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember/features', 'ember-babel', '@glimmer/reference', 'require', 'backburner'], function (exports, emberEnvironment, emberUtils, emberDebug, features, emberBabel, reference, require, Backburner) {
'use strict';
require = require && require.hasOwnProperty('default') ? require['default'] : require;
Backburner = Backburner && Backburner.hasOwnProperty('default') ? Backburner['default'] : Backburner;
- Logger = Logger && Logger.hasOwnProperty('default') ? Logger['default'] : Logger;
/**
@module ember
*/
@@ -2668,11 +2675,11 @@
} else if (features.DESCRIPTOR_TRAP) {
// Future traveler, although this code looks scary. It merely exists in
// development to aid in development asertions. Production builds of
// ember strip this entire branch out.
var messageFor = function (obj, keyName, property, value) {
- return 'You attempted to access the `' + keyName + '.' + property + '` property ' + ('(of ' + obj + '). Due to certain internal implementation details of Ember, ') + ('the `' + keyName + '` property previously contained an internal "descriptor" ') + ('object (a private API), therefore `' + keyName + '.' + property + '` would have ') + ('been `' + String(value).replace(/\n/g, ' ') + '`. This internal implementation ') + 'detail was never intended to be a public (or even intimate) API.\n\n' + 'This internal implementation detail has now changed and the (still private) ' + '"descriptor" object has been relocated to the object\'s "meta" (also a ' + ('private API). Soon, accessing `' + keyName + '` on this object will ') + 'return the computed value (see RFC #281 for more details).\n\n' + 'If you are seeing this error, you are likely using an addon that ' + 'relies on this now-defunct private implementation detail. If you can, ' + 'find out which addon is doing this from the stack trace below and ' + 'report this bug to the addon authors. If you feel stuck, the Ember ' + 'Community Slack (https://ember-community-slackin.herokuapp.com/) ' + 'may be able to offer some help.\n\n' + 'If you are an addon author and need help transitioning your code, ' + 'please get in touch in the #dev-ember channel in the Ember Community ' + 'Slack.';
+ return 'You attempted to access the `' + keyName + '.' + String(property) + '` property ' + ('(of ' + obj + '). Due to certain internal implementation details of Ember, ') + ('the `' + keyName + '` property previously contained an internal "descriptor" ') + ('object (a private API), therefore `' + keyName + '.' + String(property) + '` would have ') + ('been `' + String(value).replace(/\n/g, ' ') + '`. This internal implementation ') + 'detail was never intended to be a public (or even intimate) API.\n\n' + 'This internal implementation detail has now changed and the (still private) ' + '"descriptor" object has been relocated to the object\'s "meta" (also a ' + ('private API). Soon, accessing `' + keyName + '` on this object will ') + 'return the computed value (see RFC #281 for more details).\n\n' + 'If you are seeing this error, you are likely using an addon that ' + 'relies on this now-defunct private implementation detail. If you can, ' + 'find out which addon is doing this from the stack trace below and ' + 'report this bug to the addon authors. If you feel stuck, the Ember ' + 'Community Slack (https://ember-community-slackin.herokuapp.com/) ' + 'may be able to offer some help.\n\n' + 'If you are an addon author and need help transitioning your code, ' + 'please get in touch in the #dev-ember channel in the Ember Community ' + 'Slack.';
};
var trapFor = void 0;
if (emberUtils.HAS_NATIVE_PROXY) {
@@ -2680,11 +2687,13 @@
trapFor = function (obj, keyName, descriptor) {
return new Proxy(descriptor, {
get: function (descriptor, property) {
if (property === DESCRIPTOR) {
return descriptor;
- } else if (property === 'toString' || property == 'valueOf' || Symbol && property === Symbol.toPrimitive) {
+ } else if (property === 'prototype' || property === 'constructor' || property === 'nodeType') {
+ return undefined;
+ } else if (property === 'toString' || property === 'valueOf' || property === 'inspect' || Symbol && property === Symbol.toPrimitive || Symbol && property === Symbol.toStringTag) {
return function () {
return '[COMPUTED PROPERTY]';
};
}
@@ -3432,11 +3441,13 @@
this._descriptors = undefined;
}
this._watching = undefined;
this._mixins = undefined;
- this._bindings = undefined;
+ if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
+ this._bindings = undefined;
+ }
this._values = undefined;
this._deps = undefined;
this._chainWatchers = undefined;
this._chains = undefined;
this._tag = undefined;
@@ -3755,21 +3766,26 @@
pointer = pointer.parent;
}
};
Meta.prototype.writeBindings = function writeBindings(subkey, value) {
+ true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.writeBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot add a binding for `' + subkey + '` on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
var map = this._getOrCreateOwnMap('_bindings');
map[subkey] = value;
};
Meta.prototype.peekBindings = function peekBindings(subkey) {
+ true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.peekBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
+
return this._findInherited('_bindings', subkey);
};
Meta.prototype.forEachBindings = function forEachBindings(fn) {
+ true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.forEachBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
+
var pointer = this;
var seen = void 0;
while (pointer !== undefined) {
var map = pointer._bindings;
if (map !== undefined) {
@@ -3784,10 +3800,11 @@
pointer = pointer.parent;
}
};
Meta.prototype.clearBindings = function clearBindings() {
+ true && !emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && emberDebug.assert('Cannot invoke `meta.clearBindings` when EmberENV._ENABLE_BINDING_SUPPORT is not set', emberEnvironment.ENV._ENABLE_BINDING_SUPPORT);
true && !!this.isMetaDestroyed() && emberDebug.assert('Cannot clear bindings on `' + emberUtils.toString(this.source) + '` after it has been destroyed.', !this.isMetaDestroyed());
this._bindings = undefined;
};
@@ -4141,18 +4158,10 @@
function isPath(path) {
return firstDotIndexCache.get(path) !== -1;
}
- function getFirstKey(path) {
- return firstKeyCache.get(path);
- }
-
- function getTailPath(path) {
- return tailPathCache.get(path);
- }
-
/**
@module @ember/object
*/
var ALLOWABLE_TYPES = {
@@ -7120,493 +7129,10 @@
});
return properties;
}
/**
- @module ember
- */
-
- // ..........................................................
- // BINDING
- //
-
- var Binding = function () {
- function Binding(toPath, fromPath) {
- emberBabel.classCallCheck(this, Binding);
-
- // Configuration
- this._from = fromPath;
- this._to = toPath;
- this._oneWay = undefined;
-
- // State
- this._direction = undefined;
- this._readyToSync = undefined;
- this._fromObj = undefined;
- this._fromPath = undefined;
- this._toObj = undefined;
- }
-
- /**
- @class Binding
- @namespace Ember
- @deprecated See https://emberjs.com/deprecations/v2.x#toc_ember-binding
- @public
- */
-
- /**
- This copies the Binding so it can be connected to another object.
- @method copy
- @return {Ember.Binding} `this`
- @public
- */
-
- Binding.prototype.copy = function copy() {
- var copy = new Binding(this._to, this._from);
- if (this._oneWay) {
- copy._oneWay = true;
- }
- return copy;
- };
-
- // ..........................................................
- // CONFIG
- //
-
- /**
- This will set `from` property path to the specified value. It will not
- attempt to resolve this property path to an actual object until you
- connect the binding.
- The binding will search for the property path starting at the root object
- you pass when you `connect()` the binding. It follows the same rules as
- `get()` - see that method for more information.
- @method from
- @param {String} path The property path to connect to.
- @return {Ember.Binding} `this`
- @public
- */
-
- Binding.prototype.from = function from(path) {
- this._from = path;
- return this;
- };
-
- /**
- This will set the `to` property path to the specified value. It will not
- attempt to resolve this property path to an actual object until you
- connect the binding.
- The binding will search for the property path starting at the root object
- you pass when you `connect()` the binding. It follows the same rules as
- `get()` - see that method for more information.
- @method to
- @param {String|Tuple} path A property path or tuple.
- @return {Ember.Binding} `this`
- @public
- */
-
- Binding.prototype.to = function to(path) {
- this._to = path;
- return this;
- };
-
- /**
- Configures the binding as one way. A one-way binding will relay changes
- on the `from` side to the `to` side, but not the other way around. This
- means that if you change the `to` side directly, the `from` side may have
- a different value.
- @method oneWay
- @return {Ember.Binding} `this`
- @public
- */
-
- Binding.prototype.oneWay = function oneWay() {
- this._oneWay = true;
- return this;
- };
-
- /**
- @method toString
- @return {String} string representation of binding
- @public
- */
-
- Binding.prototype.toString = function toString$$1() {
- var oneWay = this._oneWay ? '[oneWay]' : '';
- return 'Ember.Binding<' + emberUtils.guidFor(this) + '>(' + this._from + ' -> ' + this._to + ')' + oneWay;
- };
-
- // ..........................................................
- // CONNECT AND SYNC
- //
-
- /**
- Attempts to connect this binding instance so that it can receive and relay
- changes. This method will raise an exception if you have not set the
- from/to properties yet.
- @method connect
- @param {Object} obj The root object for this binding.
- @return {Ember.Binding} `this`
- @public
- */
-
- Binding.prototype.connect = function connect(obj) {
- true && !!!obj && emberDebug.assert('Must pass a valid object to Ember.Binding.connect()', !!obj);
-
- var fromObj = void 0,
- fromPath = void 0,
- possibleGlobal = void 0;
-
- // If the binding's "from" path could be interpreted as a global, verify
- // whether the path refers to a global or not by consulting `Ember.lookup`.
- if (isGlobalPath(this._from)) {
- var name = getFirstKey(this._from);
- possibleGlobal = emberEnvironment.context.lookup[name];
-
- if (possibleGlobal) {
- fromObj = possibleGlobal;
- fromPath = getTailPath(this._from);
- }
- }
-
- if (fromObj === undefined) {
- fromObj = obj;
- fromPath = this._from;
- }
-
- trySet(obj, this._to, get(fromObj, fromPath));
-
- // Add an observer on the object to be notified when the binding should be updated.
- addObserver(fromObj, fromPath, this, 'fromDidChange');
-
- // If the binding is a two-way binding, also set up an observer on the target.
- if (!this._oneWay) {
- addObserver(obj, this._to, this, 'toDidChange');
- }
-
- addListener(obj, 'willDestroy', this, 'disconnect');
-
- fireDeprecations(obj, this._to, this._from, possibleGlobal, this._oneWay, !possibleGlobal && !this._oneWay);
-
- this._readyToSync = true;
- this._fromObj = fromObj;
- this._fromPath = fromPath;
- this._toObj = obj;
-
- return this;
- };
-
- /**
- Disconnects the binding instance. Changes will no longer be relayed. You
- will not usually need to call this method.
- @method disconnect
- @return {Ember.Binding} `this`
- @public
- */
-
- Binding.prototype.disconnect = function disconnect() {
- true && !!!this._toObj && emberDebug.assert('Must pass a valid object to Ember.Binding.disconnect()', !!this._toObj);
-
- // Remove an observer on the object so we're no longer notified of
- // changes that should update bindings.
-
- removeObserver(this._fromObj, this._fromPath, this, 'fromDidChange');
-
- // If the binding is two-way, remove the observer from the target as well.
- if (!this._oneWay) {
- removeObserver(this._toObj, this._to, this, 'toDidChange');
- }
-
- this._readyToSync = false; // Disable scheduled syncs...
- return this;
- };
-
- // ..........................................................
- // PRIVATE
- //
-
- /* Called when the from side changes. */
-
- Binding.prototype.fromDidChange = function fromDidChange(target) {
- // eslint-disable-line no-unused-vars
- this._scheduleSync('fwd');
- };
-
- /* Called when the to side changes. */
-
- Binding.prototype.toDidChange = function toDidChange(target) {
- // eslint-disable-line no-unused-vars
- this._scheduleSync('back');
- };
-
- Binding.prototype._scheduleSync = function _scheduleSync(dir) {
- var existingDir = this._direction;
-
- // If we haven't scheduled the binding yet, schedule it.
- if (existingDir === undefined) {
- run.schedule('sync', this, '_sync');
- this._direction = dir;
- }
-
- // If both a 'back' and 'fwd' sync have been scheduled on the same object,
- // default to a 'fwd' sync so that it remains deterministic.
- if (existingDir === 'back' && dir === 'fwd') {
- this._direction = 'fwd';
- }
- };
-
- Binding.prototype._sync = function _sync() {
- var log = emberEnvironment.ENV.LOG_BINDINGS;
-
- var toObj = this._toObj;
-
- // Don't synchronize destroyed objects or disconnected bindings.
- if (toObj.isDestroyed || !this._readyToSync) {
- return;
- }
-
- // Get the direction of the binding for the object we are
- // synchronizing from.
- var direction = this._direction;
-
- var fromObj = this._fromObj;
- var fromPath = this._fromPath;
-
- this._direction = undefined;
-
- // If we're synchronizing from the remote object...
- if (direction === 'fwd') {
- var fromValue = get(fromObj, fromPath);
- if (log) {
- Logger.log(' ', this.toString(), '->', fromValue, fromObj);
- }
- if (this._oneWay) {
- trySet(toObj, this._to, fromValue);
- } else {
- _suspendObserver(toObj, this._to, this, 'toDidChange', function () {
- trySet(toObj, this._to, fromValue);
- });
- }
- // If we're synchronizing *to* the remote object.
- } else if (direction === 'back') {
- var toValue = get(toObj, this._to);
- if (log) {
- Logger.log(' ', this.toString(), '<-', toValue, toObj);
- }
- _suspendObserver(fromObj, fromPath, this, 'fromDidChange', function () {
- trySet(fromObj, fromPath, toValue);
- });
- }
- };
-
- return Binding;
- }();
-
- function fireDeprecations(obj, toPath, fromPath, deprecateGlobal, deprecateOneWay, deprecateAlias) {
- var deprecateGlobalMessage = '`Ember.Binding` is deprecated. Since you' + ' are binding to a global consider using a service instead.';
- var deprecateOneWayMessage = '`Ember.Binding` is deprecated. Since you' + ' are using a `oneWay` binding consider using a `readOnly` computed' + ' property instead.';
- var deprecateAliasMessage = '`Ember.Binding` is deprecated. Consider' + ' using an `alias` computed property instead.';
-
- var objectInfo = 'The `' + toPath + '` property of `' + obj + '` is an `Ember.Binding` connected to `' + fromPath + '`, but ';
- true && !!deprecateGlobal && emberDebug.deprecate(objectInfo + deprecateGlobalMessage, !deprecateGlobal, {
- id: 'ember-metal.binding',
- until: '3.0.0',
- url: 'https://emberjs.com/deprecations/v2.x#toc_ember-binding'
- });
- true && !!deprecateOneWay && emberDebug.deprecate(objectInfo + deprecateOneWayMessage, !deprecateOneWay, {
- id: 'ember-metal.binding',
- until: '3.0.0',
- url: 'https://emberjs.com/deprecations/v2.x#toc_ember-binding'
- });
- true && !!deprecateAlias && emberDebug.deprecate(objectInfo + deprecateAliasMessage, !deprecateAlias, {
- id: 'ember-metal.binding',
- until: '3.0.0',
- url: 'https://emberjs.com/deprecations/v2.x#toc_ember-binding'
- });
- }
-
- function mixinProperties$1(to, from) {
- for (var key in from) {
- if (from.hasOwnProperty(key)) {
- to[key] = from[key];
- }
- }
- }
-
- mixinProperties$1(Binding, {
-
- /*
- See `Ember.Binding.from`.
- @method from
- @static
- */
- from: function (from) {
- var C = this;
- return new C(undefined, from);
- },
-
- /*
- See `Ember.Binding.to`.
- @method to
- @static
- */
- to: function (to) {
- var C = this;
- return new C(to, undefined);
- }
- });
- /**
- An `Ember.Binding` connects the properties of two objects so that whenever
- the value of one property changes, the other property will be changed also.
-
- ## Automatic Creation of Bindings with `/^*Binding/`-named Properties.
-
- You do not usually create Binding objects directly but instead describe
- bindings in your class or object definition using automatic binding
- detection.
-
- Properties ending in a `Binding` suffix will be converted to `Ember.Binding`
- instances. The value of this property should be a string representing a path
- to another object or a custom binding instance created using Binding helpers
- (see "One Way Bindings"):
-
- ```
- valueBinding: "MyApp.someController.title"
- ```
-
- This will create a binding from `MyApp.someController.title` to the `value`
- property of your object instance automatically. Now the two values will be
- kept in sync.
-
- ## One Way Bindings
-
- One especially useful binding customization you can use is the `oneWay()`
- helper. This helper tells Ember that you are only interested in
- receiving changes on the object you are binding from. For example, if you
- are binding to a preference and you want to be notified if the preference
- has changed, but your object will not be changing the preference itself, you
- could do:
-
- ```
- bigTitlesBinding: Ember.Binding.oneWay("MyApp.preferencesController.bigTitles")
- ```
-
- This way if the value of `MyApp.preferencesController.bigTitles` changes the
- `bigTitles` property of your object will change also. However, if you
- change the value of your `bigTitles` property, it will not update the
- `preferencesController`.
-
- One way bindings are almost twice as fast to setup and twice as fast to
- execute because the binding only has to worry about changes to one side.
-
- You should consider using one way bindings anytime you have an object that
- may be created frequently and you do not intend to change a property; only
- to monitor it for changes (such as in the example above).
-
- ## Adding Bindings Manually
-
- All of the examples above show you how to configure a custom binding, but the
- result of these customizations will be a binding template, not a fully active
- Binding instance. The binding will actually become active only when you
- instantiate the object the binding belongs to. It is useful, however, to
- understand what actually happens when the binding is activated.
-
- For a binding to function it must have at least a `from` property and a `to`
- property. The `from` property path points to the object/key that you want to
- bind from while the `to` path points to the object/key you want to bind to.
-
- When you define a custom binding, you are usually describing the property
- you want to bind from (such as `MyApp.someController.value` in the examples
- above). When your object is created, it will automatically assign the value
- you want to bind `to` based on the name of your binding key. In the
- examples above, during init, Ember objects will effectively call
- something like this on your binding:
-
- ```javascript
- binding = Ember.Binding.from("valueBinding").to("value");
- ```
-
- This creates a new binding instance based on the template you provide, and
- sets the to path to the `value` property of the new object. Now that the
- binding is fully configured with a `from` and a `to`, it simply needs to be
- connected to become active. This is done through the `connect()` method:
-
- ```javascript
- binding.connect(this);
- ```
-
- Note that when you connect a binding you pass the object you want it to be
- connected to. This object will be used as the root for both the from and
- to side of the binding when inspecting relative paths. This allows the
- binding to be automatically inherited by subclassed objects as well.
-
- This also allows you to bind between objects using the paths you declare in
- `from` and `to`:
-
- ```javascript
- // Example 1
- binding = Ember.Binding.from("App.someObject.value").to("value");
- binding.connect(this);
-
- // Example 2
- binding = Ember.Binding.from("parentView.value").to("App.someObject.value");
- binding.connect(this);
- ```
-
- Now that the binding is connected, it will observe both the from and to side
- and relay changes.
-
- If you ever needed to do so (you almost never will, but it is useful to
- understand this anyway), you could manually create an active binding by
- using the `Ember.bind()` helper method. (This is the same method used by
- to setup your bindings on objects):
-
- ```javascript
- Ember.bind(MyApp.anotherObject, "value", "MyApp.someController.value");
- ```
-
- Both of these code fragments have the same effect as doing the most friendly
- form of binding creation like so:
-
- ```javascript
- MyApp.anotherObject = Ember.Object.create({
- valueBinding: "MyApp.someController.value",
-
- // OTHER CODE FOR THIS OBJECT...
- });
- ```
-
- Ember's built in binding creation method makes it easy to automatically
- create bindings for you. You should always use the highest-level APIs
- available, even if you understand how it works underneath.
-
- @class Binding
- @namespace Ember
- @since Ember 0.9
- @public
- */
- // Ember.Binding = Binding; ES6TODO: where to put this?
-
-
- /**
- Global helper method to create a new binding. Just pass the root object
- along with a `to` and `from` path to create and connect the binding.
-
- @method bind
- @for Ember
- @param {Object} obj The root object of the transform.
- @param {String} to The path to the 'to' side of the binding.
- Must be relative to obj.
- @param {String} from The path to the 'from' side of the binding.
- Must be relative to obj or a global path.
- @return {Ember.Binding} binding instance
- @public
- */
- function bind(obj, to, from) {
- return new Binding(to, from).connect(obj);
- }
-
- /**
@module @ember/object
*/
var a_concat = Array.prototype.concat;
var isArray = Array.isArray;
@@ -7836,44 +7362,10 @@
}
}
}
}
- function detectBinding(key) {
- var length = key.length;
-
- return length > 7 && key.charCodeAt(length - 7) === 66 && key.indexOf('inding', length - 6) !== -1;
- }
- // warm both paths of above function
- detectBinding('notbound');
- detectBinding('fooBinding');
-
- function connectBindings(obj, meta$$1) {
- // TODO Mixin.apply(instance) should disconnect binding if exists
- meta$$1.forEachBindings(function (key, binding) {
- if (binding) {
- var to = key.slice(0, -7); // strip Binding off end
- if (binding instanceof Binding) {
- binding = binding.copy(); // copy prototypes' instance
- binding.to(to);
- } else {
- // binding is string path
- binding = new Binding(to, binding);
- }
- binding.connect(obj);
- obj[key] = binding;
- }
- });
- // mark as applied
- meta$$1.clearBindings();
- }
-
- function finishPartial(obj, meta$$1) {
- connectBindings(obj, meta$$1 === undefined ? meta(obj) : meta$$1);
- return obj;
- }
-
function followAlias(obj, desc, descs, values) {
var altKey = desc.methodName;
var value = void 0;
var possibleDesc = void 0;
if (descs[altKey] || values[altKey]) {
@@ -7959,20 +7451,20 @@
replaceObserversAndListeners(obj, key, null, value);
} else {
replaceObserversAndListeners(obj, key, obj[key], value);
}
- if (detectBinding(key)) {
+ if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && Mixin.detectBinding(key)) {
meta$$1.writeBindings(key, value);
}
defineProperty(obj, key, desc, value, meta$$1);
}
- if (!partial) {
+ if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT && !partial) {
// don't apply to prototype
- finishPartial(obj, meta$$1);
+ Mixin.finishPartial(obj, meta$$1);
}
return obj;
}
@@ -8247,11 +7739,16 @@
return Mixin;
}();
Mixin._apply = applyMixin;
- Mixin.finishPartial = finishPartial;
+ if (emberEnvironment.ENV._ENABLE_BINDING_SUPPORT) {
+ // slotting this so that the legacy addon can add the function here
+ // without triggering an error due to the Object.seal done below
+ Mixin.finishPartial = null;
+ Mixin.detectBinding = null;
+ }
var MixinPrototype = Mixin.prototype;
MixinPrototype.toString = Object.toString;
emberDebug.debugSeal(MixinPrototype);
@@ -8670,12 +8167,9 @@
exports.observer = observer;
exports.required = required;
exports.REQUIRED = REQUIRED;
exports.hasUnprocessedMixins = hasUnprocessedMixins;
exports.clearUnprocessedMixins = clearUnprocessedMixins;
- exports.detectBinding = detectBinding;
- exports.Binding = Binding;
- exports.bind = bind;
exports.isGlobalPath = isGlobalPath;
exports.InjectedProperty = InjectedProperty;
exports.setHasViews = setHasViews;
exports.tagForProperty = tagForProperty;
exports.tagFor = tagFor;