ember-source 4.1.0-alpha.2 → 4.1.0-alpha.6

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/blueprints/initializer/files/__root__/initializers/__name__.js +0 -1
  3. package/blueprints/instance-initializer/files/__root__/instance-initializers/__name__.js +0 -1
  4. package/build-metadata.json +3 -3
  5. package/dist/ember-template-compiler.js +25 -274
  6. package/dist/ember-template-compiler.map +1 -1
  7. package/dist/ember-testing.js +4 -1
  8. package/dist/ember-testing.map +1 -1
  9. package/dist/ember.debug.js +227 -1338
  10. package/dist/ember.debug.map +1 -1
  11. package/dist/header/license.js +1 -1
  12. package/dist/header/loader.js +1 -0
  13. package/dist/packages/@ember/-internals/container/index.js +17 -183
  14. package/dist/packages/@ember/-internals/environment/index.js +0 -12
  15. package/dist/packages/@ember/-internals/extension-support/lib/container_debug_adapter.js +7 -0
  16. package/dist/packages/@ember/-internals/glimmer/index.js +34 -71
  17. package/dist/packages/@ember/-internals/metal/index.js +65 -2
  18. package/dist/packages/@ember/-internals/routing/lib/ext/controller.js +1 -0
  19. package/dist/packages/@ember/-internals/routing/lib/services/router.js +16 -8
  20. package/dist/packages/@ember/-internals/routing/lib/system/route.js +2 -1
  21. package/dist/packages/@ember/-internals/routing/lib/system/router.js +10 -45
  22. package/dist/packages/@ember/-internals/runtime/lib/system/core_object.js +4 -90
  23. package/dist/packages/@ember/-internals/views/index.js +0 -1
  24. package/dist/packages/@ember/-internals/views/lib/system/event_dispatcher.js +22 -72
  25. package/dist/packages/@ember/application/instance.js +1 -22
  26. package/dist/packages/@ember/application/lib/application.js +7 -24
  27. package/dist/packages/@ember/canary-features/index.js +4 -2
  28. package/dist/packages/@ember/deprecated-features/index.js +0 -3
  29. package/dist/packages/@ember/engine/index.js +1 -5
  30. package/dist/packages/@ember/engine/instance.js +0 -4
  31. package/dist/packages/@ember/object/lib/computed/computed_macros.js +0 -373
  32. package/dist/packages/@ember/object/lib/computed/reduce_computed_macros.js +0 -351
  33. package/dist/packages/@ember/service/index.js +19 -5
  34. package/dist/packages/@glimmer/tracking/index.js +1 -1
  35. package/dist/packages/ember/index.js +2 -3
  36. package/dist/packages/ember/version.js +1 -1
  37. package/dist/packages/ember-testing/lib/adapters/qunit.js +1 -0
  38. package/docs/data.json +326 -368
  39. package/lib/index.js +11 -48
  40. package/package.json +33 -33
  41. package/dist/packages/@ember/-internals/views/lib/system/jquery.js +0 -26
  42. package/dist/packages/jquery/index.js +0 -2
package/docs/data.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "The Ember API",
4
4
  "description": "The Ember API: a framework for building ambitious web applications",
5
5
  "url": "https://emberjs.com/",
6
- "version": "4.1.0-alpha.2"
6
+ "version": "4.1.0-alpha.6"
7
7
  },
8
8
  "files": {
9
9
  "node_modules/rsvp/lib/rsvp/promise/all.js": {
@@ -601,6 +601,13 @@
601
601
  },
602
602
  "namespaces": {}
603
603
  },
604
+ "packages/@ember/-internals/metal/lib/cached.ts": {
605
+ "name": "packages/@ember/-internals/metal/lib/cached.ts",
606
+ "modules": {},
607
+ "classes": {},
608
+ "fors": {},
609
+ "namespaces": {}
610
+ },
604
611
  "packages/@ember/-internals/metal/lib/computed.ts": {
605
612
  "name": "packages/@ember/-internals/metal/lib/computed.ts",
606
613
  "modules": {},
@@ -1915,7 +1922,7 @@
1915
1922
  "tag": "module",
1916
1923
  "file": "packages/@ember/-internals/glimmer/lib/glimmer-component-docs.ts",
1917
1924
  "line": 1,
1918
- "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Template-only and Glimmer components. If you\nare looking for the API documentation for Classic components, it is\n[available here](/ember/release/classes/Component). The source code for\nGlimmer components can be found in [`@glimmer/component`](https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component).\n\n## Defining a Template-only Component\n\nThe simplest way to create a component is to create a template file in\n`app/templates/components`. For example, if you name a template\n`app/templates/components/person-profile.hbs`:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n<img src={{@person.avatar}}>\n<p class='signature'>{{@person.signature}}</p>\n```\n\nYou will be able to use `<PersonProfile />` to invoke this component elsewhere\nin your application:\n\n```app/templates/application.hbs\n<PersonProfile @person={{this.currentUser}} />\n```\n\nNote that component names are capitalized here in order to distinguish them\nfrom regular HTML elements, but they are dasherized in the file system.\n\nWhile the angle bracket invocation form is generally preferred, it is also\npossible to invoke the same component with the `{{person-profile}}` syntax:\n\n```app/templates/application.hbs\n{{person-profile person=this.currentUser}}\n```\n\nNote that with this syntax, you use dashes in the component name and\narguments are passed without the `@` sign.\n\nIn both cases, Ember will render the content of the component template we\ncreated above. The end result will be something like this:\n\n```html\n<h1>Tomster</h1>\n<img src=\"https://emberjs.com/tomster.jpg\">\n<p class='signature'>Out of office this week</p>\n```\n\n## File System Nesting\n\nComponents can be nested inside sub-folders for logical groupping. For\nexample, if we placed our template in\n`app/templates/components/person/short-profile.hbs`, we can invoke it as\n`<Person::ShortProfile />`:\n\n```app/templates/application.hbs\n<Person::ShortProfile @person={{this.currentUser}} />\n```\n\nOr equivalently, `{{person/short-profile}}`:\n\n```app/templates/application.hbs\n{{person/short-profile person=this.currentUser}}\n```\n\n## Using Blocks\n\nYou can use `yield` inside a template to include the **contents** of any block\nattached to the component. For instance, if we added a `{{yield}}` to our\ncomponent like so:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield}}\n```\n\nWe could then invoke it like this:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <p>Admin mode</p>\n</PersonProfile>\n```\n\nor with curly syntax like this:\n\n```handlebars\n{{#person-profile person=this.currentUser}}\n <p>Admin mode</p>\n{{/person-profile}}\n```\n\nAnd the content passed in between the brackets of the component would be\nrendered in the same place as the `{{yield}}` within it, replacing it.\n\nBlocks are executed in their original context, meaning they have access to the\nscope and any in-scope variables where they were defined.\n\n### Passing parameters to blocks\n\nYou can also pass positional parameters to `{{yield}}`, which are then made\navailable in the block:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield @person.signature}}\n```\n\nWe can then use this value in the block like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n```\n\n### Passing multiple blocks\n\nYou can pass multiple blocks to a component by giving them names, and\nspecifying which block you are yielding to with `{{yield}}`. For instance, if\nwe wanted to add a way for users to customize the title of our\n`<PersonProfile>` component, we could add a named block inside of the header:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield to=\"title\"}}</h1>\n{{yield}}\n```\n\nThis component could then be invoked like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title>{{this.currentUser.name}}</:title>\n <:default>{{this.currentUser.signature}}</:default>\n</PersonProfile>\n```\n\nWhen passing named blocks, you must name every block, including the `default`\nblock, which is the block that is defined if you do not pass a `to` parameter\nto `{{yield}}`. Whenever you invoke a component without passing explicitly\nnamed blocks, the passed block is considered the `default` block.\n\n### Passing parameters to named blocks\n\nYou can also pass parameters to named blocks:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield @person.name to=\"title\"}}</h1>\n{{yield @person.signature}}\n```\n\nThese parameters can then be used like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n```\n\n### Checking to see if a block exists\n\nYou can also check to see if a block exists using the `(has-block)` keyword,\nand conditionally use it, or provide a default template instead.\n\n```app/templates/components/person-profile.hbs\n<h1>\n {{#if (has-block \"title\")}}\n {{yield @person.name to=\"title\"}}\n {{else}}\n {{@person.name}}\n {{/if}}\n</h1>\n\n{{#if (has-block)}}\n {{yield @person.signature}}\n{{else}}\n {{@person.signature}}\n{{/if}}\n```\n\nWith this template, we can then optionally pass in one block, both blocks, or\nnone at all:\n\n```handlebars\n{{! passing both blocks }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n\n{{! passing just the title block }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n</PersonProfile>\n\n{{! passing just the default block }}\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n\n{{! not passing any blocks }}\n<PersonProfile @person={{this.currentUser}}/>\n```\n\n### Checking to see if a block has parameters\n\nWe can also check if a block receives parameters using the `(has-block-params)`\nkeyword, and conditionally yield different values if so.\n\n```app/templates/components/person-profile.hbs\n{{#if (has-block-params)}}\n {{yield @person.signature}}\n{{else}}\n {{yield}}\n{{/if}}\n```\n\n## Customizing Components With JavaScript\n\nTo add JavaScript to a component, create a JavaScript file in the same\nlocation as the template file, with the same name, and export a subclass\nof `Component` as the default value. For example, to add Javascript to the\n`PersonProfile` component which we defined above, we would create\n`app/comopnents/person-profile.js` and export our class as the default, like\nso:\n\n```app/components/person-profile.js\nimport Component from '@glimmer/component';\n\nexport default class PersonProfileComponent extends Component {\n get displayName() {\n let { title, firstName, lastName } = this.args.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n}\n```\n\nYou can add your own properties, methods, and lifecycle hooks to this\nsubclass to customize its behavior, and you can reference the instance of the\nclass in your template using `{{this}}`. For instance, we could access the\n`displayName` property of our `PersonProfile` component instance in the\ntemplate like this:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## `constructor`\n\nparams: `owner` object and `args` object\n\nConstructs a new component and assigns itself the passed properties. The\nconstructor is run whenever a new instance of the component is created, and\ncan be used to setup the initial state of the component.\n\n```javascript\nimport Component from '@glimmer/component';\n\nexport default class SomeComponent extends Component {\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.displayMode === 'list') {\n this.items = [];\n }\n }\n}\n```\n\nService injections and arguments are available in the constructor.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.fadeIn === true) {\n this.myAnimations.register(this, 'fade-in');\n }\n }\n}\n```\n\n## `willDestroy`\n\n`willDestroy` is called after the component has been removed from the DOM, but\nbefore the component is fully destroyed. This lifecycle hook can be used to\ncleanup the component and any related state.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n willDestroy() {\n super.willDestroy(...arguments);\n\n this.myAnimations.unregister(this);\n }\n}\n```\n\n## `args`\n\nThe `args` property of Glimmer components is an object that contains the\n_arguments_ that are passed to the component. For instance, the\nfollowing component usage:\n\n```handlebars\n<SomeComponent @fadeIn={{true}} />\n```\n\nWould result in the following `args` object to be passed to the component:\n\n```javascript\n{ fadeIn: true }\n```\n\n`args` can be accessed at any point in the component lifecycle, including\n`constructor` and `willDestroy`. They are also automatically marked as tracked\nproperties, and they can be depended on as computed property dependencies:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\n\nexport default class SomeComponent extends Component {\n\n @computed('args.someValue')\n get computedGetter() {\n // updates whenever args.someValue updates\n return this.args.someValue;\n }\n\n get standardGetter() {\n // updates whenever args.anotherValue updates (Ember 3.13+)\n return this.args.anotherValue;\n }\n}\n```\n\n## `isDestroying`\n\nA boolean flag to tell if the component is in the process of destroying. This is set to\ntrue before `willDestroy` is called.\n\n## `isDestroyed`\nA boolean to tell if the component has been fully destroyed. This is set to true\nafter `willDestroy` is called.",
1925
+ "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Template-only and Glimmer components. If you\nare looking for the API documentation for Classic components, it is\n[available here](/ember/release/classes/Component). The source code for\nGlimmer components can be found in [`@glimmer/component`](https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component).\n\n## Defining a Template-only Component\n\nThe simplest way to create a component is to create a template file in\n`app/templates/components`. For example, if you name a template\n`app/templates/components/person-profile.hbs`:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n<img src={{@person.avatar}}>\n<p class='signature'>{{@person.signature}}</p>\n```\n\nYou will be able to use `<PersonProfile />` to invoke this component elsewhere\nin your application:\n\n```app/templates/application.hbs\n<PersonProfile @person={{this.currentUser}} />\n```\n\nNote that component names are capitalized here in order to distinguish them\nfrom regular HTML elements, but they are dasherized in the file system.\n\nWhile the angle bracket invocation form is generally preferred, it is also\npossible to invoke the same component with the `{{person-profile}}` syntax:\n\n```app/templates/application.hbs\n{{person-profile person=this.currentUser}}\n```\n\nNote that with this syntax, you use dashes in the component name and\narguments are passed without the `@` sign.\n\nIn both cases, Ember will render the content of the component template we\ncreated above. The end result will be something like this:\n\n```html\n<h1>Tomster</h1>\n<img src=\"https://emberjs.com/tomster.jpg\">\n<p class='signature'>Out of office this week</p>\n```\n\n## File System Nesting\n\nComponents can be nested inside sub-folders for logical groupping. For\nexample, if we placed our template in\n`app/templates/components/person/short-profile.hbs`, we can invoke it as\n`<Person::ShortProfile />`:\n\n```app/templates/application.hbs\n<Person::ShortProfile @person={{this.currentUser}} />\n```\n\nOr equivalently, `{{person/short-profile}}`:\n\n```app/templates/application.hbs\n{{person/short-profile person=this.currentUser}}\n```\n\n## Using Blocks\n\nYou can use `yield` inside a template to include the **contents** of any block\nattached to the component. For instance, if we added a `{{yield}}` to our\ncomponent like so:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield}}\n```\n\nWe could then invoke it like this:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <p>Admin mode</p>\n</PersonProfile>\n```\n\nor with curly syntax like this:\n\n```handlebars\n{{#person-profile person=this.currentUser}}\n <p>Admin mode</p>\n{{/person-profile}}\n```\n\nAnd the content passed in between the brackets of the component would be\nrendered in the same place as the `{{yield}}` within it, replacing it.\n\nBlocks are executed in their original context, meaning they have access to the\nscope and any in-scope variables where they were defined.\n\n### Passing parameters to blocks\n\nYou can also pass positional parameters to `{{yield}}`, which are then made\navailable in the block:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield @person.signature}}\n```\n\nWe can then use this value in the block like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n```\n\n### Passing multiple blocks\n\nYou can pass multiple blocks to a component by giving them names, and\nspecifying which block you are yielding to with `{{yield}}`. For instance, if\nwe wanted to add a way for users to customize the title of our\n`<PersonProfile>` component, we could add a named block inside of the header:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield to=\"title\"}}</h1>\n{{yield}}\n```\n\nThis component could then be invoked like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title>{{this.currentUser.name}}</:title>\n <:default>{{this.currentUser.signature}}</:default>\n</PersonProfile>\n```\n\nWhen passing named blocks, you must name every block, including the `default`\nblock, which is the block that is defined if you do not pass a `to` parameter\nto `{{yield}}`. Whenever you invoke a component without passing explicitly\nnamed blocks, the passed block is considered the `default` block.\n\n### Passing parameters to named blocks\n\nYou can also pass parameters to named blocks:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield @person.name to=\"title\"}}</h1>\n{{yield @person.signature}}\n```\n\nThese parameters can then be used like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n```\n\n### Checking to see if a block exists\n\nYou can also check to see if a block exists using the `(has-block)` keyword,\nand conditionally use it, or provide a default template instead.\n\n```app/templates/components/person-profile.hbs\n<h1>\n {{#if (has-block \"title\")}}\n {{yield @person.name to=\"title\"}}\n {{else}}\n {{@person.name}}\n {{/if}}\n</h1>\n\n{{#if (has-block)}}\n {{yield @person.signature}}\n{{else}}\n {{@person.signature}}\n{{/if}}\n```\n\nWith this template, we can then optionally pass in one block, both blocks, or\nnone at all:\n\n```handlebars\n{{! passing both blocks }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n\n{{! passing just the title block }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n</PersonProfile>\n\n{{! passing just the default block }}\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n\n{{! not passing any blocks }}\n<PersonProfile @person={{this.currentUser}}/>\n```\n\n### Checking to see if a block has parameters\n\nWe can also check if a block receives parameters using the `(has-block-params)`\nkeyword, and conditionally yield different values if so.\n\n```app/templates/components/person-profile.hbs\n{{#if (has-block-params)}}\n {{yield @person.signature}}\n{{else}}\n {{yield}}\n{{/if}}\n```\n\n## Customizing Components With JavaScript\n\nTo add JavaScript to a component, create a JavaScript file in the same\nlocation as the template file, with the same name, and export a subclass\nof `Component` as the default value. For example, to add Javascript to the\n`PersonProfile` component which we defined above, we would create\n`app/comopnents/person-profile.js` and export our class as the default, like\nso:\n\n```app/components/person-profile.js\nimport Component from '@glimmer/component';\n\nexport default class PersonProfileComponent extends Component {\n get displayName() {\n let { title, firstName, lastName } = this.args.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n}\n```\n\nYou can add your own properties, methods, and lifecycle hooks to this\nsubclass to customize its behavior, and you can reference the instance of the\nclass in your template using `{{this}}`. For instance, we could access the\n`displayName` property of our `PersonProfile` component instance in the\ntemplate like this:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## `constructor`\n\nparams: `owner` object and `args` object\n\nConstructs a new component and assigns itself the passed properties. The\nconstructor is run whenever a new instance of the component is created, and\ncan be used to setup the initial state of the component.\n\n```javascript\nimport Component from '@glimmer/component';\n\nexport default class SomeComponent extends Component {\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.displayMode === 'list') {\n this.items = [];\n }\n }\n}\n```\n\nService injections and arguments are available in the constructor.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.fadeIn === true) {\n this.myAnimations.register(this, 'fade-in');\n }\n }\n}\n```\n\n## `willDestroy`\n\n`willDestroy` is called after the component has been removed from the DOM, but\nbefore the component is fully destroyed. This lifecycle hook can be used to\ncleanup the component and any related state.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n willDestroy() {\n super.willDestroy(...arguments);\n\n this.myAnimations.unregister(this);\n }\n}\n```\n\n## `args`\n\nThe `args` property of Glimmer components is an object that contains the\n_arguments_ that are passed to the component. For instance, the\nfollowing component usage:\n\n```handlebars\n<SomeComponent @fadeIn={{true}} />\n```\n\nWould result in the following `args` object to be passed to the component:\n\n```javascript\n{ fadeIn: true }\n```\n\n`args` can be accessed at any point in the component lifecycle, including\n`constructor` and `willDestroy`. They are also automatically marked as tracked\nproperties, and they can be depended on as computed property dependencies:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\n\nexport default class SomeComponent extends Component {\n\n @computed('args.someValue')\n get computedGetter() {\n // updates whenever args.someValue updates\n return this.args.someValue;\n }\n\n get standardGetter() {\n // updates whenever args.anotherValue updates (Ember 3.13+)\n return this.args.anotherValue;\n }\n}\n```\n\n## `isDestroying`\n\nA boolean flag to tell if the component is in the process of destroying. This is set to\ntrue before `willDestroy` is called.\n\n## `isDestroyed`\nA boolean to tell if the component has been fully destroyed. This is set to true\nafter `willDestroy` is called.",
1919
1926
  "access": "public",
1920
1927
  "tagname": ""
1921
1928
  },
@@ -2031,7 +2038,7 @@
2031
2038
  },
2032
2039
  "tag": "module",
2033
2040
  "file": "packages/@ember/application/instance.js",
2034
- "line": 307
2041
+ "line": 305
2035
2042
  },
2036
2043
  "@ember/array": {
2037
2044
  "name": "@ember/array",
@@ -2077,7 +2084,7 @@
2077
2084
  "namespaces": {},
2078
2085
  "tag": "module",
2079
2086
  "file": "packages/@ember/canary-features/index.ts",
2080
- "line": 26,
2087
+ "line": 27,
2081
2088
  "description": "Set `EmberENV.FEATURES` in your application's `config/environment.js` file\nto enable canary features in your application.\n\nSee the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\nfor more details.",
2082
2089
  "access": "public",
2083
2090
  "tagname": ""
@@ -2242,7 +2249,7 @@
2242
2249
  "namespaces": {},
2243
2250
  "tag": "module",
2244
2251
  "file": "packages/@ember/service/index.js",
2245
- "line": 60,
2252
+ "line": 74,
2246
2253
  "access": "public",
2247
2254
  "tagname": ""
2248
2255
  },
@@ -2362,7 +2369,7 @@
2362
2369
  "module": "rsvp",
2363
2370
  "namespace": "",
2364
2371
  "file": "packages/@ember/-internals/container/lib/registry.ts",
2365
- "line": 67,
2372
+ "line": 65,
2366
2373
  "description": "A registry used to store factory and option information keyed\nby type.\n\nA `Registry` stores the factory and option information needed by a\n`Container` to instantiate and cache objects.\n\nThe API for `Registry` is still in flux and should not be considered stable.",
2367
2374
  "access": "private",
2368
2375
  "tagname": "",
@@ -2396,7 +2403,7 @@
2396
2403
  "module": "@ember/debug",
2397
2404
  "namespace": "",
2398
2405
  "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
2399
- "line": 8,
2406
+ "line": 9,
2400
2407
  "description": "The `ContainerDebugAdapter` helps the container and resolver interface\nwith tools that debug Ember such as the\n[Ember Inspector](https://github.com/emberjs/ember-inspector)\nfor Chrome and Firefox.\n\nThis class can be extended by a custom resolver implementer\nto override some of the methods with library-specific code.\n\nThe methods likely to be overridden are:\n\n* `canCatalogEntriesByType`\n* `catalogEntriesByType`\n\nThe adapter will need to be registered\nin the application's container as `container-debug-adapter:main`.\n\nExample:\n\n```javascript\nApplication.initializer({\n name: \"containerDebugAdapter\",\n\n initialize(application) {\n application.register('container-debug-adapter:main', require('app/container-debug-adapter'));\n }\n});\n```",
2401
2408
  "extends": "EmberObject",
2402
2409
  "since": "1.5.0",
@@ -2948,7 +2955,7 @@
2948
2955
  "namespace": "",
2949
2956
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
2950
2957
  "line": 23,
2951
- "description": "The Router service is the public API that provides access to the router.\n\nThe immediate benefit of the Router service is that you can inject it into components,\ngiving them a friendly way to initiate transitions and ask questions about the current\nglobal router state.\n\nIn this example, the Router service is injected into a component to initiate a transition\nto a dedicated route:\n\n```app/components/example.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class ExampleComponent extends Component {\n @service router;\n\n @action\n next() {\n this.router.transitionTo('other.route');\n }\n}\n```\n\nLike any service, it can also be injected into helpers, routes, etc.",
2958
+ "description": "The Router service is the public API that provides access to the router.\n\nThe immediate benefit of the Router service is that you can inject it into components,\ngiving them a friendly way to initiate transitions and ask questions about the current\nglobal router state.\n\nIn this example, the Router service is injected into a component to initiate a transition\nto a dedicated route:\n\n```app/components/example.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nexport default class ExampleComponent extends Component {\n @service router;\n\n @action\n next() {\n this.router.transitionTo('other.route');\n }\n}\n```\n\nLike any service, it can also be injected into helpers, routes, etc.",
2952
2959
  "access": "public",
2953
2960
  "tagname": "",
2954
2961
  "extends": "Service"
@@ -3386,7 +3393,7 @@
3386
3393
  "module": "@ember/object",
3387
3394
  "namespace": "",
3388
3395
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
3389
- "line": 246,
3396
+ "line": 137,
3390
3397
  "description": "`CoreObject` is the base class for all Ember constructs. It establishes a\nclass system based on Ember's Mixin system, and provides the basis for the\nEmber Object Model. `CoreObject` should generally not be used directly,\ninstead you should use `EmberObject`.\n\n## Usage\n\nYou can define a class by extending from `CoreObject` using the `extend`\nmethod:\n\n```js\nconst Person = CoreObject.extend({\n name: 'Tomster',\n});\n```\n\nFor detailed usage, see the [Object Model](https://guides.emberjs.com/release/object-model/)\nsection of the guides.\n\n## Usage with Native Classes\n\nNative JavaScript `class` syntax can be used to extend from any `CoreObject`\nbased class:\n\n```js\nclass Person extends CoreObject {\n init() {\n super.init(...arguments);\n this.name = 'Tomster';\n }\n}\n```\n\nSome notes about `class` usage:\n\n* `new` syntax is not currently supported with classes that extend from\n `EmberObject` or `CoreObject`. You must continue to use the `create` method\n when making new instances of classes, even if they are defined using native\n class syntax. If you want to use `new` syntax, consider creating classes\n which do _not_ extend from `EmberObject` or `CoreObject`. Ember features,\n such as computed properties and decorators, will still work with base-less\n classes.\n* Instead of using `this._super()`, you must use standard `super` syntax in\n native classes. See the [MDN docs on classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Super_class_calls_with_super)\n for more details.\n* Native classes support using [constructors](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Constructor)\n to set up newly-created instances. Ember uses these to, among other things,\n support features that need to retrieve other entities by name, like Service\n injection and `getOwner`. To ensure your custom instance setup logic takes\n place after this important work is done, avoid using the `constructor` in\n favor of `init`.\n* Properties passed to `create` will be available on the instance by the time\n `init` runs, so any code that requires these values should work at that\n time.\n* Using native classes, and switching back to the old Ember Object model is\n fully supported.",
3391
3398
  "access": "public",
3392
3399
  "tagname": ""
@@ -3544,7 +3551,7 @@
3544
3551
  "module": "ember",
3545
3552
  "namespace": "Ember",
3546
3553
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
3547
- "line": 22,
3554
+ "line": 15,
3548
3555
  "description": "`Ember.EventDispatcher` handles delegating browser events to their\ncorresponding `Ember.Views.` For example, when you click on a view,\n`Ember.EventDispatcher` ensures that that view's `mouseDown` method gets\ncalled.",
3549
3556
  "access": "private",
3550
3557
  "tagname": "",
@@ -3584,7 +3591,7 @@
3584
3591
  "module": "@ember/application",
3585
3592
  "namespace": "",
3586
3593
  "file": "packages/@ember/application/lib/application.js",
3587
- "line": 33,
3594
+ "line": 30,
3588
3595
  "description": "An instance of `Application` is the starting point for every Ember\napplication. It instantiates, initializes and coordinates the\nobjects that make up your app.\n\nEach Ember app has one and only one `Application` object. Although\nEmber CLI creates this object implicitly, the `Application` class\nis defined in the `app/app.js`. You can define a `ready` method on the\n`Application` class, which will be run by Ember when the application is\ninitialized.\n\n```app/app.js\nconst App = Application.extend({\n ready() {\n // your code here\n }\n})\n```\n\nBecause `Application` ultimately inherits from `Ember.Namespace`, any classes\nyou create will have useful string representations when calling `toString()`.\nSee the `Ember.Namespace` documentation for more information.\n\nWhile you can think of your `Application` as a container that holds the\nother classes in your application, there are several other responsibilities\ngoing on under-the-hood that you may want to understand. It is also important\nto understand that an `Application` is different from an `ApplicationInstance`.\nRefer to the Guides to understand the difference between these.\n\n### Event Delegation\n\nEmber uses a technique called _event delegation_. This allows the framework\nto set up a global, shared event listener instead of requiring each view to\ndo it manually. For example, instead of each view registering its own\n`mousedown` listener on its associated element, Ember sets up a `mousedown`\nlistener on the `body`.\n\nIf a `mousedown` event occurs, Ember will look at the target of the event and\nstart walking up the DOM node tree, finding corresponding views and invoking\ntheir `mouseDown` method as it goes.\n\n`Application` has a number of default events that it listens for, as\nwell as a mapping from lowercase events to camel-cased view method names. For\nexample, the `keypress` event causes the `keyPress` method on the view to be\ncalled, the `dblclick` event causes `doubleClick` to be called, and so on.\n\nIf there is a bubbling browser event that Ember does not listen for by\ndefault, you can specify custom events and their corresponding view method\nnames by setting the application's `customEvents` property:\n\n```app/app.js\nimport Application from '@ember/application';\n\nlet App = Application.extend({\n customEvents: {\n // add support for the paste event\n paste: 'paste'\n }\n});\n```\n\nTo prevent Ember from setting up a listener for a default event,\nspecify the event name with a `null` value in the `customEvents`\nproperty:\n\n```app/app.js\nimport Application from '@ember/application';\n\nlet App = Application.extend({\n customEvents: {\n // prevent listeners for mouseenter/mouseleave events\n mouseenter: null,\n mouseleave: null\n }\n});\n```\n\nBy default, the application sets up these event listeners on the document\nbody. However, in cases where you are embedding an Ember application inside\nan existing page, you may want it to set up the listeners on an element\ninside the body.\n\nFor example, if only events inside a DOM element with the ID of `ember-app`\nshould be delegated, set your application's `rootElement` property:\n\n```app/app.js\nimport Application from '@ember/application';\n\nlet App = Application.extend({\n rootElement: '#ember-app'\n});\n```\n\nThe `rootElement` can be either a DOM element or a jQuery-compatible selector\nstring. Note that *views appended to the DOM outside the root element will\nnot receive events.* If you specify a custom root element, make sure you only\nappend views inside it!\n\nTo learn more about the events Ember components use, see\n\n[components/handling-events](https://guides.emberjs.com/release/components/handling-events/#toc_event-names).\n\n### Initializers\n\nTo add behavior to the Application's boot process, you can define initializers in\nthe `app/initializers` directory, or with `ember generate initializer` using Ember CLI.\nThese files should export a named `initialize` function which will receive the created `application`\nobject as its first argument.\n\n```javascript\nexport function initialize(application) {\n // application.inject('route', 'foo', 'service:foo');\n}\n```\n\nApplication initializers can be used for a variety of reasons including:\n\n- setting up external libraries\n- injecting dependencies\n- setting up event listeners in embedded apps\n- deferring the boot process using the `deferReadiness` and `advanceReadiness` APIs.\n\n### Routing\n\nIn addition to creating your application's router, `Application` is\nalso responsible for telling the router when to start routing. Transitions\nbetween routes can be logged with the `LOG_TRANSITIONS` flag, and more\ndetailed intra-transition logging can be logged with\nthe `LOG_TRANSITIONS_INTERNAL` flag:\n\n```javascript\nimport Application from '@ember/application';\n\nlet App = Application.create({\n LOG_TRANSITIONS: true, // basic logging of successful transitions\n LOG_TRANSITIONS_INTERNAL: true // detailed logging of all routing steps\n});\n```\n\nBy default, the router will begin trying to translate the current URL into\napplication state once the browser emits the `DOMContentReady` event. If you\nneed to defer routing, you can call the application's `deferReadiness()`\nmethod. Once routing can begin, call the `advanceReadiness()` method.\n\nIf there is any setup required before routing begins, you can implement a\n`ready()` method on your app that will be invoked immediately before routing\nbegins.",
3589
3596
  "extends": "Engine",
