ember-source 4.10.0-beta.2 → 4.11.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/build-metadata.json +3 -3
  3. package/dist/ember-template-compiler.js +147 -172
  4. package/dist/ember-template-compiler.map +1 -1
  5. package/dist/ember-testing.js +129 -6
  6. package/dist/ember-testing.map +1 -1
  7. package/dist/ember.debug.js +334 -314
  8. package/dist/ember.debug.map +1 -1
  9. package/dist/header/license.js +1 -1
  10. package/dist/packages/@ember/-internals/glimmer/index.js +60 -59
  11. package/dist/packages/@ember/-internals/metal/index.js +6 -6
  12. package/dist/packages/@ember/-internals/{utils/types.js → utility-types/index.js} +0 -0
  13. package/dist/packages/@ember/-internals/utils/index.js +3 -137
  14. package/dist/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -2
  15. package/dist/packages/@ember/-internals/views/lib/views/states/default.js +1 -2
  16. package/dist/packages/@ember/-internals/views/lib/views/states/destroying.js +2 -3
  17. package/dist/packages/@ember/-internals/views/lib/views/states/in_dom.js +1 -2
  18. package/dist/packages/@ember/array/-internals.js +8 -0
  19. package/dist/packages/@ember/array/index.js +2 -2
  20. package/dist/packages/@ember/array/lib/make-array.js +10 -0
  21. package/dist/packages/@ember/canary-features/index.js +0 -4
  22. package/dist/packages/@ember/debug/data-adapter.js +16 -16
  23. package/dist/packages/@ember/debug/index.js +2 -3
  24. package/dist/packages/@ember/debug/lib/inspect.js +117 -0
  25. package/dist/packages/@ember/engine/instance.js +1 -2
  26. package/dist/packages/@ember/instrumentation/index.js +2 -8
  27. package/dist/packages/@ember/object/core.js +2 -1
  28. package/dist/packages/@ember/object/mixin.js +11 -2
  29. package/dist/packages/@ember/object/promise-proxy-mixin.js +1 -2
  30. package/dist/packages/@ember/owner/index.js +2 -2
  31. package/dist/packages/@ember/routing/lib/utils.js +1 -2
  32. package/dist/packages/@ember/routing/router.js +36 -37
  33. package/dist/packages/ember/index.js +3 -3
  34. package/dist/packages/ember/version.js +1 -1
  35. package/dist/packages/ember-testing/lib/adapters/qunit.js +1 -1
  36. package/docs/data.json +252 -253
  37. package/package.json +19 -19
  38. package/types/preview/@ember/controller/index.d.ts +1 -1
  39. package/types/preview/@ember/engine/-private/container-proxy-mixin.d.ts +1 -1
  40. package/types/preview/@ember/engine/-private/registry-proxy-mixin.d.ts +1 -1
  41. package/types/preview/@ember/error/index.d.ts +2 -2
  42. package/types/preview/ember/index.d.ts +1 -1
  43. package/types/preview/index.d.ts +0 -2
  44. package/types/publish.mjs +314 -294
  45. package/types/stable/@ember/-internals/bootstrap/index.d.ts +3 -0
  46. package/types/stable/@ember/-internals/browser-environment/index.d.ts +9 -0
  47. package/types/stable/@ember/-internals/browser-environment/lib/has-dom.d.ts +4 -0
  48. package/types/stable/@ember/-internals/container/index.d.ts +4 -0
  49. package/types/stable/@ember/-internals/container/lib/container.d.ts +164 -0
  50. package/types/stable/@ember/-internals/container/lib/registry.d.ts +292 -0
  51. package/types/stable/@ember/-internals/environment/index.d.ts +5 -0
  52. package/types/stable/@ember/-internals/environment/lib/context.d.ts +10 -0
  53. package/types/stable/@ember/-internals/environment/lib/env.d.ts +153 -0
  54. package/types/stable/@ember/-internals/environment/lib/global.d.ts +4 -0
  55. package/types/stable/@ember/-internals/error-handling/index.d.ts +9 -0
  56. package/types/stable/@ember/-internals/glimmer/index.d.ts +456 -0
  57. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +47 -0
  58. package/types/stable/@ember/-internals/glimmer/lib/component-managers/mount.d.ts +41 -0
  59. package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +51 -0
  60. package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +23 -0
  61. package/types/stable/@ember/-internals/glimmer/lib/component.d.ts +840 -0
  62. package/types/stable/@ember/-internals/glimmer/lib/components/abstract-input.d.ts +37 -0
  63. package/types/stable/@ember/-internals/glimmer/lib/components/input.d.ts +4 -0
  64. package/types/stable/@ember/-internals/glimmer/lib/components/internal.d.ts +48 -0
  65. package/types/stable/@ember/-internals/glimmer/lib/components/link-to.d.ts +4 -0
  66. package/types/stable/@ember/-internals/glimmer/lib/components/textarea.d.ts +4 -0
  67. package/types/stable/@ember/-internals/glimmer/lib/dom.d.ts +4 -0
  68. package/types/stable/@ember/-internals/glimmer/lib/environment.d.ts +11 -0
  69. package/types/stable/@ember/-internals/glimmer/lib/glimmer-component-docs.d.ts +387 -0
  70. package/types/stable/@ember/-internals/glimmer/lib/glimmer-tracking-docs.d.ts +249 -0
  71. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +160 -0
  72. package/types/stable/@ember/-internals/glimmer/lib/helpers/-disallow-dynamic-resolution.d.ts +4 -0
  73. package/types/stable/@ember/-internals/glimmer/lib/helpers/-in-element-null-check.d.ts +4 -0
  74. package/types/stable/@ember/-internals/glimmer/lib/helpers/-normalize-class.d.ts +4 -0
  75. package/types/stable/@ember/-internals/glimmer/lib/helpers/-resolve.d.ts +4 -0
  76. package/types/stable/@ember/-internals/glimmer/lib/helpers/-track-array.d.ts +9 -0
  77. package/types/stable/@ember/-internals/glimmer/lib/helpers/action.d.ts +268 -0
  78. package/types/stable/@ember/-internals/glimmer/lib/helpers/array.d.ts +40 -0
  79. package/types/stable/@ember/-internals/glimmer/lib/helpers/component.d.ts +148 -0
  80. package/types/stable/@ember/-internals/glimmer/lib/helpers/concat.d.ts +27 -0
  81. package/types/stable/@ember/-internals/glimmer/lib/helpers/each-in.d.ts +160 -0
  82. package/types/stable/@ember/-internals/glimmer/lib/helpers/fn.d.ts +72 -0
  83. package/types/stable/@ember/-internals/glimmer/lib/helpers/get.d.ts +99 -0
  84. package/types/stable/@ember/-internals/glimmer/lib/helpers/hash.d.ts +43 -0
  85. package/types/stable/@ember/-internals/glimmer/lib/helpers/helper.d.ts +42 -0
  86. package/types/stable/@ember/-internals/glimmer/lib/helpers/if-unless.d.ts +181 -0
  87. package/types/stable/@ember/-internals/glimmer/lib/helpers/internal-helper.d.ts +5 -0
  88. package/types/stable/@ember/-internals/glimmer/lib/helpers/log.d.ts +18 -0
  89. package/types/stable/@ember/-internals/glimmer/lib/helpers/modifier.d.ts +41 -0
  90. package/types/stable/@ember/-internals/glimmer/lib/helpers/mut.d.ts +77 -0
  91. package/types/stable/@ember/-internals/glimmer/lib/helpers/page-title.d.ts +19 -0
  92. package/types/stable/@ember/-internals/glimmer/lib/helpers/readonly.d.ts +119 -0
  93. package/types/stable/@ember/-internals/glimmer/lib/helpers/unbound.d.ts +34 -0
  94. package/types/stable/@ember/-internals/glimmer/lib/helpers/unique-id.d.ts +7 -0
  95. package/types/stable/@ember/-internals/glimmer/lib/modifiers/action.d.ts +30 -0
  96. package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +33 -0
  97. package/types/stable/@ember/-internals/glimmer/lib/modifiers/on.d.ts +94 -0
  98. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +96 -0
  99. package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +16 -0
  100. package/types/stable/@ember/-internals/glimmer/lib/setup-registry.d.ts +5 -0
  101. package/types/stable/@ember/-internals/glimmer/lib/syntax/in-element.d.ts +46 -0
  102. package/types/stable/@ember/-internals/glimmer/lib/syntax/let.d.ts +54 -0
  103. package/types/stable/@ember/-internals/glimmer/lib/syntax/mount.d.ts +43 -0
  104. package/types/stable/@ember/-internals/glimmer/lib/syntax/outlet.d.ts +27 -0
  105. package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +4 -0
  106. package/types/stable/@ember/-internals/glimmer/lib/template.d.ts +6 -0
  107. package/types/stable/@ember/-internals/glimmer/lib/template_registry.d.ts +11 -0
  108. package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +10 -0
  109. package/types/stable/@ember/-internals/glimmer/lib/utils/curly-component-state-bucket.d.ts +31 -0
  110. package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +4 -0
  111. package/types/stable/@ember/-internals/glimmer/lib/utils/iterator.d.ts +5 -0
  112. package/types/stable/@ember/-internals/glimmer/lib/utils/managers.d.ts +19 -0
  113. package/types/stable/@ember/-internals/glimmer/lib/utils/outlet.d.ts +51 -0
  114. package/types/stable/@ember/-internals/glimmer/lib/utils/process-args.d.ts +4 -0
  115. package/types/stable/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.d.ts +3 -0
  116. package/types/stable/@ember/-internals/glimmer/lib/utils/string.d.ts +61 -0
  117. package/types/stable/@ember/-internals/glimmer/lib/utils/to-bool.d.ts +3 -0
  118. package/types/stable/@ember/-internals/glimmer/lib/views/outlet.d.ts +34 -0
  119. package/types/stable/@ember/-internals/meta/index.d.ts +3 -0
  120. package/types/stable/@ember/-internals/meta/lib/meta.d.ts +174 -0
  121. package/types/stable/@ember/-internals/metal/index.d.ts +26 -0
  122. package/types/stable/@ember/-internals/metal/lib/alias.d.ts +22 -0
  123. package/types/stable/@ember/-internals/metal/lib/array.d.ts +18 -0
  124. package/types/stable/@ember/-internals/metal/lib/array_events.d.ts +6 -0
  125. package/types/stable/@ember/-internals/metal/lib/cache.d.ts +121 -0
  126. package/types/stable/@ember/-internals/metal/lib/cached.d.ts +3 -0
  127. package/types/stable/@ember/-internals/metal/lib/chain-tags.d.ts +8 -0
  128. package/types/stable/@ember/-internals/metal/lib/change_event.d.ts +3 -0
  129. package/types/stable/@ember/-internals/metal/lib/computed.d.ts +484 -0
  130. package/types/stable/@ember/-internals/metal/lib/computed_cache.d.ts +3 -0
  131. package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +64 -0
  132. package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +2 -0
  133. package/types/stable/@ember/-internals/metal/lib/deprecate_property.d.ts +18 -0
  134. package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +5 -0
  135. package/types/stable/@ember/-internals/metal/lib/events.d.ts +91 -0
  136. package/types/stable/@ember/-internals/metal/lib/expand_properties.d.ts +33 -0
  137. package/types/stable/@ember/-internals/metal/lib/get_properties.d.ts +36 -0
  138. package/types/stable/@ember/-internals/metal/lib/injected_property.d.ts +25 -0
  139. package/types/stable/@ember/-internals/metal/lib/libraries.d.ts +31 -0
  140. package/types/stable/@ember/-internals/metal/lib/namespace_search.d.ts +19 -0
  141. package/types/stable/@ember/-internals/metal/lib/observer.d.ts +54 -0
  142. package/types/stable/@ember/-internals/metal/lib/path_cache.d.ts +3 -0
  143. package/types/stable/@ember/-internals/metal/lib/properties.d.ts +58 -0
  144. package/types/stable/@ember/-internals/metal/lib/property_events.d.ts +59 -0
  145. package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +44 -0
  146. package/types/stable/@ember/-internals/metal/lib/property_set.d.ts +52 -0
  147. package/types/stable/@ember/-internals/metal/lib/set_properties.d.ts +32 -0
  148. package/types/stable/@ember/-internals/metal/lib/tags.d.ts +7 -0
  149. package/types/stable/@ember/-internals/metal/lib/tracked.d.ts +78 -0
  150. package/types/stable/@ember/-internals/overrides/index.d.ts +3 -0
  151. package/types/stable/@ember/-internals/owner/index.d.ts +646 -0
  152. package/types/stable/@ember/-internals/routing/index.d.ts +3 -0
  153. package/types/stable/@ember/-internals/runtime/index.d.ts +11 -0
  154. package/types/stable/@ember/-internals/runtime/lib/ext/rsvp.d.ts +5 -0
  155. package/types/stable/@ember/-internals/runtime/lib/mixins/-proxy.d.ts +34 -0
  156. package/types/stable/@ember/-internals/runtime/lib/mixins/action_handler.d.ts +23 -0
  157. package/types/stable/@ember/-internals/runtime/lib/mixins/comparable.d.ts +22 -0
  158. package/types/stable/@ember/-internals/runtime/lib/mixins/container_proxy.d.ts +22 -0
  159. package/types/stable/@ember/-internals/runtime/lib/mixins/registry_proxy.d.ts +22 -0
  160. package/types/stable/@ember/-internals/runtime/lib/mixins/target_action_support.d.ts +29 -0
  161. package/types/stable/@ember/-internals/utility-types/index.d.ts +10 -0
  162. package/types/stable/@ember/-internals/utils/index.d.ts +16 -0
  163. package/types/stable/@ember/-internals/utils/lib/cache.d.ts +14 -0
  164. package/types/stable/@ember/-internals/utils/lib/dictionary.d.ts +7 -0
  165. package/types/stable/@ember/-internals/utils/lib/get-debug-name.d.ts +4 -0
  166. package/types/stable/@ember/-internals/utils/lib/guid.d.ts +60 -0
  167. package/types/stable/@ember/-internals/utils/lib/intern.d.ts +42 -0
  168. package/types/stable/@ember/-internals/utils/lib/invoke.d.ts +24 -0
  169. package/types/stable/@ember/-internals/utils/lib/is_proxy.d.ts +5 -0
  170. package/types/stable/@ember/-internals/utils/lib/lookup-descriptor.d.ts +3 -0
  171. package/types/stable/@ember/-internals/utils/lib/mandatory-setter.d.ts +6 -0
  172. package/types/stable/@ember/-internals/utils/lib/name.d.ts +4 -0
  173. package/types/stable/@ember/-internals/utils/lib/spec.d.ts +14 -0
  174. package/types/stable/@ember/-internals/utils/lib/super.d.ts +31 -0
  175. package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +5 -0
  176. package/types/stable/@ember/-internals/utils/lib/to-string.d.ts +3 -0
  177. package/types/stable/@ember/-internals/views/index.d.ts +13 -0
  178. package/types/stable/@ember/-internals/views/lib/compat/attrs.d.ts +3 -0
  179. package/types/stable/@ember/-internals/views/lib/compat/fallback-view-registry.d.ts +6 -0
  180. package/types/stable/@ember/-internals/views/lib/component_lookup.d.ts +5 -0
  181. package/types/stable/@ember/-internals/views/lib/mixins/action_support.d.ts +13 -0
  182. package/types/stable/@ember/-internals/views/lib/mixins/child_views_support.d.ts +13 -0
  183. package/types/stable/@ember/-internals/views/lib/mixins/class_names_support.d.ts +14 -0
  184. package/types/stable/@ember/-internals/views/lib/mixins/view_state_support.d.ts +13 -0
  185. package/types/stable/@ember/-internals/views/lib/mixins/view_support.d.ts +25 -0
  186. package/types/stable/@ember/-internals/views/lib/system/action_manager.d.ts +11 -0
  187. package/types/stable/@ember/-internals/views/lib/system/event_dispatcher.d.ts +117 -0
  188. package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +94 -0
  189. package/types/stable/@ember/-internals/views/lib/views/core_view.d.ts +60 -0
  190. package/types/stable/@ember/-internals/views/lib/views/states/default.d.ts +5 -0
  191. package/types/stable/@ember/-internals/views/lib/views/states/destroying.d.ts +5 -0
  192. package/types/stable/@ember/-internals/views/lib/views/states/has_element.d.ts +5 -0
  193. package/types/stable/@ember/-internals/views/lib/views/states/in_dom.d.ts +5 -0
  194. package/types/stable/@ember/-internals/views/lib/views/states/pre_render.d.ts +11 -0
  195. package/types/stable/@ember/-internals/views/lib/views/states.d.ts +25 -0
  196. package/types/stable/@ember/application/index.d.ts +814 -0
  197. package/types/stable/@ember/application/instance.d.ts +288 -0
  198. package/types/stable/@ember/application/lib/lazy_load.d.ts +38 -0
  199. package/types/stable/@ember/application/namespace.d.ts +38 -0
  200. package/types/stable/@ember/array/-internals.d.ts +5 -0
  201. package/types/stable/@ember/array/index.d.ts +1457 -0
  202. package/types/stable/@ember/array/lib/make-array.d.ts +34 -0
  203. package/types/stable/@ember/array/mutable.d.ts +3 -0
  204. package/types/stable/@ember/array/proxy.d.ts +158 -0
  205. package/types/stable/@ember/canary-features/index.d.ts +49 -0
  206. package/types/stable/@ember/component/helper.d.ts +3 -0
  207. package/types/stable/@ember/component/index.d.ts +5 -0
  208. package/types/stable/@ember/component/template-only.d.ts +33 -0
  209. package/types/stable/@ember/controller/index.d.ts +277 -0
  210. package/types/stable/@ember/debug/container-debug-adapter.d.ts +73 -0
  211. package/types/stable/@ember/debug/data-adapter.d.ts +325 -0
  212. package/types/stable/@ember/debug/index.d.ts +52 -0
  213. package/types/stable/@ember/debug/lib/capture-render-tree.d.ts +21 -0
  214. package/types/stable/@ember/debug/lib/deprecate.d.ts +72 -0
  215. package/types/stable/@ember/debug/lib/handlers.d.ts +14 -0
  216. package/types/stable/@ember/debug/lib/inspect.d.ts +20 -0
  217. package/types/stable/@ember/debug/lib/testing.d.ts +4 -0
  218. package/types/stable/@ember/debug/lib/warn.d.ts +14 -0
  219. package/types/stable/@ember/deprecated-features/index.d.ts +3 -0
  220. package/types/stable/@ember/destroyable/index.d.ts +237 -0
  221. package/types/stable/@ember/engine/index.d.ts +347 -0
  222. package/types/stable/@ember/engine/instance.d.ts +127 -0
  223. package/types/stable/@ember/engine/lib/engine-parent.d.ts +27 -0
  224. package/types/stable/@ember/enumerable/index.d.ts +19 -0
  225. package/types/stable/@ember/enumerable/mutable.d.ts +21 -0
  226. package/types/stable/@ember/error/index.d.ts +15 -0
  227. package/types/stable/@ember/helper/index.d.ts +314 -0
  228. package/types/stable/@ember/instrumentation/index.d.ts +127 -0
  229. package/types/stable/@ember/modifier/index.d.ts +5 -0
  230. package/types/stable/@ember/object/-internals.d.ts +9 -0
  231. package/types/stable/@ember/object/compat.d.ts +90 -0
  232. package/types/stable/@ember/object/computed.d.ts +5 -0
  233. package/types/stable/@ember/object/core.d.ts +638 -0
  234. package/types/stable/@ember/object/evented.d.ts +134 -0
  235. package/types/stable/@ember/object/events.d.ts +3 -0
  236. package/types/stable/@ember/object/index.d.ts +60 -0
  237. package/types/stable/@ember/object/internals.d.ts +3 -0
  238. package/types/stable/@ember/object/lib/computed/computed_macros.d.ts +644 -0
  239. package/types/stable/@ember/object/lib/computed/reduce_computed_macros.d.ts +791 -0
  240. package/types/stable/@ember/object/mixin.d.ts +157 -0
  241. package/types/stable/@ember/object/observable.d.ts +383 -0
  242. package/types/stable/@ember/object/observers.d.ts +3 -0
  243. package/types/stable/@ember/object/promise-proxy-mixin.d.ts +167 -0
  244. package/types/stable/@ember/object/proxy.d.ts +88 -0
  245. package/types/stable/@ember/owner/index.d.ts +80 -0
  246. package/types/stable/@ember/polyfills/index.d.ts +4 -0
  247. package/types/stable/@ember/polyfills/lib/assign.d.ts +9 -0
  248. package/types/stable/@ember/renderer/index.d.ts +28 -0
  249. package/types/stable/@ember/routing/-internals.d.ts +11 -0
  250. package/types/stable/@ember/routing/auto-location.d.ts +149 -0
  251. package/types/stable/@ember/routing/hash-location.d.ts +113 -0
  252. package/types/stable/@ember/routing/history-location.d.ts +143 -0
  253. package/types/stable/@ember/routing/index.d.ts +3 -0
  254. package/types/stable/@ember/routing/lib/cache.d.ts +16 -0
  255. package/types/stable/@ember/routing/lib/controller_for.d.ts +15 -0
  256. package/types/stable/@ember/routing/lib/dsl.d.ts +52 -0
  257. package/types/stable/@ember/routing/lib/engines.d.ts +14 -0
  258. package/types/stable/@ember/routing/lib/generate_controller.d.ts +25 -0
  259. package/types/stable/@ember/routing/lib/location-utils.d.ts +31 -0
  260. package/types/stable/@ember/routing/lib/query_params.d.ts +7 -0
  261. package/types/stable/@ember/routing/lib/route-info.d.ts +3 -0
  262. package/types/stable/@ember/routing/lib/router_state.d.ts +13 -0
  263. package/types/stable/@ember/routing/lib/routing-service.d.ts +35 -0
  264. package/types/stable/@ember/routing/lib/utils.d.ts +36 -0
  265. package/types/stable/@ember/routing/location.d.ts +108 -0
  266. package/types/stable/@ember/routing/none-location.d.ts +83 -0
  267. package/types/stable/@ember/routing/route-info.d.ts +125 -0
  268. package/types/stable/@ember/routing/route.d.ts +1456 -0
  269. package/types/stable/@ember/routing/router-service.d.ts +588 -0
  270. package/types/stable/@ember/routing/router.d.ts +431 -0
  271. package/types/stable/@ember/routing/transition.d.ts +180 -0
  272. package/types/stable/@ember/runloop/index.d.ts +657 -0
  273. package/types/stable/@ember/service/index.d.ts +82 -0
  274. package/types/stable/@ember/string/index.d.ts +152 -0
  275. package/types/stable/@ember/string/lib/string_registry.d.ts +9 -0
  276. package/types/stable/@ember/template/index.d.ts +3 -0
  277. package/types/stable/@ember/template-compilation/index.d.ts +4 -0
  278. package/types/stable/@ember/template-factory/index.d.ts +3 -0
  279. package/types/stable/@ember/test/adapter.d.ts +4 -0
  280. package/types/stable/@ember/test/index.d.ts +8 -0
  281. package/types/stable/@ember/utils/index.d.ts +9 -0
  282. package/types/stable/@ember/utils/lib/compare.d.ts +54 -0
  283. package/types/stable/@ember/utils/lib/is-equal.d.ts +52 -0
  284. package/types/stable/@ember/utils/lib/is_blank.d.ts +32 -0
  285. package/types/stable/@ember/utils/lib/is_empty.d.ts +38 -0
  286. package/types/stable/@ember/utils/lib/is_none.d.ts +26 -0
  287. package/types/stable/@ember/utils/lib/is_present.d.ts +35 -0
  288. package/types/stable/@ember/utils/lib/type-of.d.ts +68 -0
  289. package/types/stable/@ember/version/index.d.ts +3 -0
  290. package/types/stable/@glimmer/tracking/index.d.ts +203 -0
  291. package/types/stable/@glimmer/tracking/primitives/cache.d.ts +3 -0
  292. package/types/stable/ember/index.d.ts +376 -0
  293. package/types/stable/ember-template-compiler/index.d.ts +21 -0
  294. package/types/stable/ember-template-compiler/lib/plugins/assert-against-attrs.d.ts +20 -0
  295. package/types/stable/ember-template-compiler/lib/plugins/assert-against-named-outlets.d.ts +14 -0
  296. package/types/stable/ember-template-compiler/lib/plugins/assert-input-helper-without-block.d.ts +5 -0
  297. package/types/stable/ember-template-compiler/lib/plugins/assert-reserved-named-arguments.d.ts +5 -0
  298. package/types/stable/ember-template-compiler/lib/plugins/assert-splattribute-expression.d.ts +5 -0
  299. package/types/stable/ember-template-compiler/lib/plugins/index.d.ts +5 -0
  300. package/types/stable/ember-template-compiler/lib/plugins/transform-action-syntax.d.ts +28 -0
  301. package/types/stable/ember-template-compiler/lib/plugins/transform-each-in-into-each.d.ts +24 -0
  302. package/types/stable/ember-template-compiler/lib/plugins/transform-each-track-array.d.ts +24 -0
  303. package/types/stable/ember-template-compiler/lib/plugins/transform-in-element.d.ts +22 -0
  304. package/types/stable/ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.d.ts +4 -0
  305. package/types/stable/ember-template-compiler/lib/plugins/transform-resolutions.d.ts +5 -0
  306. package/types/stable/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.d.ts +36 -0
  307. package/types/stable/ember-template-compiler/lib/plugins/utils.d.ts +13 -0
  308. package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +26 -0
  309. package/types/stable/ember-template-compiler/lib/system/calculate-location-display.d.ts +4 -0
  310. package/types/stable/ember-template-compiler/lib/system/compile-options.d.ts +6 -0
  311. package/types/stable/ember-template-compiler/lib/system/compile.d.ts +13 -0
  312. package/types/stable/ember-template-compiler/lib/system/dasherize-component-name.d.ts +5 -0
  313. package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +3 -0
  314. package/types/stable/ember-template-compiler/lib/system/precompile.d.ts +17 -0
  315. package/types/stable/ember-testing/index.d.ts +10 -0
  316. package/types/stable/ember-testing/lib/adapters/adapter.d.ts +20 -0
  317. package/types/stable/ember-testing/lib/adapters/qunit.d.ts +19 -0
  318. package/types/stable/ember-testing/lib/ext/application.d.ts +12 -0
  319. package/types/stable/ember-testing/lib/ext/rsvp.d.ts +4 -0
  320. package/types/stable/ember-testing/lib/helpers/and_then.d.ts +4 -0
  321. package/types/stable/ember-testing/lib/helpers/current_path.d.ts +22 -0
  322. package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +21 -0
  323. package/types/stable/ember-testing/lib/helpers/current_url.d.ts +22 -0
  324. package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +53 -0
  325. package/types/stable/ember-testing/lib/helpers/visit.d.ts +22 -0
  326. package/types/stable/ember-testing/lib/helpers/wait.d.ts +34 -0
  327. package/types/stable/ember-testing/lib/helpers.d.ts +3 -0
  328. package/types/stable/ember-testing/lib/initializers.d.ts +3 -0
  329. package/types/stable/ember-testing/lib/setup_for_testing.d.ts +15 -0
  330. package/types/stable/ember-testing/lib/test/adapter.d.ts +7 -0
  331. package/types/stable/ember-testing/lib/test/helpers.d.ts +115 -0
  332. package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +33 -0
  333. package/types/stable/ember-testing/lib/test/pending_requests.d.ts +6 -0
  334. package/types/stable/ember-testing/lib/test/promise.d.ts +38 -0
  335. package/types/stable/ember-testing/lib/test/run.d.ts +3 -0
  336. package/types/stable/ember-testing/lib/test/waiters.d.ts +67 -0
  337. package/types/stable/ember-testing/lib/test.d.ts +47 -0
  338. package/types/stable/index.d.ts +47 -0
  339. package/types/preview/@ember/application/tsconfig.json +0 -3
  340. package/types/preview/@ember/array/tsconfig.json +0 -3
  341. package/types/preview/@ember/component/tsconfig.json +0 -3
  342. package/types/preview/@ember/controller/tsconfig.json +0 -3
  343. package/types/preview/@ember/debug/tsconfig.json +0 -3
  344. package/types/preview/@ember/destroyable/tsconfig.json +0 -3
  345. package/types/preview/@ember/engine/tsconfig.json +0 -3
  346. package/types/preview/@ember/error/tsconfig.json +0 -3
  347. package/types/preview/@ember/helper/tsconfig.json +0 -3
  348. package/types/preview/@ember/modifier/tsconfig.json +0 -3
  349. package/types/preview/@ember/object/tsconfig.json +0 -3
  350. package/types/preview/@ember/owner/index.d.ts +0 -423
  351. package/types/preview/@ember/owner/tsconfig.json +0 -3
  352. package/types/preview/@ember/polyfills/tsconfig.json +0 -3
  353. package/types/preview/@ember/routing/tsconfig.json +0 -3
  354. package/types/preview/@ember/runloop/tsconfig.json +0 -3
  355. package/types/preview/@ember/service/tsconfig.json +0 -3
  356. package/types/preview/@ember/string/tsconfig.json +0 -3
  357. package/types/preview/@ember/template/tsconfig.json +0 -3
  358. package/types/preview/@ember/test/tsconfig.json +0 -3
  359. package/types/preview/@ember/utils/tsconfig.json +0 -3
  360. package/types/preview/ember/tsconfig.json +0 -3
  361. package/types/preview/tsconfig.json +0 -6
