@ng-atomic/common 18.10.0 → 18.12.0

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 (193) hide show
  1. package/directives/molecules/column/column.molecule.d.ts +66 -0
  2. package/directives/molecules/column/index.d.ts +1 -0
  3. package/directives/resize-column/index.d.ts +1 -0
  4. package/directives/resize-column/resize-column.directive.d.ts +21 -0
  5. package/directives/resize-column/resize-handle.component.d.ts +5 -0
  6. package/esm2022/directives/molecules/column/column.molecule.mjs +112 -0
  7. package/esm2022/directives/molecules/column/index.mjs +2 -0
  8. package/esm2022/directives/molecules/column/ng-atomic-common-directives-molecules-column.mjs +5 -0
  9. package/esm2022/directives/resize-column/index.mjs +2 -0
  10. package/esm2022/directives/resize-column/ng-atomic-common-directives-resize-column.mjs +5 -0
  11. package/esm2022/directives/resize-column/resize-column.directive.mjs +62 -0
  12. package/esm2022/directives/resize-column/resize-handle.component.mjs +13 -0
  13. package/esm2022/models/index.mjs +1 -1
  14. package/esm2022/pipes/actions/actions.pipe.mjs +1 -1
  15. package/esm2022/pipes/columns/columns.pipe.mjs +3 -2
  16. package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +16 -3
  17. package/esm2022/pipes/domain/domain.pipe.mjs +22 -26
  18. package/esm2022/pipes/error/error.pipe.mjs +1 -2
  19. package/esm2022/pipes/expression/expression.pipe.mjs +18 -0
  20. package/esm2022/pipes/expression/index.mjs +2 -0
  21. package/esm2022/pipes/expression/ng-atomic-common-pipes-expression.mjs +5 -0
  22. package/esm2022/pipes/smart-field/smart-field.pipe.mjs +15 -4
  23. package/esm2022/pipes/style/index.mjs +2 -0
  24. package/esm2022/pipes/style/ng-atomic-common-pipes-style.mjs +5 -0
  25. package/esm2022/pipes/style/style.pipe.mjs +41 -0
  26. package/esm2022/services/form/columns/columns.service.mjs +28 -21
  27. package/esm2022/services/form/json-schema/json-schema.service.mjs +77 -58
  28. package/esm2022/services/form/pagination/pagination.service.mjs +4 -4
  29. package/esm2022/services/language/index.mjs +2 -0
  30. package/esm2022/services/language/language.service.mjs +39 -0
  31. package/esm2022/services/language/ng-atomic-common-services-language.mjs +5 -0
  32. package/esm2022/services/loading/loading.service.mjs +2 -2
  33. package/esm2022/services/query-resolver/query-resolver.service.mjs +4 -5
  34. package/esm2022/services/snack-bar/snack-bar.service.mjs +29 -11
  35. package/esm2022/services/spreadsheet/directives/grid-cell.directive.mjs +124 -0
  36. package/esm2022/services/spreadsheet/directives/index.mjs +2 -0
  37. package/esm2022/services/spreadsheet/features/clipboard.service.mjs +71 -0
  38. package/esm2022/services/spreadsheet/features/data.service.mjs +63 -0
  39. package/esm2022/services/spreadsheet/features/editor.service.mjs +65 -0
  40. package/esm2022/services/spreadsheet/features/grid.service.mjs +54 -0
  41. package/esm2022/services/spreadsheet/features/index.mjs +8 -0
  42. package/esm2022/services/spreadsheet/features/navigation.service.mjs +71 -0
  43. package/esm2022/services/spreadsheet/features/protection.service.mjs +25 -0
  44. package/esm2022/services/spreadsheet/features/selection.service.mjs +129 -0
  45. package/esm2022/services/spreadsheet/index.mjs +5 -0
  46. package/esm2022/services/spreadsheet/models/cell.model.mjs +2 -0
  47. package/esm2022/services/spreadsheet/models/index.mjs +2 -0
  48. package/esm2022/services/spreadsheet/ng-atomic-common-services-spreadsheet.mjs +5 -0
  49. package/esm2022/services/spreadsheet/spreadsheet.service.mjs +183 -0
  50. package/esm2022/services/ui/ui.helpers.mjs +15 -8
  51. package/esm2022/stores/query/query.store.mjs +2 -2
  52. package/esm2022/utils/expression/expression.transformer.mjs +38 -0
  53. package/esm2022/utils/expression/index.mjs +2 -0
  54. package/esm2022/utils/get/get.mjs +2 -2
  55. package/esm2022/utils/index.mjs +2 -2
  56. package/esm2022/utils/inject/inject.mjs +1 -1
  57. package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -1
  58. package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
  59. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs +119 -0
  60. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -0
  61. package/fesm2022/ng-atomic-common-directives-resize-column.mjs +79 -0
  62. package/fesm2022/ng-atomic-common-directives-resize-column.mjs.map +1 -0
  63. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  64. package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
  65. package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -1
  66. package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -1
  67. package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
  68. package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs.map +1 -1
  69. package/fesm2022/ng-atomic-common-pipes-columns.mjs +2 -1
  70. package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
  71. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +15 -2
  72. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
  73. package/fesm2022/ng-atomic-common-pipes-domain.mjs +22 -26
  74. package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
  75. package/fesm2022/ng-atomic-common-pipes-error.mjs +0 -1
  76. package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
  77. package/fesm2022/ng-atomic-common-pipes-expression.mjs +25 -0
  78. package/fesm2022/ng-atomic-common-pipes-expression.mjs.map +1 -0
  79. package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
  80. package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -1
  81. package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -1
  82. package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
  83. package/fesm2022/ng-atomic-common-pipes-map.mjs.map +1 -1
  84. package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -1
  85. package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
  86. package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
  87. package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs.map +1 -1
  88. package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -1
  89. package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
  90. package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
  91. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +15 -4
  92. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
  93. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
  94. package/fesm2022/ng-atomic-common-pipes-sort.mjs.map +1 -1
  95. package/fesm2022/ng-atomic-common-pipes-style.mjs +48 -0
  96. package/fesm2022/ng-atomic-common-pipes-style.mjs.map +1 -0
  97. package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
  98. package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
  99. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  100. package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
  101. package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
  102. package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
  103. package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
  104. package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
  105. package/fesm2022/ng-atomic-common-services-form-columns.mjs +27 -20
  106. package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
  107. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +76 -57
  108. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
  109. package/fesm2022/ng-atomic-common-services-form-pagination.mjs +3 -3
  110. package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
  111. package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
  112. package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
  113. package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
  114. package/fesm2022/ng-atomic-common-services-language.mjs +46 -0
  115. package/fesm2022/ng-atomic-common-services-language.mjs.map +1 -0
  116. package/fesm2022/ng-atomic-common-services-loading.mjs +1 -1
  117. package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
  118. package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -1
  119. package/fesm2022/ng-atomic-common-services-query-resolver.mjs +3 -3
  120. package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
  121. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
  122. package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
  123. package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -1
  124. package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
  125. package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -1
  126. package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
  127. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
  128. package/fesm2022/ng-atomic-common-services-snack-bar.mjs +29 -11
  129. package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
  130. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +758 -0
  131. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -0
  132. package/fesm2022/ng-atomic-common-services-ui.mjs +14 -7
  133. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  134. package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
  135. package/fesm2022/ng-atomic-common-stores-entity.mjs.map +1 -1
  136. package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
  137. package/fesm2022/ng-atomic-common-stores-query.mjs +1 -1
  138. package/fesm2022/ng-atomic-common-stores-query.mjs.map +1 -1
  139. package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
  140. package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
  141. package/fesm2022/ng-atomic-common-utils.mjs +34 -15
  142. package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
  143. package/fesm2022/ng-atomic-common.mjs.map +1 -1
  144. package/models/index.d.ts +2 -1
  145. package/package.json +73 -44
  146. package/pipes/actions/actions.pipe.d.ts +2 -1
  147. package/pipes/columns/columns.pipe.d.ts +1 -0
  148. package/pipes/data-accessor/data-accessor.pipe.d.ts +4 -2
  149. package/pipes/domain/domain.pipe.d.ts +7 -6
  150. package/pipes/expression/expression.pipe.d.ts +9 -0
  151. package/pipes/expression/index.d.ts +1 -0
  152. package/pipes/smart-field/smart-field.pipe.d.ts +2 -2
  153. package/pipes/style/index.d.ts +1 -0
  154. package/pipes/style/style.pipe.d.ts +18 -0
  155. package/services/form/_index/index.service.d.ts +4 -4
  156. package/services/form/columns/columns.service.d.ts +5 -2
  157. package/services/form/json-schema/json-schema.service.d.ts +9 -1
  158. package/services/form/pagination/pagination.service.d.ts +5 -5
  159. package/services/language/index.d.ts +1 -0
  160. package/services/language/language.service.d.ts +12 -0
  161. package/services/query-resolver/query-resolver.service.d.ts +2 -2
  162. package/services/snack-bar/snack-bar.service.d.ts +5 -3
  163. package/services/spreadsheet/directives/grid-cell.directive.d.ts +41 -0
  164. package/services/spreadsheet/directives/index.d.ts +1 -0
  165. package/services/spreadsheet/features/clipboard.service.d.ts +15 -0
  166. package/services/spreadsheet/features/data.service.d.ts +16 -0
  167. package/services/spreadsheet/features/editor.service.d.ts +22 -0
  168. package/services/spreadsheet/features/grid.service.d.ts +17 -0
  169. package/services/spreadsheet/features/index.d.ts +7 -0
  170. package/services/spreadsheet/features/navigation.service.d.ts +17 -0
  171. package/services/spreadsheet/features/protection.service.d.ts +24 -0
  172. package/services/spreadsheet/features/selection.service.d.ts +40 -0
  173. package/services/spreadsheet/index.d.ts +4 -0
  174. package/services/spreadsheet/models/cell.model.d.ts +17 -0
  175. package/services/spreadsheet/models/index.d.ts +1 -0
  176. package/services/spreadsheet/spreadsheet.service.d.ts +29 -0
  177. package/utils/expression/expression.transformer.d.ts +12 -0
  178. package/utils/expression/index.d.ts +1 -0
  179. package/utils/index.d.ts +1 -1
  180. package/utils/inject/inject.d.ts +2 -2
  181. package/esm2022/pipes/smart-exp/index.mjs +0 -3
  182. package/esm2022/pipes/smart-exp/ng-atomic-common-pipes-smart-exp.mjs +0 -5
  183. package/esm2022/pipes/smart-exp/smart-exp.module.mjs +0 -16
  184. package/esm2022/pipes/smart-exp/smart-exp.pipe.mjs +0 -27
  185. package/esm2022/utils/smart-exp-transformer/index.mjs +0 -2
  186. package/esm2022/utils/smart-exp-transformer/smart-exp-transformer.mjs +0 -18
  187. package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs +0 -47
  188. package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs.map +0 -1
  189. package/pipes/smart-exp/index.d.ts +0 -2
  190. package/pipes/smart-exp/smart-exp.module.d.ts +0 -7
  191. package/pipes/smart-exp/smart-exp.pipe.d.ts +0 -11
  192. package/utils/smart-exp-transformer/index.d.ts +0 -1
  193. package/utils/smart-exp-transformer/smart-exp-transformer.d.ts +0 -6