3590
3597
  "uses": [
@@ -3604,7 +3611,7 @@
3604
3611
  "module": "@ember/application",
3605
3612
  "namespace": "",
3606
3613
  "file": "packages/@ember/application/instance.js",
3607
- "line": 11,
3614
+ "line": 10,
3608
3615
  "description": "The `ApplicationInstance` encapsulates all of the stateful aspects of a\nrunning `Application`.\n\nAt a high-level, we break application boot into two distinct phases:\n\n* Definition time, where all of the classes, templates, and other\n dependencies are loaded (typically in the browser).\n* Run time, where we begin executing the application once everything\n has loaded.\n\nDefinition time can be expensive and only needs to happen once since it is\nan idempotent operation. For example, between test runs and FastBoot\nrequests, the application stays the same. It is only the state that we want\nto reset.\n\nThat state is what the `ApplicationInstance` manages: it is responsible for\ncreating the container that contains all application state, and disposing of\nit once the particular test run or FastBoot request has finished.",
3609
3616
  "access": "public",
3610
3617
  "tagname": "",
@@ -3621,7 +3628,7 @@
3621
3628
  "module": "@ember/application",
3622
3629
  "namespace": "ApplicationInstance",
3623
3630
  "file": "packages/@ember/application/instance.js",
3624
- "line": 307,
3631
+ "line": 305,
3625
3632
  "description": "A list of boot-time configuration options for customizing the behavior of\nan `ApplicationInstance`.\n\nThis is an interface class that exists purely to document the available\noptions; you do not need to construct it manually. Simply pass a regular\nJavaScript object containing the desired options into methods that require\none of these options object:\n\n```javascript\nMyApp.visit(\"/\", { location: \"none\", rootElement: \"#container\" });\n```\n\nNot all combinations of the supported options are valid. See the documentation\non `Application#visit` for the supported configurations.\n\nInternal, experimental or otherwise unstable flags are marked as private.",
3626
3633
  "access": "public",
3627
3634
  "tagname": ""
@@ -3637,7 +3644,7 @@
3637
3644
  "module": "@ember/canary-features",
3638
3645
  "namespace": "",
3639
3646
  "file": "packages/@ember/canary-features/index.ts",
3640
- "line": 26,
3647
+ "line": 27,
3641
3648
  "description": "The hash of enabled Canary features. Add to this, any canary features\nbefore creating your application.",
3642
3649
  "static": 1,
3643
3650
  "since": "1.1.0",
@@ -3860,7 +3867,7 @@
3860
3867
  "module": "@ember/service",
3861
3868
  "namespace": "",
3862
3869
  "file": "packages/@ember/service/index.js",
3863
- "line": 60,
3870
+ "line": 74,
3864
3871
  "extends": "EmberObject",
3865
3872
  "since": "1.10.0",
3866
3873
  "access": "public",
@@ -4711,7 +4718,7 @@
4711
4718
  },
4712
4719
  {
4713
4720
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4714
- "line": 111,
4721
+ "line": 104,
4715
4722
  "description": "A backup registry for resolving registrations when no matches can be found.",
4716
4723
  "access": "private",
4717
4724
  "tagname": "",
@@ -4723,7 +4730,7 @@
4723
4730
  },
4724
4731
  {
4725
4732
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4726
- "line": 119,
4733
+ "line": 112,
4727
4734
  "description": "An object that has a `resolve` method that resolves a name.",
4728
4735
  "access": "private",
4729
4736
  "tagname": "",
@@ -4735,7 +4742,7 @@
4735
4742
  },
4736
4743
  {
4737
4744
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4738
- "line": 127,
4745
+ "line": 120,
4739
4746
  "access": "private",
4740
4747
  "tagname": "",
4741
4748
  "itemtype": "property",
@@ -4746,29 +4753,7 @@
4746
4753
  },
4747
4754
  {
4748
4755
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4749
- "line": 133,
4750
- "access": "private",
4751
- "tagname": "",
4752
- "itemtype": "property",
4753
- "name": "_typeInjections",
4754
- "type": "InheritingDict",
4755
- "class": "Registry",
4756
- "module": "rsvp"
4757
- },
4758
- {
4759
- "file": "packages/@ember/-internals/container/lib/registry.ts",
4760
- "line": 140,
4761
- "access": "private",
4762
- "tagname": "",
4763
- "itemtype": "property",
4764
- "name": "_injections",
4765
- "type": "InheritingDict",
4766
- "class": "Registry",
4767
- "module": "rsvp"
4768
- },
4769
- {
4770
- "file": "packages/@ember/-internals/container/lib/registry.ts",
4771
- "line": 147,
4756
+ "line": 126,
4772
4757
  "access": "private",
4773
4758
  "tagname": "",
4774
4759
  "itemtype": "property",
@@ -4779,7 +4764,7 @@
4779
4764
  },
4780
4765
  {
4781
4766
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4782
- "line": 154,
4767
+ "line": 133,
4783
4768
  "access": "private",
4784
4769
  "tagname": "",
4785
4770
  "itemtype": "property",
@@ -4790,7 +4775,7 @@
4790
4775
  },
4791
4776
  {
4792
4777
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4793
- "line": 161,
4778
+ "line": 140,
4794
4779
  "access": "private",
4795
4780
  "tagname": "",
4796
4781
  "itemtype": "property",
@@ -4801,7 +4786,7 @@
4801
4786
  },
4802
4787
  {
4803
4788
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4804
- "line": 168,
4789
+ "line": 147,
4805
4790
  "access": "private",
4806
4791
  "tagname": "",
4807
4792
  "itemtype": "property",
@@ -4812,7 +4797,7 @@
4812
4797
  },
4813
4798
  {
4814
4799
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4815
- "line": 175,
4800
+ "line": 154,
4816
4801
  "description": "Creates a container based on this registry.",
4817
4802
  "access": "private",
4818
4803
  "tagname": "",
@@ -4834,7 +4819,7 @@
4834
4819
  },
4835
4820
  {
4836
4821
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4837
- "line": 187,
4822
+ "line": 166,
4838
4823
  "description": "Registers a factory for later injection.\n\nExample:\n\n```javascript\nlet registry = new Registry();\n\nregistry.register('model:user', Person, {singleton: false });\nregistry.register('fruit:favorite', Orange);\nregistry.register('communication:main', Email, {singleton: false});\n```",
4839
4824
  "access": "private",
4840
4825
  "tagname": "",
@@ -4862,7 +4847,7 @@
4862
4847
  },
4863
4848
  {
4864
4849
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4865
- "line": 221,
4850
+ "line": 200,
4866
4851
  "description": "Unregister a fullName\n\n```javascript\nlet registry = new Registry();\nregistry.register('model:user', User);\n\nregistry.resolve('model:user').create() instanceof User //=> true\n\nregistry.unregister('model:user')\nregistry.resolve('model:user') === undefined //=> true\n```",
4867
4852
  "access": "private",
4868
4853
  "tagname": "",
@@ -4880,7 +4865,7 @@
4880
4865
  },
4881
4866
  {
4882
4867
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4883
- "line": 251,
4868
+ "line": 230,
4884
4869
  "description": "Given a fullName return the corresponding factory.\n\nBy default `resolve` will retrieve the factory from\nthe registry.\n\n```javascript\nlet registry = new Registry();\nregistry.register('api:twitter', Twitter);\n\nregistry.resolve('api:twitter') // => Twitter\n```\n\nOptionally the registry can be provided with a custom resolver.\nIf provided, `resolve` will first provide the custom resolver\nthe opportunity to resolve the fullName, otherwise it will fallback\nto the registry.\n\n```javascript\nlet registry = new Registry();\nregistry.resolver = function(fullName) {\n // lookup via the module system of choice\n };\n\n// the twitter factory is added to the module system\nregistry.resolve('api:twitter') // => Twitter\n```",
4885
4870
  "access": "private",
4886
4871
  "tagname": "",
@@ -4916,7 +4901,7 @@
4916
4901
  },
4917
4902
  {
4918
4903
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4919
- "line": 294,
4904
+ "line": 273,
4920
4905
  "description": "A hook that can be used to describe how the resolver will\nattempt to find the factory.\n\nFor example, the default Ember `.describe` returns the full\nclass name (including namespace) where Ember's resolver expects\nto find the `fullName`.",
4921
4906
  "access": "private",
4922
4907
  "tagname": "",
@@ -4938,7 +4923,7 @@
4938
4923
  },
4939
4924
  {
4940
4925
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4941
- "line": 317,
4926
+ "line": 296,
4942
4927
  "description": "A hook to enable custom fullName normalization behavior",
4943
4928
  "access": "private",
4944
4929
  "tagname": "",
@@ -4960,7 +4945,7 @@
4960
4945
  },
4961
4946
  {
4962
4947
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4963
- "line": 335,
4948
+ "line": 314,
4964
4949
  "description": "Normalize a fullName based on the application's conventions",
4965
4950
  "access": "private",
4966
4951
  "tagname": "",
@@ -4982,7 +4967,7 @@
4982
4967
  },
4983
4968
  {
4984
4969
  "file": "packages/@ember/-internals/container/lib/registry.ts",
4985
- "line": 350,
4970
+ "line": 329,
4986
4971
  "itemtype": "method",
4987
4972
  "name": "makeToString",
4988
4973
  "access": "private",
@@ -5008,7 +4993,7 @@
5008
4993
  },
5009
4994
  {
5010
4995
  "file": "packages/@ember/-internals/container/lib/registry.ts",
5011
- "line": 368,
4996
+ "line": 347,
5012
4997
  "description": "Given a fullName check if the container is aware of its factory\nor singleton instance.",
5013
4998
  "access": "private",
5014
4999
  "tagname": "",
@@ -5044,7 +5029,7 @@
5044
5029
  },
5045
5030
  {
5046
5031
  "file": "packages/@ember/-internals/container/lib/registry.ts",
5047
- "line": 387,
5032
+ "line": 366,
5048
5033
  "description": "Allow registering options for all factories of a type.\n\n```javascript\nlet registry = new Registry();\nlet container = registry.container();\n\n// if all of type `connection` must not be singletons\nregistry.optionsForType('connection', { singleton: false });\n\nregistry.register('connection:twitter', TwitterConnection);\nregistry.register('connection:facebook', FacebookConnection);\n\nlet twitter = container.lookup('connection:twitter');\nlet twitter2 = container.lookup('connection:twitter');\n\ntwitter === twitter2; // => false\n\nlet facebook = container.lookup('connection:facebook');\nlet facebook2 = container.lookup('connection:facebook');\n\nfacebook === facebook2; // => false\n```",
5049
5034
  "access": "private",
5050
5035
  "tagname": "",
@@ -5067,7 +5052,7 @@
5067
5052
  },
5068
5053
  {
5069
5054
  "file": "packages/@ember/-internals/container/lib/registry.ts",
5070
- "line": 428,
5055
+ "line": 407,
5071
5056
  "access": "private",
5072
5057
  "tagname": "",
5073
5058
  "itemtype": "method",
@@ -5089,63 +5074,14 @@
5089
5074
  },
5090
5075
  {
5091
5076
  "file": "packages/@ember/-internals/container/lib/registry.ts",
5092
- "line": 470,
5093
- "description": "Used only via `injection`.\n\nProvides a specialized form of injection, specifically enabling\nall objects of one type to be injected with a reference to another\nobject.\n\nFor example, provided each object of type `controller` needed a `router`.\none would do the following:\n\n```javascript\nlet registry = new Registry();\nlet container = registry.container();\n\nregistry.register('router:main', Router);\nregistry.register('controller:user', UserController);\nregistry.register('controller:post', PostController);\n\nregistry.typeInjection('controller', 'router', 'router:main');\n\nlet user = container.lookup('controller:user');\nlet post = container.lookup('controller:post');\n\nuser.router instanceof Router; //=> true\npost.router instanceof Router; //=> true\n\n// both controllers share the same router\nuser.router === post.router; //=> true\n```",
5094
- "access": "private",
5095
- "tagname": "",
5096
- "itemtype": "method",
5097
- "name": "typeInjection",
5098
- "params": [
5099
- {
5100
- "name": "type",
5101
- "description": "",
5102
- "type": "String"
5103
- },
5104
- {
5105
- "name": "property",
5106
- "description": "",
5107
- "type": "String"
5108
- },
5109
- {
5110
- "name": "fullName",
5111
- "description": "",
5112
- "type": "String"
5113
- }
5114
- ],
5115
- "class": "Registry",
5116
- "module": "rsvp"
5117
- },
5118
- {
5119
- "file": "packages/@ember/-internals/container/lib/registry.ts",
5120
- "line": 517,
5121
- "description": "Defines injection rules.\n\nThese rules are used to inject dependencies onto objects when they\nare instantiated.\n\nTwo forms of injections are possible:\n\n* Injecting one fullName on another fullName\n* Injecting one fullName on a type\n\nExample:\n\n```javascript\nlet registry = new Registry();\nlet container = registry.container();\n\nregistry.register('source:main', Source);\nregistry.register('model:user', User);\nregistry.register('model:post', Post);\n\n// injecting one fullName on another fullName\n// eg. each user model gets a post model\nregistry.injection('model:user', 'post', 'model:post');\n\n// injecting one fullName on another type\nregistry.injection('model', 'source', 'source:main');\n\nlet user = container.lookup('model:user');\nlet post = container.lookup('model:post');\n\nuser.source instanceof Source; //=> true\npost.source instanceof Source; //=> true\n\nuser.post instanceof Post; //=> true\n\n// and both models share the same source\nuser.source === post.source; //=> true\n```",
5122
- "access": "private",
5123
- "tagname": "",
5124
- "itemtype": "method",
5125
- "name": "injection",
5126
- "params": [
5127
- {
5128
- "name": "factoryName",
5129
- "description": "",
5130
- "type": "String"
5131
- },
5132
- {
5133
- "name": "property",
5134
- "description": "",
5135
- "type": "String"
5136
- },
5137
- {
5138
- "name": "injectionName",
5139
- "description": "",
5140
- "type": "String"
5141
- }
5142
- ],
5077
+ "line": 449,
5078
+ "description": "This is deprecated in favor of explicit injection of dependencies.\n\nReference: https://deprecations.emberjs.com/v3.x#toc_implicit-injections\n```\n\n@private\n@method injection\n@param {String} factoryName\n@param {String} property\n@param {String} injectionName\n@deprecated",
5143
5079
  "class": "Registry",
5144
5080
  "module": "rsvp"
5145
5081
  },
