@ng-matero/extensions 18.4.1 → 19.0.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 (285) hide show
  1. package/_index.scss +3 -1
  2. package/alert/_alert-theme.scss +19 -8
  3. package/alert/alert.d.ts +1 -2
  4. package/button/button-loading.d.ts +1 -2
  5. package/checkbox-group/checkbox-group.d.ts +12 -4
  6. package/colorpicker/_colorpicker-theme.scss +19 -8
  7. package/colorpicker/colorpicker-input.d.ts +1 -3
  8. package/colorpicker/colorpicker-toggle.d.ts +3 -3
  9. package/colorpicker/colorpicker.d.ts +4 -7
  10. package/column-resize/column-resize-directives/column-resize-flex.d.ts +2 -1
  11. package/column-resize/column-resize-directives/column-resize.d.ts +2 -1
  12. package/column-resize/column-resize-notifier.d.ts +0 -1
  13. package/column-resize/column-resize.d.ts +1 -1
  14. package/column-resize/event-dispatcher.d.ts +0 -9
  15. package/column-resize/overlay-handle.d.ts +1 -1
  16. package/column-resize/resizable.d.ts +1 -1
  17. package/column-resize/resize-strategy.d.ts +4 -4
  18. package/core/datetime/datetime-adapter.d.ts +1 -2
  19. package/core/datetime/native-datetime-adapter.d.ts +3 -3
  20. package/core/style/_button-common.scss +18 -0
  21. package/core/theming/_config-validation.scss +4 -4
  22. package/core/theming/_definition.scss +12 -2
  23. package/core/theming/prebuilt/azure-blue.scss +10 -22
  24. package/core/theming/prebuilt/cyan-orange.scss +10 -22
  25. package/core/theming/prebuilt/magenta-violet.scss +10 -22
  26. package/core/theming/prebuilt/rose-red.scss +10 -22
  27. package/core/tokens/_m3-system.scss +273 -0
  28. package/core/tokens/_m3-tokens.scss +8 -151
  29. package/core/tokens/_token-utils.scss +102 -43
  30. package/core/tokens/m2/_index.scss +2 -0
  31. package/core/tokens/m3/definitions/_index.scss +1 -0
  32. package/core/tokens/m3/definitions/_md-comp-plain-tooltip.scss +51 -0
  33. package/core/tokens/m3/index.scss +2 -0
  34. package/core/tokens/m3/mdc/_plain-tooltip.scss +15 -0
  35. package/core/tokens/m3/mtx/_alert.scss +14 -14
  36. package/core/tokens/m3/mtx/_colorpicker.scss +2 -2
  37. package/core/tokens/m3/mtx/_datetimepicker.scss +2 -2
  38. package/core/tokens/m3/mtx/_drawer.scss +2 -2
  39. package/core/tokens/m3/mtx/_grid.scss +2 -2
  40. package/core/tokens/m3/mtx/_loader.scss +2 -2
  41. package/core/tokens/m3/mtx/_popover.scss +2 -2
  42. package/core/tokens/m3/mtx/_progress.scss +2 -2
  43. package/core/tokens/m3/mtx/_select.scss +2 -2
  44. package/core/tokens/m3/mtx/_split.scss +2 -2
  45. package/datetimepicker/_datetimepicker-theme.scss +23 -10
  46. package/datetimepicker/calendar-body.d.ts +26 -4
  47. package/datetimepicker/calendar-body.scss +58 -9
  48. package/datetimepicker/calendar.d.ts +31 -31
  49. package/datetimepicker/clock.d.ts +11 -5
  50. package/datetimepicker/datetimepicker-actions.d.ts +9 -5
  51. package/datetimepicker/datetimepicker-content.scss +15 -0
  52. package/datetimepicker/datetimepicker-input.d.ts +4 -5
  53. package/datetimepicker/datetimepicker-module.d.ts +2 -2
  54. package/datetimepicker/datetimepicker-toggle.d.ts +4 -3
  55. package/datetimepicker/datetimepicker.d.ts +12 -8
  56. package/datetimepicker/month-view.d.ts +22 -7
  57. package/datetimepicker/multi-year-view.d.ts +20 -20
  58. package/datetimepicker/public-api.d.ts +2 -2
  59. package/datetimepicker/{time.d.ts → time-view.d.ts} +21 -9
  60. package/datetimepicker/{time.scss → time-view.scss} +1 -1
  61. package/datetimepicker/year-view.d.ts +21 -11
  62. package/dialog/dialog-container.d.ts +1 -2
  63. package/dialog/dialog.d.ts +0 -1
  64. package/drawer/_drawer-theme.scss +19 -8
  65. package/drawer/drawer-container.d.ts +2 -5
  66. package/drawer/drawer.d.ts +3 -5
  67. package/fesm2022/mtxAlert.mjs +15 -15
  68. package/fesm2022/mtxAlert.mjs.map +1 -1
  69. package/fesm2022/mtxButton.mjs +13 -14
  70. package/fesm2022/mtxButton.mjs.map +1 -1
  71. package/fesm2022/mtxCheckboxGroup.mjs +51 -31
  72. package/fesm2022/mtxCheckboxGroup.mjs.map +1 -1
  73. package/fesm2022/mtxColorpicker.mjs +91 -109
  74. package/fesm2022/mtxColorpicker.mjs.map +1 -1
  75. package/fesm2022/mtxColumnResize.mjs +79 -96
  76. package/fesm2022/mtxColumnResize.mjs.map +1 -1
  77. package/fesm2022/mtxCore.mjs +31 -36
  78. package/fesm2022/mtxCore.mjs.map +1 -1
  79. package/fesm2022/mtxDatetimepicker.mjs +1179 -1092
  80. package/fesm2022/mtxDatetimepicker.mjs.map +1 -1
  81. package/fesm2022/mtxDialog.mjs +30 -41
  82. package/fesm2022/mtxDialog.mjs.map +1 -1
  83. package/fesm2022/mtxDrawer.mjs +36 -52
  84. package/fesm2022/mtxDrawer.mjs.map +1 -1
  85. package/fesm2022/mtxGrid.mjs +168 -204
  86. package/fesm2022/mtxGrid.mjs.map +1 -1
  87. package/fesm2022/mtxLoader.mjs +12 -12
  88. package/fesm2022/mtxLoader.mjs.map +1 -1
  89. package/fesm2022/mtxPhotoviewer.mjs +11 -12
  90. package/fesm2022/mtxPhotoviewer.mjs.map +1 -1
  91. package/fesm2022/mtxPopover.mjs +106 -119
  92. package/fesm2022/mtxPopover.mjs.map +1 -1
  93. package/fesm2022/mtxProgress.mjs +8 -8
  94. package/fesm2022/mtxProgress.mjs.map +1 -1
  95. package/fesm2022/mtxSelect.mjs +157 -169
  96. package/fesm2022/mtxSelect.mjs.map +1 -1
  97. package/fesm2022/mtxSplit.mjs +39 -40
  98. package/fesm2022/mtxSplit.mjs.map +1 -1
  99. package/fesm2022/mtxTooltip.mjs +105 -91
  100. package/fesm2022/mtxTooltip.mjs.map +1 -1
  101. package/grid/_grid-theme.scss +23 -10
  102. package/grid/cell.d.ts +1 -4
  103. package/grid/column-resize/column-resize-directives/column-resize-flex.d.ts +0 -1
  104. package/grid/column-resize/column-resize-directives/column-resize.d.ts +0 -1
  105. package/grid/column-resize/overlay-handle.d.ts +1 -2
  106. package/grid/column-resize/resizable-directives/resizable.d.ts +2 -3
  107. package/grid/column-resize/resize-strategy.d.ts +2 -4
  108. package/grid/grid-pipes.d.ts +0 -2
  109. package/grid/grid.d.ts +5 -5
  110. package/loader/_loader-theme.scss +19 -8
  111. package/loader/loader.d.ts +0 -2
  112. package/package.json +11 -47
  113. package/photoviewer/photoviewer.d.ts +1 -2
  114. package/popover/_popover-theme.scss +19 -8
  115. package/popover/popover-content.d.ts +1 -1
  116. package/popover/popover-target.d.ts +1 -2
  117. package/popover/popover-trigger.d.ts +5 -6
  118. package/popover/popover.d.ts +1 -2
  119. package/prebuilt-themes/azure-blue.css +1 -1
  120. package/prebuilt-themes/cyan-orange.css +1 -1
  121. package/prebuilt-themes/deeppurple-amber.css +1 -1
  122. package/prebuilt-themes/indigo-pink.css +1 -1
  123. package/prebuilt-themes/magenta-violet.css +1 -1
  124. package/prebuilt-themes/pink-bluegrey.css +1 -1
  125. package/prebuilt-themes/purple-green.css +1 -1
  126. package/prebuilt-themes/rose-red.css +1 -1
  127. package/progress/_progress-theme.scss +23 -10
  128. package/select/_select-theme.scss +23 -10
  129. package/select/option.d.ts +0 -1
  130. package/select/select-intl.d.ts +2 -4
  131. package/select/select.d.ts +8 -7
  132. package/select/select.scss +3 -3
  133. package/select/templates.d.ts +0 -12
  134. package/split/_split-theme.scss +19 -8
  135. package/split/split-pane.d.ts +3 -4
  136. package/split/split.d.ts +4 -4
  137. package/split/split.scss +1 -1
  138. package/tooltip/_tooltip-theme.scss +11 -4
  139. package/tooltip/tooltip.d.ts +17 -9
  140. package/tooltip/tooltip.scss +8 -3
  141. package/esm2022/alert/alert-module.mjs +0 -17
  142. package/esm2022/alert/alert.mjs +0 -46
  143. package/esm2022/alert/mtxAlert.mjs +0 -5
  144. package/esm2022/alert/public-api.mjs +0 -3
  145. package/esm2022/button/button-loading.mjs +0 -66
  146. package/esm2022/button/button-module.mjs +0 -19
  147. package/esm2022/button/mtxButton.mjs +0 -5
  148. package/esm2022/button/public-api.mjs +0 -3
  149. package/esm2022/checkbox-group/checkbox-group-module.mjs +0 -20
  150. package/esm2022/checkbox-group/checkbox-group.mjs +0 -222
  151. package/esm2022/checkbox-group/interfaces.mjs +0 -2
  152. package/esm2022/checkbox-group/mtxCheckboxGroup.mjs +0 -5
  153. package/esm2022/checkbox-group/public-api.mjs +0 -4
  154. package/esm2022/colorpicker/colorpicker-animations.mjs +0 -16
  155. package/esm2022/colorpicker/colorpicker-input.mjs +0 -228
  156. package/esm2022/colorpicker/colorpicker-module.mjs +0 -64
  157. package/esm2022/colorpicker/colorpicker-toggle.mjs +0 -102
  158. package/esm2022/colorpicker/colorpicker.mjs +0 -363
  159. package/esm2022/colorpicker/mtxColorpicker.mjs +0 -5
  160. package/esm2022/colorpicker/public-api.mjs +0 -6
  161. package/esm2022/column-resize/column-resize-directives/column-resize-flex.mjs +0 -40
  162. package/esm2022/column-resize/column-resize-directives/column-resize.mjs +0 -40
  163. package/esm2022/column-resize/column-resize-directives/constants.mjs +0 -21
  164. package/esm2022/column-resize/column-resize-module.mjs +0 -28
  165. package/esm2022/column-resize/column-resize-notifier.mjs +0 -52
  166. package/esm2022/column-resize/column-resize.mjs +0 -82
  167. package/esm2022/column-resize/column-size-store.mjs +0 -20
  168. package/esm2022/column-resize/event-dispatcher.mjs +0 -70
  169. package/esm2022/column-resize/mtxColumnResize.mjs +0 -5
  170. package/esm2022/column-resize/overlay-handle.mjs +0 -146
  171. package/esm2022/column-resize/polyfill.mjs +0 -19
  172. package/esm2022/column-resize/public-api.mjs +0 -13
  173. package/esm2022/column-resize/resizable.mjs +0 -199
  174. package/esm2022/column-resize/resize-ref.mjs +0 -17
  175. package/esm2022/column-resize/resize-strategy.mjs +0 -238
  176. package/esm2022/column-resize/selectors.mjs +0 -13
  177. package/esm2022/core/datetime/datetime-adapter.mjs +0 -132
  178. package/esm2022/core/datetime/datetime-formats.mjs +0 -3
  179. package/esm2022/core/datetime/datetime.module.mjs +0 -38
  180. package/esm2022/core/datetime/index.mjs +0 -6
  181. package/esm2022/core/datetime/native-datetime-adapter.mjs +0 -138
  182. package/esm2022/core/datetime/native-datetime-formats.mjs +0 -20
  183. package/esm2022/core/mtxCore.mjs +0 -5
  184. package/esm2022/core/pipes/index.mjs +0 -4
  185. package/esm2022/core/pipes/is-template-ref.pipe.mjs +0 -14
  186. package/esm2022/core/pipes/pipes.module.mjs +0 -18
  187. package/esm2022/core/pipes/to-observable.pipe.mjs +0 -15
  188. package/esm2022/core/public-api.mjs +0 -3
  189. package/esm2022/datetimepicker/calendar-body.mjs +0 -77
  190. package/esm2022/datetimepicker/calendar.mjs +0 -661
  191. package/esm2022/datetimepicker/clock.mjs +0 -362
  192. package/esm2022/datetimepicker/datetimepicker-actions.mjs +0 -88
  193. package/esm2022/datetimepicker/datetimepicker-animations.mjs +0 -44
  194. package/esm2022/datetimepicker/datetimepicker-errors.mjs +0 -8
  195. package/esm2022/datetimepicker/datetimepicker-filtertype.mjs +0 -7
  196. package/esm2022/datetimepicker/datetimepicker-input.mjs +0 -349
  197. package/esm2022/datetimepicker/datetimepicker-intl.mjs +0 -63
  198. package/esm2022/datetimepicker/datetimepicker-module.mjs +0 -116
  199. package/esm2022/datetimepicker/datetimepicker-toggle.mjs +0 -105
  200. package/esm2022/datetimepicker/datetimepicker-types.mjs +0 -2
  201. package/esm2022/datetimepicker/datetimepicker.mjs +0 -580
  202. package/esm2022/datetimepicker/month-view.mjs +0 -148
  203. package/esm2022/datetimepicker/mtxDatetimepicker.mjs +0 -5
  204. package/esm2022/datetimepicker/multi-year-view.mjs +0 -215
  205. package/esm2022/datetimepicker/public-api.mjs +0 -17
  206. package/esm2022/datetimepicker/time.mjs +0 -470
  207. package/esm2022/datetimepicker/year-view.mjs +0 -139
  208. package/esm2022/dialog/dialog-config.mjs +0 -2
  209. package/esm2022/dialog/dialog-container.mjs +0 -43
  210. package/esm2022/dialog/dialog-module.mjs +0 -40
  211. package/esm2022/dialog/dialog.mjs +0 -75
  212. package/esm2022/dialog/mtxDialog.mjs +0 -5
  213. package/esm2022/dialog/public-api.mjs +0 -5
  214. package/esm2022/drawer/drawer-animations.mjs +0 -18
  215. package/esm2022/drawer/drawer-config.mjs +0 -35
  216. package/esm2022/drawer/drawer-container.mjs +0 -88
  217. package/esm2022/drawer/drawer-module.mjs +0 -21
  218. package/esm2022/drawer/drawer-ref.mjs +0 -99
  219. package/esm2022/drawer/drawer.mjs +0 -144
  220. package/esm2022/drawer/mtxDrawer.mjs +0 -5
  221. package/esm2022/drawer/public-api.mjs +0 -7
  222. package/esm2022/grid/cell.mjs +0 -132
  223. package/esm2022/grid/column-menu.mjs +0 -133
  224. package/esm2022/grid/column-resize/column-resize-directives/column-resize-flex.mjs +0 -38
  225. package/esm2022/grid/column-resize/column-resize-directives/column-resize.mjs +0 -38
  226. package/esm2022/grid/column-resize/column-resize-directives/common.mjs +0 -27
  227. package/esm2022/grid/column-resize/column-resize-module.mjs +0 -42
  228. package/esm2022/grid/column-resize/index.mjs +0 -8
  229. package/esm2022/grid/column-resize/overlay-handle.mjs +0 -66
  230. package/esm2022/grid/column-resize/resizable-directives/common.mjs +0 -29
  231. package/esm2022/grid/column-resize/resizable-directives/resizable.mjs +0 -64
  232. package/esm2022/grid/column-resize/resize-strategy.mjs +0 -47
  233. package/esm2022/grid/expansion-toggle.mjs +0 -65
  234. package/esm2022/grid/grid-module.mjs +0 -151
  235. package/esm2022/grid/grid-pipes.mjs +0 -129
  236. package/esm2022/grid/grid-utils.mjs +0 -56
  237. package/esm2022/grid/grid.mjs +0 -644
  238. package/esm2022/grid/interfaces.mjs +0 -2
  239. package/esm2022/grid/mtxGrid.mjs +0 -5
  240. package/esm2022/grid/public-api.mjs +0 -18
  241. package/esm2022/grid/selectable-cell.mjs +0 -53
  242. package/esm2022/loader/loader-module.mjs +0 -19
  243. package/esm2022/loader/loader.mjs +0 -57
  244. package/esm2022/loader/mtxLoader.mjs +0 -5
  245. package/esm2022/loader/public-api.mjs +0 -3
  246. package/esm2022/ng-matero-extensions.mjs +0 -5
  247. package/esm2022/photoviewer/mtxPhotoviewer.mjs +0 -5
  248. package/esm2022/photoviewer/photoviewer-module.mjs +0 -16
  249. package/esm2022/photoviewer/photoviewer.mjs +0 -64
  250. package/esm2022/photoviewer/public-api.mjs +0 -3
  251. package/esm2022/popover/mtxPopover.mjs +0 -5
  252. package/esm2022/popover/popover-animations.mjs +0 -25
  253. package/esm2022/popover/popover-content.mjs +0 -91
  254. package/esm2022/popover/popover-errors.mjs +0 -27
  255. package/esm2022/popover/popover-interfaces.mjs +0 -2
  256. package/esm2022/popover/popover-module.mjs +0 -39
  257. package/esm2022/popover/popover-target.mjs +0 -18
  258. package/esm2022/popover/popover-trigger.mjs +0 -480
  259. package/esm2022/popover/popover-types.mjs +0 -2
  260. package/esm2022/popover/popover.mjs +0 -325
  261. package/esm2022/popover/public-api.mjs +0 -9
  262. package/esm2022/progress/mtxProgress.mjs +0 -5
  263. package/esm2022/progress/progress-module.mjs +0 -17
  264. package/esm2022/progress/progress.mjs +0 -43
  265. package/esm2022/progress/public-api.mjs +0 -3
  266. package/esm2022/public-api.mjs +0 -5
  267. package/esm2022/select/mtxSelect.mjs +0 -5
  268. package/esm2022/select/option.mjs +0 -52
  269. package/esm2022/select/public-api.mjs +0 -6
  270. package/esm2022/select/select-intl.mjs +0 -32
  271. package/esm2022/select/select-module.mjs +0 -89
  272. package/esm2022/select/select.mjs +0 -611
  273. package/esm2022/select/templates.mjs +0 -135
  274. package/esm2022/split/interfaces.mjs +0 -2
  275. package/esm2022/split/mtxSplit.mjs +0 -5
  276. package/esm2022/split/public-api.mjs +0 -6
  277. package/esm2022/split/split-module.mjs +0 -18
  278. package/esm2022/split/split-pane.mjs +0 -161
  279. package/esm2022/split/split.mjs +0 -634
  280. package/esm2022/split/utils.mjs +0 -219
  281. package/esm2022/tooltip/mtxTooltip.mjs +0 -5
  282. package/esm2022/tooltip/public-api.mjs +0 -4
  283. package/esm2022/tooltip/tooltip-animations.mjs +0 -17
  284. package/esm2022/tooltip/tooltip-module.mjs +0 -41
  285. package/esm2022/tooltip/tooltip.mjs +0 -915