@@ -5,10 +5,10 @@ export class PaginationService {
5
5
  constructor() {
6
6
  this.fb = inject(FormBuilder);
7
7
  }
8
- build({ pageSize = 50, pageIndex = 0, length = 0, } = {}) {
8
+ build({ size = 50, index = 0, length = 0, } = {}) {
9
9
  return this.fb.group({
10
- pageSize: [pageSize],
11
- pageIndex: [pageIndex],
10
+ size: [size],
11
+ index: [index],
12
12
  length: [length],
13
13
  });
14
14
  }
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
21
21
  providedIn: 'root'
22
22
  }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9mb3JtL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFXN0MsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FhbEM7SUFYQyxLQUFLLENBQUMsRUFDSixRQUFRLEdBQUcsRUFBRSxFQUNiLFNBQVMsR0FBRyxDQUFDLEVBQ2IsTUFBTSxHQUFHLENBQUMsTUFDc0IsRUFBRTtRQUNsQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUNwQixTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDdEIsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBYlUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkZvcm1WYWx1ZSB7XG4gIHBhZ2VTaXplOiBudW1iZXIsXG4gIHBhZ2VJbmRleDogbnVtYmVyLFxuICBsZW5ndGg6IG51bWJlcixcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICBidWlsZCh7XG4gICAgcGFnZVNpemUgPSA1MCxcbiAgICBwYWdlSW5kZXggPSAwLFxuICAgIGxlbmd0aCA9IDAsXG4gIH06IFBhcnRpYWw8UGFnaW5hdGlvbkZvcm1WYWx1ZT4gPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHBhZ2VTaXplOiBbcGFnZVNpemVdLFxuICAgICAgcGFnZUluZGV4OiBbcGFnZUluZGV4XSxcbiAgICAgIGxlbmd0aDogW2xlbmd0aF0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9mb3JtL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFXN0MsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FhbEM7SUFYQyxLQUFLLENBQUMsRUFDSixJQUFJLEdBQUcsRUFBRSxFQUNULEtBQUssR0FBRyxDQUFDLEVBQ1QsTUFBTSxHQUFHLENBQUMsTUFDc0IsRUFBRTtRQUNsQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25CLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQztZQUNaLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNkLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWJVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25Gb3JtVmFsdWUge1xuICBzaXplOiBudW1iZXIsXG4gIGluZGV4OiBudW1iZXIsXG4gIGxlbmd0aDogbnVtYmVyLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuXG4gIGJ1aWxkKHtcbiAgICBzaXplID0gNTAsXG4gICAgaW5kZXggPSAwLFxuICAgIGxlbmd0aCA9IDAsXG4gIH06IFBhcnRpYWw8UGFnaW5hdGlvbkZvcm1WYWx1ZT4gPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHNpemU6IFtzaXplXSxcbiAgICAgIGluZGV4OiBbaW5kZXhdLFxuICAgICAgbGVuZ3RoOiBbbGVuZ3RoXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './language.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2xhbmd1YWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,39 @@
1
+ import { InjectionToken, inject, Injectable } from '@angular/core';
2
+ import { get, has } from 'lodash-es';
3
+ import * as i0 from "@angular/core";
4
+ export const DOMAIN_LANG_MAP = new InjectionToken('domain lang map');
5
+ export class LanguageService {
6
+ constructor() {
7
+ this.map = inject(DOMAIN_LANG_MAP, { optional: true }) ?? {};
8
+ this.regexResolvers = Object.entries(this.map).map(([regexKey, value]) => {
9
+ const regexIndicators = /[.*+?^${}()|[\]\\]/;
10
+ if (regexIndicators.test(regexKey)) {
11
+ return (key) => {
12
+ const regex = new RegExp(regexKey);
13
+ return regex.test(key) ? value : null;
14
+ };
15
+ }
16
+ return () => null;
17
+ });
18
+ }
19
+ translate(text, src, dest, context) {
20
+ return text;
21
+ }
22
+ transform(input, map = this.map) {
23
+ if (has(map, input))
24
+ return get(map, input);
25
+ for (const resolver of this.regexResolvers) {
26
+ const result = resolver(input);
27
+ if (result)
28
+ return result;
29
+ }
30
+ return map[input] ?? input;
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: LanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
33
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: LanguageService, providedIn: 'any' }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: LanguageService, decorators: [{
36
+ type: Injectable,
37
+ args: [{ providedIn: 'any' }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvbGFuZ3VhZ2UvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBR3JDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsaUJBQWlCLENBQUMsQ0FBQztBQUdwRixNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVZLFFBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RELG1CQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM1RSxNQUFNLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQztZQUM3QyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDeEMsQ0FBQyxDQUFBO1lBQ0gsQ0FBQztZQUNELE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0tBY0o7SUFaQyxTQUFTLENBQUMsSUFBWSxFQUFFLEdBQVcsRUFBRSxJQUFZLEVBQUUsT0FBYTtRQUM5RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQXFCLElBQUksQ0FBQyxHQUFHO1FBQ3BELElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksTUFBTTtnQkFBRSxPQUFPLE1BQU0sQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzdCLENBQUM7OEdBeEJVLGVBQWU7a0hBQWYsZUFBZSxjQURGLEtBQUs7OzJGQUNsQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCwgaGFzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHR5cGUgRG9tYWluTGFuZ01hcCA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5leHBvcnQgY29uc3QgRE9NQUlOX0xBTkdfTUFQID0gbmV3IEluamVjdGlvblRva2VuPERvbWFpbkxhbmdNYXA+KCdkb21haW4gbGFuZyBtYXAnKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIExhbmd1YWdlU2VydmljZSB7XG4gIHByb3RlY3RlZCBtYXAgPSBpbmplY3QoRE9NQUlOX0xBTkdfTUFQLCB7b3B0aW9uYWw6IHRydWV9KSA/PyB7fTtcbiAgcHJvdGVjdGVkIHJlZ2V4UmVzb2x2ZXJzID0gT2JqZWN0LmVudHJpZXModGhpcy5tYXApLm1hcCgoW3JlZ2V4S2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCByZWdleEluZGljYXRvcnMgPSAvWy4qKz9eJHt9KCl8W1xcXVxcXFxdLztcbiAgICBpZiAocmVnZXhJbmRpY2F0b3JzLnRlc3QocmVnZXhLZXkpKSB7XG4gICAgICByZXR1cm4gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChyZWdleEtleSk7XG4gICAgICAgIHJldHVybiByZWdleC50ZXN0KGtleSkgPyB2YWx1ZSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9KTtcblxuICB0cmFuc2xhdGUodGV4dDogc3RyaW5nLCBzcmM6IHN0cmluZywgZGVzdDogc3RyaW5nLCBjb250ZXh0PzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIHRyYW5zZm9ybShpbnB1dDogc3RyaW5nLCBtYXA6IERvbWFpbkxhbmdNYXAgPSB0aGlzLm1hcCk6IHN0cmluZyB7XG4gICAgaWYgKGhhcyhtYXAsIGlucHV0KSkgcmV0dXJuIGdldChtYXAsIGlucHV0KTtcbiAgICBmb3IgKGNvbnN0IHJlc29sdmVyIG9mIHRoaXMucmVnZXhSZXNvbHZlcnMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVyKGlucHV0KTtcbiAgICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBtYXBbaW5wdXRdID8/IGlucHV0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1sYW5ndWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvbGFuZ3VhZ2UvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1sYW5ndWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -11,7 +11,7 @@ export class LoadingService {
11
11
  this.isLoading = this.getIsLoading();
12
12
  this.isLoading$ = toObservable(this.isLoading);
13
13
  this.isProgress = (domain = 'progress') => this.getIsLoading(domain)();
14
- effect(() => console.info('LoadingService.loadingMap:', this.loadingMap()));
14
+ effect(() => console.info('[LoadingService] loadingMap:', this.loadingMap()));
15
15
  }
16
16
  getIsLoading(domain = 'default') {
17
17
  return computed(() => Object.keys(get(this.loadingMap(), [domain], {}))?.length > 0);
@@ -59,4 +59,4 @@ export function provideNoopLoadingService() {
59
59
  export function randomStr(n = 16) {
60
60
  return Math.random().toString(36).substr(2, n);
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9sb2FkaW5nL2xvYWRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFzRCxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPaEQsTUFBTSxPQUFPLGNBQWM7SUFPekI7UUFOUyxlQUFVLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQ25DLGdCQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUd6RSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBTSxHQUFHLFNBQVM7UUFD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QUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHNldCwgdW5zZXQsIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlSW5wdXQsIE9ic2VydmVkVmFsdWVPZiwgT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG50eXBlIExvYWRpbmdNYXAgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2FkaW5nU2VydmljZSB7XG4gIHJlYWRvbmx5IGxvYWRpbmdNYXAgPSBzaWduYWw8TG9hZGluZ01hcD4oe30pXG4gIHJlYWRvbmx5IGxvYWRpbmdNYXAkID0gdG9PYnNlcnZhYmxlKHRoaXMubG9hZGluZ01hcCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IHRoaXMuZ2V0SXNMb2FkaW5nKCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyQgPSB0b09ic2VydmFibGUodGhpcy5pc0xvYWRpbmcpO1xuICByZWFkb25seSBpc1Byb2dyZXNzID0gKGRvbWFpbiA9ICdwcm9ncmVzcycpID0+IHRoaXMuZ2V0SXNMb2FkaW5nKGRvbWFpbikoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4gY29uc29sZS5pbmZvKCdMb2FkaW5nU2VydmljZS5sb2FkaW5nTWFwOicsIHRoaXMubG9hZGluZ01hcCgpKSk7XG4gIH1cblxuICBnZXRJc0xvYWRpbmcoZG9tYWluID0gJ2RlZmF1bHQnKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LmtleXMoZ2V0KHRoaXMubG9hZGluZ01hcCgpLCBbZG9tYWluXSwge30pKT8ubGVuZ3RoID4gMCk7XG4gIH1cblxuICBzdGFydChrZXk6IHN0cmluZyA9IHJhbmRvbVN0cigxNiksIGRvbWFpbiA9ICdkZWZhdWx0Jyk6IHN0cmluZyB7XG4gICAgdGhpcy5sb2FkaW5nTWFwLnVwZGF0ZSgobWFwKSA9PiAoey4uLnNldChtYXAsIFtkb21haW4sIGtleV0sIHRydWUpfSkpO1xuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBlbmQoa2V5OiBzdHJpbmcsIGRvbWFpbiA9ICdkZWZhdWx0Jyk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZ01hcC51cGRhdGUoKG1hcCkgPT4gKHsuLi4odW5zZXQobWFwLCBbZG9tYWluLCBrZXldKSwgbWFwKX0pKTtcbiAgfVxuXG4gIGFzeW5jIGF3YWl0PFQgPSBhbnk+KFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IFByb21pc2U8VCB8IHZvaWQ+IHwgKFQgfCB2b2lkKSxcbiAgICBkb21haW4gPSAnZGVmYXVsdCcsXG4gICAga2V5ID0gcmFuZG9tU3RyKDE2KSxcbiAgKTogUHJvbWlzZTxUIHwgdm9pZD4ge1xuICAgIHRoaXMuc3RhcnQoa2V5LCBkb21haW4pO1xuICAgIGNvbnN0IHdyYXBwZWRDYWxsYmFjayA9IGFzeW5jICgpID0+IGF3YWl0IGNhbGxiYWNrKCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgd3JhcHBlZENhbGxiYWNrKCkuY2F0Y2goZXJyb3IgPT4ge2NvbnNvbGUuZXJyb3IoZXJyb3IpO30pO1xuICAgIHRoaXMuZW5kKGtleSwgZG9tYWluKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgc3dpdGNoTWFwPFQsIE8gZXh0ZW5kcyBPYnNlcnZhYmxlSW5wdXQ8YW55Pj4oXG4gICAgcHJvamVjdDogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyKSA9PiBPLFxuICAgIGRvbWFpbiA9ICdkZWZhdWx0JyxcbiAgICBrZXkgPSByYW5kb21TdHIoMTYpLFxuICApOiBPcGVyYXRvckZ1bmN0aW9uPFQsIE9ic2VydmVkVmFsdWVPZjxPPj4ge1xuICAgIHJldHVybiAoc291cmNlKSA9PiBzb3VyY2UucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnN0YXJ0KGtleSwgZG9tYWluKSksXG4gICAgICBzd2l0Y2hNYXAocHJvamVjdCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5lbmQoa2V5LCBkb21haW4pKSxcbiAgICApO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb29wTG9hZGluZ1NlcnZpY2UgZXh0ZW5kcyBMb2FkaW5nU2VydmljZSB7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyQgPSBvZihmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTm9vcExvYWRpbmdTZXJ2aWNlKCkge1xuICByZXR1cm4geyBwcm92aWRlOiBMb2FkaW5nU2VydmljZSwgdXNlQ2xhc3M6IE5vb3BMb2FkaW5nU2VydmljZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tU3RyKG4gPSAxNik6IHN0cmluZyB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgbik7XG59Il19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9sb2FkaW5nL2xvYWRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFzRCxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPaEQsTUFBTSxPQUFPLGNBQWM7SUFPekI7UUFOUyxlQUFVLEdBQUcsTUFBTSxDQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQ25DLGdCQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUd6RSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBTSxHQUFHLFNBQVM7UUFDN0IsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFjLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsU0FBUztRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLE1BQU0sR0FBRyxTQUFTO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FDVCxRQUE0RCxFQUM1RCxNQUFNLEdBQUcsU0FBUyxFQUNsQixHQUFHLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxHQUFHLEdBQUcsTUFBTSxlQUFlLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsU0FBUyxDQUNQLE9BQXVDLEVBQ3ZDLE1BQU0sR0FBRyxTQUFTLEVBQ2xCLEdBQUcsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBRW5CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUNsQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQ2xCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQzs4R0E5Q1UsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBbURELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBRHREOztRQUVXLGVBQVUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDakM7OEdBRlksa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7O0FBS1gsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUM5QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHNldCwgdW5zZXQsIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlSW5wdXQsIE9ic2VydmVkVmFsdWVPZiwgT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG50eXBlIExvYWRpbmdNYXAgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2FkaW5nU2VydmljZSB7XG4gIHJlYWRvbmx5IGxvYWRpbmdNYXAgPSBzaWduYWw8TG9hZGluZ01hcD4oe30pXG4gIHJlYWRvbmx5IGxvYWRpbmdNYXAkID0gdG9PYnNlcnZhYmxlKHRoaXMubG9hZGluZ01hcCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IHRoaXMuZ2V0SXNMb2FkaW5nKCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyQgPSB0b09ic2VydmFibGUodGhpcy5pc0xvYWRpbmcpO1xuICByZWFkb25seSBpc1Byb2dyZXNzID0gKGRvbWFpbiA9ICdwcm9ncmVzcycpID0+IHRoaXMuZ2V0SXNMb2FkaW5nKGRvbWFpbikoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4gY29uc29sZS5pbmZvKCdbTG9hZGluZ1NlcnZpY2VdIGxvYWRpbmdNYXA6JywgdGhpcy5sb2FkaW5nTWFwKCkpKTtcbiAgfVxuXG4gIGdldElzTG9hZGluZyhkb21haW4gPSAnZGVmYXVsdCcpOiBTaWduYWw8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyhnZXQodGhpcy5sb2FkaW5nTWFwKCksIFtkb21haW5dLCB7fSkpPy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHN0YXJ0KGtleTogc3RyaW5nID0gcmFuZG9tU3RyKDE2KSwgZG9tYWluID0gJ2RlZmF1bHQnKTogc3RyaW5nIHtcbiAgICB0aGlzLmxvYWRpbmdNYXAudXBkYXRlKChtYXApID0+ICh7Li4uc2V0KG1hcCwgW2RvbWFpbiwga2V5XSwgdHJ1ZSl9KSk7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIGVuZChrZXk6IHN0cmluZywgZG9tYWluID0gJ2RlZmF1bHQnKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nTWFwLnVwZGF0ZSgobWFwKSA9PiAoey4uLih1bnNldChtYXAsIFtkb21haW4sIGtleV0pLCBtYXApfSkpO1xuICB9XG5cbiAgYXN5bmMgYXdhaXQ8VCA9IGFueT4oXG4gICAgY2FsbGJhY2s6ICguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxUIHwgdm9pZD4gfCAoVCB8IHZvaWQpLFxuICAgIGRvbWFpbiA9ICdkZWZhdWx0JyxcbiAgICBrZXkgPSByYW5kb21TdHIoMTYpLFxuICApOiBQcm9taXNlPFQgfCB2b2lkPiB7XG4gICAgdGhpcy5zdGFydChrZXksIGRvbWFpbik7XG4gICAgY29uc3Qgd3JhcHBlZENhbGxiYWNrID0gYXN5bmMgKCkgPT4gYXdhaXQgY2FsbGJhY2soKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB3cmFwcGVkQ2FsbGJhY2soKS5jYXRjaChlcnJvciA9PiB7Y29uc29sZS5lcnJvcihlcnJvcik7fSk7XG4gICAgdGhpcy5lbmQoa2V5LCBkb21haW4pO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBzd2l0Y2hNYXA8VCwgTyBleHRlbmRzIE9ic2VydmFibGVJbnB1dDxhbnk+PihcbiAgICBwcm9qZWN0OiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIpID0+IE8sXG4gICAgZG9tYWluID0gJ2RlZmF1bHQnLFxuICAgIGtleSA9IHJhbmRvbVN0cigxNiksXG4gICk6IE9wZXJhdG9yRnVuY3Rpb248VCwgT2JzZXJ2ZWRWYWx1ZU9mPE8+PiB7XG4gICAgcmV0dXJuIChzb3VyY2UpID0+IHNvdXJjZS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuc3RhcnQoa2V5LCBkb21haW4pKSxcbiAgICAgIHN3aXRjaE1hcChwcm9qZWN0KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmVuZChrZXksIGRvbWFpbikpLFxuICAgICk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vb3BMb2FkaW5nU2VydmljZSBleHRlbmRzIExvYWRpbmdTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgaXNMb2FkaW5nJCA9IG9mKGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOb29wTG9hZGluZ1NlcnZpY2UoKSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IExvYWRpbmdTZXJ2aWNlLCB1c2VDbGFzczogTm9vcExvYWRpbmdTZXJ2aWNlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21TdHIobiA9IDE2KTogc3RyaW5nIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCBuKTtcbn0iXX0=
@@ -1,7 +1,6 @@
1
1
  import { Injectable, inject } from "@angular/core";
2
- import { DOMAIN_LANG_MAP } from "@ng-atomic/common/pipes/domain";
3
- import { toObject } from '@ng-atomic/common/utils';
4
- import { smartExpTransformer, SMART_EXP_TRANSFORMER } from '@ng-atomic/common/utils';
2
+ import { DOMAIN_LANG_MAP } from "@ng-atomic/common/services/language";
3
+ import { defaultExpressionTransformer, EXPRESSION_TRANSFORMER, toObject } from '@ng-atomic/common/utils';
5
4
  import { flattenExcludeDayjs as flatten } from '@nx-ddd/core/util/walk-obj';
6
5
  import dayjs from 'dayjs';
7
6
  import { DATA_ACCESSOR, defaultDataAccessor } from "@ng-atomic/common/pipes/data-accessor";
@@ -32,7 +31,7 @@ export class QueryResolverService {
32
31
  constructor() {
33
32
  this.parser = inject(QueryParserService);
34
33
  this.dataAccessor = inject(DATA_ACCESSOR, { optional: true }) ?? defaultDataAccessor;
35
- this.transformer = inject(SMART_EXP_TRANSFORMER, { optional: true }) ?? smartExpTransformer;
34
+ this.transformer = inject(EXPRESSION_TRANSFORMER, { optional: true }) ?? defaultExpressionTransformer;
36
35
  this.map = inject(DOMAIN_LANG_MAP, { optional: true }) ?? {};
37
36
  this.reversedMap = Object.entries(this.map).reduce((p, [k, v]) => ({ ...p, [v]: k }), {});
38
37
  }
@@ -92,4 +91,4 @@ function lt(value, query) {
92
91
  ? dayjs(query).isAfter(value)
93
92
  : false;
94
93
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvcXVlcnktcmVzb2x2ZXIvcXVlcnktcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQVUzRixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLEtBQUssQ0FBQyxLQUFhO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxHQUFHO2dCQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVCLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFH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QU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRE9NQUlOX0xBTkdfTUFQIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RvbWFpblwiO1xuaW1wb3J0IHsgdG9PYmplY3QgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBzbWFydEV4cFRyYW5zZm9ybWVyLCBTTUFSVF9FWFBfVFJBTlNGT1JNRVIgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBmbGF0dGVuRXhjbHVkZURheWpzIGFzIGZsYXR0ZW4gfSBmcm9tICdAbngtZGRkL2NvcmUvdXRpbC93YWxrLW9iaic7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgREFUQV9BQ0NFU1NPUiwgZGVmYXVsdERhdGFBY2Nlc3NvciB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi9waXBlcy9kYXRhLWFjY2Vzc29yXCI7XG5cbmludGVyZmFjZSBRdWVyeSB7XG4gIGtleTogc3RyaW5nO1xuICBvcGVyYXRvcjogJzonIHwgJz4nIHwgJzwnIHwgJz0nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBub3Q6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBRdWVyeVBhcnNlclNlcnZpY2Uge1xuICBwYXJzZShxdWVyeTogc3RyaW5nKTogUXVlcnlbXSB7XG4gICAgcmV0dXJuIHF1ZXJ5LnNwbGl0KCcgJykuZmlsdGVyKHEgPT4gcS5sZW5ndGgpLm1hcChzdHIgPT4ge1xuICAgICAgY29uc3Qgbm90ID0gc3RyLnN0YXJ0c1dpdGgoJy0nKTtcbiAgICAgIGlmIChub3QpIHN0ciA9IHN0ci5zbGljZSgxKTtcblxuICAgICAgZm9yIChjb25zdCBvcGVyYXRvciBvZiBbJz0nLCAnPicsICc8JywgJzonXSBhcyBjb25zdCkge1xuICAgICAgICBpZiAoc3RyLmluY2x1ZGVzKG9wZXJhdG9yKSkge1xuICAgICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHN0ci5zcGxpdChvcGVyYXRvcik7XG4gICAgICAgICAgcmV0dXJuIHsga2V5LCBvcGVyYXRvciwgdmFsdWUsIG5vdCB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBrZXk6ICcqJywgb3BlcmF0b3I6ICc6JywgdmFsdWU6IHN0ciwgbm90IH07XG4gICAgfSk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5UmVzb2x2ZXJTZXJ2aWNlPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcHJvdGVjdGVkIHBhcnNlciA9IGluamVjdChRdWVyeVBhcnNlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZGF0YUFjY2Vzc29yID0gaW5qZWN0KERBVEFfQUNDRVNTT1IsIHtvcHRpb25hbDogdHJ1ZX0pID8/IGRlZmF1bHREYXRhQWNjZXNzb3I7XG4gIHByb3RlY3RlZCB0cmFuc2Zvcm1lciA9IGluamVjdChTTUFSVF9FWFBfVFJBTlNGT1JNRVIsIHtvcHRpb25hbDogdHJ1ZX0pID8/IHNtYXJ0RXhwVHJhbnNmb3JtZXI7XG4gIHByb3RlY3RlZCBtYXAgPSBpbmplY3QoRE9NQUlOX0xBTkdfTUFQLCB7b3B0aW9uYWw6IHRydWV9KSA/PyB7fTtcbiAgcHJvdGVjdGVkIHJldmVyc2VkTWFwID0gT2JqZWN0LmVudHJpZXModGhpcy5tYXApLnJlZHVjZSgocCwgW2ssIHZdKSA9PiAoey4uLnAsIFt2XToga30pLCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblxuICByZXNvbHZlKGl0ZW1zOiBUW10sIHF1ZXJ5U3RyID0gJycpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShxdWVyeVN0cikucmVkdWNlKChfaXRlbXMsIHF1ZXJ5KSA9PiB0aGlzLmV4ZWN1dGVRdWVyeShfaXRlbXMsIHF1ZXJ5KSwgaXRlbXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4ZWN1dGVRdWVyeShpdGVtczogVFtdLCBxdWVyeTogUXVlcnkpOiBUW10ge1xuICAgIGlmIChxdWVyeS5rZXkgPT09ICcqJyAmJiBxdWVyeS5vcGVyYXRvciA9PT0gJzonKVxuICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHRoaXMub3BlcmF0ZUJ5QWxsS2V5KGl0ZW0sIGluXywgcXVlcnkpKTtcbiAgICBzd2l0Y2ggKHF1ZXJ5Lm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc6JzogcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHRoaXMub3BlcmF0ZUJ5S2V5KGl0ZW0sIGluXywgcXVlcnkpKTtcbiAgICAgIGNhc2UgJz0nOiByZXR1cm4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gdGhpcy5vcGVyYXRlQnlLZXkoaXRlbSwgZXEsIHF1ZXJ5KSk7XG4gICAgICBjYXNlICc+JzogcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHRoaXMub3BlcmF0ZUJ5S2V5KGl0ZW0sIGd0LCBxdWVyeSkpO1xuICAgICAgY2FzZSAnPCc6IHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiB0aGlzLm9wZXJhdGVCeUtleShpdGVtLCBsdCwgcXVlcnkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlcmF0ZUJ5S2V5KGl0ZW06IFQsIG9wZXJhdG9yOiBRdWVyeU9wZXJhdG9yLCB7a2V5LCB2YWx1ZSwgbm90fTogUXVlcnkpOiBib29sZWFuIHtcbiAgICBsZXQgaXRlbVZhbHVlOiBhbnk7XG4gICAgaXRlbVZhbHVlID0gdGhpcy5kYXRhQWNjZXNzb3IoaXRlbSwga2V5KTtcbiAgICBpdGVtVmFsdWUgPSB0aGlzLnRyYW5zZm9ybWVyKGl0ZW1WYWx1ZSwga2V5KTtcbiAgICByZXR1cm4gbm90ID8gIW9wZXJhdG9yKGl0ZW1WYWx1ZSwgdmFsdWUpIDogb3BlcmF0b3IoaXRlbVZhbHVlLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlcmF0ZUJ5QWxsS2V5KGl0ZW06IFQsIG9wZXJhdG9yOiBRdWVyeU9wZXJhdG9yLCBxdWVyeTogUXVlcnkpIHtcbiAgICBjb25zdCBmbGF0dGVuT2JqID0gZmxhdHRlbih0b09iamVjdChpdGVtKSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGZsYXR0ZW5PYmopLnNvbWUoKGtleSkgPT4gdGhpcy5vcGVyYXRlQnlLZXkoaXRlbSwgb3BlcmF0b3IsIHsuLi5xdWVyeSwga2V5fSkpO1xuICB9XG59XG5cbnR5cGUgUXVlcnlPcGVyYXRvciA9IChfdmFsdWU6IGFueSwgcXVlcnk6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuZnVuY3Rpb24gaW5fKHZhbHVlOiBhbnksIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZT8uaW5jbHVkZXMocXVlcnkpIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGVxKHZhbHVlOiBhbnksIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA9PT0gcXVlcnkgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ3QodmFsdWU6IGFueSwgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBjb25zdCB2YWx1ZSA9IGRheWpzLmlzRGF5anModikgPyB2IDogdGhpcy50cmFuc2Zvcm1lcih2LCBrKTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgXG4gICAgPyBwYXJzZUZsb2F0KHZhbHVlKSA+IHBhcnNlRmxvYXQocXVlcnkpIFxuICAgIDogdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgID8gdmFsdWUgPiBwYXJzZUZsb2F0KHF1ZXJ5KVxuICAgIDogZGF5anMuaXNEYXlqcyh2YWx1ZSlcbiAgICA/IGRheWpzKHF1ZXJ5KS5pc0JlZm9yZSh2YWx1ZSlcbiAgICA6IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsdCh2YWx1ZTogYW55LCBxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIGNvbnN0IHZhbHVlID0gZGF5anMuaXNEYXlqcyh2KSA/IHYgOiB0aGlzLnRyYW5zZm9ybWVyKHYsIGspO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyBcbiAgICA/IHBhcnNlRmxvYXQodmFsdWUpIDwgcGFyc2VGbG9hdChxdWVyeSkgXG4gICAgOiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG4gICAgPyB2YWx1ZSA8IHBhcnNlRmxvYXQocXVlcnkpXG4gICAgOiBkYXlqcy5pc0RheWpzKHZhbHVlKVxuICAgID8gZGF5anMocXVlcnkpLmlzQWZ0ZXIodmFsdWUpXG4gICAgOiBmYWxzZTtcbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvcXVlcnktcmVzb2x2ZXIvcXVlcnktcmVzb2x2ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQVUzRixNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLEtBQUssQ0FBQyxLQUFhO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxHQUFHO2dCQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVCLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQVUsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLEdBQUcs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QyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRE9NQUlOX0xBTkdfTUFQIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBkZWZhdWx0RXhwcmVzc2lvblRyYW5zZm9ybWVyLCBFWFBSRVNTSU9OX1RSQU5TRk9STUVSLCB0b09iamVjdCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGZsYXR0ZW5FeGNsdWRlRGF5anMgYXMgZmxhdHRlbiB9IGZyb20gJ0BueC1kZGQvY29yZS91dGlsL3dhbGstb2JqJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBEQVRBX0FDQ0VTU09SLCBkZWZhdWx0RGF0YUFjY2Vzc29yIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RhdGEtYWNjZXNzb3JcIjtcblxuaW50ZXJmYWNlIFF1ZXJ5IHtcbiAga2V5OiBzdHJpbmc7XG4gIG9wZXJhdG9yOiAnOicgfCAnPicgfCAnPCcgfCAnPSc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG5vdDogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5UGFyc2VyU2VydmljZSB7XG4gIHBhcnNlKHF1ZXJ5OiBzdHJpbmcpOiBRdWVyeVtdIHtcbiAgICByZXR1cm4gcXVlcnkuc3BsaXQoJyAnKS5maWx0ZXIocSA9PiBxLmxlbmd0aCkubWFwKHN0ciA9PiB7XG4gICAgICBjb25zdCBub3QgPSBzdHIuc3RhcnRzV2l0aCgnLScpO1xuICAgICAgaWYgKG5vdCkgc3RyID0gc3RyLnNsaWNlKDEpO1xuXG4gICAgICBmb3IgKGNvbnN0IG9wZXJhdG9yIG9mIFsnPScsICc+JywgJzwnLCAnOiddIGFzIGNvbnN0KSB7XG4gICAgICAgIGlmIChzdHIuaW5jbHVkZXMob3BlcmF0b3IpKSB7XG4gICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gc3RyLnNwbGl0KG9wZXJhdG9yKTtcbiAgICAgICAgICByZXR1cm4geyBrZXksIG9wZXJhdG9yLCB2YWx1ZSwgbm90IH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGtleTogJyonLCBvcGVyYXRvcjogJzonLCB2YWx1ZTogc3RyLCBub3QgfTtcbiAgICB9KTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdhbnknIH0pXG5leHBvcnQgY2xhc3MgUXVlcnlSZXNvbHZlclNlcnZpY2U8VCBleHRlbmRzIG9iamVjdD4ge1xuICBwcm90ZWN0ZWQgcGFyc2VyID0gaW5qZWN0KFF1ZXJ5UGFyc2VyU2VydmljZSk7XG4gIHByb3RlY3RlZCBkYXRhQWNjZXNzb3IgPSBpbmplY3QoREFUQV9BQ0NFU1NPUiwge29wdGlvbmFsOiB0cnVlfSkgPz8gZGVmYXVsdERhdGFBY2Nlc3NvcjtcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybWVyID0gaW5qZWN0KEVYUFJFU1NJT05fVFJBTlNGT1JNRVIsIHtvcHRpb25hbDogdHJ1ZX0pID8/IGRlZmF1bHRFeHByZXNzaW9uVHJhbnNmb3JtZXI7XG4gIHByb3RlY3RlZCBtYXAgPSBpbmplY3QoRE9NQUlOX0xBTkdfTUFQLCB7b3B0aW9uYWw6IHRydWV9KSA/PyB7fTtcbiAgcHJvdGVjdGVkIHJldmVyc2VkTWFwID0gT2JqZWN0LmVudHJpZXModGhpcy5tYXApLnJlZHVjZSgocCwgW2ssIHZdKSA9PiAoey4uLnAsIFt2XToga30pLCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblxuICByZXNvbHZlKGl0ZW1zOiBUW10sIHF1ZXJ5U3RyID0gJycpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5wYXJzZShxdWVyeVN0cikucmVkdWNlKChfaXRlbXMsIHF1ZXJ5KSA9PiB0aGlzLmV4ZWN1dGVRdWVyeShfaXRlbXMsIHF1ZXJ5KSwgaXRlbXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4ZWN1dGVRdWVyeShpdGVtczogVFtdLCBxdWVyeTogUXVlcnkpOiBUW10ge1xuICAgIGlmIChxdWVyeS5rZXkgPT09ICcqJyAmJiBxdWVyeS5vcGVyYXRvciA9PT0gJzonKVxuICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHRoaXMub3BlcmF0ZUJ5QWxsS2V5KGl0ZW0sIGluXywgcXVlcnkpKTtcbiAgICBzd2l0Y2ggKHF1ZXJ5Lm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc6JzogcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHRoaXMub3BlcmF0ZUJ5S2V5KGl0ZW0sIGluXywgcXVlcnkpKTtcbiAgICAgIGNhc2UgJz0nOiByZXR1cm4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gdGhpcy5vcGVyYXRlQnlLZXkoaXRlbSwgZXEsIHF1ZXJ5KSk7XG4gICAgICBjYXNlICc+JzogcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHRoaXMub3BlcmF0ZUJ5S2V5KGl0ZW0sIGd0LCBxdWVyeSkpO1xuICAgICAgY2FzZSAnPCc6IHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiB0aGlzLm9wZXJhdGVCeUtleShpdGVtLCBsdCwgcXVlcnkpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlcmF0ZUJ5S2V5KGl0ZW06IFQsIG9wZXJhdG9yOiBRdWVyeU9wZXJhdG9yLCB7a2V5LCB2YWx1ZSwgbm90fTogUXVlcnkpOiBib29sZWFuIHtcbiAgICBsZXQgaXRlbVZhbHVlOiBhbnk7XG4gICAgaXRlbVZhbHVlID0gdGhpcy5kYXRhQWNjZXNzb3IoaXRlbSwga2V5KTtcbiAgICBpdGVtVmFsdWUgPSB0aGlzLnRyYW5zZm9ybWVyKGl0ZW1WYWx1ZSwga2V5KTtcbiAgICByZXR1cm4gbm90ID8gIW9wZXJhdG9yKGl0ZW1WYWx1ZSwgdmFsdWUpIDogb3BlcmF0b3IoaXRlbVZhbHVlLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlcmF0ZUJ5QWxsS2V5KGl0ZW06IFQsIG9wZXJhdG9yOiBRdWVyeU9wZXJhdG9yLCBxdWVyeTogUXVlcnkpIHtcbiAgICBjb25zdCBmbGF0dGVuT2JqID0gZmxhdHRlbih0b09iamVjdChpdGVtKSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGZsYXR0ZW5PYmopLnNvbWUoKGtleSkgPT4gdGhpcy5vcGVyYXRlQnlLZXkoaXRlbSwgb3BlcmF0b3IsIHsuLi5xdWVyeSwga2V5fSkpO1xuICB9XG59XG5cbnR5cGUgUXVlcnlPcGVyYXRvciA9IChfdmFsdWU6IGFueSwgcXVlcnk6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuZnVuY3Rpb24gaW5fKHZhbHVlOiBhbnksIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZT8uaW5jbHVkZXMocXVlcnkpIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGVxKHZhbHVlOiBhbnksIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA9PT0gcXVlcnkgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ3QodmFsdWU6IGFueSwgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBjb25zdCB2YWx1ZSA9IGRheWpzLmlzRGF5anModikgPyB2IDogdGhpcy50cmFuc2Zvcm1lcih2LCBrKTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgXG4gICAgPyBwYXJzZUZsb2F0KHZhbHVlKSA+IHBhcnNlRmxvYXQocXVlcnkpIFxuICAgIDogdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgID8gdmFsdWUgPiBwYXJzZUZsb2F0KHF1ZXJ5KVxuICAgIDogZGF5anMuaXNEYXlqcyh2YWx1ZSlcbiAgICA/IGRheWpzKHF1ZXJ5KS5pc0JlZm9yZSh2YWx1ZSlcbiAgICA6IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsdCh2YWx1ZTogYW55LCBxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIGNvbnN0IHZhbHVlID0gZGF5anMuaXNEYXlqcyh2KSA/IHYgOiB0aGlzLnRyYW5zZm9ybWVyKHYsIGspO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyBcbiAgICA/IHBhcnNlRmxvYXQodmFsdWUpIDwgcGFyc2VGbG9hdChxdWVyeSkgXG4gICAgOiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInXG4gICAgPyB2YWx1ZSA8IHBhcnNlRmxvYXQocXVlcnkpXG4gICAgOiBkYXlqcy5pc0RheWpzKHZhbHVlKVxuICAgID8gZGF5anMocXVlcnkpLmlzQWZ0ZXIodmFsdWUpXG4gICAgOiBmYWxzZTtcbn1cbiJdfQ==
@@ -1,23 +1,41 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Clipboard } from '@angular/cdk/clipboard';
2
+ import { HttpErrorResponse } from '@angular/common/http';
3
+ import { inject, Injectable } from '@angular/core';
2
4
  import { MatSnackBar } from '@angular/material/snack-bar';
3
5
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/snack-bar";
5
6
  export class SnackBarService {
6
- constructor(snackBar) {
7
- this.snackBar = snackBar;
7
+ constructor() {
8
+ this.clipboard = inject(Clipboard);
9
+ this.snackBar = inject(MatSnackBar);
8
10
  }
9
11
  open(message, action) {
10
- this.snackBar.open(message, action, {
12
+ return this.snackBar.open(message, action, {
11
13
  duration: 2000,
12
14
  });
13
15
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ openError(error) {
17
+ const message = errorMessageResolver(error);
18
+ const copyJson = typeof error === 'object' ? JSON.stringify(error, null, 2) : error;
19
+ this.snackBar.open(message, 'コピー', {
20
+ duration: 2000,
21
+ }).onAction().subscribe(() => {
22
+ this.clipboard.copy(copyJson);
23
+ });
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
26
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, providedIn: 'root' }); }
16
27
  }
17
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SnackBarService, decorators: [{
18
29
  type: Injectable,
19
- args: [{
20
- providedIn: 'root'
21
- }]
22
- }], ctorParameters: () => [{ type: i1.MatSnackBar }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBTTFELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQW9CLFFBQXFCO1FBQXJCLGFBQVEsR0FBUixRQUFRLENBQWE7SUFBRyxDQUFDO0lBRTdDLElBQUksQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FSVSxlQUFlO2tIQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTbmFja0JhclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7fVxuXG4gIG9wZW4obWVzc2FnZTogc3RyaW5nLCBhY3Rpb24/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uLCB7XG4gICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICB9KTtcbiAgfVxufVxuIl19
30
+ args: [{ providedIn: 'root' }]
31
+ }] });
32
+ function errorMessageResolver(error) {
33
+ if (error instanceof HttpErrorResponse) {
34
+ return `エラー(${error.statusText} ${error.status}): ${error.error.message}`;
35
+ }
36
+ else if (error instanceof Error) {
37
+ return error.message;
38
+ }
39
+ return error;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUcxRCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVxQixjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FrQm5EO0lBaEJDLElBQUksQ0FBQyxPQUFlLEVBQUUsTUFBZTtRQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7WUFDekMsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXFCO1FBQzdCLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtZQUNqQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FuQlUsZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXVCbEMsU0FBUyxvQkFBb0IsQ0FBQyxLQUFVO0lBQ3RDLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsT0FBTyxPQUFPLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLE1BQU0sTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVFLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDdkIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTbmFja0JhclNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG5cbiAgb3BlbihtZXNzYWdlOiBzdHJpbmcsIGFjdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uLCB7XG4gICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5FcnJvcihlcnJvcjogRXJyb3IgfCBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3JNZXNzYWdlUmVzb2x2ZXIoZXJyb3IpO1xuICAgIGNvbnN0IGNvcHlKc29uID0gdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCAyKSA6IGVycm9yO1xuXG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsICfjgrPjg5Tjg7wnLCB7XG4gICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICB9KS5vbkFjdGlvbigpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KGNvcHlKc29uKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlcnJvck1lc3NhZ2VSZXNvbHZlcihlcnJvcjogYW55KTogc3RyaW5nIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gYOOCqOODqeODvCgke2Vycm9yLnN0YXR1c1RleHR9ICR7ZXJyb3Iuc3RhdHVzfSk6ICR7ZXJyb3IuZXJyb3IubWVzc2FnZX1gO1xuICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgfVxuICByZXR1cm4gZXJyb3I7XG59XG4iXX0=
@@ -0,0 +1,124 @@
1
+ import { computed, Directive, effect, ElementRef, inject, input, signal } from "@angular/core";
2
+ import { SpreadSheetService } from "../spreadsheet.service";
3
+ import * as i0 from "@angular/core";
4
+ export class SpreadSheetCell {
5
+ constructor() {
6
+ this.ss = inject(SpreadSheetService);
7
+ this.el = inject(ElementRef);
8
+ this.position = input({ row: 0, col: 0 }, { alias: 'ssCell' });
9
+ this.editable = input(false, { alias: 'ssCellEditable' });
10
+ this.context = input(null, { alias: 'ssCellContext' });
11
+ this.isSelected = computed(() => this.ss.selection.isSelected(this.position()));
12
+ this.isEditing = computed(() => this.ss.editor.isEditing(this.position()));
13
+ this.frameEl = signal(null);
14
+ effect(() => {
15
+ if (!this.context())
16
+ return;
17
+ this.ss.grid.setContext(this.context());
18
+ });
19
+ effect(() => {
20
+ const isCursor = this.ss.selection.isCursorPosition(this.position());
21
+ let frame = this.frameEl();
22
+ if (isCursor) {
23
+ if (!frame) {
24
+ frame = this.buildOutlineFrame();
25
+ this.el.nativeElement.appendChild(frame);
26
+ this.frameEl.set(frame);
27
+ }
28
+ }
29
+ else {
30
+ frame?.remove();
31
+ this.frameEl.set(null);
32
+ }
33
+ }, { allowSignalWrites: true });
34
+ }
35
+ onDbClick() {
36
+ if (!this.editable())
37
+ return;
38
+ this.ss.editor.startEditing(this.position());
39
+ }
40
+ ngAfterViewInit() {
41
+ this.ss.selection.setCell(this.position(), this.el.nativeElement);
42
+ if (this.isSelected() && !this.isEditing()) {
43
+ this.ss.selection.focus(this.position());
44
+ }
45
+ }
46
+ buildOutlineFrame() {
47
+ const frame = document.createElement('div');
48
+ frame.classList.add('selection-frame');
49
+ frame.style.position = 'absolute';
50
+ frame.style.top = '0';
51
+ frame.style.left = '0';
52
+ frame.style.width = '100%';
53
+ frame.style.height = '100%';
54
+ frame.style.border = '2px solid #2196f3';
55
+ frame.style.borderRadius = '4px';
56
+ frame.style.pointerEvents = 'none';
57
+ frame.style.boxSizing = 'border-box';
58
+ return frame;
59
+ }
60
+ createLabelElement(options) {
61
+ const el = document.createElement('span');
62
+ el.textContent = options.label;
63
+ el.style.backgroundColor = `${options.color}`;
64
+ el.style.color = '#fff';
65
+ el.style.padding = '2px 4px';
66
+ el.style.position = 'absolute';
67
+ el.style.fontSize = '10px';
68
+ el.style.top = '0';
69
+ el.style.left = '0';
70
+ el.style.zIndex = '9999';
71
+ el.style.lineHeight = '1.5em';
72
+ el.style.whiteSpace = 'nowrap';
73
+ this.el.nativeElement.appendChild(el);
74
+ }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: SpreadSheetCell, isStandalone: true, selector: "[ssCell]", inputs: { position: { classPropertyName: "position", publicName: "ssCell", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "ssCellEditable", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "ssCellContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "ss.selection.handleMouseDown(position(), $event)", "mouseup": "ss.selection.handleMouseUp()", "mouseenter": "ss.selection.handleMouseEnter(position())", "click": "ss.selection.handleClick(position(), $event)", "dblclick": "onDbClick()" }, properties: { "class.selected": "ss.selection.isSelected(position())", "class.editing": "ss.editor.isEditing(position())" } }, ngImport: i0 }); }
77
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCell, decorators: [{
79
+ type: Directive,
80
+ args: [{
81
+ standalone: true,
82
+ selector: '[ssCell]',
83
+ host: {
84
+ '[class.selected]': 'ss.selection.isSelected(position())',
85
+ '[class.editing]': 'ss.editor.isEditing(position())',
86
+ '(mousedown)': 'ss.selection.handleMouseDown(position(), $event)',
87
+ '(mouseup)': 'ss.selection.handleMouseUp()',
88
+ '(mouseenter)': 'ss.selection.handleMouseEnter(position())',
89
+ '(click)': 'ss.selection.handleClick(position(), $event)',
90
+ '(dblclick)': 'onDbClick()',
91
+ }
92
+ }]
93
+ }], ctorParameters: () => [] });
94
+ export class SpreadSheetCellInput {
95
+ constructor() {
96
+ this.ss = inject(SpreadSheetService);
97
+ this.position = input({ row: 0, col: 0 }, { alias: 'ssCellInput' });
98
+ this.el = inject(ElementRef);
99
+ this.isSelected = computed(() => this.ss.selection.isSelected(this.position()));
100
+ this.isEditing = computed(() => this.ss.editor.isEditing(this.position()));
101
+ }
102
+ ngAfterViewInit() {
103
+ this.ss.editor.setInput(this.el.nativeElement, this.position());
104
+ if (this.isSelected() && this.isEditing()) {
105
+ this.ss.editor.focus(this.position());
106
+ }
107
+ }
108
+ stopEditing() {
109
+ this.ss.editor.stopEditing();
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCellInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
112
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.2", type: SpreadSheetCellInput, isStandalone: true, selector: "[ssCellInput]", inputs: { position: { classPropertyName: "position", publicName: "ssCellInput", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "blur": "stopEditing()" } }, ngImport: i0 }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetCellInput, decorators: [{
115
+ type: Directive,
116
+ args: [{
117
+ standalone: true,
118
+ selector: '[ssCellInput]',
119
+ host: {
120
+ '(blur)': 'stopEditing()',
121
+ }
122
+ }]
123
+ }] });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvZGlyZWN0aXZlcy9ncmlkLWNlbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBZ0I1RCxNQUFNLE9BQU8sZUFBZTtJQVcxQjtRQVZVLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqQyxPQUFFLEdBQUcsTUFBTSxDQUFtQyxVQUFVLENBQUMsQ0FBQztRQUUxRCxhQUFRLEdBQUcsS0FBSyxDQUE2QixFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7UUFDbEYsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLEVBQUUsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDO1FBQzVELFlBQU8sR0FBRyxLQUFLLENBQWMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7UUFDN0QsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENB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QUM7SUFDL0IsQ0FBQzs4R0FoQlUsb0JBQW9CO2tHQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBUGhDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUU7d0JBQ0osUUFBUSxFQUFFLGVBQWU7cUJBQzFCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ByZWFkU2hlZXRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NwcmVhZHNoZWV0LnNlcnZpY2VcIjtcbmltcG9ydCB7IENlbGxDb250ZXh0IH0gZnJvbSBcIi4uL21vZGVscy9jZWxsLm1vZGVsXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tzc0NlbGxdJyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muc2VsZWN0ZWRdJzogJ3NzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHBvc2l0aW9uKCkpJyxcbiAgICAnW2NsYXNzLmVkaXRpbmddJzogJ3NzLmVkaXRvci5pc0VkaXRpbmcocG9zaXRpb24oKSknLFxuICAgICcobW91c2Vkb3duKSc6ICdzcy5zZWxlY3Rpb24uaGFuZGxlTW91c2VEb3duKHBvc2l0aW9uKCksICRldmVudCknLFxuICAgICcobW91c2V1cCknOiAnc3Muc2VsZWN0aW9uLmhhbmRsZU1vdXNlVXAoKScsXG4gICAgJyhtb3VzZWVudGVyKSc6ICdzcy5zZWxlY3Rpb24uaGFuZGxlTW91c2VFbnRlcihwb3NpdGlvbigpKScsXG4gICAgJyhjbGljayknOiAnc3Muc2VsZWN0aW9uLmhhbmRsZUNsaWNrKHBvc2l0aW9uKCksICRldmVudCknLFxuICAgICcoZGJsY2xpY2spJzogJ29uRGJDbGljaygpJyxcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBTcHJlYWRTaGVldENlbGwge1xuICBwcm90ZWN0ZWQgc3MgPSBpbmplY3QoU3ByZWFkU2hlZXRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8e3JvdzogbnVtYmVyLCBjb2w6IG51bWJlcn0+KHtyb3c6IDAsIGNvbDogMH0sIHthbGlhczogJ3NzQ2VsbCd9KTtcbiAgcmVhZG9ubHkgZWRpdGFibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSwge2FsaWFzOiAnc3NDZWxsRWRpdGFibGUnfSk7XG4gIHJlYWRvbmx5IGNvbnRleHQgPSBpbnB1dDxDZWxsQ29udGV4dD4obnVsbCwge2FsaWFzOiAnc3NDZWxsQ29udGV4dCd9KTtcbiAgcmVhZG9ubHkgaXNTZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3Muc2VsZWN0aW9uLmlzU2VsZWN0ZWQodGhpcy5wb3NpdGlvbigpKSk7XG4gIHJlYWRvbmx5IGlzRWRpdGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3MuZWRpdG9yLmlzRWRpdGluZyh0aGlzLnBvc2l0aW9uKCkpKTtcbiAgcmVhZG9ubHkgZnJhbWVFbCA9IHNpZ25hbDxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGV4dCgpKSByZXR1cm47XG4gICAgICB0aGlzLnNzLmdyaWQuc2V0Q29udGV4dCh0aGlzLmNvbnRleHQoKSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNDdXJzb3IgPSB0aGlzLnNzLnNlbGVjdGlvbi5pc0N1cnNvclBvc2l0aW9uKHRoaXMucG9zaXRpb24oKSk7XG4gICAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lRWwoKTtcblxuICAgICAgaWYgKGlzQ3Vyc29yKSB7XG4gICAgICAgIGlmICghZnJhbWUpIHtcbiAgICAgICAgICBmcmFtZSA9IHRoaXMuYnVpbGRPdXRsaW5lRnJhbWUoKTtcbiAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhbWUpO1xuICAgICAgICAgIHRoaXMuZnJhbWVFbC5zZXQoZnJhbWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcmFtZT8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuZnJhbWVFbC5zZXQobnVsbCk7XG4gICAgICB9XG4gICAgfSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gIH1cblxuICBvbkRiQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKCkpIHJldHVybjtcbiAgICB0aGlzLnNzLmVkaXRvci5zdGFydEVkaXRpbmcodGhpcy5wb3NpdGlvbigpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNzLnNlbGVjdGlvbi5zZXRDZWxsKHRoaXMucG9zaXRpb24oKSwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKCkgJiYgIXRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3Muc2VsZWN0aW9uLmZvY3VzKHRoaXMucG9zaXRpb24oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkT3V0bGluZUZyYW1lKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICBjb25zdCBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGZyYW1lLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGlvbi1mcmFtZScpO1xuICAgIGZyYW1lLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBmcmFtZS5zdHlsZS50b3AgPSAnMCc7XG4gICAgZnJhbWUuc3R5bGUubGVmdCA9ICcwJztcbiAgICBmcmFtZS5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgZnJhbWUuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjMjE5NmYzJztcbiAgICBmcmFtZS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICBmcmFtZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgIGZyYW1lLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTGFiZWxFbGVtZW50KG9wdGlvbnM6IHtcbiAgICBsYWJlbDogc3RyaW5nXG4gICAgY29sb3I6IHN0cmluZ1xuICB9KSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWwudGV4dENvbnRlbnQgPSBvcHRpb25zLmxhYmVsO1xuICAgIGVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGAke29wdGlvbnMuY29sb3J9YDtcbiAgICBlbC5zdHlsZS5jb2xvciA9ICcjZmZmJztcbiAgICBlbC5zdHlsZS5wYWRkaW5nID0gJzJweCA0cHgnO1xuICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBlbC5zdHlsZS5mb250U2l6ZSA9ICcxMHB4JztcbiAgICBlbC5zdHlsZS50b3AgPSAnMCc7XG4gICAgZWwuc3R5bGUubGVmdCA9ICcwJztcbiAgICBlbC5zdHlsZS56SW5kZXggPSAnOTk5OSc7XG4gICAgZWwuc3R5bGUubGluZUhlaWdodCA9ICcxLjVlbSc7XG4gICAgZWwuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlbCk7XG4gIH1cbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbc3NDZWxsSW5wdXRdJyxcbiAgaG9zdDoge1xuICAgICcoYmx1ciknOiAnc3RvcEVkaXRpbmcoKScsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXRDZWxsSW5wdXQge1xuICBwcm90ZWN0ZWQgc3MgPSBpbmplY3QoU3ByZWFkU2hlZXRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgcG9zaXRpb24gPSBpbnB1dDx7cm93OiBudW1iZXIsIGNvbDogbnVtYmVyfT4oe3JvdzogMCwgY29sOiAwfSwge2FsaWFzOiAnc3NDZWxsSW5wdXQnfSk7XG4gIHJlYWRvbmx5IGVsID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSBpc1NlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zcy5zZWxlY3Rpb24uaXNTZWxlY3RlZCh0aGlzLnBvc2l0aW9uKCkpKTtcbiAgcmVhZG9ubHkgaXNFZGl0aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zcy5lZGl0b3IuaXNFZGl0aW5nKHRoaXMucG9zaXRpb24oKSkpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNzLmVkaXRvci5zZXRJbnB1dCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMucG9zaXRpb24oKSk7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCgpICYmIHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3MuZWRpdG9yLmZvY3VzKHRoaXMucG9zaXRpb24oKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3BFZGl0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuc3MuZWRpdG9yLnN0b3BFZGl0aW5nKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './grid-cell.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ3JpZC1jZWxsLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { GridService } from './grid.service';
3
+ import { SelectionService } from './selection.service';
4
+ import { Clipboard } from '@angular/cdk/clipboard';
5
+ import papaparse from 'papaparse';
6
+ import { SnackBarService } from '@ng-atomic/common/services/snack-bar';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./grid.service";
9
+ import * as i2 from "./selection.service";
10
+ export class ClipboardService {
11
+ constructor(gridService, selectionService) {
12
+ this.gridService = gridService;
13
+ this.selectionService = selectionService;
14
+ this.clipboard = inject(Clipboard);
15
+ this.snackBar = inject(SnackBarService);
16
+ }
17
+ async copy() {
18
+ const selection = this.selectionService.getSelection();
19
+ if (!selection)
20
+ return;
21
+ const { start, end } = selection;
22
+ if (!end) {
23
+ this.copyText(this.gridService.data()[start.row][start.col].dataValue);
24
+ return;
25
+ }
26
+ const minRow = Math.min(start.row, end.row);
27
+ const maxRow = Math.max(start.row, end.row);
28
+ const minCol = Math.min(start.col, end.col);
29
+ const maxCol = Math.max(start.col, end.col);
30
+ const data = this.gridService.data();
31
+ const clipboardData = [];
32
+ for (let i = minRow; i <= maxRow; i++) {
33
+ const row = [];
34
+ for (let j = minCol; j <= maxCol; j++) {
35
+ row.push(data[i][j].dataValue);
36
+ }
37
+ clipboardData.push(row);
38
+ }
39
+ const tsv = papaparse.unparse(clipboardData, { delimiter: '\t', newline: '\n', header: false });
40
+ this.clipboard.copy(tsv);
41
+ }
42
+ copyText(text) {
43
+ this.clipboard.copy(text);
44
+ this.snackBar.open('クリップボードにコピーしました。');
45
+ }
46
+ async paste(targetRow, targetCol) {
47
+ try {
48
+ const clipboardText = await navigator.clipboard.readText();
49
+ const rows = clipboardText.split('\n');
50
+ const data = this.gridService.data();
51
+ const rowCount = Math.min(rows.length, data.length - targetRow);
52
+ for (let i = 0; i < rowCount; i++) {
53
+ const cells = rows[i].split('\t');
54
+ const colCount = Math.min(cells.length, this.gridService.columns().length - targetCol);
55
+ for (let j = 0; j < colCount; j++) {
56
+ this.gridService.updateCell(targetRow + i, targetCol + j, cells[j]);
57
+ }
58
+ }
59
+ console.log('Data pasted from clipboard as TSV');
60
+ }
61
+ catch (err) {
62
+ console.error('Failed to read data from clipboard', err);
63
+ }
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ClipboardService, deps: [{ token: i1.GridService }, { token: i2.SelectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ClipboardService }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ClipboardService, decorators: [{
69
+ type: Injectable
70
+ }], ctorParameters: () => [{ type: i1.GridService }, { type: i2.SelectionService }] });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3NwcmVhZHNoZWV0L2ZlYXR1cmVzL2NsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQUd2RSxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLFlBQ1UsV0FBd0IsRUFDeEIsZ0JBQWtDO1FBRGxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFMcEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBS3ZDLENBQUM7SUFFTCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFdkIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFFakMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkUsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQWUsRUFBRSxDQUFDO1FBRXJDLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7WUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQ3pDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFUyxRQUFRLENBQUMsSUFBWTtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDOUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxhQUFhLEdBQUcsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztZQUVoRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFFdkYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQzs4R0FwRVUsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQgcGFwYXBhcnNlIGZyb20gJ3BhcGFwYXJzZSc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9zbmFjay1iYXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XG4gIHByaXZhdGUgY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XG4gIHByaXZhdGUgc25hY2tCYXIgPSBpbmplY3QoU25hY2tCYXJTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvblNlcnZpY2U6IFNlbGVjdGlvblNlcnZpY2UsXG4gICkgeyB9XG5cbiAgYXN5bmMgY29weSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWxlY3Rpb24pIHJldHVybjtcblxuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gc2VsZWN0aW9uO1xuXG4gICAgaWYgKCFlbmQpIHtcbiAgICAgIHRoaXMuY29weVRleHQodGhpcy5ncmlkU2VydmljZS5kYXRhKClbc3RhcnQucm93XVtzdGFydC5jb2xdLmRhdGFWYWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnQucm93LCBlbmQucm93KTtcbiAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChzdGFydC5yb3csIGVuZC5yb3cpO1xuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0LmNvbCwgZW5kLmNvbCk7XG4gICAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnQuY29sLCBlbmQuY29sKTtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdyaWRTZXJ2aWNlLmRhdGEoKTtcbiAgICBjb25zdCBjbGlwYm9hcmREYXRhOiBzdHJpbmdbXVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gbWluUm93OyBpIDw9IG1heFJvdzsgaSsrKSB7XG4gICAgICBjb25zdCByb3c6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBqID0gbWluQ29sOyBqIDw9IG1heENvbDsgaisrKSB7XG4gICAgICAgIHJvdy5wdXNoKGRhdGFbaV1bal0uZGF0YVZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNsaXBib2FyZERhdGEucHVzaChyb3cpO1xuICAgIH1cblxuICAgIGNvbnN0IHRzdiA9IHBhcGFwYXJzZS51bnBhcnNlKGNsaXBib2FyZERhdGEsIFxuICAgICAgeyBkZWxpbWl0ZXI6ICdcXHQnLCBuZXdsaW5lOiAnXFxuJywgaGVhZGVyOiBmYWxzZSB9XG4gICAgKTtcbiAgICB0aGlzLmNsaXBib2FyZC5jb3B5KHRzdik7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29weVRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5jbGlwYm9hcmQuY29weSh0ZXh0KTtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ+OCr+ODquODg+ODl+ODnOODvOODieOBq+OCs+ODlOODvOOBl+OBvuOBl+OBn+OAgicpO1xuICB9XG5cbiAgYXN5bmMgcGFzdGUodGFyZ2V0Um93OiBudW1iZXIsIHRhcmdldENvbDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNsaXBib2FyZFRleHQgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCk7XG4gICAgICBjb25zdCByb3dzID0gY2xpcGJvYXJkVGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5ncmlkU2VydmljZS5kYXRhKCk7XG5cbiAgICAgIGNvbnN0IHJvd0NvdW50ID0gTWF0aC5taW4ocm93cy5sZW5ndGgsIGRhdGEubGVuZ3RoIC0gdGFyZ2V0Um93KTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gcm93c1tpXS5zcGxpdCgnXFx0Jyk7XG4gICAgICAgIGNvbnN0IGNvbENvdW50ID0gTWF0aC5taW4oY2VsbHMubGVuZ3RoLCB0aGlzLmdyaWRTZXJ2aWNlLmNvbHVtbnMoKS5sZW5ndGggLSB0YXJnZXRDb2wpO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sQ291bnQ7IGorKykge1xuICAgICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UudXBkYXRlQ2VsbCh0YXJnZXRSb3cgKyBpLCB0YXJnZXRDb2wgKyBqLCBjZWxsc1tqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coJ0RhdGEgcGFzdGVkIGZyb20gY2xpcGJvYXJkIGFzIFRTVicpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHJlYWQgZGF0YSBmcm9tIGNsaXBib2FyZCcsIGVycik7XG4gICAgfVxuICB9XG59Il19
@@ -0,0 +1,63 @@
1
+ import { inject, Injectable } from "@angular/core";
2
+ import { LanguageService } from "@ng-atomic/common/services/language";
3
+ import { injectDataAccessor } from "@ng-atomic/common/pipes/data-accessor";
4
+ import { EXPRESSION_TRANSFORMER } from "@ng-atomic/common/utils";
5
+ import * as i0 from "@angular/core";
6
+ export class SpreadSheetDataService {
7
+ constructor() {
8
+ this.cache = new Map();
9
+ this.language = inject(LanguageService);
10
+ this.dataAccessor = injectDataAccessor();
11
+ this.expression = inject(EXPRESSION_TRANSFORMER);
12
+ }
13
+ buildGridData(items, displayedColumns) {
14
+ return [
15
+ this.buildGridHeaderRow(displayedColumns),
16
+ ...items.map((item) => this.buildGridRow(item, displayedColumns))
17
+ ];
18
+ }
19
+ buildGridHeaderRow(columns) {
20
+ const key = this.buildKey({ columns });
21
+ const cached = this.cache.get(key);
22
+ if (cached)
23
+ return cached;
24
+ const row = columns.map((column) => ({
25
+ dataValue: this.language.transform(column),
26
+ expressionValue: this.language.transform(column),
27
+ isHeader: true
28
+ }));
29
+ this.cache.set(key, row);
30
+ return row;
31
+ }
32
+ buildGridRow(item, displayedColumns) {
33
+ const key = this.buildKey({ item, displayedColumns });
34
+ const cached = this.cache.get(key);
35
+ if (cached)
36
+ return cached;
37
+ const row = displayedColumns.map((column) => this.buildGridCell(item, column));
38
+ this.cache.set(key, row);
39
+ return row;
40
+ }
41
+ buildGridCell(item, column) {
42
+ const key = this.buildKey({ item, column });
43
+ const cached = this.cache.get(key);
44
+ if (cached)
45
+ return cached;
46
+ const cell = {
47
+ dataValue: this.dataAccessor(item, column),
48
+ expressionValue: this.expression(this.dataAccessor(item, column), { item, name: column }),
49
+ };
50
+ this.cache.set(key, cell);
51
+ return cell;
52
+ }
53
+ buildKey(obj) {
54
+ // return CryptoJS.MD5(JSON.stringify(obj)).toString(CryptoJS.enc.Base64).slice(0, 10);
55
+ return JSON.stringify(obj);
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
58
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetDataService }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetDataService, decorators: [{
61
+ type: Injectable
62
+ }] });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zcHJlYWRzaGVldC9mZWF0dXJlcy9kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUlqRSxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRVcsVUFBSyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBQ3pDLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsaUJBQVksR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQWdEdEQ7SUE5Q0MsYUFBYSxDQUFDLEtBQVksRUFBRSxnQkFBMEI7UUFDcEQsT0FBTztZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxPQUFpQjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQWdCLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDaEQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBWSxFQUFFLGdCQUEwQjtRQUM3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQWdCLENBQUM7UUFDcEMsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyxhQUFhLENBQUMsSUFBWSxFQUFFLE1BQWM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTTtZQUFFLE9BQU8sTUFBYyxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztZQUMxQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLENBQUM7U0FDeEYsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFUyxRQUFRLENBQUMsR0FBVztRQUM1Qix1RkFBdUY7UUFDdkYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBbERVLHNCQUFzQjtrSEFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENlbGwgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IGluamVjdERhdGFBY2Nlc3NvciB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi9waXBlcy9kYXRhLWFjY2Vzc29yXCI7XG5pbXBvcnQgeyBFWFBSRVNTSU9OX1RSQU5TRk9STUVSIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3V0aWxzXCI7XG5pbXBvcnQgQ3J5cHRvSlMgZnJvbSBcImNyeXB0by1qc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXREYXRhU2VydmljZSB7XG4gIHJlYWRvbmx5IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENlbGwgfCBDZWxsW10+KCk7XG4gIHJlYWRvbmx5IGxhbmd1YWdlID0gaW5qZWN0KExhbmd1YWdlU2VydmljZSk7XG4gIHJlYWRvbmx5IGRhdGFBY2Nlc3NvciA9IGluamVjdERhdGFBY2Nlc3NvcigpO1xuICByZWFkb25seSBleHByZXNzaW9uID0gaW5qZWN0KEVYUFJFU1NJT05fVFJBTlNGT1JNRVIpO1xuXG4gIGJ1aWxkR3JpZERhdGEoaXRlbXM6IGFueVtdLCBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSk6IENlbGxbXVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5idWlsZEdyaWRIZWFkZXJSb3coZGlzcGxheWVkQ29sdW1ucyksXG4gICAgICAuLi5pdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuYnVpbGRHcmlkUm93KGl0ZW0sIGRpc3BsYXllZENvbHVtbnMpKVxuICAgIF07XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRHcmlkSGVhZGVyUm93KGNvbHVtbnM6IHN0cmluZ1tdKTogQ2VsbFtdIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkS2V5KHtjb2x1bW5zfSk7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5jYWNoZS5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkIGFzIENlbGxbXTtcbiAgICBjb25zdCByb3cgPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiAoe1xuICAgICAgZGF0YVZhbHVlOiB0aGlzLmxhbmd1YWdlLnRyYW5zZm9ybShjb2x1bW4pLFxuICAgICAgZXhwcmVzc2lvblZhbHVlOiB0aGlzLmxhbmd1YWdlLnRyYW5zZm9ybShjb2x1bW4pLFxuICAgICAgaXNIZWFkZXI6IHRydWVcbiAgICB9KSk7XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCByb3cpO1xuICAgIHJldHVybiByb3c7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRHcmlkUm93KGl0ZW06IG9iamVjdCwgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10pOiBDZWxsW10ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuYnVpbGRLZXkoe2l0ZW0sIGRpc3BsYXllZENvbHVtbnN9KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQgYXMgQ2VsbFtdO1xuICAgIGNvbnN0IHJvdyA9IGRpc3BsYXllZENvbHVtbnMubWFwKChjb2x1bW4pID0+IHRoaXMuYnVpbGRHcmlkQ2VsbChpdGVtLCBjb2x1bW4pKTtcbiAgICB0aGlzLmNhY2hlLnNldChrZXksIHJvdyk7XG4gICAgcmV0dXJuIHJvdztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEdyaWRDZWxsKGl0ZW06IG9iamVjdCwgY29sdW1uOiBzdHJpbmcpOiBDZWxsIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkS2V5KHtpdGVtLCBjb2x1bW59KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChrZXkpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQgYXMgQ2VsbDtcbiAgICBjb25zdCBjZWxsID0ge1xuICAgICAgZGF0YVZhbHVlOiB0aGlzLmRhdGFBY2Nlc3NvcihpdGVtLCBjb2x1bW4pLFxuICAgICAgZXhwcmVzc2lvblZhbHVlOiB0aGlzLmV4cHJlc3Npb24odGhpcy5kYXRhQWNjZXNzb3IoaXRlbSwgY29sdW1uKSwge2l0ZW0sIG5hbWU6IGNvbHVtbn0pLFxuICAgIH07XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBjZWxsKTtcbiAgICByZXR1cm4gY2VsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEtleShvYmo6IG9iamVjdCk6IHN0cmluZyB7XG4gICAgLy8gcmV0dXJuIENyeXB0b0pTLk1ENShKU09OLnN0cmluZ2lmeShvYmopKS50b1N0cmluZyhDcnlwdG9KUy5lbmMuQmFzZTY0KS5zbGljZSgwLCAxMCk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XG4gIH1cblxufSJdfQ==