cmat 0.0.16 → 0.0.18

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 (498) hide show
  1. package/components/carousel/carousel.component.d.ts +136 -0
  2. package/components/carousel/carousel.interface.d.ts +38 -0
  3. package/components/carousel/index.d.ts +5 -0
  4. package/components/carousel/public-api.d.ts +2 -0
  5. package/components/custom-formly/public-api.d.ts +1 -0
  6. package/components/custom-formly/types/knob/knob.component.d.ts +36 -0
  7. package/components/custom-formly/types/table/table.component.d.ts +3 -8
  8. package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +4 -4
  9. package/components/image-viewer/image-viewer.component.d.ts +76 -0
  10. package/components/image-viewer/index.d.ts +5 -0
  11. package/components/image-viewer/public-api.d.ts +1 -0
  12. package/components/knob-input/index.d.ts +5 -0
  13. package/components/knob-input/knob-input.component.d.ts +95 -0
  14. package/components/knob-input/public-api.d.ts +1 -0
  15. package/components/material-datetimepicker/datetimepicker-input.d.ts +2 -2
  16. package/components/opt-input/index.d.ts +5 -0
  17. package/components/opt-input/models/config.d.ts +14 -0
  18. package/components/opt-input/otp-input.component.d.ts +70 -0
  19. package/components/opt-input/public-api.d.ts +1 -0
  20. package/components/opt-input/utils/keyboard-util.d.ts +9 -0
  21. package/components/opt-input/utils/object-util.d.ts +3 -0
  22. package/components/org-chart/designer/chart-designer.component.d.ts +17 -0
  23. package/components/org-chart/index.d.ts +5 -0
  24. package/components/org-chart/node/chart-node.component.d.ts +17 -0
  25. package/components/org-chart/node/node.type.d.ts +22 -0
  26. package/components/org-chart/org-chart.component.d.ts +12 -0
  27. package/components/org-chart/public-api.d.ts +2 -0
  28. package/components/popover/popover.interfaces.d.ts +1 -1
  29. package/components/select-search/select-search.component.d.ts +2 -1
  30. package/components/select-table/index.d.ts +5 -0
  31. package/components/select-table/public-api.d.ts +2 -0
  32. package/components/select-table/select-table.component.d.ts +96 -0
  33. package/components/select-table/select-table.type.d.ts +20 -0
  34. package/components/select-tree/select-tree.component.d.ts +11 -12
  35. package/components/speed-dial/index.d.ts +5 -0
  36. package/components/speed-dial/public-api.d.ts +2 -0
  37. package/components/speed-dial/speed-dial.component.d.ts +63 -0
  38. package/components/transfer-picker/interface.d.ts +0 -1
  39. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +8 -6
  40. package/components/treetable/index.d.ts +5 -0
  41. package/components/treetable/public-api.d.ts +2 -0
  42. package/components/treetable/treetable.component.d.ts +32 -0
  43. package/components/treetable/treetable.interface.d.ts +9 -0
  44. package/directives/animate-on-scroll/animate-on-scroll.directive.d.ts +4 -4
  45. package/directives/arrow-cursor/arrow-cursor.directive.d.ts +31 -0
  46. package/directives/arrow-cursor/index.d.ts +5 -0
  47. package/directives/arrow-cursor/public-api.d.ts +1 -0
  48. package/directives/data-exporter/constants.d.ts +26 -0
  49. package/directives/data-exporter/data-exporter.directive.d.ts +18 -0
  50. package/directives/data-exporter/index.d.ts +5 -0
  51. package/directives/data-exporter/mime.d.ts +5 -0
  52. package/directives/data-exporter/options.d.ts +21 -0
  53. package/directives/data-exporter/public-api.d.ts +2 -0
  54. package/directives/data-exporter/services/exporters/csv-exporter.service.d.ts +12 -0
  55. package/directives/data-exporter/services/exporters/exporter.d.ts +4 -0
  56. package/directives/data-exporter/services/exporters/file-exporter.d.ts +8 -0
  57. package/directives/data-exporter/services/exporters/json-exporter.service.d.ts +11 -0
  58. package/directives/data-exporter/services/exporters/txt-exporter.service.d.ts +12 -0
  59. package/directives/data-exporter/services/exporters/worksheet-exporter.d.ts +10 -0
  60. package/directives/data-exporter/services/exporters/xls-exporter.service.d.ts +14 -0
  61. package/directives/data-exporter/services/exporters/xlsx-exporter.service.d.ts +9 -0
  62. package/directives/data-exporter/services/file-util.d.ts +8 -0
  63. package/directives/data-exporter/services/service-locator.service.d.ts +11 -0
  64. package/directives/debounce/abstract-debounce.directive.d.ts +1 -1
  65. package/fesm2022/cmat-animations.mjs.map +1 -1
  66. package/fesm2022/cmat-components-adapter.mjs +9 -9
  67. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  68. package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
  69. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  70. package/fesm2022/cmat-components-card.mjs +4 -4
  71. package/fesm2022/cmat-components-card.mjs.map +1 -1
  72. package/fesm2022/cmat-components-carousel.mjs +711 -0
  73. package/fesm2022/cmat-components-carousel.mjs.map +1 -0
  74. package/fesm2022/cmat-components-cascade.mjs +12 -12
  75. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  76. package/fesm2022/cmat-components-chip-input.mjs +5 -5
  77. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  78. package/fesm2022/cmat-components-custom-formly.mjs +168 -155
  79. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  80. package/fesm2022/cmat-components-date-range.mjs +5 -5
  81. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  82. package/fesm2022/cmat-components-drawer.mjs +6 -6
  83. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  84. package/fesm2022/cmat-components-fullscreen.mjs +4 -4
  85. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  86. package/fesm2022/cmat-components-highlight.mjs +7 -7
  87. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  88. package/fesm2022/cmat-components-image-viewer.mjs +227 -0
  89. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -0
  90. package/fesm2022/cmat-components-json-editor.mjs +4 -4
  91. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  92. package/fesm2022/cmat-components-knob-input.mjs +404 -0
  93. package/fesm2022/cmat-components-knob-input.mjs.map +1 -0
  94. package/fesm2022/cmat-components-masonry.mjs +4 -4
  95. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  96. package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
  97. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  98. package/fesm2022/cmat-components-material-datetimepicker.mjs +53 -53
  99. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  100. package/fesm2022/cmat-components-navigation.mjs +51 -51
  101. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  102. package/fesm2022/cmat-components-opt-input.mjs +457 -0
  103. package/fesm2022/cmat-components-opt-input.mjs.map +1 -0
  104. package/fesm2022/cmat-components-org-chart.mjs +141 -0
  105. package/fesm2022/cmat-components-org-chart.mjs.map +1 -0
  106. package/fesm2022/cmat-components-pagination.mjs +13 -13
  107. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  108. package/fesm2022/cmat-components-password-strength.mjs +12 -12
  109. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  110. package/fesm2022/cmat-components-popover.mjs +10 -10
  111. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  112. package/fesm2022/cmat-components-progress-bar.mjs +4 -4
  113. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  114. package/fesm2022/cmat-components-rating.mjs +4 -4
  115. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  116. package/fesm2022/cmat-components-select-search.mjs +11 -11
  117. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  118. package/fesm2022/cmat-components-select-table.mjs +658 -0
  119. package/fesm2022/cmat-components-select-table.mjs.map +1 -0
  120. package/fesm2022/cmat-components-select-tree.mjs +75 -57
  121. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  122. package/fesm2022/cmat-components-speed-dial.mjs +312 -0
  123. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -0
  124. package/fesm2022/cmat-components-timeline.mjs +14 -14
  125. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  126. package/fesm2022/cmat-components-toast.mjs +11 -11
  127. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  128. package/fesm2022/cmat-components-transfer-picker.mjs +60 -41
  129. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  130. package/fesm2022/cmat-components-treetable.mjs +122 -0
  131. package/fesm2022/cmat-components-treetable.mjs.map +1 -0
  132. package/fesm2022/cmat-components-upload.mjs +11 -11
  133. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  134. package/fesm2022/cmat-directives-animate-on-scroll.mjs +21 -21
  135. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  136. package/fesm2022/cmat-directives-arrow-cursor.mjs +184 -0
  137. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -0
  138. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  139. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  140. package/fesm2022/cmat-directives-data-exporter.mjs +324 -0
  141. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -0
  142. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  143. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  144. package/fesm2022/cmat-directives-digit-only.mjs +8 -6
  145. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  146. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  147. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  148. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  149. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  150. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  151. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  152. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  153. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  154. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  155. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  156. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  157. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  158. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  159. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  160. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  161. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  162. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  163. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  164. package/fesm2022/cmat-services-alert.mjs +3 -3
  165. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  166. package/fesm2022/cmat-services-config.mjs +6 -6
  167. package/fesm2022/cmat-services-config.mjs.map +1 -1
  168. package/fesm2022/cmat-services-confirmation.mjs +7 -7
  169. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  170. package/fesm2022/cmat-services-data.mjs +5 -5
  171. package/fesm2022/cmat-services-data.mjs.map +1 -1
  172. package/fesm2022/cmat-services-export-as.mjs +211 -0
  173. package/fesm2022/cmat-services-export-as.mjs.map +1 -0
  174. package/fesm2022/cmat-services-loading.mjs +6 -6
  175. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  176. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  177. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  178. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  179. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  180. package/fesm2022/cmat-services-platform.mjs +3 -3
  181. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  182. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  183. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  184. package/fesm2022/cmat-services-title.mjs +3 -3
  185. package/fesm2022/cmat-services-title.mjs.map +1 -1
  186. package/fesm2022/cmat-services-translation.mjs +3 -3
  187. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  188. package/fesm2022/cmat-services-utils.mjs +35 -3
  189. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  190. package/fesm2022/cmat-validators.mjs.map +1 -1
  191. package/fesm2022/cmat-version.mjs.map +1 -1
  192. package/icons/arrow-cursor.svg +1 -1
  193. package/package.json +81 -147
  194. package/services/data/data.service.d.ts +1 -1
  195. package/services/export-as/export-as-config.model.d.ts +8 -0
  196. package/services/export-as/export-as.service.d.ts +43 -0
  197. package/services/export-as/index.d.ts +5 -0
  198. package/services/export-as/public-api.d.ts +2 -0
  199. package/services/utils/utils.service.d.ts +4 -0
  200. package/styles/overrides/angular-material.scss +95 -13
  201. package/esm2022/animations/cmat-animations.mjs +0 -5
  202. package/esm2022/animations/defaults.mjs +0 -12
  203. package/esm2022/animations/dropdown.mjs +0 -26
  204. package/esm2022/animations/expand-collapse.mjs +0 -17
  205. package/esm2022/animations/fade.mjs +0 -170
  206. package/esm2022/animations/public-api.mjs +0 -19
  207. package/esm2022/animations/shake.mjs +0 -59
  208. package/esm2022/animations/slide.mjs +0 -124
  209. package/esm2022/animations/transform.mjs +0 -16
  210. package/esm2022/animations/zoom.mjs +0 -38
  211. package/esm2022/cmat.mjs +0 -5
  212. package/esm2022/components/adapter/cmat-components-adapter.mjs +0 -5
  213. package/esm2022/components/adapter/datetime-adapter.mjs +0 -127
  214. package/esm2022/components/adapter/datetime-formats.mjs +0 -3
  215. package/esm2022/components/adapter/dayjs-date-adapter.mjs +0 -198
  216. package/esm2022/components/adapter/dayjs-date-formats.mjs +0 -12
  217. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +0 -100
  218. package/esm2022/components/adapter/dayjs-datetime-formats.mjs +0 -21
  219. package/esm2022/components/adapter/native-datetime-adapter.mjs +0 -130
  220. package/esm2022/components/adapter/native-datetime-formats.mjs +0 -15
  221. package/esm2022/components/adapter/public-api.mjs +0 -9
  222. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +0 -19
  223. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -94
  224. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +0 -333
  225. package/esm2022/components/breadcrumb/cmat-components-breadcrumb.mjs +0 -5
  226. package/esm2022/components/breadcrumb/public-api.mjs +0 -6
  227. package/esm2022/components/breadcrumb/types/breadcrumb.config.mjs +0 -2
  228. package/esm2022/components/breadcrumb/types/breadcrumb.mjs +0 -2
  229. package/esm2022/components/card/card.component.mjs +0 -49
  230. package/esm2022/components/card/card.types.mjs +0 -2
  231. package/esm2022/components/card/cmat-components-card.mjs +0 -5
  232. package/esm2022/components/card/public-api.mjs +0 -3
  233. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +0 -49
  234. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +0 -384
  235. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +0 -22
  236. package/esm2022/components/cascade/cmat-components-cascade.mjs +0 -5
  237. package/esm2022/components/cascade/options.interface.mjs +0 -2
  238. package/esm2022/components/cascade/public-api.mjs +0 -4
  239. package/esm2022/components/chip-input/chip-input.component.mjs +0 -251
  240. package/esm2022/components/chip-input/cmat-components-chip-input.mjs +0 -5
  241. package/esm2022/components/chip-input/public-api.mjs +0 -2
  242. package/esm2022/components/custom-formly/cmat-components-custom-formly.mjs +0 -5
  243. package/esm2022/components/custom-formly/extension/addons.extension.mjs +0 -13
  244. package/esm2022/components/custom-formly/public-api.mjs +0 -29
  245. package/esm2022/components/custom-formly/types/button/button.component.mjs +0 -81
  246. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +0 -71
  247. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +0 -161
  248. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +0 -55
  249. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +0 -15
  250. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +0 -25
  251. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +0 -51
  252. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +0 -88
  253. package/esm2022/components/custom-formly/types/number/number.component.mjs +0 -27
  254. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +0 -171
  255. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +0 -87
  256. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +0 -27
  257. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +0 -25
  258. package/esm2022/components/custom-formly/types/select/select.component.mjs +0 -167
  259. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +0 -66
  260. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +0 -28
  261. package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +0 -2
  262. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +0 -28
  263. package/esm2022/components/custom-formly/types/table/table.component.mjs +0 -127
  264. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +0 -16
  265. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +0 -146
  266. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +0 -25
  267. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +0 -58
  268. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +0 -92
  269. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +0 -14
  270. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +0 -14
  271. package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +0 -47
  272. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +0 -12
  273. package/esm2022/components/date-range/cmat-components-date-range.mjs +0 -5
  274. package/esm2022/components/date-range/date-range.component.mjs +0 -558
  275. package/esm2022/components/date-range/public-api.mjs +0 -2
  276. package/esm2022/components/drawer/cmat-components-drawer.mjs +0 -5
  277. package/esm2022/components/drawer/drawer.component.mjs +0 -301
  278. package/esm2022/components/drawer/drawer.service.mjs +0 -41
  279. package/esm2022/components/drawer/drawer.types.mjs +0 -2
  280. package/esm2022/components/drawer/public-api.mjs +0 -4
  281. package/esm2022/components/fullscreen/cmat-components-fullscreen.mjs +0 -5
  282. package/esm2022/components/fullscreen/fullscreen.component.mjs +0 -44
  283. package/esm2022/components/fullscreen/public-api.mjs +0 -2
  284. package/esm2022/components/highlight/cmat-components-highlight.mjs +0 -5
  285. package/esm2022/components/highlight/highlight.component.mjs +0 -80
  286. package/esm2022/components/highlight/highlight.service.mjs +0 -47
  287. package/esm2022/components/highlight/public-api.mjs +0 -3
  288. package/esm2022/components/json-editor/cmat-components-json-editor.mjs +0 -5
  289. package/esm2022/components/json-editor/json-editor.component.mjs +0 -176
  290. package/esm2022/components/json-editor/public-api.mjs +0 -2
  291. package/esm2022/components/masonry/cmat-components-masonry.mjs +0 -5
  292. package/esm2022/components/masonry/masonry.component.mjs +0 -54
  293. package/esm2022/components/masonry/public-api.mjs +0 -2
  294. package/esm2022/components/material-color-picker/base-color.mjs +0 -13
  295. package/esm2022/components/material-color-picker/cmat-components-material-color-picker.mjs +0 -5
  296. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +0 -147
  297. package/esm2022/components/material-color-picker/public-api.mjs +0 -3
  298. package/esm2022/components/material-color-picker/selected-color.mjs +0 -3
  299. package/esm2022/components/material-datetimepicker/calendar-body.mjs +0 -76
  300. package/esm2022/components/material-datetimepicker/calendar.mjs +0 -670
  301. package/esm2022/components/material-datetimepicker/clock.mjs +0 -290
  302. package/esm2022/components/material-datetimepicker/cmat-components-material-datetimepicker.mjs +0 -5
  303. package/esm2022/components/material-datetimepicker/datetimepicker-animations.mjs +0 -34
  304. package/esm2022/components/material-datetimepicker/datetimepicker-errors.mjs +0 -6
  305. package/esm2022/components/material-datetimepicker/datetimepicker-filtertype.mjs +0 -8
  306. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +0 -341
  307. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +0 -63
  308. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +0 -87
  309. package/esm2022/components/material-datetimepicker/datetimepicker-types.mjs +0 -2
  310. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +0 -531
  311. package/esm2022/components/material-datetimepicker/month-view.mjs +0 -141
  312. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +0 -197
  313. package/esm2022/components/material-datetimepicker/public-api.mjs +0 -11
  314. package/esm2022/components/material-datetimepicker/time.mjs +0 -455
  315. package/esm2022/components/material-datetimepicker/year-view.mjs +0 -124
  316. package/esm2022/components/navigation/cmat-components-navigation.mjs +0 -5
  317. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +0 -70
  318. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +0 -82
  319. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +0 -47
  320. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +0 -47
  321. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +0 -87
  322. package/esm2022/components/navigation/navigation.service.mjs +0 -140
  323. package/esm2022/components/navigation/navigation.types.mjs +0 -3
  324. package/esm2022/components/navigation/public-api.mjs +0 -5
  325. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +0 -162
  326. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +0 -60
  327. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +0 -277
  328. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +0 -56
  329. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +0 -78
  330. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +0 -56
  331. package/esm2022/components/navigation/vertical/vertical.component.mjs +0 -584
  332. package/esm2022/components/pagination/cmat-components-pagination.mjs +0 -5
  333. package/esm2022/components/pagination/pagination.component.mjs +0 -67
  334. package/esm2022/components/pagination/pagination.directive.mjs +0 -197
  335. package/esm2022/components/pagination/pagination.instance.mjs +0 -2
  336. package/esm2022/components/pagination/pagination.pipe.mjs +0 -100
  337. package/esm2022/components/pagination/pagination.service.mjs +0 -90
  338. package/esm2022/components/pagination/public-api.mjs +0 -6
  339. package/esm2022/components/password-strength/animations/index.mjs +0 -48
  340. package/esm2022/components/password-strength/cmat-components-password-strength.mjs +0 -5
  341. package/esm2022/components/password-strength/enum.mjs +0 -17
  342. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +0 -27
  343. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +0 -206
  344. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +0 -150
  345. package/esm2022/components/password-strength/mat-password-strength-validator.mjs +0 -36
  346. package/esm2022/components/password-strength/public-api.mjs +0 -4
  347. package/esm2022/components/password-strength/regexp.class.mjs +0 -8
  348. package/esm2022/components/popover/cmat-components-popover.mjs +0 -5
  349. package/esm2022/components/popover/popover-trigger.mjs +0 -442
  350. package/esm2022/components/popover/popover.component.mjs +0 -348
  351. package/esm2022/components/popover/popover.errors.mjs +0 -27
  352. package/esm2022/components/popover/popover.interfaces.mjs +0 -2
  353. package/esm2022/components/popover/popover.target.mjs +0 -18
  354. package/esm2022/components/popover/popover.type.mjs +0 -2
  355. package/esm2022/components/popover/public-api.mjs +0 -5
  356. package/esm2022/components/progress-bar/cmat-components-progress-bar.mjs +0 -5
  357. package/esm2022/components/progress-bar/progress-bar.component.mjs +0 -58
  358. package/esm2022/components/progress-bar/public-api.mjs +0 -2
  359. package/esm2022/components/rating/cmat-components-rating.mjs +0 -5
  360. package/esm2022/components/rating/public-api.mjs +0 -2
  361. package/esm2022/components/rating/rating.component.mjs +0 -202
  362. package/esm2022/components/select-search/cmat-components-select-search.mjs +0 -5
  363. package/esm2022/components/select-search/default-options.mjs +0 -16
  364. package/esm2022/components/select-search/public-api.mjs +0 -3
  365. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +0 -14
  366. package/esm2022/components/select-search/select-search-clear.directive.mjs +0 -14
  367. package/esm2022/components/select-search/select-search.component.mjs +0 -485
  368. package/esm2022/components/select-tree/cmat-components-select-tree.mjs +0 -5
  369. package/esm2022/components/select-tree/public-api.mjs +0 -4
  370. package/esm2022/components/select-tree/select-tree.component.mjs +0 -565
  371. package/esm2022/components/select-tree/select-tree.flatnode.mjs +0 -3
  372. package/esm2022/components/select-tree/select-tree.node.mjs +0 -3
  373. package/esm2022/components/timeline/cmat-components-timeline.mjs +0 -5
  374. package/esm2022/components/timeline/public-api.mjs +0 -3
  375. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +0 -70
  376. package/esm2022/components/timeline/timeline.component.mjs +0 -107
  377. package/esm2022/components/toast/cmat-components-toast.mjs +0 -5
  378. package/esm2022/components/toast/models/global-config.model.mjs +0 -2
  379. package/esm2022/components/toast/models/toast.model.mjs +0 -2
  380. package/esm2022/components/toast/models/type.model.mjs +0 -2
  381. package/esm2022/components/toast/public-api.mjs +0 -7
  382. package/esm2022/components/toast/toast-modal.component.mjs +0 -53
  383. package/esm2022/components/toast/toast.component.mjs +0 -30
  384. package/esm2022/components/toast/toast.service.mjs +0 -122
  385. package/esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs +0 -5
  386. package/esm2022/components/transfer-picker/filter/filter.component.mjs +0 -91
  387. package/esm2022/components/transfer-picker/interface.mjs +0 -17
  388. package/esm2022/components/transfer-picker/public-api.mjs +0 -8
  389. package/esm2022/components/transfer-picker/search/search.component.mjs +0 -38
  390. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +0 -201
  391. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +0 -32
  392. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +0 -84
  393. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +0 -137
  394. package/esm2022/components/upload/cmat-components-upload.mjs +0 -5
  395. package/esm2022/components/upload/files.type.mjs +0 -2
  396. package/esm2022/components/upload/files.util.service.mjs +0 -89
  397. package/esm2022/components/upload/public-api.mjs +0 -5
  398. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +0 -155
  399. package/esm2022/components/upload/upload.component.mjs +0 -118
  400. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +0 -126
  401. package/esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs +0 -5
  402. package/esm2022/directives/animate-on-scroll/public-api.mjs +0 -2
  403. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +0 -38
  404. package/esm2022/directives/autofocus/autofocus.directive.mjs +0 -20
  405. package/esm2022/directives/autofocus/cmat-directives-autofocus.mjs +0 -5
  406. package/esm2022/directives/autofocus/public-api.mjs +0 -2
  407. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +0 -34
  408. package/esm2022/directives/debounce/cmat-directives-debounce.mjs +0 -5
  409. package/esm2022/directives/debounce/debounce-click.directive.mjs +0 -25
  410. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +0 -25
  411. package/esm2022/directives/debounce/public-api.mjs +0 -3
  412. package/esm2022/directives/digit-only/cmat-directives-digit-only.mjs +0 -5
  413. package/esm2022/directives/digit-only/digit-only.directive.mjs +0 -298
  414. package/esm2022/directives/digit-only/mask.directive.mjs +0 -84
  415. package/esm2022/directives/digit-only/public-api.mjs +0 -3
  416. package/esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs +0 -5
  417. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +0 -54
  418. package/esm2022/directives/equal-validator/public-api.mjs +0 -2
  419. package/esm2022/lib/mock-api/cmat-lib-mock-api.mjs +0 -5
  420. package/esm2022/lib/mock-api/mock-api.constants.mjs +0 -3
  421. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +0 -73
  422. package/esm2022/lib/mock-api/mock-api.request-handler.mjs +0 -48
  423. package/esm2022/lib/mock-api/mock-api.service.mjs +0 -93
  424. package/esm2022/lib/mock-api/mock-api.types.mjs +0 -2
  425. package/esm2022/lib/mock-api/mock-api.utils.mjs +0 -16
  426. package/esm2022/lib/mock-api/public-api.mjs +0 -6
  427. package/esm2022/pipes/bytes/bytes.pipe.mjs +0 -25
  428. package/esm2022/pipes/bytes/cmat-pipes-bytes.mjs +0 -5
  429. package/esm2022/pipes/bytes/public-api.mjs +0 -2
  430. package/esm2022/pipes/date-format/cmat-pipes-date-format.mjs +0 -5
  431. package/esm2022/pipes/date-format/date-format.pipe.mjs +0 -20
  432. package/esm2022/pipes/date-format/public-api.mjs +0 -2
  433. package/esm2022/pipes/find-by-key/cmat-pipes-find-by-key.mjs +0 -5
  434. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +0 -23
  435. package/esm2022/pipes/find-by-key/public-api.mjs +0 -2
  436. package/esm2022/pipes/group-by/cmat-pipes-group-by.mjs +0 -5
  437. package/esm2022/pipes/group-by/group-by.pipe.mjs +0 -29
  438. package/esm2022/pipes/group-by/public-api.mjs +0 -2
  439. package/esm2022/pipes/keys/cmat-pipes-keys.mjs +0 -5
  440. package/esm2022/pipes/keys/keys.pipe.mjs +0 -26
  441. package/esm2022/pipes/keys/public-api.mjs +0 -2
  442. package/esm2022/pipes/secure/cmat-pipes-secure.mjs +0 -5
  443. package/esm2022/pipes/secure/public-api.mjs +0 -2
  444. package/esm2022/pipes/secure/secure-pipe.mjs +0 -46
  445. package/esm2022/pipes/uppercase/cmat-pipes-uppercase.mjs +0 -5
  446. package/esm2022/pipes/uppercase/public-api.mjs +0 -2
  447. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +0 -17
  448. package/esm2022/public-api.mjs +0 -2
  449. package/esm2022/services/alert/alert.dialog.mjs +0 -12
  450. package/esm2022/services/alert/alert.message.mjs +0 -9
  451. package/esm2022/services/alert/alert.service.mjs +0 -166
  452. package/esm2022/services/alert/cmat-services-alert.mjs +0 -5
  453. package/esm2022/services/alert/enum.mjs +0 -15
  454. package/esm2022/services/alert/public-api.mjs +0 -5
  455. package/esm2022/services/config/cmat-services-config.mjs +0 -5
  456. package/esm2022/services/config/config.constants.mjs +0 -3
  457. package/esm2022/services/config/config.service.mjs +0 -35
  458. package/esm2022/services/config/public-api.mjs +0 -4
  459. package/esm2022/services/config/urlStateConfig.service.mjs +0 -30
  460. package/esm2022/services/confirmation/cmat-services-confirmation.mjs +0 -5
  461. package/esm2022/services/confirmation/confirmation.service.mjs +0 -51
  462. package/esm2022/services/confirmation/confirmation.types.mjs +0 -2
  463. package/esm2022/services/confirmation/dialog/dialog.component.mjs +0 -25
  464. package/esm2022/services/confirmation/public-api.mjs +0 -3
  465. package/esm2022/services/data/cmat-services-data.mjs +0 -5
  466. package/esm2022/services/data/data.service.mjs +0 -169
  467. package/esm2022/services/data/public-api.mjs +0 -2
  468. package/esm2022/services/loading/cmat-services-loading.mjs +0 -5
  469. package/esm2022/services/loading/loading.interceptor.mjs +0 -29
  470. package/esm2022/services/loading/loading.service.mjs +0 -72
  471. package/esm2022/services/loading/public-api.mjs +0 -3
  472. package/esm2022/services/local-storage/cmat-services-local-storage.mjs +0 -5
  473. package/esm2022/services/local-storage/local-storage.service.mjs +0 -22
  474. package/esm2022/services/local-storage/public-api.mjs +0 -2
  475. package/esm2022/services/media-watcher/cmat-services-media-watcher.mjs +0 -5
  476. package/esm2022/services/media-watcher/media-watcher.service.mjs +0 -55
  477. package/esm2022/services/media-watcher/public-api.mjs +0 -2
  478. package/esm2022/services/platform/cmat-services-platform.mjs +0 -5
  479. package/esm2022/services/platform/platform.service.mjs +0 -46
  480. package/esm2022/services/platform/public-api.mjs +0 -2
  481. package/esm2022/services/splash-screen/cmat-services-splash-screen.mjs +0 -5
  482. package/esm2022/services/splash-screen/public-api.mjs +0 -2
  483. package/esm2022/services/splash-screen/splash-screen.service.mjs +0 -42
  484. package/esm2022/services/title/cmat-services-title.mjs +0 -5
  485. package/esm2022/services/title/public-api.mjs +0 -2
  486. package/esm2022/services/title/title.service.mjs +0 -46
  487. package/esm2022/services/translation/cmat-services-translation.mjs +0 -5
  488. package/esm2022/services/translation/public-api.mjs +0 -2
  489. package/esm2022/services/translation/translation.service.mjs +0 -62
  490. package/esm2022/services/utils/cmat-services-utils.mjs +0 -5
  491. package/esm2022/services/utils/public-api.mjs +0 -2
  492. package/esm2022/services/utils/utils.service.mjs +0 -435
  493. package/esm2022/validators/cmat-validators.mjs +0 -5
  494. package/esm2022/validators/public-api.mjs +0 -2
  495. package/esm2022/validators/validators.mjs +0 -33
  496. package/esm2022/version/cmat-version.mjs +0 -5
  497. package/esm2022/version/public-api.mjs +0 -2
  498. package/esm2022/version/version.mjs +0 -11
