ember-source 7.2.0-beta.1 → 7.3.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 (144) hide show
  1. package/build-metadata.json +3 -3
  2. package/dist/dev/packages/@ember/-internals/deprecations/index.js +10 -0
  3. package/dist/dev/packages/@ember/-internals/glimmer/index.js +7 -7
  4. package/dist/dev/packages/@ember/-internals/metal/index.js +8 -8
  5. package/dist/dev/packages/@ember/-internals/routing/index.js +1 -1
  6. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +3 -3
  7. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/comparable.js +5 -0
  8. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +1 -1
  9. package/dist/dev/packages/@ember/-internals/views/lib/system/event_dispatcher.js +1 -1
  10. package/dist/dev/packages/@ember/-internals/views/lib/views/core_view.js +1 -1
  11. package/dist/dev/packages/@ember/application/index.js +2 -2
  12. package/dist/dev/packages/@ember/application/instance.js +22 -2
  13. package/dist/dev/packages/@ember/array/index.js +3 -3
  14. package/dist/dev/packages/@ember/array/proxy.js +3 -3
  15. package/dist/dev/packages/@ember/component/helper.js +321 -1
  16. package/dist/dev/packages/@ember/component/index.js +3 -3
  17. package/dist/dev/packages/@ember/controller/index.js +2 -2
  18. package/dist/dev/packages/@ember/engine/index.js +3 -3
  19. package/dist/dev/packages/@ember/object/computed.js +2 -2
  20. package/dist/dev/packages/@ember/object/core.js +2 -2
  21. package/dist/dev/packages/@ember/object/index.js +4 -4
  22. package/dist/dev/packages/@ember/object/lib/computed/computed_macros.js +3 -3
  23. package/dist/dev/packages/@ember/object/lib/computed/reduce_computed_macros.js +1 -1
  24. package/dist/dev/packages/@ember/object/mixin.js +1 -1
  25. package/dist/dev/packages/@ember/object/observable.js +3 -3
  26. package/dist/dev/packages/@ember/object/promise-proxy-mixin.js +2 -2
  27. package/dist/dev/packages/@ember/renderer/index.js +1 -1
  28. package/dist/dev/packages/@ember/routing/-internals.js +1 -1
  29. package/dist/dev/packages/@ember/routing/lib/routing-service.js +0 -1
  30. package/dist/dev/packages/@ember/routing/lib/utils.js +1 -1
  31. package/dist/dev/packages/@ember/routing/route.js +4 -4
  32. package/dist/dev/packages/@ember/routing/router-service.js +0 -1
  33. package/dist/dev/packages/@ember/routing/router.js +3 -3
  34. package/dist/dev/packages/@ember/service/index.js +1 -1
  35. package/dist/dev/packages/@ember/utils/lib/compare.js +5 -2
  36. package/dist/dev/packages/@glimmer/node/index.js +2 -2
  37. package/dist/dev/packages/@glimmer/runtime/index.js +3 -3
  38. package/dist/dev/packages/@glimmer/tracking/index.js +1 -1
  39. package/dist/dev/packages/@glimmer/validator/index.js +1 -1
  40. package/dist/dev/packages/ember/version.js +1 -1
  41. package/dist/dev/packages/router_js/index.js +2 -2
  42. package/dist/dev/packages/shared-chunks/{alias-DpqL1qx6.js → alias-CT_thCad.js} +2 -2
  43. package/dist/dev/packages/shared-chunks/{api-C0PAtEgQ.js → api-Dz70AUL_.js} +6 -4
  44. package/dist/dev/packages/shared-chunks/{array-CVEnNWng.js → array-DvaweI_T.js} +1 -1
  45. package/dist/dev/packages/shared-chunks/{computed-BPCtuOxQ.js → computed-DGxbeUbf.js} +1 -6
  46. package/dist/dev/packages/shared-chunks/{curly-Ei5G8jhk.js → curly-DGUCLOud.js} +4 -5
  47. package/dist/dev/packages/shared-chunks/curly-brand-B_F79Dep.js +12 -0
  48. package/dist/dev/packages/shared-chunks/helper-brand-C9_8vvOf.js +12 -0
  49. package/dist/dev/packages/shared-chunks/{index-B3pPx1fL.js → index-D1AjYv31.js} +618 -1575
  50. package/dist/dev/packages/shared-chunks/{injected_property-CbBLr5jt.js → injected_property-DbXd6Gax.js} +1 -1
  51. package/dist/dev/packages/shared-chunks/outlet-CHFL7tun.js +135 -0
  52. package/dist/dev/packages/shared-chunks/{property_set-qCUylPEK.js → property_set-CVlVgdor.js} +1 -1
  53. package/dist/dev/packages/shared-chunks/{rehydrate-builder-C6k1XhET.js → rehydrate-builder-CsnkZkur.js} +1 -1
  54. package/dist/dev/packages/shared-chunks/{render-87_sKZ_k.js → render-CtH73XOv.js} +10 -5
  55. package/dist/dev/packages/shared-chunks/{serialize-builder-BlxBjwO-.js → serialize-builder-D1oAeiyl.js} +1 -1
  56. package/dist/dev/packages/shared-chunks/{set_properties-C4TSebH6.js → set_properties-CEUT_EJn.js} +2 -2
  57. package/dist/dev/packages/shared-chunks/setup-registry-DQ3c4Juo.js +951 -0
  58. package/dist/dev/packages/shared-chunks/{textarea-C4lYkaHj.js → textarea-DEvw4ezm.js} +1 -1
  59. package/dist/dev/packages/shared-chunks/tracked-57EW14Ny.js +253 -0
  60. package/dist/dev/packages/shared-chunks/tracked-value-DhyJmrhG.js +115 -0
  61. package/dist/dev/packages/shared-chunks/{unrecognized-url-error-BJHjL30Q.js → unrecognized-url-error-B8loxkay.js} +1 -1
  62. package/dist/prod/packages/@ember/-internals/deprecations/index.js +10 -0
  63. package/dist/prod/packages/@ember/-internals/glimmer/index.js +7 -7
  64. package/dist/prod/packages/@ember/-internals/metal/index.js +8 -8
  65. package/dist/prod/packages/@ember/-internals/routing/index.js +1 -1
  66. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +3 -3
  67. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +5 -0
  68. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +1 -1
  69. package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +1 -1
  70. package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +1 -1
  71. package/dist/prod/packages/@ember/application/index.js +2 -2
  72. package/dist/prod/packages/@ember/application/instance.js +18 -3
  73. package/dist/prod/packages/@ember/array/index.js +3 -3
  74. package/dist/prod/packages/@ember/array/proxy.js +3 -3
  75. package/dist/prod/packages/@ember/component/helper.js +305 -1
  76. package/dist/prod/packages/@ember/component/index.js +3 -3
  77. package/dist/prod/packages/@ember/controller/index.js +2 -2
  78. package/dist/prod/packages/@ember/engine/index.js +3 -3
  79. package/dist/prod/packages/@ember/object/computed.js +2 -2
  80. package/dist/prod/packages/@ember/object/index.js +4 -4
  81. package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +3 -3
  82. package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +1 -1
  83. package/dist/prod/packages/@ember/object/mixin.js +1 -1
  84. package/dist/prod/packages/@ember/object/observable.js +3 -3
  85. package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +2 -2
  86. package/dist/prod/packages/@ember/renderer/index.js +1 -1
  87. package/dist/prod/packages/@ember/routing/lib/routing-service.js +0 -1
  88. package/dist/prod/packages/@ember/routing/lib/utils.js +1 -1
  89. package/dist/prod/packages/@ember/routing/route.js +4 -4
  90. package/dist/prod/packages/@ember/routing/router-service.js +0 -1
  91. package/dist/prod/packages/@ember/routing/router.js +3 -3
  92. package/dist/prod/packages/@ember/service/index.js +1 -1
  93. package/dist/prod/packages/@ember/utils/lib/compare.js +5 -2
  94. package/dist/prod/packages/@glimmer/node/index.js +2 -2
  95. package/dist/prod/packages/@glimmer/runtime/index.js +3 -3
  96. package/dist/prod/packages/@glimmer/tracking/index.js +1 -1
  97. package/dist/prod/packages/@glimmer/validator/index.js +1 -1
  98. package/dist/prod/packages/ember/version.js +1 -1
  99. package/dist/prod/packages/router_js/index.js +2 -2
  100. package/dist/prod/packages/shared-chunks/{alias-Bod6qdNp.js → alias-CHHuE0LE.js} +2 -2
  101. package/dist/prod/packages/shared-chunks/{api-CQexacBn.js → api-DzOa0Acr.js} +6 -4
  102. package/dist/prod/packages/shared-chunks/{array-BzReKMeW.js → array-CnXdmzOG.js} +1 -1
  103. package/dist/prod/packages/shared-chunks/{computed-DtIStxvq.js → computed-BNdMwGhH.js} +1 -6
  104. package/dist/prod/packages/shared-chunks/{curly-IY06zACp.js → curly-a6DP7r87.js} +4 -5
  105. package/dist/prod/packages/shared-chunks/curly-brand-B_F79Dep.js +12 -0
  106. package/dist/prod/packages/shared-chunks/helper-brand-C9_8vvOf.js +12 -0
  107. package/dist/prod/packages/shared-chunks/{index-CslMfEpb.js → index-CvQQ6l11.js} +548 -1451
  108. package/dist/prod/packages/shared-chunks/{injected_property-Y-FadDej.js → injected_property-DqQ0XV7k.js} +1 -1
  109. package/dist/prod/packages/shared-chunks/outlet--lIm3q7t.js +132 -0
  110. package/dist/prod/packages/shared-chunks/{property_set-BaQJdVfS.js → property_set-CkLe4ht8.js} +1 -1
  111. package/dist/prod/packages/shared-chunks/{rehydrate-builder-Blt1x9MP.js → rehydrate-builder-n_8RCUj9.js} +1 -1
  112. package/dist/prod/packages/shared-chunks/{render-Dx7lr1hR.js → render-Bf7GviCY.js} +10 -5
  113. package/dist/prod/packages/shared-chunks/{serialize-builder-BvAXYHTr.js → serialize-builder-CsG9WHVw.js} +1 -1
  114. package/dist/prod/packages/shared-chunks/{set_properties-Qxhw4qzw.js → set_properties-Cs3rVemD.js} +2 -2
  115. package/dist/prod/packages/shared-chunks/setup-registry-kOGgOucf.js +886 -0
  116. package/dist/prod/packages/shared-chunks/{textarea-DOmZ1x0E.js → textarea-DMmdvgk2.js} +1 -1
  117. package/dist/prod/packages/shared-chunks/tracked-DvOpYI0o.js +235 -0
  118. package/dist/prod/packages/shared-chunks/tracked-value-CR6kx-73.js +115 -0
  119. package/dist/prod/packages/shared-chunks/{unrecognized-url-error-EgNrnFu_.js → unrecognized-url-error-jjQ-FqKB.js} +1 -1
  120. package/docs/data.json +426 -222
  121. package/package.json +6 -6
  122. package/types/stable/@ember/-internals/deprecations/index.d.ts +6 -0
  123. package/types/stable/@ember/-internals/glimmer/lib/base-renderer.d.ts +150 -0
  124. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly-brand.d.ts +10 -0
  125. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -2
  126. package/types/stable/@ember/-internals/glimmer/lib/glimmer-tracking-docs.d.ts +68 -0
  127. package/types/stable/@ember/-internals/glimmer/lib/helper-brand.d.ts +10 -0
  128. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +4 -6
  129. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +7 -154
  130. package/types/stable/@ember/-internals/glimmer/lib/router-resolver.d.ts +17 -0
  131. package/types/stable/@ember/-internals/metal/lib/tracked.d.ts +53 -6
  132. package/types/stable/@ember/renderer/index.d.ts +2 -2
  133. package/types/stable/@glimmer/tracking/index.d.ts +70 -1
  134. package/types/stable/@glimmer/validator/index.d.ts +1 -0
  135. package/types/stable/@glimmer/validator/lib/tracked-value.d.ts +58 -0
  136. package/types/stable/index.d.ts +591 -586
  137. package/dist/dev/packages/shared-chunks/helper-DIj85_-f.js +0 -326
  138. package/dist/dev/packages/shared-chunks/setup-registry-9DCmHTFF.js +0 -77
  139. package/dist/dev/packages/shared-chunks/tracked-DEyf0T_X.js +0 -148
  140. package/dist/dev/packages/shared-chunks/tracked-data-DgqqRdYO.js +0 -31
  141. package/dist/prod/packages/shared-chunks/helper-DkXiTBjc.js +0 -310
  142. package/dist/prod/packages/shared-chunks/setup-registry-U-6VaNQG.js +0 -74
  143. package/dist/prod/packages/shared-chunks/tracked-B9380JtC.js +0 -132
  144. package/dist/prod/packages/shared-chunks/tracked-data-CHq42QHb.js +0 -31
