cmat 0.0.3

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 (680) hide show
  1. package/README.md +3 -0
  2. package/animations/defaults.d.ts +11 -0
  3. package/animations/drop.d.ts +2 -0
  4. package/animations/expand-collapse.d.ts +2 -0
  5. package/animations/fade.d.ts +11 -0
  6. package/animations/index.d.ts +5 -0
  7. package/animations/public-api.d.ts +1 -0
  8. package/animations/shake.d.ts +2 -0
  9. package/animations/slide.d.ts +9 -0
  10. package/animations/transform.d.ts +2 -0
  11. package/animations/zoom.d.ts +3 -0
  12. package/components/adapter/datetime-adapter.d.ts +45 -0
  13. package/components/adapter/datetime-formats.d.ts +22 -0
  14. package/components/adapter/dayjs-date-adapter.d.ts +63 -0
  15. package/components/adapter/dayjs-date-formats.d.ts +2 -0
  16. package/components/adapter/dayjs-datetime-adapter.d.ts +22 -0
  17. package/components/adapter/dayjs-datetime-formats.d.ts +2 -0
  18. package/components/adapter/index.d.ts +5 -0
  19. package/components/adapter/native-datetime-adapter.d.ts +31 -0
  20. package/components/adapter/native-datetime-formats.d.ts +2 -0
  21. package/components/adapter/public-api.d.ts +8 -0
  22. package/components/breadcrumb/breadcrumb-item.directive.d.ts +10 -0
  23. package/components/breadcrumb/breadcrumb.component.d.ts +57 -0
  24. package/components/breadcrumb/breadcrumb.component.scss +18 -0
  25. package/components/breadcrumb/breadcrumb.service.d.ts +126 -0
  26. package/components/breadcrumb/index.d.ts +5 -0
  27. package/components/breadcrumb/public-api.d.ts +3 -0
  28. package/components/breadcrumb/types/breadcrumb.config.d.ts +33 -0
  29. package/components/breadcrumb/types/breadcrumb.d.ts +23 -0
  30. package/components/card/card.component.d.ts +20 -0
  31. package/components/card/card.component.scss +63 -0
  32. package/components/card/card.types.d.ts +1 -0
  33. package/components/card/index.d.ts +5 -0
  34. package/components/card/public-api.d.ts +1 -0
  35. package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.d.ts +14 -0
  36. package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.scss +43 -0
  37. package/components/cascade/cascade-list/cascade-list.component.d.ts +52 -0
  38. package/components/cascade/cascade-list/cascade-list.component.scss +22 -0
  39. package/components/cascade/cascade-menu/cascade-menu.component.d.ts +10 -0
  40. package/components/cascade/cascade-menu/cascade-menu.component.scss +48 -0
  41. package/components/cascade/index.d.ts +5 -0
  42. package/components/cascade/options.interface.d.ts +8 -0
  43. package/components/cascade/public-api.d.ts +2 -0
  44. package/components/date-range/date-range.component.d.ts +134 -0
  45. package/components/date-range/date-range.component.scss +232 -0
  46. package/components/date-range/index.d.ts +5 -0
  47. package/components/date-range/public-api.d.ts +1 -0
  48. package/components/drawer/drawer.component.d.ts +75 -0
  49. package/components/drawer/drawer.component.scss +133 -0
  50. package/components/drawer/drawer.service.d.ts +26 -0
  51. package/components/drawer/drawer.types.d.ts +2 -0
  52. package/components/drawer/index.d.ts +5 -0
  53. package/components/drawer/public-api.d.ts +3 -0
  54. package/components/fullscreen/fullscreen.component.d.ts +18 -0
  55. package/components/fullscreen/fullscreen.types.d.ts +13 -0
  56. package/components/fullscreen/index.d.ts +5 -0
  57. package/components/fullscreen/public-api.d.ts +2 -0
  58. package/components/highlight/highlight.component.d.ts +21 -0
  59. package/components/highlight/highlight.component.scss +3 -0
  60. package/components/highlight/highlight.service.d.ts +7 -0
  61. package/components/highlight/index.d.ts +5 -0
  62. package/components/highlight/public-api.d.ts +2 -0
  63. package/components/masonry/index.d.ts +5 -0
  64. package/components/masonry/masonry.component.d.ts +13 -0
  65. package/components/masonry/public-api.d.ts +1 -0
  66. package/components/material-color-picker/base-color.d.ts +1 -0
  67. package/components/material-color-picker/index.d.ts +5 -0
  68. package/components/material-color-picker/material-color-picker.component.d.ts +35 -0
  69. package/components/material-color-picker/material-color-picker.component.scss +5 -0
  70. package/components/material-color-picker/public-api.d.ts +2 -0
  71. package/components/material-color-picker/selected-color.d.ts +5 -0
  72. package/components/material-datetimepicker/calendar-body.d.ts +43 -0
  73. package/components/material-datetimepicker/calendar-body.scss +58 -0
  74. package/components/material-datetimepicker/calendar.d.ts +146 -0
  75. package/components/material-datetimepicker/calendar.scss +194 -0
  76. package/components/material-datetimepicker/clock.d.ts +74 -0
  77. package/components/material-datetimepicker/clock.scss +90 -0
  78. package/components/material-datetimepicker/datetimepicker-animations.d.ts +4 -0
  79. package/components/material-datetimepicker/datetimepicker-content.scss +151 -0
  80. package/components/material-datetimepicker/datetimepicker-errors.d.ts +1 -0
  81. package/components/material-datetimepicker/datetimepicker-filtertype.d.ts +5 -0
  82. package/components/material-datetimepicker/datetimepicker-input.d.ts +106 -0
  83. package/components/material-datetimepicker/datetimepicker-intl.d.ts +51 -0
  84. package/components/material-datetimepicker/datetimepicker-toggle.d.ts +40 -0
  85. package/components/material-datetimepicker/datetimepicker-types.d.ts +13 -0
  86. package/components/material-datetimepicker/datetimepicker.d.ts +195 -0
  87. package/components/material-datetimepicker/datetimepicker.scss +145 -0
  88. package/components/material-datetimepicker/index.d.ts +5 -0
  89. package/components/material-datetimepicker/month-view.d.ts +64 -0
  90. package/components/material-datetimepicker/multi-year-view.d.ts +74 -0
  91. package/components/material-datetimepicker/public-api.d.ts +9 -0
  92. package/components/material-datetimepicker/time.d.ts +129 -0
  93. package/components/material-datetimepicker/time.scss +82 -0
  94. package/components/material-datetimepicker/year-view.d.ts +56 -0
  95. package/components/navigation/horizontal/components/basic/basic.component.d.ts +27 -0
  96. package/components/navigation/horizontal/components/branch/branch.component.d.ts +39 -0
  97. package/components/navigation/horizontal/components/divider/divider.component.d.ts +23 -0
  98. package/components/navigation/horizontal/components/spacer/spacer.component.d.ts +23 -0
  99. package/components/navigation/horizontal/horizontal.component.d.ts +43 -0
  100. package/components/navigation/horizontal/horizontal.component.scss +167 -0
  101. package/components/navigation/index.d.ts +5 -0
  102. package/components/navigation/navigation.service.d.ts +71 -0
  103. package/components/navigation/navigation.types.d.ts +34 -0
  104. package/components/navigation/public-api.d.ts +4 -0
  105. package/components/navigation/vertical/components/aside/aside.component.d.ts +63 -0
  106. package/components/navigation/vertical/components/basic/basic.component.d.ts +30 -0
  107. package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +74 -0
  108. package/components/navigation/vertical/components/divider/divider.component.d.ts +26 -0
  109. package/components/navigation/vertical/components/group/group.component.d.ts +36 -0
  110. package/components/navigation/vertical/components/spacer/spacer.component.d.ts +26 -0
  111. package/components/navigation/vertical/styles/appearances/compact.scss +103 -0
  112. package/components/navigation/vertical/styles/appearances/default.scss +550 -0
  113. package/components/navigation/vertical/styles/appearances/dense.scss +171 -0
  114. package/components/navigation/vertical/styles/appearances/thin.scss +91 -0
  115. package/components/navigation/vertical/vertical.component.d.ts +176 -0
  116. package/components/navigation/vertical/vertical.component.scss +4 -0
  117. package/components/pagination/index.d.ts +5 -0
  118. package/components/pagination/pagination.component.d.ts +24 -0
  119. package/components/pagination/pagination.directive.d.ts +40 -0
  120. package/components/pagination/pagination.instance.d.ts +11 -0
  121. package/components/pagination/pagination.pipe.d.ts +29 -0
  122. package/components/pagination/pagination.service.d.ts +20 -0
  123. package/components/pagination/public-api.d.ts +4 -0
  124. package/components/password-strength/animations/index.d.ts +4 -0
  125. package/components/password-strength/enum.d.ts +13 -0
  126. package/components/password-strength/index.d.ts +5 -0
  127. package/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.d.ts +11 -0
  128. package/components/password-strength/mat-password-strength/mat-password-strength.component.d.ts +52 -0
  129. package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.d.ts +16 -0
  130. package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.scss +19 -0
  131. package/components/password-strength/mat-password-strength-validator.d.ts +6 -0
  132. package/components/password-strength/public-api.d.ts +3 -0
  133. package/components/password-strength/regexp.class.d.ts +6 -0
  134. package/components/popover/index.d.ts +5 -0
  135. package/components/popover/popover.component.d.ts +139 -0
  136. package/components/popover/popover.component.scss +174 -0
  137. package/components/popover/popover.errors.d.ts +14 -0
  138. package/components/popover/popover.interfaces.d.ts +44 -0
  139. package/components/popover/popover.type.d.ts +5 -0
  140. package/components/popover/public-api.d.ts +1 -0
  141. package/components/progress-bar/index.d.ts +5 -0
  142. package/components/progress-bar/progress-bar.component.d.ts +17 -0
  143. package/components/progress-bar/progress-bar.component.scss +7 -0
  144. package/components/progress-bar/public-api.d.ts +1 -0
  145. package/components/rating/index.d.ts +5 -0
  146. package/components/rating/public-api.d.ts +1 -0
  147. package/components/rating/rating.component.d.ts +28 -0
  148. package/components/rating/rating.component.scss +33 -0
  149. package/components/select-search/default-options.d.ts +8 -0
  150. package/components/select-search/index.d.ts +5 -0
  151. package/components/select-search/public-api.d.ts +2 -0
  152. package/components/select-search/select-no-entries-found.directive.d.ts +5 -0
  153. package/components/select-search/select-search-clear.directive.d.ts +5 -0
  154. package/components/select-search/select-search.component.d.ts +91 -0
  155. package/components/select-search/select-search.component.scss +126 -0
  156. package/components/select-tree/index.d.ts +5 -0
  157. package/components/select-tree/public-api.d.ts +1 -0
  158. package/components/select-tree/select-tree.component.d.ts +85 -0
  159. package/components/select-tree/select-tree.component.scss +54 -0
  160. package/components/select-tree/select-tree.flatnode.d.ts +6 -0
  161. package/components/select-tree/select-tree.node.d.ts +5 -0
  162. package/components/timeline/index.d.ts +5 -0
  163. package/components/timeline/public-api.d.ts +2 -0
  164. package/components/timeline/timeline-item/timeline-item.component.d.ts +25 -0
  165. package/components/timeline/timeline-item/timeline-item.component.scss +329 -0
  166. package/components/timeline/timeline.component.d.ts +32 -0
  167. package/components/timeline/timeline.component.scss +42 -0
  168. package/components/toast/index.d.ts +5 -0
  169. package/components/toast/models/global-config.model.d.ts +12 -0
  170. package/components/toast/models/toast.model.d.ts +6 -0
  171. package/components/toast/models/type.model.d.ts +12 -0
  172. package/components/toast/public-api.d.ts +2 -0
  173. package/components/toast/toast-modal.component.d.ts +18 -0
  174. package/components/toast/toast-modal.component.scss +119 -0
  175. package/components/toast/toast.component.d.ts +17 -0
  176. package/components/toast/toast.component.scss +62 -0
  177. package/components/toast/toast.service.d.ts +26 -0
  178. package/components/transfer-picker/filter/filter.component.d.ts +24 -0
  179. package/components/transfer-picker/filter/filter.component.scss +40 -0
  180. package/components/transfer-picker/index.d.ts +5 -0
  181. package/components/transfer-picker/interface.d.ts +42 -0
  182. package/components/transfer-picker/public-api.d.ts +7 -0
  183. package/components/transfer-picker/search/search.component.d.ts +14 -0
  184. package/components/transfer-picker/search/search.component.scss +7 -0
  185. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +49 -0
  186. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.scss +25 -0
  187. package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +12 -0
  188. package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.scss +27 -0
  189. package/components/transfer-picker/transfer-picker.component.d.ts +28 -0
  190. package/components/transfer-picker/transfer-picker.component.scss +8 -0
  191. package/components/transfer-picker/transfer-picker.service.d.ts +31 -0
  192. package/directives/animate-on-scroll/animate-on-scroll.directive.d.ts +29 -0
  193. package/directives/animate-on-scroll/index.d.ts +5 -0
  194. package/directives/animate-on-scroll/public-api.d.ts +1 -0
  195. package/directives/animate-on-scroll/scroll.service.d.ts +15 -0
  196. package/directives/autofocus/autofocus.directive.d.ts +10 -0
  197. package/directives/autofocus/index.d.ts +5 -0
  198. package/directives/autofocus/public-api.d.ts +1 -0
  199. package/directives/debounce/abstract-debounce.directive.d.ts +15 -0
  200. package/directives/debounce/debounce-click.directive.d.ts +8 -0
  201. package/directives/debounce/debounce-keyup.directive.d.ts +8 -0
  202. package/directives/debounce/index.d.ts +5 -0
  203. package/directives/debounce/public-api.d.ts +2 -0
  204. package/directives/digit-only/digit-only.directive.d.ts +34 -0
  205. package/directives/digit-only/index.d.ts +5 -0
  206. package/directives/digit-only/mask.directive.d.ts +14 -0
  207. package/directives/digit-only/public-api.d.ts +2 -0
  208. package/directives/equal-validator/equal-validator.directive.d.ts +14 -0
  209. package/directives/equal-validator/index.d.ts +5 -0
  210. package/directives/equal-validator/public-api.d.ts +1 -0
  211. package/esm2022/animations/cmat-animations.mjs +5 -0
  212. package/esm2022/animations/defaults.mjs +12 -0
  213. package/esm2022/animations/drop.mjs +26 -0
  214. package/esm2022/animations/expand-collapse.mjs +17 -0
  215. package/esm2022/animations/fade.mjs +170 -0
  216. package/esm2022/animations/public-api.mjs +19 -0
  217. package/esm2022/animations/shake.mjs +59 -0
  218. package/esm2022/animations/slide.mjs +124 -0
  219. package/esm2022/animations/transform.mjs +16 -0
  220. package/esm2022/animations/zoom.mjs +38 -0
  221. package/esm2022/cmat.mjs +5 -0
  222. package/esm2022/components/adapter/cmat-components-adapter.mjs +5 -0
  223. package/esm2022/components/adapter/datetime-adapter.mjs +127 -0
  224. package/esm2022/components/adapter/datetime-formats.mjs +3 -0
  225. package/esm2022/components/adapter/dayjs-date-adapter.mjs +198 -0
  226. package/esm2022/components/adapter/dayjs-date-formats.mjs +12 -0
  227. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +100 -0
  228. package/esm2022/components/adapter/dayjs-datetime-formats.mjs +21 -0
  229. package/esm2022/components/adapter/native-datetime-adapter.mjs +130 -0
  230. package/esm2022/components/adapter/native-datetime-formats.mjs +15 -0
  231. package/esm2022/components/adapter/public-api.mjs +9 -0
  232. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +19 -0
  233. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +95 -0
  234. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +336 -0
  235. package/esm2022/components/breadcrumb/cmat-components-breadcrumb.mjs +5 -0
  236. package/esm2022/components/breadcrumb/public-api.mjs +4 -0
  237. package/esm2022/components/breadcrumb/types/breadcrumb.config.mjs +2 -0
  238. package/esm2022/components/breadcrumb/types/breadcrumb.mjs +2 -0
  239. package/esm2022/components/card/card.component.mjs +58 -0
  240. package/esm2022/components/card/card.types.mjs +2 -0
  241. package/esm2022/components/card/cmat-components-card.mjs +5 -0
  242. package/esm2022/components/card/public-api.mjs +2 -0
  243. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +53 -0
  244. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +263 -0
  245. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +29 -0
  246. package/esm2022/components/cascade/cmat-components-cascade.mjs +5 -0
  247. package/esm2022/components/cascade/options.interface.mjs +2 -0
  248. package/esm2022/components/cascade/public-api.mjs +3 -0
  249. package/esm2022/components/date-range/cmat-components-date-range.mjs +5 -0
  250. package/esm2022/components/date-range/date-range.component.mjs +540 -0
  251. package/esm2022/components/date-range/public-api.mjs +2 -0
  252. package/esm2022/components/drawer/cmat-components-drawer.mjs +5 -0
  253. package/esm2022/components/drawer/drawer.component.mjs +301 -0
  254. package/esm2022/components/drawer/drawer.service.mjs +41 -0
  255. package/esm2022/components/drawer/drawer.types.mjs +2 -0
  256. package/esm2022/components/drawer/public-api.mjs +4 -0
  257. package/esm2022/components/fullscreen/cmat-components-fullscreen.mjs +5 -0
  258. package/esm2022/components/fullscreen/fullscreen.component.mjs +101 -0
  259. package/esm2022/components/fullscreen/fullscreen.types.mjs +2 -0
  260. package/esm2022/components/fullscreen/public-api.mjs +3 -0
  261. package/esm2022/components/highlight/cmat-components-highlight.mjs +5 -0
  262. package/esm2022/components/highlight/highlight.component.mjs +80 -0
  263. package/esm2022/components/highlight/highlight.service.mjs +47 -0
  264. package/esm2022/components/highlight/public-api.mjs +3 -0
  265. package/esm2022/components/masonry/cmat-components-masonry.mjs +5 -0
  266. package/esm2022/components/masonry/masonry.component.mjs +54 -0
  267. package/esm2022/components/masonry/public-api.mjs +2 -0
  268. package/esm2022/components/material-color-picker/base-color.mjs +13 -0
  269. package/esm2022/components/material-color-picker/cmat-components-material-color-picker.mjs +5 -0
  270. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +138 -0
  271. package/esm2022/components/material-color-picker/public-api.mjs +3 -0
  272. package/esm2022/components/material-color-picker/selected-color.mjs +3 -0
  273. package/esm2022/components/material-datetimepicker/calendar-body.mjs +80 -0
  274. package/esm2022/components/material-datetimepicker/calendar.mjs +678 -0
  275. package/esm2022/components/material-datetimepicker/clock.mjs +293 -0
  276. package/esm2022/components/material-datetimepicker/cmat-components-material-datetimepicker.mjs +5 -0
  277. package/esm2022/components/material-datetimepicker/datetimepicker-animations.mjs +34 -0
  278. package/esm2022/components/material-datetimepicker/datetimepicker-errors.mjs +6 -0
  279. package/esm2022/components/material-datetimepicker/datetimepicker-filtertype.mjs +8 -0
  280. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +340 -0
  281. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +63 -0
  282. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +88 -0
  283. package/esm2022/components/material-datetimepicker/datetimepicker-types.mjs +2 -0
  284. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +534 -0
  285. package/esm2022/components/material-datetimepicker/month-view.mjs +146 -0
  286. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +198 -0
  287. package/esm2022/components/material-datetimepicker/public-api.mjs +10 -0
  288. package/esm2022/components/material-datetimepicker/time.mjs +456 -0
  289. package/esm2022/components/material-datetimepicker/year-view.mjs +125 -0
  290. package/esm2022/components/navigation/cmat-components-navigation.mjs +5 -0
  291. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +70 -0
  292. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +83 -0
  293. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +47 -0
  294. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +47 -0
  295. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +88 -0
  296. package/esm2022/components/navigation/navigation.service.mjs +140 -0
  297. package/esm2022/components/navigation/navigation.types.mjs +3 -0
  298. package/esm2022/components/navigation/public-api.mjs +5 -0
  299. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +162 -0
  300. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +76 -0
  301. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +279 -0
  302. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +56 -0
  303. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +79 -0
  304. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +56 -0
  305. package/esm2022/components/navigation/vertical/vertical.component.mjs +586 -0
  306. package/esm2022/components/pagination/cmat-components-pagination.mjs +5 -0
  307. package/esm2022/components/pagination/pagination.component.mjs +71 -0
  308. package/esm2022/components/pagination/pagination.directive.mjs +197 -0
  309. package/esm2022/components/pagination/pagination.instance.mjs +2 -0
  310. package/esm2022/components/pagination/pagination.pipe.mjs +100 -0
  311. package/esm2022/components/pagination/pagination.service.mjs +90 -0
  312. package/esm2022/components/pagination/public-api.mjs +5 -0
  313. package/esm2022/components/password-strength/animations/index.mjs +48 -0
  314. package/esm2022/components/password-strength/cmat-components-password-strength.mjs +5 -0
  315. package/esm2022/components/password-strength/enum.mjs +17 -0
  316. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +27 -0
  317. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +206 -0
  318. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +151 -0
  319. package/esm2022/components/password-strength/mat-password-strength-validator.mjs +36 -0
  320. package/esm2022/components/password-strength/public-api.mjs +4 -0
  321. package/esm2022/components/password-strength/regexp.class.mjs +8 -0
  322. package/esm2022/components/popover/cmat-components-popover.mjs +5 -0
  323. package/esm2022/components/popover/popover.component.mjs +350 -0
  324. package/esm2022/components/popover/popover.errors.mjs +27 -0
  325. package/esm2022/components/popover/popover.interfaces.mjs +2 -0
  326. package/esm2022/components/popover/popover.type.mjs +2 -0
  327. package/esm2022/components/popover/public-api.mjs +2 -0
  328. package/esm2022/components/progress-bar/cmat-components-progress-bar.mjs +5 -0
  329. package/esm2022/components/progress-bar/progress-bar.component.mjs +55 -0
  330. package/esm2022/components/progress-bar/public-api.mjs +2 -0
  331. package/esm2022/components/rating/cmat-components-rating.mjs +5 -0
  332. package/esm2022/components/rating/public-api.mjs +2 -0
  333. package/esm2022/components/rating/rating.component.mjs +91 -0
  334. package/esm2022/components/select-search/cmat-components-select-search.mjs +5 -0
  335. package/esm2022/components/select-search/default-options.mjs +16 -0
  336. package/esm2022/components/select-search/public-api.mjs +3 -0
  337. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +14 -0
  338. package/esm2022/components/select-search/select-search-clear.directive.mjs +14 -0
  339. package/esm2022/components/select-search/select-search.component.mjs +488 -0
  340. package/esm2022/components/select-tree/cmat-components-select-tree.mjs +5 -0
  341. package/esm2022/components/select-tree/public-api.mjs +2 -0
  342. package/esm2022/components/select-tree/select-tree.component.mjs +458 -0
  343. package/esm2022/components/select-tree/select-tree.flatnode.mjs +3 -0
  344. package/esm2022/components/select-tree/select-tree.node.mjs +3 -0
  345. package/esm2022/components/timeline/cmat-components-timeline.mjs +5 -0
  346. package/esm2022/components/timeline/public-api.mjs +3 -0
  347. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +68 -0
  348. package/esm2022/components/timeline/timeline.component.mjs +114 -0
  349. package/esm2022/components/toast/cmat-components-toast.mjs +5 -0
  350. package/esm2022/components/toast/models/global-config.model.mjs +2 -0
  351. package/esm2022/components/toast/models/toast.model.mjs +2 -0
  352. package/esm2022/components/toast/models/type.model.mjs +2 -0
  353. package/esm2022/components/toast/public-api.mjs +3 -0
  354. package/esm2022/components/toast/toast-modal.component.mjs +53 -0
  355. package/esm2022/components/toast/toast.component.mjs +30 -0
  356. package/esm2022/components/toast/toast.service.mjs +122 -0
  357. package/esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs +5 -0
  358. package/esm2022/components/transfer-picker/filter/filter.component.mjs +85 -0
  359. package/esm2022/components/transfer-picker/interface.mjs +17 -0
  360. package/esm2022/components/transfer-picker/public-api.mjs +8 -0
  361. package/esm2022/components/transfer-picker/search/search.component.mjs +34 -0
  362. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +178 -0
  363. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +34 -0
  364. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +82 -0
  365. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +134 -0
  366. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +126 -0
  367. package/esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs +5 -0
  368. package/esm2022/directives/animate-on-scroll/public-api.mjs +2 -0
  369. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +38 -0
  370. package/esm2022/directives/autofocus/autofocus.directive.mjs +20 -0
  371. package/esm2022/directives/autofocus/cmat-directives-autofocus.mjs +5 -0
  372. package/esm2022/directives/autofocus/public-api.mjs +2 -0
  373. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +34 -0
  374. package/esm2022/directives/debounce/cmat-directives-debounce.mjs +5 -0
  375. package/esm2022/directives/debounce/debounce-click.directive.mjs +25 -0
  376. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +25 -0
  377. package/esm2022/directives/debounce/public-api.mjs +3 -0
  378. package/esm2022/directives/digit-only/cmat-directives-digit-only.mjs +5 -0
  379. package/esm2022/directives/digit-only/digit-only.directive.mjs +282 -0
  380. package/esm2022/directives/digit-only/mask.directive.mjs +69 -0
  381. package/esm2022/directives/digit-only/public-api.mjs +3 -0
  382. package/esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs +5 -0
  383. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +54 -0
  384. package/esm2022/directives/equal-validator/public-api.mjs +2 -0
  385. package/esm2022/lib/mock-api/cmat-lib-mock-api.mjs +5 -0
  386. package/esm2022/lib/mock-api/mock-api.constants.mjs +3 -0
  387. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +73 -0
  388. package/esm2022/lib/mock-api/mock-api.request-handler.mjs +48 -0
  389. package/esm2022/lib/mock-api/mock-api.service.mjs +93 -0
  390. package/esm2022/lib/mock-api/mock-api.types.mjs +2 -0
  391. package/esm2022/lib/mock-api/mock-api.utils.mjs +17 -0
  392. package/esm2022/lib/mock-api/public-api.mjs +6 -0
  393. package/esm2022/pipes/bytes/bytes.pipe.mjs +25 -0
  394. package/esm2022/pipes/bytes/cmat-pipes-bytes.mjs +5 -0
  395. package/esm2022/pipes/bytes/public-api.mjs +2 -0
  396. package/esm2022/pipes/date-format/cmat-pipes-date-format.mjs +5 -0
  397. package/esm2022/pipes/date-format/date-format.pipe.mjs +18 -0
  398. package/esm2022/pipes/date-format/public-api.mjs +2 -0
  399. package/esm2022/pipes/find-by-key/cmat-pipes-find-by-key.mjs +5 -0
  400. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +23 -0
  401. package/esm2022/pipes/find-by-key/public-api.mjs +2 -0
  402. package/esm2022/pipes/group-by/cmat-pipes-group-by.mjs +5 -0
  403. package/esm2022/pipes/group-by/group-by.pipe.mjs +29 -0
  404. package/esm2022/pipes/group-by/public-api.mjs +2 -0
  405. package/esm2022/pipes/keys/cmat-pipes-keys.mjs +5 -0
  406. package/esm2022/pipes/keys/keys.pipe.mjs +26 -0
  407. package/esm2022/pipes/keys/public-api.mjs +2 -0
  408. package/esm2022/pipes/secure/cmat-pipes-secure.mjs +5 -0
  409. package/esm2022/pipes/secure/public-api.mjs +2 -0
  410. package/esm2022/pipes/secure/secure-pipe.mjs +43 -0
  411. package/esm2022/pipes/uppercase/cmat-pipes-uppercase.mjs +5 -0
  412. package/esm2022/pipes/uppercase/public-api.mjs +2 -0
  413. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +17 -0
  414. package/esm2022/public-api.mjs +2 -0
  415. package/esm2022/services/alert/alert.dialog.mjs +12 -0
  416. package/esm2022/services/alert/alert.message.mjs +9 -0
  417. package/esm2022/services/alert/alert.service.mjs +165 -0
  418. package/esm2022/services/alert/cmat-services-alert.mjs +5 -0
  419. package/esm2022/services/alert/enum.mjs +15 -0
  420. package/esm2022/services/alert/public-api.mjs +5 -0
  421. package/esm2022/services/config/cmat-services-config.mjs +5 -0
  422. package/esm2022/services/config/config.constants.mjs +3 -0
  423. package/esm2022/services/config/config.service.mjs +35 -0
  424. package/esm2022/services/config/public-api.mjs +4 -0
  425. package/esm2022/services/config/urlStateConfig.service.mjs +30 -0
  426. package/esm2022/services/confirmation/cmat-services-confirmation.mjs +5 -0
  427. package/esm2022/services/confirmation/confirmation.service.mjs +51 -0
  428. package/esm2022/services/confirmation/confirmation.types.mjs +2 -0
  429. package/esm2022/services/confirmation/dialog/dialog.component.mjs +25 -0
  430. package/esm2022/services/confirmation/public-api.mjs +3 -0
  431. package/esm2022/services/data/cmat-services-data.mjs +5 -0
  432. package/esm2022/services/data/data.service.mjs +169 -0
  433. package/esm2022/services/data/public-api.mjs +2 -0
  434. package/esm2022/services/loading/cmat-services-loading.mjs +5 -0
  435. package/esm2022/services/loading/loading.interceptor.mjs +29 -0
  436. package/esm2022/services/loading/loading.service.mjs +72 -0
  437. package/esm2022/services/loading/public-api.mjs +3 -0
  438. package/esm2022/services/local-storage/cmat-services-local-storage.mjs +5 -0
  439. package/esm2022/services/local-storage/local-storage.service.mjs +22 -0
  440. package/esm2022/services/local-storage/public-api.mjs +2 -0
  441. package/esm2022/services/media-watcher/cmat-services-media-watcher.mjs +5 -0
  442. package/esm2022/services/media-watcher/media-watcher.service.mjs +55 -0
  443. package/esm2022/services/media-watcher/public-api.mjs +2 -0
  444. package/esm2022/services/platform/cmat-services-platform.mjs +5 -0
  445. package/esm2022/services/platform/platform.service.mjs +46 -0
  446. package/esm2022/services/platform/public-api.mjs +2 -0
  447. package/esm2022/services/splash-screen/cmat-services-splash-screen.mjs +5 -0
  448. package/esm2022/services/splash-screen/public-api.mjs +2 -0
  449. package/esm2022/services/splash-screen/splash-screen.service.mjs +42 -0
  450. package/esm2022/services/title/cmat-services-title.mjs +5 -0
  451. package/esm2022/services/title/public-api.mjs +2 -0
  452. package/esm2022/services/title/title.service.mjs +46 -0
  453. package/esm2022/services/translation/cmat-services-translation.mjs +5 -0
  454. package/esm2022/services/translation/public-api.mjs +2 -0
  455. package/esm2022/services/translation/translation.service.mjs +62 -0
  456. package/esm2022/services/utils/cmat-services-utils.mjs +5 -0
  457. package/esm2022/services/utils/public-api.mjs +2 -0
  458. package/esm2022/services/utils/utils.service.mjs +391 -0
  459. package/esm2022/validators/cmat-validators.mjs +5 -0
  460. package/esm2022/validators/public-api.mjs +2 -0
  461. package/esm2022/validators/validators.mjs +33 -0
  462. package/esm2022/version/cmat-version.mjs +5 -0
  463. package/esm2022/version/public-api.mjs +2 -0
  464. package/esm2022/version/version.mjs +11 -0
  465. package/fesm2022/cmat-animations.mjs +466 -0
  466. package/fesm2022/cmat-animations.mjs.map +1 -0
  467. package/fesm2022/cmat-components-adapter.mjs +600 -0
  468. package/fesm2022/cmat-components-adapter.mjs.map +1 -0
  469. package/fesm2022/cmat-components-breadcrumb.mjs +449 -0
  470. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -0
  471. package/fesm2022/cmat-components-card.mjs +65 -0
  472. package/fesm2022/cmat-components-card.mjs.map +1 -0
  473. package/fesm2022/cmat-components-cascade.mjs +334 -0
  474. package/fesm2022/cmat-components-cascade.mjs.map +1 -0
  475. package/fesm2022/cmat-components-date-range.mjs +547 -0
  476. package/fesm2022/cmat-components-date-range.mjs.map +1 -0
  477. package/fesm2022/cmat-components-drawer.mjs +346 -0
  478. package/fesm2022/cmat-components-drawer.mjs.map +1 -0
  479. package/fesm2022/cmat-components-fullscreen.mjs +108 -0
  480. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -0
  481. package/fesm2022/cmat-components-highlight.mjs +131 -0
  482. package/fesm2022/cmat-components-highlight.mjs.map +1 -0
  483. package/fesm2022/cmat-components-masonry.mjs +61 -0
  484. package/fesm2022/cmat-components-masonry.mjs.map +1 -0
  485. package/fesm2022/cmat-components-material-color-picker.mjs +160 -0
  486. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -0
  487. package/fesm2022/cmat-components-material-datetimepicker.mjs +2976 -0
  488. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -0
  489. package/fesm2022/cmat-components-navigation.mjs +1656 -0
  490. package/fesm2022/cmat-components-navigation.mjs.map +1 -0
  491. package/fesm2022/cmat-components-pagination.mjs +455 -0
  492. package/fesm2022/cmat-components-pagination.mjs.map +1 -0
  493. package/fesm2022/cmat-components-password-strength.mjs +489 -0
  494. package/fesm2022/cmat-components-password-strength.mjs.map +1 -0
  495. package/fesm2022/cmat-components-popover.mjs +383 -0
  496. package/fesm2022/cmat-components-popover.mjs.map +1 -0
  497. package/fesm2022/cmat-components-progress-bar.mjs +62 -0
  498. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -0
  499. package/fesm2022/cmat-components-rating.mjs +98 -0
  500. package/fesm2022/cmat-components-rating.mjs.map +1 -0
  501. package/fesm2022/cmat-components-select-search.mjs +531 -0
  502. package/fesm2022/cmat-components-select-search.mjs.map +1 -0
  503. package/fesm2022/cmat-components-select-tree.mjs +467 -0
  504. package/fesm2022/cmat-components-select-tree.mjs.map +1 -0
  505. package/fesm2022/cmat-components-timeline.mjs +186 -0
  506. package/fesm2022/cmat-components-timeline.mjs.map +1 -0
  507. package/fesm2022/cmat-components-toast.mjs +205 -0
  508. package/fesm2022/cmat-components-toast.mjs.map +1 -0
  509. package/fesm2022/cmat-components-transfer-picker.mjs +536 -0
  510. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -0
  511. package/fesm2022/cmat-directives-animate-on-scroll.mjs +166 -0
  512. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -0
  513. package/fesm2022/cmat-directives-autofocus.mjs +27 -0
  514. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -0
  515. package/fesm2022/cmat-directives-debounce.mjs +85 -0
  516. package/fesm2022/cmat-directives-debounce.mjs.map +1 -0
  517. package/fesm2022/cmat-directives-digit-only.mjs +356 -0
  518. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -0
  519. package/fesm2022/cmat-directives-equal-validator.mjs +61 -0
  520. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -0
  521. package/fesm2022/cmat-lib-mock-api.mjs +232 -0
  522. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -0
  523. package/fesm2022/cmat-pipes-bytes.mjs +32 -0
  524. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -0
  525. package/fesm2022/cmat-pipes-date-format.mjs +25 -0
  526. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -0
  527. package/fesm2022/cmat-pipes-find-by-key.mjs +30 -0
  528. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -0
  529. package/fesm2022/cmat-pipes-group-by.mjs +36 -0
  530. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -0
  531. package/fesm2022/cmat-pipes-keys.mjs +33 -0
  532. package/fesm2022/cmat-pipes-keys.mjs.map +1 -0
  533. package/fesm2022/cmat-pipes-secure.mjs +50 -0
  534. package/fesm2022/cmat-pipes-secure.mjs.map +1 -0
  535. package/fesm2022/cmat-pipes-uppercase.mjs +24 -0
  536. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -0
  537. package/fesm2022/cmat-services-alert.mjs +207 -0
  538. package/fesm2022/cmat-services-alert.mjs.map +1 -0
  539. package/fesm2022/cmat-services-config.mjs +69 -0
  540. package/fesm2022/cmat-services-config.mjs.map +1 -0
  541. package/fesm2022/cmat-services-confirmation.mjs +79 -0
  542. package/fesm2022/cmat-services-confirmation.mjs.map +1 -0
  543. package/fesm2022/cmat-services-data.mjs +176 -0
  544. package/fesm2022/cmat-services-data.mjs.map +1 -0
  545. package/fesm2022/cmat-services-loading.mjs +104 -0
  546. package/fesm2022/cmat-services-loading.mjs.map +1 -0
  547. package/fesm2022/cmat-services-local-storage.mjs +29 -0
  548. package/fesm2022/cmat-services-local-storage.mjs.map +1 -0
  549. package/fesm2022/cmat-services-media-watcher.mjs +62 -0
  550. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -0
  551. package/fesm2022/cmat-services-platform.mjs +53 -0
  552. package/fesm2022/cmat-services-platform.mjs.map +1 -0
  553. package/fesm2022/cmat-services-splash-screen.mjs +49 -0
  554. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -0
  555. package/fesm2022/cmat-services-title.mjs +53 -0
  556. package/fesm2022/cmat-services-title.mjs.map +1 -0
  557. package/fesm2022/cmat-services-translation.mjs +69 -0
  558. package/fesm2022/cmat-services-translation.mjs.map +1 -0
  559. package/fesm2022/cmat-services-utils.mjs +398 -0
  560. package/fesm2022/cmat-services-utils.mjs.map +1 -0
  561. package/fesm2022/cmat-validators.mjs +39 -0
  562. package/fesm2022/cmat-validators.mjs.map +1 -0
  563. package/fesm2022/cmat-version.mjs +17 -0
  564. package/fesm2022/cmat-version.mjs.map +1 -0
  565. package/fesm2022/cmat.mjs +4 -0
  566. package/fesm2022/cmat.mjs.map +1 -0
  567. package/icons/CSV.svg +3 -0
  568. package/icons/EXCEL.svg +3 -0
  569. package/icons/FILE.svg +3 -0
  570. package/icons/GIF.svg +3 -0
  571. package/icons/JPG.svg +3 -0
  572. package/icons/PDF.svg +3 -0
  573. package/icons/PNG.svg +3 -0
  574. package/icons/PPT.svg +3 -0
  575. package/icons/TEXT.svg +3 -0
  576. package/icons/VIDEO.svg +3 -0
  577. package/icons/WORD.svg +3 -0
  578. package/icons/ZIP.svg +3 -0
  579. package/icons/arrow-cursor.svg +3 -0
  580. package/icons/material-icons/heroicons-outline.svg +893 -0
  581. package/icons/material-icons/heroicons-solid.svg +958 -0
  582. package/icons/material-icons/material-outline.svg +3586 -0
  583. package/icons/material-icons/material-solid.svg +3586 -0
  584. package/index.d.ts +5 -0
  585. package/lib/mock-api/index.d.ts +5 -0
  586. package/lib/mock-api/mock-api.constants.d.ts +2 -0
  587. package/lib/mock-api/mock-api.interceptor.d.ts +12 -0
  588. package/lib/mock-api/mock-api.request-handler.d.ts +18 -0
  589. package/lib/mock-api/mock-api.service.d.ts +22 -0
  590. package/lib/mock-api/mock-api.types.d.ts +9 -0
  591. package/lib/mock-api/mock-api.utils.d.ts +3 -0
  592. package/lib/mock-api/public-api.d.ts +5 -0
  593. package/package.json +344 -0
  594. package/pipes/bytes/bytes.pipe.d.ts +7 -0
  595. package/pipes/bytes/index.d.ts +5 -0
  596. package/pipes/bytes/public-api.d.ts +1 -0
  597. package/pipes/date-format/date-format.pipe.d.ts +7 -0
  598. package/pipes/date-format/index.d.ts +5 -0
  599. package/pipes/date-format/public-api.d.ts +1 -0
  600. package/pipes/find-by-key/find-by-key.pipe.d.ts +7 -0
  601. package/pipes/find-by-key/index.d.ts +5 -0
  602. package/pipes/find-by-key/public-api.d.ts +1 -0
  603. package/pipes/group-by/group-by.pipe.d.ts +7 -0
  604. package/pipes/group-by/index.d.ts +5 -0
  605. package/pipes/group-by/public-api.d.ts +1 -0
  606. package/pipes/keys/index.d.ts +5 -0
  607. package/pipes/keys/keys.pipe.d.ts +7 -0
  608. package/pipes/keys/public-api.d.ts +1 -0
  609. package/pipes/secure/index.d.ts +5 -0
  610. package/pipes/secure/public-api.d.ts +1 -0
  611. package/pipes/secure/secure-pipe.d.ts +18 -0
  612. package/pipes/uppercase/index.d.ts +5 -0
  613. package/pipes/uppercase/public-api.d.ts +1 -0
  614. package/pipes/uppercase/uppercase.pipe.d.ts +7 -0
  615. package/public-api.d.ts +1 -0
  616. package/services/alert/alert.dialog.d.ts +11 -0
  617. package/services/alert/alert.message.d.ts +8 -0
  618. package/services/alert/alert.service.d.ts +37 -0
  619. package/services/alert/enum.d.ts +12 -0
  620. package/services/alert/index.d.ts +5 -0
  621. package/services/alert/public-api.d.ts +4 -0
  622. package/services/config/config.constants.d.ts +6 -0
  623. package/services/config/config.service.d.ts +11 -0
  624. package/services/config/index.d.ts +5 -0
  625. package/services/config/public-api.d.ts +3 -0
  626. package/services/config/urlStateConfig.service.d.ts +10 -0
  627. package/services/confirmation/confirmation.service.d.ts +12 -0
  628. package/services/confirmation/confirmation.types.d.ts +21 -0
  629. package/services/confirmation/dialog/dialog.component.d.ts +10 -0
  630. package/services/confirmation/index.d.ts +5 -0
  631. package/services/confirmation/public-api.d.ts +2 -0
  632. package/services/data/data.service.d.ts +20 -0
  633. package/services/data/index.d.ts +5 -0
  634. package/services/data/public-api.d.ts +1 -0
  635. package/services/loading/index.d.ts +5 -0
  636. package/services/loading/loading.interceptor.d.ts +12 -0
  637. package/services/loading/loading.service.d.ts +24 -0
  638. package/services/loading/public-api.d.ts +2 -0
  639. package/services/local-storage/index.d.ts +5 -0
  640. package/services/local-storage/local-storage.service.d.ts +8 -0
  641. package/services/local-storage/public-api.d.ts +1 -0
  642. package/services/media-watcher/index.d.ts +5 -0
  643. package/services/media-watcher/media-watcher.service.d.ts +20 -0
  644. package/services/media-watcher/public-api.d.ts +1 -0
  645. package/services/platform/index.d.ts +5 -0
  646. package/services/platform/platform.service.d.ts +9 -0
  647. package/services/platform/public-api.d.ts +1 -0
  648. package/services/splash-screen/index.d.ts +5 -0
  649. package/services/splash-screen/public-api.d.ts +1 -0
  650. package/services/splash-screen/splash-screen.service.d.ts +14 -0
  651. package/services/title/index.d.ts +5 -0
  652. package/services/title/public-api.d.ts +1 -0
  653. package/services/title/title.service.d.ts +13 -0
  654. package/services/translation/index.d.ts +5 -0
  655. package/services/translation/public-api.d.ts +1 -0
  656. package/services/translation/translation.service.d.ts +20 -0
  657. package/services/utils/index.d.ts +5 -0
  658. package/services/utils/public-api.d.ts +1 -0
  659. package/services/utils/utils.service.d.ts +57 -0
  660. package/styles/components/input.scss +42 -0
  661. package/styles/main.scss +9 -0
  662. package/styles/overrides/angular-material.scss +1403 -0
  663. package/styles/overrides/fullcalendar.scss +550 -0
  664. package/styles/overrides/highlightjs.scss +81 -0
  665. package/styles/styles.scss +3 -0
  666. package/styles/tailwind.scss +86 -0
  667. package/styles/themes.scss +164 -0
  668. package/styles/user-themes.scss +1 -0
  669. package/tailwind/plugins/icon-size.js +49 -0
  670. package/tailwind/plugins/theming.js +256 -0
  671. package/tailwind/plugins/utilities.js +66 -0
  672. package/tailwind/utils/generate-contrasts.js +29 -0
  673. package/tailwind/utils/generate-palette.js +100 -0
  674. package/tailwind/utils/json-to-sass-map.js +67 -0
  675. package/validators/index.d.ts +5 -0
  676. package/validators/public-api.d.ts +1 -0
  677. package/validators/validators.d.ts +5 -0
  678. package/version/index.d.ts +5 -0
  679. package/version/public-api.d.ts +1 -0
  680. package/version/version.d.ts +9 -0