@@ -0,0 +1,840 @@
1
+ declare module '@ember/-internals/glimmer/lib/component.d.ts' {
2
+ import { PROPERTY_DID_CHANGE } from '@ember/-internals/metal';
3
+ import type { PropertyDidChange } from '@ember/-internals/metal/lib/property_events';
4
+ import { TargetActionSupport } from '@ember/-internals/runtime';
5
+ import { ActionSupport, ChildViewsSupport, ClassNamesSupport, CoreView, EventDispatcher, ViewMixin, ViewStateSupport } from '@ember/-internals/views';
6
+ import type { Template, TemplateFactory } from '@glimmer/interfaces';
7
+ import type { DirtyableTag } from '@glimmer/validator';
8
+ import { DIRTY_TAG, IS_DISPATCHING_ATTRS } from './component-managers/curly';
9
+ /**
10
+ @module @ember/component
11
+ */
12
+ /**
13
+ A component is a reusable UI element that consists of a `.hbs` template and an
14
+ optional JavaScript class that defines its behavior. For example, someone
15
+ might make a `button` in the template and handle the click behavior in the
16
+ JavaScript file that shares the same name as the template.
17
+
18
+ Components are broken down into two categories:
19
+
20
+ - Components _without_ JavaScript, that are based only on a template. These
21
+ are called Template-only or TO components.
22
+ - Components _with_ JavaScript, which consist of a template and a backing
23
+ class.
24
+
25
+ Ember ships with two types of JavaScript classes for components:
26
+
27
+ 1. Glimmer components, imported from `@glimmer/component`, which are the
28
+ default component's for Ember Octane (3.15) and more recent editions.
29
+ 2. Classic components, imported from `@ember/component`, which were the
30
+ default for older editions of Ember (pre 3.15).
31
+
32
+ Below is the documentation for Classic components. If you are looking for the
33
+ API documentation for Template-only or Glimmer components, it is
34
+ [available here](/ember/release/modules/@glimmer%2Fcomponent).
35
+
36
+ ## Defining a Classic Component
37
+
38
+ If you want to customize the component in order to handle events, transform
39
+ arguments or maintain internal state, you implement a subclass of `Component`.
40
+
41
+ One example is to add computed properties to your component:
42
+
43
+ ```app/components/person-profile.js
44
+ import Component from '@ember/component';
45
+
46
+ export default Component.extend({
47
+ displayName: computed('person.title', 'person.firstName', 'person.lastName', function() {
48
+ let { title, firstName, lastName } = this.person;
49
+
50
+ if (title) {
51
+ return `${title} ${lastName}`;
52
+ } else {
53
+ return `${firstName} ${lastName}`;
54
+ }
55
+ })
56
+ });
57
+ ```
58
+
59
+ And then use it in the component's template:
60
+
61
+ ```app/templates/components/person-profile.hbs
62
+ <h1>{{this.displayName}}</h1>
63
+ {{yield}}
64
+ ```
65
+
66
+ ## Customizing a Classic Component's HTML Element in JavaScript
67
+
68
+ ### HTML Tag
69
+
70
+ The default HTML tag name used for a component's HTML representation is `div`.
71
+ This can be customized by setting the `tagName` property.
72
+
73
+ Consider the following component class:
74
+
75
+ ```app/components/emphasized-paragraph.js
76
+ import Component from '@ember/component';
77
+
78
+ export default Component.extend({
79
+ tagName: 'em'
80
+ });
81
+ ```
82
+
83
+ When invoked, this component would produce output that looks something like
84
+ this:
85
+
86
+ ```html
87
+ <em id="ember1" class="ember-view"></em>
88
+ ```
89
+
90
+ ### HTML `class` Attribute
91
+
92
+ The HTML `class` attribute of a component's tag can be set by providing a
93
+ `classNames` property that is set to an array of strings:
94
+
95
+ ```app/components/my-widget.js
96
+ import Component from '@ember/component';
97
+
98
+ export default Component.extend({
99
+ classNames: ['my-class', 'my-other-class']
100
+ });
101
+ ```
102
+
103
+ Invoking this component will produce output that looks like this:
104
+
105
+ ```html
106
+ <div id="ember1" class="ember-view my-class my-other-class"></div>
107
+ ```
108
+
109
+ `class` attribute values can also be set by providing a `classNameBindings`
110
+ property set to an array of properties names for the component. The return
111
+ value of these properties will be added as part of the value for the
112
+ components's `class` attribute. These properties can be computed properties:
113
+
114
+ ```app/components/my-widget.js
115
+ import Component from '@ember/component';
116
+ import { computed } from '@ember/object';
117
+
118
+ export default Component.extend({
119
+ classNames: ['my-class', 'my-other-class'],
120
+ classNameBindings: ['propertyA', 'propertyB'],
121
+
122
+ propertyA: 'from-a',
123
+ propertyB: computed(function() {
124
+ if (someLogic) { return 'from-b'; }
125
+ })
126
+ });
127
+ ```
128
+
129
+ Invoking this component will produce HTML that looks like:
130
+
131
+ ```html
132
+ <div id="ember1" class="ember-view my-class my-other-class from-a from-b"></div>
133
+ ```
134
+
135
+ Note that `classNames` and `classNameBindings` is in addition to the `class`
136
+ attribute passed with the angle bracket invocation syntax. Therefore, if this
137
+ component was invoked like so:
138
+
139
+ ```handlebars
140
+ <MyWidget class="from-invocation" />
141
+ ```
142
+
143
+ The resulting HTML will look similar to this:
144
+
145
+ ```html
146
+ <div id="ember1" class="from-invocation ember-view my-class my-other-class from-a from-b"></div>
147
+ ```
148
+
149
+ If the value of a class name binding returns a boolean the property name
150
+ itself will be used as the class name if the property is true. The class name
151
+ will not be added if the value is `false` or `undefined`.
152
+
153
+ ```app/components/my-widget.js
154
+ import Component from '@ember/component';
155
+
156
+ export default Component.extend({
157
+ classNameBindings: ['hovered'],
158
+
159
+ hovered: true
160
+ });
161
+ ```
162
+
163
+ Invoking this component will produce HTML that looks like:
164
+
165
+ ```html
166
+ <div id="ember1" class="ember-view hovered"></div>
167
+ ```
168
+
169
+ ### Custom Class Names for Boolean Values
170
+
171
+ When using boolean class name bindings you can supply a string value other
172
+ than the property name for use as the `class` HTML attribute by appending the
173
+ preferred value after a ":" character when defining the binding:
174
+
175
+ ```app/components/my-widget.js
176
+ import Component from '@ember/component';
177
+
178
+ export default Component.extend({
179
+ classNameBindings: ['awesome:so-very-cool'],
180
+
181
+ awesome: true
182
+ });
183
+ ```
184
+
185
+ Invoking this component will produce HTML that looks like:
186
+
187
+ ```html
188
+ <div id="ember1" class="ember-view so-very-cool"></div>
189
+ ```
190
+
191
+ Boolean value class name bindings whose property names are in a
192
+ camelCase-style format will be converted to a dasherized format:
193
+
194
+ ```app/components/my-widget.js
195
+ import Component from '@ember/component';
196
+
197
+ export default Component.extend({
198
+ classNameBindings: ['isUrgent'],
199
+
200
+ isUrgent: true
201
+ });
202
+ ```
203
+
204
+ Invoking this component will produce HTML that looks like:
205
+
206
+ ```html
207
+ <div id="ember1" class="ember-view is-urgent"></div>
208
+ ```
209
+
210
+ Class name bindings can also refer to object values that are found by
211
+ traversing a path relative to the component itself:
212
+
213
+ ```app/components/my-widget.js
214
+ import Component from '@ember/component';
215
+ import EmberObject from '@ember/object';
216
+
217
+ export default Component.extend({
218
+ classNameBindings: ['messages.empty'],
219
+
220
+ messages: EmberObject.create({
221
+ empty: true
222
+ })
223
+ });
224
+ ```
225
+
226
+ Invoking this component will produce HTML that looks like:
227
+
228
+ ```html
229
+ <div id="ember1" class="ember-view empty"></div>
230
+ ```
231
+
232
+ If you want to add a class name for a property which evaluates to true and
233
+ and a different class name if it evaluates to false, you can pass a binding
234
+ like this:
235
+
236
+ ```app/components/my-widget.js
237
+ import Component from '@ember/component';
238
+
239
+ export default Component.extend({
240
+ classNameBindings: ['isEnabled:enabled:disabled'],
241
+ isEnabled: true
242
+ });
243
+ ```
244
+
245
+ Invoking this component will produce HTML that looks like:
246
+
247
+ ```html
248
+ <div id="ember1" class="ember-view enabled"></div>
249
+ ```
250
+
251
+ When isEnabled is `false`, the resulting HTML representation looks like this:
252
+
253
+ ```html
254
+ <div id="ember1" class="ember-view disabled"></div>
255
+ ```
256
+
257
+ This syntax offers the convenience to add a class if a property is `false`:
258
+
259
+ ```app/components/my-widget.js
260
+ import Component from '@ember/component';
261
+
262
+ // Applies no class when isEnabled is true and class 'disabled' when isEnabled is false
263
+ export default Component.extend({
264
+ classNameBindings: ['isEnabled::disabled'],
265
+ isEnabled: true
266
+ });
267
+ ```
268
+
269
+ Invoking this component when the `isEnabled` property is true will produce
270
+ HTML that looks like:
271
+
272
+ ```html
273
+ <div id="ember1" class="ember-view"></div>
274
+ ```
275
+
276
+ Invoking it when the `isEnabled` property on the component is `false` will
277
+ produce HTML that looks like:
278
+
279
+ ```html
280
+ <div id="ember1" class="ember-view disabled"></div>
281
+ ```
282
+
283
+ Updates to the value of a class name binding will result in automatic update
284
+ of the HTML `class` attribute in the component's rendered HTML
285
+ representation. If the value becomes `false` or `undefined` the class name
286
+ will be removed.
287
+
288
+ Both `classNames` and `classNameBindings` are concatenated properties. See
289
+ [EmberObject](/ember/release/classes/EmberObject) documentation for more
290
+ information about concatenated properties.
291
+
292
+ ### Other HTML Attributes
293
+
294
+ The HTML attribute section of a component's tag can be set by providing an
295
+ `attributeBindings` property set to an array of property names on the component.
296
+ The return value of these properties will be used as the value of the component's
297
+ HTML associated attribute:
298
+
299
+ ```app/components/my-anchor.js
300
+ import Component from '@ember/component';
301
+
302
+ export default Component.extend({
303
+ tagName: 'a',
304
+ attributeBindings: ['href'],
305
+
306
+ href: 'http://google.com'
307
+ });
308
+ ```
309
+
310
+ Invoking this component will produce HTML that looks like:
311
+
312
+ ```html
313
+ <a id="ember1" class="ember-view" href="http://google.com"></a>
314
+ ```
315
+
316
+ One property can be mapped on to another by placing a ":" between
317
+ the source property and the destination property:
318
+
319
+ ```app/components/my-anchor.js
320
+ import Component from '@ember/component';
321
+
322
+ export default Component.extend({
323
+ tagName: 'a',
324
+ attributeBindings: ['url:href'],
325
+
326
+ url: 'http://google.com'
327
+ });
328
+ ```
329
+
330
+ Invoking this component will produce HTML that looks like:
331
+
332
+ ```html
333
+ <a id="ember1" class="ember-view" href="http://google.com"></a>
334
+ ```
335
+
336
+ HTML attributes passed with angle bracket invocations will take precedence
337
+ over those specified in `attributeBindings`. Therefore, if this component was
338
+ invoked like so:
339
+
340
+ ```handlebars
341
+ <MyAnchor href="http://bing.com" @url="http://google.com" />
342
+ ```
343
+
344
+ The resulting HTML will looks like this:
345
+
346
+ ```html
347
+ <a id="ember1" class="ember-view" href="http://bing.com"></a>
348
+ ```
349
+
350
+ Note that the `href` attribute is ultimately set to `http://bing.com`,
351
+ despite it having attribute binidng to the `url` property, which was
352
+ set to `http://google.com`.
353
+
354
+ Namespaced attributes (e.g. `xlink:href`) are supported, but have to be
355
+ mapped, since `:` is not a valid character for properties in Javascript:
356
+
357
+ ```app/components/my-use.js
358
+ import Component from '@ember/component';
359
+
360
+ export default Component.extend({
361
+ tagName: 'use',
362
+ attributeBindings: ['xlinkHref:xlink:href'],
363
+
364
+ xlinkHref: '#triangle'
365
+ });
366
+ ```
367
+
368
+ Invoking this component will produce HTML that looks like:
369
+
370
+ ```html
371
+ <use xlink:href="#triangle"></use>
372
+ ```
373
+
374
+ If the value of a property monitored by `attributeBindings` is a boolean, the
375
+ attribute will be present or absent depending on the value:
376
+
377
+ ```app/components/my-text-input.js
378
+ import Component from '@ember/component';
379
+
380
+ export default Component.extend({
381
+ tagName: 'input',
382
+ attributeBindings: ['disabled'],
383
+
384
+ disabled: false
385
+ });
386
+ ```
387
+
388
+ Invoking this component will produce HTML that looks like:
389
+
390
+ ```html
391
+ <input id="ember1" class="ember-view" />
392
+ ```
393
+
394
+ `attributeBindings` can refer to computed properties:
395
+
396
+ ```app/components/my-text-input.js
397
+ import Component from '@ember/component';
398
+ import { computed } from '@ember/object';
399
+
400
+ export default Component.extend({
401
+ tagName: 'input',
402
+ attributeBindings: ['disabled'],
403
+
404
+ disabled: computed(function() {
405
+ if (someLogic) {
406
+ return true;
407
+ } else {
408
+ return false;
409
+ }
410
+ })
411
+ });
412
+ ```
413
+
414
+ To prevent setting an attribute altogether, use `null` or `undefined` as the
415
+ value of the property used in `attributeBindings`:
416
+
417
+ ```app/components/my-text-input.js
418
+ import Component from '@ember/component';
419
+
420
+ export default Component.extend({
421
+ tagName: 'form',
422
+ attributeBindings: ['novalidate'],
423
+ novalidate: null
424
+ });
425
+ ```
426
+
427
+ Updates to the property of an attribute binding will result in automatic
428
+ update of the HTML attribute in the component's HTML output.
429
+
430
+ `attributeBindings` is a concatenated property. See
431
+ [EmberObject](/ember/release/classes/EmberObject) documentation for more
432
+ information about concatenated properties.
433
+
434
+ ## Layouts
435
+
436
+ The `layout` property can be used to dynamically specify a template associated
437
+ with a component class, instead of relying on Ember to link together a
438
+ component class and a template based on file names.
439
+
440
+ In general, applications should not use this feature, but it's commonly used
441
+ in addons for historical reasons.
442
+
443
+ The `layout` property should be set to the default export of a template
444
+ module, which is the name of a template file without the `.hbs` extension.
445
+
446
+ ```app/templates/components/person-profile.hbs
447
+ <h1>Person's Title</h1>
448
+ <div class='details'>{{yield}}</div>
449
+ ```
450
+
451
+ ```app/components/person-profile.js
452
+ import Component from '@ember/component';
453
+ import layout from '../templates/components/person-profile';
454
+
455
+ export default Component.extend({
456
+ layout
457
+ });
458
+ ```
459
+
460
+ If you invoke the component:
461
+
462
+ ```handlebars
463
+ <PersonProfile>
464
+ <h2>Chief Basket Weaver</h2>
465
+ <h3>Fisherman Industries</h3>
466
+ </PersonProfile>
467
+ ```
468
+
469
+ or
470
+
471
+ ```handlebars
472
+ {{#person-profile}}
473
+ <h2>Chief Basket Weaver</h2>
474
+ <h3>Fisherman Industries</h3>
475
+ {{/person-profile}}
476
+ ```
477
+
478
+ It will result in the following HTML output:
479
+
480
+ ```html
481
+ <h1>Person's Title</h1>
482
+ <div class="details">
483
+ <h2>Chief Basket Weaver</h2>
484
+ <h3>Fisherman Industries</h3>
485
+ </div>
486
+ ```
487
+
488
+ ## Handling Browser Events
489
+
490
+ Components can respond to user-initiated events in one of three ways: passing
491
+ actions with angle bracket invocation, adding event handler methods to the
492
+ component's class, or adding actions to the component's template.
493
+
494
+ ### Passing Actions With Angle Bracket Invocation
495
+
496
+ For one-off events specific to particular instance of a component, it is possible
497
+ to pass actions to the component's element using angle bracket invocation syntax.
498
+
499
+ ```handlebars
500
+ <MyWidget {{action 'firstWidgetClicked'}} />
501
+
502
+ <MyWidget {{action 'secondWidgetClicked'}} />
503
+ ```
504
+
505
+ In this case, when the first component is clicked on, Ember will invoke the
506
+ `firstWidgetClicked` action. When the second component is clicked on, Ember
507
+ will invoke the `secondWidgetClicked` action instead.
508
+
509
+ Besides `{{action}}`, it is also possible to pass any arbitrary element modifiers
510
+ using the angle bracket invocation syntax.
511
+
512
+ ### Event Handler Methods
513
+
514
+ Components can also respond to user-initiated events by implementing a method
515
+ that matches the event name. This approach is appropriate when the same event
516
+ should be handled by all instances of the same component.
517
+
518
+ An event object will be passed as the argument to the event handler method.
519
+
520
+ ```app/components/my-widget.js
521
+ import Component from '@ember/component';
522
+
523
+ export default Component.extend({
524
+ click(event) {
525
+ // `event.target` is either the component's element or one of its children
526
+ let tag = event.target.tagName.toLowerCase();
527
+ console.log('clicked on a `<${tag}>` HTML element!');
528
+ }
529
+ });
530
+ ```
531
+
532
+ In this example, whenever the user clicked anywhere inside the component, it
533
+ will log a message to the console.
534
+
535
+ It is possible to handle event types other than `click` by implementing the
536
+ following event handler methods. In addition, custom events can be registered
537
+ by using `Application.customEvents`.
538
+
539
+ Touch events:
540
+
541
+ * `touchStart`
542
+ * `touchMove`
543
+ * `touchEnd`
544
+ * `touchCancel`
545
+
546
+ Keyboard events:
547
+
548
+ * `keyDown`
549
+ * `keyUp`
550
+ * `keyPress`
551
+
552
+ Mouse events:
553
+
554
+ * `mouseDown`
555
+ * `mouseUp`
556
+ * `contextMenu`
557
+ * `click`
558
+ * `doubleClick`
559
+ * `focusIn`
560
+ * `focusOut`
561
+
562
+ Form events:
563
+
564
+ * `submit`
565
+ * `change`
566
+ * `focusIn`
567
+ * `focusOut`
568
+ * `input`
569
+
570
+ Drag and drop events:
571
+
572
+ * `dragStart`
573
+ * `drag`
574
+ * `dragEnter`
575
+ * `dragLeave`
576
+ * `dragOver`
577
+ * `dragEnd`
578
+ * `drop`
579
+
580
+ ### `{{action}}` Helper
581
+
582
+ Instead of handling all events of a particular type anywhere inside the
583
+ component's element, you may instead want to limit it to a particular
584
+ element in the component's template. In this case, it would be more
585
+ convenient to implement an action instead.
586
+
587
+ For example, you could implement the action `hello` for the `person-profile`
588
+ component:
589
+
590
+ ```app/components/person-profile.js
591
+ import Component from '@ember/component';
592
+
593
+ export default Component.extend({
594
+ actions: {
595
+ hello(name) {
596
+ console.log("Hello", name);
597
+ }
598
+ }
599
+ });
600
+ ```
601
+
602
+ And then use it in the component's template:
603
+
604
+ ```app/templates/components/person-profile.hbs
605
+ <h1>{{@person.name}}</h1>
606
+
607
+ <button {{action 'hello' @person.name}}>
608
+ Say Hello to {{@person.name}}
609
+ </button>
610
+ ```
611
+
612
+ When the user clicks the button, Ember will invoke the `hello` action,
613
+ passing in the current value of `@person.name` as an argument.
614
+
615
+ See [Ember.Templates.helpers.action](/ember/release/classes/Ember.Templates.helpers/methods/action?anchor=action).
616
+
617
+ @class Component
618
+ @extends Ember.CoreView
619
+ @uses Ember.TargetActionSupport
620
+ @uses Ember.ClassNamesSupport
621
+ @uses Ember.ActionSupport
622
+ @uses Ember.ViewMixin
623
+ @uses Ember.ViewStateSupport
624
+ @public
625
+ */
626
+ interface ComponentMethods {
627
+ /**
628
+ Called when the attributes passed into the component have been updated.
629
+ Called both during the initial render of a container and during a rerender.
630
+ Can be used in place of an observer; code placed here will be executed
631
+ every time any attribute updates.
632
+ @method didReceiveAttrs
633
+ @public
634
+ @since 1.13.0
635
+ */
636
+ didReceiveAttrs(): void;
637
+ /**
638
+ Called when the attributes passed into the component have been updated.
639
+ Called both during the initial render of a container and during a rerender.
640
+ Can be used in place of an observer; code placed here will be executed
641
+ every time any attribute updates.
642
+ @event didReceiveAttrs
643
+ @public
644
+ @since 1.13.0
645
+ */
646
+ /**
647
+ Called after a component has been rendered, both on initial render and
648
+ in subsequent rerenders.
649
+ @method didRender
650
+ @public
651
+ @since 1.13.0
652
+ */
653
+ didRender(): void;
654
+ /**
655
+ Called after a component has been rendered, both on initial render and
656
+ in subsequent rerenders.
657
+ @event didRender
658
+ @public
659
+ @since 1.13.0
660
+ */
661
+ /**
662
+ Called before a component has been rendered, both on initial render and
663
+ in subsequent rerenders.
664
+ @method willRender
665
+ @public
666
+ @since 1.13.0
667
+ */
668
+ willRender(): void;
669
+ /**
670
+ Called before a component has been rendered, both on initial render and
671
+ in subsequent rerenders.
672
+ @event willRender
673
+ @public
674
+ @since 1.13.0
675
+ */
676
+ /**
677
+ Called when the attributes passed into the component have been changed.
678
+ Called only during a rerender, not during an initial render.
679
+ @method didUpdateAttrs
680
+ @public
681
+ @since 1.13.0
682
+ */
683
+ didUpdateAttrs(): void;
684
+ /**
685
+ Called when the attributes passed into the component have been changed.
686
+ Called only during a rerender, not during an initial render.
687
+ @event didUpdateAttrs
688
+ @public
689
+ @since 1.13.0
690
+ */
691
+ /**
692
+ Called when the component is about to update and rerender itself.
693
+ Called only during a rerender, not during an initial render.
694
+ @method willUpdate
695
+ @public
696
+ @since 1.13.0
697
+ */
698
+ willUpdate(): void;
699
+ /**
700
+ Called when the component is about to update and rerender itself.
701
+ Called only during a rerender, not during an initial render.
702
+ @event willUpdate
703
+ @public
704
+ @since 1.13.0
705
+ */
706
+ /**
707
+ Called when the component has updated and rerendered itself.
708
+ Called only during a rerender, not during an initial render.
709
+ @method didUpdate
710
+ @public
711
+ @since 1.13.0
712
+ */
713
+ didUpdate(): void;
714
+ /**
715
+ Called when the component has updated and rerendered itself.
716
+ Called only during a rerender, not during an initial render.
717
+ @event didUpdate
718
+ @public
719
+ @since 1.13.0
720
+ */
721
+ /**
722
+ The HTML `id` of the component's element in the DOM. You can provide this
723
+ value yourself but it must be unique (just as in HTML):
724
+
725
+ ```handlebars
726
+ {{my-component elementId="a-really-cool-id"}}
727
+ ```
728
+
729
+ ```handlebars
730
+ <MyComponent @elementId="a-really-cool-id" />
731
+ ```
732
+ If not manually set a default value will be provided by the framework.
733
+ Once rendered an element's `elementId` is considered immutable and you
734
+ should never change it. If you need to compute a dynamic value for the
735
+ `elementId`, you should do this when the component or element is being
736
+ instantiated:
737
+
738
+ ```javascript
739
+ export default Component.extend({
740
+ init() {
741
+ this._super(...arguments);
742
+
743
+ var index = this.get('index');
744
+ this.set('elementId', `component-id${index}`);
745
+ }
746
+ });
747
+ ```
748
+
749
+ @property elementId
750
+ @type String
751
+ @public
752
+ */
753
+ layoutName?: string;
754
+ }
755
+ interface Component extends CoreView, ChildViewsSupport, ViewStateSupport, ClassNamesSupport, TargetActionSupport, ActionSupport, ViewMixin, ComponentMethods {
756
+ }
757
+ const Component_base: Readonly<typeof CoreView> & (new (owner?: import("@ember/-internals/owner").default | undefined) => CoreView);
758
+ class Component extends Component_base implements PropertyDidChange {
759
+ isComponent: boolean;
760
+ _superRerender: ViewMixin['rerender'];
761
+ [IS_DISPATCHING_ATTRS]: boolean;
762
+ [DIRTY_TAG]: DirtyableTag;
763
+ init(properties: object | undefined): void;
764
+ __dispatcher?: EventDispatcher | null;
765
+ get _dispatcher(): EventDispatcher | null;
766
+ on<Target>(name: string, target: Target, method: string | ((this: Target, ...args: any[]) => void)): this;
767
+ on(name: string, method: ((...args: any[]) => void) | string): this;
768
+ _rerender(): void;
769
+ [PROPERTY_DID_CHANGE](key: string, value?: unknown): void;
770
+ getAttr(key: string): unknown;
771
+ /**
772
+ Normally, Ember's component model is "write-only". The component takes a
773
+ bunch of attributes that it got passed in, and uses them to render its
774
+ template.
775
+
776
+ One nice thing about this model is that if you try to set a value to the
777
+ same thing as last time, Ember (through HTMLBars) will avoid doing any
778
+ work on the DOM.
779
+
780
+ This is not just a performance optimization. If an attribute has not
781
+ changed, it is important not to clobber the element's "hidden state".
782
+ For example, if you set an input's `value` to the same value as before,
783
+ it will clobber selection state and cursor position. In other words,
784
+ setting an attribute is not **always** idempotent.
785
+
786
+ This method provides a way to read an element's attribute and also
787
+ update the last value Ember knows about at the same time. This makes
788
+ setting an attribute idempotent.
789
+
790
+ In particular, what this means is that if you get an `<input>` element's
791
+ `value` attribute and then re-render the template with the same value,
792
+ it will avoid clobbering the cursor and selection position.
793
+ Since most attribute sets are idempotent in the browser, you typically
794
+ can get away with reading attributes using jQuery, but the most reliable
795
+ way to do so is through this method.
796
+ @method readDOMAttr
797
+
798
+ @param {String} name the name of the attribute
799
+ @return String
800
+ @public
801
+ */
802
+ readDOMAttr(name: string): any;
803
+ attributeBindings?: string[];
804
+ /**
805
+ Layout can be used to wrap content in a component.
806
+ @property layout
807
+ @type Function
808
+ @public
809
+ */
810
+ layout?: TemplateFactory | Template;
811
+ /**
812
+ The name of the layout to lookup if no layout is provided.
813
+ By default `Component` will lookup a template with this name in
814
+ `Ember.TEMPLATES` (a shared global object).
815
+ @property layoutName
816
+ @type String
817
+ @default undefined
818
+ @private
819
+ */
820
+ layoutName?: string;
821
+ /**
822
+ The WAI-ARIA role of the control represented by this view. For example, a
823
+ button may have a role of type 'button', or a pane may have a role of
824
+ type 'alertdialog'. This property is used by assistive software to help
825
+ visually challenged users navigate rich web applications.
826
+
827
+ The full list of valid WAI-ARIA roles is available at:
828
+ [https://www.w3.org/TR/wai-aria/#roles_categorization](https://www.w3.org/TR/wai-aria/#roles_categorization)
829
+
830
+ @property ariaRole
831
+ @type String
832
+ @default undefined
833
+ @public
834
+ */
835
+ ariaRole?: string;
836
+ static isComponentFactory: boolean;
837
+ static toString(): string;
838
+ }
839
+ export default Component;
840
+ }