{"version":3,"file":"ng-vagabond-lab-ng-dsv-storage.mjs","sources":["../../../projects/ng-dsv/storage/service/storage.service.ts","../../../projects/ng-dsv/storage/utils/storage.utils.ts","../../../projects/ng-dsv/storage/store/store.ts","../../../projects/ng-dsv/storage/ng-vagabond-lab-ng-dsv-storage.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class StorageService {\n    public readonly platformService = inject(PlatformService);\n\n    suffixe = signal<string>('');\n\n    setItem(key: string, value: unknown): void {\n        if (this.platformService.isPlatformBrowser()) {\n            localStorage.setItem(key + this.suffixe(), JSON.stringify(value));\n        }\n    }\n\n    parse(value: string) {\n        try {\n            return JSON.parse(value);\n        } catch (exception) {\n            console.error(value, (exception as string).toString().split('\\n').slice(0, 3).join('\\n'));\n            return value;\n        }\n    }\n\n    getItem<T>(key: string): T | null {\n        if (this.platformService.isPlatformBrowser()) {\n            const item = localStorage.getItem(key + this.suffixe());\n            return item ? this.parse(item) : null;\n        }\n        return null;\n    }\n\n    removeItem(key: string): void {\n        if (this.platformService.isPlatformBrowser()) {\n            localStorage.removeItem(key + this.suffixe());\n        }\n    }\n\n    clear(): void {\n        if (this.platformService.isPlatformBrowser()) {\n            localStorage.clear();\n        }\n    }\n}\n","export const removeDuplicate = <U>(datas: U[] = [], name: string = 'id'): U[] => {\n    return datas.filter(\n        (item, index, self) => index === self.findIndex((t) => t[name as keyof U] === item[name as keyof U]),\n    );\n};\n","import { signal } from '@angular/core';\nimport { removeDuplicate } from '../utils/storage.utils';\n\nexport class Store<T> {\n    data = signal<T[]>([]);\n\n    update(id: number, data: T, add?: T) {\n        this.data.update((values) => {\n            values[id] = { ...data, ...add };\n            return [...values];\n        });\n    }\n\n    updateTable(id: number, data: T) {\n        this.data.update((values) => {\n            values[id] = [...(data as T[])] as T;\n            return [...values];\n        });\n    }\n\n    updateForPage(page: number, data: T[]) {\n        this.data.update((values) => {\n            let newValues = page === 1 ? [] : [...values];\n            return [...removeDuplicate([...newValues, ...data])];\n        });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}