@@ -0,0 +1,2 @@
1
+ export * from './select-tree.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9zZWxlY3QtdHJlZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlbGVjdC10cmVlLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,458 @@
1
+ import { ChangeDetectionStrategy, Component, forwardRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
+ import { merge, ReplaySubject, Subject } from 'rxjs';
4
+ import { debounceTime, takeUntil } from 'rxjs/operators';
5
+ import { SelectionModel } from '@angular/cdk/collections';
6
+ import { FlatTreeControl } from '@angular/cdk/tree';
7
+ import { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';
8
+ import { MatSelectModule } from '@angular/material/select';
9
+ import { CmatSelectTreeFlatNode } from './select-tree.flatnode';
10
+ import { MatCheckboxModule } from '@angular/material/checkbox';
11
+ import { MatButtonModule } from '@angular/material/button';
12
+ import { CmatSelectSearchComponent } from 'cmat/components/select-search';
13
+ import { MatIconModule } from '@angular/material/icon';
14
+ import { NgIf, NgFor, NgClass, AsyncPipe, NgStyle } from '@angular/common';
15
+ import { MatFormFieldModule } from '@angular/material/form-field';
16
+ import { isNil } from 'lodash-es';
17
+ import * as i0 from "@angular/core";
18
+ import * as i1 from "@angular/material/form-field";
19
+ import * as i2 from "@angular/material/icon";
20
+ import * as i3 from "@angular/material/select";
21
+ import * as i4 from "@angular/material/core";
22
+ import * as i5 from "@angular/forms";
23
+ import * as i6 from "@angular/material/tree";
24
+ import * as i7 from "@angular/material/button";
25
+ import * as i8 from "@angular/material/checkbox";
26
+ export class CmatSelectTreeComponent {
27
+ constructor(_cd) {
28
+ this._cd = _cd;
29
+ this.showLabel = true;
30
+ this.noEntriesFoundLabel = '无结果';
31
+ this.showNoFoundLabel = true;
32
+ this.placeholder = '部门';
33
+ this.prefixIcon = 'heroicons_solid:building-library';
34
+ this.overallSearchEnabled = true;
35
+ this.canNull = false;
36
+ this.showToggleAllCheckbox = false;
37
+ this.flatNodeMap = new Map();
38
+ this.nestedNodeMap = new Map();
39
+ this.selectedParent = null;
40
+ this.checklistSelection = new SelectionModel(true);
41
+ this.isIndeterminate = false;
42
+ this.isChecked = false;
43
+ this.dataCount = 0;
44
+ this.matSelectData = new ReplaySubject(1);
45
+ this._controlValueAccessorKeys = [
46
+ 'formControl',
47
+ 'formControlName'
48
+ ];
49
+ this._unsubscribeAll = new Subject();
50
+ this.getLevel = (node) => node.level;
51
+ this.isExpandable = (node) => node.expandable;
52
+ this.getChildren = (node) => node.children;
53
+ this.hasChild = (_, _nodeData) => _nodeData.expandable;
54
+ this.hasNoContent = (_, _nodeData) => _nodeData.name === '';
55
+ this.transformer = (node, level) => {
56
+ const existingNode = this.nestedNodeMap.get(node);
57
+ const flatNode = existingNode && existingNode.name === node.name
58
+ ? existingNode
59
+ : new CmatSelectTreeFlatNode();
60
+ flatNode.id = node.id;
61
+ flatNode.name = node.name;
62
+ flatNode.level = level;
63
+ flatNode.expandable = !!node.children && node.children.length > 0;
64
+ this.flatNodeMap.set(flatNode, node);
65
+ this.nestedNodeMap.set(node, flatNode);
66
+ return flatNode;
67
+ };
68
+ this.overallFilterControl = new FormControl();
69
+ this.treeFlattener = new MatTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);
70
+ this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
71
+ this.treeDataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);
72
+ }
73
+ ngOnInit() {
74
+ this.multiple = this.multiple || false;
75
+ this.required = this.required || false;
76
+ this.treeDataSource.data = this.dataSource;
77
+ this.dataCount = this.treeControl.dataNodes.length;
78
+ this.matSelectData.next(this.treeControl.dataNodes);
79
+ if (this.expandable) {
80
+ this.treeControl.expandAll();
81
+ }
82
+ let panelClass = '';
83
+ if (!this.overallSearchEnabled) {
84
+ panelClass = 'cmat-select-search-panel overflow-auto md:overflow-hidden';
85
+ }
86
+ if (this._matSelect.panelClass) {
87
+ if (Array.isArray(this._matSelect.panelClass)) {
88
+ this._matSelect.panelClass.push(panelClass);
89
+ }
90
+ else if (typeof this._matSelect.panelClass === 'string') {
91
+ this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];
92
+ }
93
+ else if (typeof this._matSelect.panelClass === 'object') {
94
+ this._matSelect.panelClass.entries[panelClass] = true;
95
+ }
96
+ }
97
+ else {
98
+ this._matSelect.panelClass = panelClass;
99
+ }
100
+ this._matSelect.openedChange
101
+ .pipe(takeUntil(this._unsubscribeAll))
102
+ .subscribe((opened) => {
103
+ if (opened && this.multiple) {
104
+ this.checklistSelection.selected.forEach((node) => {
105
+ if (node.expandable) {
106
+ const descendants = this.treeControl.getDescendants(node);
107
+ this.checklistSelection.select(...descendants);
108
+ }
109
+ });
110
+ }
111
+ if (!opened) {
112
+ if (this.overallSearchEnabled) {
113
+ this._resetFilters();
114
+ }
115
+ setTimeout(() => {
116
+ if (!isNil(this.checklistSelection.selected)) {
117
+ if (this.multiple) {
118
+ const findOutNode = [];
119
+ this.checklistSelection.selected.forEach((node) => {
120
+ const parentNode = this.getParentNode(node);
121
+ if (parentNode && this.checklistSelection.isSelected(parentNode)) {
122
+ findOutNode.push(node);
123
+ }
124
+ });
125
+ findOutNode.forEach((node) => {
126
+ this.checklistSelection.deselect(node);
127
+ });
128
+ this._matSelect.writeValue(this.checklistSelection.selected);
129
+ if (this._matSelect.value !== this.checklistSelection.selected) {
130
+ this._matSelect.value = this.checklistSelection.selected;
131
+ }
132
+ this._matSelect._onChange(this.checklistSelection.selected);
133
+ }
134
+ else {
135
+ if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {
136
+ this._matSelect.writeValue(this.checklistSelection.selected[0]);
137
+ if (this._matSelect.value !== this.checklistSelection.selected[0]) {
138
+ this._matSelect.value = this.checklistSelection.selected[0];
139
+ }
140
+ this._matSelect._onChange(this.checklistSelection.selected[0]);
141
+ }
142
+ }
143
+ }
144
+ }, 200);
145
+ }
146
+ });
147
+ }
148
+ ngAfterViewInit() {
149
+ merge(this.overallFilterControl.valueChanges)
150
+ .pipe(takeUntil(this._unsubscribeAll), debounceTime(200))
151
+ .subscribe(() => {
152
+ const dataClone = JSON.parse(JSON.stringify([...this.dataSource]));
153
+ const arr = [];
154
+ for (let i = dataClone.length - 1; i >= 0; i--) {
155
+ if (!this._applyColumnLevelFilters(dataClone[i], this.overallFilterControl.value.toLowerCase())) {
156
+ arr.push(i);
157
+ }
158
+ }
159
+ arr.forEach((v) => { dataClone.splice(v, 1); });
160
+ this.treeDataSource.data = dataClone;
161
+ this.matSelectData.next(this.treeControl.dataNodes);
162
+ if (this.expandable) {
163
+ this.treeControl.expandAll();
164
+ }
165
+ this._updateSelect(this.checklistSelection.selected);
166
+ this._cd.detectChanges();
167
+ });
168
+ }
169
+ ngOnDestroy() {
170
+ this._unsubscribeAll.next(void 0);
171
+ this._unsubscribeAll.complete();
172
+ }
173
+ registerOnChange(fn) {
174
+ const proxyFn = (value) => {
175
+ fn(value);
176
+ };
177
+ this._matSelect.registerOnChange(proxyFn);
178
+ }
179
+ registerOnTouched(fn) {
180
+ this._matSelect.registerOnTouched(fn);
181
+ }
182
+ setDisabledState(isDisabled) {
183
+ this._matSelect.setDisabledState(isDisabled);
184
+ }
185
+ writeValue(value) {
186
+ if (!isNil(value)) {
187
+ this._updateChecklistSelection(value);
188
+ }
189
+ else {
190
+ this.checklistSelection.clear();
191
+ }
192
+ if (this.multiple) {
193
+ this._matSelect.writeValue(this.checklistSelection.selected);
194
+ if (this._matSelect.value !== this.checklistSelection.selected) {
195
+ this._matSelect.value = this.checklistSelection.selected;
196
+ }
197
+ }
198
+ else {
199
+ this._matSelect.writeValue(this.checklistSelection.selected[0]);
200
+ if (this._matSelect.value !== this.checklistSelection.selected[0]) {
201
+ this._matSelect.value = this.checklistSelection.selected[0];
202
+ }
203
+ }
204
+ }
205
+ ngOnChanges(changes) {
206
+ if (!isNil(changes['matSelectConfigurator'])) {
207
+ const configuration = changes['matSelectConfigurator'].currentValue;
208
+ Object.keys(configuration)
209
+ .filter(key => !['multiple', 'panelClass'].includes(key) && !this._controlValueAccessorKeys.includes(key))
210
+ .forEach(key => this._matSelect[key] = configuration[key]);
211
+ }
212
+ }
213
+ simpleTriggerLabelFn(value) {
214
+ return value.map((node) => {
215
+ if (isNil(node)) {
216
+ return '';
217
+ }
218
+ if (isNil(this.customTriggerLabelTemplate)
219
+ || typeof this.customTriggerLabelTemplate !== 'string'
220
+ || this.customTriggerLabelTemplate.trim().length === 0) {
221
+ return `${node.id}`;
222
+ }
223
+ let atLeastPartialSubstitution = false;
224
+ const substitution = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) => !isNil(node[key]) && (atLeastPartialSubstitution = true) ? node[key] : '');
225
+ if (atLeastPartialSubstitution === false) {
226
+ return `${node.id}`;
227
+ }
228
+ return substitution.trim();
229
+ }).join(', ');
230
+ }
231
+ /** Whether all the descendants of the node are selected. */
232
+ descendantsAllSelected(node) {
233
+ const descendants = this.treeControl.getDescendants(node);
234
+ return descendants.every(child => this.checklistSelection.isSelected(child));
235
+ }
236
+ /** Whether part of the descendants are selected */
237
+ descendantsPartiallySelected(node) {
238
+ const descendants = this.treeControl.getDescendants(node);
239
+ const result = descendants.some(child => this.checklistSelection.isSelected(child));
240
+ return result && !this.descendantsAllSelected(node);
241
+ }
242
+ /** Toggle the to-do item selection. Select/deselect all the descendants node */
243
+ todoItemSelectionToggle(event, node) {
244
+ event.stopPropagation();
245
+ if (this.multiple) {
246
+ this.checklistSelection.toggle(node);
247
+ const descendants = this.treeControl.getDescendants(node);
248
+ this.checklistSelection.isSelected(node) ? this.checklistSelection.select(...descendants) : this.checklistSelection.deselect(...descendants);
249
+ this.checkAllParentsSelection(node);
250
+ if (this.showToggleAllCheckbox) {
251
+ this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;
252
+ this.isChecked = this.checklistSelection.selected.length === this.dataCount;
253
+ }
254
+ }
255
+ else {
256
+ this.checklistSelection.clear();
257
+ this.checklistSelection.select(node);
258
+ this._matSelect.close();
259
+ }
260
+ }
261
+ /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */
262
+ todoLeafItemSelectionToggle(event, node) {
263
+ event.stopPropagation();
264
+ if (this.multiple) {
265
+ this.checklistSelection.toggle(node);
266
+ this.checkAllParentsSelection(node);
267
+ if (this.showToggleAllCheckbox) {
268
+ this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;
269
+ this.isChecked = this.checklistSelection.selected.length === this.dataCount;
270
+ }
271
+ }
272
+ else {
273
+ this.checklistSelection.clear();
274
+ this.checklistSelection.select(node);
275
+ this._matSelect.close();
276
+ }
277
+ }
278
+ noClick() {
279
+ return false;
280
+ }
281
+ /* Checks all the parents when a leaf node is selected/unselected */
282
+ checkAllParentsSelection(node) {
283
+ let parent = this.getParentNode(node);
284
+ while (parent) {
285
+ parent.expandable = true;
286
+ this.treeControl.expand(parent);
287
+ this.checkRootNodeSelection(parent);
288
+ parent = this.getParentNode(parent);
289
+ }
290
+ }
291
+ /** Check root node checked state and change it accordingly */
292
+ checkRootNodeSelection(node) {
293
+ const nodeSelected = this.checklistSelection.isSelected(node);
294
+ const descendants = this.treeControl.getDescendants(node);
295
+ const descAllSelected = descendants.every(child => this.checklistSelection.isSelected(child));
296
+ if (nodeSelected && !descAllSelected) {
297
+ this.checklistSelection.deselect(node);
298
+ }
299
+ else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {
300
+ this.checklistSelection.select(node);
301
+ }
302
+ }
303
+ /* Get the parent node of a node */
304
+ getParentNode(node) {
305
+ const currentLevel = this.getLevel(node);
306
+ if (currentLevel < 1) {
307
+ return null;
308
+ }
309
+ const startIndex = this.treeControl.dataNodes.indexOf(node) - 1;
310
+ for (let i = startIndex; i >= 0; i--) {
311
+ const currentNode = this.treeControl.dataNodes[i];
312
+ if (this.getLevel(currentNode) < currentLevel) {
313
+ return currentNode;
314
+ }
315
+ }
316
+ return null;
317
+ }
318
+ toggleSelectAll(selectAllValue) {
319
+ if (selectAllValue) {
320
+ this.treeControl.dataNodes.forEach((node) => {
321
+ this.checklistSelection.select(node);
322
+ this.checkAllParentsSelection(node);
323
+ });
324
+ this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;
325
+ this.isChecked = this.checklistSelection.selected.length === this.dataCount;
326
+ }
327
+ else {
328
+ this.checklistSelection.clear();
329
+ this.isChecked = false;
330
+ this.isIndeterminate = false;
331
+ }
332
+ }
333
+ compareObjects(o1, o2) {
334
+ return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;
335
+ }
336
+ trackByFn(index, item) {
337
+ return index || item;
338
+ }
339
+ _updateChecklistSelection(value) {
340
+ this.checklistSelection.clear();
341
+ if (!isNil(value)) {
342
+ const valueArray = !Array.isArray(value) ? [value] : value;
343
+ valueArray.forEach((item) => {
344
+ const nodeFound = this.treeControl.dataNodes.find(node => node.id === item.id);
345
+ if (isNil(nodeFound)) {
346
+ return;
347
+ }
348
+ this.checklistSelection.select(nodeFound);
349
+ });
350
+ }
351
+ }
352
+ _updateSelect(value) {
353
+ if (!isNil(value)) {
354
+ const valueArray = !Array.isArray(value) ? [value] : value;
355
+ if (this.overallSearchEnabled) //有搜索功能,转化选中节点为当前数据源节点
356
+ {
357
+ valueArray.forEach((item) => {
358
+ const nodeFound = this.treeControl.dataNodes.find(node => node.id === item.id);
359
+ if (isNil(nodeFound)) {
360
+ return;
361
+ }
362
+ this.checklistSelection.deselect(item);
363
+ this.checklistSelection.select(nodeFound);
364
+ });
365
+ }
366
+ if (this.multiple) {
367
+ this.checklistSelection.selected.forEach((item) => {
368
+ this.checkAllParentsSelection(item);
369
+ });
370
+ }
371
+ if (this.showToggleAllCheckbox) {
372
+ this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;
373
+ this.isChecked = this.checklistSelection.selected.length === this.dataCount;
374
+ }
375
+ }
376
+ }
377
+ _applyColumnLevelFilters(node, filter) {
378
+ let result = false;
379
+ if (node && node.children && node.children.length > 0) {
380
+ for (let i = node.children.length - 1; i >= 0; i--) {
381
+ const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);
382
+ if (!resultTemp) {
383
+ node.children.splice(i, 1);
384
+ }
385
+ result = resultTemp || result;
386
+ }
387
+ }
388
+ if (node && node.children && node.children.length === 0) {
389
+ node.children = null;
390
+ }
391
+ const cellValue = node['name'].toLowerCase();
392
+ if (cellValue.indexOf(filter) > -1) {
393
+ result = true;
394
+ }
395
+ return result;
396
+ }
397
+ _resetFilters() {
398
+ if (this.overallSearchEnabled) {
399
+ this.overallFilterControl.setValue('');
400
+ }
401
+ }
402
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatSelectTreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
403
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: CmatSelectTreeComponent, isStandalone: true, selector: "cmat-select-tree", inputs: { dataSource: "dataSource", showLabel: "showLabel", noEntriesFoundLabel: "noEntriesFoundLabel", showNoFoundLabel: "showNoFoundLabel", placeholder: "placeholder", prefixIcon: "prefixIcon", multiple: "multiple", required: "required", overallSearchEnabled: "overallSearchEnabled", canNull: "canNull", customTriggerLabelFn: "customTriggerLabelFn", customTriggerLabelTemplate: "customTriggerLabelTemplate", matSelectConfigurator: "matSelectConfigurator", matSelectSearchConfigurator: "matSelectSearchConfigurator", expandable: "expandable", showToggleAllCheckbox: "showToggleAllCheckbox" }, providers: [
404
+ {
405
+ provide: NG_VALUE_ACCESSOR,
406
+ useExisting: forwardRef(() => CmatSelectTreeComponent),
407
+ multi: true
408
+ }
409
+ ], viewQueries: [{ propertyName: "_matSelect", first: true, predicate: ["componentSelect"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-form-field class=\"w-full\">\r\n <mat-label *ngIf=\"showLabel\">{{placeholder}}</mat-label>\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\r\n <mat-select #componentSelect [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\r\n [compareWith]=\"compareObjects\">\r\n <mat-select-trigger>\r\n <ng-container *ngIf=\"!customTriggerLabelFn\">{{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n </ng-container>\r\n <ng-container *ngIf=\"customTriggerLabelFn\">{{customTriggerLabelFn}}\r\n </ng-container>\r\n </mat-select-trigger>\r\n\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-option *ngIf=\"overallSearchEnabled\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\r\n </cmat-select-search>\r\n </mat-option>\r\n <mat-option *ngIf=\"canNull\">\u7A7A</mat-option>\r\n <mat-option *ngFor=\"let selectData of matSelectData | async ;trackBy: trackByFn\" class=\"hidden\"\r\n [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" class=\"checklist-leaf-node\" (click)=\"noClick()\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'toggle ' + node.filename\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" [checked]=\"descendantsAllSelected(node)\" (click)=\"noClick()\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </mat-select>\r\n</mat-form-field>", styles: ["cmat-select-tree{display:block;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;@apply flex flex-row;}cmat-select-tree .cmat-select-search-inner span{@apply flex place-items-center;}cmat-select-tree .cmat-select-search-no-entries-found{@apply w-full text-center bg-card rounded;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}.mat-tree-node{@apply hover:bg-hover cursor-pointer;}.selected{@apply text-primary bg-hover !important;}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: CmatSelectSearchComponent, selector: "cmat-select-search", inputs: ["placeholderLabel", "type", "noEntriesFoundLabel", "showNoFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"], exportAs: ["cmatSelectSearch"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i6.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i6.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i6.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i6.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i6.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
410
+ }
411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatSelectTreeComponent, decorators: [{
412
+ type: Component,
413
+ args: [{ selector: 'cmat-select-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
414
+ {
415
+ provide: NG_VALUE_ACCESSOR,
416
+ useExisting: forwardRef(() => CmatSelectTreeComponent),
417
+ multi: true
418
+ }
419
+ ], standalone: true, imports: [MatFormFieldModule, NgIf, MatIconModule, MatSelectModule,
420
+ CmatSelectSearchComponent, FormsModule, ReactiveFormsModule, NgFor, MatTreeModule, NgClass,
421
+ MatButtonModule, MatCheckboxModule, AsyncPipe, NgStyle], template: "<mat-form-field class=\"w-full\">\r\n <mat-label *ngIf=\"showLabel\">{{placeholder}}</mat-label>\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\r\n <mat-select #componentSelect [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\r\n [compareWith]=\"compareObjects\">\r\n <mat-select-trigger>\r\n <ng-container *ngIf=\"!customTriggerLabelFn\">{{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n </ng-container>\r\n <ng-container *ngIf=\"customTriggerLabelFn\">{{customTriggerLabelFn}}\r\n </ng-container>\r\n </mat-select-trigger>\r\n\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-option *ngIf=\"overallSearchEnabled\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\r\n </cmat-select-search>\r\n </mat-option>\r\n <mat-option *ngIf=\"canNull\">\u7A7A</mat-option>\r\n <mat-option *ngFor=\"let selectData of matSelectData | async ;trackBy: trackByFn\" class=\"hidden\"\r\n [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" class=\"checklist-leaf-node\" (click)=\"noClick()\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'toggle ' + node.filename\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" [checked]=\"descendantsAllSelected(node)\" (click)=\"noClick()\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </mat-select>\r\n</mat-form-field>", styles: ["cmat-select-tree{display:block;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;@apply flex flex-row;}cmat-select-tree .cmat-select-search-inner span{@apply flex place-items-center;}cmat-select-tree .cmat-select-search-no-entries-found{@apply w-full text-center bg-card rounded;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}.mat-tree-node{@apply hover:bg-hover cursor-pointer;}.selected{@apply text-primary bg-hover !important;}\n"] }]
422
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { dataSource: [{
423
+ type: Input
424
+ }], showLabel: [{
425
+ type: Input
426
+ }], noEntriesFoundLabel: [{
427
+ type: Input
428
+ }], showNoFoundLabel: [{
429
+ type: Input
430
+ }], placeholder: [{
431
+ type: Input
432
+ }], prefixIcon: [{
433
+ type: Input
434
+ }], multiple: [{
435
+ type: Input
436
+ }], required: [{
437
+ type: Input
438
+ }], overallSearchEnabled: [{
439
+ type: Input
440
+ }], canNull: [{
441
+ type: Input
442
+ }], customTriggerLabelFn: [{
443
+ type: Input
444
+ }], customTriggerLabelTemplate: [{
445
+ type: Input
446
+ }], matSelectConfigurator: [{
447
+ type: Input
448
+ }], matSelectSearchConfigurator: [{
449
+ type: Input
450
+ }], expandable: [{
451
+ type: Input
452
+ }], showToggleAllCheckbox: [{
453
+ type: Input
454
+ }], _matSelect: [{
455
+ type: ViewChild,
456
+ args: ['componentSelect', { static: true }]
457
+ }] } });
458
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3NlbGVjdC10cmVlL3NlbGVjdC10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUlMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEgsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEcsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVB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QTBCO3NCQUFsQyxLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRWtELFVBQVU7c0JBQWpFLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIsIE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0LCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIH0gZnJvbSAnLi9zZWxlY3QtdHJlZS5mbGF0bm9kZSc7XHJcbmltcG9ydCB7IENtYXRTZWxlY3RUcmVlTm9kZSB9IGZyb20gJy4vc2VsZWN0LXRyZWUubm9kZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBDbWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnY21hdC9jb21wb25lbnRzL3NlbGVjdC1zZWFyY2gnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ0NsYXNzLCBBc3luY1BpcGUsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtc2VsZWN0LXRyZWUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC10cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC10cmVlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbWF0U2VsZWN0VHJlZUNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkTW9kdWxlLCBOZ0lmLCBNYXRJY29uTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICAgICAgQ21hdFNlbGVjdFNlYXJjaENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nRm9yLCBNYXRUcmVlTW9kdWxlLCBOZ0NsYXNzLFxyXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Q2hlY2tib3hNb2R1bGUsIEFzeW5jUGlwZSwgTmdTdHlsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXRTZWxlY3RUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGFTb3VyY2U6IENtYXRTZWxlY3RUcmVlTm9kZVtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgbm9FbnRyaWVzRm91bmRMYWJlbCA9ICfml6Dnu5PmnpwnO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dOb0ZvdW5kTGFiZWwgPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAn6YOo6ZeoJztcclxuXHJcbiAgICBASW5wdXQoKSBwcmVmaXhJY29uOiBzdHJpbmcgPSAnaGVyb2ljb25zX3NvbGlkOmJ1aWxkaW5nLWxpYnJhcnknO1xyXG5cclxuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpIG92ZXJhbGxTZWFyY2hFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBjYW5OdWxsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgY3VzdG9tVHJpZ2dlckxhYmVsRm46ICh2YWx1ZTogQ21hdFNlbGVjdFRyZWVOb2RlW10pID0+IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBjdXN0b21UcmlnZ2VyTGFiZWxUZW1wbGF0ZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIG1hdFNlbGVjdENvbmZpZ3VyYXRvcjogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuXHJcbiAgICBASW5wdXQoKSBtYXRTZWxlY3RTZWFyY2hDb25maWd1cmF0b3I6IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcblxyXG4gICAgQElucHV0KCkgZXhwYW5kYWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKSBzaG93VG9nZ2xlQWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdjb21wb25lbnRTZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9tYXRTZWxlY3Q6IE1hdFNlbGVjdDtcclxuXHJcbiAgICBmbGF0Tm9kZU1hcCA9IG5ldyBNYXA8Q21hdFNlbGVjdFRyZWVGbGF0Tm9kZSwgQ21hdFNlbGVjdFRyZWVOb2RlPigpO1xyXG5cclxuICAgIG5lc3RlZE5vZGVNYXAgPSBuZXcgTWFwPENtYXRTZWxlY3RUcmVlTm9kZSwgQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZT4oKTtcclxuXHJcbiAgICBzZWxlY3RlZFBhcmVudDogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8Q21hdFNlbGVjdFRyZWVGbGF0Tm9kZT47XHJcblxyXG4gICAgdHJlZUZsYXR0ZW5lcjogTWF0VHJlZUZsYXR0ZW5lcjxDbWF0U2VsZWN0VHJlZU5vZGUsIENtYXRTZWxlY3RUcmVlRmxhdE5vZGU+O1xyXG5cclxuICAgIGNoZWNrbGlzdFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlPih0cnVlKTtcclxuXHJcbiAgICB0cmVlRGF0YVNvdXJjZTogTWF0VHJlZUZsYXREYXRhU291cmNlPENtYXRTZWxlY3RUcmVlTm9kZSwgQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZT47XHJcblxyXG4gICAgb3ZlcmFsbEZpbHRlckNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG5cclxuICAgIGlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgaXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICBkYXRhQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gICAgbWF0U2VsZWN0RGF0YTogUmVwbGF5U3ViamVjdDxhbnlbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxhbnlbXT4oMSk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29udHJvbFZhbHVlQWNjZXNzb3JLZXlzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAnZm9ybUNvbnRyb2wnLFxyXG4gICAgICAgICdmb3JtQ29udHJvbE5hbWUnXHJcbiAgICBdO1xyXG5cclxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICB0aGlzLm92ZXJhbGxGaWx0ZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG4gICAgICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKHRoaXMudHJhbnNmb3JtZXIsIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRhYmxlLCB0aGlzLmdldENoaWxkcmVuKTtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxDbWF0U2VsZWN0VHJlZUZsYXROb2RlPih0aGlzLmdldExldmVsLCB0aGlzLmlzRXhwYW5kYWJsZSk7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMZXZlbCA9IChub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogbnVtYmVyID0+IG5vZGUubGV2ZWw7XHJcblxyXG4gICAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiBib29sZWFuID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuXHJcbiAgICBnZXRDaGlsZHJlbiA9IChub2RlOiBDbWF0U2VsZWN0VHJlZU5vZGUpOiBDbWF0U2VsZWN0VHJlZU5vZGVbXSB8IG51bGwgPT4gbm9kZS5jaGlsZHJlbjtcclxuXHJcbiAgICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IGJvb2xlYW4gPT4gX25vZGVEYXRhLmV4cGFuZGFibGU7XHJcblxyXG4gICAgaGFzTm9Db250ZW50ID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogYm9vbGVhbiA9PiBfbm9kZURhdGEubmFtZSA9PT0gJyc7XHJcblxyXG4gICAgdHJhbnNmb3JtZXIgPSAobm9kZTogQ21hdFNlbGVjdFRyZWVOb2RlLCBsZXZlbDogbnVtYmVyKTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdOb2RlID0gdGhpcy5uZXN0ZWROb2RlTWFwLmdldChub2RlKTtcclxuICAgICAgICBjb25zdCBmbGF0Tm9kZSA9IGV4aXN0aW5nTm9kZSAmJiBleGlzdGluZ05vZGUubmFtZSA9PT0gbm9kZS5uYW1lXHJcbiAgICAgICAgICAgID8gZXhpc3RpbmdOb2RlXHJcbiAgICAgICAgICAgIDogbmV3IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUoKTtcclxuICAgICAgICBmbGF0Tm9kZS5pZCA9IG5vZGUuaWQ7XHJcbiAgICAgICAgZmxhdE5vZGUubmFtZSA9IG5vZGUubmFtZTtcclxuICAgICAgICBmbGF0Tm9kZS5sZXZlbCA9IGxldmVsO1xyXG4gICAgICAgIGZsYXROb2RlLmV4cGFuZGFibGUgPSAhIW5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gICAgICAgIHRoaXMuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBub2RlKTtcclxuICAgICAgICB0aGlzLm5lc3RlZE5vZGVNYXAuc2V0KG5vZGUsIGZsYXROb2RlKTtcclxuICAgICAgICByZXR1cm4gZmxhdE5vZGU7XHJcbiAgICB9O1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLm11bHRpcGxlIHx8IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkIHx8IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnRyZWVEYXRhU291cmNlLmRhdGEgPSB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICAgICAgdGhpcy5kYXRhQ291bnQgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5sZW5ndGg7XHJcblxyXG4gICAgICAgIHRoaXMubWF0U2VsZWN0RGF0YS5uZXh0KHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZEFsbCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBhbmVsQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgIGlmICghdGhpcy5vdmVyYWxsU2VhcmNoRW5hYmxlZCkge1xyXG4gICAgICAgICAgICBwYW5lbENsYXNzID0gJ2NtYXQtc2VsZWN0LXNlYXJjaC1wYW5lbCBvdmVyZmxvdy1hdXRvIG1kOm92ZXJmbG93LWhpZGRlbic7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAodGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgYXMgc3RyaW5nW10pLnB1c2gocGFuZWxDbGFzcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX21hdFNlbGVjdC5wYW5lbENsYXNzID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgPSBbdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MsIHBhbmVsQ2xhc3NdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9tYXRTZWxlY3QucGFuZWxDbGFzcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC5wYW5lbENsYXNzLmVudHJpZXNbcGFuZWxDbGFzc10gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnBhbmVsQ2xhc3MgPSBwYW5lbENsYXNzO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3BlbmVkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3BlbmVkICYmIHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdCguLi5kZXNjZW5kYW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIW9wZW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJhbGxTZWFyY2hFbmFibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0RmlsdGVycygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOaWwodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kT3V0Tm9kZTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZVtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRQYXJlbnROb2RlKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSAmJiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKHBhcmVudE5vZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kT3V0Tm9kZS5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRPdXROb2RlLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3Qobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC53cml0ZVZhbHVlKHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX21hdFNlbGVjdC52YWx1ZSAhPT0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC5fb25DaGFuZ2UodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LndyaXRlVmFsdWUodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWRbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fbWF0U2VsZWN0LnZhbHVlICE9PSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZFswXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWRbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0Ll9vbkNoYW5nZSh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZFswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBtZXJnZSh0aGlzLm92ZXJhbGxGaWx0ZXJDb250cm9sLnZhbHVlQ2hhbmdlcylcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSwgZGVib3VuY2VUaW1lKDIwMCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YUNsb25lOiBDbWF0U2VsZWN0VHJlZU5vZGVbXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWy4uLnRoaXMuZGF0YVNvdXJjZV0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnI6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGRhdGFDbG9uZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fYXBwbHlDb2x1bW5MZXZlbEZpbHRlcnMoZGF0YUNsb25lW2ldLCB0aGlzLm92ZXJhbGxGaWx0ZXJDb250cm9sLnZhbHVlLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFyci5mb3JFYWNoKCh2KSA9PiB7IGRhdGFDbG9uZS5zcGxpY2UodiwgMSk7IH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMudHJlZURhdGFTb3VyY2UuZGF0YSA9IGRhdGFDbG9uZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0U2VsZWN0RGF0YS5uZXh0KHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZEFsbCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlbGVjdCh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcm94eUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZuKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5yZWdpc3Rlck9uQ2hhbmdlKHByb3h5Rm4pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9tYXRTZWxlY3QucmVnaXN0ZXJPblRvdWNoZWQoZm4pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX21hdFNlbGVjdC5zZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghaXNOaWwodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNoZWNrbGlzdFNlbGVjdGlvbih2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LndyaXRlVmFsdWUodGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbWF0U2VsZWN0LnZhbHVlICE9PSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF0U2VsZWN0LnZhbHVlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZFswXSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9tYXRTZWxlY3QudmFsdWUgIT09IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkWzBdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3QudmFsdWUgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZFswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpc05pbChjaGFuZ2VzWydtYXRTZWxlY3RDb25maWd1cmF0b3InXSkpIHtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGNoYW5nZXNbJ21hdFNlbGVjdENvbmZpZ3VyYXRvciddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMoY29uZmlndXJhdGlvbilcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoa2V5ID0+ICFbJ211bHRpcGxlJywgJ3BhbmVsQ2xhc3MnXS5pbmNsdWRlcyhrZXkpICYmICF0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvcktleXMuaW5jbHVkZXMoa2V5KSlcclxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiAodGhpcy5fbWF0U2VsZWN0IGFzIGFueSlba2V5XSA9IGNvbmZpZ3VyYXRpb25ba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNpbXBsZVRyaWdnZXJMYWJlbEZuKHZhbHVlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlW10pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKG5vZGUpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05pbChub2RlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc05pbCh0aGlzLmN1c3RvbVRyaWdnZXJMYWJlbFRlbXBsYXRlKVxyXG4gICAgICAgICAgICAgICAgfHwgdHlwZW9mIHRoaXMuY3VzdG9tVHJpZ2dlckxhYmVsVGVtcGxhdGUgIT09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgICB8fCB0aGlzLmN1c3RvbVRyaWdnZXJMYWJlbFRlbXBsYXRlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtub2RlLmlkfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGF0TGVhc3RQYXJ0aWFsU3Vic3RpdHV0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbjogc3RyaW5nID0gdGhpcy5jdXN0b21UcmlnZ2VyTGFiZWxUZW1wbGF0ZS5yZXBsYWNlKC9bJF1be10oW159XSspW31dL2csIChfLCBrZXkpID0+XHJcbiAgICAgICAgICAgICAgICAhaXNOaWwoKG5vZGUgYXMgYW55KVtrZXldKSAmJiAoYXRMZWFzdFBhcnRpYWxTdWJzdGl0dXRpb24gPSB0cnVlKSA/IChub2RlIGFzIGFueSlba2V5XSA6ICcnKTtcclxuICAgICAgICAgICAgaWYgKGF0TGVhc3RQYXJ0aWFsU3Vic3RpdHV0aW9uID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25vZGUuaWR9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0aW9uLnRyaW0oKTtcclxuICAgICAgICB9KS5qb2luKCcsICcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBXaGV0aGVyIGFsbCB0aGUgZGVzY2VuZGFudHMgb2YgdGhlIG5vZGUgYXJlIHNlbGVjdGVkLiAqL1xyXG4gICAgZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xyXG4gICAgICAgIHJldHVybiBkZXNjZW5kYW50cy5ldmVyeShjaGlsZCA9PlxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgcGFydCBvZiB0aGUgZGVzY2VuZGFudHMgYXJlIHNlbGVjdGVkICovXHJcbiAgICBkZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVzY2VuZGFudHMuc29tZShjaGlsZCA9PiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKGNoaWxkKSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdCAmJiAhdGhpcy5kZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXHJcbiAgICB0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShldmVudDogYW55LCBub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24udG9nZ2xlKG5vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpID8gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KC4uLmRlc2NlbmRhbnRzKSA6IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tBbGxQYXJlbnRzU2VsZWN0aW9uKG5vZGUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RvZ2dsZUFsbENoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA8IHRoaXMuZGF0YUNvdW50ICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA9PT0gdGhpcy5kYXRhQ291bnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9tYXRTZWxlY3QuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFRvZ2dsZSBhIGxlYWYgdG8tZG8gaXRlbSBzZWxlY3Rpb24uIENoZWNrIGFsbCB0aGUgcGFyZW50cyB0byBzZWUgaWYgdGhleSBjaGFuZ2VkICovXHJcbiAgICB0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUoZXZlbnQ6IGFueSwgbm9kZTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnRvZ2dsZShub2RlKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0FsbFBhcmVudHNTZWxlY3Rpb24obm9kZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93VG9nZ2xlQWxsQ2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoIDwgdGhpcy5kYXRhQ291bnQgJiYgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNDaGVja2VkID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFDb3VudDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdChub2RlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX21hdFNlbGVjdC5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBub0NsaWNrKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBDaGVja3MgYWxsIHRoZSBwYXJlbnRzIHdoZW4gYSBsZWFmIG5vZGUgaXMgc2VsZWN0ZWQvdW5zZWxlY3RlZCAqL1xyXG4gICAgY2hlY2tBbGxQYXJlbnRzU2VsZWN0aW9uKG5vZGU6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgICAgICBsZXQgcGFyZW50OiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIHwgbnVsbCA9IHRoaXMuZ2V0UGFyZW50Tm9kZShub2RlKTtcclxuICAgICAgICB3aGlsZSAocGFyZW50KSB7XHJcbiAgICAgICAgICAgIHBhcmVudC5leHBhbmRhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocGFyZW50KTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja1Jvb3ROb2RlU2VsZWN0aW9uKHBhcmVudCk7XHJcbiAgICAgICAgICAgIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50Tm9kZShwYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQ2hlY2sgcm9vdCBub2RlIGNoZWNrZWQgc3RhdGUgYW5kIGNoYW5nZSBpdCBhY2NvcmRpbmdseSAqL1xyXG4gICAgY2hlY2tSb290Tm9kZVNlbGVjdGlvbihub2RlOiBDbWF0U2VsZWN0VHJlZUZsYXROb2RlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgbm9kZVNlbGVjdGVkID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKTtcclxuICAgICAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XHJcbiAgICAgICAgY29uc3QgZGVzY0FsbFNlbGVjdGVkID0gZGVzY2VuZGFudHMuZXZlcnkoY2hpbGQgPT5cclxuICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZClcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChub2RlU2VsZWN0ZWQgJiYgIWRlc2NBbGxTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5kZXNlbGVjdChub2RlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFub2RlU2VsZWN0ZWQgJiYgKGRlc2NBbGxTZWxlY3RlZCB8fCBkZXNjZW5kYW50cy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdChub2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyogR2V0IHRoZSBwYXJlbnQgbm9kZSBvZiBhIG5vZGUgKi9cclxuICAgIGdldFBhcmVudE5vZGUobm9kZTogQ21hdFNlbGVjdFRyZWVGbGF0Tm9kZSk6IENtYXRTZWxlY3RUcmVlRmxhdE5vZGUgfCBudWxsIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50TGV2ZWwgPSB0aGlzLmdldExldmVsKG5vZGUpO1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5pbmRleE9mKG5vZGUpIC0gMTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnROb2RlID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXNbaV07XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRMZXZlbChjdXJyZW50Tm9kZSkgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVTZWxlY3RBbGwoc2VsZWN0QWxsVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoc2VsZWN0QWxsVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0FsbFBhcmVudHNTZWxlY3Rpb24obm9kZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA8IHRoaXMuZGF0YUNvdW50ICYmIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDaGVja2VkID0gdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RoID09PSB0aGlzLmRhdGFDb3VudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb21wYXJlT2JqZWN0cyhvMTogYW55LCBvMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG8xICYmIG8yID8gbzE/Lm5hbWUgPT09IG8yPy5uYW1lICYmIG8xPy5pZCA9PT0gbzI/LmlkIDogbzEgPT09IG8yO1xyXG4gICAgfVxyXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4IHx8IGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ2hlY2tsaXN0U2VsZWN0aW9uKHZhbHVlOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLmNsZWFyKCk7XHJcbiAgICAgICAgaWYgKCFpc05pbCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVBcnJheTogYW55W10gPSAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBbdmFsdWVdIDogdmFsdWU7XHJcbiAgICAgICAgICAgIHZhbHVlQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUZvdW5kID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzTmlsKG5vZGVGb3VuZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3Qobm9kZUZvdW5kKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3VwZGF0ZVNlbGVjdCh2YWx1ZTogYW55W10pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlzTmlsKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZUFycmF5OiBhbnlbXSA9ICFBcnJheS5pc0FycmF5KHZhbHVlKSA/IFt2YWx1ZV0gOiB2YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmFsbFNlYXJjaEVuYWJsZWQpLy/mnInmkJzntKLlip/og73vvIzovazljJbpgInkuK3oioLngrnkuLrlvZPliY3mlbDmja7mupDoioLngrlcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVBcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUZvdW5kID0gdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZChub2RlID0+IG5vZGUuaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05pbChub2RlRm91bmQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2xpc3RTZWxlY3Rpb24uZGVzZWxlY3QoaXRlbSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdChub2RlRm91bmQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsUGFyZW50c1NlbGVjdGlvbihpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dUb2dnbGVBbGxDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPCB0aGlzLmRhdGFDb3VudCAmJiB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0NoZWNrZWQgPSB0aGlzLmNoZWNrbGlzdFNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGggPT09IHRoaXMuZGF0YUNvdW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2FwcGx5Q29sdW1uTGV2ZWxGaWx0ZXJzKG5vZGU6IENtYXRTZWxlY3RUcmVlTm9kZSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChub2RlICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRUZW1wID0gdGhpcy5fYXBwbHlDb2x1bW5MZXZlbEZpbHRlcnMobm9kZS5jaGlsZHJlbltpXSwgZmlsdGVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFRlbXApIHtcclxuICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRUZW1wIHx8IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9IG5vZGVbJ25hbWUnXS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChjZWxsVmFsdWUuaW5kZXhPZihmaWx0ZXIpID4gLTEpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9yZXNldEZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3ZlcmFsbFNlYXJjaEVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vdmVyYWxsRmlsdGVyQ29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctZnVsbFwiPlxyXG4gICAgPG1hdC1sYWJlbCAqbmdJZj1cInNob3dMYWJlbFwiPnt7cGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zaXplLTVcIiBbc3ZnSWNvbl09XCJwcmVmaXhJY29uXCIgbWF0UHJlZml4PjwvbWF0LWljb24+XHJcbiAgICA8bWF0LXNlbGVjdCAjY29tcG9uZW50U2VsZWN0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVPYmplY3RzXCI+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21UcmlnZ2VyTGFiZWxGblwiPnt7c2ltcGxlVHJpZ2dlckxhYmVsRm4oY2hlY2tsaXN0U2VsZWN0aW9uLnNlbGVjdGVkKX19XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tVHJpZ2dlckxhYmVsRm5cIj57e2N1c3RvbVRyaWdnZXJMYWJlbEZufX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJvdmVyYWxsU2VhcmNoRW5hYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgPGNtYXQtc2VsZWN0LXNlYXJjaCBbc2hvd05vRm91bmRMYWJlbF09XCJzaG93Tm9Gb3VuZExhYmVsXCIgW25vRW50cmllc0ZvdW5kTGFiZWxdPVwibm9FbnRyaWVzRm91bmRMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm92ZXJhbGxGaWx0ZXJDb250cm9sXCIgW2NsZWFyU2VhcmNoSW5wdXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVcIiBbdG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkXT1cImlzQ2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZUFsbCk9XCJ0b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiIFtzaG93VG9nZ2xlQWxsQ2hlY2tib3hdPVwic2hvd1RvZ2dsZUFsbENoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8L2NtYXQtc2VsZWN0LXNlYXJjaD5cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImNhbk51bGxcIj7nqbo8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZWxlY3REYXRhIG9mIG1hdFNlbGVjdERhdGEgfCBhc3luYyA7dHJhY2tCeTogdHJhY2tCeUZuXCIgY2xhc3M9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdERhdGFcIj57e3NlbGVjdERhdGEubmFtZX19PC9tYXQtb3B0aW9uPlxyXG5cclxuICAgICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cInRyZWVEYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpPydzZWxlY3RlZCc6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2RvTGVhZkl0ZW1TZWxlY3Rpb25Ub2dnbGUoJGV2ZW50LG5vZGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwibXVsdGlwbGVcIiBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGVcIiAoY2xpY2spPVwibm9DbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tsaXN0U2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSlcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbXVsdGlwbGVcIj57e25vZGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBoYXNDaGlsZFwiIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNoZWNrbGlzdFNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpPydzZWxlY3RlZCc6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZSgkZXZlbnQsbm9kZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIndG9nZ2xlICcgKyBub2RlLmZpbGVuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwidHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdtYXRfb3V0bGluZTpleHBhbmRfbW9yZScgOiAnbWF0X291dGxpbmU6Y2hldnJvbl9yaWdodCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwibXVsdGlwbGVcIiBbY2hlY2tlZF09XCJkZXNjZW5kYW50c0FsbFNlbGVjdGVkKG5vZGUpXCIgKGNsaWNrKT1cIm5vQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImRlc2NlbmRhbnRzUGFydGlhbGx5U2VsZWN0ZWQobm9kZSlcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbXVsdGlwbGVcIj57e25vZGUubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class CmatSelectTreeFlatNode {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUuZmxhdG5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvc2VsZWN0LXRyZWUvc2VsZWN0LXRyZWUuZmxhdG5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHNCQUFzQjtDQUtsQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDbWF0U2VsZWN0VHJlZUZsYXROb2RlIHtcclxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBsZXZlbDogbnVtYmVyO1xyXG4gICAgZXhwYW5kYWJsZTogYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class CmatSelectTreeNode {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXRyZWUubm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9zZWxlY3QtdHJlZS9zZWxlY3QtdHJlZS5ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxrQkFBa0I7Q0FJOUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ21hdFNlbGVjdFRyZWVOb2RlIHtcclxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBjaGlsZHJlbjogQ21hdFNlbGVjdFRyZWVOb2RlW10gfCBudWxsO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21hdC1jb21wb25lbnRzLXRpbWVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3RpbWVsaW5lL2NtYXQtY29tcG9uZW50cy10aW1lbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './timeline-item/timeline-item.component';
2
+ export * from './timeline.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy90aW1lbGluZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGltZWxpbmUtaXRlbS90aW1lbGluZS1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGltZWxpbmUuY29tcG9uZW50JztcclxuIl19