@@ -59,7 +59,7 @@ declare module '@ember/renderer' {
59
59
  @returns {Promise<void>} a promise which fulfills when rendering has completed
60
60
  @public
61
61
  */
62
- export { renderSettled } from "@ember/-internals/glimmer/lib/renderer";
62
+ export { renderSettled } from "@ember/-internals/glimmer/lib/base-renderer";
63
63
  /**
64
64
  * Render a component into a DOM element.
65
65
  *
@@ -76,5 +76,5 @@ declare module '@ember/renderer' {
76
76
  * @param {Object} [options.args] Optionally pass args in to the component. These may be reactive as long as it is an object or object-like
77
77
  * @public
78
78
  */
79
- export { renderComponent } from "@ember/-internals/glimmer/lib/renderer";
79
+ export { renderComponent } from "@ember/-internals/glimmer/lib/base-renderer";
80
80
  }
@@ -1,6 +1,7 @@
1
1
  declare module '@glimmer/tracking' {
2
2
  export { tracked } from "@ember/-internals/metal/lib/tracked";
3
3
  export { cached } from "@ember/-internals/metal/lib/cached";
4
+ export type { Reactive, ReadOnlyReactive, TrackedValue, } from "@glimmer/validator/lib/tracked-value";
4
5
  /**
5
6
  In order to tell Ember a value might change, we need to mark it as trackable.
6
7
  Trackable values are values that:
@@ -36,7 +37,7 @@ declare module '@glimmer/tracking' {
36
37
  plusOne() {
37
38
  this.count += 1;
38
39
  }
39
-
40
+
40
41
  <template>
41
42
  <div>Count: {{this.count}}</div>
42
43
  <div>Times Ten: {{this.timesTen}}</div>
@@ -141,6 +142,74 @@ declare module '@glimmer/tracking' {
141
142
  });
142
143
  ```
143
144
 
145
+ Calling `tracked` with an initial value creates a standalone reactive
146
+ value, usable outside of classes:
147
+
148
+ ```js
149
+ import { tracked } from '@glimmer/tracking';
150
+
151
+ const count = tracked(0);
152
+
153
+ count.value; // read the value, entangling with any tracking context
154
+ count.value = 1; // write the value, notifying consumers
155
+ count.get(); // function shorthand for reading
156
+ count.set(2); // function shorthand for writing
157
+ count.update((n) => n + 1); // write based on the current value, without entangling
158
+ count.freeze(); // prevent all future writes
159
+ ```
160
+
161
+ Reading `value` in a template (or in a getter used by a template) will
162
+ rerender just like a `@tracked` property:
163
+
164
+ ```gjs
165
+ import { tracked } from '@glimmer/tracking';
166
+ import { on } from '@ember/modifier';
167
+
168
+ const count = tracked(0);
169
+ const increment = () => count.value++;
170
+
171
+ <template>
172
+ Count is: {{count.value}}
173
+
174
+ <button {{on "click" increment}}>add one</button>
175
+ </template>
176
+ ```
177
+
178
+ This form accepts an options object containing an `equals` function, which
179
+ decides whether a written value should notify consumers (it defaults to
180
+ `Object.is`), and a `description` used for debugging:
181
+
182
+ ```js
183
+ const count = tracked(0, { equals: (a, b) => a === b });
184
+
185
+ count.value = 0; // does not notify consumers, the value did not change
186
+ ```
187
+
188
+ Note: when `tracked` is called with a single plain object whose keys are all
189
+ drawn from `value`, `initializer`, `equals`, and `description`, it is treated
190
+ as the configuration object for a decorator (or classic-class field), not as a
191
+ standalone value wrapping that object. To create a standalone reactive value
192
+ around such an object, pass it as an initial value and include a (possibly
193
+ empty) options argument: `tracked({ value: 5 }, {})`.
194
+
195
+ The `@tracked` decorator accepts the same options. By default, setting a
196
+ `@tracked` property always notifies consumers, even when setting the
197
+ property to the same value; passing `equals` opts in to equality-based
198
+ notification instead:
199
+
200
+ ```js
201
+ import { tracked } from '@glimmer/tracking';
202
+
203
+ class Counter {
204
+ @tracked({ equals: (a, b) => a === b }) count = 0;
205
+
206
+ noop = () => {
207
+ // does not notify consumers, the value did not change
208
+ this.count = this.count;
209
+ };
210
+ }
211
+ ```
212
+
144
213
  @method tracked
145
214
  @static
146
215
  @for @glimmer/tracking
@@ -8,6 +8,7 @@ declare module '@glimmer/validator' {
8
8
  export { debug } from "@glimmer/validator/lib/debug";
9
9
  export { dirtyTagFor, tagFor, type TagMeta, tagMetaFor } from "@glimmer/validator/lib/meta";
10
10
  export { trackedData } from "@glimmer/validator/lib/tracked-data";
11
+ export { type Reactive, type ReadOnlyReactive, TrackedValue, trackedValue, } from "@glimmer/validator/lib/tracked-value";
11
12
  export { beginTrackFrame, beginUntrackFrame, type Cache, consumeTag, createCache, endTrackFrame, endUntrackFrame, getValue, isConst, isTracking, resetTracking, track, untrack, } from "@glimmer/validator/lib/tracking";
12
13
  export { ALLOW_CYCLES, bump, combine, COMPUTE, CONSTANT, CONSTANT_TAG, createTag, createUpdatableTag, CURRENT_TAG, CurrentTag, DIRTY_TAG as dirtyTag, INITIAL, isConstTag, type Revision, UPDATE_TAG as updateTag, validateTag, valueForTag, VOLATILE, VOLATILE_TAG, VolatileTag, } from "@glimmer/validator/lib/validators";
13
14
  export type { CombinatorTag, ConstantTag, DirtyableTag, Tag, UpdatableTag, } from "@glimmer/interfaces";
@@ -0,0 +1,58 @@
1
+ declare module '@glimmer/validator/lib/tracked-value' {
2
+ import type { ReactiveOptions } from "@glimmer/validator/lib/collections/types";
3
+ /**
4
+ * A mutable reactive value.
5
+ *
6
+ * Reading `value` consumes the underlying tag (entangling with any active
7
+ * tracking frame), and writing `value` dirties it.
8
+ */
9
+ export interface Reactive<Value> {
10
+ value: Value;
11
+ }
12
+ /**
13
+ * A reactive value that can only be read.
14
+ */
15
+ export interface ReadOnlyReactive<Value> extends Reactive<Value> {
16
+ readonly value: Value;
17
+ }
18
+ export class TrackedValue<Value = unknown> implements Reactive<Value> {
19
+ #private;
20
+ constructor(value: Value, options: ReactiveOptions<Value>);
21
+ /**
22
+ * The underlying value.
23
+ *
24
+ * Reading entangles with the current tracking frame, and writing notifies
25
+ * consumers (unless the configured `equals` deems the new value equal to
26
+ * the current one).
27
+ */
28
+ get value(): Value;
29
+ set value(value: Value);
30
+ /**
31
+ * Function short-hand for reading `value`.
32
+ */
33
+ get: () => Value;
34
+ /**
35
+ * Function short-hand for assigning `value`.
36
+ *
37
+ * Returns `true` if the value changed (and consumers were notified),
38
+ * `false` if the new value was equal to the current one.
39
+ */
40
+ set: (value: Value) => boolean;
41
+ /**
42
+ * Update the value based on the current value, without consuming it.
43
+ */
44
+ update: (updater: (value: Value) => Value) => void;
45
+ /**
46
+ * Prevents further updates, making the TrackedValue behave as a
47
+ * ReadOnlyReactive.
48
+ */
49
+ freeze: () => void;
50
+ }
51
+ export function trackedValue<Value>(
52
+ value: Value,
53
+ options?: {
54
+ equals?: (a: Value, b: Value) => boolean;
55
+ description?: string;
56
+ }
57
+ ): TrackedValue<Value>;
58
+ }