@@ -1,127 +0,0 @@
1
- import { CdkDrag } from '@angular/cdk/drag-drop';
2
- import { NgTemplateOutlet } from '@angular/common';
3
- import { Component, ChangeDetectionStrategy, ViewChild, ViewContainerRef, inject } from '@angular/core';
4
- import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import { MatButtonModule } from '@angular/material/button';
6
- import { MatDialog, MatDialogModule } from '@angular/material/dialog';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { MatTableModule } from '@angular/material/table';
9
- import { MatTooltipModule } from '@angular/material/tooltip';
10
- import { FieldArrayType, FormlyModule } from '@ngx-formly/core';
11
- import { Subject, takeUntil } from 'rxjs';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "cmat/services/media-watcher";
14
- import * as i2 from "@angular/material/button";
15
- import * as i3 from "@angular/material/icon";
16
- import * as i4 from "@angular/material/table";
17
- import * as i5 from "@angular/forms";
18
- import * as i6 from "@ngx-formly/core";
19
- import * as i7 from "@angular/material/dialog";
20
- import * as i8 from "@angular/material/tooltip";
21
- export class CmatTableTypeComponent extends FieldArrayType {
22
- constructor(_cmatMediaWatcherService, _changeDetectorRef) {
23
- super();
24
- this._cmatMediaWatcherService = _cmatMediaWatcherService;
25
- this._changeDetectorRef = _changeDetectorRef;
26
- this.inlineform = new FormGroup({});
27
- this.currentMode = {};
28
- this.displayedColumns = [];
29
- this.dialogType = '';
30
- this.defaultOptions = {
31
- props: {
32
- addText: '新增'
33
- },
34
- };
35
- this._dialog = inject(MatDialog);
36
- this._viewContainerRef = inject(ViewContainerRef);
37
- this._unsubscribeAll = new Subject();
38
- }
39
- get fieldArray() {
40
- return this.field.fieldArray.fieldGroup;
41
- }
42
- get key() {
43
- return this.field.fieldArray.fieldGroup[0].id;
44
- }
45
- ngOnInit() {
46
- this.columns = this.field.fieldArray.fieldGroup[0].fieldGroup.
47
- filter(field => field.props?.showColumn).map(field => ({
48
- key: field.key,
49
- label: field.props?.label ?? '',
50
- }));
51
- if (this.props.disabled) {
52
- this.displayedColumns = [...this.columns.map(column => column.key)];
53
- }
54
- else {
55
- this.displayedColumns = [...this.columns.map(column => column.key), '_actions_'];
56
- }
57
- this._cmatMediaWatcherService.onMediaChange$
58
- .pipe(takeUntil(this._unsubscribeAll))
59
- .subscribe(({ matchingAliases }) => {
60
- this.isScreenSmall = !matchingAliases.includes('md');
61
- this._changeDetectorRef.markForCheck();
62
- });
63
- }
64
- ngOnDestroy() {
65
- this._unsubscribeAll.next(void 0);
66
- this._unsubscribeAll.complete();
67
- }
68
- addRow() {
69
- this._dialogRef = this._dialog
70
- .open(this.dialogRef, {
71
- panelClass: ['cmat-table-dialog-container'],
72
- viewContainerRef: this._viewContainerRef
73
- });
74
- this._dialogRef.afterClosed()
75
- .subscribe(() => { this.dialogType = ''; });
76
- this.dialogType = 'add';
77
- this.currentMode = {};
78
- this.inlineform.reset();
79
- }
80
- editRow(item, index) {
81
- this.currentIndex = index;
82
- this._dialogRef = this._dialog
83
- .open(this.dialogRef, {
84
- panelClass: ['cmat-table-dialog-container'],
85
- viewContainerRef: this._viewContainerRef
86
- });
87
- this._dialogRef.afterClosed()
88
- .subscribe(() => { this.dialogType = ''; });
89
- this.dialogType = 'edit';
90
- this.currentMode = {
91
- [this.key]: item
92
- };
93
- }
94
- deleteRow(id) {
95
- this.remove(id);
96
- this.table.renderRows();
97
- }
98
- confirm() {
99
- if (this.inlineform.invalid) {
100
- this.inlineform.markAllAsTouched();
101
- return;
102
- }
103
- if (this.dialogType == 'add' && this.currentMode[this.key]) {
104
- this.add(this.model?.length ?? 0, this.currentMode[this.key]);
105
- }
106
- else if (this.dialogType == 'edit' && this.currentMode[this.key]) {
107
- this.model[this.currentIndex] = this.currentMode[this.key];
108
- }
109
- this.table.renderRows();
110
- this._changeDetectorRef.markForCheck();
111
- this._dialogRef.close();
112
- }
113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTableTypeComponent, deps: [{ token: i1.CmatMediaWatcherService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatTableTypeComponent, isStandalone: true, selector: "cmat-table-type", viewQueries: [{ propertyName: "dialogRef", first: true, predicate: ["dialogRef"], descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between p-2 border-b mb-1\">\r\n <div>\r\n @if(props.label){\r\n <legend class=\"text-lg\">\r\n {{ props.label }}\r\n @if(props.required){\r\n <span>*</span>\r\n }\r\n </legend>\r\n }\r\n @if(props.description){\r\n <p>{{ props.description }}</p>\r\n }\r\n </div>\r\n\r\n @if(!props.disabled){\r\n <div class=\"flex flex-shrink-0 items-center mt-6 sm:mt-0 sm:ml-4 print:hidden\">\r\n <button class=\"ml-4\" mat-flat-button [color]=\"'primary'\" (click)=\"addRow()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:plus'\"></mat-icon>\r\n <span class=\"ml-2\">{{props.addText}}</span>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n\r\n@if(isScreenSmall){\r\n<div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4 m-2\">\r\n @for (item of model||[]; track $index;let i=$index) {\r\n <div class=\"flex flex-col max-h-64 shadow rounded-2xl bg-card overflow-hidden\">\r\n <div\r\n class=\"flex flex-col p-6 space-y-2 overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <div class=\"flex items-center justify-between\">\r\n <div\r\n class=\"py-0.5 px-3 rounded-full text-sm font-semibold text-blue-800 bg-blue-100 dark:text-blue-50 dark:bg-blue-500\">\r\n {{(i)}}\r\n </div>\r\n </div>\r\n\r\n @for (column of columns; track $index) {\r\n <div class=\"flex items-center leading-5 text-md text-secondary\">\r\n {{ column.label }}:\r\n <div class=\"ml-1.5\">{{item[column.key]}}</div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"flex flex-col w-full mt-auto\">\r\n <div class=\"px-6 py-2 text-right bg-gray-50 dark:bg-transparent space-x-1\">\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8\" mat-icon-button (click)=\"editRow(item,i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"primary\" [svgIcon]=\"'heroicons_solid:pencil-square'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8\" mat-icon-button (click)=\"deleteRow(i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"warn\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n}@else{\r\n<table #table mat-table class=\"mat-elevation-z w-full\" [dataSource]=\"model||[]\" [tabIndex]=\"props.tabindex\">\r\n @for (column of columns; track $index) {\r\n <ng-container [matColumnDef]=\"column.key\">\r\n <th *matHeaderCellDef mat-header-cell> {{ column.label }} </th>\r\n <td *matCellDef=\"let element; let i = index\" mat-cell>{{element[column.key]}}</td>\r\n </ng-container>\r\n }\r\n\r\n <ng-container matColumnDef=\"_actions_\">\r\n <th *matHeaderCellDef mat-header-cell class=\"print:hidden\">\u64CD\u4F5C</th>\r\n <td *matCellDef=\"let element; let i = index\" mat-cell class=\"print:hidden\">\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8 lg:opacity-0 lg:group-hover:opacity-100\"\r\n mat-icon-button [matTooltip]=\"'\u7F16\u8F91'\" (click)=\"editRow(element,i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"primary\" [svgIcon]=\"'heroicons_solid:pencil-square'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8 lg:opacity-0 lg:group-hover:opacity-100\"\r\n mat-icon-button [matTooltip]=\"'\u79FB\u9664'\" (click)=\"deleteRow(i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"warn\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: displayedColumns;\" mat-row class=\"group\"></tr>\r\n</table>\r\n}\r\n\r\n<ng-template #inlineTable>\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom w-full\">\r\n <form [formGroup]=\"inlineform\">\r\n <formly-form [fields]=\"fieldArray\" [model]=\"currentMode\" [form]=\"inlineform\"></formly-form>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dialogRef>\r\n <div mat-dialog-title cdkDrag class=\"-mt-6\" cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle>\r\n <h2 class=\"pointer-events-none text-xl\">{{ props.label +'\u8BE6\u7EC6\u9875'}}</h2>\r\n </div>\r\n\r\n <mat-dialog-content>\r\n <ng-container *ngTemplateOutlet=\"inlineTable\"></ng-container>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <div class=\"w-full flex justify-end items-center\">\r\n <button mat-raised-button color=\"primary\" cdkFocusInitial (click)=\"confirm()\">\r\n \u786E\u5B9A\r\n </button>\r\n <button mat-button mat-dialog-close>\r\n \u53D6\u6D88\r\n </button>\r\n </div>\r\n </mat-dialog-actions>\r\n</ng-template>", styles: [":host{width:100%}.mat-column-_actions_{width:8rem;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i6.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i7.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i7.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i7.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
- }
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTableTypeComponent, decorators: [{
117
- type: Component,
118
- args: [{ selector: 'cmat-table-type', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatButtonModule, MatIconModule, MatTableModule, FormsModule, FormlyModule, CdkDrag,
119
- ReactiveFormsModule, MatDialogModule, NgTemplateOutlet, MatTooltipModule], template: "<div class=\"relative flex flex-col sm:flex-row flex-0 sm:items-center sm:justify-between p-2 border-b mb-1\">\r\n <div>\r\n @if(props.label){\r\n <legend class=\"text-lg\">\r\n {{ props.label }}\r\n @if(props.required){\r\n <span>*</span>\r\n }\r\n </legend>\r\n }\r\n @if(props.description){\r\n <p>{{ props.description }}</p>\r\n }\r\n </div>\r\n\r\n @if(!props.disabled){\r\n <div class=\"flex flex-shrink-0 items-center mt-6 sm:mt-0 sm:ml-4 print:hidden\">\r\n <button class=\"ml-4\" mat-flat-button [color]=\"'primary'\" (click)=\"addRow()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:plus'\"></mat-icon>\r\n <span class=\"ml-2\">{{props.addText}}</span>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n\r\n@if(isScreenSmall){\r\n<div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4 m-2\">\r\n @for (item of model||[]; track $index;let i=$index) {\r\n <div class=\"flex flex-col max-h-64 shadow rounded-2xl bg-card overflow-hidden\">\r\n <div\r\n class=\"flex flex-col p-6 space-y-2 overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <div class=\"flex items-center justify-between\">\r\n <div\r\n class=\"py-0.5 px-3 rounded-full text-sm font-semibold text-blue-800 bg-blue-100 dark:text-blue-50 dark:bg-blue-500\">\r\n {{(i)}}\r\n </div>\r\n </div>\r\n\r\n @for (column of columns; track $index) {\r\n <div class=\"flex items-center leading-5 text-md text-secondary\">\r\n {{ column.label }}:\r\n <div class=\"ml-1.5\">{{item[column.key]}}</div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"flex flex-col w-full mt-auto\">\r\n <div class=\"px-6 py-2 text-right bg-gray-50 dark:bg-transparent space-x-1\">\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8\" mat-icon-button (click)=\"editRow(item,i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"primary\" [svgIcon]=\"'heroicons_solid:pencil-square'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8\" mat-icon-button (click)=\"deleteRow(i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"warn\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n}@else{\r\n<table #table mat-table class=\"mat-elevation-z w-full\" [dataSource]=\"model||[]\" [tabIndex]=\"props.tabindex\">\r\n @for (column of columns; track $index) {\r\n <ng-container [matColumnDef]=\"column.key\">\r\n <th *matHeaderCellDef mat-header-cell> {{ column.label }} </th>\r\n <td *matCellDef=\"let element; let i = index\" mat-cell>{{element[column.key]}}</td>\r\n </ng-container>\r\n }\r\n\r\n <ng-container matColumnDef=\"_actions_\">\r\n <th *matHeaderCellDef mat-header-cell class=\"print:hidden\">\u64CD\u4F5C</th>\r\n <td *matCellDef=\"let element; let i = index\" mat-cell class=\"print:hidden\">\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8 lg:opacity-0 lg:group-hover:opacity-100\"\r\n mat-icon-button [matTooltip]=\"'\u7F16\u8F91'\" (click)=\"editRow(element,i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"primary\" [svgIcon]=\"'heroicons_solid:pencil-square'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <button type=\"button\" class=\"w-8 min-h-8 h-8 max-w-8 lg:opacity-0 lg:group-hover:opacity-100\"\r\n mat-icon-button [matTooltip]=\"'\u79FB\u9664'\" (click)=\"deleteRow(i)\">\r\n <mat-icon class=\"icon-size-5\" color=\"warn\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: displayedColumns;\" mat-row class=\"group\"></tr>\r\n</table>\r\n}\r\n\r\n<ng-template #inlineTable>\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom w-full\">\r\n <form [formGroup]=\"inlineform\">\r\n <formly-form [fields]=\"fieldArray\" [model]=\"currentMode\" [form]=\"inlineform\"></formly-form>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dialogRef>\r\n <div mat-dialog-title cdkDrag class=\"-mt-6\" cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle>\r\n <h2 class=\"pointer-events-none text-xl\">{{ props.label +'\u8BE6\u7EC6\u9875'}}</h2>\r\n </div>\r\n\r\n <mat-dialog-content>\r\n <ng-container *ngTemplateOutlet=\"inlineTable\"></ng-container>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <div class=\"w-full flex justify-end items-center\">\r\n <button mat-raised-button color=\"primary\" cdkFocusInitial (click)=\"confirm()\">\r\n \u786E\u5B9A\r\n </button>\r\n <button mat-button mat-dialog-close>\r\n \u53D6\u6D88\r\n </button>\r\n </div>\r\n </mat-dialog-actions>\r\n</ng-template>", styles: [":host{width:100%}.mat-column-_actions_{width:8rem;text-align:center}\n"] }]
120
- }], ctorParameters: () => [{ type: i1.CmatMediaWatcherService }, { type: i0.ChangeDetectorRef }], propDecorators: { dialogRef: [{
121
- type: ViewChild,
122
- args: ['dialogRef']
123
- }], table: [{
124
- type: ViewChild,
125
- args: ['table']
126
- }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2N1c3RvbS1mb3JtbHkvdHlwZXMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2N1c3RvbS1mb3JtbHkvdHlwZXMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQXVCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBc0MsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFrQjFDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUEyQztJQXlC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eEYsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDOzRIQUdyRCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0YsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBpbmplY3QsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0VGFibGUsIE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IEZpZWxkQXJyYXlUeXBlLCBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENtYXRNZWRpYVdhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnY21hdC9zZXJ2aWNlcy9tZWRpYS13YXRjaGVyJztcclxuaW1wb3J0IHsgQ3VzdG9tRm9ybUZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi93cmFwcGVycy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBUYWJsZVByb3BzIGV4dGVuZHMgQ3VzdG9tRm9ybUZpZWxkUHJvcHMge1xyXG4gICAgYWRkVGV4dDogc3RyaW5nO1xyXG4gICAgc2hvd0NvbHVtbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LXRhYmxlLXR5cGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICd0YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VGFibGVNb2R1bGUsIEZvcm1zTW9kdWxlLCBGb3JtbHlNb2R1bGUsIENka0RyYWcsXHJcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBNYXRUb29sdGlwTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFRhYmxlVHlwZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkQXJyYXlUeXBlPEZpZWxkVHlwZUNvbmZpZzxUYWJsZVByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dSZWYnKSBkaWFsb2dSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xyXG5cclxuICAgIGlubGluZWZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIGN1cnJlbnRNb2RlOiBhbnkgPSB7fTtcclxuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAgIGNvbHVtbnM6IHsga2V5OiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfVtdO1xyXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBkaWFsb2dUeXBlOiAnYWRkJyB8ICdlZGl0JyB8ICcnID0gJyc7XHJcblxyXG4gICAgb3ZlcnJpZGUgZGVmYXVsdE9wdGlvbnMgPSB7XHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgYWRkVGV4dDogJ+aWsOWinidcclxuICAgICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICBpc1NjcmVlblNtYWxsOiBib29sZWFuO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT47XHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jbWF0TWVkaWFXYXRjaGVyU2VydmljZTogQ21hdE1lZGlhV2F0Y2hlclNlcnZpY2UsIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgICBnZXQgZmllbGRBcnJheSgpOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuZmllbGQuZmllbGRBcnJheSBhcyBGb3JtbHlGaWVsZENvbmZpZykuZmllbGRHcm91cCE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5maWVsZC5maWVsZEFycmF5IGFzIEZvcm1seUZpZWxkQ29uZmlnKS5maWVsZEdyb3VwIVswXS5pZCE7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gKHRoaXMuZmllbGQuZmllbGRBcnJheSBhcyBGb3JtbHlGaWVsZENvbmZpZykuZmllbGRHcm91cCFbMF0uZmllbGRHcm91cCEuXHJcbiAgICAgICAgICAgIGZpbHRlcihmaWVsZCA9PiBmaWVsZC5wcm9wcz8uc2hvd0NvbHVtbikubWFwKGZpZWxkID0+ICh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGZpZWxkLmtleSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogZmllbGQucHJvcHM/LmxhYmVsID8/ICcnLFxyXG4gICAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFsuLi50aGlzLmNvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4ua2V5KV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWy4uLnRoaXMuY29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi5rZXkpLCAnX2FjdGlvbnNfJ107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9jbWF0TWVkaWFXYXRjaGVyU2VydmljZS5vbk1lZGlhQ2hhbmdlJFxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fdW5zdWJzY3JpYmVBbGwpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IG1hdGNoaW5nQWxpYXNlcyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2NyZWVuU21hbGwgPSAhbWF0Y2hpbmdBbGlhc2VzLmluY2x1ZGVzKCdtZCcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQodm9pZCAwKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFJvdygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dcclxuICAgICAgICAgICAgLm9wZW4odGhpcy5kaWFsb2dSZWYsIHtcclxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnY21hdC10YWJsZS1kaWFsb2ctY29udGFpbmVyJ10sXHJcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLl92aWV3Q29udGFpbmVyUmVmXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLmRpYWxvZ1R5cGUgPSAnJzsgfSk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1R5cGUgPSAnYWRkJztcclxuICAgICAgICB0aGlzLmN1cnJlbnRNb2RlID0ge307XHJcbiAgICAgICAgdGhpcy5pbmxpbmVmb3JtLnJlc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZWRpdFJvdyhpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xyXG5cclxuICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dcclxuICAgICAgICAgICAgLm9wZW4odGhpcy5kaWFsb2dSZWYsIHtcclxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnY21hdC10YWJsZS1kaWFsb2ctY29udGFpbmVyJ10sXHJcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLl92aWV3Q29udGFpbmVyUmVmXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLmRpYWxvZ1R5cGUgPSAnJzsgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlhbG9nVHlwZSA9ICdlZGl0JztcclxuICAgICAgICB0aGlzLmN1cnJlbnRNb2RlID0ge1xyXG4gICAgICAgICAgICBbdGhpcy5rZXldOiBpdGVtXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVSb3coaWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlKGlkKTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJsZS5yZW5kZXJSb3dzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pbmxpbmVmb3JtLmludmFsaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5pbmxpbmVmb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nVHlwZSA9PSAnYWRkJyAmJiB0aGlzLmN1cnJlbnRNb2RlW3RoaXMua2V5XSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZCh0aGlzLm1vZGVsPy5sZW5ndGggPz8gMCwgdGhpcy5jdXJyZW50TW9kZVt0aGlzLmtleV0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kaWFsb2dUeXBlID09ICdlZGl0JyAmJiB0aGlzLmN1cnJlbnRNb2RlW3RoaXMua2V5XSkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsIVt0aGlzLmN1cnJlbnRJbmRleF0gPSB0aGlzLmN1cnJlbnRNb2RlW3RoaXMua2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50YWJsZS5yZW5kZXJSb3dzKCk7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfVxyXG59IiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC0wIHNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW4gcC0yIGJvcmRlci1iIG1iLTFcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgQGlmKHByb3BzLmxhYmVsKXtcclxuICAgICAgICA8bGVnZW5kIGNsYXNzPVwidGV4dC1sZ1wiPlxyXG4gICAgICAgICAgICB7eyBwcm9wcy5sYWJlbCB9fVxyXG4gICAgICAgICAgICBAaWYocHJvcHMucmVxdWlyZWQpe1xyXG4gICAgICAgICAgICA8c3Bhbj4qPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9sZWdlbmQ+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZihwcm9wcy5kZXNjcmlwdGlvbil7XHJcbiAgICAgICAgPHA+e3sgcHJvcHMuZGVzY3JpcHRpb24gfX08L3A+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmKCFwcm9wcy5kaXNhYmxlZCl7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXNocmluay0wIGl0ZW1zLWNlbnRlciBtdC02IHNtOm10LTAgc206bWwtNCBwcmludDpoaWRkZW5cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWwtNFwiIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiJ3ByaW1hcnknXCIgKGNsaWNrKT1cImFkZFJvdygpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX291dGxpbmU6cGx1cydcIj48L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj57e3Byb3BzLmFkZFRleHR9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxuXHJcbkBpZihpc1NjcmVlblNtYWxsKXtcclxuPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgZ2FwLTQgbS0yXCI+XHJcbiAgICBAZm9yIChpdGVtIG9mIG1vZGVsfHxbXTsgdHJhY2sgJGluZGV4O2xldCBpPSRpbmRleCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWF4LWgtNjQgc2hhZG93IHJvdW5kZWQtMnhsIGJnLWNhcmQgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgcC02IHNwYWNlLXktMiBvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHktMC41IHB4LTMgcm91bmRlZC1mdWxsIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWJsdWUtODAwIGJnLWJsdWUtMTAwIGRhcms6dGV4dC1ibHVlLTUwIGRhcms6YmctYmx1ZS01MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyhpKX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBsZWFkaW5nLTUgdGV4dC1tZCB0ZXh0LXNlY29uZGFyeVwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sdW1uLmxhYmVsIH19OlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTEuNVwiPnt7aXRlbVtjb2x1bW4ua2V5XX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgdy1mdWxsIG10LWF1dG9cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTYgcHktMiB0ZXh0LXJpZ2h0IGJnLWdyYXktNTAgZGFyazpiZy10cmFuc3BhcmVudCBzcGFjZS14LTFcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy04IG1pbi1oLTggaC04IG1heC13LThcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImVkaXRSb3coaXRlbSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS01XCIgY29sb3I9XCJwcmltYXJ5XCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpwZW5jaWwtc3F1YXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInctOCBtaW4taC04IGgtOCBtYXgtdy04XCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkZWxldGVSb3coaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNpemUtNVwiIGNvbG9yPVwid2FyblwiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6dHJhc2gnXCI+PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj5cclxufUBlbHNle1xyXG48dGFibGUgI3RhYmxlIG1hdC10YWJsZSBjbGFzcz1cIm1hdC1lbGV2YXRpb24teiB3LWZ1bGxcIiBbZGF0YVNvdXJjZV09XCJtb2RlbHx8W11cIiBbdGFiSW5kZXhdPVwicHJvcHMudGFiaW5kZXhcIj5cclxuICAgIEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4ua2V5XCI+XHJcbiAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD4ge3sgY29sdW1uLmxhYmVsIH19IDwvdGg+XHJcbiAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gaW5kZXhcIiBtYXQtY2VsbD57e2VsZW1lbnRbY29sdW1uLmtleV19fTwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIH1cclxuXHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIl9hY3Rpb25zX1wiPlxyXG4gICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJwcmludDpoaWRkZW5cIj7mk43kvZw8L3RoPlxyXG4gICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgaSA9IGluZGV4XCIgbWF0LWNlbGwgY2xhc3M9XCJwcmludDpoaWRkZW5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTggbWluLWgtOCBoLTggbWF4LXctOCBsZzpvcGFjaXR5LTAgbGc6Z3JvdXAtaG92ZXI6b3BhY2l0eS0xMDBcIlxyXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIFttYXRUb29sdGlwXT1cIifnvJbovpEnXCIgKGNsaWNrKT1cImVkaXRSb3coZWxlbWVudCxpKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zaXplLTVcIiBjb2xvcj1cInByaW1hcnlcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOnBlbmNpbC1zcXVhcmUnXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy04IG1pbi1oLTggaC04IG1heC13LTggbGc6b3BhY2l0eS0wIGxnOmdyb3VwLWhvdmVyOm9wYWNpdHktMTAwXCJcclxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiBbbWF0VG9vbHRpcF09XCIn56e76ZmkJ1wiIChjbGljayk9XCJkZWxldGVSb3coaSlcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS01XCIgY29sb3I9XCJ3YXJuXCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp0cmFzaCdcIj48L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPHRyICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LWhlYWRlci1yb3c+PC90cj5cclxuICAgIDx0ciAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIiBtYXQtcm93IGNsYXNzPVwiZ3JvdXBcIj48L3RyPlxyXG48L3RhYmxlPlxyXG59XHJcblxyXG48bmctdGVtcGxhdGUgI2lubGluZVRhYmxlPlxyXG4gICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LXktYXV0byBsZzpvdmVyZmxvdy15LWhpZGRlbiBsZzpob3ZlcjpvdmVyZmxvdy15LWF1dG8gc2Nyb2xsYmFyLWN1c3RvbSB3LWZ1bGxcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImlubGluZWZvcm1cIj5cclxuICAgICAgICAgICAgPGZvcm1seS1mb3JtIFtmaWVsZHNdPVwiZmllbGRBcnJheVwiIFttb2RlbF09XCJjdXJyZW50TW9kZVwiIFtmb3JtXT1cImlubGluZWZvcm1cIj48L2Zvcm1seS1mb3JtPlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dSZWY+XHJcbiAgICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2RrRHJhZyBjbGFzcz1cIi1tdC02XCIgY2RrRHJhZ1Jvb3RFbGVtZW50PVwiLmNkay1vdmVybGF5LXBhbmVcIiBjZGtEcmFnSGFuZGxlPlxyXG4gICAgICAgIDxoMiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmUgdGV4dC14bFwiPnt7IHByb3BzLmxhYmVsICsn6K+m57uG6aG1J319PC9oMj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubGluZVRhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cImNvbmZpcm0oKVwiPlxyXG4gICAgICAgICAgICAgICAg56Gu5a6aXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,16 +0,0 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { MatTabsModule } from '@angular/material/tabs';
3
- import { FormlyModule } from '@ngx-formly/core';
4
- import { FieldType } from '@ngx-formly/material';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/tabs";
7
- import * as i2 from "@ngx-formly/core";
8
- export class CmatTabTypeComponent extends FieldType {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTabTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatTabTypeComponent, isStandalone: true, selector: "cmat-tab-type", usesInheritance: true, ngImport: i0, template: "<mat-tab-group [tabIndex]=\"props.tabindex\">\r\n @for (tab of field.fieldGroup; track $index) {\r\n <mat-tab [label]=\"tab.props?.label||''\" [disabled]=\"tab.props?.disabled\">\r\n <div class=\"py-2\">\r\n <formly-field [field]=\"tab\"></formly-field>\r\n </div>\r\n </mat-tab>\r\n }\r\n</mat-tab-group>", styles: [":host{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTabTypeComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'cmat-tab-type', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatTabsModule, FormlyModule], template: "<mat-tab-group [tabIndex]=\"props.tabindex\">\r\n @for (tab of field.fieldGroup; track $index) {\r\n <mat-tab [label]=\"tab.props?.label||''\" [disabled]=\"tab.props?.disabled\">\r\n <div class=\"py-2\">\r\n <formly-field [field]=\"tab\"></formly-field>\r\n </div>\r\n </mat-tab>\r\n }\r\n</mat-tab-group>", styles: [":host{width:100%}\n"] }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jdXN0b20tZm9ybWx5L3R5cGVzL3RhYnMvdGFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jdXN0b20tZm9ybWx5L3R5cGVzL3RhYnMvdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBbUIsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBVWpELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUEwQjs4R0FBdkQsb0JBQW9CO2tHQUFwQixvQkFBb0IsZ0dDYmpDLHdWQVFnQiw0RURHRixhQUFhLDRvQkFBRSxZQUFZOzsyRkFFNUIsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LXRhYi10eXBlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOlsnLi90YWIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRUYWJzTW9kdWxlLCBGb3JtbHlNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VGFiVHlwZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcclxuXHJcblxyXG59XHJcbiIsIjxtYXQtdGFiLWdyb3VwIFt0YWJJbmRleF09XCJwcm9wcy50YWJpbmRleFwiPlxyXG4gICAgQGZvciAodGFiIG9mIGZpZWxkLmZpZWxkR3JvdXA7IHRyYWNrICRpbmRleCkge1xyXG4gICAgPG1hdC10YWIgW2xhYmVsXT1cInRhYi5wcm9wcz8ubGFiZWx8fCcnXCIgW2Rpc2FibGVkXT1cInRhYi5wcm9wcz8uZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHktMlwiPlxyXG4gICAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJ0YWJcIj48L2Zvcm1seS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXRhYj5cclxuICAgIH1cclxuPC9tYXQtdGFiLWdyb3VwPiJdfQ==
@@ -1,146 +0,0 @@
1
- import { TemplatePortal } from '@angular/cdk/portal';
2
- import { AsyncPipe } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, ViewChild } from '@angular/core';
4
- import { MatCheckboxModule } from '@angular/material/checkbox';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { FieldType } from '@ngx-formly/material/form-field';
7
- import { isArray } from 'lodash-es';
8
- import { Subject, takeUntil, BehaviorSubject } from 'rxjs';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common/http";
11
- import * as i2 from "@angular/cdk/overlay";
12
- import * as i3 from "@angular/material/icon";
13
- import * as i4 from "@angular/material/checkbox";
14
- export class CmatTagsTypeComponent extends FieldType {
15
- constructor(_http, _overlay, _viewContainerRef, _changeDetectorRef) {
16
- super();
17
- this._http = _http;
18
- this._overlay = _overlay;
19
- this._viewContainerRef = _viewContainerRef;
20
- this._changeDetectorRef = _changeDetectorRef;
21
- this._filteredItems = new BehaviorSubject(null);
22
- this._unsubscribeAll = new Subject();
23
- }
24
- get filteredItems$() {
25
- return this._filteredItems.asObservable();
26
- }
27
- get tags() {
28
- if (isArray(this.field.props?.options)) {
29
- return this.urlData?.length > 0 ? this.urlData : this.field.props?.options || [];
30
- }
31
- else {
32
- return this.urlData?.length > 0 ? this.urlData : this.optionsData || [];
33
- }
34
- }
35
- ngOnInit() {
36
- if (this.field.props?.options && !isArray(this.field.props?.options)) {
37
- this.field.props?.options.pipe(takeUntil(this._unsubscribeAll)).subscribe((data) => {
38
- this.optionsData = data;
39
- });
40
- }
41
- const url = this.field.props?.domain?.url;
42
- if (url && this.field.props?.domain?.code && this.field.props?.domain?.key && this.field.props?.domain?.value) {
43
- this._http.get(url).pipe(takeUntil(this._unsubscribeAll)).subscribe((data) => {
44
- if (data) {
45
- const datas = data.filter((i) => {
46
- if (this.field.props?.domain?.key)
47
- return i[this.field.props?.domain?.key] === this.field.props?.domain?.code;
48
- return false;
49
- });
50
- if (datas && this.field.props?.domain?.value) {
51
- this.urlData = datas[0][this.field.props?.domain?.value];
52
- }
53
- else {
54
- this.urlData = [];
55
- }
56
- }
57
- else {
58
- this.urlData = [];
59
- }
60
- this._filteredItems.next(this.tags);
61
- });
62
- }
63
- else {
64
- this.urlData = [];
65
- this._filteredItems.next(this.tags);
66
- }
67
- }
68
- ngOnDestroy() {
69
- this._unsubscribeAll.next(void 0);
70
- this._unsubscribeAll.complete();
71
- }
72
- openTagsPanel() {
73
- this._tagsPanelOverlayRef = this._overlay.create({
74
- backdropClass: '',
75
- hasBackdrop: true,
76
- scrollStrategy: this._overlay.scrollStrategies.block(),
77
- positionStrategy: this._overlay.position()
78
- .flexibleConnectedTo(this._tagsPanelOrigin.nativeElement)
79
- .withFlexibleDimensions(true)
80
- .withViewportMargin(64)
81
- .withLockedPosition(true)
82
- .withPositions([
83
- {
84
- originX: 'start',
85
- originY: 'bottom',
86
- overlayX: 'start',
87
- overlayY: 'top'
88
- }
89
- ])
90
- });
91
- this._tagsPanelOverlayRef.attachments().subscribe(() => {
92
- this._tagsPanelOverlayRef.overlayElement.querySelector('input')?.focus();
93
- });
94
- const templatePortal = new TemplatePortal(this._tagsPanel, this._viewContainerRef);
95
- this._tagsPanelOverlayRef.attach(templatePortal);
96
- // Subscribe to the backdrop click
97
- this._tagsPanelOverlayRef.backdropClick().subscribe(() => {
98
- // If overlay exists and attached...
99
- if (this._tagsPanelOverlayRef?.hasAttached()) {
100
- // Detach it
101
- this._tagsPanelOverlayRef.detach();
102
- // Reset the tag filter
103
- this._filteredItems.next(this.tags);
104
- }
105
- // If template portal exists and attached...
106
- if (templatePortal?.isAttached) {
107
- // Detach it
108
- templatePortal.detach();
109
- }
110
- });
111
- }
112
- filterTags(event) {
113
- const value = event.target.value.toLowerCase();
114
- this._filteredItems.next(this.tags.filter(tag => tag.label.toString().toLowerCase().includes(value) || tag.value.toString().toLowerCase().includes(value)));
115
- }
116
- toggleTag(tag) {
117
- if (tag.disabled)
118
- return;
119
- const data = this.formControl.value || [];
120
- const existsTag = data.findIndex((i) => i.value === tag.value);
121
- if (existsTag > -1) {
122
- data.splice(existsTag, 1);
123
- }
124
- else {
125
- data.unshift(tag);
126
- }
127
- this.formControl.setValue(data);
128
- this._changeDetectorRef.markForCheck();
129
- }
130
- isCheck(tag) {
131
- return this.formControl.value?.filter((i) => i.value === tag.value).length > 0;
132
- }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTagsTypeComponent, deps: [{ token: i1.HttpClient }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatTagsTypeComponent, isStandalone: true, selector: "cmat-tags-type", viewQueries: [{ propertyName: "_tagsPanelOrigin", first: true, predicate: ["tagsPanelOrigin"], descendants: true }, { propertyName: "_tagsPanel", first: true, predicate: ["tagsPanel"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"text-lg mb-2\">\r\n {{ props.label }}\r\n @if(props.required){\r\n <span>*</span>\r\n }\r\n</div>\r\n<div class=\"flex flex-wrap items-center -m-2\" [tabIndex]=\"props.tabindex\">\r\n <ng-container>\r\n @for (selectedItem of formControl.value; track $index) {\r\n <div\r\n class=\"flex items-center justify-center px-4 m-1.5 rounded-full leading-9 text-gray-500 bg-slate-100 dark:text-gray-300 dark:bg-slate-700\">\r\n <span class=\"text-md font-medium whitespace-nowrap\">{{selectedItem.label}}</span>\r\n </div>\r\n }\r\n\r\n <div #tagsPanelOrigin\r\n class=\"flex items-center justify-center px-4 m-1.5 rounded-full leading-9 cursor-pointer text-gray-500 bg-slate-100 dark:text-gray-300 dark:bg-slate-700 print:hidden\" role=\"presentation\" (click)=\"openTagsPanel()\">\r\n\r\n @if(formControl.value?.length&&!disabled){\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:pencil-square'\"></mat-icon>\r\n <span class=\"ml-1.5 text-md font-medium whitespace-nowrap\">\u7F16\u8F91</span>\r\n }\r\n\r\n @if(!formControl.value?.length&&!disabled){\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:plus-circle'\"></mat-icon>\r\n <span class=\"ml-1.5 text-md font-medium whitespace-nowrap\">\u65B0\u589E</span>\r\n }\r\n\r\n <ng-template #tagsPanel>\r\n <div class=\"w-60 rounded border shadow-md bg-card\">\r\n <div class=\"flex items-center m-3 mr-2\">\r\n <div class=\"flex items-center\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:magnifying-glass'\">\r\n </mat-icon>\r\n <div class=\"ml-2\">\r\n <input class=\"w-full min-w-0 py-1 border-0\" type=\"text\" placeholder=\"\u8F93\u5165\u6807\u7B7E\u540D\"\r\n [maxLength]=\"30\" (input)=\"filterTags($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col max-h-64 py-2 border-t overflow-y-auto\">\r\n @if ((filteredItems$ | async); as filteredItems) {\r\n @if(filteredItems.length>0){\r\n @for (tag of filteredItems; track $index) {\r\n <div role=\"presentation\"\r\n class=\"flex items-center h-10 min-h-10 pl-1 pr-4 cursor-pointer hover:bg-hover\"\r\n matRipple (click)=\"toggleTag(tag)\">\r\n <mat-checkbox class=\"flex items-center h-10 min-h-10\" [color]=\"'primary'\"\r\n [disabled]=\"tag.disabled\" [checked]=\"isCheck(tag)\">\r\n {{tag.label}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"flex flex-auto flex-col justify-center px-4 h-10 min-h-10\">\r\n \u65E0\u7ED3\u679C\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
135
- }
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTagsTypeComponent, decorators: [{
137
- type: Component,
138
- args: [{ selector: 'cmat-tags-type', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatCheckboxModule, AsyncPipe], template: "<div class=\"text-lg mb-2\">\r\n {{ props.label }}\r\n @if(props.required){\r\n <span>*</span>\r\n }\r\n</div>\r\n<div class=\"flex flex-wrap items-center -m-2\" [tabIndex]=\"props.tabindex\">\r\n <ng-container>\r\n @for (selectedItem of formControl.value; track $index) {\r\n <div\r\n class=\"flex items-center justify-center px-4 m-1.5 rounded-full leading-9 text-gray-500 bg-slate-100 dark:text-gray-300 dark:bg-slate-700\">\r\n <span class=\"text-md font-medium whitespace-nowrap\">{{selectedItem.label}}</span>\r\n </div>\r\n }\r\n\r\n <div #tagsPanelOrigin\r\n class=\"flex items-center justify-center px-4 m-1.5 rounded-full leading-9 cursor-pointer text-gray-500 bg-slate-100 dark:text-gray-300 dark:bg-slate-700 print:hidden\" role=\"presentation\" (click)=\"openTagsPanel()\">\r\n\r\n @if(formControl.value?.length&&!disabled){\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:pencil-square'\"></mat-icon>\r\n <span class=\"ml-1.5 text-md font-medium whitespace-nowrap\">\u7F16\u8F91</span>\r\n }\r\n\r\n @if(!formControl.value?.length&&!disabled){\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:plus-circle'\"></mat-icon>\r\n <span class=\"ml-1.5 text-md font-medium whitespace-nowrap\">\u65B0\u589E</span>\r\n }\r\n\r\n <ng-template #tagsPanel>\r\n <div class=\"w-60 rounded border shadow-md bg-card\">\r\n <div class=\"flex items-center m-3 mr-2\">\r\n <div class=\"flex items-center\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:magnifying-glass'\">\r\n </mat-icon>\r\n <div class=\"ml-2\">\r\n <input class=\"w-full min-w-0 py-1 border-0\" type=\"text\" placeholder=\"\u8F93\u5165\u6807\u7B7E\u540D\"\r\n [maxLength]=\"30\" (input)=\"filterTags($event)\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-col max-h-64 py-2 border-t overflow-y-auto\">\r\n @if ((filteredItems$ | async); as filteredItems) {\r\n @if(filteredItems.length>0){\r\n @for (tag of filteredItems; track $index) {\r\n <div role=\"presentation\"\r\n class=\"flex items-center h-10 min-h-10 pl-1 pr-4 cursor-pointer hover:bg-hover\"\r\n matRipple (click)=\"toggleTag(tag)\">\r\n <mat-checkbox class=\"flex items-center h-10 min-h-10\" [color]=\"'primary'\"\r\n [disabled]=\"tag.disabled\" [checked]=\"isCheck(tag)\">\r\n {{tag.label}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"flex flex-auto flex-col justify-center px-4 h-10 min-h-10\">\r\n \u65E0\u7ED3\u679C\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host{width:100%}\n"] }]
139
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { _tagsPanelOrigin: [{
140
- type: ViewChild,
141
- args: ['tagsPanelOrigin']
142
- }], _tagsPanel: [{
143
- type: ViewChild,
144
- args: ['tagsPanel']
145
- }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvY3VzdG9tLWZvcm1seS90eXBlcy90YWdzL3RhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2N1c3RvbS1mb3JtbHkvdHlwZXMvdGFncy90YWdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQThDLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBb0J2RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsU0FBcUM7SUFZNUUsWUFBb0IsS0FBaUIsRUFBVSxRQUFpQixFQUFVLGlCQUFtQyxFQUFVLGtCQUFxQztRQUN4SixLQUFLLEVBQUUsQ0FBQztRQURRLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFMcEosbUJBQWMsR0FB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WUFBRSxTQUFTOzsyRkFFNUMscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUM7b0tBR2hCLGdCQUFnQjtzQkFBckQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0ksVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEN1c3RvbUZvcm1GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vd3JhcHBlcnMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgVGFnc1Byb3BzIGV4dGVuZHMgQ3VzdG9tRm9ybUZpZWxkUHJvcHMge1xyXG4gICAgZG9tYWluPzoge1xyXG4gICAgICAgIHVybD86IHN0cmluZztcclxuICAgICAgICBjb2RlPzogc3RyaW5nO1xyXG4gICAgICAgIGtleT86IHN0cmluZztcclxuICAgICAgICB2YWx1ZT86IHN0cmluZztcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtdGFncy10eXBlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWdzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RhZ3MuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRJY29uTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgQXN5bmNQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFRhZ3NUeXBlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxUYWdzUHJvcHM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3RhZ3NQYW5lbE9yaWdpbicpIHByaXZhdGUgX3RhZ3NQYW5lbE9yaWdpbjogRWxlbWVudFJlZjtcclxuICAgIEBWaWV3Q2hpbGQoJ3RhZ3NQYW5lbCcpIHByaXZhdGUgX3RhZ3NQYW5lbDogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICB1cmxEYXRhOiBbXTtcclxuICAgIG9wdGlvbnNEYXRhOiBhbnlbXTtcclxuXHJcbiAgICBwcml2YXRlIF9maWx0ZXJlZEl0ZW1zOiBCZWhhdmlvclN1YmplY3Q8YW55W10gfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10gfCBudWxsPihudWxsKTtcclxuICAgIHByaXZhdGUgX3RhZ3NQYW5lbE92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmaWx0ZXJlZEl0ZW1zJCgpOiBPYnNlcnZhYmxlPGFueVtdIHwgbnVsbD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZEl0ZW1zLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0YWdzKCk6IGFueVtdIHtcclxuICAgICAgICBpZiAoaXNBcnJheSh0aGlzLmZpZWxkLnByb3BzPy5vcHRpb25zKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cmxEYXRhPy5sZW5ndGggPiAwID8gdGhpcy51cmxEYXRhIDogdGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51cmxEYXRhPy5sZW5ndGggPiAwID8gdGhpcy51cmxEYXRhIDogdGhpcy5vcHRpb25zRGF0YSB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQucHJvcHM/Lm9wdGlvbnMgJiYgIWlzQXJyYXkodGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucykpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucy5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCkpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuZmllbGQucHJvcHM/LmRvbWFpbj8udXJsO1xyXG4gICAgICAgIGlmICh1cmwgJiYgdGhpcy5maWVsZC5wcm9wcz8uZG9tYWluPy5jb2RlICYmIHRoaXMuZmllbGQucHJvcHM/LmRvbWFpbj8ua2V5ICYmIHRoaXMuZmllbGQucHJvcHM/LmRvbWFpbj8udmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5faHR0cC5nZXQodXJsKS5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCkpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhcyA9IGRhdGEuZmlsdGVyKChpOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLnByb3BzPy5kb21haW4/LmtleSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaVt0aGlzLmZpZWxkLnByb3BzPy5kb21haW4/LmtleV0gPT09IHRoaXMuZmllbGQucHJvcHM/LmRvbWFpbj8uY29kZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFzICYmIHRoaXMuZmllbGQucHJvcHM/LmRvbWFpbj8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsRGF0YSA9IGRhdGFzWzBdW3RoaXMuZmllbGQucHJvcHM/LmRvbWFpbj8udmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cmxEYXRhID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVybERhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMubmV4dCh0aGlzLnRhZ3MpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zLm5leHQodGhpcy50YWdzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblRhZ3NQYW5lbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl90YWdzUGFuZWxPdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnJyxcclxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcclxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXHJcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl90YWdzUGFuZWxPcmlnaW4ubmF0aXZlRWxlbWVudClcclxuICAgICAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKHRydWUpXHJcbiAgICAgICAgICAgICAgICAud2l0aFZpZXdwb3J0TWFyZ2luKDY0KVxyXG4gICAgICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbih0cnVlKVxyXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl90YWdzUGFuZWxPdmVybGF5UmVmLmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fdGFnc1BhbmVsT3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpPy5mb2N1cygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl90YWdzUGFuZWwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xyXG5cclxuICAgICAgICB0aGlzLl90YWdzUGFuZWxPdmVybGF5UmVmLmF0dGFjaCh0ZW1wbGF0ZVBvcnRhbCk7XHJcblxyXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byB0aGUgYmFja2Ryb3AgY2xpY2tcclxuICAgICAgICB0aGlzLl90YWdzUGFuZWxPdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgb3ZlcmxheSBleGlzdHMgYW5kIGF0dGFjaGVkLi4uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWdzUGFuZWxPdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEZXRhY2ggaXRcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RhZ3NQYW5lbE92ZXJsYXlSZWYuZGV0YWNoKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHRhZyBmaWx0ZXJcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMubmV4dCh0aGlzLnRhZ3MpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0ZW1wbGF0ZSBwb3J0YWwgZXhpc3RzIGFuZCBhdHRhY2hlZC4uLlxyXG4gICAgICAgICAgICBpZiAodGVtcGxhdGVQb3J0YWw/LmlzQXR0YWNoZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIERldGFjaCBpdFxyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVQb3J0YWwuZGV0YWNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJUYWdzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zLm5leHQodGhpcy50YWdzLmZpbHRlcih0YWcgPT4gdGFnLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSkgfHwgdGFnLnZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSkpKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVUYWcodGFnOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGFnLmRpc2FibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0c1RhZyA9IGRhdGEuZmluZEluZGV4KChpOiB7IHZhbHVlOiBhbnk7IH0pID0+IGkudmFsdWUgPT09IHRhZy52YWx1ZSk7XHJcbiAgICAgICAgaWYgKGV4aXN0c1RhZz4tMSkge1xyXG4gICAgICAgICAgICBkYXRhLnNwbGljZShleGlzdHNUYWcsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YS51bnNoaWZ0KHRhZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQ2hlY2sodGFnOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8uZmlsdGVyKChpOiB7IHZhbHVlOiBhbnk7IH0pID0+IGkudmFsdWUgPT09IHRhZy52YWx1ZSkubGVuZ3RoID4gMDtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGV4dC1sZyBtYi0yXCI+XHJcbiAgICB7eyBwcm9wcy5sYWJlbCB9fVxyXG4gICAgQGlmKHByb3BzLnJlcXVpcmVkKXtcclxuICAgIDxzcGFuPio8L3NwYW4+XHJcbiAgICB9XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIC1tLTJcIiBbdGFiSW5kZXhdPVwicHJvcHMudGFiaW5kZXhcIj5cclxuICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgQGZvciAoc2VsZWN0ZWRJdGVtIG9mIGZvcm1Db250cm9sLnZhbHVlOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBtLTEuNSByb3VuZGVkLWZ1bGwgbGVhZGluZy05IHRleHQtZ3JheS01MDAgYmctc2xhdGUtMTAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmJnLXNsYXRlLTcwMFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXBcIj57e3NlbGVjdGVkSXRlbS5sYWJlbH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdiAjdGFnc1BhbmVsT3JpZ2luXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNCBtLTEuNSByb3VuZGVkLWZ1bGwgbGVhZGluZy05IGN1cnNvci1wb2ludGVyIHRleHQtZ3JheS01MDAgYmctc2xhdGUtMTAwIGRhcms6dGV4dC1ncmF5LTMwMCBkYXJrOmJnLXNsYXRlLTcwMCBwcmludDpoaWRkZW5cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgKGNsaWNrKT1cIm9wZW5UYWdzUGFuZWwoKVwiPlxyXG5cclxuICAgICAgICAgICAgQGlmKGZvcm1Db250cm9sLnZhbHVlPy5sZW5ndGgmJiFkaXNhYmxlZCl7XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS01XCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpwZW5jaWwtc3F1YXJlJ1wiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMS41IHRleHQtbWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXBcIj7nvJbovpE8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZighZm9ybUNvbnRyb2wudmFsdWU/Lmxlbmd0aCYmIWRpc2FibGVkKXtcclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zaXplLTVcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOnBsdXMtY2lyY2xlJ1wiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMS41IHRleHQtbWQgZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXBcIj7mlrDlop48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFnc1BhbmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNjAgcm91bmRlZCBib3JkZXIgc2hhZG93LW1kIGJnLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbS0zIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLXNpemUtNVwiIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfc29saWQ6bWFnbmlmeWluZy1nbGFzcydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbCBtaW4tdy0wIHB5LTEgYm9yZGVyLTBcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwi6L6T5YWl5qCH562+5ZCNXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIzMFwiIChpbnB1dCk9XCJmaWx0ZXJUYWdzKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtYXgtaC02NCBweS0yIGJvcmRlci10IG92ZXJmbG93LXktYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKChmaWx0ZXJlZEl0ZW1zJCB8IGFzeW5jKTsgYXMgZmlsdGVyZWRJdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoZmlsdGVyZWRJdGVtcy5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHRhZyBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaC0xMCBtaW4taC0xMCBwbC0xIHByLTQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0UmlwcGxlIChjbGljayk9XCJ0b2dnbGVUYWcodGFnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGgtMTAgbWluLWgtMTBcIiBbY29sb3JdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFnLmRpc2FibGVkXCIgW2NoZWNrZWRdPVwiaXNDaGVjayh0YWcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0YWcubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtYXV0byBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBweC00IGgtMTAgbWluLWgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOaXoOe7k+aenFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj4iXX0=
@@ -1,25 +0,0 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { ReactiveFormsModule } from '@angular/forms';
3
- import { MatInputModule } from '@angular/material/input';
4
- import { FieldType } from '@ngx-formly/material';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/input";
7
- import * as i2 from "@angular/forms";
8
- export class CmatTextareaTypeComponent extends FieldType {
9
- constructor() {
10
- super(...arguments);
11
- this.defaultOptions = {
12
- props: {
13
- cols: 1,
14
- rows: 3,
15
- },
16
- };
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTextareaTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatTextareaTypeComponent, isStandalone: true, selector: "cmat-textarea-type", usesInheritance: true, ngImport: i0, template: "<textarea matInput [placeholder]=\"placeholder\" \r\n [readonly]=\"props.readonly\" [errorStateMatcher]=\"errorStateMatcher\"\r\n [cols]=\"props.cols\"\r\n [rows]=\"props.rows\"\r\n [tabindex]=\"props.tabindex\"\r\n [formControl]=\"formControl\" [required]=\"required\">\r\n</textarea>", styles: [":host{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatTextareaTypeComponent, decorators: [{
22
- type: Component,
23
- args: [{ selector: 'cmat-textarea-type', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatInputModule, ReactiveFormsModule], template: "<textarea matInput [placeholder]=\"placeholder\" \r\n [readonly]=\"props.readonly\" [errorStateMatcher]=\"errorStateMatcher\"\r\n [cols]=\"props.cols\"\r\n [rows]=\"props.rows\"\r\n [tabindex]=\"props.tabindex\"\r\n [formControl]=\"formControl\" [required]=\"required\">\r\n</textarea>", styles: [":host{width:100%}\n"] }]
24
- }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2N1c3RvbS1mb3JtbHkvdHlwZXMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2N1c3RvbS1mb3JtbHkvdHlwZXMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBVWpELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxTQUEwQjtJQVJ6RTs7UUFTVyxtQkFBYyxHQUFHO1lBQ3hCLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsQ0FBQzthQUNSO1NBQ0YsQ0FBQztLQUNIOzhHQVBZLHlCQUF5QjtrR0FBekIseUJBQXlCLHFHQ2R0QyxnVEFNVyw0RURNRyxjQUFjLDBXQUFDLG1CQUFtQjs7MkZBRW5DLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxjQUFjLEVBQUMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtdGV4dGFyZWEtdHlwZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOlsnLi90ZXh0YXJlYS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdElucHV0TW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0VGV4dGFyZWFUeXBlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4ge1xyXG4gIG92ZXJyaWRlIGRlZmF1bHRPcHRpb25zID0ge1xyXG4gICAgcHJvcHM6IHtcclxuICAgICAgY29sczogMSxcclxuICAgICAgcm93czogMyxcclxuICAgIH0sXHJcbiAgfTtcclxufSIsIjx0ZXh0YXJlYSBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiAgIFxyXG4gICAgW3JlYWRvbmx5XT1cInByb3BzLnJlYWRvbmx5XCIgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yU3RhdGVNYXRjaGVyXCJcclxuICAgIFtjb2xzXT1cInByb3BzLmNvbHNcIlxyXG4gICAgW3Jvd3NdPVwicHJvcHMucm93c1wiXHJcbiAgICBbdGFiaW5kZXhdPVwicHJvcHMudGFiaW5kZXhcIlxyXG4gICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCI+XHJcbjwvdGV4dGFyZWE+Il19
@@ -1,58 +0,0 @@
1
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
- import { ReactiveFormsModule } from '@angular/forms';
3
- import { FieldType } from '@ngx-formly/material/form-field';
4
- import { CmatUploadQueueComponent } from 'cmat/components/upload';
5
- import * as i0 from "@angular/core";
6
- export class CmatUploadTypeComponent extends FieldType {
7
- constructor() {
8
- super(...arguments);
9
- this.defaultOptions = {
10
- props: {
11
- fileAlias: 'fileData',
12
- filePath: 'path',
13
- fileCategory: '分类',
14
- multiple: true,
15
- accept: '',
16
- editMode: true,
17
- autoUpload: true
18
- }
19
- };
20
- }
21
- upload(id) {
22
- if (this.model['uploadId']) {
23
- this.model['uploadId'].push(id);
24
- }
25
- else {
26
- this.model['uploadId'] = [id];
27
- }
28
- }
29
- remove(id) {
30
- if (this.model['removeId']) {
31
- this.model['removeId'].push(id);
32
- }
33
- else {
34
- this.model['removeId'] = [id];
35
- }
36
- }
37
- updateData(i) {
38
- const data = Array.isArray(i) ? i : [];
39
- this.formControl.setValue(data.map((j) => {
40
- if (j.id)
41
- return {
42
- id: j.id,
43
- name: j.name,
44
- type: j.type,
45
- size: j.size
46
- };
47
- else
48
- return j;
49
- }));
50
- }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatUploadTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CmatUploadTypeComponent, isStandalone: true, selector: "cmat-upload-type", usesInheritance: true, ngImport: i0, template: "<cmat-upload-queue [tabindex]=\"props.tabindex\" [fileAlias]=\"props.fileAlias\"\r\n [filePath]=\"props.filePath\" [required]=\"required\" [fileCategory]=\"props.fileCategory\" [multiple]=\"props.multiple\"\r\n [accept]=\"props.accept\" [title]=\"props.label??'\u9644\u4EF6'\" [editMode]=\"props.editMode&&!disabled\" [filesData]=\"formControl.value\"\r\n [autoUpload]=\"props.autoUpload\" (outputUploadIdEvent)=\"upload($event)\" (outputRemoveIdEvent)=\"remove($event)\" (outputFilesDataEvent)=\"updateData($event)\">\r\n</cmat-upload-queue>", styles: [":host{width:100%}\n"], dependencies: [{ kind: "component", type: CmatUploadQueueComponent, selector: "cmat-upload-queue", inputs: ["fileAlias", "filePath", "fileCategory", "required", "autoUpload", "multiple", "accept", "title", "editMode", "filesData"], outputs: ["outputRemoveIdEvent", "outputUploadIdEvent", "outputFilesDataEvent"], exportAs: ["cmatUploadQueue"] }, { kind: "ngmodule", type: ReactiveFormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatUploadTypeComponent, decorators: [{
55
- type: Component,
56
- args: [{ selector: 'cmat-upload-type', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CmatUploadQueueComponent, ReactiveFormsModule], template: "<cmat-upload-queue [tabindex]=\"props.tabindex\" [fileAlias]=\"props.fileAlias\"\r\n [filePath]=\"props.filePath\" [required]=\"required\" [fileCategory]=\"props.fileCategory\" [multiple]=\"props.multiple\"\r\n [accept]=\"props.accept\" [title]=\"props.label??'\u9644\u4EF6'\" [editMode]=\"props.editMode&&!disabled\" [filesData]=\"formControl.value\"\r\n [autoUpload]=\"props.autoUpload\" (outputUploadIdEvent)=\"upload($event)\" (outputRemoveIdEvent)=\"remove($event)\" (outputFilesDataEvent)=\"updateData($event)\">\r\n</cmat-upload-queue>", styles: [":host{width:100%}\n"] }]
57
- }] });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jdXN0b20tZm9ybWx5L3R5cGVzL3VwbG9hZC91cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2N1c3RvbS1mb3JtbHkvdHlwZXMvdXBsb2FkL3VwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFxQmxFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxTQUF1QztJQVJwRjs7UUFTVyxtQkFBYyxHQUFHO1lBQ3hCLEtBQUssRUFBRTtnQkFDTCxTQUFTLEVBQUUsVUFBVTtnQkFDckIsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixRQUFRLEVBQUUsSUFBSTtnQkFDZCxNQUFNLEVBQUUsRUFBRTtnQkFDVixRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsSUFBSTthQUNqQjtTQUNGLENBQUM7S0FnQ0g7SUE5QkMsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBTTtRQUNmLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNOLE9BQU87b0JBQ0wsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO29CQUNSLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtvQkFDWixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7b0JBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2lCQUNiLENBQUM7O2dCQUVGLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OEdBMUNVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLG1HQ3pCcEMseWlCQUlvQiw2RURtQlIsd0JBQXdCLGtUQUFFLG1CQUFtQjs7MkZBRTVDLHVCQUF1QjtrQkFSbkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyx3QkFBd0IsRUFBRSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBDbWF0VXBsb2FkUXVldWVDb21wb25lbnQgfSBmcm9tICdjbWF0L2NvbXBvbmVudHMvdXBsb2FkJztcclxuaW1wb3J0IHsgQ3VzdG9tRm9ybUZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi93cmFwcGVycy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBVcGxvYWRQcm9wcyBleHRlbmRzIEN1c3RvbUZvcm1GaWVsZFByb3BzIHtcclxuICBmaWxlQWxpYXM6IHN0cmluZztcclxuICBmaWxlUGF0aDogc3RyaW5nO1xyXG4gIGZpbGVDYXRlZ29yeTogc3RyaW5nO1xyXG4gIG11bHRpcGxlOiBib29sZWFuO1xyXG4gIGFjY2VwdDogc3RyaW5nO1xyXG4gIGVkaXRNb2RlOiBib29sZWFuO1xyXG4gIGF1dG9VcGxvYWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY21hdC11cGxvYWQtdHlwZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ21hdFVwbG9hZFF1ZXVlQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFVwbG9hZFR5cGVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFVwbG9hZFByb3BzPj4ge1xyXG4gIG92ZXJyaWRlIGRlZmF1bHRPcHRpb25zID0ge1xyXG4gICAgcHJvcHM6IHtcclxuICAgICAgZmlsZUFsaWFzOiAnZmlsZURhdGEnLFxyXG4gICAgICBmaWxlUGF0aDogJ3BhdGgnLFxyXG4gICAgICBmaWxlQ2F0ZWdvcnk6ICfliIbnsbsnLFxyXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgYWNjZXB0OiAnJyxcclxuICAgICAgZWRpdE1vZGU6IHRydWUsXHJcbiAgICAgIGF1dG9VcGxvYWQ6IHRydWVcclxuICAgIH1cclxuICB9O1xyXG5cclxuICB1cGxvYWQoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZWxbJ3VwbG9hZElkJ10pIHtcclxuICAgICAgdGhpcy5tb2RlbFsndXBsb2FkSWQnXS5wdXNoKGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kZWxbJ3VwbG9hZElkJ10gPSBbaWRdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGVsWydyZW1vdmVJZCddKSB7XHJcbiAgICAgIHRoaXMubW9kZWxbJ3JlbW92ZUlkJ10ucHVzaChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vZGVsWydyZW1vdmVJZCddID0gW2lkXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGEoaTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gQXJyYXkuaXNBcnJheShpKSA/IGkgOiBbXTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZGF0YS5tYXAoKGopID0+IHtcclxuICAgICAgaWYgKGouaWQpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGlkOiBqLmlkLFxyXG4gICAgICAgICAgbmFtZTogai5uYW1lLFxyXG4gICAgICAgICAgdHlwZTogai50eXBlLFxyXG4gICAgICAgICAgc2l6ZTogai5zaXplXHJcbiAgICAgICAgfTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiBqO1xyXG4gICAgfSkpO1xyXG4gIH1cclxufSIsIjxjbWF0LXVwbG9hZC1xdWV1ZSBbdGFiaW5kZXhdPVwicHJvcHMudGFiaW5kZXhcIiBbZmlsZUFsaWFzXT1cInByb3BzLmZpbGVBbGlhc1wiXHJcbiAgICBbZmlsZVBhdGhdPVwicHJvcHMuZmlsZVBhdGhcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZmlsZUNhdGVnb3J5XT1cInByb3BzLmZpbGVDYXRlZ29yeVwiIFttdWx0aXBsZV09XCJwcm9wcy5tdWx0aXBsZVwiXHJcbiAgICBbYWNjZXB0XT1cInByb3BzLmFjY2VwdFwiIFt0aXRsZV09XCJwcm9wcy5sYWJlbD8/J+mZhOS7tidcIiBbZWRpdE1vZGVdPVwicHJvcHMuZWRpdE1vZGUmJiFkaXNhYmxlZFwiIFtmaWxlc0RhdGFdPVwiZm9ybUNvbnRyb2wudmFsdWVcIlxyXG4gICAgW2F1dG9VcGxvYWRdPVwicHJvcHMuYXV0b1VwbG9hZFwiIChvdXRwdXRVcGxvYWRJZEV2ZW50KT1cInVwbG9hZCgkZXZlbnQpXCIgKG91dHB1dFJlbW92ZUlkRXZlbnQpPVwicmVtb3ZlKCRldmVudClcIiAob3V0cHV0RmlsZXNEYXRhRXZlbnQpPVwidXBkYXRlRGF0YSgkZXZlbnQpXCI+XHJcbjwvY21hdC11cGxvYWQtcXVldWU+Il19