brainloper-ui 14.1.0 → 14.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/esm2020/brainloper-ui.mjs +4 -4
  2. package/esm2020/public_api.mjs +56 -51
  3. package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +310 -305
  4. package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +29 -29
  5. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +23 -23
  6. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +83 -83
  7. package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +37 -31
  8. package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +176 -176
  9. package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +728 -652
  10. package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +118 -118
  11. package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +186 -185
  12. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +1 -1
  13. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +1 -1
  14. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +1 -1
  15. package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +222 -222
  16. package/esm2020/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.mjs +80 -80
  17. package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +81 -81
  18. package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +108 -108
  19. package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +18 -0
  20. package/esm2020/src/app/modules/interfaces/buttons/button-icon.mjs +2 -2
  21. package/esm2020/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +2 -2
  22. package/esm2020/src/app/modules/interfaces/combos/combos-configuration.mjs +2 -2
  23. package/esm2020/src/app/modules/interfaces/data-table/params.mjs +2 -2
  24. package/esm2020/src/app/modules/interfaces/data-table/rules.mjs +2 -2
  25. package/esm2020/src/app/modules/interfaces/data-table/table-columns.mjs +2 -2
  26. package/esm2020/src/app/modules/interfaces/data-table/table-configuration.mjs +2 -2
  27. package/esm2020/src/app/modules/interfaces/enum/enumActions.mjs +8 -7
  28. package/esm2020/src/app/modules/interfaces/enum/enumRules.mjs +8 -8
  29. package/esm2020/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +2 -2
  30. package/esm2020/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +2 -2
  31. package/esm2020/src/app/modules/interfaces/filters/header-filters.mjs +2 -2
  32. package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +8 -8
  33. package/esm2020/src/app/modules/interfaces/report/template-pdf-ot.mjs +2 -2
  34. package/esm2020/src/app/modules/interfaces/report/template-pfd-fo.mjs +2 -2
  35. package/esm2020/src/app/modules/services/crypto.service.mjs +37 -37
  36. package/esm2020/src/app/modules/services/export-data.service.mjs +166 -166
  37. package/esm2020/src/app/modules/services/file-forms.service.mjs +24 -24
  38. package/esm2020/src/app/modules/services/functions.service.mjs +54 -54
  39. package/esm2020/src/app/modules/services/generate-pdf.service.mjs +58 -58
  40. package/esm2020/src/app/modules/services/http.service.mjs +97 -154
  41. package/esm2020/src/app/modules/services/loading/loading.component.mjs +28 -28
  42. package/esm2020/src/app/modules/services/local-storage.service.mjs +115 -115
  43. package/esm2020/src/app/modules/services/message.service.mjs +200 -200
  44. package/esm2020/src/app/modules/services/screen-size-util.mjs +6 -6
  45. package/esm2020/src/app/modules/services/session.service.mjs +42 -42
  46. package/fesm2015/brainloper-ui.mjs +2819 -2769
  47. package/fesm2015/brainloper-ui.mjs.map +1 -1
  48. package/fesm2020/brainloper-ui.mjs +2779 -2733
  49. package/fesm2020/brainloper-ui.mjs.map +1 -1
  50. package/index.d.ts +5 -5
  51. package/package.json +3 -1
  52. package/public_api.d.ts +55 -50
  53. package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +62 -73
  54. package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +13 -13
  55. package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +10 -10
  56. package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +24 -24
  57. package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +15 -12
  58. package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +46 -46
  59. package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +125 -119
  60. package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +21 -21
  61. package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +42 -42
  62. package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +2 -2
  63. package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +2 -2
  64. package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +2 -2
  65. package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +30 -30
  66. package/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.d.ts +35 -35
  67. package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +36 -36
  68. package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +26 -26
  69. package/src/app/modules/directives/carousel-item.directive.d.ts +9 -0
  70. package/src/app/modules/interfaces/buttons/button-icon.d.ts +9 -9
  71. package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +6 -6
  72. package/src/app/modules/interfaces/combos/combos-configuration.d.ts +13 -13
  73. package/src/app/modules/interfaces/data-table/params.d.ts +7 -7
  74. package/src/app/modules/interfaces/data-table/rules.d.ts +8 -8
  75. package/src/app/modules/interfaces/data-table/table-columns.d.ts +25 -25
  76. package/src/app/modules/interfaces/data-table/table-configuration.d.ts +26 -25
  77. package/src/app/modules/interfaces/enum/enumActions.d.ts +6 -5
  78. package/src/app/modules/interfaces/enum/enumRules.d.ts +6 -6
  79. package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +4 -4
  80. package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +13 -13
  81. package/src/app/modules/interfaces/filters/header-filters.d.ts +13 -13
  82. package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +10 -10
  83. package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +19 -19
  84. package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +20 -20
  85. package/src/app/modules/services/crypto.service.d.ts +10 -10
  86. package/src/app/modules/services/export-data.service.d.ts +18 -18
  87. package/src/app/modules/services/file-forms.service.d.ts +7 -7
  88. package/src/app/modules/services/functions.service.d.ts +13 -13
  89. package/src/app/modules/services/generate-pdf.service.d.ts +12 -12
  90. package/src/app/modules/services/http.service.d.ts +22 -21
  91. package/src/app/modules/services/loading/loading.component.d.ts +15 -15
  92. package/src/app/modules/services/local-storage.service.d.ts +49 -49
  93. package/src/app/modules/services/message.service.d.ts +23 -23
  94. package/src/app/modules/services/screen-size-util.d.ts +3 -3
  95. package/src/app/modules/services/session.service.d.ts +14 -14
