{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/grid/utils.ts","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { FetcherOptions, FetcherResult } from './interfaces';\nimport { findIndex } from '@dojo/framework/shim/array';\n\nexport function sorter(data: any[], { sort }: FetcherOptions): any[] {\n\tconst temp = [...data];\n\tif (sort) {\n\t\ttemp.sort((a, b) => {\n\t\t\tconst left = sort.direction === 'asc' ? b : a;\n\t\t\tconst right = sort.direction === 'asc' ? a : b;\n\t\t\tif (left[sort.columnId] < right[sort.columnId]) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (left[sort.columnId] > right[sort.columnId]) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\t}\n\treturn temp;\n}\n\nexport function filterer(data: any[], { filter }: FetcherOptions): any[] {\n\tif (filter) {\n\t\treturn data.filter((item) => {\n\t\t\tlet match = true;\n\t\t\tObject.keys(filter).forEach((columnId) => {\n\t\t\t\tif (item[columnId].toLowerCase().indexOf(filter[columnId].toLowerCase()) === -1) {\n\t\t\t\t\tmatch = false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn match;\n\t\t});\n\t}\n\treturn [...data];\n}\n\nexport async function createFetcherResult(\n\tdata: any[],\n\tpage: number,\n\tpageSize: number\n): Promise<FetcherResult> {\n\tconst temp = [...data];\n\tconst block = [...temp].splice((page - 1) * pageSize, pageSize);\n\treturn { data: block, meta: { total: temp.length } };\n}\n\nexport function createUpdater<S extends any>(data: S[], idColumn: string = 'id') {\n\treturn (updatedItem: S) => {\n\t\tconst index = findIndex(data, (item: any) => {\n\t\t\treturn item[idColumn] === (updatedItem as any)[idColumn];\n\t\t});\n\t\tdata[index] = updatedItem;\n\t};\n}\n\nexport function createFetcher(data: any[]) {\n\treturn async (\n\t\tpage: number,\n\t\tpageSize: number,\n\t\toptions: FetcherOptions = {}\n\t): Promise<FetcherResult> => {\n\t\treturn createFetcherResult(sorter(filterer(data, options), options), page, pageSize);\n\t};\n}\n"]}