@@ -1,99 +0,0 @@
1
- import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
2
- import { merge, Subject } from 'rxjs';
3
- import { filter, take } from 'rxjs/operators';
4
- /**
5
- * Reference to a drawer dispatched from the drawer service.
6
- */
7
- export class MtxDrawerRef {
8
- /** Instance of the component making up the content of the drawer. */
9
- get instance() {
10
- return this._ref.componentInstance;
11
- }
12
- /**
13
- * `ComponentRef` of the component opened into the drawer. Will be
14
- * null when the drawer is opened using a `TemplateRef`.
15
- */
16
- get componentRef() {
17
- return this._ref.componentRef;
18
- }
19
- constructor(_ref, config, containerInstance) {
20
- this._ref = _ref;
21
- /** Subject for notifying the user that the drawer has been dismissed. */
22
- this._afterDismissed = new Subject();
23
- /** Subject for notifying the user that the drawer has opened and appeared. */
24
- this._afterOpened = new Subject();
25
- this.containerInstance = containerInstance;
26
- this.disableClose = config.disableClose;
27
- this.id = _ref.id;
28
- // Emit when opening animation completes
29
- containerInstance._animationStateChanged
30
- .pipe(filter(event => event.phaseName === 'done' && event.toState === 'visible'), take(1))
31
- .subscribe(() => {
32
- this._afterOpened.next();
33
- this._afterOpened.complete();
34
- });
35
- // Dispose overlay when closing animation is complete
36
- containerInstance._animationStateChanged
37
- .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))
38
- .subscribe(() => {
39
- clearTimeout(this._closeFallbackTimeout);
40
- this._ref.close(this._result);
41
- });
42
- _ref.overlayRef.detachments().subscribe(() => {
43
- this._ref.close(this._result);
44
- });
45
- merge(this.backdropClick(), this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))).subscribe(event => {
46
- if (!this.disableClose &&
47
- (event.type !== 'keydown' || !hasModifierKey(event))) {
48
- event.preventDefault();
49
- this.dismiss();
50
- }
51
- });
52
- }
53
- /**
54
- * Dismisses the drawer.
55
- * @param result Data to be passed back to the drawer opener.
56
- */
57
- dismiss(result) {
58
- if (this.containerInstance && !this._afterDismissed.closed) {
59
- // Transition the backdrop in parallel to the drawer.
60
- this.containerInstance._animationStateChanged
61
- .pipe(filter(event => event.phaseName === 'start'), take(1))
62
- .subscribe(event => {
63
- // The logic that disposes of the overlay depends on the exit animation completing, however
64
- // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback
65
- // timeout which will clean everything up if the animation hasn't fired within the specified
66
- // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the
67
- // vast majority of cases the timeout will have been cleared before it has fired.
68
- this._closeFallbackTimeout = setTimeout(() => {
69
- this._ref.close(this._result);
70
- }, event.totalTime + 100);
71
- this._ref.overlayRef.detachBackdrop();
72
- });
73
- this._result = result;
74
- this.containerInstance.exit();
75
- this.containerInstance = null;
76
- }
77
- }
78
- /** Gets an observable that is notified when the drawer is finished closing. */
79
- afterDismissed() {
80
- return this._ref.closed;
81
- }
82
- /** Gets an observable that is notified when the drawer has opened and appeared. */
83
- afterOpened() {
84
- return this._afterOpened;
85
- }
86
- /**
87
- * Gets an observable that emits when the overlay's backdrop has been clicked.
88
- */
89
- backdropClick() {
90
- return this._ref.backdropClick;
91
- }
92
- /**
93
- * Gets an observable that emits when keydown events are targeted on the overlay.
94
- */
95
- keydownEvents() {
96
- return this._ref.keydownEvents;
97
- }
98
- }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZHJhd2VyL2RyYXdlci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzlDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDdkIscUVBQXFFO0lBQ3JFLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBa0IsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNoQyxDQUFDO0lBMEJELFlBQ1UsSUFBcUIsRUFDN0IsTUFBdUIsRUFDdkIsaUJBQXFDO1FBRjdCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBYi9CLHlFQUF5RTtRQUN4RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRWhFLDhFQUE4RTtRQUM3RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFhbEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUN4QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFbEIsd0NBQXdDO1FBQ3hDLGlCQUFpQixDQUFDLHNCQUFzQjthQUNyQyxJQUFJLENBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsRUFDMUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVMLHFEQUFxRDtRQUNyRCxpQkFBaUIsQ0FBQyxzQkFBc0I7YUFDckMsSUFBSSxDQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLEVBQ3pFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FDSCxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQ3BCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUNyRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUNFLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQ2xCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBc0IsQ0FBQyxDQUFDLEVBQ3JFLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxNQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzRCxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQjtpQkFDMUMsSUFBSSxDQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLEVBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUjtpQkFDQSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLDJGQUEyRjtnQkFDM0YseUZBQXlGO2dCQUN6Riw0RkFBNEY7Z0JBQzVGLDJGQUEyRjtnQkFDM0YsaUZBQWlGO2dCQUNqRixJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFFTCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUssQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELCtFQUErRTtJQUMvRSxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsbUZBQW1GO0lBQ25GLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBFU0NBUEUsIGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNdHhEcmF3ZXJDb25maWcgfSBmcm9tICcuL2RyYXdlci1jb25maWcnO1xuaW1wb3J0IHsgTXR4RHJhd2VyQ29udGFpbmVyIH0gZnJvbSAnLi9kcmF3ZXItY29udGFpbmVyJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhIGRyYXdlciBkaXNwYXRjaGVkIGZyb20gdGhlIGRyYXdlciBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgTXR4RHJhd2VyUmVmPFQgPSBhbnksIFIgPSBhbnk+IHtcbiAgLyoqIEluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQgbWFraW5nIHVwIHRoZSBjb250ZW50IG9mIHRoZSBkcmF3ZXIuICovXG4gIGdldCBpbnN0YW5jZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmLmNvbXBvbmVudEluc3RhbmNlITtcbiAgfVxuXG4gIC8qKlxuICAgKiBgQ29tcG9uZW50UmVmYCBvZiB0aGUgY29tcG9uZW50IG9wZW5lZCBpbnRvIHRoZSBkcmF3ZXIuIFdpbGwgYmVcbiAgICogbnVsbCB3aGVuIHRoZSBkcmF3ZXIgaXMgb3BlbmVkIHVzaW5nIGEgYFRlbXBsYXRlUmVmYC5cbiAgICovXG4gIGdldCBjb21wb25lbnRSZWYoKTogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZi5jb21wb25lbnRSZWY7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbnRvIHdoaWNoIHRoZSBkcmF3ZXIgY29udGVudCBpcyBwcm9qZWN0ZWQuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIGNvbnRhaW5lckluc3RhbmNlOiBNdHhEcmF3ZXJDb250YWluZXI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBjbG9zZSB0aGUgZHJhd2VyLiAqL1xuICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqIFVuaXF1ZSBJRCBmb3IgdGhlIGRyYXdlci4gKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoZSB1c2VyIHRoYXQgdGhlIGRyYXdlciBoYXMgYmVlbiBkaXNtaXNzZWQuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyRGlzbWlzc2VkID0gbmV3IFN1YmplY3Q8UiB8IHVuZGVmaW5lZD4oKTtcblxuICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoZSB1c2VyIHRoYXQgdGhlIGRyYXdlciBoYXMgb3BlbmVkIGFuZCBhcHBlYXJlZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJPcGVuZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBSZXN1bHQgdG8gYmUgcGFzc2VkIGRvd24gdG8gdGhlIGBhZnRlckRpc21pc3NlZGAgc3RyZWFtLiAqL1xuICBwcml2YXRlIF9yZXN1bHQ6IFIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIEhhbmRsZSB0byB0aGUgdGltZW91dCB0aGF0J3MgcnVubmluZyBhcyBhIGZhbGxiYWNrIGluIGNhc2UgdGhlIGV4aXQgYW5pbWF0aW9uIGRvZXNuJ3QgZmlyZS4gKi9cbiAgcHJpdmF0ZSBfY2xvc2VGYWxsYmFja1RpbWVvdXQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZWY6IERpYWxvZ1JlZjxSLCBUPixcbiAgICBjb25maWc6IE10eERyYXdlckNvbmZpZyxcbiAgICBjb250YWluZXJJbnN0YW5jZTogTXR4RHJhd2VyQ29udGFpbmVyXG4gICkge1xuICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UgPSBjb250YWluZXJJbnN0YW5jZTtcbiAgICB0aGlzLmRpc2FibGVDbG9zZSA9IGNvbmZpZy5kaXNhYmxlQ2xvc2U7XG4gICAgdGhpcy5pZCA9IF9yZWYuaWQ7XG5cbiAgICAvLyBFbWl0IHdoZW4gb3BlbmluZyBhbmltYXRpb24gY29tcGxldGVzXG4gICAgY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5waGFzZU5hbWUgPT09ICdkb25lJyAmJiBldmVudC50b1N0YXRlID09PSAndmlzaWJsZScpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9hZnRlck9wZW5lZC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG5cbiAgICAvLyBEaXNwb3NlIG92ZXJsYXkgd2hlbiBjbG9zaW5nIGFuaW1hdGlvbiBpcyBjb21wbGV0ZVxuICAgIGNvbnRhaW5lckluc3RhbmNlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQucGhhc2VOYW1lID09PSAnZG9uZScgJiYgZXZlbnQudG9TdGF0ZSA9PT0gJ2hpZGRlbicpLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2Nsb3NlRmFsbGJhY2tUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCk7XG4gICAgICB9KTtcblxuICAgIF9yZWYub3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9yZWYuY2xvc2UodGhpcy5fcmVzdWx0KTtcbiAgICB9KTtcblxuICAgIG1lcmdlKFxuICAgICAgdGhpcy5iYWNrZHJvcENsaWNrKCksXG4gICAgICB0aGlzLmtleWRvd25FdmVudHMoKS5waXBlKGZpbHRlcihldmVudCA9PiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUpKVxuICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuZGlzYWJsZUNsb3NlICYmXG4gICAgICAgIChldmVudC50eXBlICE9PSAna2V5ZG93bicgfHwgIWhhc01vZGlmaWVyS2V5KGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpKVxuICAgICAgKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyB0aGUgZHJhd2VyLlxuICAgKiBAcGFyYW0gcmVzdWx0IERhdGEgdG8gYmUgcGFzc2VkIGJhY2sgdG8gdGhlIGRyYXdlciBvcGVuZXIuXG4gICAqL1xuICBkaXNtaXNzKHJlc3VsdD86IFIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJJbnN0YW5jZSAmJiAhdGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY2xvc2VkKSB7XG4gICAgICAvLyBUcmFuc2l0aW9uIHRoZSBiYWNrZHJvcCBpbiBwYXJhbGxlbCB0byB0aGUgZHJhd2VyLlxuICAgICAgdGhpcy5jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5waGFzZU5hbWUgPT09ICdzdGFydCcpLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAvLyBUaGUgbG9naWMgdGhhdCBkaXNwb3NlcyBvZiB0aGUgb3ZlcmxheSBkZXBlbmRzIG9uIHRoZSBleGl0IGFuaW1hdGlvbiBjb21wbGV0aW5nLCBob3dldmVyXG4gICAgICAgICAgLy8gaXQgaXNuJ3QgZ3VhcmFudGVlZCBpZiB0aGUgcGFyZW50IHZpZXcgaXMgZGVzdHJveWVkIHdoaWxlIGl0J3MgcnVubmluZy4gQWRkIGEgZmFsbGJhY2tcbiAgICAgICAgICAvLyB0aW1lb3V0IHdoaWNoIHdpbGwgY2xlYW4gZXZlcnl0aGluZyB1cCBpZiB0aGUgYW5pbWF0aW9uIGhhc24ndCBmaXJlZCB3aXRoaW4gdGhlIHNwZWNpZmllZFxuICAgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lIHBsdXMgMTAwbXMuIFdlIGRvbid0IG5lZWQgdG8gcnVuIHRoaXMgb3V0c2lkZSB0aGUgTmdab25lLCBiZWNhdXNlIGZvciB0aGVcbiAgICAgICAgICAvLyB2YXN0IG1ham9yaXR5IG9mIGNhc2VzIHRoZSB0aW1lb3V0IHdpbGwgaGF2ZSBiZWVuIGNsZWFyZWQgYmVmb3JlIGl0IGhhcyBmaXJlZC5cbiAgICAgICAgICB0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCk7XG4gICAgICAgICAgfSwgZXZlbnQudG90YWxUaW1lICsgMTAwKTtcblxuICAgICAgICAgIHRoaXMuX3JlZi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG4gICAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlLmV4aXQoKTtcbiAgICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UgPSBudWxsITtcbiAgICB9XG4gIH1cblxuICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgaXMgbm90aWZpZWQgd2hlbiB0aGUgZHJhd2VyIGlzIGZpbmlzaGVkIGNsb3NpbmcuICovXG4gIGFmdGVyRGlzbWlzc2VkKCk6IE9ic2VydmFibGU8UiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWYuY2xvc2VkO1xuICB9XG5cbiAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGlzIG5vdGlmaWVkIHdoZW4gdGhlIGRyYXdlciBoYXMgb3BlbmVkIGFuZCBhcHBlYXJlZC4gKi9cbiAgYWZ0ZXJPcGVuZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyT3BlbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIG92ZXJsYXkncyBiYWNrZHJvcCBoYXMgYmVlbiBjbGlja2VkLlxuICAgKi9cbiAgYmFja2Ryb3BDbGljaygpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVmLmJhY2tkcm9wQ2xpY2s7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBrZXlkb3duIGV2ZW50cyBhcmUgdGFyZ2V0ZWQgb24gdGhlIG92ZXJsYXkuXG4gICAqL1xuICBrZXlkb3duRXZlbnRzKCk6IE9ic2VydmFibGU8S2V5Ym9hcmRFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWYua2V5ZG93bkV2ZW50cztcbiAgfVxufVxuIl19
@@ -1,144 +0,0 @@
1
- import { coerceCssPixelValue } from '@angular/cdk/coercion';
2
- import { Dialog, DialogConfig } from '@angular/cdk/dialog';
3
- import { Inject, Injectable, InjectionToken, Optional, SkipSelf, } from '@angular/core';
4
- import { defer, Subject } from 'rxjs';
5
- import { startWith } from 'rxjs/operators';
6
- import { MtxDrawerConfig } from './drawer-config';
7
- import { MtxDrawerContainer } from './drawer-container';
8
- import { MtxDrawerRef } from './drawer-ref';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/cdk/overlay";
11
- import * as i2 from "./drawer-config";
12
- /** Injection token that can be used to access the data that was passed in to a drawer. */
13
- export const MTX_DRAWER_DATA = new InjectionToken('MtxDrawerData');
14
- /** Injection token that can be used to specify default drawer options. */
15
- export const MTX_DRAWER_DEFAULT_OPTIONS = new InjectionToken('mtx-drawer-default-options');
16
- // Counter for unique drawer ids.
17
- let uniqueId = 0;
18
- /**
19
- * Service to trigger Material Design bottom sheets.
20
- */
21
- export class MtxDrawer {
22
- /** Keeps track of the currently-open dialogs. */
23
- get openDrawers() {
24
- return this._parentDrawer ? this._parentDrawer.openDrawers : this._openDrawersAtThisLevel;
25
- }
26
- /** Stream that emits when a drawer has been opened. */
27
- get afterOpened() {
28
- return this._parentDrawer ? this._parentDrawer.afterOpened : this._afterOpenedAtThisLevel;
29
- }
30
- _getAfterAllDismissed() {
31
- const parent = this._parentDrawer;
32
- return parent ? parent._getAfterAllDismissed() : this._afterAllDismissedAtThisLevel;
33
- }
34
- constructor(_overlay, injector, _parentDrawer, _defaultOptions) {
35
- this._overlay = _overlay;
36
- this._parentDrawer = _parentDrawer;
37
- this._defaultOptions = _defaultOptions;
38
- this._openDrawersAtThisLevel = [];
39
- this._afterAllDismissedAtThisLevel = new Subject();
40
- this._afterOpenedAtThisLevel = new Subject();
41
- /**
42
- * Stream that emits when all open drawer have finished closing.
43
- * Will emit on subscribe if there are no open drawers to begin with.
44
- */
45
- this.afterAllDismissed = defer(() => this.openDrawers.length
46
- ? this._getAfterAllDismissed()
47
- : this._getAfterAllDismissed().pipe(startWith(undefined)));
48
- this._dialog = injector.get(Dialog);
49
- }
50
- open(componentOrTemplateRef, config) {
51
- let drawerRef;
52
- const _config = { ...(this._defaultOptions || new MtxDrawerConfig()), ...config };
53
- _config.id = _config.id || `mtx-drawer-${uniqueId++}`;
54
- _config.width =
55
- _config.position === 'left' || _config.position === 'right'
56
- ? coerceCssPixelValue(_config.width)
57
- : '100vw';
58
- _config.height =
59
- _config.position === 'top' || _config.position === 'bottom'
60
- ? coerceCssPixelValue(_config.height)
61
- : '100vh';
62
- this._dialog.open(componentOrTemplateRef, {
63
- ..._config,
64
- // Disable closing since we need to sync it up to the animation ourselves.
65
- disableClose: true,
66
- // Disable closing on detachments so that we can sync up the animation.
67
- closeOnOverlayDetachments: false,
68
- container: {
69
- type: MtxDrawerContainer,
70
- providers: () => [
71
- // Provide our config as the CDK config as well since it has the same interface as the
72
- // CDK one, but it contains the actual values passed in by the user for things like
73
- // `disableClose` which we disable for the CDK dialog since we handle it ourselves.
74
- { provide: MtxDrawerConfig, useValue: _config },
75
- { provide: DialogConfig, useValue: _config },
76
- ],
77
- },
78
- scrollStrategy: _config.scrollStrategy || this._overlay.scrollStrategies.block(),
79
- positionStrategy: this._overlay.position().global()[_config.position]('0'),
80
- templateContext: () => ({ drawerRef }),
81
- providers: (cdkRef, _cdkConfig, container) => {
82
- drawerRef = new MtxDrawerRef(cdkRef, _config, container);
83
- return [
84
- { provide: MtxDrawerRef, useValue: drawerRef },
85
- { provide: MTX_DRAWER_DATA, useValue: _config.data },
86
- ];
87
- },
88
- });
89
- this.openDrawers.push(drawerRef);
90
- this.afterOpened.next(drawerRef);
91
- drawerRef.afterDismissed().subscribe(() => {
92
- const index = this.openDrawers.indexOf(drawerRef);
93
- if (index > -1) {
94
- this.openDrawers.splice(index, 1);
95
- if (!this.openDrawers.length) {
96
- this._getAfterAllDismissed().next();
97
- }
98
- }
99
- });
100
- return drawerRef;
101
- }
102
- /**
103
- * Dismisses all of the currently-open drawers.
104
- */
105
- dismissAll() {
106
- this._dismissDrawers(this.openDrawers);
107
- }
108
- /**
109
- * Finds an open drawer by its id.
110
- * @param id ID to use when looking up the drawer.
111
- */
112
- getDrawerById(id) {
113
- return this.openDrawers.find(drawer => drawer.id === id);
114
- }
115
- ngOnDestroy() {
116
- // Only dismiss the drawers at this level on destroy
117
- // since the parent service may still be active.
118
- this._dismissDrawers(this._openDrawersAtThisLevel);
119
- this._afterAllDismissedAtThisLevel.complete();
120
- this._afterOpenedAtThisLevel.complete();
121
- }
122
- _dismissDrawers(drawers) {
123
- let i = drawers.length;
124
- while (i--) {
125
- drawers[i].dismiss();
126
- }
127
- }
128
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxDrawer, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: MtxDrawer, optional: true, skipSelf: true }, { token: MTX_DRAWER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
129
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxDrawer, providedIn: 'root' }); }
130
- }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxDrawer, decorators: [{
132
- type: Injectable,
133
- args: [{ providedIn: 'root' }]
134
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }, { type: MtxDrawer, decorators: [{
135
- type: Optional
136
- }, {
137
- type: SkipSelf
138
- }] }, { type: i2.MtxDrawerConfig, decorators: [{
139
- type: Optional
140
- }, {
141
- type: Inject,
142
- args: [MTX_DRAWER_DEFAULT_OPTIONS]
143
- }] }] });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9kcmF3ZXIvZHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHM0QsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsY0FBYyxFQUdkLFFBQVEsRUFDUixRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBRTVDLDBGQUEwRjtBQUMxRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFeEUsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUMxRCw0QkFBNEIsQ0FDN0IsQ0FBQztBQUVGLGlDQUFpQztBQUNqQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFFakI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sU0FBUztJQU1wQixpREFBaUQ7SUFDakQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lB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LENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEVBQVU7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFdBQVc7UUFDVCxvREFBb0Q7UUFDcEQsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQTRCO1FBQ2xELElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFdkIsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO2lJQTlKVSxTQUFTLHVIQW9DViwwQkFBMEI7cUlBcEN6QixTQUFTLGNBREksTUFBTTs7MkZBQ25CLFNBQVM7a0JBRHJCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFtQzdCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFDUixNQUFNOzJCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUNzc1BpeGVsVmFsdWUgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlhbG9nLCBEaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmVyLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNdHhEcmF3ZXJDb25maWcgfSBmcm9tICcuL2RyYXdlci1jb25maWcnO1xuaW1wb3J0IHsgTXR4RHJhd2VyQ29udGFpbmVyIH0gZnJvbSAnLi9kcmF3ZXItY29udGFpbmVyJztcbmltcG9ydCB7IE10eERyYXdlclJlZiB9IGZyb20gJy4vZHJhd2VyLXJlZic7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIGRhdGEgdGhhdCB3YXMgcGFzc2VkIGluIHRvIGEgZHJhd2VyLiAqL1xuZXhwb3J0IGNvbnN0IE1UWF9EUkFXRVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdNdHhEcmF3ZXJEYXRhJyk7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRlZmF1bHQgZHJhd2VyIG9wdGlvbnMuICovXG5leHBvcnQgY29uc3QgTVRYX0RSQVdFUl9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TXR4RHJhd2VyQ29uZmlnPihcbiAgJ210eC1kcmF3ZXItZGVmYXVsdC1vcHRpb25zJ1xuKTtcblxuLy8gQ291bnRlciBmb3IgdW5pcXVlIGRyYXdlciBpZHMuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gdHJpZ2dlciBNYXRlcmlhbCBEZXNpZ24gYm90dG9tIHNoZWV0cy5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNdHhEcmF3ZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVuRHJhd2Vyc0F0VGhpc0xldmVsOiBNdHhEcmF3ZXJSZWY8YW55PltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FmdGVyQWxsRGlzbWlzc2VkQXRUaGlzTGV2ZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlck9wZW5lZEF0VGhpc0xldmVsID0gbmV3IFN1YmplY3Q8TXR4RHJhd2VyUmVmPGFueT4+KCk7XG4gIHByaXZhdGUgX2RpYWxvZzogRGlhbG9nO1xuXG4gIC8qKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudGx5LW9wZW4gZGlhbG9ncy4gKi9cbiAgZ2V0IG9wZW5EcmF3ZXJzKCk6IE10eERyYXdlclJlZjxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnREcmF3ZXIgPyB0aGlzLl9wYXJlbnREcmF3ZXIub3BlbkRyYXdlcnMgOiB0aGlzLl9vcGVuRHJhd2Vyc0F0VGhpc0xldmVsO1xuICB9XG5cbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYSBkcmF3ZXIgaGFzIGJlZW4gb3BlbmVkLiAqL1xuICBnZXQgYWZ0ZXJPcGVuZWQoKTogU3ViamVjdDxNdHhEcmF3ZXJSZWY8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnREcmF3ZXIgPyB0aGlzLl9wYXJlbnREcmF3ZXIuYWZ0ZXJPcGVuZWQgOiB0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWZ0ZXJBbGxEaXNtaXNzZWQoKTogU3ViamVjdDx2b2lkPiB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50RHJhd2VyO1xuICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuX2dldEFmdGVyQWxsRGlzbWlzc2VkKCkgOiB0aGlzLl9hZnRlckFsbERpc21pc3NlZEF0VGhpc0xldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gYWxsIG9wZW4gZHJhd2VyIGhhdmUgZmluaXNoZWQgY2xvc2luZy5cbiAgICogV2lsbCBlbWl0IG9uIHN1YnNjcmliZSBpZiB0aGVyZSBhcmUgbm8gb3BlbiBkcmF3ZXJzIHRvIGJlZ2luIHdpdGguXG4gICAqL1xuICByZWFkb25seSBhZnRlckFsbERpc21pc3NlZDogT2JzZXJ2YWJsZTx2b2lkPiA9IGRlZmVyKCgpID0+XG4gICAgdGhpcy5vcGVuRHJhd2Vycy5sZW5ndGhcbiAgICAgID8gdGhpcy5fZ2V0QWZ0ZXJBbGxEaXNtaXNzZWQoKVxuICAgICAgOiB0aGlzLl9nZXRBZnRlckFsbERpc21pc3NlZCgpLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpXG4gICkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgX3BhcmVudERyYXdlcjogTXR4RHJhd2VyLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNVFhfRFJBV0VSX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0T3B0aW9ucz86IE10eERyYXdlckNvbmZpZ1xuICApIHtcbiAgICB0aGlzLl9kaWFsb2cgPSBpbmplY3Rvci5nZXQoRGlhbG9nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIGRyYXdlciBjb250YWluaW5nIHRoZSBnaXZlbiBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVHlwZSBvZiB0aGUgY29tcG9uZW50IHRvIGxvYWQgaW50byB0aGUgZHJhd2VyLlxuICAgKiBAcGFyYW0gY29uZmlnIEV4dHJhIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoZSBuZXdseS1vcGVuZWQgZHJhd2VyLlxuICAgKi9cbiAgb3BlbjxULCBEID0gYW55LCBSID0gYW55PihcbiAgICBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VD4sXG4gICAgY29uZmlnPzogTXR4RHJhd2VyQ29uZmlnPEQ+XG4gICk6IE10eERyYXdlclJlZjxULCBSPjtcblxuICAvKipcbiAgICogT3BlbnMgYSBkcmF3ZXIgY29udGFpbmluZyB0aGUgZ2l2ZW4gdGVtcGxhdGUuXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSBUZW1wbGF0ZVJlZiB0byBpbnN0YW50aWF0ZSBhcyB0aGUgZHJhd2VyIGNvbnRlbnQuXG4gICAqIEBwYXJhbSBjb25maWcgRXh0cmEgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBSZWZlcmVuY2UgdG8gdGhlIG5ld2x5LW9wZW5lZCBkcmF3ZXIuXG4gICAqL1xuICBvcGVuPFQsIEQgPSBhbnksIFIgPSBhbnk+KFxuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUPixcbiAgICBjb25maWc/OiBNdHhEcmF3ZXJDb25maWc8RD5cbiAgKTogTXR4RHJhd2VyUmVmPFQsIFI+O1xuXG4gIG9wZW48VCwgRCA9IGFueSwgUiA9IGFueT4oXG4gICAgY29tcG9uZW50T3JUZW1wbGF0ZVJlZjogQ29tcG9uZW50VHlwZTxUPiB8IFRlbXBsYXRlUmVmPFQ+LFxuICAgIGNvbmZpZz86IE10eERyYXdlckNvbmZpZzxEPlxuICApOiBNdHhEcmF3ZXJSZWY8VCwgUj4ge1xuICAgIGxldCBkcmF3ZXJSZWYhOiBNdHhEcmF3ZXJSZWY8VCwgUj47XG5cbiAgICBjb25zdCBfY29uZmlnID0geyAuLi4odGhpcy5fZGVmYXVsdE9wdGlvbnMgfHwgbmV3IE10eERyYXdlckNvbmZpZygpKSwgLi4uY29uZmlnIH07XG4gICAgX2NvbmZpZy5pZCA9IF9jb25maWcuaWQgfHwgYG10eC1kcmF3ZXItJHt1bmlxdWVJZCsrfWA7XG5cbiAgICBfY29uZmlnLndpZHRoID1cbiAgICAgIF9jb25maWcucG9zaXRpb24gPT09ICdsZWZ0JyB8fCBfY29uZmlnLnBvc2l0aW9uID09PSAncmlnaHQnXG4gICAgICAgID8gY29lcmNlQ3NzUGl4ZWxWYWx1ZShfY29uZmlnLndpZHRoKVxuICAgICAgICA6ICcxMDB2dyc7XG5cbiAgICBfY29uZmlnLmhlaWdodCA9XG4gICAgICBfY29uZmlnLnBvc2l0aW9uID09PSAndG9wJyB8fCBfY29uZmlnLnBvc2l0aW9uID09PSAnYm90dG9tJ1xuICAgICAgICA/IGNvZXJjZUNzc1BpeGVsVmFsdWUoX2NvbmZpZy5oZWlnaHQpXG4gICAgICAgIDogJzEwMHZoJztcblxuICAgIHRoaXMuX2RpYWxvZy5vcGVuPFIsIEQsIFQ+KGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsIHtcbiAgICAgIC4uLl9jb25maWcsXG4gICAgICAvLyBEaXNhYmxlIGNsb3Npbmcgc2luY2Ugd2UgbmVlZCB0byBzeW5jIGl0IHVwIHRvIHRoZSBhbmltYXRpb24gb3Vyc2VsdmVzLlxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgLy8gRGlzYWJsZSBjbG9zaW5nIG9uIGRldGFjaG1lbnRzIHNvIHRoYXQgd2UgY2FuIHN5bmMgdXAgdGhlIGFuaW1hdGlvbi5cbiAgICAgIGNsb3NlT25PdmVybGF5RGV0YWNobWVudHM6IGZhbHNlLFxuICAgICAgY29udGFpbmVyOiB7XG4gICAgICAgIHR5cGU6IE10eERyYXdlckNvbnRhaW5lcixcbiAgICAgICAgcHJvdmlkZXJzOiAoKSA9PiBbXG4gICAgICAgICAgLy8gUHJvdmlkZSBvdXIgY29uZmlnIGFzIHRoZSBDREsgY29uZmlnIGFzIHdlbGwgc2luY2UgaXQgaGFzIHRoZSBzYW1lIGludGVyZmFjZSBhcyB0aGVcbiAgICAgICAgICAvLyBDREsgb25lLCBidXQgaXQgY29udGFpbnMgdGhlIGFjdHVhbCB2YWx1ZXMgcGFzc2VkIGluIGJ5IHRoZSB1c2VyIGZvciB0aGluZ3MgbGlrZVxuICAgICAgICAgIC8vIGBkaXNhYmxlQ2xvc2VgIHdoaWNoIHdlIGRpc2FibGUgZm9yIHRoZSBDREsgZGlhbG9nIHNpbmNlIHdlIGhhbmRsZSBpdCBvdXJzZWx2ZXMuXG4gICAgICAgICAgeyBwcm92aWRlOiBNdHhEcmF3ZXJDb25maWcsIHVzZVZhbHVlOiBfY29uZmlnIH0sXG4gICAgICAgICAgeyBwcm92aWRlOiBEaWFsb2dDb25maWcsIHVzZVZhbHVlOiBfY29uZmlnIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IF9jb25maWcuc2Nyb2xsU3RyYXRlZ3kgfHwgdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKClbX2NvbmZpZy5wb3NpdGlvbiFdKCcwJyksXG4gICAgICB0ZW1wbGF0ZUNvbnRleHQ6ICgpID0+ICh7IGRyYXdlclJlZiB9KSxcbiAgICAgIHByb3ZpZGVyczogKGNka1JlZiwgX2Nka0NvbmZpZywgY29udGFpbmVyKSA9PiB7XG4gICAgICAgIGRyYXdlclJlZiA9IG5ldyBNdHhEcmF3ZXJSZWYoY2RrUmVmLCBfY29uZmlnLCBjb250YWluZXIgYXMgTXR4RHJhd2VyQ29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7IHByb3ZpZGU6IE10eERyYXdlclJlZiwgdXNlVmFsdWU6IGRyYXdlclJlZiB9LFxuICAgICAgICAgIHsgcHJvdmlkZTogTVRYX0RSQVdFUl9EQVRBLCB1c2VWYWx1ZTogX2NvbmZpZy5kYXRhIH0sXG4gICAgICAgIF07XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5vcGVuRHJhd2Vycy5wdXNoKGRyYXdlclJlZik7XG4gICAgdGhpcy5hZnRlck9wZW5lZC5uZXh0KGRyYXdlclJlZik7XG5cbiAgICBkcmF3ZXJSZWYuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5EcmF3ZXJzLmluZGV4T2YoZHJhd2VyUmVmKTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5vcGVuRHJhd2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmICghdGhpcy5vcGVuRHJhd2Vycy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLl9nZXRBZnRlckFsbERpc21pc3NlZCgpLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRyYXdlclJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzZXMgYWxsIG9mIHRoZSBjdXJyZW50bHktb3BlbiBkcmF3ZXJzLlxuICAgKi9cbiAgZGlzbWlzc0FsbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNtaXNzRHJhd2Vycyh0aGlzLm9wZW5EcmF3ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBhbiBvcGVuIGRyYXdlciBieSBpdHMgaWQuXG4gICAqIEBwYXJhbSBpZCBJRCB0byB1c2Ugd2hlbiBsb29raW5nIHVwIHRoZSBkcmF3ZXIuXG4gICAqL1xuICBnZXREcmF3ZXJCeUlkKGlkOiBzdHJpbmcpOiBNdHhEcmF3ZXJSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMub3BlbkRyYXdlcnMuZmluZChkcmF3ZXIgPT4gZHJhd2VyLmlkID09PSBpZCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBPbmx5IGRpc21pc3MgdGhlIGRyYXdlcnMgYXQgdGhpcyBsZXZlbCBvbiBkZXN0cm95XG4gICAgLy8gc2luY2UgdGhlIHBhcmVudCBzZXJ2aWNlIG1heSBzdGlsbCBiZSBhY3RpdmUuXG4gICAgdGhpcy5fZGlzbWlzc0RyYXdlcnModGhpcy5fb3BlbkRyYXdlcnNBdFRoaXNMZXZlbCk7XG4gICAgdGhpcy5fYWZ0ZXJBbGxEaXNtaXNzZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2FmdGVyT3BlbmVkQXRUaGlzTGV2ZWwuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc21pc3NEcmF3ZXJzKGRyYXdlcnM6IE10eERyYXdlclJlZjxhbnk+W10pIHtcbiAgICBsZXQgaSA9IGRyYXdlcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgZHJhd2Vyc1tpXS5kaXNtaXNzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXR4RHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9kcmF3ZXIvbXR4RHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,7 +0,0 @@
1
- export * from './drawer-module';
2
- export * from './drawer';
3
- export * from './drawer-config';
4
- export * from './drawer-container';
5
- export * from './drawer-animations';
6
- export * from './drawer-ref';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZHJhd2VyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZHJhd2VyLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdlcic7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdlci1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmF3ZXItY29udGFpbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhd2VyLWFuaW1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmF3ZXItcmVmJztcbiJdfQ==
@@ -1,132 +0,0 @@
1
- import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, NgTemplateOutlet, PercentPipe, } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
3
- import { MatBadge } from '@angular/material/badge';
4
- import { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';
5
- import { MatChip, MatChipListbox } from '@angular/material/chips';
6
- import { MatIcon } from '@angular/material/icon';
7
- import { MatTooltip } from '@angular/material/tooltip';
8
- import { isObservable } from 'rxjs';
9
- import { MtxToObservablePipe } from '@ng-matero/extensions/core';
10
- import { MtxGridCellActionBadgePipe, MtxGridCellActionDisablePipe, MtxGridCellActionTooltipPipe, MtxGridCellActionsPipe, MtxGridCellSummaryPipe, } from './grid-pipes';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@ng-matero/extensions/dialog";
13
- import * as i2 from "./grid-utils";
14
- export class MtxGridCell {
15
- get _value() {
16
- return this._utils.getCellValue(this.rowData, this.colDef);
17
- }
18
- constructor(_dialog, _utils, _differs, _changeDetectorRef) {
19
- this._dialog = _dialog;
20
- this._utils = _utils;
21
- this._differs = _differs;
22
- this._changeDetectorRef = _changeDetectorRef;
23
- /** Row data */
24
- this.rowData = {};
25
- /** Table data */
26
- this.data = [];
27
- /** Whether show summary */
28
- this.summary = false;
29
- /** Placeholder for the empty value (`null`, `''`, `[]`) */
30
- this.placeholder = '--';
31
- this.rowDataChange = new EventEmitter();
32
- }
33
- ngOnInit() {
34
- this.rowDataDiffer = this._differs.find(this.rowData).create();
35
- }
36
- ngDoCheck() {
37
- const changes = this.rowDataDiffer?.diff(this.rowData);
38
- if (changes) {
39
- this._applyChanges(changes);
40
- }
41
- }
42
- _applyChanges(changes) {
43
- changes.forEachChangedItem(record => {
44
- this.rowChangeRecord = record;
45
- this.rowDataChange.emit(record);
46
- this._changeDetectorRef.markForCheck();
47
- });
48
- }
49
- _getText(value) {
50
- return value === undefined ? '' : this._utils.isEmpty(value) ? this.placeholder : value;
51
- }
52
- _getTooltip(value) {
53
- return this._utils.isEmpty(value) ? '' : value;
54
- }
55
- _getFormatterTooltip(value) {
56
- return this._utils.isContainHTML(value) || this._utils.isEmpty(value) ? '' : value;
57
- }
58
- _onActionClick(event, btn, rowData) {
59
- event.preventDefault();
60
- event.stopPropagation();
61
- if (typeof btn.pop === 'string' || isObservable(btn.pop)) {
62
- this._dialog.open({
63
- title: btn.pop,
64
- buttons: [
65
- { color: 'primary', text: 'OK', onClick: () => btn.click?.(rowData) || {} },
66
- { text: 'CLOSE' },
67
- ],
68
- });
69
- }
70
- else if (typeof btn.pop === 'object') {
71
- this._dialog.open({
72
- title: btn.pop?.title,
73
- description: btn.pop?.description,
74
- buttons: [
75
- {
76
- color: btn.pop?.okColor || 'primary',
77
- text: btn.pop?.okText || 'OK',
78
- onClick: () => btn.click?.(rowData) || {},
79
- },
80
- {
81
- color: btn.pop?.closeColor,
82
- text: btn.pop?.closeText || 'CLOSE',
83
- },
84
- ],
85
- });
86
- }
87
- else {
88
- btn.click?.(rowData);
89
- }
90
- }
91
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxGridCell, deps: [{ token: i1.MtxDialog }, { token: i2.MtxGridUtils }, { token: i0.KeyValueDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
92
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MtxGridCell, isStandalone: true, selector: "mtx-grid-cell", inputs: { rowData: "rowData", colDef: "colDef", data: "data", summary: "summary", placeholder: "placeholder" }, outputs: { rowDataChange: "rowDataChange" }, exportAs: ["mtxGridCell"], ngImport: i0, template: "@if (summary) {\n <span\n [title]=\"_getFormatterTooltip((data | cellSummary: colDef))\"\n [innerHTML]=\"_getText((data | cellSummary: colDef))\">\n </span>\n} @else {\n <!-- Custom formatting -->\n @if (colDef.formatter) {\n <span\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\n </span>\n } @else {\n <!-- Default formatting -->\n @switch (colDef.type) {\n <!-- Buttons -->\n @case ('button') {\n @for (btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue; track btn) {\n @if (!btn.iif || btn.iif(rowData)) {\n @switch (btn.type) {\n @case ('raised') {\n <button mat-raised-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n @case ('stroked') {\n <button mat-stroked-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n @case ('flat') {\n <button mat-flat-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n @case ('icon') {\n <button mat-icon-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n </button>\n }\n @case ('fab') {\n <button mat-fab [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n </button>\n }\n @case ('mini-fab') {\n <button mat-mini-fab [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n </button>\n }\n @default {\n <button mat-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n }\n }\n }\n }\n <!-- Tag -->\n @case ('tag') {\n @if (colDef.tag && colDef.tag[_value]) {\n <mat-chip-listbox>\n <mat-chip color=\"primary\" [class]=\"'bg-' + colDef.tag[_value].color\">\n {{colDef.tag[_value].text}}\n </mat-chip>\n </mat-chip-listbox>\n } @else {\n {{_value}}\n }\n }\n <!-- Link -->\n @case ('link') {\n <a [href]=\"_value\" target=\"_blank\">{{_value}}</a>\n }\n <!-- Image -->\n @case ('image') {\n <img class=\"mtx-grid-img\" [src]=\"_value\" alt=\"\">\n }\n <!-- Boolean -->\n @case ('boolean') {\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\n }\n <!-- Number -->\n @case ('number') {\n <span [title]=\"_getTooltip(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Currency -->\n @case ('currency') {\n <span [title]=\"_getTooltip(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Percent -->\n @case ('percent') {\n <span [title]=\"_getTooltip(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Date -->\n @case ('date') {\n <span [title]=\"_getTooltip(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)\">\n {{_getText(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Default -->\n @default {\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\n }\n }\n }\n}\n\n<ng-template #iconTpl let-btn>\n @if (btn.icon) {\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n } @else if(btn.fontIcon) {\n <mat-icon class=\"mtx-grid-icon\" [fontIcon]=\"btn.fontIcon\"></mat-icon>\n } @else if(btn.svgIcon) {\n <mat-icon class=\"mtx-grid-icon\" [svgIcon]=\"btn.svgIcon\"></mat-icon>\n }\n</ng-template>\n", styles: [".mtx-grid-img{display:inline-block;width:32px;border-radius:4px;vertical-align:middle}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: MtxToObservablePipe, name: "toObservable" }, { kind: "pipe", type: MtxGridCellActionsPipe, name: "cellActions" }, { kind: "pipe", type: MtxGridCellSummaryPipe, name: "cellSummary" }, { kind: "pipe", type: MtxGridCellActionDisablePipe, name: "cellActionDisable" }, { kind: "pipe", type: MtxGridCellActionTooltipPipe, name: "cellActionTooltip" }, { kind: "pipe", type: MtxGridCellActionBadgePipe, name: "cellActionBadge" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
93
- }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxGridCell, decorators: [{
95
- type: Component,
96
- args: [{ selector: 'mtx-grid-cell', exportAs: 'mtxGridCell', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
97
- AsyncPipe,
98
- CurrencyPipe,
99
- DatePipe,
100
- DecimalPipe,
101
- NgTemplateOutlet,
102
- PercentPipe,
103
- MatButton,
104
- MatIconButton,
105
- MatFabButton,
106
- MatMiniFabButton,
107
- MatIcon,
108
- MatChipListbox,
109
- MatChip,
110
- MatTooltip,
111
- MatBadge,
112
- MtxToObservablePipe,
113
- MtxGridCellActionsPipe,
114
- MtxGridCellSummaryPipe,
115
- MtxGridCellActionDisablePipe,
116
- MtxGridCellActionTooltipPipe,
117
- MtxGridCellActionBadgePipe,
118
- ], template: "@if (summary) {\n <span\n [title]=\"_getFormatterTooltip((data | cellSummary: colDef))\"\n [innerHTML]=\"_getText((data | cellSummary: colDef))\">\n </span>\n} @else {\n <!-- Custom formatting -->\n @if (colDef.formatter) {\n <span\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\n </span>\n } @else {\n <!-- Default formatting -->\n @switch (colDef.type) {\n <!-- Buttons -->\n @case ('button') {\n @for (btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue; track btn) {\n @if (!btn.iif || btn.iif(rowData)) {\n @switch (btn.type) {\n @case ('raised') {\n <button mat-raised-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n @case ('stroked') {\n <button mat-stroked-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n @case ('flat') {\n <button mat-flat-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n @case ('icon') {\n <button mat-icon-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n </button>\n }\n @case ('fab') {\n <button mat-fab [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n </button>\n }\n @case ('mini-fab') {\n <button mat-mini-fab [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n </button>\n }\n @default {\n <button mat-button [color]=\"btn.color || 'primary'\" type=\"button\"\n class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n [matBadgeColor]=\"(btn | cellActionBadge).color\"\n [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n (click)=\"_onActionClick($event, btn, rowData)\">\n <mat-icon *ngTemplateOutlet=\"iconTpl; context: { $implicit: btn }\"></mat-icon>\n <span>{{btn.text | toObservable | async}}</span>\n </button>\n }\n }\n }\n }\n }\n <!-- Tag -->\n @case ('tag') {\n @if (colDef.tag && colDef.tag[_value]) {\n <mat-chip-listbox>\n <mat-chip color=\"primary\" [class]=\"'bg-' + colDef.tag[_value].color\">\n {{colDef.tag[_value].text}}\n </mat-chip>\n </mat-chip-listbox>\n } @else {\n {{_value}}\n }\n }\n <!-- Link -->\n @case ('link') {\n <a [href]=\"_value\" target=\"_blank\">{{_value}}</a>\n }\n <!-- Image -->\n @case ('image') {\n <img class=\"mtx-grid-img\" [src]=\"_value\" alt=\"\">\n }\n <!-- Boolean -->\n @case ('boolean') {\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\n }\n <!-- Number -->\n @case ('number') {\n <span [title]=\"_getTooltip(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Currency -->\n @case ('currency') {\n <span [title]=\"_getTooltip(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Percent -->\n @case ('percent') {\n <span [title]=\"_getTooltip(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Date -->\n @case ('date') {\n <span [title]=\"_getTooltip(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)\">\n {{_getText(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)}}\n </span>\n }\n <!-- Default -->\n @default {\n <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\n }\n }\n }\n}\n\n<ng-template #iconTpl let-btn>\n @if (btn.icon) {\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n } @else if(btn.fontIcon) {\n <mat-icon class=\"mtx-grid-icon\" [fontIcon]=\"btn.fontIcon\"></mat-icon>\n } @else if(btn.svgIcon) {\n <mat-icon class=\"mtx-grid-icon\" [svgIcon]=\"btn.svgIcon\"></mat-icon>\n }\n</ng-template>\n", styles: [".mtx-grid-img{display:inline-block;width:32px;border-radius:4px;vertical-align:middle}\n"] }]
119
- }], ctorParameters: () => [{ type: i1.MtxDialog }, { type: i2.MtxGridUtils }, { type: i0.KeyValueDiffers }, { type: i0.ChangeDetectorRef }], propDecorators: { rowData: [{
120
- type: Input
121
- }], colDef: [{
122
- type: Input
123
- }], data: [{
124
- type: Input
125
- }], summary: [{
126
- type: Input
127
- }], placeholder: [{
128
- type: Input
129
- }], rowDataChange: [{
130
- type: Output
131
- }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9jZWxsLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2NlbGwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQU1MLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1QixzQkFBc0IsRUFDdEIsc0JBQXNCLEdBQ3ZCLE1BQU0sY0FBYyxDQUFDOzs7O0FBb0N0QixNQUFNLE9BQU8sV0FBVztJQXNCdEIsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMs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QUNuQixzQkFBc0IsK0NBQ3RCLHNCQUFzQiwrQ0FDdEIsNEJBQTRCLHFEQUM1Qiw0QkFBNEIscURBQzVCLDBCQUEwQjs7MkZBR2pCLFdBQVc7a0JBaEN2QixTQUFTOytCQUNFLGVBQWUsWUFDZixhQUFhLGlCQUdSLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1QiwwQkFBMEI7cUJBQzNCO3VLQUlRLE9BQU87c0JBQWYsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIEN1cnJlbmN5UGlwZSxcbiAgRGF0ZVBpcGUsXG4gIERlY2ltYWxQaXBlLFxuICBOZ1RlbXBsYXRlT3V0bGV0LFxuICBQZXJjZW50UGlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBLZXlWYWx1ZUNoYW5nZVJlY29yZCxcbiAgS2V5VmFsdWVDaGFuZ2VzLFxuICBLZXlWYWx1ZURpZmZlcixcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEZhYkJ1dHRvbiwgTWF0SWNvbkJ1dHRvbiwgTWF0TWluaUZhYkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGlwLCBNYXRDaGlwTGlzdGJveCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNdHhUb09ic2VydmFibGVQaXBlIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2NvcmUnO1xuaW1wb3J0IHsgTXR4RGlhbG9nIH0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2RpYWxvZyc7XG5pbXBvcnQge1xuICBNdHhHcmlkQ2VsbEFjdGlvbkJhZGdlUGlwZSxcbiAgTXR4R3JpZENlbGxBY3Rpb25EaXNhYmxlUGlwZSxcbiAgTXR4R3JpZENlbGxBY3Rpb25Ub29sdGlwUGlwZSxcbiAgTXR4R3JpZENlbGxBY3Rpb25zUGlwZSxcbiAgTXR4R3JpZENlbGxTdW1tYXJ5UGlwZSxcbn0gZnJvbSAnLi9ncmlkLXBpcGVzJztcbmltcG9ydCB7IE10eEdyaWRVdGlscyB9IGZyb20gJy4vZ3JpZC11dGlscyc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uLCBNdHhHcmlkQ29sdW1uQnV0dG9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWdyaWQtY2VsbCcsXG4gIGV4cG9ydEFzOiAnbXR4R3JpZENlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2VsbC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NlbGwuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEN1cnJlbmN5UGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBEZWNpbWFsUGlwZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFBlcmNlbnRQaXBlLFxuICAgIE1hdEJ1dHRvbixcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIE1hdEZhYkJ1dHRvbixcbiAgICBNYXRNaW5pRmFiQnV0dG9uLFxuICAgIE1hdEljb24sXG4gICAgTWF0Q2hpcExpc3Rib3gsXG4gICAgTWF0Q2hpcCxcbiAgICBNYXRUb29sdGlwLFxuICAgIE1hdEJhZGdlLFxuICAgIE10eFRvT2JzZXJ2YWJsZVBpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25zUGlwZSxcbiAgICBNdHhHcmlkQ2VsbFN1bW1hcnlQaXBlLFxuICAgIE10eEdyaWRDZWxsQWN0aW9uRGlzYWJsZVBpcGUsXG4gICAgTXR4R3JpZENlbGxBY3Rpb25Ub29sdGlwUGlwZSxcbiAgICBNdHhHcmlkQ2VsbEFjdGlvbkJhZGdlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZENlbGwgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICAvKiogUm93IGRhdGEgKi9cbiAgQElucHV0KCkgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIC8qKiBDb2x1bW4gZGVmaW5pdGlvbiAqL1xuICBASW5wdXQoKSBjb2xEZWYhOiBNdHhHcmlkQ29sdW1uO1xuXG4gIC8qKiBUYWJsZSBkYXRhICovXG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG5cbiAgLyoqIFdoZXRoZXIgc2hvdyBzdW1tYXJ5ICovXG4gIEBJbnB1dCgpIHN1bW1hcnkgPSBmYWxzZTtcblxuICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBlbXB0eSB2YWx1ZSAoYG51bGxgLCBgJydgLCBgW11gKSAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJy0tJztcblxuICBAT3V0cHV0KCkgcm93RGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xuXG4gIHByaXZhdGUgcm93RGF0YURpZmZlcj86IEtleVZhbHVlRGlmZmVyPHN0cmluZywgYW55PjtcblxuICByb3dDaGFuZ2VSZWNvcmQ/OiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgZ2V0IF92YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXRpbHMuZ2V0Q2VsbFZhbHVlKHRoaXMucm93RGF0YSwgdGhpcy5jb2xEZWYpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNdHhEaWFsb2csXG4gICAgcHJpdmF0ZSBfdXRpbHM6IE10eEdyaWRVdGlscyxcbiAgICBwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RhdGFEaWZmZXIgPSB0aGlzLl9kaWZmZXJzLmZpbmQodGhpcy5yb3dEYXRhKS5jcmVhdGUoKTtcbiAgfVxuXG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5yb3dEYXRhRGlmZmVyPy5kaWZmKHRoaXMucm93RGF0YSk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUNoYW5nZXMoY2hhbmdlczogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgYW55Pikge1xuICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKHJlY29yZCA9PiB7XG4gICAgICB0aGlzLnJvd0NoYW5nZVJlY29yZCA9IHJlY29yZDtcbiAgICAgIHRoaXMucm93RGF0YUNoYW5nZS5lbWl0KHJlY29yZCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9nZXRUZXh0KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/ICcnIDogdGhpcy5fdXRpbHMuaXNFbXB0eSh2YWx1ZSkgPyB0aGlzLnBsYWNlaG9sZGVyIDogdmFsdWU7XG4gIH1cblxuICBfZ2V0VG9vbHRpcCh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmlzRW1wdHkodmFsdWUpID8gJycgOiB2YWx1ZTtcbiAgfVxuXG4gIF9nZXRGb3JtYXR0ZXJUb29sdGlwKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5fdXRpbHMuaXNDb250YWluSFRNTCh2YWx1ZSkgfHwgdGhpcy5fdXRpbHMuaXNFbXB0eSh2YWx1ZSkgPyAnJyA6IHZhbHVlO1xuICB9XG5cbiAgX29uQWN0aW9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGJ0bjogTXR4R3JpZENvbHVtbkJ1dHRvbiwgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodHlwZW9mIGJ0bi5wb3AgPT09ICdzdHJpbmcnIHx8IGlzT2JzZXJ2YWJsZShidG4ucG9wKSkge1xuICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oe1xuICAgICAgICB0aXRsZTogYnRuLnBvcCxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHsgY29sb3I6ICdwcmltYXJ5JywgdGV4dDogJ09LJywgb25DbGljazogKCkgPT4gYnRuLmNsaWNrPy4ocm93RGF0YSkgfHwge30gfSxcbiAgICAgICAgICB7IHRleHQ6ICdDTE9TRScgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJ0bi5wb3AgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLl9kaWFsb2cub3Blbih7XG4gICAgICAgIHRpdGxlOiBidG4ucG9wPy50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGJ0bi5wb3A/LmRlc2NyaXB0aW9uLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6IGJ0bi5wb3A/Lm9rQ29sb3IgfHwgJ3ByaW1hcnknLFxuICAgICAgICAgICAgdGV4dDogYnRuLnBvcD8ub2tUZXh0IHx8ICdPSycsXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBidG4uY2xpY2s/Lihyb3dEYXRhKSB8fCB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiBidG4ucG9wPy5jbG9zZUNvbG9yLFxuICAgICAgICAgICAgdGV4dDogYnRuLnBvcD8uY2xvc2VUZXh0IHx8ICdDTE9TRScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBidG4uY2xpY2s/Lihyb3dEYXRhKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAoc3VtbWFyeSkge1xuICA8c3BhblxuICAgIFt0aXRsZV09XCJfZ2V0Rm9ybWF0dGVyVG9vbHRpcCgoZGF0YSB8IGNlbGxTdW1tYXJ5OiBjb2xEZWYpKVwiXG4gICAgW2lubmVySFRNTF09XCJfZ2V0VGV4dCgoZGF0YSB8IGNlbGxTdW1tYXJ5OiBjb2xEZWYpKVwiPlxuICA8L3NwYW4+XG59IEBlbHNlIHtcbiAgPCEtLSBDdXN0b20gZm9ybWF0dGluZyAtLT5cbiAgQGlmIChjb2xEZWYuZm9ybWF0dGVyKSB7XG4gICAgPHNwYW5cbiAgICAgIFt0aXRsZV09XCJfZ2V0Rm9ybWF0dGVyVG9vbHRpcChjb2xEZWYuZm9ybWF0dGVyKHJvd0RhdGEsIGNvbERlZikpXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiX2dldFRleHQoY29sRGVmLmZvcm1hdHRlcihyb3dEYXRhLCBjb2xEZWYpKVwiPlxuICAgIDwvc3Bhbj5cbiAgfSBAZWxzZSB7XG4gICAgPCEtLSBEZWZhdWx0IGZvcm1hdHRpbmcgLS0+XG4gICAgQHN3aXRjaCAoY29sRGVmLnR5cGUpIHtcbiAgICAgIDwhLS0gQnV0dG9ucyAtLT5cbiAgICAgIEBjYXNlICgnYnV0dG9uJykge1xuICAgICAgICBAZm9yIChidG4gb2YgY29sRGVmLmJ1dHRvbnMgfCBjZWxsQWN0aW9uczogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZTsgdHJhY2sgYnRuKSB7XG4gICAgICAgICAgQGlmICghYnRuLmlpZiB8fCBidG4uaWlmKHJvd0RhdGEpKSB7XG4gICAgICAgICAgICBAc3dpdGNoIChidG4udHlwZSkge1xuICAgICAgICAgICAgICBAY2FzZSAoJ3JhaXNlZCcpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm10eC1ncmlkLWFjdGlvbi1idXR0b25cIiBbY2xhc3NdPVwiYnRuLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UcGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBidG4gfVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAY2FzZSAoJ3N0cm9rZWQnKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtYWN0aW9uLWJ1dHRvblwiIFtjbGFzc109XCJidG4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRwbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGJ0biB9XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlICgnZmxhdCcpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdHgtZ3JpZC1hY3Rpb24tYnV0dG9uXCIgW2NsYXNzXT1cImJ0bi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuIHwgY2VsbEFjdGlvbkRpc2FibGU6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuaGlkZURlbGF5XCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuc2hvd0RlbGF5XCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25BdE9yaWdpbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uQXRPcmlnaW5cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkudG91Y2hHZXN0dXJlcyB8fCAnYXV0bydcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb250ZW50IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGVzY3JpcHRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGVzY3JpcHRpb24gfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5wb3NpdGlvbiB8fCAnYWJvdmUgYWZ0ZXInXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuc2l6ZSB8fCAnbWVkaXVtJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VPdmVybGFwXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLm92ZXJsYXBcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX29uQWN0aW9uQ2xpY2soJGV2ZW50LCBidG4sIHJvd0RhdGEpXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVHBsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYnRuIH1cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tidG4udGV4dCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKCdpY29uJykge1xuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm10eC1ncmlkLWFjdGlvbi1idXR0b25cIiBbY2xhc3NdPVwiYnRuLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UcGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBidG4gfVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKCdmYWInKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtZmFiIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm10eC1ncmlkLWFjdGlvbi1idXR0b25cIiBbY2xhc3NdPVwiYnRuLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidG4gfCBjZWxsQWN0aW9uRGlzYWJsZTogcm93RGF0YTogcm93Q2hhbmdlUmVjb3JkOiByb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLm1lc3NhZ2UgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5oaWRlRGVsYXlcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5zaG93RGVsYXlcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uIHx8ICdiZWxvdydcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbkF0T3JpZ2luXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb25BdE9yaWdpblwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXNdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbnRlbnQgfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEZXNjcmlwdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kZXNjcmlwdGlvbiB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnBvc2l0aW9uIHx8ICdhYm92ZSBhZnRlcidcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5zaXplIHx8ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZU92ZXJsYXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkub3ZlcmxhcFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UcGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBidG4gfVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKCdtaW5pLWZhYicpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdHgtZ3JpZC1hY3Rpb24tYnV0dG9uXCIgW2NsYXNzXT1cImJ0bi5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuIHwgY2VsbEFjdGlvbkRpc2FibGU6IHJvd0RhdGE6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuaGlkZURlbGF5XCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkuc2hvd0RlbGF5XCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25BdE9yaWdpbl09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnBvc2l0aW9uQXRPcmlnaW5cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkudG91Y2hHZXN0dXJlcyB8fCAnYXV0bydcIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZV09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb250ZW50IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGVzY3JpcHRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGVzY3JpcHRpb24gfCB0b09ic2VydmFibGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5jb2xvclwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VQb3NpdGlvbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5wb3NpdGlvbiB8fCAnYWJvdmUgYWZ0ZXInXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZVNpemVdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuc2l6ZSB8fCAnbWVkaXVtJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VPdmVybGFwXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLm92ZXJsYXBcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX29uQWN0aW9uQ2xpY2soJGV2ZW50LCBidG4sIHJvd0RhdGEpXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVHBsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogYnRuIH1cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW2NvbG9yXT1cImJ0bi5jb2xvciB8fCAncHJpbWFyeSdcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtYWN0aW9uLWJ1dHRvblwiIFtjbGFzc109XCJidG4uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0biB8IGNlbGxBY3Rpb25EaXNhYmxlOiByb3dEYXRhOiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLmhpZGVEZWxheVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnNob3dEZWxheVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uVG9vbHRpcCkucG9zaXRpb24gfHwgJ2JlbG93J1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uQXRPcmlnaW5dPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5wb3NpdGlvbkF0T3JpZ2luXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCIoYnRuIHwgY2VsbEFjdGlvblRvb2x0aXApLnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiKGJ0biB8IGNlbGxBY3Rpb25Ub29sdGlwKS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29udGVudCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURlc2NyaXB0aW9uXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRlc2NyaXB0aW9uIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlUG9zaXRpb25dPVwiKGJ0biB8IGNlbGxBY3Rpb25CYWRnZSkucG9zaXRpb24gfHwgJ2Fib3ZlIGFmdGVyJ1wiXG4gICAgICAgICAgICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLnNpemUgfHwgJ21lZGl1bSdcIlxuICAgICAgICAgICAgICAgICAgW21hdEJhZGdlT3ZlcmxhcF09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5vdmVybGFwXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZURpc2FibGVkXT1cIihidG4gfCBjZWxsQWN0aW9uQmFkZ2UpLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoYnRuIHwgY2VsbEFjdGlvbkJhZGdlKS5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRwbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGJ0biB9XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7YnRuLnRleHQgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICA8IS0tIFRhZyAtLT5cbiAgICAgIEBjYXNlICgndGFnJykge1xuICAgICAgICBAaWYgKGNvbERlZi50YWcgJiYgY29sRGVmLnRhZ1tfdmFsdWVdKSB7XG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Rib3g+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY29sb3I9XCJwcmltYXJ5XCIgW2NsYXNzXT1cIidiZy0nICsgY29sRGVmLnRhZ1tfdmFsdWVdLmNvbG9yXCI+XG4gICAgICAgICAgICAgIHt7Y29sRGVmLnRhZ1tfdmFsdWVdLnRleHR9fVxuICAgICAgICAgICAgPC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLWxpc3Rib3g+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7X3ZhbHVlfX1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgPCEtLSBMaW5rIC0tPlxuICAgICAgQGNhc2UgKCdsaW5rJykge1xuICAgICAgICA8YSBbaHJlZl09XCJfdmFsdWVcIiB0YXJnZXQ9XCJfYmxhbmtcIj57e192YWx1ZX19PC9hPlxuICAgICAgfVxuICAgICAgPCEtLSBJbWFnZSAtLT5cbiAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgIDxpbWcgY2xhc3M9XCJtdHgtZ3JpZC1pbWdcIiBbc3JjXT1cIl92YWx1ZVwiIGFsdD1cIlwiPlxuICAgICAgfVxuICAgICAgPCEtLSBCb29sZWFuIC0tPlxuICAgICAgQGNhc2UgKCdib29sZWFuJykge1xuICAgICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlKVwiPnt7X2dldFRleHQoX3ZhbHVlKX19PC9zcGFuPlxuICAgICAgfVxuICAgICAgPCEtLSBOdW1iZXIgLS0+XG4gICAgICBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgPHNwYW4gW3RpdGxlXT1cIl9nZXRUb29sdGlwKF92YWx1ZSB8IG51bWJlcjogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86IGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XG4gICAgICAgICAge3tfZ2V0VGV4dChfdmFsdWUgfCBudW1iZXI6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIDwhLS0gQ3VycmVuY3kgLS0+XG4gICAgICBAY2FzZSAoJ2N1cnJlbmN5Jykge1xuICAgICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlIHwgY3VycmVuY3k6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5jdXJyZW5jeUNvZGU6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaXNwbGF5OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSlcIj5cbiAgICAgICAgICB7e19nZXRUZXh0KF92YWx1ZSB8IGN1cnJlbmN5OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uY3VycmVuY3lDb2RlOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlzcGxheTogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86IGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgICAgPCEtLSBQZXJjZW50IC0tPlxuICAgICAgQGNhc2UgKCdwZXJjZW50Jykge1xuICAgICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlIHwgcGVyY2VudDogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpZ2l0c0luZm86IGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XG4gICAgICAgICAge3tfZ2V0VGV4dChfdmFsdWUgfCBwZXJjZW50OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbzogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSl9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgICA8IS0tIERhdGUgLS0+XG4gICAgICBAY2FzZSAoJ2RhdGUnKSB7XG4gICAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfdmFsdWUgfCBkYXRlOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZm9ybWF0OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8udGltZXpvbmU6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XG4gICAgICAgICAge3tfZ2V0VGV4dChfdmFsdWUgfCBkYXRlOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZm9ybWF0OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8udGltZXpvbmU6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgICAgPCEtLSBEZWZhdWx0IC0tPlxuICAgICAgQGRlZmF1bHQge1xuICAgICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX3ZhbHVlKVwiPnt7X2dldFRleHQoX3ZhbHVlKX19PC9zcGFuPlxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG48bmctdGVtcGxhdGUgI2ljb25UcGwgbGV0LWJ0bj5cbiAgQGlmIChidG4uaWNvbikge1xuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIj57e2J0bi5pY29ufX08L21hdC1pY29uPlxuICB9IEBlbHNlIGlmKGJ0bi5mb250SWNvbikge1xuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIiBbZm9udEljb25dPVwiYnRuLmZvbnRJY29uXCI+PC9tYXQtaWNvbj5cbiAgfSBAZWxzZSBpZihidG4uc3ZnSWNvbikge1xuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm10eC1ncmlkLWljb25cIiBbc3ZnSWNvbl09XCJidG4uc3ZnSWNvblwiPjwvbWF0LWljb24+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=