{"version":3,"file":"G2.LocalStorage.js","sourceRoot":"","sources":["../../Shared/G2.LocalStorage.ts"],"names":[],"mappings":";AAAA,IAAU,EAAE,CAuFX;AAvFD,WAAU,EAAE;IACV,IAAiB,YAAY,CAqF5B;IArFD,WAAiB,YAAY;QAe3B,SAAgB,iBAAiB,CAAC,IAAsB;YACtD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAFe,8BAAiB,oBAEhC,CAAA;QAMD,SAAgB,gBAAgB,CAAe,IAAsB;YACnE,MAAM,eAAe,GAAW,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7E,IAAI,eAAe,KAAK,IAAI,EAAE;gBAC5B,OAAO,EAAE,CAAC;aACX;YACD,OAAqC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACnE,CAAC;QANe,6BAAgB,mBAM/B,CAAA;QAOD,SAAgB,eAAe,CAAe,IAAsB,EAAE,OAAmC;YACvG,IAAI,GAAG,GAAG,gBAAgB,CAAe,IAAI,CAAC,CAAC;YAC/C,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAClC,eAAe,CAA6B,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QAJe,4BAAe,kBAI9B,CAAA;QAOD,SAAgB,gBAAgB,CAAe,IAAsB,EAAE,QAAsC;YAC3G,IAAI,GAAG,GAAG,gBAAgB,CAAe,IAAI,CAAC,CAAC;YAC/C,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;gBACzB,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAChC;YACD,eAAe,CAA6B,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;QANe,6BAAgB,mBAM/B,CAAA;QAQD,SAAS,aAAa,CAAe,YAA0C,EAAE,OAAmC;YAClH,IAAI,YAAY,KAAK,IAAI,EAAE;gBACzB,YAAY,GAAG,EAAE,CAAC;aACnB;YACD,IAAI,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,WAAW,KAAK,SAAS,EAAE;gBAC7B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5B;iBAAM;gBACL,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aACnC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAOD,SAAS,eAAe,CAAI,IAAsB,EAAE,GAAQ;YAC1D,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;IAEH,CAAC,EArFgB,YAAY,GAAZ,eAAY,KAAZ,eAAY,QAqF5B;AACH,CAAC,EAvFS,EAAE,KAAF,EAAE,QAuFX","sourcesContent":["namespace G2 {\r\n export namespace LocalStorage {\r\n export interface KeyValuePair {\r\n key: TKey,\r\n value: TValue\r\n }\r\n\r\n /** The items Ascribe uses in browser Local Storage */\r\n export const enum LocalStorageName {\r\n AccountList = \"AccountList\"\r\n }\r\n\r\n /**\r\n * Clears the local storage value specified\r\n * @param name\r\n */\r\n export function ClearLocalStorage(name: LocalStorageName): void {\r\n window.localStorage.removeItem(name);\r\n }\r\n\r\n /**\r\n * Gets an array of Key/value pairs from the specified local storage value\r\n * @param name\r\n */\r\n export function GetKeyValuePairs(name: LocalStorageName): KeyValuePair[] {\r\n const localStorageRaw: string = window.localStorage.getItem(name.toString());\r\n if (localStorageRaw === null) {\r\n return [];\r\n }\r\n return []>JSON.parse(localStorageRaw);\r\n }\r\n\r\n /**\r\n * Adds/updates a KeyValuePair to the specified local storage location\r\n * @param name\r\n * @param newPair\r\n */\r\n export function AddKeyValuePair(name: LocalStorageName, newPair: KeyValuePair): void {\r\n let arr = GetKeyValuePairs(name);\r\n arr = addSinglePair(arr, newPair);\r\n SetLocalStorage>(name, arr);\r\n }\r\n\r\n /**\r\n * Adds/updates a range of KeyValuePairs to the specified local storage location\r\n * @param name\r\n * @param newPairs\r\n */\r\n export function AddKeyValuePairs(name: LocalStorageName, newPairs: KeyValuePair[]): void {\r\n let arr = GetKeyValuePairs(name);\r\n for (let pair of newPairs) {\r\n arr = addSinglePair(arr, pair);\r\n }\r\n SetLocalStorage>(name, arr);\r\n }\r\n\r\n //#region Internal functions\r\n /**\r\n * Adds/updates the local storage and saves\r\n * @param currentArray\r\n * @param newPair\r\n */\r\n function addSinglePair(currentArray: KeyValuePair[], newPair: KeyValuePair): KeyValuePair[] {\r\n if (currentArray === null) {\r\n currentArray = [];\r\n }\r\n let currentItem = currentArray.find(x => x.key === newPair.key);\r\n if (currentItem === undefined) {\r\n currentArray.push(newPair);\r\n } else {\r\n currentItem.value = newPair.value;\r\n }\r\n return currentArray;\r\n }\r\n\r\n /**\r\n * Serializes and saves the specified value to Local storage\r\n * @param name\r\n * @param val\r\n */\r\n function SetLocalStorage(name: LocalStorageName, val: T[]): void {\r\n let sKey = name;\r\n let sVal = JSON.stringify(val);\r\n window.localStorage.setItem(sKey, sVal);\r\n }\r\n //#endregion\r\n }\r\n}"]}