{"version":3,"file":"List.mjs","sourceRoot":"","sources":["../../src/List.ts"],"names":[],"mappings":"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","sourcesContent":["import { isArrayLike, isIterable, Iterable, IterableIterator, ShimIterator } from '@dojo/shim/iterator';\nimport WeakMap from '@dojo/shim/WeakMap';\n\nconst listItems: WeakMap<List<any>, any[]> = new WeakMap<List<any>, any[]>();\n\nfunction getListItems<T>(list: List<T>): T[] {\n\treturn (listItems.get(list) || []) as T[];\n}\n\nexport default class List<T> {\n\t[Symbol.iterator]() {\n\t\treturn this.values();\n\t}\n\n\tget size(): number {\n\t\treturn getListItems(this).length;\n\t}\n\n\tconstructor(source?: Iterable<T> | ArrayLike<T>) {\n\t\tlistItems.set(this, []);\n\n\t\tif (source) {\n\t\t\tif (isArrayLike(source)) {\n\t\t\t\tfor (let i = 0; i < source.length; i++) {\n\t\t\t\t\tthis.add(source[i]);\n\t\t\t\t}\n\t\t\t} else if (isIterable(source)) {\n\t\t\t\tfor (const item of source) {\n\t\t\t\t\tthis.add(item);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tadd(value: T): this {\n\t\tgetListItems(this).push(value);\n\t\treturn this;\n\t}\n\n\tclear(): void {\n\t\tlistItems.set(this, []);\n\t}\n\n\tdelete(idx: number): boolean {\n\t\tif (idx < this.size) {\n\t\t\tgetListItems(this).splice(idx, 1);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tentries(): IterableIterator<[number, T]> {\n\t\treturn new ShimIterator<[number, T]>(getListItems(this).map<[number, T]>((value, index) => [index, value]));\n\t}\n\n\tforEach(fn: (value: T, idx: number, list: this) => void, thisArg?: any): void {\n\t\tgetListItems(this).forEach(fn.bind(thisArg ? thisArg : this));\n\t}\n\n\thas(idx: number): boolean {\n\t\treturn this.size > idx;\n\t}\n\n\tincludes(value: T): boolean {\n\t\treturn getListItems(this).indexOf(value) >= 0;\n\t}\n\n\tindexOf(value: T): number {\n\t\treturn getListItems(this).indexOf(value);\n\t}\n\n\tjoin(separator: string = ','): string {\n\t\treturn getListItems(this).join(separator);\n\t}\n\n\tkeys(): IterableIterator<number> {\n\t\treturn new ShimIterator<number>(getListItems(this).map<number>((_, index) => index));\n\t}\n\n\tlastIndexOf(value: T): number {\n\t\treturn getListItems(this).lastIndexOf(value);\n\t}\n\n\tpush(value: T): void {\n\t\tthis.add(value);\n\t}\n\n\tpop(): T | undefined {\n\t\treturn getListItems(this).pop();\n\t}\n\n\tsplice(start: number, deleteCount?: number, ...newItems: T[]): T[] {\n\t\treturn getListItems(this).splice(\n\t\t\tstart,\n\t\t\tdeleteCount === undefined ? this.size - start : deleteCount,\n\t\t\t...newItems\n\t\t);\n\t}\n\n\tvalues(): IterableIterator<T> {\n\t\treturn new ShimIterator<T>(getListItems(this).map<T>((value) => value));\n\t}\n}\n"]}