@@ -1,115 +1,115 @@
1
- import { compress, decompress } from 'lz-string';
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class LocalStorageService {
5
- constructor() {
6
- this.prefix = 'bl-f';
7
- this.store = window.localStorage;
8
- this.prefix += '.';
9
- }
10
- /**
11
- * set key in local storage
12
- * @param key key
13
- * @param value value
14
- */
15
- set(key, value) {
16
- key = this.prefix + key;
17
- this.store.setItem(key, compress(JSON.stringify(value))); // compress data
18
- return true;
19
- }
20
- /**
21
- * get key in local storage
22
- * @param key key
23
- * @returns value as object
24
- */
25
- get(key) {
26
- key = this.prefix + key;
27
- const datacompressed = this.store.getItem(key);
28
- if (!datacompressed) {
29
- return null;
30
- }
31
- const item = decompress(datacompressed); // decompress
32
- return JSON.parse(item);
33
- }
34
- /**
35
- * remove a key
36
- * @param key key to remove
37
- * @returns boolean
38
- */
39
- remove(key) {
40
- key = this.prefix + key;
41
- this.store.removeItem(key);
42
- return true;
43
- }
44
- /**
45
- * clear all
46
- * @returns boolean
47
- */
48
- clear() {
49
- this.store.clear();
50
- return true;
51
- }
52
- /**
53
- * get all keys present in local storage
54
- * @returns array of keys
55
- */
56
- getAllKeys() {
57
- let keys = [];
58
- for (let index = 0; index < this.store.length; index++) {
59
- const key = this.store.key(index);
60
- if (key.indexOf(this.prefix) === 0) {
61
- keys.push(key.substr(this.prefix.length));
62
- }
63
- }
64
- return keys;
65
- }
66
- /**
67
- * set key with expire time
68
- * @param key key
69
- * @param value value
70
- * @returns true if set correctly
71
- */
72
- setWhitExpiry(key, value) {
73
- const now = new Date();
74
- const ttl = 3600 * 1000;
75
- const item = {
76
- value: value,
77
- expiry: now.getTime() + ttl,
78
- };
79
- key = this.prefix + key;
80
- this.store.setItem(key, compress(JSON.stringify(item))); // compress data
81
- return true;
82
- }
83
- /**
84
- * return key with expire time
85
- * @param key key
86
- * @returns return object with data or null if key expired
87
- */
88
- getWithExpiry(key) {
89
- key = this.prefix + key;
90
- const datacompressed = this.store.getItem(key);
91
- if (!datacompressed) {
92
- return null;
93
- }
94
- const itemStr = decompress(datacompressed); // decompress
95
- const item = JSON.parse(itemStr);
96
- const now = new Date();
97
- if (!item) {
98
- return null;
99
- }
100
- if (now.getTime() > item.expiry) {
101
- this.store.removeItem(key);
102
- return null;
103
- }
104
- return item.value;
105
- }
106
- }
107
- LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
- LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
110
- type: Injectable,
111
- args: [{
112
- providedIn: 'root',
113
- }]
114
- }], ctorParameters: function () { return []; } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCO1FBRlEsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixVQUFLLEdBQVEsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUMxQixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFQTs7OztPQUlHO0lBQ0osR0FBRyxDQUFJLEdBQVc7UUFDaEIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQVcsQ0FBQyxDQUFDLGFBQWE7UUFDaEUsT0FBTyxJQUFJLENB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bXBvcnQgeyBjb21wcmVzcywgZGVjb21wcmVzcyB9IGZyb20gJ2x6LXN0cmluZyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIHByZWZpeDogc3RyaW5nID0gJ2JsLWYnO1xyXG4gIHByaXZhdGUgc3RvcmU6IGFueSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnByZWZpeCArPSAnLic7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzZXQga2V5IGluIGxvY2FsIHN0b3JhZ2VcclxuICAgKiBAcGFyYW0ga2V5ICBrZXlcclxuICAgKiBAcGFyYW0gdmFsdWUgIHZhbHVlXHJcbiAgICovXHJcbiAgc2V0PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCkgOiBib29sZWFue1xyXG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XHJcbiAgICB0aGlzLnN0b3JlLnNldEl0ZW0oa2V5LCBjb21wcmVzcyhKU09OLnN0cmluZ2lmeSh2YWx1ZSkpKTsgLy8gY29tcHJlc3MgZGF0YVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAgLyoqXHJcbiAgICAqIGdldCBrZXkgaW4gbG9jYWwgc3RvcmFnZVxyXG4gICAgKiBAcGFyYW0ga2V5ICBrZXlcclxuICAgICogQHJldHVybnMgIHZhbHVlIGFzIG9iamVjdFxyXG4gICAgKi9cclxuICBnZXQ8VD4oa2V5OiBzdHJpbmcpIDogVCB8IG51bGwge1xyXG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XHJcbiAgICBjb25zdCBkYXRhY29tcHJlc3NlZCA9IHRoaXMuc3RvcmUuZ2V0SXRlbShrZXkpO1xyXG4gICAgaWYgKCFkYXRhY29tcHJlc3NlZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSBkZWNvbXByZXNzKGRhdGFjb21wcmVzc2VkKSBhcyBzdHJpbmc7IC8vIGRlY29tcHJlc3NcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0pIGFzIFQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJlbW92ZSBhIGtleVxyXG4gICAqIEBwYXJhbSBrZXkga2V5IHRvIHJlbW92ZVxyXG4gICAqIEByZXR1cm5zIGJvb2xlYW5cclxuICAgKi9cclxuICByZW1vdmUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xyXG4gICAgdGhpcy5zdG9yZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogY2xlYXIgYWxsXHJcbiAgICogQHJldHVybnMgYm9vbGVhblxyXG4gICAqL1xyXG4gIGNsZWFyKCk6Ym9vbGVhbntcclxuICAgIHRoaXMuc3RvcmUuY2xlYXIoKVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgYWxsIGtleXMgcHJlc2VudCBpbiBsb2NhbCBzdG9yYWdlXHJcbiAgICogQHJldHVybnMgIGFycmF5IG9mIGtleXNcclxuICAgKi9cclxuICBnZXRBbGxLZXlzKCk6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgbGV0IGtleXMgPSBbXTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnN0b3JlLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JlLmtleShpbmRleCk7XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZih0aGlzLnByZWZpeCkgPT09IDApIHtcclxuICAgICAgICBrZXlzLnB1c2goa2V5LnN1YnN0cih0aGlzLnByZWZpeC5sZW5ndGgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzZXQga2V5IHdpdGggZXhwaXJlIHRpbWVcclxuICAgKiBAcGFyYW0ga2V5IGtleVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAgdmFsdWVcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHNldCBjb3JyZWN0bHlcclxuICAgKi9cclxuICBzZXRXaGl0RXhwaXJ5PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IHR0bCA9IDM2MDAgKiAxMDAwO1xyXG4gICAgY29uc3QgaXRlbSA9IHtcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICBleHBpcnk6IG5vdy5nZXRUaW1lKCkgKyB0dGwsXHJcbiAgICB9O1xyXG5cclxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xyXG4gICAgdGhpcy5zdG9yZS5zZXRJdGVtKGtleSwgY29tcHJlc3MoSlNPTi5zdHJpbmdpZnkoaXRlbSkpKTsgLy8gY29tcHJlc3MgZGF0YVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gLyoqXHJcbiAgKiByZXR1cm4ga2V5IHdpdGggZXhwaXJlIHRpbWVcclxuICAqIEBwYXJhbSBrZXkga2V5XHJcbiAgKiBAcmV0dXJucyByZXR1cm4gb2JqZWN0IHdpdGggZGF0YSBvciBudWxsIGlmIGtleSBleHBpcmVkXHJcbiAgKi9cclxuXHJcbiAgZ2V0V2l0aEV4cGlyeTxUPihrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcclxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xyXG4gICAgY29uc3QgZGF0YWNvbXByZXNzZWQgPSB0aGlzLnN0b3JlLmdldEl0ZW0oa2V5KTtcclxuICAgIGlmICghZGF0YWNvbXByZXNzZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtU3RyID0gZGVjb21wcmVzcyhkYXRhY29tcHJlc3NlZCkgYXMgc3RyaW5nOyAvLyBkZWNvbXByZXNzXHJcblxyXG4gICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoaXRlbVN0cik7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vdy5nZXRUaW1lKCkgPiBpdGVtLmV4cGlyeSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbS52YWx1ZSBhcyBUO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { compress, decompress } from 'lz-string';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class LocalStorageService {
5
+ constructor() {
6
+ this.prefix = 'bl-f';
7
+ this.store = window.localStorage;
8
+ this.prefix += '.';
9
+ }
10
+ /**
11
+ * set key in local storage
12
+ * @param key key
13
+ * @param value value
14
+ */
15
+ set(key, value) {
16
+ key = this.prefix + key;
17
+ this.store.setItem(key, compress(JSON.stringify(value))); // compress data
18
+ return true;
19
+ }
20
+ /**
21
+ * get key in local storage
22
+ * @param key key
23
+ * @returns value as object
24
+ */
25
+ get(key) {
26
+ key = this.prefix + key;
27
+ const datacompressed = this.store.getItem(key);
28
+ if (!datacompressed) {
29
+ return null;
30
+ }
31
+ const item = decompress(datacompressed); // decompress
32
+ return JSON.parse(item);
33
+ }
34
+ /**
35
+ * remove a key
36
+ * @param key key to remove
37
+ * @returns boolean
38
+ */
39
+ remove(key) {
40
+ key = this.prefix + key;
41
+ this.store.removeItem(key);
42
+ return true;
43
+ }
44
+ /**
45
+ * clear all
46
+ * @returns boolean
47
+ */
48
+ clear() {
49
+ this.store.clear();
50
+ return true;
51
+ }
52
+ /**
53
+ * get all keys present in local storage
54
+ * @returns array of keys
55
+ */
56
+ getAllKeys() {
57
+ let keys = [];
58
+ for (let index = 0; index < this.store.length; index++) {
59
+ const key = this.store.key(index);
60
+ if (key.indexOf(this.prefix) === 0) {
61
+ keys.push(key.substr(this.prefix.length));
62
+ }
63
+ }
64
+ return keys;
65
+ }
66
+ /**
67
+ * set key with expire time
68
+ * @param key key
69
+ * @param value value
70
+ * @returns true if set correctly
71
+ */
72
+ setWhitExpiry(key, value) {
73
+ const now = new Date();
74
+ const ttl = 3600 * 1000;
75
+ const item = {
76
+ value: value,
77
+ expiry: now.getTime() + ttl,
78
+ };
79
+ key = this.prefix + key;
80
+ this.store.setItem(key, compress(JSON.stringify(item))); // compress data
81
+ return true;
82
+ }
83
+ /**
84
+ * return key with expire time
85
+ * @param key key
86
+ * @returns return object with data or null if key expired
87
+ */
88
+ getWithExpiry(key) {
89
+ key = this.prefix + key;
90
+ const datacompressed = this.store.getItem(key);
91
+ if (!datacompressed) {
92
+ return null;
93
+ }
94
+ const itemStr = decompress(datacompressed); // decompress
95
+ const item = JSON.parse(itemStr);
96
+ const now = new Date();
97
+ if (!item) {
98
+ return null;
99
+ }
100
+ if (now.getTime() > item.expiry) {
101
+ this.store.removeItem(key);
102
+ return null;
103
+ }
104
+ return item.value;
105
+ }
106
+ }
107
+ LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
+ LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
110
+ type: Injectable,
111
+ args: [{
112
+ providedIn: 'root',
113
+ }]
114
+ }], ctorParameters: function () { return []; } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCO1FBRlEsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixVQUFLLEdBQVEsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUMxQixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFQTs7OztPQUlHO0lBQ0osR0FBRyxDQUFJLEdBQVc7UUFDaEIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQVcsQ0FBQyxDQUFDLGFBQWE7UUFDaEUsT0FBTyxJQUFJLENB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bXBvcnQgeyBjb21wcmVzcywgZGVjb21wcmVzcyB9IGZyb20gJ2x6LXN0cmluZyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwcmVmaXg6IHN0cmluZyA9ICdibC1mJztcbiAgcHJpdmF0ZSBzdG9yZTogYW55ID0gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wcmVmaXggKz0gJy4nO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCBrZXkgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5ICBrZXlcbiAgICogQHBhcmFtIHZhbHVlICB2YWx1ZVxuICAgKi9cbiAgc2V0PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCkgOiBib29sZWFue1xuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xuICAgIHRoaXMuc3RvcmUuc2V0SXRlbShrZXksIGNvbXByZXNzKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpOyAvLyBjb21wcmVzcyBkYXRhXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAgLyoqXG4gICAgKiBnZXQga2V5IGluIGxvY2FsIHN0b3JhZ2VcbiAgICAqIEBwYXJhbSBrZXkgIGtleVxuICAgICogQHJldHVybnMgIHZhbHVlIGFzIG9iamVjdFxuICAgICovXG4gIGdldDxUPihrZXk6IHN0cmluZykgOiBUIHwgbnVsbCB7XG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XG4gICAgY29uc3QgZGF0YWNvbXByZXNzZWQgPSB0aGlzLnN0b3JlLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIWRhdGFjb21wcmVzc2VkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaXRlbSA9IGRlY29tcHJlc3MoZGF0YWNvbXByZXNzZWQpIGFzIHN0cmluZzsgLy8gZGVjb21wcmVzc1xuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0pIGFzIFQ7XG4gIH1cbiAgLyoqXG4gICAqIHJlbW92ZSBhIGtleVxuICAgKiBAcGFyYW0ga2V5IGtleSB0byByZW1vdmVcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcmVtb3ZlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XG4gICAgdGhpcy5zdG9yZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAgIC8qKlxuICAgKiBjbGVhciBhbGxcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgY2xlYXIoKTpib29sZWFue1xuICAgIHRoaXMuc3RvcmUuY2xlYXIoKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhbGwga2V5cyBwcmVzZW50IGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgIGFycmF5IG9mIGtleXNcbiAgICovXG4gIGdldEFsbEtleXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgbGV0IGtleXMgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zdG9yZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc3RvcmUua2V5KGluZGV4KTtcbiAgICAgIGlmIChrZXkuaW5kZXhPZih0aGlzLnByZWZpeCkgPT09IDApIHtcbiAgICAgICAga2V5cy5wdXNoKGtleS5zdWJzdHIodGhpcy5wcmVmaXgubGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCBrZXkgd2l0aCBleHBpcmUgdGltZVxuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKiBAcGFyYW0gdmFsdWUgIHZhbHVlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2V0IGNvcnJlY3RseVxuICAgKi9cbiAgc2V0V2hpdEV4cGlyeTxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHR0bCA9IDM2MDAgKiAxMDAwO1xuICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcnk6IG5vdy5nZXRUaW1lKCkgKyB0dGwsXG4gICAgfTtcblxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xuICAgIHRoaXMuc3RvcmUuc2V0SXRlbShrZXksIGNvbXByZXNzKEpTT04uc3RyaW5naWZ5KGl0ZW0pKSk7IC8vIGNvbXByZXNzIGRhdGFcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuIC8qKlxuICAqIHJldHVybiBrZXkgd2l0aCBleHBpcmUgdGltZVxuICAqIEBwYXJhbSBrZXkga2V5XG4gICogQHJldHVybnMgcmV0dXJuIG9iamVjdCB3aXRoIGRhdGEgb3IgbnVsbCBpZiBrZXkgZXhwaXJlZFxuICAqL1xuXG4gIGdldFdpdGhFeHBpcnk8VD4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XG4gICAgY29uc3QgZGF0YWNvbXByZXNzZWQgPSB0aGlzLnN0b3JlLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIWRhdGFjb21wcmVzc2VkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaXRlbVN0ciA9IGRlY29tcHJlc3MoZGF0YWNvbXByZXNzZWQpIGFzIHN0cmluZzsgLy8gZGVjb21wcmVzc1xuXG4gICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoaXRlbVN0cik7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAobm93LmdldFRpbWUoKSA+IGl0ZW0uZXhwaXJ5KSB7XG4gICAgICB0aGlzLnN0b3JlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS52YWx1ZSBhcyBUO1xuICB9XG59XG4iXX0=