@one-paragon/angular-utilities 0.1.16 → 0.1.19

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 (229) hide show
  1. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +12 -12
  2. package/action-state/action-state-ui/action-state-ui.module.d.ts +9 -9
  3. package/action-state/index.d.ts +4 -4
  4. package/action-state/ngrx-ext/ngrx-ext.module.d.ts +8 -8
  5. package/action-state/ngrx.d.ts +31 -31
  6. package/esm2020/action-state/action-state-spinner/action-state-spinner.component.mjs +23 -23
  7. package/esm2020/action-state/action-state-ui/action-state-ui.module.mjs +28 -28
  8. package/esm2020/action-state/index.mjs +8 -8
  9. package/esm2020/action-state/ngrx-ext/ngrx-ext.module.mjs +23 -23
  10. package/esm2020/action-state/ngrx.mjs +42 -42
  11. package/esm2020/http-request-state/HttpRequestStateFactory.mjs +26 -26
  12. package/esm2020/http-request-state/HttpRequestStateStore.mjs +97 -78
  13. package/esm2020/http-request-state/directives/HttpStateDirectiveBase.mjs +33 -33
  14. package/esm2020/http-request-state/directives/http-error-state-directive.mjs +28 -28
  15. package/esm2020/http-request-state/directives/http-inProgress-state-directive.mjs +28 -28
  16. package/esm2020/http-request-state/directives/http-notStarted-state-directive.mjs +28 -28
  17. package/esm2020/http-request-state/directives/http-success-state-directive.mjs +28 -28
  18. package/esm2020/http-request-state/directives/index.mjs +5 -5
  19. package/esm2020/http-request-state/directives/request-state-directive.mjs +56 -56
  20. package/esm2020/http-request-state/helpers.mjs +22 -19
  21. package/esm2020/http-request-state/http-request-state.mjs +38 -38
  22. package/esm2020/http-request-state/http-state-module.mjs +40 -40
  23. package/esm2020/http-request-state/index.mjs +6 -6
  24. package/esm2020/http-request-state/rxjs/getRequestorBody.mjs +3 -3
  25. package/esm2020/http-request-state/rxjs/getRequestorState.mjs +2 -2
  26. package/esm2020/http-request-state/rxjs/index.mjs +4 -4
  27. package/esm2020/http-request-state/rxjs/tapError.mjs +11 -11
  28. package/esm2020/http-request-state/rxjs/tapSuccess.mjs +11 -11
  29. package/esm2020/http-request-state/types.mjs +16 -15
  30. package/esm2020/ngrx/actionable-selector.mjs +76 -76
  31. package/esm2020/ngrx/index.mjs +1 -1
  32. package/esm2020/one-paragon-angular-utilities.mjs +4 -4
  33. package/esm2020/public-api.mjs +19 -19
  34. package/esm2020/rxjs/defaultShareReplay.mjs +6 -6
  35. package/esm2020/rxjs/index.mjs +5 -5
  36. package/esm2020/rxjs/mapError.mjs +7 -7
  37. package/esm2020/rxjs/rxjs-operators.mjs +91 -91
  38. package/esm2020/rxjs/subjectifier.mjs +15 -15
  39. package/esm2020/table-builder/classes/DefaultSettings.mjs +5 -5
  40. package/esm2020/table-builder/classes/GenericTableDataSource.mjs +12 -12
  41. package/esm2020/table-builder/classes/MatTableObservableDataSource.mjs +20 -20
  42. package/esm2020/table-builder/classes/TableBuilderConfig.mjs +2 -2
  43. package/esm2020/table-builder/classes/TableState.mjs +31 -31
  44. package/esm2020/table-builder/classes/data-filter.mjs +26 -26
  45. package/esm2020/table-builder/classes/display-col.mjs +1 -1
  46. package/esm2020/table-builder/classes/filter-info.mjs +71 -71
  47. package/esm2020/table-builder/classes/table-builder-general-settings.mjs +67 -67
  48. package/esm2020/table-builder/classes/table-builder.mjs +61 -61
  49. package/esm2020/table-builder/classes/table-store.mjs +292 -292
  50. package/esm2020/table-builder/components/array-column.component.mjs +32 -32
  51. package/esm2020/table-builder/components/column-builder/column-builder.component.mjs +111 -111
  52. package/esm2020/table-builder/components/date-filter/date-filter.component.mjs +24 -24
  53. package/esm2020/table-builder/components/filter/filter.component.mjs +53 -53
  54. package/esm2020/table-builder/components/filter/in-list/in-list-filter.component.mjs +91 -91
  55. package/esm2020/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +44 -44
  56. package/esm2020/table-builder/components/generic-table/generic-table.component.mjs +198 -198
  57. package/esm2020/table-builder/components/generic-table/paginator.component.mjs +59 -59
  58. package/esm2020/table-builder/components/group-by-list/group-by-list.component.mjs +21 -21
  59. package/esm2020/table-builder/components/header-menu/header-menu.component.mjs +89 -89
  60. package/esm2020/table-builder/components/in-filter/in-filter.component.mjs +65 -65
  61. package/esm2020/table-builder/components/index.mjs +10 -10
  62. package/esm2020/table-builder/components/initialization-component/initialization-component.mjs +33 -33
  63. package/esm2020/table-builder/components/link-column.component.mjs +66 -66
  64. package/esm2020/table-builder/components/number-filter/number-filter.component.mjs +26 -26
  65. package/esm2020/table-builder/components/sort-menu/sort-menu.component-store.mjs +41 -41
  66. package/esm2020/table-builder/components/sort-menu/sort-menu.component.mjs +75 -75
  67. package/esm2020/table-builder/components/table-container/table-container.mjs +312 -312
  68. package/esm2020/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +42 -42
  69. package/esm2020/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +29 -29
  70. package/esm2020/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +24 -24
  71. package/esm2020/table-builder/directives/custom-cell-directive.mjs +58 -58
  72. package/esm2020/table-builder/directives/index.mjs +6 -6
  73. package/esm2020/table-builder/directives/multi-sort.directive.mjs +42 -42
  74. package/esm2020/table-builder/directives/resize-column.directive.mjs +85 -85
  75. package/esm2020/table-builder/directives/table-wrapper.directive.mjs +26 -26
  76. package/esm2020/table-builder/directives/tb-filter.directive.mjs +403 -403
  77. package/esm2020/table-builder/enums/filterTypes.mjs +59 -59
  78. package/esm2020/table-builder/functions/boolean-filter-function.mjs +9 -9
  79. package/esm2020/table-builder/functions/date-filter-function.mjs +32 -32
  80. package/esm2020/table-builder/functions/download-data.mjs +11 -11
  81. package/esm2020/table-builder/functions/null-filter-function.mjs +7 -7
  82. package/esm2020/table-builder/functions/number-filter-function.mjs +31 -31
  83. package/esm2020/table-builder/functions/sort-data-function.mjs +4 -4
  84. package/esm2020/table-builder/functions/string-filter-function.mjs +40 -40
  85. package/esm2020/table-builder/interfaces/ColumnInfo.mjs +1 -1
  86. package/esm2020/table-builder/interfaces/dictionary.mjs +1 -1
  87. package/esm2020/table-builder/interfaces/report-def.mjs +34 -34
  88. package/esm2020/table-builder/material.module.mjs +220 -220
  89. package/esm2020/table-builder/ngrx/actions.mjs +4 -4
  90. package/esm2020/table-builder/ngrx/effects.mjs +47 -47
  91. package/esm2020/table-builder/ngrx/reducer.mjs +51 -51
  92. package/esm2020/table-builder/ngrx/selectors.mjs +23 -23
  93. package/esm2020/table-builder/pipes/column-total.pipe.mjs +19 -19
  94. package/esm2020/table-builder/pipes/format-filter-type.pipe.mjs +17 -17
  95. package/esm2020/table-builder/pipes/format-filter-value.pipe.mjs +45 -45
  96. package/esm2020/table-builder/pipes/key-display.mjs +19 -19
  97. package/esm2020/table-builder/services/export-to-csv.service.mjs +84 -84
  98. package/esm2020/table-builder/services/link-creator.service.mjs +42 -42
  99. package/esm2020/table-builder/services/table-template-service.mjs +43 -43
  100. package/esm2020/table-builder/services/transform-creator.mjs +70 -70
  101. package/esm2020/table-builder/table-builder.module.mjs +204 -204
  102. package/esm2020/utilities/directives/auto-focus.directive.mjs +25 -25
  103. package/esm2020/utilities/directives/clickEmitterDirective.mjs +20 -20
  104. package/esm2020/utilities/directives/clickSubject.mjs +26 -26
  105. package/esm2020/utilities/directives/conditional-classes.directive.mjs +35 -35
  106. package/esm2020/utilities/directives/dialog-service.mjs +24 -24
  107. package/esm2020/utilities/directives/dialog.mjs +130 -130
  108. package/esm2020/utilities/directives/mat-toggle-group-directive.mjs +57 -57
  109. package/esm2020/utilities/directives/prevent-enter.directive.mjs +18 -18
  110. package/esm2020/utilities/directives/stop-propagation.directive.mjs +24 -24
  111. package/esm2020/utilities/directives/styler.mjs +25 -25
  112. package/esm2020/utilities/directives/trim-whitespace.directive.mjs +29 -29
  113. package/esm2020/utilities/index.mjs +16 -16
  114. package/esm2020/utilities/module.mjs +91 -91
  115. package/esm2020/utilities/pipes/function.pipe.mjs +20 -20
  116. package/esm2020/utilities/pipes/phone.pipe.mjs +19 -19
  117. package/esm2020/utilities/pipes/space-case.pipes.mjs +28 -28
  118. package/fesm2015/one-paragon-angular-utilities.mjs +4382 -4358
  119. package/fesm2015/one-paragon-angular-utilities.mjs.map +1 -1
  120. package/fesm2020/one-paragon-angular-utilities.mjs +4350 -4328
  121. package/fesm2020/one-paragon-angular-utilities.mjs.map +1 -1
  122. package/http-request-state/HttpRequestStateFactory.d.ts +14 -14
  123. package/http-request-state/HttpRequestStateStore.d.ts +48 -40
  124. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +16 -16
  125. package/http-request-state/directives/http-error-state-directive.d.ts +12 -12
  126. package/http-request-state/directives/http-inProgress-state-directive.d.ts +12 -12
  127. package/http-request-state/directives/http-notStarted-state-directive.d.ts +12 -12
  128. package/http-request-state/directives/http-success-state-directive.d.ts +14 -14
  129. package/http-request-state/directives/index.d.ts +5 -5
  130. package/http-request-state/directives/request-state-directive.d.ts +29 -29
  131. package/http-request-state/helpers.d.ts +9 -8
  132. package/http-request-state/http-request-state.d.ts +12 -12
  133. package/http-request-state/http-state-module.d.ts +11 -11
  134. package/http-request-state/index.d.ts +6 -6
  135. package/http-request-state/rxjs/getRequestorBody.d.ts +3 -3
  136. package/http-request-state/rxjs/getRequestorState.d.ts +3 -3
  137. package/http-request-state/rxjs/index.d.ts +4 -4
  138. package/http-request-state/rxjs/tapError.d.ts +3 -3
  139. package/http-request-state/rxjs/tapSuccess.d.ts +3 -3
  140. package/http-request-state/types.d.ts +36 -32
  141. package/index.d.ts +5 -5
  142. package/ngrx/actionable-selector.d.ts +15 -15
  143. package/ngrx/index.d.ts +1 -1
  144. package/package.json +1 -1
  145. package/public-api.d.ts +15 -15
  146. package/rxjs/defaultShareReplay.d.ts +2 -2
  147. package/rxjs/index.d.ts +4 -4
  148. package/rxjs/mapError.d.ts +2 -2
  149. package/rxjs/rxjs-operators.d.ts +12 -12
  150. package/rxjs/subjectifier.d.ts +9 -9
  151. package/table-builder/classes/DefaultSettings.d.ts +8 -8
  152. package/table-builder/classes/GenericTableDataSource.d.ts +8 -8
  153. package/table-builder/classes/MatTableObservableDataSource.d.ts +9 -9
  154. package/table-builder/classes/TableBuilderConfig.d.ts +19 -19
  155. package/table-builder/classes/TableState.d.ts +46 -46
  156. package/table-builder/classes/data-filter.d.ts +9 -9
  157. package/table-builder/classes/display-col.d.ts +5 -5
  158. package/table-builder/classes/filter-info.d.ts +40 -40
  159. package/table-builder/classes/table-builder-general-settings.d.ts +43 -43
  160. package/table-builder/classes/table-builder.d.ts +14 -14
  161. package/table-builder/classes/table-store.d.ts +114 -114
  162. package/table-builder/components/array-column.component.d.ts +14 -14
  163. package/table-builder/components/column-builder/column-builder.component.d.ts +50 -50
  164. package/table-builder/components/date-filter/date-filter.component.d.ts +10 -10
  165. package/table-builder/components/filter/filter.component.d.ts +294 -294
  166. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +27 -27
  167. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +16 -16
  168. package/table-builder/components/generic-table/generic-table.component.d.ts +71 -71
  169. package/table-builder/components/generic-table/paginator.component.d.ts +28 -28
  170. package/table-builder/components/group-by-list/group-by-list.component.d.ts +10 -10
  171. package/table-builder/components/header-menu/header-menu.component.d.ts +25 -25
  172. package/table-builder/components/in-filter/in-filter.component.d.ts +22 -22
  173. package/table-builder/components/index.d.ts +9 -9
  174. package/table-builder/components/initialization-component/initialization-component.d.ts +12 -12
  175. package/table-builder/components/link-column.component.d.ts +17 -17
  176. package/table-builder/components/number-filter/number-filter.component.d.ts +12 -12
  177. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +24 -24
  178. package/table-builder/components/sort-menu/sort-menu.component.d.ts +25 -25
  179. package/table-builder/components/table-container/table-container.d.ts +65 -65
  180. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +17 -17
  181. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +14 -14
  182. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +14 -14
  183. package/table-builder/directives/custom-cell-directive.d.ts +19 -19
  184. package/table-builder/directives/index.d.ts +5 -5
  185. package/table-builder/directives/multi-sort.directive.d.ts +11 -11
  186. package/table-builder/directives/resize-column.directive.d.ts +43 -43
  187. package/table-builder/directives/table-wrapper.directive.d.ts +11 -11
  188. package/table-builder/directives/tb-filter.directive.d.ts +120 -120
  189. package/table-builder/enums/filterTypes.d.ts +31 -31
  190. package/table-builder/functions/boolean-filter-function.d.ts +3 -3
  191. package/table-builder/functions/date-filter-function.d.ts +3 -3
  192. package/table-builder/functions/download-data.d.ts +1 -1
  193. package/table-builder/functions/null-filter-function.d.ts +2 -2
  194. package/table-builder/functions/number-filter-function.d.ts +4 -4
  195. package/table-builder/functions/sort-data-function.d.ts +3 -3
  196. package/table-builder/functions/string-filter-function.d.ts +7 -7
  197. package/table-builder/interfaces/ColumnInfo.d.ts +6 -6
  198. package/table-builder/interfaces/dictionary.d.ts +3 -3
  199. package/table-builder/interfaces/report-def.d.ts +135 -135
  200. package/table-builder/material.module.d.ts +34 -34
  201. package/table-builder/ngrx/actions.d.ts +23 -23
  202. package/table-builder/ngrx/effects.d.ts +19 -19
  203. package/table-builder/ngrx/reducer.d.ts +15 -15
  204. package/table-builder/ngrx/selectors.d.ts +22 -22
  205. package/table-builder/pipes/column-total.pipe.d.ts +8 -8
  206. package/table-builder/pipes/format-filter-type.pipe.d.ts +8 -8
  207. package/table-builder/pipes/format-filter-value.pipe.d.ts +14 -14
  208. package/table-builder/pipes/key-display.d.ts +11 -11
  209. package/table-builder/services/export-to-csv.service.d.ts +22 -22
  210. package/table-builder/services/link-creator.service.d.ts +12 -12
  211. package/table-builder/services/table-template-service.d.ts +14 -14
  212. package/table-builder/services/transform-creator.d.ts +19 -19
  213. package/table-builder/table-builder.module.d.ts +45 -45
  214. package/utilities/directives/auto-focus.directive.d.ts +10 -10
  215. package/utilities/directives/clickEmitterDirective.d.ts +7 -7
  216. package/utilities/directives/clickSubject.d.ts +9 -9
  217. package/utilities/directives/conditional-classes.directive.d.ts +14 -14
  218. package/utilities/directives/dialog-service.d.ts +10 -10
  219. package/utilities/directives/dialog.d.ts +45 -45
  220. package/utilities/directives/mat-toggle-group-directive.d.ts +21 -21
  221. package/utilities/directives/prevent-enter.directive.d.ts +6 -6
  222. package/utilities/directives/stop-propagation.directive.d.ts +7 -7
  223. package/utilities/directives/styler.d.ts +9 -9
  224. package/utilities/directives/trim-whitespace.directive.d.ts +9 -9
  225. package/utilities/index.d.ts +15 -15
  226. package/utilities/module.d.ts +19 -19
  227. package/utilities/pipes/function.pipe.d.ts +7 -7
  228. package/utilities/pipes/phone.pipe.d.ts +7 -7
  229. package/utilities/pipes/space-case.pipes.d.ts +17 -17
