declare module '@ember/reactive/collections' { /** * The `@ember/reactive/collections` module contains reactive data structures that fall under the "Collections" category. * * @module @ember/reactive/collections * @public */ /** * A utility for creating tracked arrays, copying the original data so that * mutations to the tracked data don't mutate the original untracked data. * * `trackedArray` can be used in templates and in JavaScript via import. * All property accesses entangle with that property, all property sets dirty * that property, and changes to the collection only render what changed * without causing unneeded renders. * * See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) * * @example * ```javascript * import { trackedArray } from '@ember/reactive/collections'; * import { on } from '@ember/modifier'; * import { fn } from '@ember/helper'; * * const nonTrackedArray = [1, 2, 3]; * const addTo = (arr) => arr.push(Math.random()); * * * ``` * * @method trackedArray * @static * @for @ember/reactive/collections * @param {Array} [data] The initial array data to track * @param {Object} [options] Optional configuration * @param {Function} [options.equals] Custom equality function (defaults to Object.is) * @param {String} [options.description] Description for debugging purposes * @returns {Array} A tracked array that updates reactively * @public */ export { trackedArray } from "@glimmer/validator"; /** * A utility for creating tracked objects, copying the original data so that * mutations to the tracked data don't mutate the original untracked data. * * `trackedObject` can be used in templates and in JavaScript via import. * All property accesses entangle with that property, all property sets dirty * that property, and changes to the collection only render what changed * without causing unneeded renders. * * See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) * * @example * ```gjs * import { trackedObject } from '@ember/reactive/collections'; * import { on } from '@ember/modifier'; * import { fn } from '@ember/helper'; * * const nonTrackedObject = { a: 1 }; * const addTo = (obj) => obj[Math.random()] = Math.random(); * * * ``` * * @method trackedObject * @static * @for @ember/reactive/collections * @param {Object} [data] The initial object data to track * @param {Object} [options] Optional configuration * @param {Function} [options.equals] Custom equality function (defaults to Object.is) * @param {String} [options.description] Description for debugging purposes * @returns {Object} A tracked object that updates reactively * @public */ export { trackedObject } from "@glimmer/validator"; /** * A utility for creating tracked sets, copying the original data so that * mutations to the tracked data don't mutate the original untracked data. * * `trackedSet` can be used in templates and in JavaScript via import. * All property accesses entangle with that property, all property sets dirty * that property, and changes to the collection only render what changed * without causing unneeded renders. * * See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) * * @example * ```gjs * import { trackedSet } from '@ember/reactive/collections'; * import { on } from '@ember/modifier'; * import { fn } from '@ember/helper'; * * const nonTrackedSet = new Set(); * nonTrackedSet.add(1); * const addTo = (set) => set.add(Math.random()); * * * ``` * * @method trackedSet * @static * @for @ember/reactive/collections * @param {Set} [data] The initial Set data to track * @param {Object} [options] Optional configuration * @param {Function} [options.equals] Custom equality function (defaults to Object.is) * @param {String} [options.description] Description for debugging purposes * @returns {Set} A tracked Set that updates reactively * @public */ export { trackedSet } from "@glimmer/validator"; /** * A utility for creating tracked weak sets, copying the original data so that * mutations to the tracked data don't mutate the original untracked data. * * `trackedWeakSet` can be used in templates and in JavaScript via import. * All property accesses entangle with that property, all property sets dirty * that property, and changes to the collection only render what changed * without causing unneeded renders. * * WeakSets hold weak references to their values, allowing garbage collection * when objects are no longer referenced elsewhere. * * See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) * * @example * ```gjs * import { trackedWeakSet } from '@ember/reactive/collections'; * import { on } from '@ember/modifier'; * import { fn } from '@ember/helper'; * * const nonTrackedWeakSet = new WeakSet(); * * * ``` * * @method trackedWeakSet * @static * @for @ember/reactive/collections * @param {WeakSet} [data] The initial WeakSet data to track * @param {Object} [options] Optional configuration * @param {Function} [options.equals] Custom equality function (defaults to Object.is) * @param {String} [options.description] Description for debugging purposes * @returns {WeakSet} A tracked WeakSet that updates reactively * @public */ export { trackedWeakSet } from "@glimmer/validator"; /** * A utility for creating tracked maps, copying the original data so that * mutations to the tracked data don't mutate the original untracked data. * * `trackedMap` can be used in templates and in JavaScript via import. * All property accesses entangle with that property, all property sets dirty * that property, and changes to the collection only render what changed * without causing unneeded renders. * * See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) * * @example * ```gjs * import { trackedMap } from '@ember/reactive/collections'; * import { on } from '@ember/modifier'; * import { fn } from '@ember/helper'; * * const nonTrackedMap = new Map(); * nonTrackedMap.set('a', 1); * const addTo = (map) => map.set(Math.random(), Math.random()); * * * ``` * * @method trackedMap * @static * @for @ember/reactive/collections * @param {Map} [data] The initial Map data to track * @param {Object} [options] Optional configuration * @param {Function} [options.equals] Custom equality function (defaults to Object.is) * @param {String} [options.description] Description for debugging purposes * @returns {Map} A tracked Map that updates reactively * @public */ export { trackedMap } from "@glimmer/validator"; /** * A utility for creating tracked weak maps, copying the original data so that * mutations to the tracked data don't mutate the original untracked data. * * `trackedWeakMap` can be used in templates and in JavaScript via import. * All property accesses entangle with that property, all property sets dirty * that property, and changes to the collection only render what changed * without causing unneeded renders. * * WeakMaps hold weak references to their keys, allowing garbage collection * when key objects are no longer referenced elsewhere. * * See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) * * @example * ```gjs * import { trackedWeakMap } from '@ember/reactive/collections'; * import { on } from '@ember/modifier'; * import { fn } from '@ember/helper'; * * const nonTrackedWeakMap = new WeakMap(); * * * ``` * * @method trackedWeakMap * @static * @for @ember/reactive/collections * @param {WeakMap} [data] The initial WeakMap data to track * @param {Object} [options] Optional configuration * @param {Function} [options.equals] Custom equality function (defaults to Object.is) * @param {String} [options.description] Description for debugging purposes * @returns {WeakMap} A tracked WeakMap that updates reactively * @public */ export { trackedWeakMap } from "@glimmer/validator"; }