5146
5082
  {
5147
5083
  "file": "packages/@ember/-internals/container/lib/registry.ts",
5148
- "line": 583,
5084
+ "line": 478,
5149
5085
  "access": "private",
5150
5086
  "tagname": "",
5151
5087
  "itemtype": "method",
@@ -5241,19 +5177,6 @@
5241
5177
  {
5242
5178
  "file": "packages/@ember/-internals/environment/lib/env.ts",
5243
5179
  "line": 131,
5244
- "description": "Whether the app is using jQuery. See RFC #294.\n\nThis is not intended to be set directly, as the implementation may change in\nthe future. Use `@ember/optional-features` instead.",
5245
- "itemtype": "property",
5246
- "name": "_JQUERY_INTEGRATION",
5247
- "type": "Boolean",
5248
- "default": "true",
5249
- "access": "private",
5250
- "tagname": "",
5251
- "class": "EmberENV",
5252
- "module": "rsvp"
5253
- },
5254
- {
5255
- "file": "packages/@ember/-internals/environment/lib/env.ts",
5256
- "line": 145,
5257
5180
  "description": "Whether the app defaults to using async observers.\n\nThis is not intended to be set directly, as the implementation may change in\nthe future. Use `@ember/optional-features` instead.",
5258
5181
  "itemtype": "property",
5259
5182
  "name": "_DEFAULT_ASYNC_OBSERVERS",
@@ -5266,7 +5189,7 @@
5266
5189
  },
5267
5190
  {
5268
5191
  "file": "packages/@ember/-internals/environment/lib/env.ts",
5269
- "line": 159,
5192
+ "line": 145,
5270
5193
  "description": "Controls the maximum number of scheduled rerenders without \"settling\". In general,\napplications should not need to modify this environment variable, but please\nopen an issue so that we can determine if a better default value is needed.",
5271
5194
  "itemtype": "property",
5272
5195
  "name": "_RERENDER_LOOP_LIMIT",
@@ -5279,7 +5202,7 @@
5279
5202
  },
5280
5203
  {
5281
5204
  "file": "packages/@ember/-internals/environment/lib/env.ts",
5282
- "line": 172,
5205
+ "line": 158,
5283
5206
  "description": "Allows disabling the implicit this property fallback deprecation. This could be useful\nas a way to control the volume of deprecations that are issued by temporarily disabling\nthe implicit this fallback deprecations, which would allow the other deprecations to be more easily\nidentified in the console).\n\nNOTE: The fallback behavior **will be removed** in Ember 4.0.0, disabling **_IS NOT_**\na viable strategy for handling this deprecation.",
5284
5207
  "itemtype": "property",
5285
5208
  "name": "_DISABLE_PROPERTY_FALLBACK_DEPRECATION",
@@ -5292,7 +5215,7 @@
5292
5215
  },
5293
5216
  {
5294
5217
  "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
5295
- "line": 43,
5218
+ "line": 50,
5296
5219
  "description": "The resolver instance of the application\nbeing debugged. This property will be injected\non creation.",
5297
5220
  "itemtype": "property",
5298
5221
  "name": "resolver",
@@ -5304,7 +5227,7 @@
5304
5227
  },
5305
5228
  {
5306
5229
  "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
5307
- "line": 54,
5230
+ "line": 61,
5308
5231
  "description": "Returns true if it is possible to catalog a list of available\nclasses in the resolver for a given type.",
5309
5232
  "itemtype": "method",
5310
5233
  "name": "canCatalogEntriesByType",
@@ -5326,7 +5249,7 @@
5326
5249
  },
5327
5250
  {
5328
5251
  "file": "packages/@ember/-internals/extension-support/lib/container_debug_adapter.js",
5329
- "line": 71,
5252
+ "line": 78,
5330
5253
  "description": "Returns the available classes a given type.",
5331
5254
  "itemtype": "method",
5332
5255
  "name": "catalogEntriesByType",
@@ -6377,7 +6300,7 @@
6377
6300
  {
6378
6301
  "file": "packages/@ember/-internals/glimmer/lib/helpers/action.ts",
6379
6302
  "line": 22,
6380
- "description": "The `{{action}}` helper provides a way to pass triggers for behavior (usually\njust a function) between components, and into components from controllers.\n\n### Passing functions with the action helper\n\nThere are three contexts an action helper can be used in. The first two\ncontexts to discuss are attribute context, and Handlebars value context.\n\n```handlebars\n{{! An example of attribute context }}\n<div onclick={{action \"save\"}}></div>\n{{! Examples of Handlebars value context }}\n{{input on-input=(action \"save\")}}\n{{yield (action \"refreshData\") andAnotherParam}}\n```\n\nIn these contexts,\nthe helper is called a \"closure action\" helper. Its behavior is simple:\nIf passed a function name, read that function off the `actions` property\nof the current context. Once that function is read, or immediately if a function was\npassed, create a closure over that function and any arguments.\nThe resulting value of an action helper used this way is simply a function.\n\nFor example, in the attribute context:\n\n```handlebars\n{{! An example of attribute context }}\n<div onclick={{action \"save\"}}></div>\n```\n\nThe resulting template render logic would be:\n\n```js\nvar div = document.createElement('div');\nvar actionFunction = (function(context){\n return function() {\n return context.actions.save.apply(context, arguments);\n };\n})(context);\ndiv.onclick = actionFunction;\n```\n\nThus when the div is clicked, the action on that context is called.\nBecause the `actionFunction` is just a function, closure actions can be\npassed between components and still execute in the correct context.\n\nHere is an example action handler on a component:\n\n```app/components/my-component.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class extends Component {\n @action\n save() {\n this.model.save();\n }\n}\n```\n\nActions are always looked up on the `actions` property of the current context.\nThis avoids collisions in the naming of common actions, such as `destroy`.\nTwo options can be passed to the `action` helper when it is used in this way.\n\n* `target=someProperty` will look to `someProperty` instead of the current\n context for the `actions` hash. This can be useful when targeting a\n service for actions.\n* `value=\"target.value\"` will read the path `target.value` off the first\n argument to the action when it is called and rewrite the first argument\n to be that value. This is useful when attaching actions to event listeners.\n\n### Invoking an action\n\nClosure actions curry both their scope and any arguments. When invoked, any\nadditional arguments are added to the already curried list.\nActions are presented in JavaScript as callbacks, and are\ninvoked like any other JavaScript function.\n\nFor example\n\n```app/components/update-name.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class extends Component {\n @action\n setName(model, name) {\n model.set('name', name);\n }\n}\n```\n\n```app/components/update-name.hbs\n{{input on-input=(action (action 'setName' @model) value=\"target.value\")}}\n```\n\nThe first argument (`@model`) was curried over, and the run-time argument (`event`)\nbecomes a second argument. Action calls can be nested this way because each simply\nreturns a function. Any function can be passed to the `{{action}}` helper, including\nother actions.\n\nActions invoked with `sendAction` have the same currying behavior as demonstrated\nwith `on-input` above. For example:\n\n```app/components/my-input.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class extends Component {\n @action\n setName(model, name) {\n model.set('name', name);\n }\n}\n```\n\n```handlebars\n<MyInput @submit={{action 'setName' @model}} />\n```\n\nor\n\n```handlebars\n{{my-input submit=(action 'setName' @model)}}\n```\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n click() {\n // Note that model is not passed, it was curried in the template\n this.submit('bob');\n }\n});\n```\n\n### Attaching actions to DOM elements\n\nThe third context of the `{{action}}` helper can be called \"element space\".\nFor example:\n\n```handlebars\n{{! An example of element space }}\n<div {{action \"save\"}}></div>\n```\n\nUsed this way, the `{{action}}` helper provides a useful shortcut for\nregistering an HTML element in a template for a single DOM event and\nforwarding that interaction to the template's context (controller or component).\nIf the context of a template is a controller, actions used this way will\nbubble to routes when the controller does not implement the specified action.\nOnce an action hits a route, it will bubble through the route hierarchy.\n\n### Event Propagation\n\n`{{action}}` helpers called in element space can control event bubbling. Note\nthat the closure style actions cannot.\n\nEvents triggered through the action helper will automatically have\n`.preventDefault()` called on them. You do not need to do so in your event\nhandlers. If you need to allow event propagation (to handle file inputs for\nexample) you can supply the `preventDefault=false` option to the `{{action}}` helper:\n\n```handlebars\n<div {{action \"sayHello\" preventDefault=false}}>\n <input type=\"file\" />\n <input type=\"checkbox\" />\n</div>\n```\n\nTo disable bubbling, pass `bubbles=false` to the helper:\n\n```handlebars\n<button {{action 'edit' post bubbles=false}}>Edit</button>\n```\n\nTo disable bubbling with closure style actions you must create your own\nwrapper helper that makes use of `event.stopPropagation()`:\n\n```handlebars\n<div onclick={{disable-bubbling (action \"sayHello\")}}>Hello</div>\n```\n\n```app/helpers/disable-bubbling.js\nimport { helper } from '@ember/component/helper';\n\nexport function disableBubbling([action]) {\n return function(event) {\n event.stopPropagation();\n return action(event);\n };\n}\nexport default helper(disableBubbling);\n```\n\nIf you need the default handler to trigger you should either register your\nown event handler, or use event methods on your view class. See\n[\"Responding to Browser Events\"](/ember/release/classes/Component)\nin the documentation for `Component` for more information.\n\n### Specifying DOM event type\n\n`{{action}}` helpers called in element space can specify an event type.\nBy default the `{{action}}` helper registers for DOM `click` events. You can\nsupply an `on` option to the helper to specify a different DOM event name:\n\n```handlebars\n<div {{action \"anActionName\" on=\"doubleClick\"}}>\n click me\n</div>\n```\n\nSee [\"Event Names\"](/ember/release/classes/Component) for a list of\nacceptable DOM event names.\n\n### Specifying whitelisted modifier keys\n\n`{{action}}` helpers called in element space can specify modifier keys.\nBy default the `{{action}}` helper will ignore click events with pressed modifier\nkeys. You can supply an `allowedKeys` option to specify which keys should not be ignored.\n\n```handlebars\n<div {{action \"anActionName\" allowedKeys=\"alt\"}}>\n click me\n</div>\n```\n\nThis way the action will fire when clicking with the alt key pressed down.\nAlternatively, supply \"any\" to the `allowedKeys` option to accept any combination of modifier keys.\n\n```handlebars\n<div {{action \"anActionName\" allowedKeys=\"any\"}}>\n click me with any key pressed\n</div>\n```\n\n### Specifying a Target\n\nA `target` option can be provided to the helper to change\nwhich object will receive the method call. This option must be a path\nto an object, accessible in the current context:\n\n```app/templates/application.hbs\n<div {{action \"anActionName\" target=someService}}>\n click me\n</div>\n```\n\n```app/controllers/application.js\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Controller {\n @service someService;\n}\n```",
6303
+ "description": "The `{{action}}` helper provides a way to pass triggers for behavior (usually\njust a function) between components, and into components from controllers.\n\n### Passing functions with the action helper\n\nThere are three contexts an action helper can be used in. The first two\ncontexts to discuss are attribute context, and Handlebars value context.\n\n```handlebars\n{{! An example of attribute context }}\n<div onclick={{action \"save\"}}></div>\n{{! Examples of Handlebars value context }}\n{{input on-input=(action \"save\")}}\n{{yield (action \"refreshData\") andAnotherParam}}\n```\n\nIn these contexts,\nthe helper is called a \"closure action\" helper. Its behavior is simple:\nIf passed a function name, read that function off the `actions` property\nof the current context. Once that function is read, or immediately if a function was\npassed, create a closure over that function and any arguments.\nThe resulting value of an action helper used this way is simply a function.\n\nFor example, in the attribute context:\n\n```handlebars\n{{! An example of attribute context }}\n<div onclick={{action \"save\"}}></div>\n```\n\nThe resulting template render logic would be:\n\n```js\nvar div = document.createElement('div');\nvar actionFunction = (function(context){\n return function() {\n return context.actions.save.apply(context, arguments);\n };\n})(context);\ndiv.onclick = actionFunction;\n```\n\nThus when the div is clicked, the action on that context is called.\nBecause the `actionFunction` is just a function, closure actions can be\npassed between components and still execute in the correct context.\n\nHere is an example action handler on a component:\n\n```app/components/my-component.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class extends Component {\n @action\n save() {\n this.model.save();\n }\n}\n```\n\nActions are always looked up on the `actions` property of the current context.\nThis avoids collisions in the naming of common actions, such as `destroy`.\nTwo options can be passed to the `action` helper when it is used in this way.\n\n* `target=someProperty` will look to `someProperty` instead of the current\n context for the `actions` hash. This can be useful when targeting a\n service for actions.\n* `value=\"target.value\"` will read the path `target.value` off the first\n argument to the action when it is called and rewrite the first argument\n to be that value. This is useful when attaching actions to event listeners.\n\n### Invoking an action\n\nClosure actions curry both their scope and any arguments. When invoked, any\nadditional arguments are added to the already curried list.\nActions are presented in JavaScript as callbacks, and are\ninvoked like any other JavaScript function.\n\nFor example\n\n```app/components/update-name.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class extends Component {\n @action\n setName(model, name) {\n model.set('name', name);\n }\n}\n```\n\n```app/components/update-name.hbs\n{{input on-input=(action (action 'setName' @model) value=\"target.value\")}}\n```\n\nThe first argument (`@model`) was curried over, and the run-time argument (`event`)\nbecomes a second argument. Action calls can be nested this way because each simply\nreturns a function. Any function can be passed to the `{{action}}` helper, including\nother actions.\n\nActions invoked with `sendAction` have the same currying behavior as demonstrated\nwith `on-input` above. For example:\n\n```app/components/my-input.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class extends Component {\n @action\n setName(model, name) {\n model.set('name', name);\n }\n}\n```\n\n```handlebars\n<MyInput @submit={{action 'setName' @model}} />\n```\n\nor\n\n```handlebars\n{{my-input submit=(action 'setName' @model)}}\n```\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n click() {\n // Note that model is not passed, it was curried in the template\n this.submit('bob');\n }\n});\n```\n\n### Attaching actions to DOM elements\n\nThe third context of the `{{action}}` helper can be called \"element space\".\nFor example:\n\n```handlebars\n{{! An example of element space }}\n<div {{action \"save\"}}></div>\n```\n\nUsed this way, the `{{action}}` helper provides a useful shortcut for\nregistering an HTML element in a template for a single DOM event and\nforwarding that interaction to the template's context (controller or component).\nIf the context of a template is a controller, actions used this way will\nbubble to routes when the controller does not implement the specified action.\nOnce an action hits a route, it will bubble through the route hierarchy.\n\n### Event Propagation\n\n`{{action}}` helpers called in element space can control event bubbling. Note\nthat the closure style actions cannot.\n\nEvents triggered through the action helper will automatically have\n`.preventDefault()` called on them. You do not need to do so in your event\nhandlers. If you need to allow event propagation (to handle file inputs for\nexample) you can supply the `preventDefault=false` option to the `{{action}}` helper:\n\n```handlebars\n<div {{action \"sayHello\" preventDefault=false}}>\n <input type=\"file\" />\n <input type=\"checkbox\" />\n</div>\n```\n\nTo disable bubbling, pass `bubbles=false` to the helper:\n\n```handlebars\n<button {{action 'edit' post bubbles=false}}>Edit</button>\n```\n\nTo disable bubbling with closure style actions you must create your own\nwrapper helper that makes use of `event.stopPropagation()`:\n\n```handlebars\n<div onclick={{disable-bubbling (action \"sayHello\")}}>Hello</div>\n```\n\n```app/helpers/disable-bubbling.js\nimport { helper } from '@ember/component/helper';\n\nexport function disableBubbling([action]) {\n return function(event) {\n event.stopPropagation();\n return action(event);\n };\n}\nexport default helper(disableBubbling);\n```\n\nIf you need the default handler to trigger you should either register your\nown event handler, or use event methods on your view class. See\n[\"Responding to Browser Events\"](/ember/release/classes/Component)\nin the documentation for `Component` for more information.\n\n### Specifying DOM event type\n\n`{{action}}` helpers called in element space can specify an event type.\nBy default the `{{action}}` helper registers for DOM `click` events. You can\nsupply an `on` option to the helper to specify a different DOM event name:\n\n```handlebars\n<div {{action \"anActionName\" on=\"doubleClick\"}}>\n click me\n</div>\n```\n\nSee [\"Event Names\"](/ember/release/classes/Component) for a list of\nacceptable DOM event names.\n\n### Specifying whitelisted modifier keys\n\n`{{action}}` helpers called in element space can specify modifier keys.\nBy default the `{{action}}` helper will ignore click events with pressed modifier\nkeys. You can supply an `allowedKeys` option to specify which keys should not be ignored.\n\n```handlebars\n<div {{action \"anActionName\" allowedKeys=\"alt\"}}>\n click me\n</div>\n```\n\nThis way the action will fire when clicking with the alt key pressed down.\nAlternatively, supply \"any\" to the `allowedKeys` option to accept any combination of modifier keys.\n\n```handlebars\n<div {{action \"anActionName\" allowedKeys=\"any\"}}>\n click me with any key pressed\n</div>\n```\n\n### Specifying a Target\n\nA `target` option can be provided to the helper to change\nwhich object will receive the method call. This option must be a path\nto an object, accessible in the current context:\n\n```app/templates/application.hbs\n<div {{action \"anActionName\" target=someService}}>\n click me\n</div>\n```\n\n```app/controllers/application.js\nimport Controller from '@ember/controller';\nimport { service } from '@ember/service';\n\nexport default class extends Controller {\n @service someService;\n}\n```",
6381
6304
  "itemtype": "method",
6382
6305
  "name": "action",
6383
6306
  "access": "public",
@@ -6808,19 +6731,19 @@
6808
6731
  },
6809
6732
  {
6810
6733
  "file": "packages/@ember/-internals/glimmer/lib/views/outlet.ts",
6811
- "line": 101,
6734
+ "line": 102,
6812
6735
  "class": "Component",
6813
6736
  "module": "@ember/template"
6814
6737
  },
6815
6738
  {
6816
6739
  "file": "packages/@ember/-internals/glimmer/lib/views/outlet.ts",
6817
- "line": 109,
6740
+ "line": 110,
6818
6741
  "class": "Component",
6819
6742
  "module": "@ember/template"
6820
6743
  },
6821
6744
  {
6822
6745
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6823
- "line": 793,
6746
+ "line": 753,
6824
6747
  "description": "Normally, Ember's component model is \"write-only\". The component takes a\nbunch of attributes that it got passed in, and uses them to render its\ntemplate.\n\nOne nice thing about this model is that if you try to set a value to the\nsame thing as last time, Ember (through HTMLBars) will avoid doing any\nwork on the DOM.\n\nThis is not just a performance optimization. If an attribute has not\nchanged, it is important not to clobber the element's \"hidden state\".\nFor example, if you set an input's `value` to the same value as before,\nit will clobber selection state and cursor position. In other words,\nsetting an attribute is not **always** idempotent.\n\nThis method provides a way to read an element's attribute and also\nupdate the last value Ember knows about at the same time. This makes\nsetting an attribute idempotent.\n\nIn particular, what this means is that if you get an `<input>` element's\n`value` attribute and then re-render the template with the same value,\nit will avoid clobbering the cursor and selection position.\nSince most attribute sets are idempotent in the browser, you typically\ncan get away with reading attributes using jQuery, but the most reliable\nway to do so is through this method.",
6825
6748
  "itemtype": "method",
6826
6749
  "name": "readDOMAttr",
@@ -6841,7 +6764,7 @@
6841
6764
  },
6842
6765
  {
6843
6766
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6844
- "line": 844,
6767
+ "line": 804,
6845
6768
  "description": "The WAI-ARIA role of the control represented by this view. For example, a\nbutton may have a role of type 'button', or a pane may have a role of\ntype 'alertdialog'. This property is used by assistive software to help\nvisually challenged users navigate rich web applications.\n\nThe full list of valid WAI-ARIA roles is available at:\n[https://www.w3.org/TR/wai-aria/#roles_categorization](https://www.w3.org/TR/wai-aria/#roles_categorization)",
6846
6769
  "itemtype": "property",
6847
6770
  "name": "ariaRole",
@@ -6854,7 +6777,7 @@
6854
6777
  },
6855
6778
  {
6856
6779
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6857
- "line": 859,
6780
+ "line": 819,
6858
6781
  "description": "Enables components to take a list of parameters as arguments.\nFor example, a component that takes two parameters with the names\n`name` and `age`:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nlet MyComponent = Component.extend();\n\nMyComponent.reopenClass({\n positionalParams: ['name', 'age']\n});\n\nexport default MyComponent;\n```\n\nIt can then be invoked like this:\n\n```hbs\n{{my-component \"John\" 38}}\n```\n\nThe parameters can be referred to just like named parameters:\n\n```hbs\nName: {{name}}, Age: {{age}}.\n```\n\nUsing a string instead of an array allows for an arbitrary number of\nparameters:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nlet MyComponent = Component.extend();\n\nMyComponent.reopenClass({\n positionalParams: 'names'\n});\n\nexport default MyComponent;\n```\n\nIt can then be invoked like this:\n\n```hbs\n{{my-component \"John\" \"Michael\" \"Scott\"}}\n```\nThe parameters can then be referred to by enumerating over the list:\n\n```hbs\n{{#each names as |name|}}{{name}}{{/each}}\n```",
6859
6782
  "static": 1,
6860
6783
  "access": "public",
@@ -6867,7 +6790,7 @@
6867
6790
  },
6868
6791
  {
6869
6792
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6870
- "line": 920,
6793
+ "line": 880,
6871
6794
  "description": "Called when the attributes passed into the component have been updated.\nCalled both during the initial render of a container and during a rerender.\nCan be used in place of an observer; code placed here will be executed\nevery time any attribute updates.",
6872
6795
  "itemtype": "method",
6873
6796
  "name": "didReceiveAttrs",
@@ -6879,7 +6802,7 @@
6879
6802
  },
6880
6803
  {
6881
6804
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6882
- "line": 931,
6805
+ "line": 891,
6883
6806
  "description": "Called when the attributes passed into the component have been updated.\nCalled both during the initial render of a container and during a rerender.\nCan be used in place of an observer; code placed here will be executed\nevery time any attribute updates.",
6884
6807
  "itemtype": "event",
6885
6808
  "name": "didReceiveAttrs",
@@ -6891,7 +6814,7 @@
6891
6814
  },
6892
6815
  {
6893
6816
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6894
- "line": 941,
6817
+ "line": 901,
6895
6818
  "description": "Called after a component has been rendered, both on initial render and\nin subsequent rerenders.",
6896
6819
  "itemtype": "method",
6897
6820
  "name": "didRender",
@@ -6903,7 +6826,7 @@
6903
6826
  },
6904
6827
  {
6905
6828
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6906
- "line": 950,
6829
+ "line": 910,
6907
6830
  "description": "Called after a component has been rendered, both on initial render and\nin subsequent rerenders.",
6908
6831
  "itemtype": "event",
6909
6832
  "name": "didRender",
@@ -6915,7 +6838,7 @@
6915
6838
  },
6916
6839
  {
6917
6840
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6918
- "line": 958,
6841
+ "line": 918,
6919
6842
  "description": "Called before a component has been rendered, both on initial render and\nin subsequent rerenders.",
6920
6843
  "itemtype": "method",
6921
6844
  "name": "willRender",
@@ -6927,7 +6850,7 @@
6927
6850
  },
6928
6851
  {
6929
6852
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6930
- "line": 967,
6853
+ "line": 927,
6931
6854
  "description": "Called before a component has been rendered, both on initial render and\nin subsequent rerenders.",
6932
6855
  "itemtype": "event",
6933
6856
  "name": "willRender",
@@ -6939,7 +6862,7 @@
6939
6862
  },
6940
6863
  {
6941
6864
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6942
- "line": 975,
6865
+ "line": 935,
6943
6866
  "description": "Called when the attributes passed into the component have been changed.\nCalled only during a rerender, not during an initial render.",
6944
6867
  "itemtype": "method",
6945
6868
  "name": "didUpdateAttrs",
@@ -6951,7 +6874,7 @@
6951
6874
  },
6952
6875
  {
6953
6876
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6954
- "line": 984,
6877
+ "line": 944,
6955
6878
  "description": "Called when the attributes passed into the component have been changed.\nCalled only during a rerender, not during an initial render.",
6956
6879
  "itemtype": "event",
6957
6880
  "name": "didUpdateAttrs",
@@ -6963,7 +6886,7 @@
6963
6886
  },
6964
6887
  {
6965
6888
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6966
- "line": 992,
6889
+ "line": 952,
6967
6890
  "description": "Called when the component is about to update and rerender itself.\nCalled only during a rerender, not during an initial render.",
6968
6891
  "itemtype": "method",
6969
6892
  "name": "willUpdate",
@@ -6975,7 +6898,7 @@
6975
6898
  },
6976
6899
  {
6977
6900
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6978
- "line": 1001,
6901
+ "line": 961,
6979
6902
  "description": "Called when the component is about to update and rerender itself.\nCalled only during a rerender, not during an initial render.",
6980
6903
  "itemtype": "event",
6981
6904
  "name": "willUpdate",
@@ -6987,7 +6910,7 @@
6987
6910
  },
6988
6911
  {
6989
6912
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
6990
- "line": 1009,
6913
+ "line": 969,
6991
6914
  "description": "Called when the component has updated and rerendered itself.\nCalled only during a rerender, not during an initial render.",
6992
6915
  "itemtype": "method",
6993
6916
  "name": "didUpdate",
@@ -6999,7 +6922,7 @@
6999
6922
  },
7000
6923
  {
7001
6924
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7002
- "line": 1018,
6925
+ "line": 978,
7003
6926
  "description": "Called when the component has updated and rerendered itself.\nCalled only during a rerender, not during an initial render.",
7004
6927
  "itemtype": "event",
7005
6928
  "name": "didUpdate",
@@ -7011,7 +6934,7 @@
7011
6934
  },
7012
6935
  {
7013
6936
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7014
- "line": 1026,
6937
+ "line": 986,
7015
6938
  "description": "Layout can be used to wrap content in a component.",
7016
6939
  "itemtype": "property",
7017
6940
  "name": "layout",
@@ -7023,7 +6946,7 @@
7023
6946
  },
7024
6947
  {
7025
6948
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7026
- "line": 1033,
6949
+ "line": 993,
7027
6950
  "description": "The name of the layout to lookup if no layout is provided.\nBy default `Component` will lookup a template with this name in\n`Ember.TEMPLATES` (a shared global object).",
7028
6951
  "itemtype": "property",
7029
6952
  "name": "layoutName",
@@ -7036,7 +6959,7 @@
7036
6959
  },
7037
6960
  {
7038
6961
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7039
- "line": 1043,
6962
+ "line": 1003,
7040
6963
  "description": "Returns a jQuery object for this component's element. If you pass in a selector\nstring, this method will return a jQuery object, using the current element\nas its buffer.\n\nFor example, calling `component.$('li')` will return a jQuery object containing\nall of the `li` elements inside the DOM element of this component.\n\nPlease note that jQuery integration is off by default and this feature will\nnot work properly. To enable this feature, you can read the instructions in\nthe [jquery-integration optional feature guide](https://guides.emberjs.com/release/configuring-ember/optional-features/#toc_jquery-integration).",
7041
6964
  "itemtype": "method",
7042
6965
  "name": "$",
@@ -7059,7 +6982,7 @@
7059
6982
  },
7060
6983
  {
7061
6984
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7062
- "line": 1060,
6985
+ "line": 1020,
7063
6986
  "description": "The HTML `id` of the component's element in the DOM. You can provide this\nvalue yourself but it must be unique (just as in HTML):\n\n```handlebars\n{{my-component elementId=\"a-really-cool-id\"}}\n```\n\n```handlebars\n<MyComponent @elementId=\"a-really-cool-id\" />\n```\nIf not manually set a default value will be provided by the framework.\nOnce rendered an element's `elementId` is considered immutable and you\nshould never change it. If you need to compute a dynamic value for the\n`elementId`, you should do this when the component or element is being\ninstantiated:\n\n```javascript\nexport default Component.extend({\n init() {\n this._super(...arguments);\n\n var index = this.get('index');\n this.set('elementId', `component-id${index}`);\n }\n});\n```",
7064
6987
  "itemtype": "property",
7065
6988
  "name": "elementId",
@@ -7084,7 +7007,7 @@
7084
7007
  {
7085
7008
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
7086
7009
  "line": 91,
7087
- "description": "On a class-based helper, it may be useful to force a recomputation of that\nhelpers value. This is akin to `rerender` on a component.\n\nFor example, this component will rerender when the `currentUser` on a\nsession service changes:\n\n```app/helpers/current-user-email.js\nimport Helper from '@ember/component/helper'\nimport { inject as service } from '@ember/service'\nimport { observer } from '@ember/object'\n\nexport default Helper.extend({\n session: service(),\n\n onNewUser: observer('session.currentUser', function() {\n this.recompute();\n }),\n\n compute() {\n return this.get('session.currentUser.email');\n }\n});\n```",
7010
+ "description": "On a class-based helper, it may be useful to force a recomputation of that\nhelpers value. This is akin to `rerender` on a component.\n\nFor example, this component will rerender when the `currentUser` on a\nsession service changes:\n\n```app/helpers/current-user-email.js\nimport Helper from '@ember/component/helper'\nimport { service } from '@ember/service'\nimport { observer } from '@ember/object'\n\nexport default Helper.extend({\n session: service(),\n\n onNewUser: observer('session.currentUser', function() {\n this.recompute();\n }),\n\n compute() {\n return this.get('session.currentUser.email');\n }\n});\n```",
7088
7011
  "itemtype": "method",
7089
7012
  "name": "recompute",
7090
7013
  "access": "public",
@@ -7286,6 +7209,16 @@
7286
7209
  "class": "@glimmer/tracking/primitives/cache",
7287
7210
  "module": "@glimmer/tracking/primitives/cache"
7288
7211
  },
7212
+ {
7213
+ "file": "packages/@ember/-internals/metal/lib/cached.ts",
7214
+ "line": 8,
7215
+ "decorator": "The `@cached` decorator can be used on getters in order to cache the return\nvalue of the getter. This is useful when a getter is expensive and used very\noften.",
7216
+ "example": [
7217
+ "\n\nin this guest list class, we have the `sortedGuests`\ngetter that sorts the guests alphabetically:\n\n```js\nimport { tracked } from '@glimmer/tracking';\n\nclass GuestList {\n @tracked guests = ['Zoey', 'Tomster'];\n\n get sortedGuests() {\n return this.guests.slice().sort()\n }\n}\n```\n\nEvery time `sortedGuests` is accessed, a new array will be created and sorted,\nbecause JavaScript getters do not cache by default. When the guest list is\nsmall, like the one in the example, this is not a problem. However, if the guest\nlist were to grow very large, it would mean that we would be doing a large\namount of work each time we accessed `sortedGetters`. With `@cached`, we can\ncache the value instead:\n\n```js\nimport { tracked, cached } from '@glimmer/tracking';\n\nclass GuestList {\n @tracked guests = ['Zoey', 'Tomster'];\n\n @cached\n get sortedGuests() {\n return this.guests.slice().sort()\n }\n}\n```\n\nNow the `sortedGuests` getter will be cached based on _autotracking_. It will\nonly rerun and create a new sorted array when the `guests` tracked property is\nupdated.\n\nIn general, you should avoid using `@cached` unless you have confirmed that the\ngetter you are decorating is computationally expensive. `@cached` adds a small\namount of overhead to the getter, making it more expensive. While this overhead\nis small, if `@cached` is overused it can add up to a large impact overall in\nyour app. Many getters and tracked properties are only accessed once, rendered,\nand then never rerendered, so adding `@cached` when it is unnecessary can\nnegatively impact performance."
7218
+ ],
7219
+ "class": "ComputedProperty",
7220
+ "module": "@glimmer/tracking/primitives/cache"
7221
+ },
7289
7222
  {
7290
7223
  "file": "packages/@ember/-internals/metal/lib/computed.ts",
7291
7224
  "line": 583,
@@ -8358,6 +8291,8 @@
8358
8291
  "description": "the transition object associated with this\n attempted transition",
8359
8292
  "type": "Transition"
8360
8293
  },
8294
+ "deprecated": true,
8295
+ "deprecationMessage": "Use replaceWith from the Router service instead.",
8361
8296
  "access": "public",
8362
8297
  "tagname": "",
8363
8298
  "class": "Ember.ControllerMixin",
@@ -8906,7 +8841,7 @@
8906
8841
  {
8907
8842
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8908
8843
  "line": 71,
8909
- "description": "Transition the application into another route. The route may\nbe either a single route or route path:\n\nSee [transitionTo](/ember/release/classes/Route/methods/transitionTo?anchor=transitionTo) for more info.\n\nCalling `transitionTo` from the Router service will cause default query parameter values to be included in the URL.\nThis behavior is different from calling `transitionTo` on a route or `transitionToRoute` on a controller.\nSee the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n\nIn the following example we use the Router service to navigate to a route with a\nspecific model from a Component in the first action, and in the second we trigger\na query-params only transition.\n\n```app/components/example.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n @action\n goToComments(post) {\n this.router.transitionTo('comments', post);\n }\n\n @action\n fetchMoreComments(latestComment) {\n this.router.transitionTo({\n queryParams: { commentsAfter: latestComment }\n });\n }\n}\n```",
8844
+ "description": "Transition the application into another route. The route may\nbe either a single route or route path:\n\nSee [transitionTo](/ember/release/classes/Route/methods/transitionTo?anchor=transitionTo) for more info.\n\nCalling `transitionTo` from the Router service will cause default query parameter values to be included in the URL.\nThis behavior is different from calling `transitionTo` on a route or `transitionToRoute` on a controller.\nSee the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n\nIn the following example we use the Router service to navigate to a route with a\nspecific model from a Component in the first action, and in the second we trigger\na query-params only transition.\n\n```app/components/example.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n @action\n goToComments(post) {\n this.router.transitionTo('comments', post);\n }\n\n @action\n fetchMoreComments(latestComment) {\n this.router.transitionTo({\n queryParams: { commentsAfter: latestComment }\n });\n }\n}\n```",
8910
8845
  "itemtype": "method",
8911
8846
  "name": "transitionTo",
8912
8847
  "params": [
@@ -8974,7 +8909,7 @@
8974
8909
  {
8975
8910
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
8976
8911
  "line": 174,
8977
- "description": "Generate a URL based on the supplied route name and optionally a model. The\nURL is returned as a string that can be used for any purpose.\n\nIn this example, the URL for the `author.books` route for a given author\nis copied to the clipboard.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.args.author);\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books\n }\n }\n}\n```\n\nJust like with `transitionTo` and `replaceWith`, `urlFor` can also handle\nquery parameters.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyOnlyEmberBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.author, {\n queryParams: { filter: 'emberjs' }\n });\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books?filter=emberjs\n }\n }\n}\n```",
8912
+ "description": "Generate a URL based on the supplied route name and optionally a model. The\nURL is returned as a string that can be used for any purpose.\n\nIn this example, the URL for the `author.books` route for a given author\nis copied to the clipboard.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.args.author);\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books\n }\n }\n}\n```\n\nJust like with `transitionTo` and `replaceWith`, `urlFor` can also handle\nquery parameters.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyOnlyEmberBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.author, {\n queryParams: { filter: 'emberjs' }\n });\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books?filter=emberjs\n }\n }\n}\n```",
8978
8913
  "itemtype": "method",
8979
8914
  "name": "urlFor",
8980
8915
  "params": [
@@ -9006,8 +8941,8 @@
9006
8941
  },
9007
8942
  {
9008
8943
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9009
- "line": 247,
9010
- "description": "Returns `true` if `routeName/models/queryParams` is the active route, where `models` and `queryParams` are optional.\nSee [model](api/ember/release/classes/Route/methods/model?anchor=model) and\n[queryParams](/api/ember/3.7/classes/Route/properties/queryParams?anchor=queryParams) for more information about these arguments.\n\nIn the following example, `isActive` will return `true` if the current route is `/posts`.\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments() {\n return this.router.isActive('posts');\n }\n});\n```\n\nThe next example includes a dynamic segment, and will return `true` if the current route is `/posts/1`,\nassuming the post has an id of 1:\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments(post) {\n return this.router.isActive('posts', post.id);\n }\n});\n```\n\nWhere `post.id` is the id of a specific post, which is represented in the route as /posts/[post.id].\nIf `post.id` is equal to 1, then isActive will return true if the current route is /posts/1, and false if the route is anything else.",
8944
+ "line": 248,
8945
+ "description": "Returns `true` if `routeName/models/queryParams` is the active route, where `models` and `queryParams` are optional.\nSee [model](api/ember/release/classes/Route/methods/model?anchor=model) and\n[queryParams](/api/ember/3.7/classes/Route/properties/queryParams?anchor=queryParams) for more information about these arguments.\n\nIn the following example, `isActive` will return `true` if the current route is `/posts`.\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments() {\n return this.router.isActive('posts');\n }\n});\n```\n\nThe next example includes a dynamic segment, and will return `true` if the current route is `/posts/1`,\nassuming the post has an id of 1:\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments(post) {\n return this.router.isActive('posts', post.id);\n }\n});\n```\n\nWhere `post.id` is the id of a specific post, which is represented in the route as /posts/[post.id].\nIf `post.id` is equal to 1, then isActive will return true if the current route is /posts/1, and false if the route is anything else.",
9011
8946
  "itemtype": "method",
9012
8947
  "name": "isActive",
9013
8948
  "params": [
@@ -9039,8 +8974,8 @@
9039
8974
  },
9040
8975
  {
9041
8976
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9042
- "line": 344,
9043
- "description": "Takes a string URL and returns a `RouteInfo` for the leafmost route represented\nby the URL. Returns `null` if the URL is not recognized. This method expects to\nreceive the actual URL as seen by the browser including the app's `rootURL`.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nIn the following example `recognize` is used to verify if a path belongs to our\napplication before transitioning to it.\n\n```\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n path = '/';\n\n click() {\n if (this.router.recognize(this.path)) {\n this.router.transitionTo(this.path);\n }\n }\n}\n```",
8977
+ "line": 345,
8978
+ "description": "Takes a string URL and returns a `RouteInfo` for the leafmost route represented\nby the URL. Returns `null` if the URL is not recognized. This method expects to\nreceive the actual URL as seen by the browser including the app's `rootURL`.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nIn the following example `recognize` is used to verify if a path belongs to our\napplication before transitioning to it.\n\n```\nimport Component from '@ember/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n path = '/';\n\n click() {\n if (this.router.recognize(this.path)) {\n this.router.transitionTo(this.path);\n }\n }\n}\n```",
9044
8979
  "itemtype": "method",
9045
8980
  "name": "recognize",
9046
8981
  "params": [
@@ -9057,7 +8992,7 @@
9057
8992
  },
9058
8993
  {
9059
8994
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9060
- "line": 383,
8995
+ "line": 385,
9061
8996
  "description": "Takes a string URL and returns a promise that resolves to a\n`RouteInfoWithAttributes` for the leafmost route represented by the URL.\nThe promise rejects if the URL is not recognized or an unhandled exception\nis encountered. This method expects to receive the actual URL as seen by\nthe browser including the app's `rootURL`.",
9062
8997
  "itemtype": "method",
9063
8998
  "name": "recognizeAndLoad",
@@ -9075,8 +9010,8 @@
9075
9010
  },
9076
9011
  {
9077
9012
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9078
- "line": 403,
9079
- "description": "The `routeWillChange` event is fired at the beginning of any\nattempted transition with a `Transition` object as the sole\nargument. This action can be used for aborting, redirecting,\nor decorating the transition from the currently active routes.\n\nA good example is preventing navigation when a form is\nhalf-filled out:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```\n\nThe `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.",
9013
+ "line": 406,
9014
+ "description": "The `routeWillChange` event is fired at the beginning of any\nattempted transition with a `Transition` object as the sole\nargument. This action can be used for aborting, redirecting,\nor decorating the transition from the currently active routes.\n\nA good example is preventing navigation when a form is\nhalf-filled out:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```\n\nThe `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.",
9080
9015
  "itemtype": "event",
9081
9016
  "name": "routeWillChange",
9082
9017
  "params": [
@@ -9093,8 +9028,8 @@
9093
9028
  },
9094
9029
  {
9095
9030
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9096
- "line": 440,
9097
- "description": "The `routeDidChange` event only fires once a transition has settled.\nThis includes aborts and error substates. Like the `routeWillChange` event\nit receives a Transition as the sole argument.\n\nA good example is sending some analytics when the route has transitioned:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeDidChange', (transition) => {\n ga.send('pageView', {\n current: transition.to.name,\n from: transition.from.name\n });\n })\n }\n}\n```\n\n`routeDidChange` will be called after any `Route`'s\n[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)\naction has been fired.\nThe updates of properties\n[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),\n[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)\nand\n[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)\nare completed at the time `routeDidChange` is called.",
9031
+ "line": 442,
9032
+ "description": "The `routeDidChange` event only fires once a transition has settled.\nThis includes aborts and error substates. Like the `routeWillChange` event\nit receives a Transition as the sole argument.\n\nA good example is sending some analytics when the route has transitioned:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeDidChange', (transition) => {\n ga.send('pageView', {\n current: transition.to.name,\n from: transition.from.name\n });\n })\n }\n}\n```\n\n`routeDidChange` will be called after any `Route`'s\n[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)\naction has been fired.\nThe updates of properties\n[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),\n[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)\nand\n[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)\nare completed at the time `routeDidChange` is called.",
9098
9033
  "itemtype": "event",
9099
9034
  "name": "routeDidChange",
9100
9035
  "params": [
@@ -9111,7 +9046,7 @@
9111
9046
  },
9112
9047
  {
9113
9048
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9114
- "line": 486,
9049
+ "line": 487,
9115
9050
  "description": "Refreshes all currently active routes, doing a full transition.\nIf a route name is provided and refers to a currently active route,\nit will refresh only that route and its descendents.\nReturns a promise that will be resolved once the refresh is complete.\nAll resetController, beforeModel, model, afterModel, redirect, and setupController\nhooks will be called again. You will get new data from the model hook.",
9116
9051
  "itemtype": "method",
9117
9052
  "name": "refresh",
@@ -9136,7 +9071,7 @@
9136
9071
  },
9137
9072
  {
9138
9073
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9139
- "line": 519,
9074
+ "line": 520,
9140
9075
  "description": "Name of the current route.\n\nThis property represents the logical name of the route,\nwhich is comma separated.\nFor the following router:\n\n```app/router.js\nRouter.map(function() {\n this.route('about');\n this.route('blog', function () {\n this.route('post', { path: ':post_id' });\n });\n});\n```\n\nIt will return:\n\n* `index` when you visit `/`\n* `about` when you visit `/about`\n* `blog.index` when you visit `/blog`\n* `blog.post` when you visit `/blog/some-post-id`",
9141
9076
  "itemtype": "property",
9142
9077
  "name": "currentRouteName",
@@ -9148,7 +9083,7 @@
9148
9083
  },
9149
9084
  {
9150
9085
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9151
- "line": 548,
9086
+ "line": 549,
9152
9087
  "description": "Current URL for the application.\n\n This property represents the URL path for this route.\n For the following router:\n\n```app/router.js\nRouter.map(function() {\n this.route('about');\n this.route('blog', function () {\n this.route('post', { path: ':post_id' });\n });\n});\n```\n\nIt will return:\n\n* `/` when you visit `/`\n* `/about` when you visit `/about`\n* `/blog` when you visit `/blog`\n* `/blog/some-post-id` when you visit `/blog/some-post-id`",
9153
9088
  "itemtype": "property",
9154
9089
  "name": "currentURL",
@@ -9160,7 +9095,7 @@
9160
9095
  },
9161
9096
  {
9162
9097
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9163
- "line": 576,
9098
+ "line": 577,
9164
9099
  "description": "The `location` property returns what implementation of the `location` API\nyour application is using, which determines what type of URL is being used.\n\nSee [Location](/ember/release/classes/Location) for more information.\n\nTo force a particular `location` API implementation to be used in your\napplication you can set a location type on your `config/environment`.\nFor example, to set the `history` type:\n\n```config/environment.js\n'use strict';\n\nmodule.exports = function(environment) {\n let ENV = {\n modulePrefix: 'router-service',\n environment,\n rootURL: '/',\n locationType: 'history',\n ...\n }\n}\n```\n\nThe following location types are available by default:\n`auto`, `hash`, `history`, `none`.\n\nSee [HashLocation](/ember/release/classes/HashLocation).\nSee [HistoryLocation](/ember/release/classes/HistoryLocation).\nSee [NoneLocation](/ember/release/classes/NoneLocation).\nSee [AutoLocation](/ember/release/classes/AutoLocation).",
9165
9100
  "itemtype": "property",
9166
9101
  "name": "location",
@@ -9175,7 +9110,7 @@
9175
9110
  },
9176
9111
  {
9177
9112
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9178
- "line": 615,
9113
+ "line": 616,
9179
9114
  "description": "The `rootURL` property represents the URL of the root of\nthe application, '/' by default.\nThis prefix is assumed on all routes defined on this app.\n\nIf you change the `rootURL` in your environment configuration\nlike so:\n\n```config/environment.js\n'use strict';\n\nmodule.exports = function(environment) {\n let ENV = {\n modulePrefix: 'router-service',\n environment,\n rootURL: '/my-root',\n …\n }\n]\n```\n\nThis property will return `/my-root`.",
9180
9115
  "itemtype": "property",
9181
9116
  "name": "rootURL",
@@ -9187,8 +9122,8 @@
9187
9122
  },
9188
9123
  {
9189
9124
  "file": "packages/@ember/-internals/routing/lib/services/router.ts",
9190
- "line": 644,
9191
- "description": "The `currentRoute` property contains metadata about the current leaf route.\nIt returns a `RouteInfo` object that has information like the route name,\nparams, query params and more.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nThis property is guaranteed to change whenever a route transition\nhappens (even when that transition only changes parameters\nand doesn't change the active route).\n\nUsage example:\n```app/components/header.js\n import Component from '@glimmer/component';\n import { inject as service } from '@ember/service';\n import { notEmpty } from '@ember/object/computed';\n\n export default class extends Component {\n @service router;\n\n @notEmpty('router.currentRoute.child') isChildRoute;\n });\n```",
9125
+ "line": 645,
9126
+ "description": "The `currentRoute` property contains metadata about the current leaf route.\nIt returns a `RouteInfo` object that has information like the route name,\nparams, query params and more.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nThis property is guaranteed to change whenever a route transition\nhappens (even when that transition only changes parameters\nand doesn't change the active route).\n\nUsage example:\n```app/components/header.js\n import Component from '@glimmer/component';\n import { service } from '@ember/service';\n import { notEmpty } from '@ember/object/computed';\n\n export default class extends Component {\n @service router;\n\n @notEmpty('router.currentRoute.child') isChildRoute;\n });\n```",
9192
9127
  "itemtype": "property",
9193
9128
  "name": "currentRoute",
9194
9129
  "type": "RouteInfo",
@@ -10034,6 +9969,8 @@
10034
9969
  "type": "Transition"
10035
9970
  },
10036
9971
  "since": "1.0.0",
9972
+ "deprecated": true,
9973
+ "deprecationMessage": "Use replaceWith from the Router service instead.",
10037
9974
  "access": "public",
10038
9975
  "tagname": "",
10039
9976
  "class": "Route",
@@ -10041,7 +9978,7 @@
10041
9978
  },
10042
9979
  {
10043
9980
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10044
- "line": 1084,
9981
+ "line": 1085,
10045
9982
  "description": "This hook is the entry point for router.js",
10046
9983
  "access": "private",
10047
9984
  "tagname": "",
@@ -10052,7 +9989,7 @@
10052
9989
  },
10053
9990
  {
10054
9991
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10055
- "line": 1164,
9992
+ "line": 1165,
10056
9993
  "description": "This hook is the first of the route entry validation hooks\ncalled when an attempt is made to transition into a route\nor one of its children. It is called before `model` and\n`afterModel`, and is appropriate for cases when:\n\n1) A decision can be made to redirect elsewhere without\n needing to resolve the model first.\n2) Any async operations need to occur first before the\n model is attempted to be resolved.\n\nThis hook is provided the current `transition` attempt\nas a parameter, which can be used to `.abort()` the transition,\nsave it for a later `.retry()`, or retrieve values set\non it from a previous hook. You can also just call\n`this.transitionTo` to another route to implicitly\nabort the `transition`.\n\nYou can return a promise from this hook to pause the\ntransition until the promise resolves (or rejects). This could\nbe useful, for instance, for retrieving async code from\nthe server that is required to enter a route.",
10057
9994
  "itemtype": "method",
10058
9995
  "name": "beforeModel",
@@ -10075,7 +10012,7 @@
10075
10012
  },
10076
10013
  {
10077
10014
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10078
- "line": 1198,
10015
+ "line": 1199,
10079
10016
  "description": "This hook is called after this route's model has resolved.\nIt follows identical async/promise semantics to `beforeModel`\nbut is provided the route's resolved model in addition to\nthe `transition`, and is therefore suited to performing\nlogic that can only take place after the model has already\nresolved.\n\n```app/routes/posts.js\nimport Route from '@ember/routing/route';\n\nexport default class PostsRoute extends Route {\n afterModel(posts, transition) {\n if (posts.get('length') === 1) {\n this.transitionTo('post.show', posts.get('firstObject'));\n }\n }\n}\n```\n\nRefer to documentation for `beforeModel` for a description\nof transition-pausing semantics when a promise is returned\nfrom this hook.",
10080
10017
  "itemtype": "method",
10081
10018
  "name": "afterModel",
@@ -10103,7 +10040,7 @@
10103
10040
  },
10104
10041
  {
10105
10042
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10106
- "line": 1235,
10043
+ "line": 1236,
10107
10044
  "description": "A hook you can implement to optionally redirect to another route.\n\nCalling `this.transitionTo` from inside of the `redirect` hook will\nabort the current transition (into the route that has implemented `redirect`).\n\n`redirect` and `afterModel` behave very similarly and are\ncalled almost at the same time, but they have an important\ndistinction when calling `this.transitionTo` to a child route\nof the current route. From `afterModel`, this new transition\ninvalidates the current transition, causing `beforeModel`,\n`model`, and `afterModel` hooks to be called again. But the\nsame transition started from `redirect` does _not_ invalidate\nthe current transition. In other words, by the time the `redirect`\nhook has been called, both the resolved model and the attempted\nentry into this route are considered fully validated.",
10108
10045
  "itemtype": "method",
10109
10046
  "name": "redirect",
@@ -10127,7 +10064,7 @@
10127
10064
  },
10128
10065
  {
10129
10066
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10130
- "line": 1260,
10067
+ "line": 1261,
10131
10068
  "description": "Called when the context is changed by router.js.",
10132
10069
  "access": "private",
10133
10070
  "tagname": "",
@@ -10138,7 +10075,7 @@
10138
10075
  },
10139
10076
  {
10140
10077
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10141
- "line": 1270,
10078
+ "line": 1271,
10142
10079
  "description": "A hook you can implement to convert the URL into the model for\nthis route.\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\nexport default Router;\n```\n\nThe model for the `post` route is `store.findRecord('post', params.post_id)`.\n\nBy default, if your route has a dynamic segment ending in `_id`:\n\n* The model class is determined from the segment (`post_id`'s\n class is `App.Post`)\n* The find method is called on the model class with the value of\n the dynamic segment.\n\nNote that for routes with dynamic segments, this hook is not always\nexecuted. If the route is entered through a transition (e.g. when\nusing the `link-to` Handlebars helper or the `transitionTo` method\nof routes), and a model context is already provided this hook\nis not called.\n\nA model context does not include a primitive string or number,\nwhich does cause the model hook to be called.\n\nRoutes without dynamic segments will always execute the model hook.\n\n```javascript\n// no dynamic segment, model hook always called\nthis.transitionTo('posts');\n\n// model passed in, so model hook not called\nthePost = store.findRecord('post', 1);\nthis.transitionTo('post', thePost);\n\n// integer passed in, model hook is called\nthis.transitionTo('post', 1);\n\n// model id passed in, model hook is called\n// useful for forcing the hook to execute\nthePost = store.findRecord('post', 1);\nthis.transitionTo('post', thePost.id);\n```\n\nThis hook follows the asynchronous/promise semantics\ndescribed in the documentation for `beforeModel`. In particular,\nif a promise returned from `model` fails, the error will be\nhandled by the `error` hook on `Route`.\n\nExample\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class PostRoute extends Route {\n model(params) {\n return this.store.findRecord('post', params.post_id);\n }\n}\n```",
10143
10080
  "itemtype": "method",
10144
10081
  "name": "model",
@@ -10166,7 +10103,7 @@
10166
10103
  },
10167
10104
  {
10168
10105
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10169
- "line": 1379,
10106
+ "line": 1380,
10170
10107
  "access": "private",
10171
10108
  "tagname": "",
10172
10109
  "itemtype": "method",
@@ -10192,7 +10129,7 @@
10192
10129
  },
10193
10130
  {
10194
10131
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10195
- "line": 1392,
10132
+ "line": 1393,
10196
10133
  "itemtype": "method",
10197
10134
  "name": "findModel",
10198
10135
  "params": [
@@ -10214,7 +10151,7 @@
10214
10151
  },
10215
10152
  {
10216
10153
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10217
- "line": 1403,
10154
+ "line": 1404,
10218
10155
  "description": "A hook you can use to setup the controller for the current route.\n\nThis method is called with the controller for the current route and the\nmodel supplied by the `model` hook.\n\nBy default, the `setupController` hook sets the `model` property of\nthe controller to the specified `model` when it is not `undefined`.\n\nIf you implement the `setupController` hook in your Route, it will\nprevent this default behavior. If you want to preserve that behavior\nwhen implementing your `setupController` function, make sure to call\n`super`:\n\n```app/routes/photos.js\nimport Route from '@ember/routing/route';\n\nexport default class PhotosRoute extends Route {\n model() {\n return this.store.findAll('photo');\n }\n\n setupController(controller, model) {\n super.setupController(controller, model);\n\n this.controllerFor('application').set('showingPhotos', true);\n }\n}\n```\n\nThe provided controller will be one resolved based on the name\nof this route.\n\nIf no explicit controller is defined, Ember will automatically create one.\n\nAs an example, consider the router:\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\nexport default Router;\n```\n\nIf you have defined a file for the post controller,\nthe framework will use it.\nIf it is not defined, a basic `Controller` instance would be used.",
10219
10156
  "example": [
10220
10157
  " Behavior of a basic Controller\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class PostRoute extends Route {\n setupController(controller, model) {\n controller.set('model', model);\n }\n});\n```"
@@ -10247,7 +10184,7 @@
10247
10184
  },
10248
10185
  {
10249
10186
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10250
- "line": 1480,
10187
+ "line": 1481,
10251
10188
  "description": "Returns the controller of the current route, or a parent (or any ancestor)\nroute in a route hierarchy.\n\nThe controller instance must already have been created, either through entering the\nassociated route or using `generateController`.\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class PostRoute extends Route {\n setupController(controller, post) {\n super.setupController(controller, post);\n\n this.controllerFor('posts').set('currentPost', post);\n }\n}\n```",
10252
10189
  "itemtype": "method",
10253
10190
  "name": "controllerFor",
@@ -10270,7 +10207,7 @@
10270
10207
  },
10271
10208
  {
10272
10209
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10273
- "line": 1526,
10210
+ "line": 1527,
10274
10211
  "description": "Generates a controller for a route.\n\nExample\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class Post extends Route {\n setupController(controller, post) {\n super.setupController(controller, post);\n\n this.generateController('posts');\n }\n}\n```",
10275
10212
  "itemtype": "method",
10276
10213
  "name": "generateController",
@@ -10288,7 +10225,7 @@
10288
10225
  },
10289
10226
  {
10290
10227
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10291
- "line": 1553,
10228
+ "line": 1554,
10292
10229
  "description": "Returns the resolved model of a parent (or any ancestor) route\nin a route hierarchy. During a transition, all routes\nmust resolve a model object, and if a route\nneeds access to a parent route's model in order to\nresolve a model (or just reuse the model from a parent),\nit can call `this.modelFor(theNameOfParentRoute)` to\nretrieve it. If the ancestor route's model was a promise,\nits resolved result is returned.\n\nExample\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' }, function() {\n this.route('comments');\n });\n});\n\nexport default Router;\n```\n\n```app/routes/post/comments.js\nimport Route from '@ember/routing/route';\n\nexport default class PostCommentsRoute extends Route {\n model() {\n let post = this.modelFor('post');\n\n return post.comments;\n }\n}\n```",
10293
10230
  "itemtype": "method",
10294
10231
  "name": "modelFor",
@@ -10311,7 +10248,7 @@
10311
10248
  },
10312
10249
  {
10313
10250
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10314
- "line": 1624,
10251
+ "line": 1625,
10315
10252
  "description": "`this[RENDER]` is used to render a template into a region of another template\n(indicated by an `{{outlet}}`).",
10316
10253
  "itemtype": "method",
10317
10254
  "name": "this[RENDER]",
@@ -10361,7 +10298,7 @@
10361
10298
  },
10362
10299
  {
10363
10300
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10364
- "line": 1651,
10301
+ "line": 1652,
10365
10302
  "access": "private",
10366
10303
  "tagname": "",
10367
10304
  "itemtype": "method",
@@ -10371,8 +10308,8 @@
10371
10308
  },
10372
10309
  {
10373
10310
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10374
- "line": 1664,
10375
- "description": "Allows you to produce custom metadata for the route.\nThe return value of this method will be attached to\nits corresponding RouteInfoWithAttributes object.\n\nExample\n\n```app/routes/posts/index.js\nimport Route from '@ember/routing/route';\n\nexport default class PostsIndexRoute extends Route {\n buildRouteInfoMetadata() {\n return { title: 'Posts Page' }\n }\n}\n```\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default class ApplicationRoute extends Route {\n @service router\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeDidChange', transition => {\n document.title = transition.to.metadata.title;\n // would update document's title to \"Posts Page\"\n });\n }\n}\n```",
10311
+ "line": 1665,
10312
+ "description": "Allows you to produce custom metadata for the route.\nThe return value of this method will be attached to\nits corresponding RouteInfoWithAttributes object.\n\nExample\n\n```app/routes/posts/index.js\nimport Route from '@ember/routing/route';\n\nexport default class PostsIndexRoute extends Route {\n buildRouteInfoMetadata() {\n return { title: 'Posts Page' }\n }\n}\n```\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class ApplicationRoute extends Route {\n @service router\n\n constructor() {\n super(...arguments);\n\n this.router.on('routeDidChange', transition => {\n document.title = transition.to.metadata.title;\n // would update document's title to \"Posts Page\"\n });\n }\n}\n```",
10376
10313
  "itemtype": "method",
10377
10314
  "name": "buildRouteInfoMetadata",
10378
10315
  "return": {
@@ -10386,7 +10323,7 @@
10386
10323
  },
10387
10324
  {
10388
10325
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10389
- "line": 1714,
10326
+ "line": 1715,
10390
10327
  "description": "Store property provides a hook for data persistence libraries to inject themselves.\n\nBy default, this store property provides the exact same functionality previously\nin the model hook.\n\nCurrently, the required interface is:\n\n`store.find(modelName, findArguments)`",
10391
10328
  "itemtype": "property",
10392
10329
  "name": "store",
@@ -10398,7 +10335,7 @@
10398
10335
  },
10399
10336
  {
10400
10337
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10401
- "line": 1762,
10338
+ "line": 1763,
10402
10339
  "access": "private",
10403
10340
  "tagname": "",
10404
10341
  "itemtype": "property",
@@ -10408,7 +10345,7 @@
10408
10345
  },
10409
10346
  {
10410
10347
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10411
- "line": 1892,
10348
+ "line": 1893,
10412
10349
  "description": "Sends an action to the router, which will delegate it to the currently\nactive route hierarchy per the bubbling rules explained under `actions`.\n\nExample\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('index');\n});\n\nexport default Router;\n```\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { action } from '@ember/object';\n\nexport default class ApplicationRoute extends Route {\n @action\n track(arg) {\n console.log(arg, 'was clicked');\n }\n}\n```\n\n```app/routes/index.js\nimport Route from '@ember/routing/route';\nimport { action } from '@ember/object';\n\nexport default class IndexRoute extends Route {\n @action\n trackIfDebug(arg) {\n if (debug) {\n this.send('track', arg);\n }\n }\n}\n```",
10413
10350
  "itemtype": "method",
10414
10351
  "name": "send",
@@ -10432,7 +10369,7 @@
10432
10369
  },
10433
10370
  {
10434
10371
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10435
- "line": 2219,
10372
+ "line": 2220,
10436
10373
  "description": "A hook you can implement to convert the route's model into parameters\nfor the URL.\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\n```\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class PostRoute extends Route {\n model({ post_id }) {\n // the server returns `{ id: 12 }`\n return fetch(`/posts/${post_id}`;\n }\n\n serialize(model) {\n // this will make the URL `/posts/12`\n return { post_id: model.id };\n }\n}\n```\n\nThe default `serialize` method will insert the model's `id` into the\nroute's dynamic segment (in this case, `:post_id`) if the segment contains '_id'.\nIf the route has multiple dynamic segments or does not contain '_id', `serialize`\nwill return `getProperties(model, params)`\n\nThis method is called when `transitionTo` is called with a context\nin order to populate the URL.",
10437
10374
  "itemtype": "method",
10438
10375
  "name": "serialize",
@@ -10460,7 +10397,7 @@
10460
10397
  },
10461
10398
  {
10462
10399
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10463
- "line": 2289,
10400
+ "line": 2290,
10464
10401
  "description": "The controller associated with this route.\n\nExample\n\n```app/routes/form.js\nimport Route from '@ember/routing/route';\nimport { action } from '@ember/object';\n\nexport default class FormRoute extends Route {\n @action\n willTransition(transition) {\n if (this.controller.get('userHasEnteredData') &&\n !confirm('Are you sure you want to abandon progress?')) {\n transition.abort();\n } else {\n // Bubble the `willTransition` action so that\n // parent routes can decide whether or not to abort.\n return true;\n }\n }\n}\n```",
10465
10402
  "itemtype": "property",
10466
10403
  "name": "controller",
@@ -10473,7 +10410,7 @@
10473
10410
  },
10474
10411
  {
10475
10412
  "file": "packages/@ember/-internals/routing/lib/system/route.ts",
10476
- "line": 2320,
10413
+ "line": 2321,
10477
10414
  "description": "This action is called when one or more query params have changed. Bubbles.",
10478
10415
  "itemtype": "method",
10479
10416
  "name": "queryParamsDidChange",
@@ -10560,7 +10497,7 @@
10560
10497
  },
10561
10498
  {
10562
10499
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10563
- "line": 681,
10500
+ "line": 684,
10564
10501
  "description": "Transition the application into another route. The route may\nbe either a single route or route path:\n\nSee [transitionTo](/ember/release/classes/Route/methods/transitionTo?anchor=transitionTo) for more info.",
10565
10502
  "itemtype": "method",
10566
10503
  "name": "transitionTo",
@@ -10593,7 +10530,7 @@
10593
10530
  },
10594
10531
  {
10595
10532
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10596
- "line": 738,
10533
+ "line": 741,
10597
10534
  "description": "Determines if the supplied route is currently active.",
10598
10535
  "itemtype": "method",
10599
10536
  "name": "isActive",
@@ -10614,7 +10551,7 @@
10614
10551
  },
10615
10552
  {
10616
10553
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10617
- "line": 750,
10554
+ "line": 753,
10618
10555
  "description": "An alternative form of `isActive` that doesn't require\nmanual concatenation of the arguments into a single\narray.",
10619
10556
  "itemtype": "method",
10620
10557
  "name": "isActiveIntent",
@@ -10644,7 +10581,7 @@
10644
10581
  },
10645
10582
  {
10646
10583
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10647
- "line": 772,
10584
+ "line": 775,
10648
10585
  "description": "Does this router instance have the given route.",
10649
10586
  "itemtype": "method",
10650
10587
  "name": "hasRoute",
@@ -10659,7 +10596,7 @@
10659
10596
  },
10660
10597
  {
10661
10598
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10662
- "line": 783,
10599
+ "line": 786,
10663
10600
  "description": "Resets the state of the router by clearing the current route\nhandlers and deactivating them.",
10664
10601
  "access": "private",
10665
10602
  "tagname": "",
@@ -10670,7 +10607,7 @@
10670
10607
  },
10671
10608
  {
10672
10609
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10673
- "line": 891,
10610
+ "line": 894,
10674
10611
  "description": "Serializes the given query params according to their QP meta information.",
10675
10612
  "access": "private",
10676
10613
  "tagname": "",
@@ -10697,7 +10634,7 @@
10697
10634
  },
10698
10635
  {
10699
10636
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10700
- "line": 918,
10637
+ "line": 921,
10701
10638
  "description": "Serializes the value of a query parameter based on a type",
10702
10639
  "access": "private",
10703
10640
  "tagname": "",
@@ -10720,7 +10657,7 @@
10720
10657
  },
10721
10658
  {
10722
10659
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10723
- "line": 936,
10660
+ "line": 939,
10724
10661
  "description": "Deserializes the given query params according to their QP meta information.",
10725
10662
  "access": "private",
10726
10663
  "tagname": "",
@@ -10747,7 +10684,7 @@
10747
10684
  },
10748
10685
  {
10749
10686
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10750
- "line": 961,
10687
+ "line": 964,
10751
10688
  "description": "Deserializes the value of a query parameter based on a default type",
10752
10689
  "access": "private",
10753
10690
  "tagname": "",
@@ -10770,7 +10707,7 @@
10770
10707
  },
10771
10708
  {
10772
10709
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10773
- "line": 982,
10710
+ "line": 985,
10774
10711
  "description": "Removes (prunes) any query params with default values from the given QP\nobject. Default values are determined from the QP meta information per key.",
10775
10712
  "access": "private",
10776
10713
  "tagname": "",
@@ -10797,7 +10734,7 @@
10797
10734
  },
10798
10735
  {
10799
10736
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10800
- "line": 1064,
10737
+ "line": 1067,
10801
10738
  "description": "Prepares the query params for a URL or Transition. Restores any undefined QP\nkeys/values, serializes all values, and then prunes any default values.",
10802
10739
  "access": "private",
10803
10740
  "tagname": "",
@@ -10834,7 +10771,7 @@
10834
10771
  },
10835
10772
  {
10836
10773
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10837
- "line": 1091,
10774
+ "line": 1094,
10838
10775
  "description": "Returns the meta information for the query params of a given route. This\nwill be overridden to allow support for lazy routes.",
10839
10776
  "access": "private",
10840
10777
  "tagname": "",
@@ -10856,7 +10793,7 @@
10856
10793
  },
10857
10794
  {
10858
10795
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10859
- "line": 1105,
10796
+ "line": 1108,
10860
10797
  "description": "Returns a merged query params meta object for a given set of routeInfos.\nUseful for knowing what query params are available for a given route hierarchy.",
10861
10798
  "access": "private",
10862
10799
  "tagname": "",
@@ -10878,7 +10815,7 @@
10878
10815
  },
10879
10816
  {
10880
10817
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10881
- "line": 1170,
10818
+ "line": 1173,
10882
10819
  "description": "Maps all query param keys to their fully scoped property name of the form\n`controllerName:propName`.",
10883
10820
  "access": "private",
10884
10821
  "tagname": "",
@@ -10910,7 +10847,7 @@
10910
10847
  },
10911
10848
  {
10912
10849
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10913
- "line": 1212,
10850
+ "line": 1215,
10914
10851
  "description": "Hydrates (adds/restores) any query params that have pre-existing values into\nthe given queryParams hash. This is what allows query params to be \"sticky\"\nand restore their last known values for their scope.",
10915
10852
  "access": "private",
10916
10853
  "tagname": "",
@@ -10937,8 +10874,8 @@
10937
10874
  },
10938
10875
  {
10939
10876
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10940
- "line": 1375,
10941
- "description": "Handles updating the paths and notifying any listeners of the URL\nchange.\n\nTriggers the router level `didTransition` hook.\n\nFor example, to notify google analytics when the route changes,\nyou could use this hook. (Note: requires also including GA scripts, etc.)\n\n```javascript\nimport config from './config/environment';\nimport EmberRouter from '@ember/routing/router';\nimport { inject as service } from '@ember/service';\n\nlet Router = EmberRouter.extend({\n location: config.locationType,\n\n router: service(),\n\n didTransition: function() {\n this._super(...arguments);\n\n ga('send', 'pageview', {\n page: this.router.currentURL,\n title: this.router.currentRouteName,\n });\n }\n});\n```",
10877
+ "line": 1378,
10878
+ "description": "Handles updating the paths and notifying any listeners of the URL\nchange.\n\nTriggers the router level `didTransition` hook.\n\nFor example, to notify google analytics when the route changes,\nyou could use this hook. (Note: requires also including GA scripts, etc.)\n\n```javascript\nimport config from './config/environment';\nimport EmberRouter from '@ember/routing/router';\nimport { service } from '@ember/service';\n\nlet Router = EmberRouter.extend({\n location: config.locationType,\n\n router: service(),\n\n didTransition: function() {\n this._super(...arguments);\n\n ga('send', 'pageview', {\n page: this.router.currentURL,\n title: this.router.currentRouteName,\n });\n }\n});\n```",
10942
10879
  "itemtype": "method",
10943
10880
  "name": "didTransition",
10944
10881
  "access": "public",
@@ -10949,7 +10886,7 @@
10949
10886
  },
10950
10887
  {
10951
10888
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10952
- "line": 1412,
10889
+ "line": 1415,
10953
10890
  "description": "Handles notifying any listeners of an impending URL\nchange.\n\nTriggers the router level `willTransition` hook.",
10954
10891
  "itemtype": "method",
10955
10892
  "name": "willTransition",
@@ -10961,7 +10898,7 @@
10961
10898
  },
10962
10899
  {
10963
10900
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10964
- "line": 1425,
10901
+ "line": 1428,
10965
10902
  "description": "Represents the current URL.",
10966
10903
  "itemtype": "property",
10967
10904
  "name": "url",
@@ -10973,7 +10910,7 @@
10973
10910
  },
10974
10911
  {
10975
10912
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
10976
- "line": 1581,
10913
+ "line": 1584,
10977
10914
  "description": "Finds the name of the substate route if it exists for the given route. A\nsubstate route is of the form `route_state`, such as `foo_loading`.",
10978
10915
  "access": "private",
10979
10916
  "tagname": "",
@@ -10998,7 +10935,7 @@
10998
10935
  },
10999
10936
  {
11000
10937
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
11001
- "line": 1600,
10938
+ "line": 1603,
11002
10939
  "description": "Finds the name of the state route if it exists for the given route. A state\nroute is of the form `route.state`, such as `foo.loading`. Properly Handles\n`application` named routes.",
11003
10940
  "access": "private",
11004
10941
  "tagname": "",
@@ -11023,7 +10960,7 @@
11023
10960
  },
11024
10961
  {
11025
10962
  "file": "packages/@ember/-internals/routing/lib/system/router.ts",
11026
- "line": 1620,
10963
+ "line": 1623,
11027
10964
  "description": "Determines whether or not a route has been defined by checking that the route\nis in the Router's map and the owner has a registration for that route.",
11028
10965
  "access": "private",
11029
10966
  "tagname": "",
@@ -13724,7 +13661,7 @@
13724
13661
  },
13725
13662
  {
13726
13663
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13727
- "line": 384,
13664
+ "line": 275,
13728
13665
  "description": "An overridable method called when objects are instantiated. By default,\ndoes nothing unless it is overridden during class definition.\n\nExample:\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Person = EmberObject.extend({\n init() {\n alert(`Name is ${this.get('name')}`);\n }\n});\n\nlet steve = Person.create({\n name: 'Steve'\n});\n\n// alerts 'Name is Steve'.\n```\n\nNOTE: If you do override `init` for a framework class like `Component`\nfrom `@ember/component`, be sure to call `this._super(...arguments)`\nin your `init` declaration!\nIf you don't, Ember may not have an opportunity to\ndo important setup work, and you'll see strange behavior in your\napplication.",
13729
13666
  "itemtype": "method",
13730
13667
  "name": "init",
@@ -13735,7 +13672,7 @@
13735
13672
  },
13736
13673
  {
13737
13674
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13738
- "line": 418,
13675
+ "line": 309,
13739
13676
  "description": "Defines the properties that will be concatenated from the superclass\n(instead of overridden).\n\nBy default, when you extend an Ember class a property defined in\nthe subclass overrides a property with the same name that is defined\nin the superclass. However, there are some cases where it is preferable\nto build up a property's value by combining the superclass' property\nvalue with the subclass' value. An example of this in use within Ember\nis the `classNames` property of `Component` from `@ember/component`.\n\nHere is some sample code showing the difference between a concatenated\nproperty and a normal one:\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Bar = EmberObject.extend({\n // Configure which properties to concatenate\n concatenatedProperties: ['concatenatedProperty'],\n\n someNonConcatenatedProperty: ['bar'],\n concatenatedProperty: ['bar']\n});\n\nconst FooBar = Bar.extend({\n someNonConcatenatedProperty: ['foo'],\n concatenatedProperty: ['foo']\n});\n\nlet fooBar = FooBar.create();\nfooBar.get('someNonConcatenatedProperty'); // ['foo']\nfooBar.get('concatenatedProperty'); // ['bar', 'foo']\n```\n\nThis behavior extends to object creation as well. Continuing the\nabove example:\n\n```javascript\nlet fooBar = FooBar.create({\n someNonConcatenatedProperty: ['baz'],\n concatenatedProperty: ['baz']\n})\nfooBar.get('someNonConcatenatedProperty'); // ['baz']\nfooBar.get('concatenatedProperty'); // ['bar', 'foo', 'baz']\n```\n\nAdding a single property that is not an array will just add it in the array:\n\n```javascript\nlet fooBar = FooBar.create({\n concatenatedProperty: 'baz'\n})\nview.get('concatenatedProperty'); // ['bar', 'foo', 'baz']\n```\n\nUsing the `concatenatedProperties` property, we can tell Ember to mix the\ncontent of the properties.\n\nIn `Component` the `classNames`, `classNameBindings` and\n`attributeBindings` properties are concatenated.\n\nThis feature is available for you to use throughout the Ember object model,\nalthough typical app developers are likely to use it infrequently. Since\nit changes expectations about behavior of properties, you should properly\ndocument its usage in each individual concatenated property (to not\nmislead your users to think they can override the property in a subclass).",
13740
13677
  "itemtype": "property",
13741
13678
  "name": "concatenatedProperties",
@@ -13748,7 +13685,7 @@
13748
13685
  },
13749
13686
  {
13750
13687
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13751
- "line": 492,
13688
+ "line": 383,
13752
13689
  "description": "Defines the properties that will be merged from the superclass\n(instead of overridden).\n\nBy default, when you extend an Ember class a property defined in\nthe subclass overrides a property with the same name that is defined\nin the superclass. However, there are some cases where it is preferable\nto build up a property's value by merging the superclass property value\nwith the subclass property's value. An example of this in use within Ember\nis the `queryParams` property of routes.\n\nHere is some sample code showing the difference between a merged\nproperty and a normal one:\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Bar = EmberObject.extend({\n // Configure which properties are to be merged\n mergedProperties: ['mergedProperty'],\n\n someNonMergedProperty: {\n nonMerged: 'superclass value of nonMerged'\n },\n mergedProperty: {\n page: { replace: false },\n limit: { replace: true }\n }\n});\n\nconst FooBar = Bar.extend({\n someNonMergedProperty: {\n completelyNonMerged: 'subclass value of nonMerged'\n },\n mergedProperty: {\n limit: { replace: false }\n }\n});\n\nlet fooBar = FooBar.create();\n\nfooBar.get('someNonMergedProperty');\n// => { completelyNonMerged: 'subclass value of nonMerged' }\n//\n// Note the entire object, including the nonMerged property of\n// the superclass object, has been replaced\n\nfooBar.get('mergedProperty');\n// => {\n// page: {replace: false},\n// limit: {replace: false}\n// }\n//\n// Note the page remains from the superclass, and the\n// `limit` property's value of `false` has been merged from\n// the subclass.\n```\n\nThis behavior is not available during object `create` calls. It is only\navailable at `extend` time.\n\nIn `Route` the `queryParams` property is merged.\n\nThis feature is available for you to use throughout the Ember object model,\nalthough typical app developers are likely to use it infrequently. Since\nit changes expectations about behavior of properties, you should properly\ndocument its usage in each individual merged property (to not\nmislead your users to think they can override the property in a subclass).",
13753
13690
  "itemtype": "property",
13754
13691
  "name": "mergedProperties",
@@ -13761,7 +13698,7 @@
13761
13698
  },
13762
13699
  {
13763
13700
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13764
- "line": 567,
13701
+ "line": 458,
13765
13702
  "description": "Destroyed object property flag.\n\nif this property is `true` the observers and bindings were already\nremoved by the effect of calling the `destroy()` method.",
13766
13703
  "itemtype": "property",
13767
13704
  "name": "isDestroyed",
@@ -13773,7 +13710,7 @@
13773
13710
  },
13774
13711
  {
13775
13712
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13776
- "line": 585,
13713
+ "line": 476,
13777
13714
  "description": "Destruction scheduled flag. The `destroy()` method has been called.\n\nThe object stays intact until the end of the run loop at which point\nthe `isDestroyed` flag is set.",
13778
13715
  "itemtype": "property",
13779
13716
  "name": "isDestroying",
@@ -13785,7 +13722,7 @@
13785
13722
  },
13786
13723
  {
13787
13724
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13788
- "line": 603,
13725
+ "line": 494,
13789
13726
  "description": "Destroys an object by setting the `isDestroyed` flag and removing its\nmetadata, which effectively destroys observers and bindings.\n\nIf you try to set a property on a destroyed object, an exception will be\nraised.\n\nNote that destruction is scheduled for the end of the run loop and does not\nhappen immediately. It will set an isDestroying flag immediately.",
13790
13727
  "itemtype": "method",
13791
13728
  "name": "destroy",
@@ -13800,7 +13737,7 @@
13800
13737
  },
13801
13738
  {
13802
13739
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13803
- "line": 630,
13740
+ "line": 521,
13804
13741
  "description": "Override to implement teardown.",
13805
13742
  "itemtype": "method",
13806
13743
  "name": "willDestroy",
@@ -13811,7 +13748,7 @@
13811
13748
  },
13812
13749
  {
13813
13750
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13814
- "line": 638,
13751
+ "line": 529,
13815
13752
  "description": "Returns a string representation which attempts to provide more information\nthan Javascript's `toString` typically does, in a generic way for all Ember\nobjects.\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Person = EmberObject.extend();\nperson = Person.create();\nperson.toString(); //=> \"<Person:ember1024>\"\n```\n\nIf the object's class is not defined on an Ember namespace, it will\nindicate it is a subclass of the registered superclass:\n\n```javascript\nconst Student = Person.extend();\nlet student = Student.create();\nstudent.toString(); //=> \"<(subclass of Person):ember1025>\"\n```\n\nIf the method `toStringExtension` is defined, its return value will be\nincluded in the output.\n\n```javascript\nconst Teacher = Person.extend({\n toStringExtension() {\n return this.get('fullName');\n }\n});\nteacher = Teacher.create();\nteacher.toString(); //=> \"<Teacher:ember1026:Tom Dale>\"\n```",
13816
13753
  "itemtype": "method",
13817
13754
  "name": "toString",
@@ -13826,7 +13763,7 @@
13826
13763
  },
13827
13764
  {
13828
13765
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13829
- "line": 684,
13766
+ "line": 575,
13830
13767
  "description": "Creates a new subclass.\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Person = EmberObject.extend({\n say(thing) {\n alert(thing);\n }\n});\n```\n\nThis defines a new subclass of EmberObject: `Person`. It contains one method: `say()`.\n\nYou can also create a subclass from any existing class by calling its `extend()` method.\nFor example, you might want to create a subclass of Ember's built-in `Component` class:\n\n```javascript\nimport Component from '@ember/component';\n\nconst PersonComponent = Component.extend({\n tagName: 'li',\n classNameBindings: ['isAdministrator']\n});\n```\n\nWhen defining a subclass, you can override methods but still access the\nimplementation of your parent class by calling the special `_super()` method:\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Person = EmberObject.extend({\n say(thing) {\n let name = this.get('name');\n alert(`${name} says: ${thing}`);\n }\n});\n\nconst Soldier = Person.extend({\n say(thing) {\n this._super(`${thing}, sir!`);\n },\n march(numberOfHours) {\n alert(`${this.get('name')} marches for ${numberOfHours} hours.`);\n }\n});\n\nlet yehuda = Soldier.create({\n name: 'Yehuda Katz'\n});\n\nyehuda.say('Yes'); // alerts \"Yehuda Katz says: Yes, sir!\"\n```\n\nThe `create()` on line #17 creates an *instance* of the `Soldier` class.\nThe `extend()` on line #8 creates a *subclass* of `Person`. Any instance\nof the `Person` class will *not* have the `march()` method.\n\nYou can also pass `Mixin` classes to add additional properties to the subclass.\n\n```javascript\nimport EmberObject from '@ember/object';\nimport Mixin from '@ember/object/mixin';\n\nconst Person = EmberObject.extend({\n say(thing) {\n alert(`${this.get('name')} says: ${thing}`);\n }\n});\n\nconst SingingMixin = Mixin.create({\n sing(thing) {\n alert(`${this.get('name')} sings: la la la ${thing}`);\n }\n});\n\nconst BroadwayStar = Person.extend(SingingMixin, {\n dance() {\n alert(`${this.get('name')} dances: tap tap tap tap `);\n }\n});\n```\n\nThe `BroadwayStar` class contains three methods: `say()`, `sing()`, and `dance()`.",
13831
13768
  "itemtype": "method",
13832
13769
  "name": "extend",
@@ -13854,7 +13791,7 @@
13854
13791
  },
13855
13792
  {
13856
13793
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13857
- "line": 784,
13794
+ "line": 675,
13858
13795
  "description": "Creates an instance of a class. Accepts either no arguments, or an object\ncontaining values to initialize the newly instantiated object with.\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Person = EmberObject.extend({\n helloWorld() {\n alert(`Hi, my name is ${this.get('name')}`);\n }\n});\n\nlet tom = Person.create({\n name: 'Tom Dale'\n});\n\ntom.helloWorld(); // alerts \"Hi, my name is Tom Dale\".\n```\n\n`create` will call the `init` function if defined during\n`AnyObject.extend`\n\nIf no arguments are passed to `create`, it will not set values to the new\ninstance during initialization:\n\n```javascript\nlet noName = Person.create();\nnoName.helloWorld(); // alerts undefined\n```\n\nNOTE: For performance reasons, you cannot declare methods or computed\nproperties during `create`. You should instead declare methods and computed\nproperties when using `extend`.",
13859
13796
  "itemtype": "method",
13860
13797
  "name": "create",
@@ -13874,7 +13811,7 @@
13874
13811
  },
13875
13812
  {
13876
13813
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13877
- "line": 844,
13814
+ "line": 735,
13878
13815
  "description": "Augments a constructor's prototype with additional\nproperties and functions:\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst MyObject = EmberObject.extend({\n name: 'an object'\n});\n\no = MyObject.create();\no.get('name'); // 'an object'\n\nMyObject.reopen({\n say(msg) {\n console.log(msg);\n }\n});\n\no2 = MyObject.create();\no2.say('hello'); // logs \"hello\"\n\no.say('goodbye'); // logs \"goodbye\"\n```\n\nTo add functions and properties to the constructor itself,\nsee `reopenClass`",
13879
13816
  "itemtype": "method",
13880
13817
  "name": "reopen",
@@ -13886,7 +13823,7 @@
13886
13823
  },
13887
13824
  {
13888
13825
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13889
- "line": 898,
13826
+ "line": 789,
13890
13827
  "description": "Augments a constructor's own properties and functions:\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst MyObject = EmberObject.extend({\n name: 'an object'\n});\n\nMyObject.reopenClass({\n canBuild: false\n});\n\nMyObject.canBuild; // false\no = MyObject.create();\n```\n\nIn other words, this creates static properties and functions for the class.\nThese are only available on the class and not on any instance of that class.\n\n```javascript\nimport EmberObject from '@ember/object';\n\nconst Person = EmberObject.extend({\n name: '',\n sayHello() {\n alert(`Hello. My name is ${this.get('name')}`);\n }\n});\n\nPerson.reopenClass({\n species: 'Homo sapiens',\n\n createPerson(name) {\n return Person.create({ name });\n }\n});\n\nlet tom = Person.create({\n name: 'Tom Dale'\n});\nlet yehuda = Person.createPerson('Yehuda Katz');\n\ntom.sayHello(); // \"Hello. My name is Tom Dale\"\nyehuda.sayHello(); // \"Hello. My name is Yehuda Katz\"\nalert(Person.species); // \"Homo sapiens\"\n```\n\nNote that `species` and `createPerson` are *not* valid on the `tom` and `yehuda`\nvariables. They are only valid on `Person`.\n\nTo add functions and properties to instances of\na constructor by extending the constructor's prototype\nsee `reopen`",
13891
13828
  "itemtype": "method",
13892
13829
  "name": "reopenClass",
@@ -13898,7 +13835,7 @@
13898
13835
  },
13899
13836
  {
13900
13837
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13901
- "line": 981,
13838
+ "line": 872,
13902
13839
  "description": "In some cases, you may want to annotate computed properties with additional\nmetadata about how they function or what values they operate on. For\nexample, computed property functions may close over variables that are then\nno longer available for introspection.\n\nYou can pass a hash of these values to a computed property like this:\n\n```javascript\nimport { computed } from '@ember/object';\n\nperson: computed(function() {\n let personId = this.get('personId');\n return Person.create({ id: personId });\n}).meta({ type: Person })\n```\n\nOnce you've done this, you can retrieve the values saved to the computed\nproperty from your class like this:\n\n```javascript\nMyClass.metaForProperty('person');\n```\n\nThis will return the original hash that was passed to `meta()`.",
13903
13840
  "static": 1,
13904
13841
  "itemtype": "method",
@@ -13917,7 +13854,7 @@
13917
13854
  },
13918
13855
  {
13919
13856
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13920
- "line": 1024,
13857
+ "line": 915,
13921
13858
  "description": "Iterate over each computed property for the class, passing its name\nand any associated metadata (see `metaForProperty`) to the callback.",
13922
13859
  "static": 1,
13923
13860
  "itemtype": "method",
@@ -13941,7 +13878,7 @@
13941
13878
  },
13942
13879
  {
13943
13880
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13944
- "line": 1134,
13881
+ "line": 1025,
13945
13882
  "description": "Provides lookup-time type validation for injected properties.",
13946
13883
  "access": "private",
13947
13884
  "tagname": "",
@@ -13952,7 +13889,7 @@
13952
13889
  },
13953
13890
  {
13954
13891
  "file": "packages/@ember/-internals/runtime/lib/system/core_object.js",
13955
- "line": 1155,
13892
+ "line": 1046,
13956
13893
  "description": "Returns a hash of property names and container names that injected\nproperties will lookup on the container lazily.",
13957
13894
  "itemtype": "method",
13958
13895
  "name": "_lazyInjections",
@@ -14981,7 +14918,7 @@
14981
14918
  },
14982
14919
  {
14983
14920
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
14984
- "line": 34,
14921
+ "line": 27,
14985
14922
  "description": "The set of events names (and associated handler function names) to be setup\nand dispatched by the `EventDispatcher`. Modifications to this list can be done\nat setup time, generally via the `Application.customEvents` hash.\n\nTo add new events to be listened to:\n\n```javascript\nimport Application from '@ember/application';\n\nlet App = Application.create({\n customEvents: {\n paste: 'paste'\n }\n});\n```\n\nTo prevent default events from being listened to:\n\n```javascript\nimport Application from '@ember/application';\n\nlet App = Application.create({\n customEvents: {\n mouseenter: null,\n mouseleave: null\n }\n});\n```",
14986
14923
  "itemtype": "property",
14987
14924
  "name": "events",
@@ -14994,7 +14931,7 @@
14994
14931
  },
14995
14932
  {
14996
14933
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
14997
- "line": 103,
14934
+ "line": 87,
14998
14935
  "description": "The root DOM element to which event listeners should be attached. Event\nlisteners will be attached to the document unless this is overridden.\n\nCan be specified as a DOMElement or a selector string.\n\nThe default body is a string since this may be evaluated before document.body\nexists in the DOM.",
14999
14936
  "access": "private",
15000
14937
  "tagname": "",
@@ -15008,7 +14945,7 @@
15008
14945
  },
15009
14946
  {
15010
14947
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
15011
- "line": 128,
14948
+ "line": 112,
15012
14949
  "description": "Sets up event listeners for standard browser events.\n\nThis will be called after the browser sends a `DOMContentReady` event. By\ndefault, it will set up all of the listeners on the document body. If you\nwould like to register the listeners on a different element, set the event\ndispatcher's `root` property.",
15013
14950
  "access": "private",
15014
14951
  "tagname": "",
@@ -15027,7 +14964,7 @@
15027
14964
  },
15028
14965
  {
15029
14966
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
15030
- "line": 218,
14967
+ "line": 202,
15031
14968
  "description": "Setup event listeners for the given browser event name",
15032
14969
  "access": "private",
15033
14970
  "tagname": "",
@@ -15045,7 +14982,7 @@
15045
14982
  },
15046
14983
  {
15047
14984
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
15048
- "line": 229,
14985
+ "line": 213,
15049
14986
  "description": "Setup event listeners for the given Ember event name (camel case)",
15050
14987
  "access": "private",
15051
14988
  "tagname": "",
@@ -15063,7 +15000,7 @@
15063
15000
  },
15064
15001
  {
15065
15002
  "file": "packages/@ember/-internals/views/lib/system/event_dispatcher.js",
15066
- "line": 244,
15003
+ "line": 228,
15067
15004
  "description": "Registers an event listener on the rootElement. If the given event is\ntriggered, the provided event handler will be triggered on the target view.\n\nIf the target view does not implement the event handler, or if the handler\nreturns `false`, the parent view will be called. The event will continue to\nbubble to each successive parent view until it reaches the top.",
15068
15005
  "access": "private",
15069
15006
  "tagname": "",
@@ -15286,7 +15223,7 @@
15286
15223
  },
15287
15224
  {
15288
15225
  "file": "packages/@ember/application/lib/application.js",
15289
- "line": 188,
15226
+ "line": 185,
15290
15227
  "description": "The root DOM element of the Application. This can be specified as an\nelement or a\n[jQuery-compatible selector string](http://api.jquery.com/category/selectors/).\n\nThis is the element that will be passed to the Application's,\n`eventDispatcher`, which sets up the listeners for event delegation. Every\nview in your application should be a child of the element you specify here.",
15291
15228
  "itemtype": "property",
15292
15229
  "name": "rootElement",
@@ -15299,7 +15236,7 @@
15299
15236
  },
15300
15237
  {
15301
15238
  "file": "packages/@ember/application/lib/application.js",
15302
- "line": 204,
15239
+ "line": 201,
15303
15240
  "itemtype": "property",
15304
15241
  "name": "_document",
15305
15242
  "type": "Document | null",
@@ -15311,7 +15248,7 @@
15311
15248
  },
15312
15249
  {
15313
15250
  "file": "packages/@ember/application/lib/application.js",
15314
- "line": 213,
15251
+ "line": 210,
15315
15252
  "description": "The `Ember.EventDispatcher` responsible for delegating events to this\napplication's views.\n\nThe event dispatcher is created by the application at initialization time\nand sets up event listeners on the DOM element described by the\napplication's `rootElement` property.\n\nSee the documentation for `Ember.EventDispatcher` for more information.",
15316
15253
  "itemtype": "property",
15317
15254
  "name": "eventDispatcher",
@@ -15324,7 +15261,7 @@
15324
15261
  },
15325
15262
  {
15326
15263
  "file": "packages/@ember/application/lib/application.js",
15327
- "line": 230,
15264
+ "line": 227,
15328
15265
  "description": "The DOM events for which the event dispatcher should listen.\n\nBy default, the application's `Ember.EventDispatcher` listens\nfor a set of standard DOM events, such as `mousedown` and\n`keyup`, and delegates them to your application's `Ember.View`\ninstances.\n\nIf you would like additional bubbling events to be delegated to your\nviews, set your `Application`'s `customEvents` property\nto a hash containing the DOM event name as the key and the\ncorresponding view method name as the value. Setting an event to\na value of `null` will prevent a default event listener from being\nadded for that event.\n\nTo add new events to be listened to:\n\n```app/app.js\nimport Application from '@ember/application';\n\nlet App = Application.extend({\n customEvents: {\n // add support for the paste event\n paste: 'paste'\n }\n});\n```\n\nTo prevent default events from being listened to:\n\n```app/app.js\nimport Application from '@ember/application';\n\nlet App = Application.extend({\n customEvents: {\n // remove support for mouseenter / mouseleave events\n mouseenter: null,\n mouseleave: null\n }\n});\n```",
15329
15266
  "itemtype": "property",
15330
15267
  "name": "customEvents",
@@ -15337,7 +15274,7 @@
15337
15274
  },
15338
15275
  {
15339
15276
  "file": "packages/@ember/application/lib/application.js",
15340
- "line": 278,
15277
+ "line": 275,
15341
15278
  "description": "Whether the application should automatically start routing and render\ntemplates to the `rootElement` on DOM ready. While default by true,\nother environments such as FastBoot or a testing harness can set this\nproperty to `false` and control the precise timing and behavior of the boot\nprocess.",
15342
15279
  "itemtype": "property",
15343
15280
  "name": "autoboot",
@@ -15350,7 +15287,7 @@
15350
15287
  },
15351
15288
  {
15352
15289
  "file": "packages/@ember/application/lib/application.js",
15353
- "line": 292,
15290
+ "line": 289,
15354
15291
  "description": "Whether the application should be configured for the legacy \"globals mode\".\nUnder this mode, the Application object serves as a global namespace for all\nclasses.\n\n```javascript\nimport Application from '@ember/application';\nimport Component from '@ember/component';\n\nlet App = Application.create({\n ...\n});\n\nApp.Router.reopen({\n location: 'none'\n});\n\nApp.Router.map({\n ...\n});\n\nApp.MyComponent = Component.extend({\n ...\n});\n```\n\nThis flag also exposes other internal APIs that assumes the existence of\na special \"default instance\", like `App.__container__.lookup(...)`.\n\nThis option is currently not configurable, its value is derived from\nthe `autoboot` flag – disabling `autoboot` also implies opting-out of\nglobals mode support, although they are ultimately orthogonal concerns.\n\nSome of the global modes features are already deprecated in 1.x. The\nexistence of this flag is to untangle the globals mode code paths from\nthe autoboot code paths, so that these legacy features can be reviewed\nfor deprecation/removal separately.\n\nForcing the (autoboot=true, _globalsMode=false) here and running the tests\nwould reveal all the places where we are still relying on these legacy\nbehavior internally (mostly just tests).",
15355
15292
  "itemtype": "property",
15356
15293
  "name": "_globalsMode",
@@ -15363,7 +15300,7 @@
15363
15300
  },
15364
15301
  {
15365
15302
  "file": "packages/@ember/application/lib/application.js",
15366
- "line": 341,
15303
+ "line": 338,
15367
15304
  "description": "An array of application instances created by `buildInstance()`. Used\ninternally to ensure that all instances get destroyed.",
15368
15305
  "itemtype": "property",
15369
15306
  "name": "_applicationInstances",
@@ -15376,7 +15313,7 @@
15376
15313
  },
15377
15314
  {
15378
15315
  "file": "packages/@ember/application/lib/application.js",
15379
- "line": 387,
15316
+ "line": 378,
15380
15317
  "description": "Create an ApplicationInstance for this application.",
15381
15318
  "access": "public",
15382
15319
  "tagname": "",
@@ -15391,7 +15328,7 @@
15391
15328
  },
15392
15329
  {
15393
15330
  "file": "packages/@ember/application/lib/application.js",
15394
- "line": 410,
15331
+ "line": 401,
15395
15332
  "description": "Start tracking an ApplicationInstance for this application.\nUsed when the ApplicationInstance is created.",
15396
15333
  "access": "private",
15397
15334
  "tagname": "",
@@ -15402,7 +15339,7 @@
15402
15339
  },
15403
15340
  {
15404
15341
  "file": "packages/@ember/application/lib/application.js",
15405
- "line": 421,
15342
+ "line": 412,
15406
15343
  "description": "Stop tracking an ApplicationInstance for this application.\nUsed when the ApplicationInstance is about to be destroyed.",
15407
15344
  "access": "private",
15408
15345
  "tagname": "",
@@ -15413,7 +15350,7 @@
15413
15350
  },
15414
15351
  {
15415
15352
  "file": "packages/@ember/application/lib/application.js",
15416
- "line": 432,
15353
+ "line": 423,
15417
15354
  "description": "Enable the legacy globals mode by allowing this application to act\nas a global namespace. See the docs on the `_globalsMode` property\nfor details.\n\nMost of these features are already deprecated in 1.x, so we can\nstop using them internally and try to remove them.",
15418
15355
  "access": "private",
15419
15356
  "tagname": "",
@@ -15424,7 +15361,7 @@
15424
15361
  },
15425
15362
  {
15426
15363
  "file": "packages/@ember/application/lib/application.js",
15427
- "line": 476,
15364
+ "line": 467,
15428
15365
  "description": "Automatically kick-off the boot process for the application once the\nDOM has become ready.\n\nThe initialization itself is scheduled on the actions queue which\nensures that code-loading finishes before booting.\n\nIf you are asynchronously loading code, you should call `deferReadiness()`\nto defer booting, and then call `advanceReadiness()` once all of your code\nhas finished loading.",
15429
15366
  "access": "private",
15430
15367
  "tagname": "",
@@ -15435,7 +15372,7 @@
15435
15372
  },
15436
15373
  {
15437
15374
  "file": "packages/@ember/application/lib/application.js",
15438
- "line": 503,
15375
+ "line": 494,
15439
15376
  "description": "This is the autoboot flow:\n\n1. Boot the app by calling `this.boot()`\n2. Create an instance (or use the `__deprecatedInstance__` in globals mode)\n3. Boot the instance by calling `instance.boot()`\n4. Invoke the `App.ready()` callback\n5. Kick-off routing on the instance\n\nIdeally, this is all we would need to do:\n\n```javascript\n_autoBoot() {\n this.boot().then(() => {\n let instance = (this._globalsMode) ? this.__deprecatedInstance__ : this.buildInstance();\n return instance.boot();\n }).then((instance) => {\n App.ready();\n instance.startRouting();\n });\n}\n```\n\nUnfortunately, we cannot actually write this because we need to participate\nin the \"synchronous\" boot process. While the code above would work fine on\nthe initial boot (i.e. DOM ready), when `App.reset()` is called, we need to\nboot a new instance synchronously (see the documentation on `_bootSync()`\nfor details).\n\nBecause of this restriction, the actual logic of this method is located\ninside `didBecomeReady()`.",
15440
15377
  "access": "private",
15441
15378
  "tagname": "",
@@ -15446,7 +15383,7 @@
15446
15383
  },
15447
15384
  {
15448
15385
  "file": "packages/@ember/application/lib/application.js",
15449
- "line": 548,
15386
+ "line": 539,
15450
15387
  "description": "Use this to defer readiness until some condition is true.\n\nExample:\n\n```javascript\nimport Application from '@ember/application';\n\nlet App = Application.create();\n\nApp.deferReadiness();\n\n// $ is a reference to the jQuery object/function\nimport $ from 'jquery;\n\n$.getJSON('/auth-token', function(token) {\n App.token = token;\n App.advanceReadiness();\n});\n```\n\nThis allows you to perform asynchronous setup logic and defer\nbooting your application until the setup has finished.\n\nHowever, if the setup requires a loading UI, it might be better\nto use the router for this purpose.",
15451
15388
  "itemtype": "method",
15452
15389
  "name": "deferReadiness",
@@ -15457,7 +15394,7 @@
15457
15394
  },
15458
15395
  {
15459
15396
  "file": "packages/@ember/application/lib/application.js",
15460
- "line": 599,
15397
+ "line": 590,
15461
15398
  "description": "Call `advanceReadiness` after any asynchronous setup logic has completed.\nEach call to `deferReadiness` must be matched by a call to `advanceReadiness`\nor the application will never become ready and routing will not begin.",
15462
15399
  "itemtype": "method",
15463
15400
  "name": "advanceReadiness",
@@ -15471,7 +15408,7 @@
15471
15408
  },
15472
15409
  {
15473
15410
  "file": "packages/@ember/application/lib/application.js",
15474
- "line": 636,
15411
+ "line": 627,
15475
15412
  "description": "Initialize the application and return a promise that resolves with the `Application`\nobject when the boot process is complete.\n\nRun any application initializers and run the application load hook. These hooks may\nchoose to defer readiness. For example, an authentication hook might want to defer\nreadiness until the auth token has been retrieved.\n\nBy default, this method is called automatically on \"DOM ready\"; however, if autoboot\nis disabled, this is automatically called when the first application instance is\ncreated via `visit`.",
15476
15413
  "access": "public",
15477
15414
  "tagname": "",
@@ -15486,7 +15423,7 @@
15486
15423
  },
15487
15424
  {
15488
15425
  "file": "packages/@ember/application/lib/application.js",
15489
- "line": 674,
15426
+ "line": 665,
15490
15427
  "description": "Unfortunately, a lot of existing code assumes the booting process is\n\"synchronous\". Specifically, a lot of tests assumes the last call to\n`app.advanceReadiness()` or `app.reset()` will result in the app being\nfully-booted when the current runloop completes.\n\nWe would like new code (like the `visit` API) to stop making this assumption,\nso we created the asynchronous version above that returns a promise. But until\nwe have migrated all the code, we would have to expose this method for use\n*internally* in places where we need to boot an app \"synchronously\".",
15491
15428
  "access": "private",
15492
15429
  "tagname": "",
@@ -15495,7 +15432,7 @@
15495
15432
  },
15496
15433
  {
15497
15434
  "file": "packages/@ember/application/lib/application.js",
15498
- "line": 713,
15435
+ "line": 704,
15499
15436
  "description": "Reset the application. This is typically used only in tests. It cleans up\nthe application in the following order:\n\n1. Deactivate existing routes\n2. Destroy all objects in the container\n3. Create a new application container\n4. Re-route to the existing url\n\nTypical Example:\n\n```javascript\nimport Application from '@ember/application';\nlet App;\n\nrun(function() {\n App = Application.create();\n});\n\nmodule('acceptance test', {\n setup: function() {\n App.reset();\n }\n});\n\ntest('first test', function() {\n // App is freshly reset\n});\n\ntest('second test', function() {\n // App is again freshly reset\n});\n```\n\nAdvanced Example:\n\nOccasionally you may want to prevent the app from initializing during\nsetup. This could enable extra configuration, or enable asserting prior\nto the app becoming ready.\n\n```javascript\nimport Application from '@ember/application';\nlet App;\n\nrun(function() {\n App = Application.create();\n});\n\nmodule('acceptance test', {\n setup: function() {\n run(function() {\n App.reset();\n App.deferReadiness();\n });\n }\n});\n\ntest('first test', function() {\n ok(true, 'something before app is initialized');\n\n run(function() {\n App.advanceReadiness();\n });\n\n ok(true, 'something after app is initialized');\n});\n```",
15500
15437
  "itemtype": "method",
15501
15438
  "name": "reset",
@@ -15506,7 +15443,7 @@
15506
15443
  },
15507
15444
  {
15508
15445
  "file": "packages/@ember/application/lib/application.js",
15509
- "line": 816,
15446
+ "line": 807,
15510
15447
  "access": "private",
15511
15448
  "tagname": "",
15512
15449
  "itemtype": "method",
@@ -15516,7 +15453,7 @@
15516
15453
  },
15517
15454
  {
15518
15455
  "file": "packages/@ember/application/lib/application.js",
15519
- "line": 866,
15456
+ "line": 857,
15520
15457
  "description": "Called when the Application has become ready, immediately before routing\nbegins. The call will be delayed until the DOM has become ready.",
15521
15458
  "itemtype": "event",
15522
15459
  "name": "ready",
@@ -15527,8 +15464,8 @@
15527
15464
  },
15528
15465
  {
15529
15466
  "file": "packages/@ember/application/lib/application.js",
15530
- "line": 891,
15531
- "description": "Boot a new instance of `ApplicationInstance` for the current\napplication and navigate it to the given `url`. Returns a `Promise` that\nresolves with the instance when the initial routing and rendering is\ncomplete, or rejects with any error that occurred during the boot process.\n\nWhen `autoboot` is disabled, calling `visit` would first cause the\napplication to boot, which runs the application initializers.\n\nThis method also takes a hash of boot-time configuration options for\ncustomizing the instance's behavior. See the documentation on\n`ApplicationInstance.BootOptions` for details.\n\n`ApplicationInstance.BootOptions` is an interface class that exists\npurely to document the available options; you do not need to construct it\nmanually. Simply pass a regular JavaScript object containing of the\ndesired options:\n\n```javascript\nMyApp.visit(\"/\", { location: \"none\", rootElement: \"#container\" });\n```\n\n### Supported Scenarios\n\nWhile the `BootOptions` class exposes a large number of knobs, not all\ncombinations of them are valid; certain incompatible combinations might\nresult in unexpected behavior.\n\nFor example, booting the instance in the full browser environment\nwhile specifying a foreign `document` object (e.g. `{ isBrowser: true,\ndocument: iframe.contentDocument }`) does not work correctly today,\nlargely due to Ember's jQuery dependency.\n\nCurrently, there are three officially supported scenarios/configurations.\nUsages outside of these scenarios are not guaranteed to work, but please\nfeel free to file bug reports documenting your experience and any issues\nyou encountered to help expand support.\n\n#### Browser Applications (Manual Boot)\n\nThe setup is largely similar to how Ember works out-of-the-box. Normally,\nEmber will boot a default instance for your Application on \"DOM ready\".\nHowever, you can customize this behavior by disabling `autoboot`.\n\nFor example, this allows you to render a miniture demo of your application\ninto a specific area on your marketing website:\n\n```javascript\nimport MyApp from 'my-app';\n\n$(function() {\n let App = MyApp.create({ autoboot: false });\n\n let options = {\n // Override the router's location adapter to prevent it from updating\n // the URL in the address bar\n location: 'none',\n\n // Override the default `rootElement` on the app to render into a\n // specific `div` on the page\n rootElement: '#demo'\n };\n\n // Start the app at the special demo URL\n App.visit('/demo', options);\n});\n```\n\nOr perhaps you might want to boot two instances of your app on the same\npage for a split-screen multiplayer experience:\n\n```javascript\nimport MyApp from 'my-app';\n\n$(function() {\n let App = MyApp.create({ autoboot: false });\n\n let sessionId = MyApp.generateSessionID();\n\n let player1 = App.visit(`/matches/join?name=Player+1&session=${sessionId}`, { rootElement: '#left', location: 'none' });\n let player2 = App.visit(`/matches/join?name=Player+2&session=${sessionId}`, { rootElement: '#right', location: 'none' });\n\n Promise.all([player1, player2]).then(() => {\n // Both apps have completed the initial render\n $('#loading').fadeOut();\n });\n});\n```\n\nDo note that each app instance maintains their own registry/container, so\nthey will run in complete isolation by default.\n\n#### Server-Side Rendering (also known as FastBoot)\n\nThis setup allows you to run your Ember app in a server environment using\nNode.js and render its content into static HTML for SEO purposes.\n\n```javascript\nconst HTMLSerializer = new SimpleDOM.HTMLSerializer(SimpleDOM.voidMap);\n\nfunction renderURL(url) {\n let dom = new SimpleDOM.Document();\n let rootElement = dom.body;\n let options = { isBrowser: false, document: dom, rootElement: rootElement };\n\n return MyApp.visit(options).then(instance => {\n try {\n return HTMLSerializer.serialize(rootElement.firstChild);\n } finally {\n instance.destroy();\n }\n });\n}\n```\n\nIn this scenario, because Ember does not have access to a global `document`\nobject in the Node.js environment, you must provide one explicitly. In practice,\nin the non-browser environment, the stand-in `document` object only needs to\nimplement a limited subset of the full DOM API. The `SimpleDOM` library is known\nto work.\n\nSince there is no access to jQuery in the non-browser environment, you must also\nspecify a DOM `Element` object in the same `document` for the `rootElement` option\n(as opposed to a selector string like `\"body\"`).\n\nSee the documentation on the `isBrowser`, `document` and `rootElement` properties\non `ApplicationInstance.BootOptions` for details.\n\n#### Server-Side Resource Discovery\n\nThis setup allows you to run the routing layer of your Ember app in a server\nenvironment using Node.js and completely disable rendering. This allows you\nto simulate and discover the resources (i.e. AJAX requests) needed to fulfill\na given request and eagerly \"push\" these resources to the client.\n\n```app/initializers/network-service.js\nimport BrowserNetworkService from 'app/services/network/browser';\nimport NodeNetworkService from 'app/services/network/node';\n\n// Inject a (hypothetical) service for abstracting all AJAX calls and use\n// the appropriate implementation on the client/server. This also allows the\n// server to log all the AJAX calls made during a particular request and use\n// that for resource-discovery purpose.\n\nexport function initialize(application) {\n if (window) { // browser\n application.register('service:network', BrowserNetworkService);\n } else { // node\n application.register('service:network', NodeNetworkService);\n }\n\n application.inject('route', 'network', 'service:network');\n};\n\nexport default {\n name: 'network-service',\n initialize: initialize\n};\n```\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\n// An example of how the (hypothetical) service is used in routes.\n\nexport default Route.extend({\n model(params) {\n return this.network.fetch(`/api/posts/${params.post_id}.json`);\n },\n\n afterModel(post) {\n if (post.isExternalContent) {\n return this.network.fetch(`/api/external/?url=${post.externalURL}`);\n } else {\n return post;\n }\n }\n});\n```\n\n```javascript\n// Finally, put all the pieces together\n\nfunction discoverResourcesFor(url) {\n return MyApp.visit(url, { isBrowser: false, shouldRender: false }).then(instance => {\n let networkService = instance.lookup('service:network');\n return networkService.requests; // => { \"/api/posts/123.json\": \"...\" }\n });\n}\n```",
15467
+ "line": 882,
15468
+ "description": "Boot a new instance of `ApplicationInstance` for the current\napplication and navigate it to the given `url`. Returns a `Promise` that\nresolves with the instance when the initial routing and rendering is\ncomplete, or rejects with any error that occurred during the boot process.\n\nWhen `autoboot` is disabled, calling `visit` would first cause the\napplication to boot, which runs the application initializers.\n\nThis method also takes a hash of boot-time configuration options for\ncustomizing the instance's behavior. See the documentation on\n`ApplicationInstance.BootOptions` for details.\n\n`ApplicationInstance.BootOptions` is an interface class that exists\npurely to document the available options; you do not need to construct it\nmanually. Simply pass a regular JavaScript object containing of the\ndesired options:\n\n```javascript\nMyApp.visit(\"/\", { location: \"none\", rootElement: \"#container\" });\n```\n\n### Supported Scenarios\n\nWhile the `BootOptions` class exposes a large number of knobs, not all\ncombinations of them are valid; certain incompatible combinations might\nresult in unexpected behavior.\n\nFor example, booting the instance in the full browser environment\nwhile specifying a foreign `document` object (e.g. `{ isBrowser: true,\ndocument: iframe.contentDocument }`) does not work correctly today,\nlargely due to Ember's jQuery dependency.\n\nCurrently, there are three officially supported scenarios/configurations.\nUsages outside of these scenarios are not guaranteed to work, but please\nfeel free to file bug reports documenting your experience and any issues\nyou encountered to help expand support.\n\n#### Browser Applications (Manual Boot)\n\nThe setup is largely similar to how Ember works out-of-the-box. Normally,\nEmber will boot a default instance for your Application on \"DOM ready\".\nHowever, you can customize this behavior by disabling `autoboot`.\n\nFor example, this allows you to render a miniture demo of your application\ninto a specific area on your marketing website:\n\n```javascript\nimport MyApp from 'my-app';\n\n$(function() {\n let App = MyApp.create({ autoboot: false });\n\n let options = {\n // Override the router's location adapter to prevent it from updating\n // the URL in the address bar\n location: 'none',\n\n // Override the default `rootElement` on the app to render into a\n // specific `div` on the page\n rootElement: '#demo'\n };\n\n // Start the app at the special demo URL\n App.visit('/demo', options);\n});\n```\n\nOr perhaps you might want to boot two instances of your app on the same\npage for a split-screen multiplayer experience:\n\n```javascript\nimport MyApp from 'my-app';\n\n$(function() {\n let App = MyApp.create({ autoboot: false });\n\n let sessionId = MyApp.generateSessionID();\n\n let player1 = App.visit(`/matches/join?name=Player+1&session=${sessionId}`, { rootElement: '#left', location: 'none' });\n let player2 = App.visit(`/matches/join?name=Player+2&session=${sessionId}`, { rootElement: '#right', location: 'none' });\n\n Promise.all([player1, player2]).then(() => {\n // Both apps have completed the initial render\n $('#loading').fadeOut();\n });\n});\n```\n\nDo note that each app instance maintains their own registry/container, so\nthey will run in complete isolation by default.\n\n#### Server-Side Rendering (also known as FastBoot)\n\nThis setup allows you to run your Ember app in a server environment using\nNode.js and render its content into static HTML for SEO purposes.\n\n```javascript\nconst HTMLSerializer = new SimpleDOM.HTMLSerializer(SimpleDOM.voidMap);\n\nfunction renderURL(url) {\n let dom = new SimpleDOM.Document();\n let rootElement = dom.body;\n let options = { isBrowser: false, document: dom, rootElement: rootElement };\n\n return MyApp.visit(options).then(instance => {\n try {\n return HTMLSerializer.serialize(rootElement.firstChild);\n } finally {\n instance.destroy();\n }\n });\n}\n```\n\nIn this scenario, because Ember does not have access to a global `document`\nobject in the Node.js environment, you must provide one explicitly. In practice,\nin the non-browser environment, the stand-in `document` object only needs to\nimplement a limited subset of the full DOM API. The `SimpleDOM` library is known\nto work.\n\nSince there is no access to jQuery in the non-browser environment, you must also\nspecify a DOM `Element` object in the same `document` for the `rootElement` option\n(as opposed to a selector string like `\"body\"`).\n\nSee the documentation on the `isBrowser`, `document` and `rootElement` properties\non `ApplicationInstance.BootOptions` for details.\n\n#### Server-Side Resource Discovery\n\nThis setup allows you to run the routing layer of your Ember app in a server\nenvironment using Node.js and completely disable rendering. This allows you\nto simulate and discover the resources (i.e. AJAX requests) needed to fulfill\na given request and eagerly \"push\" these resources to the client.\n\n```app/initializers/network-service.js\nimport BrowserNetworkService from 'app/services/network/browser';\nimport NodeNetworkService from 'app/services/network/node';\n\n// Inject a (hypothetical) service for abstracting all AJAX calls and use\n// the appropriate implementation on the client/server. This also allows the\n// server to log all the AJAX calls made during a particular request and use\n// that for resource-discovery purpose.\n\nexport function initialize(application) {\n if (window) { // browser\n application.register('service:network', BrowserNetworkService);\n } else { // node\n application.register('service:network', NodeNetworkService);\n }\n};\n\nexport default {\n name: 'network-service',\n initialize: initialize\n};\n```\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\n// An example of how the (hypothetical) service is used in routes.\n\nexport default class IndexRoute extends Route {\n @service network;\n\n model(params) {\n return this.network.fetch(`/api/posts/${params.post_id}.json`);\n }\n\n afterModel(post) {\n if (post.isExternalContent) {\n return this.network.fetch(`/api/external/?url=${post.externalURL}`);\n } else {\n return post;\n }\n }\n}\n```\n\n```javascript\n// Finally, put all the pieces together\n\nfunction discoverResourcesFor(url) {\n return MyApp.visit(url, { isBrowser: false, shouldRender: false }).then(instance => {\n let networkService = instance.lookup('service:network');\n return networkService.requests; // => { \"/api/posts/123.json\": \"...\" }\n });\n}\n```",
15532
15469
  "access": "public",
15533
15470
  "tagname": "",
15534
15471
  "itemtype": "method",
@@ -15554,7 +15491,7 @@
15554
15491
  },
15555
15492
  {
15556
15493
  "file": "packages/@ember/application/lib/application.js",
15557
- "line": 1111,
15494
+ "line": 1103,
15558
15495
  "description": "This creates a registry with the default Ember naming conventions.\n\nIt also configures the registry:\n\n* registered views are created every time they are looked up (they are\n not singletons)\n* registered templates are not factories; the registered value is\n returned directly.\n* the router receives the application as its `namespace` property\n* all controllers receive the router as their `target` and `controllers`\n properties\n* all controllers receive the application as their `namespace` property\n* the application view receives the application controller as its\n `controller` property\n* the application view receives the application template as its\n `defaultTemplate` property",
15559
15496
  "itemtype": "method",
15560
15497
  "name": "buildRegistry",
@@ -15625,7 +15562,7 @@
15625
15562
  },
15626
15563
  {
15627
15564
  "file": "packages/@ember/application/instance.js",
15628
- "line": 37,
15565
+ "line": 36,
15629
15566
  "description": "The `Application` for which this is an instance.",
15630
15567
  "itemtype": "property",
15631
15568
  "name": "application",
@@ -15637,7 +15574,7 @@
15637
15574
  },
15638
15575
  {
15639
15576
  "file": "packages/@ember/application/instance.js",
15640
- "line": 45,
15577
+ "line": 44,
15641
15578
  "description": "The DOM events for which the event dispatcher should listen.\n\nBy default, the application's `Ember.EventDispatcher` listens\nfor a set of standard DOM events, such as `mousedown` and\n`keyup`, and delegates them to your application's `Ember.View`\ninstances.",
15642
15579
  "access": "private",
15643
15580
  "tagname": "",
@@ -15649,8 +15586,8 @@
15649
15586
  },
15650
15587
  {
15651
15588
  "file": "packages/@ember/application/instance.js",
15652
- "line": 58,
15653
- "description": "The root DOM element of the Application as an element or a\n[jQuery-compatible selector\nstring](http://api.jquery.com/category/selectors/).",
15589
+ "line": 57,
15590
+ "description": "The root DOM element of the Application as an element or a\nCSS selector.",
15654
15591
  "access": "private",
15655
15592
  "tagname": "",
15656
15593
  "itemtype": "property",
@@ -15661,7 +15598,7 @@
15661
15598
  },
15662
15599
  {
15663
15600
  "file": "packages/@ember/application/instance.js",
15664
- "line": 83,
15601
+ "line": 81,
15665
15602
  "description": "Overrides the base `EngineInstance._bootSync` method with concerns relevant\nto booting application (instead of engine) instances.\n\nThis method should only contain synchronous boot concerns. Asynchronous\nboot concerns should eventually be moved to the `boot` method, which\nreturns a promise.\n\nUntil all boot code has been made asynchronous, we need to continue to\nexpose this method for use *internally* in places where we need to boot an\ninstance synchronously.",
15666
15603
  "access": "private",
15667
15604
  "tagname": "",
@@ -15670,7 +15607,7 @@
15670
15607
  },
15671
15608
  {
15672
15609
  "file": "packages/@ember/application/instance.js",
15673
- "line": 135,
15610
+ "line": 133,
15674
15611
  "description": "This hook is called by the root-most Route (a.k.a. the ApplicationRoute)\nwhen it has finished creating the root View. By default, we simply take the\nview and append it to the `rootElement` specified on the Application.\n\nIn cases like FastBoot and testing, we can override this hook and implement\ncustom behavior, such as serializing to a string and sending over an HTTP\nsocket rather than appending to DOM.",
15675
15612
  "params": [
15676
15613
  {
@@ -15687,7 +15624,7 @@
15687
15624
  },
15688
15625
  {
15689
15626
  "file": "packages/@ember/application/instance.js",
15690
- "line": 152,
15627
+ "line": 150,
15691
15628
  "description": "Tells the router to start routing. The router will ask the location for the\ncurrent URL of the page to determine the initial URL to start routing to.\nTo start the app at a specific URL, call `handleURL` instead.",
15692
15629
  "access": "private",
15693
15630
  "tagname": "",
@@ -15696,7 +15633,7 @@
15696
15633
  },
15697
15634
  {
15698
15635
  "file": "packages/@ember/application/instance.js",
15699
- "line": 163,
15636
+ "line": 161,
15700
15637
  "description": "Sets up the router, initializing the child router and configuring the\nlocation before routing begins.\n\nBecause setup should only occur once, multiple calls to `setupRouter`\nbeyond the first call have no effect.\n\nThis is commonly used in order to confirm things that rely on the router\nare functioning properly from tests that are primarily rendering related.\n\nFor example, from within [ember-qunit](https://github.com/emberjs/ember-qunit)'s\n`setupRenderingTest` calling `this.owner.setupRouter()` would allow that\nrendering test to confirm that any `<LinkTo></LinkTo>`'s that are rendered\nhave the correct URL.",
15701
15638
  "access": "public",
15702
15639
  "tagname": "",
@@ -15705,7 +15642,7 @@
15705
15642
  },
15706
15643
  {
15707
15644
  "file": "packages/@ember/application/instance.js",
15708
- "line": 184,
15645
+ "line": 182,
15709
15646
  "description": "Directs the router to route to a particular URL. This is useful in tests,\nfor example, to tell the app to start at a particular URL.",
15710
15647
  "params": [
15711
15648
  {
@@ -15721,7 +15658,7 @@
15721
15658
  },
15722
15659
  {
15723
15660
  "file": "packages/@ember/application/instance.js",
15724
- "line": 196,
15661
+ "line": 194,
15725
15662
  "access": "private",
15726
15663
  "tagname": "",
15727
15664
  "class": "ApplicationInstance",
@@ -15729,7 +15666,7 @@
15729
15666
  },
15730
15667
  {
15731
15668
  "file": "packages/@ember/application/instance.js",
15732
- "line": 210,
15669
+ "line": 208,
15733
15670
  "description": "Returns the current URL of the app instance. This is useful when your\napp does not update the browsers URL bar (i.e. it uses the `'none'`\nlocation adapter).",
15734
15671
  "access": "public",
15735
15672
  "tagname": "",
@@ -15742,7 +15679,7 @@
15742
15679
  },
15743
15680
  {
15744
15681
  "file": "packages/@ember/application/instance.js",
15745
- "line": 225,
15682
+ "line": 223,
15746
15683
  "description": "Navigate the instance to a particular URL. This is useful in tests, for\nexample, or to tell the app to start at a particular URL. This method\nreturns a promise that resolves with the app instance when the transition\nis complete, or rejects if the transion was aborted due to an error.",
15747
15684
  "access": "public",
15748
15685
  "tagname": "",
@@ -15762,7 +15699,7 @@
15762
15699
  },
15763
15700
  {
15764
15701
  "file": "packages/@ember/application/instance.js",
15765
- "line": 285,
15702
+ "line": 283,
15766
15703
  "access": "private",
15767
15704
  "tagname": "",
15768
15705
  "itemtype": "method",
@@ -15784,21 +15721,7 @@
15784
15721
  },
15785
15722
  {
15786
15723
  "file": "packages/@ember/application/instance.js",
15787
- "line": 331,
15788
- "description": "Provide a specific instance of jQuery. This is useful in conjunction with\nthe `document` option, as it allows you to use a copy of `jQuery` that is\nappropriately bound to the foreign `document` (e.g. a jsdom).\n\nThis is highly experimental and support very incomplete at the moment.",
15789
- "itemtype": "property",
15790
- "name": "jQuery",
15791
- "type": "Object",
15792
- "default": "auto-detected",
15793
- "access": "private",
15794
- "tagname": "",
15795
- "class": "ApplicationInstance.BootOptions",
15796
- "module": "@ember/application",
15797
- "namespace": "ApplicationInstance"
15798
- },
15799
- {
15800
- "file": "packages/@ember/application/instance.js",
15801
- "line": 345,
15724
+ "line": 329,
15802
15725
  "description": "Interactive mode: whether we need to set up event delegation and invoke\nlifecycle callbacks on Components.",
15803
15726
  "itemtype": "property",
15804
15727
  "name": "isInteractive",
@@ -15812,7 +15735,7 @@
15812
15735
  },
15813
15736
  {
15814
15737
  "file": "packages/@ember/application/instance.js",
15815
- "line": 356,
15738
+ "line": 340,
15816
15739
  "itemtype": "property",
15817
15740
  "name": "_renderMode",
15818
15741
  "type": "string",
@@ -15825,7 +15748,7 @@
15825
15748
  },
15826
15749
  {
15827
15750
  "file": "packages/@ember/application/instance.js",
15828
- "line": 364,
15751
+ "line": 348,
15829
15752
  "description": "Run in a full browser environment.\n\nWhen this flag is set to `false`, it will disable most browser-specific\nand interactive features. Specifically:\n\n* It does not use `jQuery` to append the root view; the `rootElement`\n (either specified as a subsequent option or on the application itself)\n must already be an `Element` in the given `document` (as opposed to a\n string selector).\n\n* It does not set up an `EventDispatcher`.\n\n* It does not run any `Component` lifecycle hooks (such as `didInsertElement`).\n\n* It sets the `location` option to `\"none\"`. (If you would like to use\n the location adapter specified in the app's router instead, you can also\n specify `{ location: null }` to specifically opt-out.)",
15830
15753
  "itemtype": "property",
15831
15754
  "name": "isBrowser",
@@ -15839,7 +15762,7 @@
15839
15762
  },
15840
15763
  {
15841
15764
  "file": "packages/@ember/application/instance.js",
15842
- "line": 400,
15765
+ "line": 383,
15843
15766
  "description": "Disable rendering completely.\n\nWhen this flag is set to `false`, it will disable the entire rendering\npipeline. Essentially, this puts the app into \"routing-only\" mode. No\ntemplates will be rendered, and no Components will be created.",
15844
15767
  "itemtype": "property",
15845
15768
  "name": "shouldRender",
@@ -15853,7 +15776,7 @@
15853
15776
  },
15854
15777
  {
15855
15778
  "file": "packages/@ember/application/instance.js",
15856
- "line": 423,
15779
+ "line": 405,
15857
15780
  "description": "If present, render into the given `Document` object instead of the\nglobal `window.document` object.\n\nIn practice, this is only useful in non-browser environment or in\nnon-interactive mode, because Ember's `jQuery` dependency is\nimplicitly bound to the current document, causing event delegation\nto not work properly when the app is rendered into a foreign\ndocument object (such as an iframe's `contentDocument`).\n\nIn non-browser mode, this could be a \"`Document`-like\" object as\nEmber only interact with a small subset of the DOM API in non-\ninteractive mode. While the exact requirements have not yet been\nformalized, the `SimpleDOM` library's implementation is known to\nwork.",
15858
15781
  "itemtype": "property",
15859
15782
  "name": "document",
@@ -15867,7 +15790,7 @@
15867
15790
  },
15868
15791
  {
15869
15792
  "file": "packages/@ember/application/instance.js",
15870
- "line": 450,
15793
+ "line": 432,
15871
15794
  "description": "If present, overrides the application's `rootElement` property on\nthe instance. This is useful for testing environment, where you\nmight want to append the root view to a fixture area.\n\nIn non-browser mode, because Ember does not have access to jQuery,\nthis options must be specified as a DOM `Element` object instead of\na selector string.\n\nSee the documentation on `Application`'s `rootElement` for\ndetails.",
15872
15795
  "itemtype": "property",
15873
15796
  "name": "rootElement",
@@ -15881,7 +15804,7 @@
15881
15804
  },
15882
15805
  {
15883
15806
  "file": "packages/@ember/application/instance.js",
15884
- "line": 475,
15807
+ "line": 457,
15885
15808
  "description": "If present, overrides the router's `location` property with this\nvalue. This is useful for environments where trying to modify the\nURL would be inappropriate.",
15886
15809
  "itemtype": "property",
15887
15810
  "name": "location",
@@ -15895,7 +15818,7 @@
15895
15818
  },
15896
15819
  {
15897
15820
  "file": "packages/@ember/canary-features/index.ts",
15898
- "line": 37,
15821
+ "line": 38,
15899
15822
  "description": "Determine whether the specified `feature` is enabled. Used by Ember's\nbuild tools to exclude experimental features from beta/stable builds.\n\nYou can define the following configuration options:\n\n* `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n enabled/disabled.",
15900
15823
  "itemtype": "method",
15901
15824
  "name": "isEnabled",
@@ -16743,7 +16666,7 @@
16743
16666
  },
16744
16667
  {
16745
16668
  "file": "packages/@ember/engine/instance.js",
16746
- "line": 203,
16669
+ "line": 200,
16747
16670
  "access": "private",
16748
16671
  "tagname": "",
16749
16672
  "itemtype": "method",
@@ -16950,7 +16873,7 @@
16950
16873
  {
16951
16874
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
16952
16875
  "line": 63,
16953
- "description": "A computed property macro that returns true if the value of the dependent\nproperty is null, an empty string, empty array, or empty function.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { empty } from '@ember/object/computed';\n\nclass ToDoList {\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n @empty('todos') isDone;\n}\n\nlet todoList = new ToDoList(\n ['Unit Test', 'Documentation', 'Release']\n);\n\ntodoList.isDone; // false\nset(todoList, 'todos', []);\ntodoList.isDone; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { empty } from '@ember/object/computed';\n\nlet ToDoList = EmberObject.extend({\n isDone: empty('todos')\n});\n\nlet todoList = ToDoList.create({\n todos: ['Unit Test', 'Documentation', 'Release']\n});\n\ntodoList.isDone; // false\nset(todoList, 'todos', []);\ntodoList.isDone; // true\n```",
16876
+ "description": "A computed property macro that returns true if the value of the dependent\nproperty is null, an empty string, empty array, or empty function.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { empty } from '@ember/object/computed';\n\nclass ToDoList {\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n @empty('todos') isDone;\n}\n\nlet todoList = new ToDoList(\n ['Unit Test', 'Documentation', 'Release']\n);\n\ntodoList.isDone; // false\nset(todoList, 'todos', []);\ntodoList.isDone; // true\n```",
16954
16877
  "since": "1.6.0",
16955
16878
  "itemtype": "method",
16956
16879
  "name": "empty",
@@ -16973,8 +16896,8 @@
16973
16896
  },
16974
16897
  {
16975
16898
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
16976
- "line": 131,
16977
- "description": "A computed property that returns true if the value of the dependent property\nis NOT null, an empty string, empty array, or empty function.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { notEmpty } from '@ember/object/computed';\n\nclass Hamster {\n constructor(backpack) {\n set(this, 'backpack', backpack);\n }\n\n @notEmpty('backpack') hasStuff\n}\n\nlet hamster = new Hamster(\n ['Food', 'Sleeping Bag', 'Tent']\n);\n\nhamster.hasStuff; // true\nset(hamster, 'backpack', []);\nhamster.hasStuff; // false\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { notEmpty } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n hasStuff: notEmpty('backpack')\n});\n\nlet hamster = Hamster.create({\n backpack: ['Food', 'Sleeping Bag', 'Tent']\n});\n\nhamster.hasStuff; // true\nset(hamster, 'backpack', []);\nhamster.hasStuff; // false\n```",
16899
+ "line": 112,
16900
+ "description": "A computed property that returns true if the value of the dependent property\nis NOT null, an empty string, empty array, or empty function.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { notEmpty } from '@ember/object/computed';\n\nclass Hamster {\n constructor(backpack) {\n set(this, 'backpack', backpack);\n }\n\n @notEmpty('backpack') hasStuff\n}\n\nlet hamster = new Hamster(\n ['Food', 'Sleeping Bag', 'Tent']\n);\n\nhamster.hasStuff; // true\nset(hamster, 'backpack', []);\nhamster.hasStuff; // false\n```",
16978
16901
  "itemtype": "method",
16979
16902
  "name": "notEmpty",
16980
16903
  "static": 1,
@@ -16996,8 +16919,8 @@
16996
16919
  },
16997
16920
  {
16998
16921
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
16999
- "line": 196,
17000
- "description": "A computed property that returns true if the value of the dependent property\nis null or undefined. This avoids errors from JSLint complaining about use of\n==, which can be technically confusing.\n\n```javascript\nimport { set } from '@ember/object';\nimport { none } from '@ember/object/computed';\n\nclass Hamster {\n @none('food') isHungry;\n}\n\nlet hamster = new Hamster();\n\nhamster.isHungry; // true\n\nset(hamster, 'food', 'Banana');\nhamster.isHungry; // false\n\nset(hamster, 'food', null);\nhamster.isHungry; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { none } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n isHungry: none('food')\n});\n\nlet hamster = Hamster.create();\n\nhamster.isHungry; // true\n\nset(hamster, 'food', 'Banana');\nhamster.isHungry; // false\n\nset(hamster, 'food', null);\nhamster.isHungry; // true\n```",
16922
+ "line": 158,
16923
+ "description": "A computed property that returns true if the value of the dependent property\nis null or undefined. This avoids errors from JSLint complaining about use of\n==, which can be technically confusing.\n\n```javascript\nimport { set } from '@ember/object';\nimport { none } from '@ember/object/computed';\n\nclass Hamster {\n @none('food') isHungry;\n}\n\nlet hamster = new Hamster();\n\nhamster.isHungry; // true\n\nset(hamster, 'food', 'Banana');\nhamster.isHungry; // false\n\nset(hamster, 'food', null);\nhamster.isHungry; // true\n```",
17001
16924
  "itemtype": "method",
17002
16925
  "name": "none",
17003
16926
  "static": 1,
@@ -17019,8 +16942,8 @@
17019
16942
  },
17020
16943
  {
17021
16944
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17022
- "line": 260,
17023
- "description": "A computed property that returns the inverse boolean value of the original\nvalue for the dependent property.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { not } from '@ember/object/computed';\n\nclass User {\n loggedIn = false;\n\n @not('loggedIn') isAnonymous;\n}\n\nlet user = new User();\n\nuser.isAnonymous; // true\nset(user, 'loggedIn', true);\nuser.isAnonymous; // false\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { not } from '@ember/object/computed';\n\nlet User = EmberObject.extend({\n loggedIn: false,\n\n isAnonymous: not('loggedIn')\n});\n\nlet user = User.create();\n\nuser.isAnonymous; // true\nset(user, 'loggedIn', true);\nuser.isAnonymous; // false\n```",
16945
+ "line": 201,
16946
+ "description": "A computed property that returns the inverse boolean value of the original\nvalue for the dependent property.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { not } from '@ember/object/computed';\n\nclass User {\n loggedIn = false;\n\n @not('loggedIn') isAnonymous;\n}\n\nlet user = new User();\n\nuser.isAnonymous; // true\nset(user, 'loggedIn', true);\nuser.isAnonymous; // false\n```",
17024
16947
  "itemtype": "method",
17025
16948
  "name": "not",
17026
16949
  "static": 1,
@@ -17042,8 +16965,8 @@
17042
16965
  },
17043
16966
  {
17044
16967
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17045
- "line": 321,
17046
- "description": "A computed property that converts the provided dependent property into a\nboolean value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { bool } from '@ember/object/computed';\n\n\nclass Hamster {\n @bool('numBananas') hasBananas\n}\n\nlet hamster = new Hamster();\n\nhamster.hasBananas; // false\n\nset(hamster, 'numBananas', 0);\nhamster.hasBananas; // false\n\nset(hamster, 'numBananas', 1);\nhamster.hasBananas; // true\n\nset(hamster, 'numBananas', null);\nhamster.hasBananas; // false\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { bool } from '@ember/object/computed';\n\n\nlet Hamster = EmberObject.extend({\n hasBananas: bool('numBananas')\n});\n\nlet hamster = Hamster.create();\n\nhamster.hasBananas; // false\n\nset(hamster, 'numBananas', 0);\nhamster.hasBananas; // false\n\nset(hamster, 'numBananas', 1);\nhamster.hasBananas; // true\n\nset(hamster, 'numBananas', null);\nhamster.hasBananas; // false\n```",
16968
+ "line": 243,
16969
+ "description": "A computed property that converts the provided dependent property into a\nboolean value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { bool } from '@ember/object/computed';\n\n\nclass Hamster {\n @bool('numBananas') hasBananas\n}\n\nlet hamster = new Hamster();\n\nhamster.hasBananas; // false\n\nset(hamster, 'numBananas', 0);\nhamster.hasBananas; // false\n\nset(hamster, 'numBananas', 1);\nhamster.hasBananas; // true\n\nset(hamster, 'numBananas', null);\nhamster.hasBananas; // false\n```",
17047
16970
  "itemtype": "method",
17048
16971
  "name": "bool",
17049
16972
  "static": 1,
@@ -17065,8 +16988,8 @@
17065
16988
  },
17066
16989
  {
17067
16990
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17068
- "line": 394,
17069
- "description": "A computed property which matches the original value for the dependent\nproperty against a given RegExp, returning `true` if the value matches the\nRegExp and `false` if it does not.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { match } from '@ember/object/computed';\n\nclass User {\n @match('email', /^.+@.+\\..+$/) hasValidEmail;\n}\n\nlet user = new User();\n\nuser.hasValidEmail; // false\n\nset(user, 'email', '');\nuser.hasValidEmail; // false\n\nset(user, 'email', 'ember_hamster@example.com');\nuser.hasValidEmail; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { match } from '@ember/object/computed';\n\nlet User = EmberObject.extend({\n hasValidEmail: match('email', /^.+@.+\\..+$/)\n});\n\nlet user = User.create();\n\nuser.hasValidEmail; // false\n\nset(user, 'email', '');\nuser.hasValidEmail; // false\n\nset(user, 'email', 'ember_hamster@example.com');\nuser.hasValidEmail; // true\n```",
16991
+ "line": 291,
16992
+ "description": "A computed property which matches the original value for the dependent\nproperty against a given RegExp, returning `true` if the value matches the\nRegExp and `false` if it does not.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { match } from '@ember/object/computed';\n\nclass User {\n @match('email', /^.+@.+\\..+$/) hasValidEmail;\n}\n\nlet user = new User();\n\nuser.hasValidEmail; // false\n\nset(user, 'email', '');\nuser.hasValidEmail; // false\n\nset(user, 'email', 'ember_hamster@example.com');\nuser.hasValidEmail; // true\n```",
17070
16993
  "itemtype": "method",
17071
16994
  "name": "match",
17072
16995
  "static": 1,
@@ -17093,8 +17016,8 @@
17093
17016
  },
17094
17017
  {
17095
17018
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17096
- "line": 462,
17097
- "description": "A computed property that returns true if the provided dependent property is\nequal to the given value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { equal } from '@ember/object/computed';\n\nclass Hamster {\n @equal('percentCarrotsEaten', 100) satisfied;\n}\n\nlet hamster = new Hamster();\n\nhamster.satisfied; // false\n\nset(hamster, 'percentCarrotsEaten', 100);\nhamster.satisfied; // true\n\nset(hamster, 'percentCarrotsEaten', 50);\nhamster.satisfied; // false\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { equal } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n satisfied: equal('percentCarrotsEaten', 100)\n});\n\nlet hamster = Hamster.create();\n\nhamster.satisfied; // false\n\nset(hamster, 'percentCarrotsEaten', 100);\nhamster.satisfied; // true\n\nset(hamster, 'percentCarrotsEaten', 50);\nhamster.satisfied; // false\n```",
17019
+ "line": 338,
17020
+ "description": "A computed property that returns true if the provided dependent property is\nequal to the given value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { equal } from '@ember/object/computed';\n\nclass Hamster {\n @equal('percentCarrotsEaten', 100) satisfied;\n}\n\nlet hamster = new Hamster();\n\nhamster.satisfied; // false\n\nset(hamster, 'percentCarrotsEaten', 100);\nhamster.satisfied; // true\n\nset(hamster, 'percentCarrotsEaten', 50);\nhamster.satisfied; // false\n```",
17098
17021
  "itemtype": "method",
17099
17022
  "name": "equal",
17100
17023
  "static": 1,
@@ -17121,8 +17044,8 @@
17121
17044
  },
17122
17045
  {
17123
17046
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17124
- "line": 528,
17125
- "description": "A computed property that returns true if the provided dependent property is\ngreater than the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { gt } from '@ember/object/computed';\n\nclass Hamster {\n @gt('numBananas', 10) hasTooManyBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 11);\nhamster.hasTooManyBananas; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { gt } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n hasTooManyBananas: gt('numBananas', 10)\n});\n\nlet hamster = Hamster.create();\n\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 11);\nhamster.hasTooManyBananas; // true\n```",
17047
+ "line": 383,
17048
+ "description": "A computed property that returns true if the provided dependent property is\ngreater than the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { gt } from '@ember/object/computed';\n\nclass Hamster {\n @gt('numBananas', 10) hasTooManyBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 11);\nhamster.hasTooManyBananas; // true\n```",
17126
17049
  "itemtype": "method",
17127
17050
  "name": "gt",
17128
17051
  "static": 1,
@@ -17149,8 +17072,8 @@
17149
17072
  },
17150
17073
  {
17151
17074
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17152
- "line": 594,
17153
- "description": "A computed property that returns true if the provided dependent property is\ngreater than or equal to the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { gte } from '@ember/object/computed';\n\nclass Hamster {\n @gte('numBananas', 10) hasTooManyBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 10);\nhamster.hasTooManyBananas; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { gte } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n hasTooManyBananas: gte('numBananas', 10)\n});\n\nlet hamster = Hamster.create();\n\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 10);\nhamster.hasTooManyBananas; // true\n```",
17075
+ "line": 428,
17076
+ "description": "A computed property that returns true if the provided dependent property is\ngreater than or equal to the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { gte } from '@ember/object/computed';\n\nclass Hamster {\n @gte('numBananas', 10) hasTooManyBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.hasTooManyBananas; // false\n\nset(hamster, 'numBananas', 10);\nhamster.hasTooManyBananas; // true\n```",
17154
17077
  "itemtype": "method",
17155
17078
  "name": "gte",
17156
17079
  "static": 1,
@@ -17177,8 +17100,8 @@
17177
17100
  },
17178
17101
  {
17179
17102
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17180
- "line": 660,
17181
- "description": "A computed property that returns true if the provided dependent property is\nless than the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { lt } from '@ember/object/computed';\n\nclass Hamster {\n @lt('numBananas', 3) needsMoreBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.needsMoreBananas; // true\n\nset(hamster, 'numBananas', 3);\nhamster.needsMoreBananas; // false\n\nset(hamster, 'numBananas', 2);\nhamster.needsMoreBananas; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { lt } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n needsMoreBananas: lt('numBananas', 3)\n});\n\nlet hamster = Hamster.create();\n\nhamster.needsMoreBananas; // true\n\nset(hamster, 'numBananas', 3);\nhamster.needsMoreBananas; // false\n\nset(hamster, 'numBananas', 2);\nhamster.needsMoreBananas; // true\n```",
17103
+ "line": 473,
17104
+ "description": "A computed property that returns true if the provided dependent property is\nless than the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { lt } from '@ember/object/computed';\n\nclass Hamster {\n @lt('numBananas', 3) needsMoreBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.needsMoreBananas; // true\n\nset(hamster, 'numBananas', 3);\nhamster.needsMoreBananas; // false\n\nset(hamster, 'numBananas', 2);\nhamster.needsMoreBananas; // true\n```",
17182
17105
  "itemtype": "method",
17183
17106
  "name": "lt",
17184
17107
  "static": 1,
@@ -17205,8 +17128,8 @@
17205
17128
  },
17206
17129
  {
17207
17130
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17208
- "line": 726,
17209
- "description": "A computed property that returns true if the provided dependent property is\nless than or equal to the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { lte } from '@ember/object/computed';\n\nclass Hamster {\n @lte('numBananas', 3) needsMoreBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.needsMoreBananas; // true\n\nset(hamster, 'numBananas', 5);\nhamster.needsMoreBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.needsMoreBananas; // true\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { lte } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n needsMoreBananas: lte('numBananas', 3)\n});\n\nlet hamster = Hamster.create();\n\nhamster.needsMoreBananas; // true\n\nset(hamster, 'numBananas', 5);\nhamster.needsMoreBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.needsMoreBananas; // true\n```",
17131
+ "line": 518,
17132
+ "description": "A computed property that returns true if the provided dependent property is\nless than or equal to the provided value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { lte } from '@ember/object/computed';\n\nclass Hamster {\n @lte('numBananas', 3) needsMoreBananas;\n}\n\nlet hamster = new Hamster();\n\nhamster.needsMoreBananas; // true\n\nset(hamster, 'numBananas', 5);\nhamster.needsMoreBananas; // false\n\nset(hamster, 'numBananas', 3);\nhamster.needsMoreBananas; // true\n```",
17210
17133
  "itemtype": "method",
17211
17134
  "name": "lte",
17212
17135
  "static": 1,
@@ -17233,8 +17156,8 @@
17233
17156
  },
17234
17157
  {
17235
17158
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17236
- "line": 792,
17237
- "description": "A computed property that performs a logical `and` on the original values for\nthe provided dependent properties.\n\nYou may pass in more than two properties and even use property brace\nexpansion. The computed property will return the first falsy value or last\ntruthy value just like JavaScript's `&&` operator.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { and } from '@ember/object/computed';\n\nclass Hamster {\n @and('hasTent', 'hasBackpack') readyForCamp;\n @and('hasWalkingStick', 'hasBackpack') readyForHike;\n}\n\nlet tomster = new Hamster();\n\ntomster.readyForCamp; // false\n\nset(tomster, 'hasTent', true);\ntomster.readyForCamp; // false\n\nset(tomster, 'hasBackpack', true);\ntomster.readyForCamp; // true\n\nset(tomster, 'hasBackpack', 'Yes');\ntomster.readyForCamp; // 'Yes'\n\nset(tomster, 'hasWalkingStick', null);\ntomster.readyForHike; // null\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { and } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n readyForCamp: and('hasTent', 'hasBackpack'),\n readyForHike: and('hasWalkingStick', 'hasBackpack')\n});\n\nlet tomster = Hamster.create();\n\ntomster.readyForCamp; // false\n\nset(tomster, 'hasTent', true);\ntomster.readyForCamp; // false\n\nset(tomster, 'hasBackpack', true);\ntomster.readyForCamp; // true\n\nset(tomster, 'hasBackpack', 'Yes');\ntomster.readyForCamp; // 'Yes'\n\nset(tomster, 'hasWalkingStick', null);\ntomster.readyForHike; // null\n```",
17159
+ "line": 563,
17160
+ "description": "A computed property that performs a logical `and` on the original values for\nthe provided dependent properties.\n\nYou may pass in more than two properties and even use property brace\nexpansion. The computed property will return the first falsy value or last\ntruthy value just like JavaScript's `&&` operator.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { and } from '@ember/object/computed';\n\nclass Hamster {\n @and('hasTent', 'hasBackpack') readyForCamp;\n @and('hasWalkingStick', 'hasBackpack') readyForHike;\n}\n\nlet tomster = new Hamster();\n\ntomster.readyForCamp; // false\n\nset(tomster, 'hasTent', true);\ntomster.readyForCamp; // false\n\nset(tomster, 'hasBackpack', true);\ntomster.readyForCamp; // true\n\nset(tomster, 'hasBackpack', 'Yes');\ntomster.readyForCamp; // 'Yes'\n\nset(tomster, 'hasWalkingStick', null);\ntomster.readyForHike; // null\n```",
17238
17161
  "itemtype": "method",
17239
17162
  "name": "and",
17240
17163
  "static": 1,
@@ -17257,8 +17180,8 @@
17257
17180
  },
17258
17181
  {
17259
17182
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17260
- "line": 866,
17261
- "description": "A computed property which performs a logical `or` on the original values for\nthe provided dependent properties.\n\nYou may pass in more than two properties and even use property brace\nexpansion. The computed property will return the first truthy value or last\nfalsy value just like JavaScript's `||` operator.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { or } from '@ember/object/computed';\n\nclass Hamster {\n @or('hasJacket', 'hasUmbrella') readyForRain;\n @or('hasSunscreen', 'hasUmbrella') readyForBeach;\n}\n\nlet tomster = new Hamster();\n\ntomster.readyForRain; // undefined\n\nset(tomster, 'hasUmbrella', true);\ntomster.readyForRain; // true\n\nset(tomster, 'hasJacket', 'Yes');\ntomster.readyForRain; // 'Yes'\n\nset(tomster, 'hasSunscreen', 'Check');\ntomster.readyForBeach; // 'Check'\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { or } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n readyForRain: or('hasJacket', 'hasUmbrella'),\n readyForBeach: or('hasSunscreen', 'hasUmbrella')\n});\n\nlet tomster = Hamster.create();\n\ntomster.readyForRain; // undefined\n\nset(tomster, 'hasUmbrella', true);\ntomster.readyForRain; // true\n\nset(tomster, 'hasJacket', 'Yes');\ntomster.readyForRain; // 'Yes'\n\nset(tomster, 'hasSunscreen', 'Check');\ntomster.readyForBeach; // 'Check'\n```",
17183
+ "line": 609,
17184
+ "description": "A computed property which performs a logical `or` on the original values for\nthe provided dependent properties.\n\nYou may pass in more than two properties and even use property brace\nexpansion. The computed property will return the first truthy value or last\nfalsy value just like JavaScript's `||` operator.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { or } from '@ember/object/computed';\n\nclass Hamster {\n @or('hasJacket', 'hasUmbrella') readyForRain;\n @or('hasSunscreen', 'hasUmbrella') readyForBeach;\n}\n\nlet tomster = new Hamster();\n\ntomster.readyForRain; // undefined\n\nset(tomster, 'hasUmbrella', true);\ntomster.readyForRain; // true\n\nset(tomster, 'hasJacket', 'Yes');\ntomster.readyForRain; // 'Yes'\n\nset(tomster, 'hasSunscreen', 'Check');\ntomster.readyForBeach; // 'Check'\n```",
17262
17185
  "itemtype": "method",
17263
17186
  "name": "or",
17264
17187
  "static": 1,
@@ -17281,8 +17204,8 @@
17281
17204
  },
17282
17205
  {
17283
17206
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17284
- "line": 934,
17285
- "description": "Creates a new property that is an alias for another property on an object.\nCalls to `get` or `set` this property behave as though they were called on the\noriginal property.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nclass Person {\n name = 'Alex Matchneer';\n\n @alias('name') nomen;\n}\n\nlet alex = new Person();\n\nalex.nomen; // 'Alex Matchneer'\nalex.name; // 'Alex Matchneer'\n\nset(alex, 'nomen', '@machty');\nalex.name; // '@machty'\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nlet Person = EmberObject.extend({\n name: 'Alex Matchneer',\n\n nomen: alias('name')\n});\n\nlet alex = Person.create();\n\nalex.nomen; // 'Alex Matchneer'\nalex.name; // 'Alex Matchneer'\n\nset(alex, 'nomen', '@machty');\nalex.name; // '@machty'\n```",
17207
+ "line": 652,
17208
+ "description": "Creates a new property that is an alias for another property on an object.\nCalls to `get` or `set` this property behave as though they were called on the\noriginal property.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nclass Person {\n name = 'Alex Matchneer';\n\n @alias('name') nomen;\n}\n\nlet alex = new Person();\n\nalex.nomen; // 'Alex Matchneer'\nalex.name; // 'Alex Matchneer'\n\nset(alex, 'nomen', '@machty');\nalex.name; // '@machty'\n```",
17286
17209
  "itemtype": "method",
17287
17210
  "name": "alias",
17288
17211
  "static": 1,
@@ -17304,8 +17227,8 @@
17304
17227
  },
17305
17228
  {
17306
17229
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17307
- "line": 990,
17308
- "description": "Where the `alias` computed macro aliases `get` and `set`, and allows for\nbidirectional data flow, the `oneWay` computed macro only provides an aliased\n`get`. The `set` will not mutate the upstream property, rather causes the\ncurrent property to become the value set. This causes the downstream property\nto permanently diverge from the upstream property.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { oneWay }from '@ember/object/computed';\n\nclass User {\n constructor(firstName, lastName) {\n set(this, 'firstName', firstName);\n set(this, 'lastName', lastName);\n }\n\n @oneWay('firstName') nickName;\n}\n\nlet teddy = new User('Teddy', 'Zeenny');\n\nteddy.nickName; // 'Teddy'\n\nset(teddy, 'nickName', 'TeddyBear');\nteddy.firstName; // 'Teddy'\nteddy.nickName; // 'TeddyBear'\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { oneWay } from '@ember/object/computed';\n\nlet User = EmberObject.extend({\n firstName: null,\n lastName: null,\n\n nickName: oneWay('firstName')\n});\n\nlet teddy = User.create({\n firstName: 'Teddy',\n lastName: 'Zeenny'\n});\n\nteddy.nickName; // 'Teddy'\n\nset(teddy, 'nickName', 'TeddyBear'); // 'TeddyBear'\nteddy.firstName; // 'Teddy'\nteddy.nickName; // 'TeddyBear'\n```",
17230
+ "line": 687,
17231
+ "description": "Where the `alias` computed macro aliases `get` and `set`, and allows for\nbidirectional data flow, the `oneWay` computed macro only provides an aliased\n`get`. The `set` will not mutate the upstream property, rather causes the\ncurrent property to become the value set. This causes the downstream property\nto permanently diverge from the upstream property.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { oneWay }from '@ember/object/computed';\n\nclass User {\n constructor(firstName, lastName) {\n set(this, 'firstName', firstName);\n set(this, 'lastName', lastName);\n }\n\n @oneWay('firstName') nickName;\n}\n\nlet teddy = new User('Teddy', 'Zeenny');\n\nteddy.nickName; // 'Teddy'\n\nset(teddy, 'nickName', 'TeddyBear');\nteddy.firstName; // 'Teddy'\nteddy.nickName; // 'TeddyBear'\n```",
17309
17232
  "itemtype": "method",
17310
17233
  "name": "oneWay",
17311
17234
  "static": 1,
@@ -17327,7 +17250,7 @@
17327
17250
  },
17328
17251
  {
17329
17252
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17330
- "line": 1063,
17253
+ "line": 735,
17331
17254
  "description": "This is a more semantically meaningful alias of the `oneWay` computed macro,\nwhose name is somewhat ambiguous as to which direction the data flows.",
17332
17255
  "itemtype": "method",
17333
17256
  "name": "reads",
@@ -17350,8 +17273,8 @@
17350
17273
  },
17351
17274
  {
17352
17275
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17353
- "line": 1076,
17354
- "description": "Where `oneWay` computed macro provides oneWay bindings, the `readOnly`\ncomputed macro provides a readOnly one way binding. Very often when using\nthe `oneWay` macro one does not also want changes to propagate back up, as\nthey will replace the value.\n\nThis prevents the reverse flow, and also throws an exception when it occurs.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { readOnly } from '@ember/object/computed';\n\nclass User {\n constructor(firstName, lastName) {\n set(this, 'firstName', firstName);\n set(this, 'lastName', lastName);\n }\n\n @readOnly('firstName') nickName;\n});\n\nlet teddy = new User('Teddy', 'Zeenny');\n\nteddy.nickName; // 'Teddy'\n\nset(teddy, 'nickName', 'TeddyBear'); // throws Exception\n// throw new EmberError('Cannot Set: nickName on: <User:ember27288>' );`\n\nteddy.firstName; // 'Teddy'\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { readOnly } from '@ember/object/computed';\n\nlet User = EmberObject.extend({\n firstName: null,\n lastName: null,\n\n nickName: readOnly('firstName')\n});\n\nlet teddy = User.create({\n firstName: 'Teddy',\n lastName: 'Zeenny'\n});\n\nteddy.nickName; // 'Teddy'\n\nset(teddy, 'nickName', 'TeddyBear'); // throws Exception\n// throw new EmberError('Cannot Set: nickName on: <User:ember27288>' );`\n\nteddy.firstName; // 'Teddy'\n```",
17276
+ "line": 748,
17277
+ "description": "Where `oneWay` computed macro provides oneWay bindings, the `readOnly`\ncomputed macro provides a readOnly one way binding. Very often when using\nthe `oneWay` macro one does not also want changes to propagate back up, as\nthey will replace the value.\n\nThis prevents the reverse flow, and also throws an exception when it occurs.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { readOnly } from '@ember/object/computed';\n\nclass User {\n constructor(firstName, lastName) {\n set(this, 'firstName', firstName);\n set(this, 'lastName', lastName);\n }\n\n @readOnly('firstName') nickName;\n});\n\nlet teddy = new User('Teddy', 'Zeenny');\n\nteddy.nickName; // 'Teddy'\n\nset(teddy, 'nickName', 'TeddyBear'); // throws Exception\n// throw new EmberError('Cannot Set: nickName on: <User:ember27288>' );`\n\nteddy.firstName; // 'Teddy'\n```",
17355
17278
  "itemtype": "method",
17356
17279
  "name": "readOnly",
17357
17280
  "static": 1,
@@ -17374,8 +17297,8 @@
17374
17297
  },
17375
17298
  {
17376
17299
  "file": "packages/@ember/object/lib/computed/computed_macros.js",
17377
- "line": 1153,
17378
- "description": "Creates a new property that is an alias for another property on an object.\nCalls to `get` or `set` this property behave as though they were called on the\noriginal property, but also print a deprecation warning.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { deprecatingAlias } from '@ember/object/computed';\n\nclass Hamster {\n @deprecatingAlias('cavendishCount', {\n id: 'hamster.deprecate-banana',\n until: '3.0.0'\n })\n bananaCount;\n}\n\nlet hamster = new Hamster();\n\nset(hamster, 'bananaCount', 5); // Prints a deprecation warning.\nhamster.cavendishCount; // 5\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { deprecatingAlias } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n bananaCount: deprecatingAlias('cavendishCount', {\n id: 'hamster.deprecate-banana',\n until: '3.0.0'\n })\n});\n\nlet hamster = Hamster.create();\n\nset(hamster, 'bananaCount', 5); // Prints a deprecation warning.\nhamster.cavendishCount; // 5\n```",
17300
+ "line": 799,
17301
+ "description": "Creates a new property that is an alias for another property on an object.\nCalls to `get` or `set` this property behave as though they were called on the\noriginal property, but also print a deprecation warning.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { deprecatingAlias } from '@ember/object/computed';\n\nclass Hamster {\n @deprecatingAlias('cavendishCount', {\n id: 'hamster.deprecate-banana',\n until: '3.0.0'\n })\n bananaCount;\n}\n\nlet hamster = new Hamster();\n\nset(hamster, 'bananaCount', 5); // Prints a deprecation warning.\nhamster.cavendishCount; // 5\n```",
17379
17302
  "itemtype": "method",
17380
17303
  "name": "deprecatingAlias",
17381
17304
  "static": 1,
@@ -17404,7 +17327,7 @@
17404
17327
  {
17405
17328
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17406
17329
  "line": 56,
17407
- "description": "A computed property that returns the sum of the values in the dependent array.\n\nExample:\n\n```javascript\nimport { sum } from '@ember/object/computed';\n\nclass Invoice {\n lineItems = [1.00, 2.50, 9.99];\n\n @sum('lineItems') total;\n}\n\nlet invoice = new Invoice();\n\ninvoice.total; // 13.49\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { sum } from '@ember/object/computed';\n\nlet Invoice = EmberObject.extend({\n lineItems: [1.00, 2.50, 9.99],\n\n total: sum('lineItems')\n})\n\nlet invoice = Invoice.create();\n\ninvoice.total; // 13.49\n```",
17330
+ "description": "A computed property that returns the sum of the values in the dependent array.\n\nExample:\n\n```javascript\nimport { sum } from '@ember/object/computed';\n\nclass Invoice {\n lineItems = [1.00, 2.50, 9.99];\n\n @sum('lineItems') total;\n}\n\nlet invoice = new Invoice();\n\ninvoice.total; // 13.49\n```",
17408
17331
  "itemtype": "method",
17409
17332
  "name": "sum",
17410
17333
  "static": 1,
@@ -17427,8 +17350,8 @@
17427
17350
  },
17428
17351
  {
17429
17352
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17430
- "line": 110,
17431
- "description": "A computed property that calculates the maximum value in the dependent array.\nThis will return `-Infinity` when the dependent array is empty.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { mapBy, max } from '@ember/object/computed';\n\nclass Person {\n children = [];\n\n @mapBy('children', 'age') childAges;\n @max('childAges') maxChildAge;\n}\n\nlet lordByron = new Person();\n\nlordByron.maxChildAge; // -Infinity\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.maxChildAge; // 7\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.maxChildAge; // 8\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { mapBy, max } from '@ember/object/computed';\n\nlet Person = EmberObject.extend({\n childAges: mapBy('children', 'age'),\n maxChildAge: max('childAges')\n});\n\nlet lordByron = Person.create({ children: [] });\n\nlordByron.maxChildAge; // -Infinity\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.maxChildAge; // 7\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.maxChildAge; // 8\n```\n\nIf the types of the arguments are not numbers, they will be converted to\nnumbers and the type of the return value will always be `Number`. For example,\nthe max of a list of Date objects will be the highest timestamp as a `Number`.\nThis behavior is consistent with `Math.max`.",
17353
+ "line": 93,
17354
+ "description": "A computed property that calculates the maximum value in the dependent array.\nThis will return `-Infinity` when the dependent array is empty.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { mapBy, max } from '@ember/object/computed';\n\nclass Person {\n children = [];\n\n @mapBy('children', 'age') childAges;\n @max('childAges') maxChildAge;\n}\n\nlet lordByron = new Person();\n\nlordByron.maxChildAge; // -Infinity\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.maxChildAge; // 7\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.maxChildAge; // 8\n```\n\nIf the types of the arguments are not numbers, they will be converted to\nnumbers and the type of the return value will always be `Number`. For example,\nthe max of a list of Date objects will be the highest timestamp as a `Number`.\nThis behavior is consistent with `Math.max`.",
17432
17355
  "itemtype": "method",
17433
17356
  "name": "max",
17434
17357
  "static": 1,
@@ -17450,8 +17373,8 @@
17450
17373
  },
17451
17374
  {
17452
17375
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17453
- "line": 210,
17454
- "description": "A computed property that calculates the minimum value in the dependent array.\nThis will return `Infinity` when the dependent array is empty.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { mapBy, min } from '@ember/object/computed';\n\nclass Person {\n children = [];\n\n @mapBy('children', 'age') childAges;\n @min('childAges') minChildAge;\n}\n\nlet lordByron = Person.create({ children: [] });\n\nlordByron.minChildAge; // Infinity\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.minChildAge; // 7\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.minChildAge; // 5\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { mapBy, min } from '@ember/object/computed';\n\nlet Person = EmberObject.extend({\n childAges: mapBy('children', 'age'),\n minChildAge: min('childAges')\n});\n\nlet lordByron = Person.create({ children: [] });\n\nlordByron.minChildAge; // Infinity\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.minChildAge; // 7\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.minChildAge; // 5\n```\n\nIf the types of the arguments are not numbers, they will be converted to\nnumbers and the type of the return value will always be `Number`. For example,\nthe min of a list of Date objects will be the lowest timestamp as a `Number`.\nThis behavior is consistent with `Math.min`.",
17376
+ "line": 157,
17377
+ "description": "A computed property that calculates the minimum value in the dependent array.\nThis will return `Infinity` when the dependent array is empty.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { mapBy, min } from '@ember/object/computed';\n\nclass Person {\n children = [];\n\n @mapBy('children', 'age') childAges;\n @min('childAges') minChildAge;\n}\n\nlet lordByron = Person.create({ children: [] });\n\nlordByron.minChildAge; // Infinity\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.minChildAge; // 7\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.minChildAge; // 5\n```\n\nIf the types of the arguments are not numbers, they will be converted to\nnumbers and the type of the return value will always be `Number`. For example,\nthe min of a list of Date objects will be the lowest timestamp as a `Number`.\nThis behavior is consistent with `Math.min`.",
17455
17378
  "itemtype": "method",
17456
17379
  "name": "min",
17457
17380
  "static": 1,
@@ -17473,8 +17396,8 @@
17473
17396
  },
17474
17397
  {
17475
17398
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17476
- "line": 309,
17477
- "description": "Returns an array mapped via the callback\n\nThe callback method you provide should have the following signature:\n- `item` is the current item in the iteration.\n- `index` is the integer index of the current item in the iteration.\n\n```javascript\nfunction mapCallback(item, index);\n```\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { map } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @map('chores', function(chore, index) {\n return `${chore.toUpperCase()}!`;\n })\n excitingChores;\n});\n\nlet hamster = new Hamster(['clean', 'write more unit tests']);\n\nhamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { map } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n excitingChores: map('chores', function(chore, index) {\n return `${chore.toUpperCase()}!`;\n })\n});\n\nlet hamster = Hamster.create({\n chores: ['clean', 'write more unit tests']\n});\n\nhamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n```\n\nYou can optionally pass an array of additional dependent keys as the second\nparameter to the macro, if your map function relies on any external values:\n\n```javascript\nimport { set } from '@ember/object';\nimport { map } from '@ember/object/computed';\n\nclass Hamster {\n shouldUpperCase = false;\n\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @map('chores', ['shouldUpperCase'], function(chore, index) {\n if (this.shouldUpperCase) {\n return `${chore.toUpperCase()}!`;\n } else {\n return `${chore}!`;\n }\n })\n excitingChores;\n}\n\nlet hamster = new Hamster(['clean', 'write more unit tests']);\n\nhamster.excitingChores; // ['clean!', 'write more unit tests!']\n\nset(hamster, 'shouldUpperCase', true);\nhamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n```",
17399
+ "line": 220,
17400
+ "description": "Returns an array mapped via the callback\n\nThe callback method you provide should have the following signature:\n- `item` is the current item in the iteration.\n- `index` is the integer index of the current item in the iteration.\n\n```javascript\nfunction mapCallback(item, index);\n```\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { map } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @map('chores', function(chore, index) {\n return `${chore.toUpperCase()}!`;\n })\n excitingChores;\n});\n\nlet hamster = new Hamster(['clean', 'write more unit tests']);\n\nhamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n```\n\nYou can optionally pass an array of additional dependent keys as the second\nparameter to the macro, if your map function relies on any external values:\n\n```javascript\nimport { set } from '@ember/object';\nimport { map } from '@ember/object/computed';\n\nclass Hamster {\n shouldUpperCase = false;\n\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @map('chores', ['shouldUpperCase'], function(chore, index) {\n if (this.shouldUpperCase) {\n return `${chore.toUpperCase()}!`;\n } else {\n return `${chore}!`;\n }\n })\n excitingChores;\n}\n\nlet hamster = new Hamster(['clean', 'write more unit tests']);\n\nhamster.excitingChores; // ['clean!', 'write more unit tests!']\n\nset(hamster, 'shouldUpperCase', true);\nhamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']\n```",
17478
17401
  "itemtype": "method",
17479
17402
  "name": "map",
17480
17403
  "static": 1,
@@ -17507,8 +17430,8 @@
17507
17430
  },
17508
17431
  {
17509
17432
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17510
- "line": 429,
17511
- "description": "Returns an array mapped to the specified key.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { mapBy } from '@ember/object/computed';\n\nclass Person {\n children = [];\n\n @mapBy('children', 'age') childAges;\n}\n\nlet lordByron = new Person();\n\nlordByron.childAges; // []\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.childAges; // [7]\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.childAges; // [7, 5, 8]\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { mapBy } from '@ember/object/computed';\n\nlet Person = EmberObject.extend({\n childAges: mapBy('children', 'age')\n});\n\nlet lordByron = Person.create({ children: [] });\n\nlordByron.childAges; // []\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.childAges; // [7]\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.childAges; // [7, 5, 8]\n```",
17433
+ "line": 321,
17434
+ "description": "Returns an array mapped to the specified key.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { mapBy } from '@ember/object/computed';\n\nclass Person {\n children = [];\n\n @mapBy('children', 'age') childAges;\n}\n\nlet lordByron = new Person();\n\nlordByron.childAges; // []\n\nset(lordByron, 'children', [\n {\n name: 'Augusta Ada Byron',\n age: 7\n }\n]);\nlordByron.childAges; // [7]\n\nset(lordByron, 'children', [\n ...lordByron.children,\n {\n name: 'Allegra Byron',\n age: 5\n }, {\n name: 'Elizabeth Medora Leigh',\n age: 8\n }\n]);\nlordByron.childAges; // [7, 5, 8]\n```",
17512
17435
  "itemtype": "method",
17513
17436
  "name": "mapBy",
17514
17437
  "static": 1,
@@ -17535,8 +17458,8 @@
17535
17458
  },
17536
17459
  {
17537
17460
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17538
- "line": 531,
17539
- "description": "Filters the array by the callback.\n\nThe callback method you provide should have the following signature:\n- `item` is the current item in the iteration.\n- `index` is the integer index of the current item in the iteration.\n- `array` is the dependant array itself.\n\n```javascript\nfunction filterCallback(item, index, array);\n```\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { filter } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @filter('chores', function(chore, index, array) {\n return !chore.done;\n })\n remainingChores;\n}\n\nlet hamster = Hamster.create([\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n]);\n\nhamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { filter } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n remainingChores: filter('chores', function(chore, index, array) {\n return !chore.done;\n })\n});\n\nlet hamster = Hamster.create({\n chores: [\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n ]\n});\n\nhamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n```\n\nYou can also use `@each.property` in your dependent key, the callback will\nstill use the underlying array:\n\n```javascript\nimport { set } from '@ember/object';\nimport { filter } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @filter('chores.@each.done', function(chore, index, array) {\n return !chore.done;\n })\n remainingChores;\n}\n\nlet hamster = new Hamster([\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n]);\nhamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n\nset(hamster.chores[2], 'done', true);\nhamster.remainingChores; // []\n```\n\nFinally, you can optionally pass an array of additional dependent keys as the\nsecond parameter to the macro, if your filter function relies on any external\nvalues:\n\n```javascript\nimport { filter } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n doneKey = 'finished';\n\n @filter('chores', ['doneKey'], function(chore, index, array) {\n return !chore[this.doneKey];\n })\n remainingChores;\n}\n\nlet hamster = new Hamster([\n { name: 'cook', finished: true },\n { name: 'clean', finished: true },\n { name: 'write more unit tests', finished: false }\n]);\n\nhamster.remainingChores; // [{name: 'write more unit tests', finished: false}]\n```",
17461
+ "line": 388,
17462
+ "description": "Filters the array by the callback.\n\nThe callback method you provide should have the following signature:\n- `item` is the current item in the iteration.\n- `index` is the integer index of the current item in the iteration.\n- `array` is the dependant array itself.\n\n```javascript\nfunction filterCallback(item, index, array);\n```\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { filter } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @filter('chores', function(chore, index, array) {\n return !chore.done;\n })\n remainingChores;\n}\n\nlet hamster = Hamster.create([\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n]);\n\nhamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n```\n\nYou can also use `@each.property` in your dependent key, the callback will\nstill use the underlying array:\n\n```javascript\nimport { set } from '@ember/object';\nimport { filter } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @filter('chores.@each.done', function(chore, index, array) {\n return !chore.done;\n })\n remainingChores;\n}\n\nlet hamster = new Hamster([\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n]);\nhamster.remainingChores; // [{name: 'write more unit tests', done: false}]\n\nset(hamster.chores[2], 'done', true);\nhamster.remainingChores; // []\n```\n\nFinally, you can optionally pass an array of additional dependent keys as the\nsecond parameter to the macro, if your filter function relies on any external\nvalues:\n\n```javascript\nimport { filter } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n doneKey = 'finished';\n\n @filter('chores', ['doneKey'], function(chore, index, array) {\n return !chore[this.doneKey];\n })\n remainingChores;\n}\n\nlet hamster = new Hamster([\n { name: 'cook', finished: true },\n { name: 'clean', finished: true },\n { name: 'write more unit tests', finished: false }\n]);\n\nhamster.remainingChores; // [{name: 'write more unit tests', finished: false}]\n```",
17540
17463
  "itemtype": "method",
17541
17464
  "name": "filter",
17542
17465
  "static": 1,
@@ -17569,8 +17492,8 @@
17569
17492
  },
17570
17493
  {
17571
17494
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17572
- "line": 685,
17573
- "description": "Filters the array by the property and value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { filterBy } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @filterBy('chores', 'done', false) remainingChores;\n}\n\nlet hamster = new Hamster([\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n]);\n\nhamster.remainingChores; // [{ name: 'write more unit tests', done: false }]\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { filterBy } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n remainingChores: filterBy('chores', 'done', false)\n});\n\nlet hamster = Hamster.create({\n chores: [\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n ]\n});\n\nhamster.remainingChores; // [{ name: 'write more unit tests', done: false }]\n```",
17495
+ "line": 519,
17496
+ "description": "Filters the array by the property and value.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { filterBy } from '@ember/object/computed';\n\nclass Hamster {\n constructor(chores) {\n set(this, 'chores', chores);\n }\n\n @filterBy('chores', 'done', false) remainingChores;\n}\n\nlet hamster = new Hamster([\n { name: 'cook', done: true },\n { name: 'clean', done: true },\n { name: 'write more unit tests', done: false }\n]);\n\nhamster.remainingChores; // [{ name: 'write more unit tests', done: false }]\n```",
17574
17497
  "itemtype": "method",
17575
17498
  "name": "filterBy",
17576
17499
  "static": 1,
@@ -17602,8 +17525,8 @@
17602
17525
  },
17603
17526
  {
17604
17527
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17605
- "line": 762,
17606
- "description": "A computed property which returns a new array with all the unique elements\nfrom one or more dependent arrays.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { uniq } from '@ember/object/computed';\n\nclass Hamster {\n constructor(fruits) {\n set(this, 'fruits', fruits);\n }\n\n @uniq('fruits') uniqueFruits;\n}\n\nlet hamster = new Hamster([\n 'banana',\n 'grape',\n 'kale',\n 'banana'\n]);\n\nhamster.uniqueFruits; // ['banana', 'grape', 'kale']\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { uniq } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n uniqueFruits: uniq('fruits')\n});\n\nlet hamster = Hamster.create({\n fruits: [\n 'banana',\n 'grape',\n 'kale',\n 'banana'\n ]\n});\n\nhamster.uniqueFruits; // ['banana', 'grape', 'kale']\n```",
17528
+ "line": 575,
17529
+ "description": "A computed property which returns a new array with all the unique elements\nfrom one or more dependent arrays.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { uniq } from '@ember/object/computed';\n\nclass Hamster {\n constructor(fruits) {\n set(this, 'fruits', fruits);\n }\n\n @uniq('fruits') uniqueFruits;\n}\n\nlet hamster = new Hamster([\n 'banana',\n 'grape',\n 'kale',\n 'banana'\n]);\n\nhamster.uniqueFruits; // ['banana', 'grape', 'kale']\n```",
17607
17530
  "itemtype": "method",
17608
17531
  "name": "uniq",
17609
17532
  "static": 1,
@@ -17626,8 +17549,8 @@
17626
17549
  },
17627
17550
  {
17628
17551
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17629
- "line": 850,
17630
- "description": "A computed property which returns a new array with all the unique elements\nfrom an array, with uniqueness determined by specific key.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { uniqBy } from '@ember/object/computed';\n\nclass Hamster {\n constructor(fruits) {\n set(this, 'fruits', fruits);\n }\n\n @uniqBy('fruits', 'id') uniqueFruits;\n}\n\nlet hamster = new Hamster([\n { id: 1, 'banana' },\n { id: 2, 'grape' },\n { id: 3, 'peach' },\n { id: 1, 'banana' }\n]);\n\nhamster.uniqueFruits; // [ { id: 1, 'banana' }, { id: 2, 'grape' }, { id: 3, 'peach' }]\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { uniqBy } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n uniqueFruits: uniqBy('fruits', 'id')\n});\n\nlet hamster = Hamster.create({\n fruits: [\n { id: 1, 'banana' },\n { id: 2, 'grape' },\n { id: 3, 'peach' },\n { id: 1, 'banana' }\n ]\n});\n\nhamster.uniqueFruits; // [ { id: 1, 'banana' }, { id: 2, 'grape' }, { id: 3, 'peach' }]\n```",
17552
+ "line": 641,
17553
+ "description": "A computed property which returns a new array with all the unique elements\nfrom an array, with uniqueness determined by specific key.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { uniqBy } from '@ember/object/computed';\n\nclass Hamster {\n constructor(fruits) {\n set(this, 'fruits', fruits);\n }\n\n @uniqBy('fruits', 'id') uniqueFruits;\n}\n\nlet hamster = new Hamster([\n { id: 1, 'banana' },\n { id: 2, 'grape' },\n { id: 3, 'peach' },\n { id: 1, 'banana' }\n]);\n\nhamster.uniqueFruits; // [ { id: 1, 'banana' }, { id: 2, 'grape' }, { id: 3, 'peach' }]\n```",
17631
17554
  "itemtype": "method",
17632
17555
  "name": "uniqBy",
17633
17556
  "static": 1,
@@ -17654,8 +17577,8 @@
17654
17577
  },
17655
17578
  {
17656
17579
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17657
- "line": 926,
17658
- "description": "A computed property which returns a new array with all the unique elements\nfrom one or more dependent arrays.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { union } from '@ember/object/computed';\n\nclass Hamster {\n constructor(fruits, vegetables) {\n set(this, 'fruits', fruits);\n set(this, 'vegetables', vegetables);\n }\n\n @union('fruits', 'vegetables') uniqueFruits;\n});\n\nlet hamster = new, Hamster(\n [\n 'banana',\n 'grape',\n 'kale',\n 'banana',\n 'tomato'\n ],\n [\n 'tomato',\n 'carrot',\n 'lettuce'\n ]\n);\n\nhamster.uniqueFruits; // ['banana', 'grape', 'kale', 'tomato', 'carrot', 'lettuce']\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { union } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n uniqueFruits: union('fruits', 'vegetables')\n});\n\nlet hamster = Hamster.create({\n fruits: [\n 'banana',\n 'grape',\n 'kale',\n 'banana',\n 'tomato'\n ],\n vegetables: [\n 'tomato',\n 'carrot',\n 'lettuce'\n ]\n});\n\nhamster.uniqueFruits; // ['banana', 'grape', 'kale', 'tomato', 'carrot', 'lettuce']\n```",
17580
+ "line": 695,
17581
+ "description": "A computed property which returns a new array with all the unique elements\nfrom one or more dependent arrays.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { union } from '@ember/object/computed';\n\nclass Hamster {\n constructor(fruits, vegetables) {\n set(this, 'fruits', fruits);\n set(this, 'vegetables', vegetables);\n }\n\n @union('fruits', 'vegetables') uniqueFruits;\n});\n\nlet hamster = new, Hamster(\n [\n 'banana',\n 'grape',\n 'kale',\n 'banana',\n 'tomato'\n ],\n [\n 'tomato',\n 'carrot',\n 'lettuce'\n ]\n);\n\nhamster.uniqueFruits; // ['banana', 'grape', 'kale', 'tomato', 'carrot', 'lettuce']\n```",
17659
17582
  "itemtype": "method",
17660
17583
  "name": "union",
17661
17584
  "static": 1,
@@ -17678,8 +17601,8 @@
17678
17601
  },
17679
17602
  {
17680
17603
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17681
- "line": 1001,
17682
- "description": "A computed property which returns a new array with all the elements\ntwo or more dependent arrays have in common.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { intersect } from '@ember/object/computed';\n\nclass FriendGroups {\n constructor(adaFriends, charlesFriends) {\n set(this, 'adaFriends', adaFriends);\n set(this, 'charlesFriends', charlesFriends);\n }\n\n @intersect('adaFriends', 'charlesFriends') friendsInCommon;\n}\n\nlet groups = new FriendGroups(\n ['Charles Babbage', 'John Hobhouse', 'William King', 'Mary Somerville'],\n ['William King', 'Mary Somerville', 'Ada Lovelace', 'George Peacock']\n);\n\ngroups.friendsInCommon; // ['William King', 'Mary Somerville']\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { intersect } from '@ember/object/computed';\n\nlet FriendGroups = EmberObject.extend({\n friendsInCommon: intersect('adaFriends', 'charlesFriends')\n});\n\nlet groups = FriendGroups.create({\n adaFriends: ['Charles Babbage', 'John Hobhouse', 'William King', 'Mary Somerville'],\n charlesFriends: ['William King', 'Mary Somerville', 'Ada Lovelace', 'George Peacock']\n});\n\ngroups.friendsInCommon; // ['William King', 'Mary Somerville']\n```",
17604
+ "line": 742,
17605
+ "description": "A computed property which returns a new array with all the elements\ntwo or more dependent arrays have in common.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { intersect } from '@ember/object/computed';\n\nclass FriendGroups {\n constructor(adaFriends, charlesFriends) {\n set(this, 'adaFriends', adaFriends);\n set(this, 'charlesFriends', charlesFriends);\n }\n\n @intersect('adaFriends', 'charlesFriends') friendsInCommon;\n}\n\nlet groups = new FriendGroups(\n ['Charles Babbage', 'John Hobhouse', 'William King', 'Mary Somerville'],\n ['William King', 'Mary Somerville', 'Ada Lovelace', 'George Peacock']\n);\n\ngroups.friendsInCommon; // ['William King', 'Mary Somerville']\n```",
17683
17606
  "itemtype": "method",
17684
17607
  "name": "intersect",
17685
17608
  "static": 1,
@@ -17702,8 +17625,8 @@
17702
17625
  },
17703
17626
  {
17704
17627
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17705
- "line": 1093,
17706
- "description": "A computed property which returns a new array with all the properties from the\nfirst dependent array that are not in the second dependent array.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { setDiff } from '@ember/object/computed';\n\nclass Hamster {\n constructor(likes, fruits) {\n set(this, 'likes', likes);\n set(this, 'fruits', fruits);\n }\n\n @setDiff('likes', 'fruits') wants;\n}\n\nlet hamster = new Hamster(\n [\n 'banana',\n 'grape',\n 'kale'\n ],\n [\n 'grape',\n 'kale',\n ]\n);\n\nhamster.wants; // ['banana']\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { setDiff } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n wants: setDiff('likes', 'fruits')\n});\n\nlet hamster = Hamster.create({\n likes: [\n 'banana',\n 'grape',\n 'kale'\n ],\n fruits: [\n 'grape',\n 'kale',\n ]\n});\n\nhamster.wants; // ['banana']\n```",
17628
+ "line": 816,
17629
+ "description": "A computed property which returns a new array with all the properties from the\nfirst dependent array that are not in the second dependent array.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { setDiff } from '@ember/object/computed';\n\nclass Hamster {\n constructor(likes, fruits) {\n set(this, 'likes', likes);\n set(this, 'fruits', fruits);\n }\n\n @setDiff('likes', 'fruits') wants;\n}\n\nlet hamster = new Hamster(\n [\n 'banana',\n 'grape',\n 'kale'\n ],\n [\n 'grape',\n 'kale',\n ]\n);\n\nhamster.wants; // ['banana']\n```",
17707
17630
  "itemtype": "method",
17708
17631
  "name": "setDiff",
17709
17632
  "static": 1,
@@ -17730,8 +17653,8 @@
17730
17653
  },
17731
17654
  {
17732
17655
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17733
- "line": 1188,
17734
- "description": "A computed property that returns the array of values for the provided\ndependent properties.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { collect } from '@ember/object/computed';\n\nclass Hamster {\n @collect('hat', 'shirt') clothes;\n}\n\nlet hamster = new Hamster();\n\nhamster.clothes; // [null, null]\n\nset(hamster, 'hat', 'Camp Hat');\nset(hamster, 'shirt', 'Camp Shirt');\nhamster.clothes; // ['Camp Hat', 'Camp Shirt']\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject, { set } from '@ember/object';\nimport { collect } from '@ember/object/computed';\n\nlet Hamster = EmberObject.extend({\n clothes: collect('hat', 'shirt')\n});\n\nlet hamster = Hamster.create();\n\nhamster.clothes; // [null, null]\n\nset(hamster, 'hat', 'Camp Hat');\nset(hamster, 'shirt', 'Camp Shirt');\nhamster.clothes; // ['Camp Hat', 'Camp Shirt']\n```",
17656
+ "line": 886,
17657
+ "description": "A computed property that returns the array of values for the provided\ndependent properties.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { collect } from '@ember/object/computed';\n\nclass Hamster {\n @collect('hat', 'shirt') clothes;\n}\n\nlet hamster = new Hamster();\n\nhamster.clothes; // [null, null]\n\nset(hamster, 'hat', 'Camp Hat');\nset(hamster, 'shirt', 'Camp Shirt');\nhamster.clothes; // ['Camp Hat', 'Camp Shirt']\n```",
17735
17658
  "itemtype": "method",
17736
17659
  "name": "collect",
17737
17660
  "static": 1,
@@ -17754,8 +17677,8 @@
17754
17677
  },
17755
17678
  {
17756
17679
  "file": "packages/@ember/object/lib/computed/reduce_computed_macros.js",
17757
- "line": 1258,
17758
- "description": "A computed property which returns a new array with all the properties from the\nfirst dependent array sorted based on a property or sort function. The sort\nmacro can be used in two different ways:\n\n1. By providing a sort callback function\n2. By providing an array of keys to sort the array\n\nIn the first form, the callback method you provide should have the following\nsignature:\n\n```javascript\nfunction sortCallback(itemA, itemB);\n```\n\n- `itemA` the first item to compare.\n- `itemB` the second item to compare.\n\nThis function should return negative number (e.g. `-1`) when `itemA` should\ncome before `itemB`. It should return positive number (e.g. `1`) when `itemA`\nshould come after `itemB`. If the `itemA` and `itemB` are equal this function\nshould return `0`.\n\nTherefore, if this function is comparing some numeric values, simple `itemA -\nitemB` or `itemA.get( 'foo' ) - itemB.get( 'foo' )` can be used instead of\nseries of `if`.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nclass ToDoList {\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n // using a custom sort function\n @sort('todos', function(a, b){\n if (a.priority > b.priority) {\n return 1;\n } else if (a.priority < b.priority) {\n return -1;\n }\n\n return 0;\n })\n priorityTodos;\n}\n\nlet todoList = new ToDoList([\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n]);\n\ntodoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n```\n\nClassic Class Example:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nlet ToDoList = EmberObject.extend({\n // using a custom sort function\n priorityTodos: sort('todos', function(a, b){\n if (a.priority > b.priority) {\n return 1;\n } else if (a.priority < b.priority) {\n return -1;\n }\n\n return 0;\n })\n});\n\nlet todoList = ToDoList.create({\n todos: [\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n ]\n});\n\ntodoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n```\n\nYou can also optionally pass an array of additional dependent keys as the\nsecond parameter, if your sort function is dependent on additional values that\ncould changes:\n\n```js\nimport EmberObject, { set } from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nclass ToDoList {\n sortKey = 'priority';\n\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n // using a custom sort function\n @sort('todos', ['sortKey'], function(a, b){\n if (a[this.sortKey] > b[this.sortKey]) {\n return 1;\n } else if (a[this.sortKey] < b[this.sortKey]) {\n return -1;\n }\n\n return 0;\n })\n sortedTodos;\n});\n\nlet todoList = new ToDoList([\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n]);\n\ntodoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n```\n\nIn the second form, you should provide the key of the array of sort values as\nthe second parameter:\n\n```javascript\nimport { set } from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nclass ToDoList {\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n // using standard ascending sort\n todosSorting = ['name'];\n @sort('todos', 'todosSorting') sortedTodos;\n\n // using descending sort\n todosSortingDesc = ['name:desc'];\n @sort('todos', 'todosSortingDesc') sortedTodosDesc;\n}\n\nlet todoList = new ToDoList([\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n]);\n\ntodoList.sortedTodos; // [{ name:'Documentation', priority:3 }, { name:'Release', priority:1 }, { name:'Unit Test', priority:2 }]\ntodoList.sortedTodosDesc; // [{ name:'Unit Test', priority:2 }, { name:'Release', priority:1 }, { name:'Documentation', priority:3 }]\n```",
17680
+ "line": 937,
17681
+ "description": "A computed property which returns a new array with all the properties from the\nfirst dependent array sorted based on a property or sort function. The sort\nmacro can be used in two different ways:\n\n1. By providing a sort callback function\n2. By providing an array of keys to sort the array\n\nIn the first form, the callback method you provide should have the following\nsignature:\n\n```javascript\nfunction sortCallback(itemA, itemB);\n```\n\n- `itemA` the first item to compare.\n- `itemB` the second item to compare.\n\nThis function should return negative number (e.g. `-1`) when `itemA` should\ncome before `itemB`. It should return positive number (e.g. `1`) when `itemA`\nshould come after `itemB`. If the `itemA` and `itemB` are equal this function\nshould return `0`.\n\nTherefore, if this function is comparing some numeric values, simple `itemA -\nitemB` or `itemA.get( 'foo' ) - itemB.get( 'foo' )` can be used instead of\nseries of `if`.\n\nExample:\n\n```javascript\nimport { set } from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nclass ToDoList {\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n // using a custom sort function\n @sort('todos', function(a, b){\n if (a.priority > b.priority) {\n return 1;\n } else if (a.priority < b.priority) {\n return -1;\n }\n\n return 0;\n })\n priorityTodos;\n}\n\nlet todoList = new ToDoList([\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n]);\n\ntodoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n```\n\nYou can also optionally pass an array of additional dependent keys as the\nsecond parameter, if your sort function is dependent on additional values that\ncould changes:\n\n```js\nimport EmberObject, { set } from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nclass ToDoList {\n sortKey = 'priority';\n\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n // using a custom sort function\n @sort('todos', ['sortKey'], function(a, b){\n if (a[this.sortKey] > b[this.sortKey]) {\n return 1;\n } else if (a[this.sortKey] < b[this.sortKey]) {\n return -1;\n }\n\n return 0;\n })\n sortedTodos;\n});\n\nlet todoList = new ToDoList([\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n]);\n\ntodoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]\n```\n\nIn the second form, you should provide the key of the array of sort values as\nthe second parameter:\n\n```javascript\nimport { set } from '@ember/object';\nimport { sort } from '@ember/object/computed';\n\nclass ToDoList {\n constructor(todos) {\n set(this, 'todos', todos);\n }\n\n // using standard ascending sort\n todosSorting = ['name'];\n @sort('todos', 'todosSorting') sortedTodos;\n\n // using descending sort\n todosSortingDesc = ['name:desc'];\n @sort('todos', 'todosSortingDesc') sortedTodosDesc;\n}\n\nlet todoList = new ToDoList([\n { name: 'Unit Test', priority: 2 },\n { name: 'Documentation', priority: 3 },\n { name: 'Release', priority: 1 }\n]);\n\ntodoList.sortedTodos; // [{ name:'Documentation', priority:3 }, { name:'Release', priority:1 }, { name:'Unit Test', priority:2 }]\ntodoList.sortedTodosDesc; // [{ name:'Unit Test', priority:2 }, { name:'Release', priority:1 }, { name:'Documentation', priority:3 }]\n```",
17759
17682
  "itemtype": "method",
17760
17683
  "name": "sort",
17761
17684
  "static": 1,
@@ -18318,7 +18241,6 @@
18318
18241
  {
18319
18242
  "file": "packages/@ember/service/index.js",
18320
18243
  "line": 9,
18321
- "description": "Creates a property that lazily looks up a service in the container. There are\nno restrictions as to what objects a service can be injected into.\n\nExample:\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default class ApplicationRoute extends Route {\n @service('auth') authManager;\n\n model() {\n return this.authManager.findCurrentUser();\n }\n}\n```\n\nClassic Class Example:\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend({\n authManager: service('auth'),\n\n model() {\n return this.get('authManager').findCurrentUser();\n }\n});\n```\n\nThis example will create an `authManager` property on the application route\nthat looks up the `auth` service in the container, making it easily accessible\nin the `model` hook.",
18322
18244
  "itemtype": "method",
18323
18245
  "name": "inject",
18324
18246
  "static": 1,
@@ -18339,6 +18261,30 @@
18339
18261
  "class": "@ember/service",
18340
18262
  "module": "@ember/service"
18341
18263
  },
18264
+ {
18265
+ "file": "packages/@ember/service/index.js",
18266
+ "line": 23,
18267
+ "description": "Creates a property that lazily looks up a service in the container. There are\nno restrictions as to what objects a service can be injected into.\n\nExample:\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class ApplicationRoute extends Route {\n @service('auth') authManager;\n\n model() {\n return this.authManager.findCurrentUser();\n }\n}\n```\n\nClassic Class Example:\n\n```app/routes/application.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default Route.extend({\n authManager: service('auth'),\n\n model() {\n return this.get('authManager').findCurrentUser();\n }\n});\n```\n\nThis example will create an `authManager` property on the application route\nthat looks up the `auth` service in the container, making it easily accessible\nin the `model` hook.",
18268
+ "itemtype": "method",
18269
+ "name": "service",
18270
+ "static": 1,
18271
+ "since": "4.1.0",
18272
+ "params": [
18273
+ {
18274
+ "name": "name",
18275
+ "description": "(optional) name of the service to inject, defaults to\n the property's name",
18276
+ "type": "String"
18277
+ }
18278
+ ],
18279
+ "return": {
18280
+ "description": "injection decorator instance",
18281
+ "type": "ComputedDecorator"
18282
+ },
18283
+ "access": "public",
18284
+ "tagname": "",
18285
+ "class": "@ember/service",
18286
+ "module": "@ember/service"
18287
+ },
18342
18288
  {
18343
18289
  "file": "packages/@ember/string/index.ts",
18344
18290
  "line": 80,
@@ -18992,6 +18938,10 @@
18992
18938
  "message": "replacing incorrect tag: returns with return",
18993
18939
  "line": " packages/@ember/-internals/container/lib/container.ts:191"
18994
18940
  },
18941
+ {
18942
+ "message": "unknown tag: decorator",
18943
+ "line": " packages/@ember/-internals/metal/lib/cached.ts:8"
18944
+ },
18995
18945
  {
18996
18946
  "message": "unknown tag: decorator",
18997
18947
  "line": " packages/@ember/-internals/metal/lib/tracked.ts:16"
@@ -19006,7 +18956,7 @@
19006
18956
  },
19007
18957
  {
19008
18958
  "message": "replacing incorrect tag: returns with return",
19009
- "line": " packages/@ember/-internals/routing/lib/system/route.ts:2320"
18959
+ "line": " packages/@ember/-internals/routing/lib/system/route.ts:2321"
19010
18960
  },
19011
18961
  {
19012
18962
  "message": "replacing incorrect tag: function with method",
@@ -19028,6 +18978,10 @@
19028
18978
  "message": "replacing incorrect tag: returns with return",
19029
18979
  "line": " packages/@ember/helper/index.ts:251"
19030
18980
  },
18981
+ {
18982
+ "message": "Missing item type\nThis is deprecated in favor of explicit injection of dependencies.\n\nReference: https://deprecations.emberjs.com/v3.x#toc_implicit-injections\n```\n\n@private\n@method injection\n@param {String} factoryName\n@param {String} property\n@param {String} injectionName\n@deprecated",
18983
+ "line": " packages/@ember/-internals/container/lib/registry.ts:449"
18984
+ },
19031
18985
  {
19032
18986
  "message": "Missing item type\nThe `change` and `input` actions need to be overridden in the `Input`\nsubclass. Unfortunately, some ember-source builds currently uses babel\nloose mode to transpile its classes. Having the `@action` decorator on the\nsuper class creates a getter on the prototype, and when the subclass\noverrides the method, the loose mode transpilation would emit something\nlike `Subclass.prototype['change'] = function change() { ... }`, which\nfails because `prototype['change']` is getter-only/readonly. The correct\nsolution is to use `Object.defineProperty(prototype, 'change', ...)` but\nthat requires disabling loose mode. For now, the workaround is to add the\ndecorator only on the subclass. This is more of a configuration issue on\nour own builds and doesn't really affect apps.",
19033
18987
  "line": " packages/@ember/-internals/glimmer/lib/components/abstract-input.ts:149"
@@ -19090,16 +19044,20 @@
19090
19044
  },
19091
19045
  {
19092
19046
  "message": "Missing item type",
19093
- "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:101"
19047
+ "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:102"
19094
19048
  },
19095
19049
  {
19096
19050
  "message": "Missing item type",
19097
- "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:109"
19051
+ "line": " packages/@ember/-internals/glimmer/lib/views/outlet.ts:110"
19098
19052
  },
19099
19053
  {
19100
19054
  "message": "Missing item type\nFlattening is based on a global revision counter. If the revision has\nbumped it means that somewhere in a class inheritance chain something has\nchanged, so we need to reflatten everything. This can only happen if:\n\n1. A meta has been flattened (listener has been called)\n2. The meta is a prototype meta with children who have inherited its\n listeners\n3. A new listener is subsequently added to the meta (e.g. via `.reopen()`)\n\nThis is a very rare occurrence, so while the counter is global it shouldn't\nbe updated very often in practice.",
19101
19055
  "line": " packages/@ember/-internals/meta/lib/meta.ts:435"
19102
19056
  },
19057
+ {
19058
+ "message": "Missing item type",
19059
+ "line": " packages/@ember/-internals/metal/lib/cached.ts:8"
19060
+ },
19103
19061
  {
19104
19062
  "message": "Missing item type\nPrimarily used for cases where we are redefining a class, e.g. mixins/reopen\nbeing applied later. Revalidates all the observers, resetting their tags.",
19105
19063
  "line": " packages/@ember/-internals/metal/lib/observer.ts:154"
@@ -19138,15 +19096,15 @@
19138
19096
  },
19139
19097
  {
19140
19098
  "message": "Missing item type\nFinds the name of the substate route if it exists for the given route. A\nsubstate route is of the form `route_state`, such as `foo_loading`.",
19141
- "line": " packages/@ember/-internals/routing/lib/system/router.ts:1581"
19099
+ "line": " packages/@ember/-internals/routing/lib/system/router.ts:1584"
19142
19100
  },
19143
19101
  {
19144
19102
  "message": "Missing item type\nFinds the name of the state route if it exists for the given route. A state\nroute is of the form `route.state`, such as `foo.loading`. Properly Handles\n`application` named routes.",
19145
- "line": " packages/@ember/-internals/routing/lib/system/router.ts:1600"
19103
+ "line": " packages/@ember/-internals/routing/lib/system/router.ts:1603"
19146
19104
  },
19147
19105
  {
19148
19106
  "message": "Missing item type\nDetermines whether or not a route has been defined by checking that the route\nis in the Router's map and the owner has a registration for that route.",
19149
- "line": " packages/@ember/-internals/routing/lib/system/router.ts:1620"
19107
+ "line": " packages/@ember/-internals/routing/lib/system/router.ts:1623"
19150
19108
  },
19151
19109
  {
19152
19110
  "message": "Missing item type",
@@ -19298,39 +19256,39 @@
19298
19256
  },
19299
19257
  {
19300
19258
  "message": "Missing item type\nUnfortunately, a lot of existing code assumes the booting process is\n\"synchronous\". Specifically, a lot of tests assumes the last call to\n`app.advanceReadiness()` or `app.reset()` will result in the app being\nfully-booted when the current runloop completes.\n\nWe would like new code (like the `visit` API) to stop making this assumption,\nso we created the asynchronous version above that returns a promise. But until\nwe have migrated all the code, we would have to expose this method for use\n*internally* in places where we need to boot an app \"synchronously\".",
19301
- "line": " packages/@ember/application/lib/application.js:674"
19259
+ "line": " packages/@ember/application/lib/application.js:665"
19302
19260
  },
19303
19261
  {
19304
19262
  "message": "Missing item type\nOverrides the base `EngineInstance._bootSync` method with concerns relevant\nto booting application (instead of engine) instances.\n\nThis method should only contain synchronous boot concerns. Asynchronous\nboot concerns should eventually be moved to the `boot` method, which\nreturns a promise.\n\nUntil all boot code has been made asynchronous, we need to continue to\nexpose this method for use *internally* in places where we need to boot an\ninstance synchronously.",
19305
- "line": " packages/@ember/application/instance.js:83"
19263
+ "line": " packages/@ember/application/instance.js:81"
19306
19264
  },
19307
19265
  {
19308
19266
  "message": "Missing item type\nThis hook is called by the root-most Route (a.k.a. the ApplicationRoute)\nwhen it has finished creating the root View. By default, we simply take the\nview and append it to the `rootElement` specified on the Application.\n\nIn cases like FastBoot and testing, we can override this hook and implement\ncustom behavior, such as serializing to a string and sending over an HTTP\nsocket rather than appending to DOM.",
19309
- "line": " packages/@ember/application/instance.js:135"
19267
+ "line": " packages/@ember/application/instance.js:133"
19310
19268
  },
19311
19269
  {
19312
19270
  "message": "Missing item type\nTells the router to start routing. The router will ask the location for the\ncurrent URL of the page to determine the initial URL to start routing to.\nTo start the app at a specific URL, call `handleURL` instead.",
19313
- "line": " packages/@ember/application/instance.js:152"
19271
+ "line": " packages/@ember/application/instance.js:150"
19314
19272
  },
19315
19273
  {
19316
19274
  "message": "Missing item type\nSets up the router, initializing the child router and configuring the\nlocation before routing begins.\n\nBecause setup should only occur once, multiple calls to `setupRouter`\nbeyond the first call have no effect.\n\nThis is commonly used in order to confirm things that rely on the router\nare functioning properly from tests that are primarily rendering related.\n\nFor example, from within [ember-qunit](https://github.com/emberjs/ember-qunit)'s\n`setupRenderingTest` calling `this.owner.setupRouter()` would allow that\nrendering test to confirm that any `<LinkTo></LinkTo>`'s that are rendered\nhave the correct URL.",
19317
- "line": " packages/@ember/application/instance.js:163"
19275
+ "line": " packages/@ember/application/instance.js:161"
19318
19276
  },
19319
19277
  {
19320
19278
  "message": "Missing item type\nDirects the router to route to a particular URL. This is useful in tests,\nfor example, to tell the app to start at a particular URL.",
19321
- "line": " packages/@ember/application/instance.js:184"
19279
+ "line": " packages/@ember/application/instance.js:182"
19322
19280
  },
19323
19281
  {
19324
19282
  "message": "Missing item type",
19325
- "line": " packages/@ember/application/instance.js:196"
19283
+ "line": " packages/@ember/application/instance.js:194"
19326
19284
  },
19327
19285
  {
19328
19286
  "message": "Missing item type\nReturns the current URL of the app instance. This is useful when your\napp does not update the browsers URL bar (i.e. it uses the `'none'`\nlocation adapter).",
19329
- "line": " packages/@ember/application/instance.js:210"
19287
+ "line": " packages/@ember/application/instance.js:208"
19330
19288
  },
19331
19289
  {
19332
19290
  "message": "Missing item type\nNavigate the instance to a particular URL. This is useful in tests, for\nexample, or to tell the app to start at a particular URL. This method\nreturns a promise that resolves with the app instance when the transition\nis complete, or rejects if the transion was aborted due to an error.",
19333
- "line": " packages/@ember/application/instance.js:225"
19291
+ "line": " packages/@ember/application/instance.js:223"
19334
19292
  },
19335
19293
  {
19336
19294
  "message": "Missing item type\nUnfortunately, a lot of existing code assumes booting an instance is\nsynchronous – specifically, a lot of tests assume the last call to\n`app.advanceReadiness()` or `app.reset()` will result in a new instance\nbeing fully-booted when the current runloop completes.\n\nWe would like new code (like the `visit` API) to stop making this\nassumption, so we created the asynchronous version above that returns a\npromise. But until we have migrated all the code, we would have to expose\nthis method for use *internally* in places where we need to boot an instance\nsynchronously.",