@@ -1,52 +1,52 @@
1
- import { createReducer, on } from '@ngrx/store';
2
- import * as tableActions from './actions';
3
- export const defaultStorageState = {
4
- globalProfileKeys: ['Default'],
5
- currentGlobalProfile: 'Default',
6
- globalProfiles: {},
7
- localProfiles: {}
8
- };
9
- function loadGlobalStorageState() {
10
- const storage = localStorage.getItem('global-state-storage');
11
- if (storage) {
12
- return { ...defaultStorageState, ...JSON.parse(storage) };
13
- }
14
- return defaultStorageState;
15
- }
16
- const reducer = createReducer(loadGlobalStorageState(), on(tableActions.setLocalProfile, (state, { key, value }) => {
17
- let profile = state.localProfiles[key];
18
- if (!profile) {
19
- profile = { default: 'default', current: 'default', states: {
20
- default: value
21
- } };
22
- }
23
- else {
24
- profile = { ...profile, states: { ...profile.states, [profile.current ?? profile.default]: value } };
25
- }
26
- return { ...state, localProfiles: { ...state.localProfiles, [key]: profile } };
27
- }), on(tableActions.setLocalProfilesState, (state, { key, current }) => {
28
- let profile = state.localProfiles[key];
29
- if (!profile) {
30
- profile = { default: current, current, states: { [current]: null } };
31
- }
32
- else {
33
- const state = profile.states[current] ?? profile.states[profile.current ?? profile.default];
34
- profile = { ...profile, current, states: { ...profile.states, [current]: state } };
35
- }
36
- return { ...state, localProfiles: { ...state.localProfiles, [key]: profile } };
37
- }), on(tableActions.deleteLocalProfilesState, (state, { key, stateKey }) => {
38
- let profile = state.localProfiles[key];
39
- if (profile) {
40
- const current = profile.current === stateKey ? profile.default : profile.current;
41
- profile = { ...profile, current, states: { ...profile.states } };
42
- delete profile.states[stateKey];
43
- return { ...state, localProfiles: { ...state.localProfiles, [key]: profile } };
44
- }
45
- else {
46
- return state;
47
- }
48
- }));
49
- export function storageStateReducer(state, action) {
50
- return reducer(state, action);
51
- }
1
+ import { createReducer, on } from '@ngrx/store';
2
+ import * as tableActions from './actions';
3
+ export const defaultStorageState = {
4
+ globalProfileKeys: ['Default'],
5
+ currentGlobalProfile: 'Default',
6
+ globalProfiles: {},
7
+ localProfiles: {}
8
+ };
9
+ function loadGlobalStorageState() {
10
+ const storage = localStorage.getItem('global-state-storage');
11
+ if (storage) {
12
+ return { ...defaultStorageState, ...JSON.parse(storage) };
13
+ }
14
+ return defaultStorageState;
15
+ }
16
+ const reducer = createReducer(loadGlobalStorageState(), on(tableActions.setLocalProfile, (state, { key, value }) => {
17
+ let profile = state.localProfiles[key];
18
+ if (!profile) {
19
+ profile = { default: 'default', current: 'default', states: {
20
+ default: value
21
+ } };
22
+ }
23
+ else {
24
+ profile = { ...profile, states: { ...profile.states, [profile.current ?? profile.default]: value } };
25
+ }
26
+ return { ...state, localProfiles: { ...state.localProfiles, [key]: profile } };
27
+ }), on(tableActions.setLocalProfilesState, (state, { key, current }) => {
28
+ let profile = state.localProfiles[key];
29
+ if (!profile) {
30
+ profile = { default: current, current, states: { [current]: null } };
31
+ }
32
+ else {
33
+ const state = profile.states[current] ?? profile.states[profile.current ?? profile.default];
34
+ profile = { ...profile, current, states: { ...profile.states, [current]: state } };
35
+ }
36
+ return { ...state, localProfiles: { ...state.localProfiles, [key]: profile } };
37
+ }), on(tableActions.deleteLocalProfilesState, (state, { key, stateKey }) => {
38
+ let profile = state.localProfiles[key];
39
+ if (profile) {
40
+ const current = profile.current === stateKey ? profile.default : profile.current;
41
+ profile = { ...profile, current, states: { ...profile.states } };
42
+ delete profile.states[stateKey];
43
+ return { ...state, localProfiles: { ...state.localProfiles, [key]: profile } };
44
+ }
45
+ else {
46
+ return state;
47
+ }
48
+ }));
49
+ export function storageStateReducer(state, action) {
50
+ return reducer(state, action);
51
+ }
52
52
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL25ncngvcmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFVLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEtBQUssWUFBWSxNQUFNLFdBQVcsQ0FBQztBQWdCMUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXVCO0lBQ3JELGlCQUFpQixFQUFFLENBQUMsU0FBUyxDQUFDO0lBQzlCLG9CQUFvQixFQUFFLFNBQVM7SUFDL0IsY0FBYyxFQUFFLEVBQUU7SUFDbEIsYUFBYSxFQUFFLEVBQUU7Q0FDbEIsQ0FBQTtBQUdELFNBQVMsc0JBQXNCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM3RCxJQUFHLE9BQU8sRUFBRTtRQUNWLE9BQU8sRUFBQyxHQUFHLG1CQUFtQixFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDO0tBQ3pEO0lBQ0QsT0FBTyxtQkFBbUIsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUMzQixzQkFBc0IsRUFBRSxFQUN4QixFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBQyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFFO0lBQ3BELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsSUFBRyxDQUFDLE9BQU8sRUFBRTtRQUNYLE9BQU8sR0FBSSxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUc7Z0JBQzNELE9BQU8sRUFBRSxLQUFLO2FBQ2YsRUFBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLE9BQU8sR0FBRyxFQUFDLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFHLEtBQUssRUFBQyxFQUFFLENBQUM7S0FDcEc7SUFDRCxPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUMsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFDLEVBQUUsQ0FBQTtBQUM3RSxDQUFDLENBQUMsRUFDRixFQUFFLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUMsR0FBRyxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUU7SUFDOUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxJQUFHLENBQUMsT0FBTyxFQUFFO1FBQ1gsT0FBTyxHQUFJLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUcsTUFBTSxFQUFHLEVBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDO0tBQ3RFO1NBQU07UUFDTCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUYsT0FBTyxHQUFHLEVBQUMsR0FBRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFHLEtBQUssRUFBRSxFQUFDLENBQUM7S0FDbEY7SUFDRCxPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUMsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFDLEVBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUMsRUFDRixFQUFFLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUMsR0FBRyxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUU7SUFDbEUsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxJQUFHLE9BQU8sRUFBRTtRQUNWLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2pGLE9BQU8sR0FBRyxFQUFDLEdBQUcsT0FBTyxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUMsRUFBQyxDQUFDO1FBQzdELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUMsR0FBRyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFDLEVBQUUsQ0FBQztLQUM3RTtTQUFNO1FBQ0wsT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRixNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBcUMsRUFBRSxNQUFjO0lBQ3ZGLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgQWN0aW9uLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0ICogYXMgdGFibGVBY3Rpb25zIGZyb20gJy4vYWN0aW9ucyc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlPFQgPSBhbnk+IHtcclxuICBkZWZhdWx0OiBzdHJpbmc7XHJcbiAgY3VycmVudDogc3RyaW5nO1xyXG4gIHN0YXRlczogRGljdGlvbmFyeTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxTdG9yYWdlU3RhdGUge1xyXG4gIGdsb2JhbFByb2ZpbGVLZXlzIDogc3RyaW5nIFtdO1xyXG4gIGN1cnJlbnRHbG9iYWxQcm9maWxlOiBzdHJpbmc7XHJcbiAgZ2xvYmFsUHJvZmlsZXM6IERpY3Rpb25hcnk8UHJvZmlsZT47XHJcbiAgbG9jYWxQcm9maWxlczogRGljdGlvbmFyeTxQcm9maWxlPjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRTdG9yYWdlU3RhdGU6IEdsb2JhbFN0b3JhZ2VTdGF0ZSA9IHtcclxuICBnbG9iYWxQcm9maWxlS2V5czogWydEZWZhdWx0J10sXHJcbiAgY3VycmVudEdsb2JhbFByb2ZpbGU6ICdEZWZhdWx0JyxcclxuICBnbG9iYWxQcm9maWxlczoge30sXHJcbiAgbG9jYWxQcm9maWxlczoge31cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGxvYWRHbG9iYWxTdG9yYWdlU3RhdGUoKSA6IEdsb2JhbFN0b3JhZ2VTdGF0ZSB7XHJcbiAgY29uc3Qgc3RvcmFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdnbG9iYWwtc3RhdGUtc3RvcmFnZScpO1xyXG4gIGlmKHN0b3JhZ2UpIHtcclxuICAgIHJldHVybiB7Li4uZGVmYXVsdFN0b3JhZ2VTdGF0ZSwgLi4uSlNPTi5wYXJzZShzdG9yYWdlKX07XHJcbiAgfVxyXG4gIHJldHVybiBkZWZhdWx0U3RvcmFnZVN0YXRlO1xyXG59XHJcblxyXG5jb25zdCByZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcclxuICBsb2FkR2xvYmFsU3RvcmFnZVN0YXRlKCksXHJcbiAgb24odGFibGVBY3Rpb25zLnNldExvY2FsUHJvZmlsZSwgKHN0YXRlLHtrZXksdmFsdWV9KT0+IHtcclxuICAgIGxldCBwcm9maWxlID0gc3RhdGUubG9jYWxQcm9maWxlc1trZXldO1xyXG4gICAgaWYoIXByb2ZpbGUpIHtcclxuICAgICAgcHJvZmlsZSA9ICB7ZGVmYXVsdDogJ2RlZmF1bHQnLCBjdXJyZW50OiAnZGVmYXVsdCcsIHN0YXRlcyA6IHtcclxuICAgICAgICBkZWZhdWx0OiB2YWx1ZVxyXG4gICAgICB9fTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHByb2ZpbGUgPSB7Li4ucHJvZmlsZSwgc3RhdGVzOiB7Li4ucHJvZmlsZS5zdGF0ZXMsIFtwcm9maWxlLmN1cnJlbnQgPz8gcHJvZmlsZS5kZWZhdWx0XSA6IHZhbHVlfSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgbG9jYWxQcm9maWxlczogey4uLnN0YXRlLmxvY2FsUHJvZmlsZXMsIFtrZXldOiBwcm9maWxlfSB9XHJcbiAgfSksXHJcbiAgb24odGFibGVBY3Rpb25zLnNldExvY2FsUHJvZmlsZXNTdGF0ZSwgKHN0YXRlLCB7a2V5LGN1cnJlbnR9KSA9PiB7XHJcbiAgICBsZXQgcHJvZmlsZSA9IHN0YXRlLmxvY2FsUHJvZmlsZXNba2V5XTtcclxuICAgIGlmKCFwcm9maWxlKSB7XHJcbiAgICAgIHByb2ZpbGUgPSAge2RlZmF1bHQ6IGN1cnJlbnQsIGN1cnJlbnQgLCBzdGF0ZXMgOiB7W2N1cnJlbnRdOiBudWxsIH19O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSBwcm9maWxlLnN0YXRlc1tjdXJyZW50XSA/PyBwcm9maWxlLnN0YXRlc1twcm9maWxlLmN1cnJlbnQgPz8gcHJvZmlsZS5kZWZhdWx0XTtcclxuICAgICAgcHJvZmlsZSA9IHsuLi5wcm9maWxlLCBjdXJyZW50LCBzdGF0ZXM6IHsuLi5wcm9maWxlLnN0YXRlcywgW2N1cnJlbnRdIDogc3RhdGUgfX07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCBsb2NhbFByb2ZpbGVzOiB7Li4uc3RhdGUubG9jYWxQcm9maWxlcywgW2tleV06IHByb2ZpbGV9fTtcclxuICB9KSxcclxuICBvbih0YWJsZUFjdGlvbnMuZGVsZXRlTG9jYWxQcm9maWxlc1N0YXRlLCAoc3RhdGUsIHtrZXksc3RhdGVLZXl9KSA9PiB7XHJcbiAgICBsZXQgcHJvZmlsZSA9IHN0YXRlLmxvY2FsUHJvZmlsZXNba2V5XTtcclxuICAgIGlmKHByb2ZpbGUpIHtcclxuICAgICAgY29uc3QgY3VycmVudCA9IHByb2ZpbGUuY3VycmVudCA9PT0gc3RhdGVLZXkgPyBwcm9maWxlLmRlZmF1bHQgOiBwcm9maWxlLmN1cnJlbnQ7XHJcbiAgICAgIHByb2ZpbGUgPSB7Li4ucHJvZmlsZSxjdXJyZW50LCBzdGF0ZXM6IHsgLi4ucHJvZmlsZS5zdGF0ZXN9fTtcclxuICAgICAgZGVsZXRlIHByb2ZpbGUuc3RhdGVzW3N0YXRlS2V5XTtcclxuICAgICAgcmV0dXJuIHsuLi5zdGF0ZSwgbG9jYWxQcm9maWxlczogey4uLnN0YXRlLmxvY2FsUHJvZmlsZXMsIFtrZXldOiBwcm9maWxlfSB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHN0YXRlO1xyXG4gICAgfVxyXG4gIH0pXHJcbik7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RvcmFnZVN0YXRlUmVkdWNlcihzdGF0ZTogR2xvYmFsU3RvcmFnZVN0YXRlIHwgdW5kZWZpbmVkLCBhY3Rpb246IEFjdGlvbikge1xyXG4gIHJldHVybiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG59XHJcbiJdfQ==
@@ -1,24 +1,24 @@
1
- import { createSelector } from '@ngrx/store';
2
- export const selectGlobalStorageState = (state) => state.globalStorageState;
3
- export const selectGlobalProfileKeys = createSelector(selectGlobalStorageState, state => state.globalProfileKeys);
4
- export const selectCurrentGlobalProfile = createSelector(selectGlobalStorageState, state => state.globalProfiles[state.currentGlobalProfile]);
5
- export const selectLocalProfile = (key) => createSelector(selectGlobalStorageState, state => state.localProfiles[key]);
6
- export const selectLocalProfileState = (key) => createSelector(selectLocalProfile(key), (profile) => {
7
- if (profile) {
8
- return profile.states[profile.current ?? profile.default];
9
- }
10
- return null;
11
- });
12
- export const selectLocalProfileCurrentKey = (key) => createSelector(selectLocalProfile(key), (profile) => {
13
- if (profile) {
14
- return profile.current ?? profile.default;
15
- }
16
- return 'default';
17
- });
18
- export const selectLocalProfileKeys = (key) => createSelector(selectLocalProfile(key), (profile) => {
19
- if (profile) {
20
- return Object.keys(profile.states).filter(key => key);
21
- }
22
- return null;
23
- });
1
+ import { createSelector } from '@ngrx/store';
2
+ export const selectGlobalStorageState = (state) => state.globalStorageState;
3
+ export const selectGlobalProfileKeys = createSelector(selectGlobalStorageState, state => state.globalProfileKeys);
4
+ export const selectCurrentGlobalProfile = createSelector(selectGlobalStorageState, state => state.globalProfiles[state.currentGlobalProfile]);
5
+ export const selectLocalProfile = (key) => createSelector(selectGlobalStorageState, state => state.localProfiles[key]);
6
+ export const selectLocalProfileState = (key) => createSelector(selectLocalProfile(key), (profile) => {
7
+ if (profile) {
8
+ return profile.states[profile.current ?? profile.default];
9
+ }
10
+ return null;
11
+ });
12
+ export const selectLocalProfileCurrentKey = (key) => createSelector(selectLocalProfile(key), (profile) => {
13
+ if (profile) {
14
+ return profile.current ?? profile.default;
15
+ }
16
+ return 'default';
17
+ });
18
+ export const selectLocalProfileKeys = (key) => createSelector(selectLocalProfile(key), (profile) => {
19
+ if (profile) {
20
+ return Object.keys(profile.states).filter(key => key);
21
+ }
22
+ return null;
23
+ });
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvbmdyeC9zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc3QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQStDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztBQUV0SCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUUsQ0FBQTtBQUVsSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxjQUFjLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7QUFFOUksTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBSSxHQUFVLEVBQUUsRUFBRSxDQUFFLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUVsSSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFJLEdBQVUsRUFBRSxFQUFFLENBQUUsY0FBYyxDQUN2RSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFDdkIsQ0FBQyxPQUFtQixFQUFFLEVBQUU7SUFDdEIsSUFBRyxPQUFPLEVBQUU7UUFDVixPQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDNUQ7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUksR0FBVSxFQUFFLEVBQUUsQ0FBRSxjQUFjLENBQzVFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUN2QixDQUFDLE9BQW1CLEVBQUUsRUFBRTtJQUN0QixJQUFHLE9BQU8sRUFBRTtRQUNWLE9BQVEsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFJLEdBQVUsRUFBRSxFQUFFLENBQUUsY0FBYyxDQUN0RSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFDdkIsQ0FBQyxPQUFtQixFQUFFLEVBQUU7SUFDdEIsSUFBRyxPQUFPLEVBQUU7UUFDVixPQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3pEO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEdsb2JhbFN0b3JhZ2VTdGF0ZSwgUHJvZmlsZSB9IGZyb20gJy4vcmVkdWNlcic7XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RHbG9iYWxTdG9yYWdlU3RhdGUgPSAoc3RhdGU6IHtnbG9iYWxTdG9yYWdlU3RhdGU6IEdsb2JhbFN0b3JhZ2VTdGF0ZX0pID0+IHN0YXRlLmdsb2JhbFN0b3JhZ2VTdGF0ZTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdEdsb2JhbFByb2ZpbGVLZXlzID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0R2xvYmFsU3RvcmFnZVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5nbG9iYWxQcm9maWxlS2V5cyApXG5cbmV4cG9ydCBjb25zdCBzZWxlY3RDdXJyZW50R2xvYmFsUHJvZmlsZSA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdEdsb2JhbFN0b3JhZ2VTdGF0ZSwgc3RhdGUgPT4gc3RhdGUuZ2xvYmFsUHJvZmlsZXNbc3RhdGUuY3VycmVudEdsb2JhbFByb2ZpbGVdKTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdExvY2FsUHJvZmlsZSA9IDxUPihrZXk6c3RyaW5nKSA9PiAgY3JlYXRlU2VsZWN0b3Ioc2VsZWN0R2xvYmFsU3RvcmFnZVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5sb2NhbFByb2ZpbGVzW2tleV0pO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0TG9jYWxQcm9maWxlU3RhdGUgPSA8VD4oa2V5OnN0cmluZykgPT4gIGNyZWF0ZVNlbGVjdG9yKFxuICBzZWxlY3RMb2NhbFByb2ZpbGUoa2V5KSxcbiAgKHByb2ZpbGU6IFByb2ZpbGU8VD4pID0+IHtcbiAgICBpZihwcm9maWxlKSB7XG4gICAgICByZXR1cm4gIHByb2ZpbGUuc3RhdGVzW3Byb2ZpbGUuY3VycmVudCA/PyBwcm9maWxlLmRlZmF1bHRdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0TG9jYWxQcm9maWxlQ3VycmVudEtleSA9IDxUPihrZXk6c3RyaW5nKSA9PiAgY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdExvY2FsUHJvZmlsZShrZXkpLFxuICAocHJvZmlsZTogUHJvZmlsZTxUPikgPT4ge1xuICAgIGlmKHByb2ZpbGUpIHtcbiAgICAgIHJldHVybiAgcHJvZmlsZS5jdXJyZW50ID8/IHByb2ZpbGUuZGVmYXVsdDtcbiAgICB9XG4gICAgcmV0dXJuICdkZWZhdWx0Jztcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0TG9jYWxQcm9maWxlS2V5cyA9IDxUPihrZXk6c3RyaW5nKSA9PiAgY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdExvY2FsUHJvZmlsZShrZXkpLFxuICAocHJvZmlsZTogUHJvZmlsZTxUPikgPT4ge1xuICAgIGlmKHByb2ZpbGUpIHtcbiAgICAgIHJldHVybiAgT2JqZWN0LmtleXMocHJvZmlsZS5zdGF0ZXMpLmZpbHRlcigga2V5ID0+IGtleSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufSk7XG4iXX0=
@@ -1,20 +1,20 @@
1
- import { Pipe } from '@angular/core';
2
- import { sumBy } from 'lodash';
3
- import * as i0 from "@angular/core";
4
- export class ColumnTotalPipe {
5
- transform(data, metaData) {
6
- const dataToCalculate = data.filter(d => !d.isGroupHeader && !d.isGroupFooter);
7
- switch (metaData.additional.footer.type) {
8
- case 'sum':
9
- return sumBy(dataToCalculate, metaData.key);
10
- }
11
- return null;
12
- }
13
- }
14
- ColumnTotalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ColumnTotalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
15
- ColumnTotalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: ColumnTotalPipe, name: "columnTotal" });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ColumnTotalPipe, decorators: [{
17
- type: Pipe,
18
- args: [{ name: 'columnTotal' }]
19
- }] });
1
+ import { Pipe } from '@angular/core';
2
+ import { sumBy } from 'lodash';
3
+ import * as i0 from "@angular/core";
4
+ export class ColumnTotalPipe {
5
+ transform(data, metaData) {
6
+ const dataToCalculate = data.filter(d => !d.isGroupHeader && !d.isGroupFooter);
7
+ switch (metaData.additional.footer.type) {
8
+ case 'sum':
9
+ return sumBy(dataToCalculate, metaData.key);
10
+ }
11
+ return null;
12
+ }
13
+ }
14
+ ColumnTotalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ColumnTotalPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
15
+ ColumnTotalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: ColumnTotalPipe, name: "columnTotal" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ColumnTotalPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{ name: 'columnTotal' }]
19
+ }] });
20
20
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRvdGFsLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9waXBlcy9jb2x1bW4tdG90YWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sUUFBUSxDQUFDOztBQUc3QixNQUFNLE9BQU8sZUFBZTtJQUMxQixTQUFTLENBQUMsSUFBVyxFQUFFLFFBQWtCO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDOUUsUUFBUSxRQUFRLENBQUMsVUFBVyxDQUFDLE1BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDekMsS0FBSyxLQUFLO2dCQUNWLE9BQU8sS0FBSyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OzRHQVJVLGVBQWU7MEdBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGFEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcbmltcG9ydCB7c3VtQnl9IGZyb20gJ2xvZGFzaCc7XG5cbkBQaXBlKHsgbmFtZTogJ2NvbHVtblRvdGFsJyB9KVxuZXhwb3J0IGNsYXNzIENvbHVtblRvdGFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZGF0YTogYW55W10sIG1ldGFEYXRhOiBNZXRhRGF0YSkge1xuICAgIGNvbnN0IGRhdGFUb0NhbGN1bGF0ZSA9IGRhdGEuZmlsdGVyKGQgPT4gIWQuaXNHcm91cEhlYWRlciAmJiAhZC5pc0dyb3VwRm9vdGVyKVxuICAgIHN3aXRjaCAobWV0YURhdGEuYWRkaXRpb25hbCEuZm9vdGVyIS50eXBlKSB7XG4gICAgICBjYXNlICdzdW0nOlxuICAgICAgcmV0dXJuIHN1bUJ5KGRhdGFUb0NhbGN1bGF0ZSwgbWV0YURhdGEua2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,18 +1,18 @@
1
- import { Pipe } from '@angular/core';
2
- import { FilterType } from '../enums/filterTypes';
3
- import * as i0 from "@angular/core";
4
- export class FormatFilterTypePipe {
5
- transform(filterType, value) {
6
- if (filterType === FilterType.IsNull) {
7
- return value ? filterType : 'Is Not Blank';
8
- }
9
- return filterType;
10
- }
11
- }
12
- FormatFilterTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
- FormatFilterTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterTypePipe, name: "formatFilterType" });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterTypePipe, decorators: [{
15
- type: Pipe,
16
- args: [{ name: 'formatFilterType' }]
17
- }] });
1
+ import { Pipe } from '@angular/core';
2
+ import { FilterType } from '../enums/filterTypes';
3
+ import * as i0 from "@angular/core";
4
+ export class FormatFilterTypePipe {
5
+ transform(filterType, value) {
6
+ if (filterType === FilterType.IsNull) {
7
+ return value ? filterType : 'Is Not Blank';
8
+ }
9
+ return filterType;
10
+ }
11
+ }
12
+ FormatFilterTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
13
+ FormatFilterTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterTypePipe, name: "formatFilterType" });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterTypePipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{ name: 'formatFilterType' }]
17
+ }] });
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWZpbHRlci10eXBlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9waXBlcy9mb3JtYXQtZmlsdGVyLXR5cGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBR2xELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsU0FBUyxDQUFDLFVBQXNCLEVBQUUsS0FBVTtRQUMxQyxJQUFHLFVBQVUsS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFDO1lBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtTQUMzQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7O2lIQU5VLG9CQUFvQjsrR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vZW51bXMvZmlsdGVyVHlwZXMnO1xuXG5AUGlwZSh7bmFtZTogJ2Zvcm1hdEZpbHRlclR5cGUnfSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRGaWx0ZXJUeXBlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZmlsdGVyVHlwZTogRmlsdGVyVHlwZSwgdmFsdWU6IGFueSl7XG4gICAgaWYoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5Jc051bGwpe1xuICAgICAgcmV0dXJuIHZhbHVlID8gZmlsdGVyVHlwZSA6ICdJcyBOb3QgQmxhbmsnXG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJUeXBlO1xuICB9XG59Il19
@@ -1,46 +1,46 @@
1
- import { Pipe } from '@angular/core';
2
- import { map } from 'rxjs/operators';
3
- import { FieldType } from '../interfaces/report-def';
4
- import { FilterType } from '../enums/filterTypes';
5
- import { spaceCase } from '../../utilities/pipes/space-case.pipes';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../classes/table-store";
8
- import * as i2 from "@angular/common";
9
- export class FormatFilterValuePipe {
10
- constructor(tableState, datePipe) {
11
- this.tableState = tableState;
12
- this.datePipe = datePipe;
13
- }
14
- transform(value, key, filterType) {
15
- return this.tableState.getMetaData$(key).pipe(map(md => {
16
- if (filterType === FilterType.IsNull) {
17
- return '';
18
- }
19
- if (value && (filterType === FilterType.In)) {
20
- if (md.fieldType === FieldType.Enum) {
21
- return value.map((v) => spaceCase(md.additional.enumMap[v])).join(', ') ?? value;
22
- }
23
- return value.join(', ') ?? value;
24
- }
25
- if (filterType === FilterType.NumberBetween) {
26
- if (md.fieldType === FieldType.Date) {
27
- value = this.datePipe.transform(value.Start, 'MM/dd/yy') + ' - ' + this.datePipe.transform(value.End, 'MM/dd/yy');
28
- }
29
- else {
30
- value = value.Start + ' - ' + value.End;
31
- }
32
- }
33
- else if (md.fieldType === FieldType.Date) {
34
- value = this.datePipe.transform(value, 'MM/dd/yy');
35
- }
36
- return value;
37
- }));
38
- }
39
- }
40
- FormatFilterValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterValuePipe, deps: [{ token: i1.TableStore }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
41
- FormatFilterValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterValuePipe, name: "formatFilterValue" });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterValuePipe, decorators: [{
43
- type: Pipe,
44
- args: [{ name: 'formatFilterValue' }]
45
- }], ctorParameters: function () { return [{ type: i1.TableStore }, { type: i2.DatePipe }]; } });
1
+ import { Pipe } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { FieldType } from '../interfaces/report-def';
4
+ import { FilterType } from '../enums/filterTypes';
5
+ import { spaceCase } from '../../utilities/pipes/space-case.pipes';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../classes/table-store";
8
+ import * as i2 from "@angular/common";
9
+ export class FormatFilterValuePipe {
10
+ constructor(tableState, datePipe) {
11
+ this.tableState = tableState;
12
+ this.datePipe = datePipe;
13
+ }
14
+ transform(value, key, filterType) {
15
+ return this.tableState.getMetaData$(key).pipe(map(md => {
16
+ if (filterType === FilterType.IsNull) {
17
+ return '';
18
+ }
19
+ if (value && (filterType === FilterType.In)) {
20
+ if (md.fieldType === FieldType.Enum) {
21
+ return value.map((v) => spaceCase(md.additional.enumMap[v])).join(', ') ?? value;
22
+ }
23
+ return value.join(', ') ?? value;
24
+ }
25
+ if (filterType === FilterType.NumberBetween) {
26
+ if (md.fieldType === FieldType.Date) {
27
+ value = this.datePipe.transform(value.Start, 'MM/dd/yy') + ' - ' + this.datePipe.transform(value.End, 'MM/dd/yy');
28
+ }
29
+ else {
30
+ value = value.Start + ' - ' + value.End;
31
+ }
32
+ }
33
+ else if (md.fieldType === FieldType.Date) {
34
+ value = this.datePipe.transform(value, 'MM/dd/yy');
35
+ }
36
+ return value;
37
+ }));
38
+ }
39
+ }
40
+ FormatFilterValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterValuePipe, deps: [{ token: i1.TableStore }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
41
+ FormatFilterValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterValuePipe, name: "formatFilterValue" });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: FormatFilterValuePipe, decorators: [{
43
+ type: Pipe,
44
+ args: [{ name: 'formatFilterValue' }]
45
+ }], ctorParameters: function () { return [{ type: i1.TableStore }, { type: i2.DatePipe }]; } });
46
46
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWZpbHRlci12YWx1ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvcGlwZXMvZm9ybWF0LWZpbHRlci12YWx1ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUluRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLFVBQXNCLEVBQVcsUUFBa0I7UUFBbkQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDdkUsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFVLEVBQUUsR0FBVyxFQUFFLFVBQXNCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUUsRUFBRSxDQUFDLEVBQUU7WUFDUixJQUFHLFVBQVUsS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBQ0QsSUFBRyxLQUFLLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBRSxFQUFDO2dCQUMxQyxJQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtvQkFDbEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVcsQ0FBQyxPQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7aUJBQzFGO2dCQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7YUFDbEM7WUFDRCxJQUFHLFVBQVUsS0FBSyxVQUFVLENBQUMsYUFBYSxFQUFDO2dCQUN6QyxJQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksRUFBQztvQkFDakMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEdBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ2xIO3FCQUFJO29CQUNILEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUN6QzthQUNGO2lCQUFNLElBQUcsRUFBRSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFDO2dCQUN4QyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7a0hBM0JVLHFCQUFxQjtnSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uL2VudW1zL2ZpbHRlclR5cGVzJztcbmltcG9ydCB7IHNwYWNlQ2FzZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9waXBlcy9zcGFjZS1jYXNlLnBpcGVzJztcblxuXG5AUGlwZSh7bmFtZTogJ2Zvcm1hdEZpbHRlclZhbHVlJ30pXG5leHBvcnQgY2xhc3MgRm9ybWF0RmlsdGVyVmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKCBwdWJsaWMgdGFibGVTdGF0ZTogVGFibGVTdG9yZSAsIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlKSB7XG4gIH1cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVN0YXRlLmdldE1ldGFEYXRhJChrZXkpLnBpcGUoXG4gICAgICBtYXAoIG1kID0+IHtcbiAgICAgICAgaWYoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5Jc051bGwpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYodmFsdWUgJiYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuSW4gKSl7XG4gICAgICAgICAgaWYobWQuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRW51bSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCggKHY6IGFueSkgPT4gc3BhY2VDYXNlKG1kLmFkZGl0aW9uYWwhLmVudW1NYXAhW3ZdKSkuam9pbignLCAnKSA/PyB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJywgJykgPz8gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5OdW1iZXJCZXR3ZWVuKXtcbiAgICAgICAgICBpZihtZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5EYXRlKXtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUuU3RhcnQsICdNTS9kZC95eScpKyAnIC0gJyArIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLkVuZCwgJ01NL2RkL3l5Jyk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLlN0YXJ0ICsgJyAtICcgKyB2YWx1ZS5FbmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYobWQuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRGF0ZSl7XG4gICAgICAgICAgdmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ01NL2RkL3l5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,20 +1,20 @@
1
- import { Pipe } from '@angular/core';
2
- import { spaceCase } from '../../utilities/pipes/space-case.pipes';
3
- import { map } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../classes/table-store";
6
- export class KeyDisplayPipe {
7
- constructor(tableState) {
8
- this.tableState = tableState;
9
- }
10
- transform(key) {
11
- return this.tableState.getMetaData$(key).pipe(map(metaData => metaData.displayName || spaceCase(key)));
12
- }
13
- }
14
- KeyDisplayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: KeyDisplayPipe, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Pipe });
15
- KeyDisplayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: KeyDisplayPipe, name: "keyDisplay" });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: KeyDisplayPipe, decorators: [{
17
- type: Pipe,
18
- args: [{ name: 'keyDisplay' }]
19
- }], ctorParameters: function () { return [{ type: i1.TableStore }]; } });
1
+ import { Pipe } from '@angular/core';
2
+ import { spaceCase } from '../../utilities/pipes/space-case.pipes';
3
+ import { map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../classes/table-store";
6
+ export class KeyDisplayPipe {
7
+ constructor(tableState) {
8
+ this.tableState = tableState;
9
+ }
10
+ transform(key) {
11
+ return this.tableState.getMetaData$(key).pipe(map(metaData => metaData.displayName || spaceCase(key)));
12
+ }
13
+ }
14
+ KeyDisplayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: KeyDisplayPipe, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Pipe });
15
+ KeyDisplayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: KeyDisplayPipe, name: "keyDisplay" });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: KeyDisplayPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{ name: 'keyDisplay' }]
19
+ }], ctorParameters: function () { return [{ type: i1.TableStore }]; } });
20
20
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWRpc3BsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9waXBlcy9rZXktZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHckMsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUMxQyxDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNDLEdBQUcsQ0FBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3pELENBQUM7SUFDSixDQUFDOzsyR0FQVSxjQUFjO3lHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsSUFBSTttQkFBQyxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgc3BhY2VDYXNlIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3BpcGVzL3NwYWNlLWNhc2UucGlwZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBQaXBlKHtuYW1lOiAna2V5RGlzcGxheSd9KVxyXG5leHBvcnQgY2xhc3MgS2V5RGlzcGxheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBjb25zdHJ1Y3RvciggcHVibGljIHRhYmxlU3RhdGU6IFRhYmxlU3RvcmUpIHtcclxuICB9XHJcbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlU3RhdGUuZ2V0TWV0YURhdGEkKGtleSkucGlwZShcclxuICAgICAgbWFwKCBtZXRhRGF0YSA9PiBtZXRhRGF0YS5kaXNwbGF5TmFtZSB8fCBzcGFjZUNhc2Uoa2V5KSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,84 +1,84 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { first, map } from 'rxjs/operators';
3
- import { combineLatest } from 'rxjs';
4
- import { orderMetaData } from '../classes/table-store';
5
- import { TableBuilderConfigToken } from '../classes/TableBuilderConfig';
6
- import { downloadData } from '../functions/download-data';
7
- import { ArrayStyle, FieldType } from '../interfaces/report-def';
8
- import { isPipe } from './transform-creator';
9
- import { get } from 'lodash';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../classes/table-store";
12
- import * as i2 from "@angular/common";
13
- export class ExportToCsvService {
14
- constructor(state, config, datePipe) {
15
- this.state = state;
16
- this.config = config;
17
- this.datePipe = datePipe;
18
- this.exportToCsv = (data) => {
19
- const exportableFields$ = this.state.state$.pipe(map(mapExportableFields));
20
- combineLatest([data, exportableFields$]).pipe(first(), map(([data, fields]) => this.csvData(data, fields))).subscribe(csv => downloadData(csv, 'export.csv', 'text/csv'));
21
- };
22
- this.csvData = (data, metaData) => {
23
- const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));
24
- res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));
25
- return res.join('\n');
26
- };
27
- this.metaToField = (meta, row) => {
28
- let val = get(row, meta.key);
29
- if (val == null && !meta.transform)
30
- return val;
31
- if (meta.transform && meta.fieldType !== FieldType.Expression) {
32
- const transform = meta.transform;
33
- return isPipe(transform) ? transform.transform(val) : transform(val);
34
- }
35
- switch (meta.fieldType) {
36
- case FieldType.Date:
37
- const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;
38
- val = this.transform(val, dateFormat);
39
- break;
40
- case FieldType.String:
41
- const prepend = meta.additional?.export?.prepend || this.config?.export?.prepend || '';
42
- val = prepend + val;
43
- break;
44
- case FieldType.Array:
45
- const additional = meta.additional;
46
- val = val.slice(0, additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\n' : ', ');
47
- break;
48
- case FieldType.Expression:
49
- val = meta.transform(row);
50
- break;
51
- }
52
- if (typeof val === 'string' && (val.includes(',') || val.includes('"') || val.includes('\n'))) {
53
- val = val.replaceAll('"', '""');
54
- val = '"' + val + '"';
55
- }
56
- return val;
57
- };
58
- }
59
- transform(val, dateFormat) {
60
- if (this.config.transformers && this.config.transformers[FieldType.Date]) {
61
- return this.config.transformers[FieldType.Date](val);
62
- }
63
- return this.datePipe.transform(val, dateFormat);
64
- }
65
- }
66
- ExportToCsvService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ExportToCsvService, deps: [{ token: i1.TableStore }, { token: TableBuilderConfigToken }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
67
- ExportToCsvService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ExportToCsvService });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ExportToCsvService, decorators: [{
69
- type: Injectable
70
- }], ctorParameters: function () { return [{ type: i1.TableStore }, { type: undefined, decorators: [{
71
- type: Inject,
72
- args: [TableBuilderConfigToken]
73
- }] }, { type: i2.DatePipe }]; } });
74
- export const removeFromMetaData = (state, keysToRemove) => orderMetaData(state)
75
- .filter(meta => !keysToRemove.includes(meta.key));
76
- export const nonExportableFields = (state) => Object.values(state.metaData)
77
- .filter(md => md.noExport)
78
- .map(md => md.key);
79
- export const mapExportableFields = (state) => {
80
- const fieldsToRemove = nonExportableFields(state)
81
- .concat(state.hiddenKeys);
82
- return removeFromMetaData(state, fieldsToRemove);
83
- };
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvc2VydmljZXMvZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFHLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQW1CLFVBQVUsRUFBRSxTQUFTLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7OztBQUc3QixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1MsS0FBaUIsRUFDaUIsTUFBMEIsRUFDM0QsUUFBa0I7UUFGbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNpQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMzRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRzVCLGdCQUFXLEdBQUcsQ0FBQyxJQUFxQixFQUFFLEVBQUU7WUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUN6QixDQUFDO1lBRUYsYUFBYSxD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QUFLLENBQUM7S0FDbkIsTUFBTSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0tBQ3JGLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUU7S0FDMUIsR0FBRyxDQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBRSxDQUFDO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQztTQUM5QyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9yZGVyTWV0YURhdGEsIFRhYmxlU3RvcmUgfSBmcm9tICcuLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZywgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XG5pbXBvcnQgeyBkb3dubG9hZERhdGEgfSBmcm9tICcuLi9mdW5jdGlvbnMvZG93bmxvYWQtZGF0YSc7XG5pbXBvcnQgeyBBcnJheUFkZGl0aW9uYWwsIEFycmF5U3R5bGUsIEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uL2NsYXNzZXMvVGFibGVTdGF0ZSc7XG5pbXBvcnQgeyBpc1BpcGUgfSBmcm9tICcuL3RyYW5zZm9ybS1jcmVhdG9yJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFeHBvcnRUb0NzdlNlcnZpY2U8VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RhdGU6IFRhYmxlU3RvcmUsXG4gICAgQEluamVjdChUYWJsZUJ1aWxkZXJDb25maWdUb2tlbikgcHJpdmF0ZSBjb25maWc6IFRhYmxlQnVpbGRlckNvbmZpZyxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgKXt9XG5cbiAgZXhwb3J0VG9Dc3YgPSAoZGF0YTogT2JzZXJ2YWJsZTxUW10+KSA9PiB7XG4gICAgY29uc3QgZXhwb3J0YWJsZUZpZWxkcyQgPSB0aGlzLnN0YXRlLnN0YXRlJC5waXBlKFxuICAgICAgbWFwKG1hcEV4cG9ydGFibGVGaWVsZHMpXG4gICAgKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW2RhdGEsZXhwb3J0YWJsZUZpZWxkcyRdKS5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIG1hcCgoW2RhdGEsZmllbGRzXSkgPT4gdGhpcy5jc3ZEYXRhKGRhdGEsZmllbGRzKSksXG4gICAgKS5zdWJzY3JpYmUoY3N2ID0+IGRvd25sb2FkRGF0YShjc3YsJ2V4cG9ydC5jc3YnLCd0ZXh0L2NzdicpICk7XG4gIH1cblxuICBjc3ZEYXRhID0gKGRhdGE6QXJyYXk8VD4sIG1ldGFEYXRhOiBNZXRhRGF0YTxUPltdKSA9PiB7XG4gICAgY29uc3QgcmVzID0gZGF0YS5tYXAocm93ID0+IG1ldGFEYXRhLm1hcChtZXRhID0+IHRoaXMubWV0YVRvRmllbGQobWV0YSwgcm93KSkuam9pbignLCcpKTtcbiAgICByZXMudW5zaGlmdChtZXRhRGF0YS5tYXAobWV0YSA9PiBtZXRhLmRpc3BsYXlOYW1lIHx8IG1ldGEua2V5KS5qb2luKCcsJykpO1xuICAgIHJldHVybiByZXMuam9pbignXFxuJyk7XG4gIH1cblxuICBtZXRhVG9GaWVsZCA9IChtZXRhOiBNZXRhRGF0YTxUPiwgcm93OiBUKSA9PiB7XG4gICAgbGV0IHZhbDogYW55ID0gZ2V0KCByb3csbWV0YS5rZXkpO1xuICAgIGlmICh2YWwgPT0gbnVsbCAmJiAhbWV0YS50cmFuc2Zvcm0pIHJldHVybiB2YWxcbiAgICBpZihtZXRhLnRyYW5zZm9ybSAmJiBtZXRhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkV4cHJlc3Npb24pe1xuICAgICAgY29uc3QgdHJhbnNmb3JtID0gbWV0YS50cmFuc2Zvcm0gYXMgYW55O1xuICAgICAgcmV0dXJuICBpc1BpcGUodHJhbnNmb3JtKSA/IHRyYW5zZm9ybS50cmFuc2Zvcm0odmFsKSA6IHRyYW5zZm9ybSh2YWwpO1xuICAgIH1cbiAgICBzd2l0Y2ggKG1ldGEuZmllbGRUeXBlKSB7XG4gICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gbWV0YS5hZGRpdGlvbmFsPy5leHBvcnQ/LmRhdGVGb3JtYXQgfHwgdGhpcy5jb25maWc/LmV4cG9ydD8uZGF0ZUZvcm1hdCB8fCBtZXRhLmFkZGl0aW9uYWw/LmRhdGVGb3JtYXQ7XG4gICAgICAgIHZhbCA9IHRoaXMudHJhbnNmb3JtKHZhbCwgZGF0ZUZvcm1hdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGaWVsZFR5cGUuU3RyaW5nOlxuICAgICAgICBjb25zdCBwcmVwZW5kOiBzdHJpbmcgPSBtZXRhLmFkZGl0aW9uYWw/LmV4cG9ydD8ucHJlcGVuZCB8fCB0aGlzLmNvbmZpZz8uZXhwb3J0Py5wcmVwZW5kIHx8ICcnO1xuICAgICAgICB2YWwgPSBwcmVwZW5kICsgdmFsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmllbGRUeXBlLkFycmF5OlxuICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gbWV0YS5hZGRpdGlvbmFsIGFzIEFycmF5QWRkaXRpb25hbDtcbiAgICAgICAgdmFsID0gKHZhbCBhcyBBcnJheTxzdHJpbmc+KS5zbGljZSgwLGFkZGl0aW9uYWwubGltaXQpLmpvaW4oYWRkaXRpb25hbC5hcnJheVN0eWxlID09PSBBcnJheVN0eWxlLk5ld0xpbmUgPyAnXFxuJyA6ICcsICcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRmllbGRUeXBlLkV4cHJlc3Npb246XG4gICAgICAgIHZhbCA9IChtZXRhLnRyYW5zZm9ybSBhcyBhbnkpKHJvdyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgKHZhbC5pbmNsdWRlcygnLCcpIHx8IHZhbC5pbmNsdWRlcygnXCInKSB8fCB2YWwuaW5jbHVkZXMoJ1xcbicpKSkge1xuICAgICAgdmFsID0gdmFsLnJlcGxhY2VBbGwoJ1wiJywgJ1wiXCInKTtcbiAgICAgIHZhbCA9ICdcIicgKyB2YWwgKyAnXCInO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm0odmFsOiBhbnksIGRhdGVGb3JtYXQ6IGFueSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy50cmFuc2Zvcm1lcnMgJiYgdGhpcy5jb25maWcudHJhbnNmb3JtZXJzW0ZpZWxkVHlwZS5EYXRlXSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRyYW5zZm9ybWVyc1tGaWVsZFR5cGUuRGF0ZV0hKHZhbCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWwsIGRhdGVGb3JtYXQpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZW1vdmVGcm9tTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUsIGtleXNUb1JlbW92ZTogc3RyaW5nW10pID0+XG5cbiAgb3JkZXJNZXRhRGF0YShzdGF0ZSlcbiAgLmZpbHRlciggbWV0YSA9PiAha2V5c1RvUmVtb3ZlLmluY2x1ZGVzKG1ldGEua2V5KSk7XG5cblxuZXhwb3J0IGNvbnN0IG5vbkV4cG9ydGFibGVGaWVsZHMgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IE9iamVjdC52YWx1ZXMoIHN0YXRlLm1ldGFEYXRhKVxuICAuZmlsdGVyKG1kID0+IG1kLm5vRXhwb3J0IClcbiAgLm1hcCggbWQgPT4gbWQua2V5ICk7XG5cbmV4cG9ydCBjb25zdCBtYXBFeHBvcnRhYmxlRmllbGRzID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB7XG4gIGNvbnN0IGZpZWxkc1RvUmVtb3ZlID0gbm9uRXhwb3J0YWJsZUZpZWxkcyhzdGF0ZSlcbiAgICAuY29uY2F0KHN0YXRlLmhpZGRlbktleXMpO1xuICAgcmV0dXJuIHJlbW92ZUZyb21NZXRhRGF0YShzdGF0ZSwgZmllbGRzVG9SZW1vdmUpO1xufVxuIl19
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { first, map } from 'rxjs/operators';
3
+ import { combineLatest } from 'rxjs';
4
+ import { orderMetaData } from '../classes/table-store';
5
+ import { TableBuilderConfigToken } from '../classes/TableBuilderConfig';
6
+ import { downloadData } from '../functions/download-data';
7
+ import { ArrayStyle, FieldType } from '../interfaces/report-def';
8
+ import { isPipe } from './transform-creator';
9
+ import { get } from 'lodash';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../classes/table-store";
12
+ import * as i2 from "@angular/common";
13
+ export class ExportToCsvService {
14
+ constructor(state, config, datePipe) {
15
+ this.state = state;
16
+ this.config = config;
17
+ this.datePipe = datePipe;
18
+ this.exportToCsv = (data) => {
19
+ const exportableFields$ = this.state.state$.pipe(map(mapExportableFields));
20
+ combineLatest([data, exportableFields$]).pipe(first(), map(([data, fields]) => this.csvData(data, fields))).subscribe(csv => downloadData(csv, 'export.csv', 'text/csv'));
21
+ };
22
+ this.csvData = (data, metaData) => {
23
+ const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));
24
+ res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));
25
+ return res.join('\n');
26
+ };
27
+ this.metaToField = (meta, row) => {
28
+ let val = get(row, meta.key);
29
+ if (val == null && !meta.transform)
30
+ return val;
31
+ if (meta.transform && meta.fieldType !== FieldType.Expression) {
32
+ const transform = meta.transform;
33
+ return isPipe(transform) ? transform.transform(val) : transform(val);
34
+ }
35
+ switch (meta.fieldType) {
36
+ case FieldType.Date:
37
+ const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;
38
+ val = this.transform(val, dateFormat);
39
+ break;
40
+ case FieldType.String:
41
+ const prepend = meta.additional?.export?.prepend || this.config?.export?.prepend || '';
42
+ val = prepend + val;
43
+ break;
44
+ case FieldType.Array:
45
+ const additional = meta.additional;
46
+ val = val.slice(0, additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\n' : ', ');
47
+ break;
48
+ case FieldType.Expression:
49
+ val = meta.transform(row);
50
+ break;
51
+ }
52
+ if (typeof val === 'string' && (val.includes(',') || val.includes('"') || val.includes('\n'))) {
53
+ val = val.replaceAll('"', '""');
54
+ val = '"' + val + '"';
55
+ }
56
+ return val;
57
+ };
58
+ }
59
+ transform(val, dateFormat) {
60
+ if (this.config.transformers && this.config.transformers[FieldType.Date]) {
61
+ return this.config.transformers[FieldType.Date](val);
62
+ }
63
+ return this.datePipe.transform(val, dateFormat);
64
+ }
65
+ }
66
+ ExportToCsvService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ExportToCsvService, deps: [{ token: i1.TableStore }, { token: TableBuilderConfigToken }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
67
+ ExportToCsvService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ExportToCsvService });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ExportToCsvService, decorators: [{
69
+ type: Injectable
70
+ }], ctorParameters: function () { return [{ type: i1.TableStore }, { type: undefined, decorators: [{
71
+ type: Inject,
72
+ args: [TableBuilderConfigToken]
73
+ }] }, { type: i2.DatePipe }]; } });
74
+ export const removeFromMetaData = (state, keysToRemove) => orderMetaData(state)
75
+ .filter(meta => !keysToRemove.includes(meta.key));
76
+ export const nonExportableFields = (state) => Object.values(state.metaData)
77
+ .filter(md => md.noExport)
78
+ .map(md => md.key);
79
+ export const mapExportableFields = (state) => {
80
+ const fieldsToRemove = nonExportableFields(state)
81
+ .concat(state.hiddenKeys);
82
+ return removeFromMetaData(state, fieldsToRemove);
83
+ };
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvc2VydmljZXMvZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFHLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQW1CLFVBQVUsRUFBRSxTQUFTLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7OztBQUc3QixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1MsS0FBaUIsRUFDaUIsTUFBMEIsRUFDM0QsUUFBa0I7UUFGbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNpQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMzRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRzVCLGdCQUFXLEdBQUcsQ0FBQyxJQUFxQixFQUFFLEVBQUU7WUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUN6QixDQUFDO1lBRUYsYUFBYSxD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QUFLLENBQUM7S0FDbkIsTUFBTSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxLQUFLLENBQUMsUUFBUSxDQUFDO0tBQ3JGLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUU7S0FDMUIsR0FBRyxDQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBRSxDQUFDO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQztTQUM5QyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlyc3QsIG1hcCAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBvcmRlck1ldGFEYXRhLCBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZywgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IGRvd25sb2FkRGF0YSB9IGZyb20gJy4uL2Z1bmN0aW9ucy9kb3dubG9hZC1kYXRhJztcclxuaW1wb3J0IHsgQXJyYXlBZGRpdGlvbmFsLCBBcnJheVN0eWxlLCBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uL2NsYXNzZXMvVGFibGVTdGF0ZSc7XHJcbmltcG9ydCB7IGlzUGlwZSB9IGZyb20gJy4vdHJhbnNmb3JtLWNyZWF0b3InO1xyXG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXhwb3J0VG9Dc3ZTZXJ2aWNlPFQ+IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzdGF0ZTogVGFibGVTdG9yZSxcclxuICAgIEBJbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pIHByaXZhdGUgY29uZmlnOiBUYWJsZUJ1aWxkZXJDb25maWcsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICApe31cclxuXHJcbiAgZXhwb3J0VG9Dc3YgPSAoZGF0YTogT2JzZXJ2YWJsZTxUW10+KSA9PiB7XHJcbiAgICBjb25zdCBleHBvcnRhYmxlRmllbGRzJCA9IHRoaXMuc3RhdGUuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcChtYXBFeHBvcnRhYmxlRmllbGRzKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFtkYXRhLGV4cG9ydGFibGVGaWVsZHMkXSkucGlwZShcclxuICAgICAgZmlyc3QoKSxcclxuICAgICAgbWFwKChbZGF0YSxmaWVsZHNdKSA9PiB0aGlzLmNzdkRhdGEoZGF0YSxmaWVsZHMpKSxcclxuICAgICkuc3Vic2NyaWJlKGNzdiA9PiBkb3dubG9hZERhdGEoY3N2LCdleHBvcnQuY3N2JywndGV4dC9jc3YnKSApO1xyXG4gIH1cclxuXHJcbiAgY3N2RGF0YSA9IChkYXRhOkFycmF5PFQ+LCBtZXRhRGF0YTogTWV0YURhdGE8VD5bXSkgPT4ge1xyXG4gICAgY29uc3QgcmVzID0gZGF0YS5tYXAocm93ID0+IG1ldGFEYXRhLm1hcChtZXRhID0+IHRoaXMubWV0YVRvRmllbGQobWV0YSwgcm93KSkuam9pbignLCcpKTtcclxuICAgIHJlcy51bnNoaWZ0KG1ldGFEYXRhLm1hcChtZXRhID0+IG1ldGEuZGlzcGxheU5hbWUgfHwgbWV0YS5rZXkpLmpvaW4oJywnKSk7XHJcbiAgICByZXR1cm4gcmVzLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgbWV0YVRvRmllbGQgPSAobWV0YTogTWV0YURhdGE8VD4sIHJvdzogVCkgPT4ge1xyXG4gICAgbGV0IHZhbDogYW55ID0gZ2V0KCByb3csbWV0YS5rZXkpO1xyXG4gICAgaWYgKHZhbCA9PSBudWxsICYmICFtZXRhLnRyYW5zZm9ybSkgcmV0dXJuIHZhbFxyXG4gICAgaWYobWV0YS50cmFuc2Zvcm0gJiYgbWV0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5FeHByZXNzaW9uKXtcclxuICAgICAgY29uc3QgdHJhbnNmb3JtID0gbWV0YS50cmFuc2Zvcm0gYXMgYW55O1xyXG4gICAgICByZXR1cm4gIGlzUGlwZSh0cmFuc2Zvcm0pID8gdHJhbnNmb3JtLnRyYW5zZm9ybSh2YWwpIDogdHJhbnNmb3JtKHZhbCk7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKG1ldGEuZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XHJcbiAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IG1ldGEuYWRkaXRpb25hbD8uZXhwb3J0Py5kYXRlRm9ybWF0IHx8IHRoaXMuY29uZmlnPy5leHBvcnQ/LmRhdGVGb3JtYXQgfHwgbWV0YS5hZGRpdGlvbmFsPy5kYXRlRm9ybWF0O1xyXG4gICAgICAgIHZhbCA9IHRoaXMudHJhbnNmb3JtKHZhbCwgZGF0ZUZvcm1hdCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLlN0cmluZzpcclxuICAgICAgICBjb25zdCBwcmVwZW5kOiBzdHJpbmcgPSBtZXRhLmFkZGl0aW9uYWw/LmV4cG9ydD8ucHJlcGVuZCB8fCB0aGlzLmNvbmZpZz8uZXhwb3J0Py5wcmVwZW5kIHx8ICcnO1xyXG4gICAgICAgIHZhbCA9IHByZXBlbmQgKyB2YWw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkFycmF5OlxyXG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBtZXRhLmFkZGl0aW9uYWwgYXMgQXJyYXlBZGRpdGlvbmFsO1xyXG4gICAgICAgIHZhbCA9ICh2YWwgYXMgQXJyYXk8c3RyaW5nPikuc2xpY2UoMCxhZGRpdGlvbmFsLmxpbWl0KS5qb2luKGFkZGl0aW9uYWwuYXJyYXlTdHlsZSA9PT0gQXJyYXlTdHlsZS5OZXdMaW5lID8gJ1xcbicgOiAnLCAnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRXhwcmVzc2lvbjpcclxuICAgICAgICB2YWwgPSAobWV0YS50cmFuc2Zvcm0gYXMgYW55KShyb3cpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmICh2YWwuaW5jbHVkZXMoJywnKSB8fCB2YWwuaW5jbHVkZXMoJ1wiJykgfHwgdmFsLmluY2x1ZGVzKCdcXG4nKSkpIHtcclxuICAgICAgdmFsID0gdmFsLnJlcGxhY2VBbGwoJ1wiJywgJ1wiXCInKTtcclxuICAgICAgdmFsID0gJ1wiJyArIHZhbCArICdcIic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm0odmFsOiBhbnksIGRhdGVGb3JtYXQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLnRyYW5zZm9ybWVycyAmJiB0aGlzLmNvbmZpZy50cmFuc2Zvcm1lcnNbRmllbGRUeXBlLkRhdGVdKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2Zvcm1lcnNbRmllbGRUeXBlLkRhdGVdISh2YWwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbCwgZGF0ZUZvcm1hdCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcmVtb3ZlRnJvbU1ldGFEYXRhID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBrZXlzVG9SZW1vdmU6IHN0cmluZ1tdKSA9PlxyXG5cclxuICBvcmRlck1ldGFEYXRhKHN0YXRlKVxyXG4gIC5maWx0ZXIoIG1ldGEgPT4gIWtleXNUb1JlbW92ZS5pbmNsdWRlcyhtZXRhLmtleSkpO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBub25FeHBvcnRhYmxlRmllbGRzID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiBPYmplY3QudmFsdWVzKCBzdGF0ZS5tZXRhRGF0YSlcclxuICAuZmlsdGVyKG1kID0+IG1kLm5vRXhwb3J0IClcclxuICAubWFwKCBtZCA9PiBtZC5rZXkgKTtcclxuXHJcbmV4cG9ydCBjb25zdCBtYXBFeHBvcnRhYmxlRmllbGRzID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB7XHJcbiAgY29uc3QgZmllbGRzVG9SZW1vdmUgPSBub25FeHBvcnRhYmxlRmllbGRzKHN0YXRlKVxyXG4gICAgLmNvbmNhdChzdGF0ZS5oaWRkZW5LZXlzKTtcclxuICAgcmV0dXJuIHJlbW92ZUZyb21NZXRhRGF0YShzdGF0ZSwgZmllbGRzVG9SZW1vdmUpO1xyXG59XHJcbiJdfQ==