ember-source 4.8.0-alpha.5 → 4.8.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -2
- package/blueprints/helper/files/__root__/{__collection__ → helpers}/__name__.ts +0 -0
- package/blueprints/helper/index.js +0 -15
- package/blueprints/helper-test/index.js +0 -3
- package/blueprints/helper-test/mocha-0.12-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints/helper-test/mocha-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints/helper-test/mocha-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.ts +0 -0
- package/blueprints/helper-test/qunit-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints/helper-test/qunit-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.ts +0 -0
- package/blueprints-js/helper/files/__root__/{__collection__ → helpers}/__name__.js +0 -0
- package/blueprints-js/helper-test/mocha-0.12-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/mocha-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/mocha-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/qunit-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/qunit-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/build-metadata.json +3 -3
- package/dist/dependencies/router_js.js +1 -1
- package/dist/ember-template-compiler.js +675 -18
- package/dist/ember-template-compiler.map +1 -1
- package/dist/ember-testing.js +11 -11
- package/dist/ember-testing.map +1 -1
- package/dist/ember.debug.js +19576 -20510
- package/dist/ember.debug.map +1 -1
- package/dist/header/license.js +1 -1
- package/dist/packages/@ember/-internals/glimmer/index.js +4 -2
- package/dist/packages/@ember/-internals/metal/index.js +214 -1094
- package/dist/packages/@ember/-internals/routing/index.js +1 -17
- package/dist/packages/@ember/-internals/runtime/index.js +3 -16
- package/dist/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +2 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +4 -3
- package/dist/packages/@ember/-internals/runtime/lib/mixins/comparable.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +1 -8
- package/dist/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +2 -1
- package/dist/packages/@ember/-internals/utils/index.js +3 -3
- package/dist/packages/@ember/-internals/views/lib/component_lookup.js +1 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/action_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/child_views_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/class_names_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/view_state_support.js +1 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/view_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/system/event_dispatcher.js +1 -1
- package/dist/packages/@ember/-internals/views/lib/views/core_view.js +3 -1
- package/dist/packages/@ember/application/index.js +876 -2
- package/dist/packages/@ember/application/instance.js +2 -2
- package/dist/packages/@ember/application/namespace.js +70 -1
- package/dist/packages/@ember/array/index.js +1503 -2
- package/dist/packages/@ember/array/mutable.js +1 -1
- package/dist/packages/@ember/array/proxy.js +307 -1
- package/dist/packages/@ember/canary-features/index.js +2 -2
- package/dist/packages/@ember/controller/index.js +260 -3
- package/dist/packages/@ember/debug/container-debug-adapter.js +99 -1
- package/dist/packages/@ember/debug/data-adapter.js +574 -1
- package/dist/packages/@ember/engine/index.js +5 -5
- package/dist/packages/@ember/engine/instance.js +4 -4
- package/dist/packages/@ember/enumerable/index.js +3 -1
- package/dist/packages/@ember/enumerable/mutable.js +4 -0
- package/dist/packages/@ember/{-internals/runtime/lib/system/object.js → object/-internals.js} +4 -17
- package/dist/packages/@ember/object/core.js +731 -1
- package/dist/packages/@ember/object/evented.js +93 -2
- package/dist/packages/@ember/object/index.js +76 -4
- package/dist/packages/@ember/object/internals.js +3 -2
- package/dist/packages/@ember/object/lib/computed/computed_macros.js +3 -1
- package/dist/packages/@ember/object/lib/computed/reduce_computed_macros.js +4 -3
- package/dist/packages/@ember/object/mixin.js +659 -1
- package/dist/packages/@ember/object/observable.js +341 -1
- package/dist/packages/@ember/object/promise-proxy-mixin.js +150 -1
- package/dist/packages/@ember/object/proxy.js +10 -1
- package/dist/packages/@ember/routing/-internals.js +7 -0
- package/dist/packages/@ember/routing/auto-location.js +249 -1
- package/dist/packages/@ember/routing/hash-location.js +169 -1
- package/dist/packages/@ember/routing/history-location.js +289 -1
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/cache.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/controller_for.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/dsl.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/engines.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/generate_controller.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/location/util.js → routing/lib/location-utils.js} +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/query_params.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/route-info.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/router_state.js +1 -1
- package/dist/packages/@ember/{-internals/routing/lib/services/routing.js → routing/lib/routing-service.js} +2 -2
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/transition.js +0 -0
- package/dist/packages/@ember/{-internals/routing → routing}/lib/utils.js +0 -0
- package/dist/packages/@ember/routing/location.js +104 -1
- package/dist/packages/@ember/routing/none-location.js +123 -1
- package/dist/packages/@ember/routing/route.js +1700 -1
- package/dist/packages/@ember/routing/router-service.js +510 -1
- package/dist/packages/@ember/routing/router.js +1666 -1
- package/dist/packages/@ember/service/index.js +1 -1
- package/dist/packages/@ember/utils/index.js +7 -2
- package/dist/packages/@ember/{-internals/runtime → utils}/lib/compare.js +2 -2
- package/dist/packages/@ember/{-internals/runtime → utils}/lib/is-equal.js +0 -0
- package/dist/packages/@ember/utils/lib/is_blank.js +35 -0
- package/dist/packages/@ember/utils/lib/is_empty.js +68 -0
- package/dist/packages/@ember/utils/lib/is_none.js +27 -0
- package/dist/packages/@ember/utils/lib/is_present.js +38 -0
- package/dist/packages/@ember/{-internals/runtime → utils}/lib/type-of.js +2 -2
- package/dist/packages/ember/index.js +47 -28
- package/dist/packages/ember/version.js +1 -1
- package/dist/packages/ember-testing/lib/adapters/adapter.js +1 -1
- package/dist/packages/ember-testing/lib/helpers/current_path.js +2 -2
- package/dist/packages/ember-testing/lib/helpers/current_route_name.js +2 -2
- package/dist/packages/ember-testing/lib/helpers/current_url.js +1 -1
- package/docs/data.json +9428 -9189
- package/package.json +23 -8
- package/types/preview/@ember/-internals/resolver.d.ts +35 -0
- package/types/preview/@ember/application/-private/event-dispatcher.d.ts +18 -0
- package/types/preview/@ember/application/-private/registry.d.ts +15 -0
- package/types/preview/@ember/application/deprecations.d.ts +24 -0
- package/types/preview/@ember/application/index.d.ts +153 -0
- package/types/preview/@ember/application/instance.d.ts +9 -0
- package/types/preview/@ember/application/tsconfig.json +3 -0
- package/types/preview/@ember/application/types.d.ts +29 -0
- package/types/preview/@ember/array/-private/enumerable.d.ts +13 -0
- package/types/preview/@ember/array/-private/mutable-enumerable.d.ts +13 -0
- package/types/preview/@ember/array/-private/native-array.d.ts +23 -0
- package/types/preview/@ember/array/index.d.ts +243 -0
- package/types/preview/@ember/array/mutable.d.ts +94 -0
- package/types/preview/@ember/array/proxy.d.ts +29 -0
- package/types/preview/@ember/array/tsconfig.json +3 -0
- package/types/preview/@ember/component/-private/class-names-support.d.ts +27 -0
- package/types/preview/@ember/component/-private/core-view.d.ts +14 -0
- package/types/preview/@ember/component/-private/glimmer-interfaces.d.ts +45 -0
- package/types/preview/@ember/component/-private/signature-utils.d.ts +107 -0
- package/types/preview/@ember/component/-private/view-mixin.d.ts +59 -0
- package/types/preview/@ember/component/helper.d.ts +122 -0
- package/types/preview/@ember/component/index.d.ts +132 -0
- package/types/preview/@ember/component/template-only.d.ts +47 -0
- package/types/preview/@ember/component/tsconfig.json +3 -0
- package/types/preview/@ember/controller/index.d.ts +48 -0
- package/types/preview/@ember/controller/tsconfig.json +3 -0
- package/types/preview/@ember/debug/container-debug-adapter.d.ts +13 -0
- package/types/preview/@ember/debug/data-adapter.d.ts +64 -0
- package/types/preview/@ember/debug/index.d.ts +98 -0
- package/types/preview/@ember/debug/tsconfig.json +3 -0
- package/types/preview/@ember/destroyable/index.d.ts +23 -0
- package/types/preview/@ember/destroyable/tsconfig.json +3 -0
- package/types/preview/@ember/engine/-private/container-proxy-mixin.d.ts +17 -0
- package/types/preview/@ember/engine/-private/registry-proxy-mixin.d.ts +54 -0
- package/types/preview/@ember/engine/-private/types/initializer.d.ts +8 -0
- package/types/preview/@ember/engine/index.d.ts +45 -0
- package/types/preview/@ember/engine/instance.d.ts +24 -0
- package/types/preview/@ember/engine/tsconfig.json +3 -0
- package/types/preview/@ember/error/index.d.ts +6 -0
- package/types/preview/@ember/error/tsconfig.json +3 -0
- package/types/preview/@ember/helper/index.d.ts +49 -0
- package/types/preview/@ember/helper/tsconfig.json +3 -0
- package/types/preview/@ember/modifier/index.d.ts +33 -0
- package/types/preview/@ember/modifier/tsconfig.json +3 -0
- package/types/preview/@ember/object/-private/action-handler.d.ts +31 -0
- package/types/preview/@ember/object/-private/types.d.ts +63 -0
- package/types/preview/@ember/object/compat.d.ts +9 -0
- package/types/preview/@ember/object/computed.d.ts +263 -0
- package/types/preview/@ember/object/core.d.ts +89 -0
- package/types/preview/@ember/object/evented.d.ts +45 -0
- package/types/preview/@ember/object/events.d.ts +47 -0
- package/types/preview/@ember/object/index.d.ts +126 -0
- package/types/preview/@ember/object/internals.d.ts +17 -0
- package/types/preview/@ember/object/mixin.d.ts +19 -0
- package/types/preview/@ember/object/observable.d.ts +89 -0
- package/types/preview/@ember/object/observers.d.ts +34 -0
- package/types/preview/@ember/object/promise-proxy-mixin.d.ts +37 -0
- package/types/preview/@ember/object/proxy.d.ts +27 -0
- package/types/preview/@ember/object/tsconfig.json +3 -0
- package/types/preview/@ember/owner/index.d.ts +102 -0
- package/types/preview/@ember/owner/tsconfig.json +3 -0
- package/types/preview/@ember/polyfills/index.d.ts +23 -0
- package/types/preview/@ember/polyfills/tsconfig.json +3 -0
- package/types/preview/@ember/polyfills/types.d.ts +6 -0
- package/types/preview/@ember/routing/-private/router-dsl.d.ts +20 -0
- package/types/preview/@ember/routing/auto-location.d.ts +8 -0
- package/types/preview/@ember/routing/hash-location.d.ts +10 -0
- package/types/preview/@ember/routing/history-location.d.ts +9 -0
- package/types/preview/@ember/routing/index.d.ts +20 -0
- package/types/preview/@ember/routing/none-location.d.ts +11 -0
- package/types/preview/@ember/routing/route-info.d.ts +74 -0
- package/types/preview/@ember/routing/route.d.ts +533 -0
- package/types/preview/@ember/routing/router-service.d.ts +351 -0
- package/types/preview/@ember/routing/router.d.ts +49 -0
- package/types/preview/@ember/routing/transition.d.ts +126 -0
- package/types/preview/@ember/routing/tsconfig.json +3 -0
- package/types/preview/@ember/routing/types.d.ts +15 -0
- package/types/preview/@ember/runloop/-private/backburner.d.ts +43 -0
- package/types/preview/@ember/runloop/-private/types.d.ts +9 -0
- package/types/preview/@ember/runloop/index.d.ts +175 -0
- package/types/preview/@ember/runloop/tsconfig.json +3 -0
- package/types/preview/@ember/runloop/types.d.ts +5 -0
- package/types/preview/@ember/service/index.d.ts +25 -0
- package/types/preview/@ember/service/tsconfig.json +3 -0
- package/types/preview/@ember/string/index.d.ts +9 -0
- package/types/preview/@ember/string/tsconfig.json +3 -0
- package/types/preview/@ember/template/-private/handlebars.d.ts +7 -0
- package/types/preview/@ember/template/index.d.ts +5 -0
- package/types/preview/@ember/template/tsconfig.json +3 -0
- package/types/preview/@ember/test/adapter.d.ts +22 -0
- package/types/preview/@ember/test/index.d.ts +49 -0
- package/types/preview/@ember/test/tsconfig.json +3 -0
- package/types/preview/@ember/utils/-private/types.d.ts +39 -0
- package/types/preview/@ember/utils/index.d.ts +42 -0
- package/types/preview/@ember/utils/tsconfig.json +3 -0
- package/types/preview/ember/-private/type-utils.d.ts +54 -0
- package/types/preview/ember/index.d.ts +381 -0
- package/types/preview/ember/tsconfig.json +3 -0
- package/types/preview/index.d.ts +120 -0
- package/types/preview/tsconfig.json +6 -0
- package/blueprints/helper/mu-files/__root__/__collection__/__name__.js +0 -7
- package/blueprints-js/helper/mu-files/__root__/__collection__/__name__.js +0 -7
- package/dist/packages/@ember/-internals/extension-support/index.js +0 -2
- package/dist/packages/@ember/-internals/extension-support/lib/container_debug_adapter.js +0 -96
- package/dist/packages/@ember/-internals/extension-support/lib/data_adapter.js +0 -576
- package/dist/packages/@ember/-internals/routing/lib/ext/controller.js +0 -224
- package/dist/packages/@ember/-internals/routing/lib/location/api.js +0 -104
- package/dist/packages/@ember/-internals/routing/lib/location/auto_location.js +0 -250
- package/dist/packages/@ember/-internals/routing/lib/location/hash_location.js +0 -170
- package/dist/packages/@ember/-internals/routing/lib/location/history_location.js +0 -290
- package/dist/packages/@ember/-internals/routing/lib/location/none_location.js +0 -124
- package/dist/packages/@ember/-internals/routing/lib/services/router.js +0 -506
- package/dist/packages/@ember/-internals/routing/lib/system/route.js +0 -1696
- package/dist/packages/@ember/-internals/routing/lib/system/router.js +0 -1662
- package/dist/packages/@ember/-internals/runtime/lib/mixins/array.js +0 -1501
- package/dist/packages/@ember/-internals/runtime/lib/mixins/enumerable.js +0 -3
- package/dist/packages/@ember/-internals/runtime/lib/mixins/evented.js +0 -91
- package/dist/packages/@ember/-internals/runtime/lib/mixins/mutable_enumerable.js +0 -4
- package/dist/packages/@ember/-internals/runtime/lib/mixins/observable.js +0 -339
- package/dist/packages/@ember/-internals/runtime/lib/mixins/promise_proxy.js +0 -149
- package/dist/packages/@ember/-internals/runtime/lib/system/array_proxy.js +0 -305
- package/dist/packages/@ember/-internals/runtime/lib/system/core_object.js +0 -730
- package/dist/packages/@ember/-internals/runtime/lib/system/namespace.js +0 -69
- package/dist/packages/@ember/-internals/runtime/lib/system/object_proxy.js +0 -7
- package/dist/packages/@ember/application/lib/application.js +0 -870
- package/dist/packages/@ember/controller/lib/controller_mixin.js +0 -42
- package/dist/packages/@ember/runloop/type-tests.ts/begin-end.test.js +0 -5
- package/dist/packages/@ember/runloop/type-tests.ts/bind.test.js +0 -59
- package/dist/packages/@ember/runloop/type-tests.ts/cancel.test.js +0 -5
- package/dist/packages/@ember/runloop/type-tests.ts/debounce.test.js +0 -77
- package/dist/packages/@ember/runloop/type-tests.ts/join.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/later.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/next.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/once.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/run.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/schedule-once.test.js +0 -39
- package/dist/packages/@ember/runloop/type-tests.ts/schedule.test.js +0 -39
- package/dist/packages/@ember/runloop/type-tests.ts/throttle.test.js +0 -77
|
@@ -1,2 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { addListener, removeListener, hasListeners, sendEvent } from '@ember/-internals/metal';
|
|
2
|
+
import Mixin from '@ember/object/mixin';
|
|
3
|
+
export { on } from '@ember/-internals/metal';
|
|
4
|
+
const Evented = Mixin.create({
|
|
5
|
+
/**
|
|
6
|
+
Subscribes to a named event with given function.
|
|
7
|
+
```javascript
|
|
8
|
+
person.on('didLoad', function() {
|
|
9
|
+
// fired once the person has loaded
|
|
10
|
+
});
|
|
11
|
+
```
|
|
12
|
+
An optional target can be passed in as the 2nd argument that will
|
|
13
|
+
be set as the "this" for the callback. This is a good way to give your
|
|
14
|
+
function access to the object triggering the event. When the target
|
|
15
|
+
parameter is used the callback method becomes the third argument.
|
|
16
|
+
@method on
|
|
17
|
+
@param {String} name The name of the event
|
|
18
|
+
@param {Object} [target] The "this" binding for the callback
|
|
19
|
+
@param {Function|String} method A function or the name of a function to be called on `target`
|
|
20
|
+
@return this
|
|
21
|
+
@public
|
|
22
|
+
*/
|
|
23
|
+
on(name, target, method) {
|
|
24
|
+
addListener(this, name, target, method);
|
|
25
|
+
return this;
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
Subscribes a function to a named event and then cancels the subscription
|
|
30
|
+
after the first time the event is triggered. It is good to use ``one`` when
|
|
31
|
+
you only care about the first time an event has taken place.
|
|
32
|
+
This function takes an optional 2nd argument that will become the "this"
|
|
33
|
+
value for the callback. When the target parameter is used the callback method
|
|
34
|
+
becomes the third argument.
|
|
35
|
+
@method one
|
|
36
|
+
@param {String} name The name of the event
|
|
37
|
+
@param {Object} [target] The "this" binding for the callback
|
|
38
|
+
@param {Function|String} method A function or the name of a function to be called on `target`
|
|
39
|
+
@return this
|
|
40
|
+
@public
|
|
41
|
+
*/
|
|
42
|
+
one(name, target, method) {
|
|
43
|
+
addListener(this, name, target, method, true);
|
|
44
|
+
return this;
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
Triggers a named event for the object. Any additional arguments
|
|
49
|
+
will be passed as parameters to the functions that are subscribed to the
|
|
50
|
+
event.
|
|
51
|
+
```javascript
|
|
52
|
+
person.on('didEat', function(food) {
|
|
53
|
+
console.log('person ate some ' + food);
|
|
54
|
+
});
|
|
55
|
+
person.trigger('didEat', 'broccoli');
|
|
56
|
+
// outputs: person ate some broccoli
|
|
57
|
+
```
|
|
58
|
+
@method trigger
|
|
59
|
+
@param {String} name The name of the event
|
|
60
|
+
@param {Object...} args Optional arguments to pass on
|
|
61
|
+
@public
|
|
62
|
+
*/
|
|
63
|
+
trigger(name, ...args) {
|
|
64
|
+
sendEvent(this, name, args);
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
Cancels subscription for given name, target, and method.
|
|
69
|
+
@method off
|
|
70
|
+
@param {String} name The name of the event
|
|
71
|
+
@param {Object} target The target of the subscription
|
|
72
|
+
@param {Function|String} method The function or the name of a function of the subscription
|
|
73
|
+
@return this
|
|
74
|
+
@public
|
|
75
|
+
*/
|
|
76
|
+
off(name, target, method) {
|
|
77
|
+
removeListener(this, name, target, method);
|
|
78
|
+
return this;
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
Checks to see if object has any subscriptions for named event.
|
|
83
|
+
@method has
|
|
84
|
+
@param {String} name The name of the event
|
|
85
|
+
@return {Boolean} does the object have a subscription for event
|
|
86
|
+
@public
|
|
87
|
+
*/
|
|
88
|
+
has(name) {
|
|
89
|
+
return hasListeners(this, name);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
});
|
|
93
|
+
export default Evented;
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
import { assert } from '@ember/debug';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { ENV } from '@ember/-internals/environment';
|
|
3
|
+
import { isElementDescriptor, expandProperties, setClassicDecorator } from '@ember/-internals/metal';
|
|
4
|
+
import { getFactoryFor } from '@ember/-internals/container';
|
|
5
|
+
import { setObservers } from '@ember/-internals/utils';
|
|
6
|
+
import CoreObject from '@ember/object/core';
|
|
7
|
+
import Observable from '@ember/object/observable';
|
|
8
|
+
export { notifyPropertyChange, defineProperty, get, set, getProperties, setProperties, computed, trySet } from '@ember/-internals/metal';
|
|
9
|
+
|
|
10
|
+
class EmberObject extends CoreObject.extend(Observable) {
|
|
11
|
+
get _debugContainerKey() {
|
|
12
|
+
let factory = getFactoryFor(this);
|
|
13
|
+
return factory !== undefined && factory.fullName;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default EmberObject;
|
|
5
19
|
/**
|
|
6
20
|
Decorator that turns the target function into an Action which can be accessed
|
|
7
21
|
directly by reference.
|
|
@@ -179,4 +193,62 @@ export function action(...args) {
|
|
|
179
193
|
return setupAction(target, key, actionFn);
|
|
180
194
|
} // SAFETY: TS types are weird with decorators. This should work.
|
|
181
195
|
|
|
182
|
-
setClassicDecorator(action);
|
|
196
|
+
setClassicDecorator(action);
|
|
197
|
+
/**
|
|
198
|
+
Specify a method that observes property changes.
|
|
199
|
+
|
|
200
|
+
```javascript
|
|
201
|
+
import EmberObject from '@ember/object';
|
|
202
|
+
import { observer } from '@ember/object';
|
|
203
|
+
|
|
204
|
+
export default EmberObject.extend({
|
|
205
|
+
valueObserver: observer('value', function() {
|
|
206
|
+
// Executes whenever the "value" property changes
|
|
207
|
+
})
|
|
208
|
+
});
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Also available as `Function.prototype.observes` if prototype extensions are
|
|
212
|
+
enabled.
|
|
213
|
+
|
|
214
|
+
@method observer
|
|
215
|
+
@for @ember/object
|
|
216
|
+
@param {String} propertyNames*
|
|
217
|
+
@param {Function} func
|
|
218
|
+
@return func
|
|
219
|
+
@public
|
|
220
|
+
@static
|
|
221
|
+
*/
|
|
222
|
+
|
|
223
|
+
export function observer(...args) {
|
|
224
|
+
let funcOrDef = args.pop();
|
|
225
|
+
assert('observer must be provided a function or an observer definition', typeof funcOrDef === 'function' || typeof funcOrDef === 'object' && funcOrDef !== null);
|
|
226
|
+
let func;
|
|
227
|
+
let dependentKeys;
|
|
228
|
+
let sync;
|
|
229
|
+
|
|
230
|
+
if (typeof funcOrDef === 'function') {
|
|
231
|
+
func = funcOrDef;
|
|
232
|
+
dependentKeys = args;
|
|
233
|
+
sync = !ENV._DEFAULT_ASYNC_OBSERVERS;
|
|
234
|
+
} else {
|
|
235
|
+
func = funcOrDef.fn;
|
|
236
|
+
dependentKeys = funcOrDef.dependentKeys;
|
|
237
|
+
sync = funcOrDef.sync;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
assert('observer called without a function', typeof func === 'function');
|
|
241
|
+
assert('observer called without valid path', Array.isArray(dependentKeys) && dependentKeys.length > 0 && dependentKeys.every(p => typeof p === 'string' && Boolean(p.length)));
|
|
242
|
+
assert('observer called without sync', typeof sync === 'boolean');
|
|
243
|
+
let paths = [];
|
|
244
|
+
|
|
245
|
+
for (let dependentKey of dependentKeys) {
|
|
246
|
+
expandProperties(dependentKey, path => paths.push(path));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
setObservers(func, {
|
|
250
|
+
paths,
|
|
251
|
+
sync
|
|
252
|
+
});
|
|
253
|
+
return func;
|
|
254
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// This is a legacy location to keep the reexports test happy.
|
|
2
|
+
// Don't add anything new here.
|
|
3
|
+
export { cacheFor, guidFor } from './-internals';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { computed, isElementDescriptor, alias, expandProperties } from '@ember/-internals/metal';
|
|
2
|
+
import { get, set } from '@ember/object';
|
|
2
3
|
import { assert, deprecate } from '@ember/debug';
|
|
4
|
+
import { isEmpty, isNone } from '@ember/utils';
|
|
3
5
|
/**
|
|
4
6
|
@module @ember/object
|
|
5
7
|
*/
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { DEBUG } from '@glimmer/env';
|
|
5
5
|
import { assert } from '@ember/debug';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
6
|
+
import { autoComputed, isElementDescriptor } from '@ember/-internals/metal';
|
|
7
|
+
import { computed, get } from '@ember/object';
|
|
8
|
+
import { compare } from '@ember/utils';
|
|
9
|
+
import EmberArray, { A as emberA, uniqBy as uniqByArray } from '@ember/array';
|
|
9
10
|
|
|
10
11
|
function isNativeOrEmberArray(obj) {
|
|
11
12
|
return Array.isArray(obj) || EmberArray.detect(obj);
|