@ardium-ui/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/README.md +25 -0
  2. package/esm2022/ardium-ui-ui.mjs +5 -0
  3. package/esm2022/lib/_internal/boolean-component.mjs +108 -0
  4. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +12 -0
  5. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +18 -0
  6. package/esm2022/lib/_internal/disablable-component.mjs +44 -0
  7. package/esm2022/lib/_internal/focusable-component.mjs +91 -0
  8. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +436 -0
  9. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +349 -0
  10. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +155 -0
  11. package/esm2022/lib/_internal/models/pagination.model.mjs +124 -0
  12. package/esm2022/lib/_internal/ngmodel-component.mjs +42 -0
  13. package/esm2022/lib/_internal/queue.mjs +59 -0
  14. package/esm2022/lib/_internal/selectable-list-component.mjs +304 -0
  15. package/esm2022/lib/badge/badge.directive.mjs +123 -0
  16. package/esm2022/lib/badge/badge.module.mjs +18 -0
  17. package/esm2022/lib/badge/badge.types.mjs +16 -0
  18. package/esm2022/lib/buttons/_button-base.mjs +45 -0
  19. package/esm2022/lib/buttons/button/button.component.mjs +49 -0
  20. package/esm2022/lib/buttons/button/button.module.mjs +18 -0
  21. package/esm2022/lib/buttons/fab/fab.component.mjs +40 -0
  22. package/esm2022/lib/buttons/fab/fab.module.mjs +18 -0
  23. package/esm2022/lib/buttons/general-button.types.mjs +55 -0
  24. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +37 -0
  25. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +18 -0
  26. package/esm2022/lib/calendar/calendar.component.mjs +982 -0
  27. package/esm2022/lib/calendar/calendar.directives.mjs +107 -0
  28. package/esm2022/lib/calendar/calendar.helpers.mjs +47 -0
  29. package/esm2022/lib/calendar/calendar.module.mjs +21 -0
  30. package/esm2022/lib/calendar/calendar.types.mjs +11 -0
  31. package/esm2022/lib/card/card.children.mjs +97 -0
  32. package/esm2022/lib/card/card.component.mjs +40 -0
  33. package/esm2022/lib/card/card.module.mjs +59 -0
  34. package/esm2022/lib/card/card.types.mjs +9 -0
  35. package/esm2022/lib/checkbox/checkbox.component.mjs +73 -0
  36. package/esm2022/lib/checkbox/checkbox.module.mjs +18 -0
  37. package/esm2022/lib/checkbox/checkbox.types.mjs +6 -0
  38. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +139 -0
  39. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +19 -0
  40. package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +7 -0
  41. package/esm2022/lib/chip/chip.component.mjs +55 -0
  42. package/esm2022/lib/chip/chip.module.mjs +21 -0
  43. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +80 -0
  44. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +77 -0
  45. package/esm2022/lib/color/color-display/color-display.component.mjs +48 -0
  46. package/esm2022/lib/color/color-display/color-display.module.mjs +18 -0
  47. package/esm2022/lib/color/color-display/color-display.types.mjs +9 -0
  48. package/esm2022/lib/color/color-picker/color-picker.component.mjs +484 -0
  49. package/esm2022/lib/color/color-picker/color-picker.directives.mjs +55 -0
  50. package/esm2022/lib/color/color-picker/color-picker.module.mjs +43 -0
  51. package/esm2022/lib/color/color-picker/color-picker.types.mjs +11 -0
  52. package/esm2022/lib/dialog/dialog.component.mjs +167 -0
  53. package/esm2022/lib/dialog/dialog.directives.mjs +14 -0
  54. package/esm2022/lib/dialog/dialog.module.mjs +21 -0
  55. package/esm2022/lib/dialog/dialog.types.mjs +6 -0
  56. package/esm2022/lib/divider/divider.component.mjs +26 -0
  57. package/esm2022/lib/divider/divider.module.mjs +18 -0
  58. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +130 -0
  59. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +18 -0
  60. package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +10 -0
  61. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +82 -0
  62. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +42 -0
  63. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +58 -0
  64. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +153 -0
  65. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +73 -0
  66. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +21 -0
  67. package/esm2022/lib/file-inputs/file-input-base.mjs +187 -0
  68. package/esm2022/lib/file-inputs/file-input-types.mjs +2 -0
  69. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +74 -0
  70. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +25 -0
  71. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +19 -0
  72. package/esm2022/lib/icon/icon.component.mjs +85 -0
  73. package/esm2022/lib/icon/icon.module.mjs +19 -0
  74. package/esm2022/lib/icon/icon.pipe.mjs +18 -0
  75. package/esm2022/lib/inputs/color-input/color-input.component.mjs +421 -0
  76. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +101 -0
  77. package/esm2022/lib/inputs/color-input/color-input.module.mjs +85 -0
  78. package/esm2022/lib/inputs/color-input/color-input.types.mjs +2 -0
  79. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +218 -0
  80. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +217 -0
  81. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +18 -0
  82. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +15 -0
  83. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +8 -0
  84. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +234 -0
  85. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +36 -0
  86. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +21 -0
  87. package/esm2022/lib/inputs/hex-input.model.mjs +106 -0
  88. package/esm2022/lib/inputs/input/input.component.mjs +344 -0
  89. package/esm2022/lib/inputs/input/input.directives.mjs +58 -0
  90. package/esm2022/lib/inputs/input/input.module.mjs +47 -0
  91. package/esm2022/lib/inputs/input-transformers.mjs +66 -0
  92. package/esm2022/lib/inputs/input-types.mjs +6 -0
  93. package/esm2022/lib/inputs/input-utils.mjs +205 -0
  94. package/esm2022/lib/inputs/number-input/number-input.component.mjs +289 -0
  95. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +14 -0
  96. package/esm2022/lib/inputs/number-input/number-input.module.mjs +21 -0
  97. package/esm2022/lib/inputs/password-input/password-input.component.mjs +222 -0
  98. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +49 -0
  99. package/esm2022/lib/inputs/password-input/password-input.module.mjs +41 -0
  100. package/esm2022/lib/inputs/password-input/password-input.types.mjs +2 -0
  101. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +219 -0
  102. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +36 -0
  103. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +37 -0
  104. package/esm2022/lib/kbd/kbd.component.mjs +42 -0
  105. package/esm2022/lib/kbd/kbd.module.mjs +19 -0
  106. package/esm2022/lib/kbd/kbd.pipe.mjs +17 -0
  107. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +55 -0
  108. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +19 -0
  109. package/esm2022/lib/modal/modal.component.mjs +120 -0
  110. package/esm2022/lib/modal/modal.module.mjs +21 -0
  111. package/esm2022/lib/option/option.component.mjs +77 -0
  112. package/esm2022/lib/option/option.module.mjs +18 -0
  113. package/esm2022/lib/progress-bar/progress-bar.component.mjs +95 -0
  114. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +14 -0
  115. package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
  116. package/esm2022/lib/progress-bar/progress-bar.types.mjs +19 -0
  117. package/esm2022/lib/progress-circle/progress-circle.component.mjs +94 -0
  118. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +14 -0
  119. package/esm2022/lib/progress-circle/progress-circle.module.mjs +19 -0
  120. package/esm2022/lib/progress-circle/progress-circle.types.mjs +10 -0
  121. package/esm2022/lib/radio/radio/radio.component.mjs +53 -0
  122. package/esm2022/lib/radio/radio-group.component.mjs +207 -0
  123. package/esm2022/lib/radio/radio.module.mjs +19 -0
  124. package/esm2022/lib/search-functions.mjs +64 -0
  125. package/esm2022/lib/segment/segment.component.mjs +168 -0
  126. package/esm2022/lib/segment/segment.directives.mjs +14 -0
  127. package/esm2022/lib/segment/segment.module.mjs +19 -0
  128. package/esm2022/lib/segment/segment.types.mjs +12 -0
  129. package/esm2022/lib/select/select.component.mjs +1160 -0
  130. package/esm2022/lib/select/select.directive.mjs +171 -0
  131. package/esm2022/lib/select/select.module.mjs +112 -0
  132. package/esm2022/lib/select/select.types.mjs +2 -0
  133. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +46 -0
  134. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +18 -0
  135. package/esm2022/lib/slider/abstract-slider.mjs +330 -0
  136. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +143 -0
  137. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +18 -0
  138. package/esm2022/lib/slider/slider.component.mjs +93 -0
  139. package/esm2022/lib/slider/slider.directive.mjs +16 -0
  140. package/esm2022/lib/slider/slider.module.mjs +20 -0
  141. package/esm2022/lib/slider/slider.types.mjs +10 -0
  142. package/esm2022/lib/snackbar/index.mjs +5 -0
  143. package/esm2022/lib/snackbar/snackbar-ref.mjs +51 -0
  144. package/esm2022/lib/snackbar/snackbar.component.mjs +48 -0
  145. package/esm2022/lib/snackbar/snackbar.service.mjs +227 -0
  146. package/esm2022/lib/snackbar/snackbar.token.mjs +20 -0
  147. package/esm2022/lib/snackbar/snackbar.types.mjs +25 -0
  148. package/esm2022/lib/spinner/spinner.component.mjs +22 -0
  149. package/esm2022/lib/spinner/spinner.module.mjs +18 -0
  150. package/esm2022/lib/star/star-button/star-button.component.mjs +53 -0
  151. package/esm2022/lib/star/star-button/star-button.module.mjs +19 -0
  152. package/esm2022/lib/star/star-display/star-display.component.mjs +66 -0
  153. package/esm2022/lib/star/star-display/star-display.module.mjs +19 -0
  154. package/esm2022/lib/star/star-input/star-input.component.mjs +221 -0
  155. package/esm2022/lib/star/star-input/star-input.module.mjs +19 -0
  156. package/esm2022/lib/star/star.component.mjs +28 -0
  157. package/esm2022/lib/star/star.module.mjs +18 -0
  158. package/esm2022/lib/star/star.types.mjs +23 -0
  159. package/esm2022/lib/statebox/statebox.component.mjs +158 -0
  160. package/esm2022/lib/statebox/statebox.module.mjs +18 -0
  161. package/esm2022/lib/statebox/statebox.types.mjs +2 -0
  162. package/esm2022/lib/table/table-item-storage.mjs +560 -0
  163. package/esm2022/lib/table/table.component.mjs +468 -0
  164. package/esm2022/lib/table/table.directives.mjs +64 -0
  165. package/esm2022/lib/table/table.module.mjs +46 -0
  166. package/esm2022/lib/table/table.types.mjs +30 -0
  167. package/esm2022/lib/table/utils.mjs +18 -0
  168. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +64 -0
  169. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +19 -0
  170. package/esm2022/lib/table-pagination/table-pagination.component.mjs +172 -0
  171. package/esm2022/lib/table-pagination/table-pagination.module.mjs +21 -0
  172. package/esm2022/lib/table-pagination/table-pagination.types.mjs +7 -0
  173. package/esm2022/lib/types/alignment.types.mjs +10 -0
  174. package/esm2022/lib/types/colors.types.mjs +43 -0
  175. package/esm2022/lib/types/item-storage.types.mjs +6 -0
  176. package/esm2022/lib/types/theming.types.mjs +48 -0
  177. package/esm2022/lib/types/utility.types.mjs +5 -0
  178. package/esm2022/public-api.mjs +194 -0
  179. package/fesm2022/ardium-ui-ui.mjs +14316 -0
  180. package/fesm2022/ardium-ui-ui.mjs.map +1 -0
  181. package/index.d.ts +5 -0
  182. package/lib/_internal/boolean-component.d.ts +50 -0
  183. package/lib/_internal/clear-button/clear-button.component.d.ts +6 -0
  184. package/lib/_internal/clear-button/clear-button.module.d.ts +8 -0
  185. package/lib/_internal/disablable-component.d.ts +11 -0
  186. package/lib/_internal/focusable-component.d.ts +52 -0
  187. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +87 -0
  188. package/lib/_internal/item-storages/simple-item-storage.d.ts +159 -0
  189. package/lib/_internal/item-storages/simplest-item-storage.d.ts +70 -0
  190. package/lib/_internal/models/pagination.model.d.ts +53 -0
  191. package/lib/_internal/ngmodel-component.d.ts +42 -0
  192. package/lib/_internal/queue.d.ts +21 -0
  193. package/lib/_internal/selectable-list-component.d.ts +71 -0
  194. package/lib/badge/badge.directive.d.ts +31 -0
  195. package/lib/badge/badge.module.d.ts +8 -0
  196. package/lib/badge/badge.types.d.ts +17 -0
  197. package/lib/buttons/_button-base.d.ts +18 -0
  198. package/lib/buttons/button/button.component.d.ts +15 -0
  199. package/lib/buttons/button/button.module.d.ts +8 -0
  200. package/lib/buttons/fab/fab.component.d.ts +12 -0
  201. package/lib/buttons/fab/fab.module.d.ts +8 -0
  202. package/lib/buttons/general-button.types.d.ts +57 -0
  203. package/lib/buttons/icon-button/icon-button.component.d.ts +13 -0
  204. package/lib/buttons/icon-button/icon-button.module.d.ts +8 -0
  205. package/lib/calendar/calendar.component.d.ts +155 -0
  206. package/lib/calendar/calendar.directives.d.ts +51 -0
  207. package/lib/calendar/calendar.helpers.d.ts +15 -0
  208. package/lib/calendar/calendar.module.d.ts +11 -0
  209. package/lib/calendar/calendar.types.d.ts +80 -0
  210. package/lib/card/card.children.d.ts +43 -0
  211. package/lib/card/card.component.d.ts +13 -0
  212. package/lib/card/card.module.d.ts +9 -0
  213. package/lib/card/card.types.d.ts +10 -0
  214. package/lib/checkbox/checkbox.component.d.ts +21 -0
  215. package/lib/checkbox/checkbox.module.d.ts +8 -0
  216. package/lib/checkbox/checkbox.types.d.ts +6 -0
  217. package/lib/checkbox-list/checkbox-list.component.d.ts +50 -0
  218. package/lib/checkbox-list/checkbox-list.module.d.ts +9 -0
  219. package/lib/checkbox-list/checkbox-list.types.d.ts +7 -0
  220. package/lib/chip/chip.component.d.ts +18 -0
  221. package/lib/chip/chip.module.d.ts +11 -0
  222. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +24 -0
  223. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +24 -0
  224. package/lib/color/color-display/color-display.component.d.ts +17 -0
  225. package/lib/color/color-display/color-display.module.d.ts +8 -0
  226. package/lib/color/color-display/color-display.types.d.ts +9 -0
  227. package/lib/color/color-picker/color-picker.component.d.ts +125 -0
  228. package/lib/color/color-picker/color-picker.directives.d.ts +27 -0
  229. package/lib/color/color-picker/color-picker.module.d.ts +13 -0
  230. package/lib/color/color-picker/color-picker.types.d.ts +21 -0
  231. package/lib/dialog/dialog.component.d.ts +44 -0
  232. package/lib/dialog/dialog.directives.d.ts +9 -0
  233. package/lib/dialog/dialog.module.d.ts +11 -0
  234. package/lib/dialog/dialog.types.d.ts +28 -0
  235. package/lib/divider/divider.component.d.ts +8 -0
  236. package/lib/divider/divider.module.d.ts +8 -0
  237. package/lib/dropdown-panel/dropdown-panel.component.d.ts +37 -0
  238. package/lib/dropdown-panel/dropdown-panel.module.d.ts +8 -0
  239. package/lib/dropdown-panel/dropdown-panel.types.d.ts +12 -0
  240. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +22 -0
  241. package/lib/file-inputs/file-drop-area/file-drop-area.directives.d.ts +21 -0
  242. package/lib/file-inputs/file-drop-area/file-drop-area.module.d.ts +12 -0
  243. package/lib/file-inputs/file-input/file-input.component.d.ts +41 -0
  244. package/lib/file-inputs/file-input/file-input.directives.d.ts +39 -0
  245. package/lib/file-inputs/file-input/file-input.module.d.ts +11 -0
  246. package/lib/file-inputs/file-input-base.d.ts +43 -0
  247. package/lib/file-inputs/file-input-types.d.ts +10 -0
  248. package/lib/form-field-frame/form-field-frame.component.d.ts +32 -0
  249. package/lib/form-field-frame/form-field-frame.directives.d.ts +14 -0
  250. package/lib/form-field-frame/form-field-frame.module.d.ts +9 -0
  251. package/lib/icon/icon.component.d.ts +32 -0
  252. package/lib/icon/icon.module.d.ts +9 -0
  253. package/lib/icon/icon.pipe.d.ts +7 -0
  254. package/lib/inputs/color-input/color-input.component.d.ts +147 -0
  255. package/lib/inputs/color-input/color-input.directives.d.ts +52 -0
  256. package/lib/inputs/color-input/color-input.module.d.ts +16 -0
  257. package/lib/inputs/color-input/color-input.types.d.ts +5 -0
  258. package/lib/inputs/digit-input/digit-input.component.d.ts +50 -0
  259. package/lib/inputs/digit-input/digit-input.model.d.ts +26 -0
  260. package/lib/inputs/digit-input/digit-input.module.d.ts +8 -0
  261. package/lib/inputs/digit-input/digit-input.types.d.ts +27 -0
  262. package/lib/inputs/digit-input/digit-input.utils.d.ts +17 -0
  263. package/lib/inputs/hex-input/hex-input.component.d.ts +60 -0
  264. package/lib/inputs/hex-input/hex-input.directives.d.ts +20 -0
  265. package/lib/inputs/hex-input/hex-input.module.d.ts +11 -0
  266. package/lib/inputs/hex-input.model.d.ts +27 -0
  267. package/lib/inputs/input/input.component.d.ts +79 -0
  268. package/lib/inputs/input/input.directives.d.ts +33 -0
  269. package/lib/inputs/input/input.module.d.ts +13 -0
  270. package/lib/inputs/input-transformers.d.ts +24 -0
  271. package/lib/inputs/input-types.d.ts +6 -0
  272. package/lib/inputs/input-utils.d.ts +58 -0
  273. package/lib/inputs/number-input/number-input.component.d.ts +70 -0
  274. package/lib/inputs/number-input/number-input.directives.d.ts +8 -0
  275. package/lib/inputs/number-input/number-input.module.d.ts +11 -0
  276. package/lib/inputs/password-input/password-input.component.d.ts +54 -0
  277. package/lib/inputs/password-input/password-input.directives.d.ts +27 -0
  278. package/lib/inputs/password-input/password-input.module.d.ts +11 -0
  279. package/lib/inputs/password-input/password-input.types.d.ts +3 -0
  280. package/lib/inputs/simple-input/simple-input.component.d.ts +58 -0
  281. package/lib/inputs/simple-input/simple-input.directives.d.ts +20 -0
  282. package/lib/inputs/simple-input/simple-input.module.d.ts +11 -0
  283. package/lib/kbd/kbd.component.d.ts +15 -0
  284. package/lib/kbd/kbd.module.d.ts +9 -0
  285. package/lib/kbd/kbd.pipe.d.ts +7 -0
  286. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +18 -0
  287. package/lib/kbd-shortcut/kbd-shortcut.module.d.ts +9 -0
  288. package/lib/modal/modal.component.d.ts +36 -0
  289. package/lib/modal/modal.module.d.ts +11 -0
  290. package/lib/option/option.component.d.ts +29 -0
  291. package/lib/option/option.module.d.ts +8 -0
  292. package/lib/progress-bar/progress-bar.component.d.ts +26 -0
  293. package/lib/progress-bar/progress-bar.directive.d.ts +9 -0
  294. package/lib/progress-bar/progress-bar.module.d.ts +9 -0
  295. package/lib/progress-bar/progress-bar.types.d.ts +26 -0
  296. package/lib/progress-circle/progress-circle.component.d.ts +28 -0
  297. package/lib/progress-circle/progress-circle.directive.d.ts +9 -0
  298. package/lib/progress-circle/progress-circle.module.d.ts +9 -0
  299. package/lib/progress-circle/progress-circle.types.d.ts +17 -0
  300. package/lib/radio/radio/radio.component.d.ts +23 -0
  301. package/lib/radio/radio-group.component.d.ts +43 -0
  302. package/lib/radio/radio.module.d.ts +9 -0
  303. package/lib/search-functions.d.ts +10 -0
  304. package/lib/segment/segment.component.d.ts +48 -0
  305. package/lib/segment/segment.directives.d.ts +9 -0
  306. package/lib/segment/segment.module.d.ts +9 -0
  307. package/lib/segment/segment.types.d.ts +16 -0
  308. package/lib/select/select.component.d.ts +255 -0
  309. package/lib/select/select.directive.d.ts +94 -0
  310. package/lib/select/select.module.d.ts +14 -0
  311. package/lib/select/select.types.d.ts +109 -0
  312. package/lib/slide-toggle/slide-toggle.component.d.ts +14 -0
  313. package/lib/slide-toggle/slide-toggle.module.d.ts +8 -0
  314. package/lib/slider/abstract-slider.d.ts +88 -0
  315. package/lib/slider/range-slider/range-slider.component.d.ts +29 -0
  316. package/lib/slider/range-slider/range-slider.module.d.ts +8 -0
  317. package/lib/slider/slider.component.d.ts +18 -0
  318. package/lib/slider/slider.directive.d.ts +9 -0
  319. package/lib/slider/slider.module.d.ts +10 -0
  320. package/lib/slider/slider.types.d.ts +28 -0
  321. package/lib/snackbar/index.d.ts +4 -0
  322. package/lib/snackbar/snackbar-ref.d.ts +37 -0
  323. package/lib/snackbar/snackbar.component.d.ts +16 -0
  324. package/lib/snackbar/snackbar.service.d.ts +31 -0
  325. package/lib/snackbar/snackbar.token.d.ts +5 -0
  326. package/lib/snackbar/snackbar.types.d.ts +48 -0
  327. package/lib/spinner/spinner.component.d.ts +8 -0
  328. package/lib/spinner/spinner.module.d.ts +8 -0
  329. package/lib/star/star-button/star-button.component.d.ts +16 -0
  330. package/lib/star/star-button/star-button.module.d.ts +9 -0
  331. package/lib/star/star-display/star-display.component.d.ts +16 -0
  332. package/lib/star/star-display/star-display.module.d.ts +9 -0
  333. package/lib/star/star-input/star-input.component.d.ts +51 -0
  334. package/lib/star/star-input/star-input.module.d.ts +9 -0
  335. package/lib/star/star.component.d.ts +10 -0
  336. package/lib/star/star.module.d.ts +8 -0
  337. package/lib/star/star.types.d.ts +30 -0
  338. package/lib/statebox/statebox.component.d.ts +31 -0
  339. package/lib/statebox/statebox.module.d.ts +8 -0
  340. package/lib/statebox/statebox.types.d.ts +22 -0
  341. package/lib/table/table-item-storage.d.ts +266 -0
  342. package/lib/table/table.component.d.ts +127 -0
  343. package/lib/table/table.directives.d.ts +35 -0
  344. package/lib/table/table.module.d.ts +12 -0
  345. package/lib/table/table.types.d.ts +83 -0
  346. package/lib/table/utils.d.ts +4 -0
  347. package/lib/table-from-csv/table-from-csv.component.d.ts +16 -0
  348. package/lib/table-from-csv/table-from-csv.module.d.ts +9 -0
  349. package/lib/table-pagination/table-pagination.component.d.ts +48 -0
  350. package/lib/table-pagination/table-pagination.module.d.ts +11 -0
  351. package/lib/table-pagination/table-pagination.types.d.ts +9 -0
  352. package/lib/types/alignment.types.d.ts +11 -0
  353. package/lib/types/colors.types.d.ts +71 -0
  354. package/lib/types/item-storage.types.d.ts +98 -0
  355. package/lib/types/theming.types.d.ts +61 -0
  356. package/lib/types/utility.types.d.ts +11 -0
  357. package/package.json +36 -0
  358. package/prebuilt-themes/default/badge.css +208 -0
  359. package/prebuilt-themes/default/badge.css.map +1 -0
  360. package/prebuilt-themes/default/buttons/button.css +290 -0
  361. package/prebuilt-themes/default/buttons/button.css.map +1 -0
  362. package/prebuilt-themes/default/buttons/fab.css +307 -0
  363. package/prebuilt-themes/default/buttons/fab.css.map +1 -0
  364. package/prebuilt-themes/default/buttons/icon-button.css +288 -0
  365. package/prebuilt-themes/default/buttons/icon-button.css.map +1 -0
  366. package/prebuilt-themes/default/calendar.css +293 -0
  367. package/prebuilt-themes/default/calendar.css.map +1 -0
  368. package/prebuilt-themes/default/card.css +122 -0
  369. package/prebuilt-themes/default/card.css.map +1 -0
  370. package/prebuilt-themes/default/checkbox-list.css +65 -0
  371. package/prebuilt-themes/default/checkbox-list.css.map +1 -0
  372. package/prebuilt-themes/default/checkbox.css +365 -0
  373. package/prebuilt-themes/default/checkbox.css.map +1 -0
  374. package/prebuilt-themes/default/chips.css +367 -0
  375. package/prebuilt-themes/default/chips.css.map +1 -0
  376. package/prebuilt-themes/default/color-display.css +29 -0
  377. package/prebuilt-themes/default/color-display.css.map +1 -0
  378. package/prebuilt-themes/default/color-picker.css +106 -0
  379. package/prebuilt-themes/default/color-picker.css.map +1 -0
  380. package/prebuilt-themes/default/core.css +84 -0
  381. package/prebuilt-themes/default/core.css.map +1 -0
  382. package/prebuilt-themes/default/dialog.css +18 -0
  383. package/prebuilt-themes/default/dialog.css.map +1 -0
  384. package/prebuilt-themes/default/divider.css +11 -0
  385. package/prebuilt-themes/default/divider.css.map +1 -0
  386. package/prebuilt-themes/default/dropdown-panel.css +37 -0
  387. package/prebuilt-themes/default/dropdown-panel.css.map +1 -0
  388. package/prebuilt-themes/default/file-drop-area.css +279 -0
  389. package/prebuilt-themes/default/file-drop-area.css.map +1 -0
  390. package/prebuilt-themes/default/form-field-frame.css +84 -0
  391. package/prebuilt-themes/default/form-field-frame.css.map +1 -0
  392. package/prebuilt-themes/default/inputs/color-input.css +139 -0
  393. package/prebuilt-themes/default/inputs/color-input.css.map +1 -0
  394. package/prebuilt-themes/default/inputs/digit-input.css +45 -0
  395. package/prebuilt-themes/default/inputs/digit-input.css.map +1 -0
  396. package/prebuilt-themes/default/inputs/file-input.css +169 -0
  397. package/prebuilt-themes/default/inputs/file-input.css.map +1 -0
  398. package/prebuilt-themes/default/inputs/hex-input.css +119 -0
  399. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -0
  400. package/prebuilt-themes/default/inputs/input.css +139 -0
  401. package/prebuilt-themes/default/inputs/input.css.map +1 -0
  402. package/prebuilt-themes/default/inputs/number-input.css +150 -0
  403. package/prebuilt-themes/default/inputs/number-input.css.map +1 -0
  404. package/prebuilt-themes/default/inputs/password-input.css +73 -0
  405. package/prebuilt-themes/default/inputs/password-input.css.map +1 -0
  406. package/prebuilt-themes/default/inputs/search-bar.css +114 -0
  407. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -0
  408. package/prebuilt-themes/default/inputs/simple-input.css +114 -0
  409. package/prebuilt-themes/default/inputs/simple-input.css.map +1 -0
  410. package/prebuilt-themes/default/kbd-shortcut.css +12 -0
  411. package/prebuilt-themes/default/kbd-shortcut.css.map +1 -0
  412. package/prebuilt-themes/default/kbd.css +17 -0
  413. package/prebuilt-themes/default/kbd.css.map +1 -0
  414. package/prebuilt-themes/default/modal.css +73 -0
  415. package/prebuilt-themes/default/modal.css.map +1 -0
  416. package/prebuilt-themes/default/progress-bar.css +267 -0
  417. package/prebuilt-themes/default/progress-bar.css.map +1 -0
  418. package/prebuilt-themes/default/progress-circle.css +167 -0
  419. package/prebuilt-themes/default/progress-circle.css.map +1 -0
  420. package/prebuilt-themes/default/radio.css +226 -0
  421. package/prebuilt-themes/default/radio.css.map +1 -0
  422. package/prebuilt-themes/default/segment.css +391 -0
  423. package/prebuilt-themes/default/segment.css.map +1 -0
  424. package/prebuilt-themes/default/select.css +275 -0
  425. package/prebuilt-themes/default/select.css.map +1 -0
  426. package/prebuilt-themes/default/slide-toggle.css +264 -0
  427. package/prebuilt-themes/default/slide-toggle.css.map +1 -0
  428. package/prebuilt-themes/default/slider.css +354 -0
  429. package/prebuilt-themes/default/slider.css.map +1 -0
  430. package/prebuilt-themes/default/snackbar.css +183 -0
  431. package/prebuilt-themes/default/snackbar.css.map +1 -0
  432. package/prebuilt-themes/default/spinner.css +151 -0
  433. package/prebuilt-themes/default/spinner.css.map +1 -0
  434. package/prebuilt-themes/default/stars.css +291 -0
  435. package/prebuilt-themes/default/stars.css.map +1 -0
  436. package/prebuilt-themes/default/statebox.css +235 -0
  437. package/prebuilt-themes/default/statebox.css.map +1 -0
  438. package/prebuilt-themes/default/table-pagination.css +48 -0
  439. package/prebuilt-themes/default/table-pagination.css.map +1 -0
  440. package/prebuilt-themes/default/table.css +418 -0
  441. package/prebuilt-themes/default/table.css.map +1 -0
  442. package/public-api.d.ts +145 -0
  443. package/themes/_variables.scss +121 -0
  444. package/themes/default/_clear-button.scss +73 -0
  445. package/themes/default/_coloring.scss +137 -0
  446. package/themes/default/_dropdown-arrow.scss +12 -0
  447. package/themes/default/_mixins.scss +70 -0
  448. package/themes/default/badge.scss +94 -0
  449. package/themes/default/buttons/_button-mixins.scss +144 -0
  450. package/themes/default/buttons/button.scss +62 -0
  451. package/themes/default/buttons/fab.scss +72 -0
  452. package/themes/default/buttons/icon-button.scss +59 -0
  453. package/themes/default/calendar.scss +182 -0
  454. package/themes/default/card.scss +126 -0
  455. package/themes/default/checkbox-list.scss +83 -0
  456. package/themes/default/checkbox.scss +109 -0
  457. package/themes/default/chips.scss +206 -0
  458. package/themes/default/color-display.scss +41 -0
  459. package/themes/default/color-picker.scss +111 -0
  460. package/themes/default/core.scss +96 -0
  461. package/themes/default/dialog.scss +16 -0
  462. package/themes/default/divider.scss +13 -0
  463. package/themes/default/dropdown-panel.scss +45 -0
  464. package/themes/default/file-drop-area.scss +162 -0
  465. package/themes/default/form-field-frame.scss +78 -0
  466. package/themes/default/inputs/_shared.scss +46 -0
  467. package/themes/default/inputs/color-input.scss +46 -0
  468. package/themes/default/inputs/digit-input.scss +56 -0
  469. package/themes/default/inputs/file-input.scss +78 -0
  470. package/themes/default/inputs/hex-input.scss +27 -0
  471. package/themes/default/inputs/input.scss +52 -0
  472. package/themes/default/inputs/number-input.scss +121 -0
  473. package/themes/default/inputs/password-input.scss +43 -0
  474. package/themes/default/inputs/search-bar.scss +19 -0
  475. package/themes/default/inputs/simple-input.scss +19 -0
  476. package/themes/default/kbd-shortcut.scss +13 -0
  477. package/themes/default/kbd.scss +20 -0
  478. package/themes/default/modal.scss +93 -0
  479. package/themes/default/progress-bar.scss +166 -0
  480. package/themes/default/progress-circle.scss +56 -0
  481. package/themes/default/radio.scss +112 -0
  482. package/themes/default/segment.scss +339 -0
  483. package/themes/default/select.scss +253 -0
  484. package/themes/default/slide-toggle.scss +151 -0
  485. package/themes/default/slider.scss +224 -0
  486. package/themes/default/snackbar.scss +60 -0
  487. package/themes/default/spinner.scss +21 -0
  488. package/themes/default/stars.scss +122 -0
  489. package/themes/default/statebox.scss +109 -0
  490. package/themes/default/table-pagination.scss +56 -0
  491. package/themes/default/table.scss +403 -0
@@ -0,0 +1,124 @@
1
+ import { isDefined } from 'simple-bool';
2
+ export class PaginationModel {
3
+ constructor() {
4
+ this._itemsPerPageOptions = [10, 25, 50];
5
+ this._itemsPerPage = 50;
6
+ this._page = 1;
7
+ this._itemsOnCurrentPageMemo = null;
8
+ //! current page
9
+ this._lastPageNumMemo = null;
10
+ }
11
+ //! total items
12
+ setTotalItems(v) {
13
+ this._totalItems = v;
14
+ this._lastPageNumMemo = null;
15
+ this._itemsOnCurrentPageMemo = null;
16
+ }
17
+ get isTotalItemsDefined() {
18
+ return isDefined(this._totalItems);
19
+ }
20
+ //! items per page
21
+ setItemsPerPageOptions(v) {
22
+ this._itemsPerPageOptions = v;
23
+ }
24
+ getItemsPerPageOptions() {
25
+ return this._itemsPerPageOptions;
26
+ }
27
+ setItemsPerPage(v) {
28
+ this._itemsPerPage = v;
29
+ this._lastPageNumMemo = null;
30
+ this._itemsOnCurrentPageMemo = null;
31
+ this.setPage(1);
32
+ }
33
+ getItemsPerPage() {
34
+ return this._itemsPerPage;
35
+ }
36
+ get itemsOnCurrentPage() {
37
+ if (!isDefined(this._totalItems))
38
+ return null;
39
+ if (!isDefined(this._itemsOnCurrentPageMemo))
40
+ [
41
+ (this._itemsOnCurrentPageMemo = [
42
+ Math.min(this._totalItems, (this._page - 1) * this._itemsPerPage + 1),
43
+ Math.min(this._totalItems, this._page * this._itemsPerPage),
44
+ ]),
45
+ ];
46
+ return this._itemsOnCurrentPageMemo;
47
+ }
48
+ //! action disabled states
49
+ get firstPageDisabled() {
50
+ return !isDefined(this._totalItems) || this._page == 1;
51
+ }
52
+ get lastPageDisabled() {
53
+ return !isDefined(this._totalItems) || this._page == this.lastPageNum;
54
+ }
55
+ get lastPageNum() {
56
+ if (!isDefined(this._totalItems))
57
+ return null;
58
+ if (!isDefined(this._lastPageNumMemo)) {
59
+ this._lastPageNumMemo = Math.ceil(this._totalItems / this._itemsPerPage);
60
+ }
61
+ return this._lastPageNumMemo;
62
+ }
63
+ get isLastPage() {
64
+ if (!isDefined(this._totalItems))
65
+ return true;
66
+ return this.lastPageNum === this._page;
67
+ }
68
+ setPage(v) {
69
+ this._page = v;
70
+ this._itemsOnCurrentPageMemo = null;
71
+ }
72
+ getPage() {
73
+ return this._page;
74
+ }
75
+ firstPage() {
76
+ if (this.firstPageDisabled)
77
+ return null;
78
+ this.setPage(1);
79
+ return 1;
80
+ }
81
+ prevPage() {
82
+ if (this.firstPageDisabled)
83
+ return null;
84
+ this.setPage(this._page - 1);
85
+ return this._page;
86
+ }
87
+ nextPage() {
88
+ if (this.lastPageDisabled)
89
+ return null;
90
+ this.setPage(this._page + 1);
91
+ return this._page;
92
+ }
93
+ lastPage() {
94
+ if (this.lastPageDisabled)
95
+ return null;
96
+ this.setPage(this.lastPageNum);
97
+ return this._page;
98
+ }
99
+ //! context
100
+ getCurrentItemsContext() {
101
+ if (!isDefined(this._totalItems))
102
+ throw new Error('Cannot use pagination model without defining total items first.');
103
+ const pageItems = this.itemsOnCurrentPage;
104
+ return {
105
+ totalPages: this.lastPageNum,
106
+ totalItems: this._totalItems,
107
+ page: this._page,
108
+ currentItemsFirst: pageItems[0],
109
+ currentItemsLast: pageItems[1],
110
+ };
111
+ }
112
+ getPartialContext() {
113
+ return {
114
+ ...this.getCurrentItemsContext(),
115
+ itemsPerPageOptions: this._itemsPerPageOptions,
116
+ itemsPerPage: this._itemsPerPage,
117
+ firstPageDisabled: this.firstPageDisabled,
118
+ prevPageDisabled: this.firstPageDisabled,
119
+ nextPageDisabled: this.lastPageDisabled,
120
+ lastPageDisabled: this.lastPageDisabled,
121
+ };
122
+ }
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL21vZGVscy9wYWdpbmF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFxQnhDLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBRVkseUJBQW9CLEdBQWtELENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixVQUFLLEdBQVcsQ0FBQyxDQUFDO1FBNkJsQiw0QkFBdUIsR0FBNEIsSUFBSSxDQUFDO1FBcUJoRSxnQkFBZ0I7UUFDUixxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO0lBZ0VuRCxDQUFDO0lBakhHLGVBQWU7SUFDZixhQUFhLENBQUMsQ0FBUztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNCQUFzQixDQUFDLENBQWdEO1FBQ25FLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELHNCQUFzQjtRQUNsQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsZUFBZSxDQUFDLENBQVM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3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LE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztJQUNYLHNCQUFzQjtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7UUFFckgsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFtQixDQUFDO1FBQzNDLE9BQU87WUFDSCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVk7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9CLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDakMsQ0FBQztJQUNOLENBQUM7SUFDRCxpQkFBaUI7UUFDYixPQUFPO1lBQ0gsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUM5QyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUMxQyxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25DdXJyZW50SXRlbXNDb250ZXh0IHtcbiAgICBjdXJyZW50SXRlbXNGaXJzdDogbnVtYmVyO1xuICAgIGN1cnJlbnRJdGVtc0xhc3Q6IG51bWJlcjtcbiAgICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29udGV4dCBleHRlbmRzIFBhZ2luYXRpb25DdXJyZW50SXRlbXNDb250ZXh0IHtcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XG4gICAgb25JdGVtc1BlclBhZ2VDaGFuZ2U6IChuZXdWYWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIGZpcnN0UGFnZURpc2FibGVkOiBib29sZWFuO1xuICAgIHByZXZQYWdlRGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgbmV4dFBhZ2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgICBsYXN0UGFnZURpc2FibGVkOiBib29sZWFuO1xuICAgIG9uUGFnZUNoYW5nZTogKG5ld1BhZ2U6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Nb2RlbCB7XG4gICAgcHJpdmF0ZSBfdG90YWxJdGVtcz86IG51bWJlcjtcbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10gPSBbMTAsIDI1LCA1MF07XG4gICAgcHJpdmF0ZSBfaXRlbXNQZXJQYWdlOiBudW1iZXIgPSA1MDtcbiAgICBwcml2YXRlIF9wYWdlOiBudW1iZXIgPSAxO1xuXG4gICAgLy8hIHRvdGFsIGl0ZW1zXG4gICAgc2V0VG90YWxJdGVtcyh2OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG90YWxJdGVtcyA9IHY7XG4gICAgICAgIHRoaXMuX2xhc3RQYWdlTnVtTWVtbyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2l0ZW1zT25DdXJyZW50UGFnZU1lbW8gPSBudWxsO1xuICAgIH1cbiAgICBnZXQgaXNUb3RhbEl0ZW1zRGVmaW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRGVmaW5lZCh0aGlzLl90b3RhbEl0ZW1zKTtcbiAgICB9XG5cbiAgICAvLyEgaXRlbXMgcGVyIHBhZ2VcbiAgICBzZXRJdGVtc1BlclBhZ2VPcHRpb25zKHY6IG51bWJlcltdIHwgeyB2YWx1ZTogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH1bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2VPcHRpb25zID0gdjtcbiAgICB9XG4gICAgZ2V0SXRlbXNQZXJQYWdlT3B0aW9ucygpOiBudW1iZXJbXSB8IHsgdmFsdWU6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucztcbiAgICB9XG4gICAgc2V0SXRlbXNQZXJQYWdlKHY6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2UgPSB2O1xuICAgICAgICB0aGlzLl9sYXN0UGFnZU51bU1lbW8gPSBudWxsO1xuICAgICAgICB0aGlzLl9pdGVtc09uQ3VycmVudFBhZ2VNZW1vID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZXRQYWdlKDEpO1xuICAgIH1cbiAgICBnZXRJdGVtc1BlclBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pdGVtc09uQ3VycmVudFBhZ2VNZW1vOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgZ2V0IGl0ZW1zT25DdXJyZW50UGFnZSgpOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX3RvdGFsSXRlbXMpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5faXRlbXNPbkN1cnJlbnRQYWdlTWVtbykpXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKHRoaXMuX2l0ZW1zT25DdXJyZW50UGFnZU1lbW8gPSBbXG4gICAgICAgICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuX3RvdGFsSXRlbXMsICh0aGlzLl9wYWdlIC0gMSkgKiB0aGlzLl9pdGVtc1BlclBhZ2UgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4odGhpcy5fdG90YWxJdGVtcywgdGhpcy5fcGFnZSAqIHRoaXMuX2l0ZW1zUGVyUGFnZSksXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBdO1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNPbkN1cnJlbnRQYWdlTWVtbztcbiAgICB9XG5cbiAgICAvLyEgYWN0aW9uIGRpc2FibGVkIHN0YXRlc1xuICAgIGdldCBmaXJzdFBhZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFpc0RlZmluZWQodGhpcy5fdG90YWxJdGVtcykgfHwgdGhpcy5fcGFnZSA9PSAxO1xuICAgIH1cbiAgICBnZXQgbGFzdFBhZ2VEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFpc0RlZmluZWQodGhpcy5fdG90YWxJdGVtcykgfHwgdGhpcy5fcGFnZSA9PSB0aGlzLmxhc3RQYWdlTnVtO1xuICAgIH1cblxuICAgIC8vISBjdXJyZW50IHBhZ2VcbiAgICBwcml2YXRlIF9sYXN0UGFnZU51bU1lbW86IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGdldCBsYXN0UGFnZU51bSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fdG90YWxJdGVtcykpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9sYXN0UGFnZU51bU1lbW8pKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXN0UGFnZU51bU1lbW8gPSBNYXRoLmNlaWwodGhpcy5fdG90YWxJdGVtcyAvIHRoaXMuX2l0ZW1zUGVyUGFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RQYWdlTnVtTWVtbztcbiAgICB9XG4gICAgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX3RvdGFsSXRlbXMpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFBhZ2VOdW0gPT09IHRoaXMuX3BhZ2U7XG4gICAgfVxuICAgIHNldFBhZ2UodjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BhZ2UgPSB2O1xuICAgICAgICB0aGlzLl9pdGVtc09uQ3VycmVudFBhZ2VNZW1vID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgICB9XG4gICAgZmlyc3RQYWdlKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5maXJzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSgxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHByZXZQYWdlKCk6IG51bWJlciB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5maXJzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLl9wYWdlIC0gMSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cbiAgICBuZXh0UGFnZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLl9wYWdlICsgMSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cbiAgICBsYXN0UGFnZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdFBhZ2VEaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLmxhc3RQYWdlTnVtISk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlO1xuICAgIH1cblxuICAgIC8vISBjb250ZXh0XG4gICAgZ2V0Q3VycmVudEl0ZW1zQ29udGV4dCgpOiBQYWdpbmF0aW9uQ3VycmVudEl0ZW1zQ29udGV4dCB7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX3RvdGFsSXRlbXMpKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgcGFnaW5hdGlvbiBtb2RlbCB3aXRob3V0IGRlZmluaW5nIHRvdGFsIGl0ZW1zIGZpcnN0LicpO1xuXG4gICAgICAgIGNvbnN0IHBhZ2VJdGVtcyA9IHRoaXMuaXRlbXNPbkN1cnJlbnRQYWdlITtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHRoaXMubGFzdFBhZ2VOdW0hLFxuICAgICAgICAgICAgdG90YWxJdGVtczogdGhpcy5fdG90YWxJdGVtcyxcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuX3BhZ2UsXG4gICAgICAgICAgICBjdXJyZW50SXRlbXNGaXJzdDogcGFnZUl0ZW1zWzBdLFxuICAgICAgICAgICAgY3VycmVudEl0ZW1zTGFzdDogcGFnZUl0ZW1zWzFdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXRQYXJ0aWFsQ29udGV4dCgpOiBPbWl0PFBhZ2luYXRpb25Db250ZXh0LCAnb25JdGVtc1BlclBhZ2VDaGFuZ2UnIHwgJ29uUGFnZUNoYW5nZSc+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0Q3VycmVudEl0ZW1zQ29udGV4dCgpLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlT3B0aW9uczogdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucyxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5faXRlbXNQZXJQYWdlLFxuICAgICAgICAgICAgZmlyc3RQYWdlRGlzYWJsZWQ6IHRoaXMuZmlyc3RQYWdlRGlzYWJsZWQsXG4gICAgICAgICAgICBwcmV2UGFnZURpc2FibGVkOiB0aGlzLmZpcnN0UGFnZURpc2FibGVkLFxuICAgICAgICAgICAgbmV4dFBhZ2VEaXNhYmxlZDogdGhpcy5sYXN0UGFnZURpc2FibGVkLFxuICAgICAgICAgICAgbGFzdFBhZ2VEaXNhYmxlZDogdGhpcy5sYXN0UGFnZURpc2FibGVkLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { Directive } from '@angular/core';
2
+ import { _FocusableComponentBase } from './focusable-component';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Common code for components, which implement the ControlValueAccessor.
6
+ *
7
+ * **Warning**: `writeValue` function should be implemented on the child component!
8
+ */
9
+ export class _NgModelComponentBase extends _FocusableComponentBase {
10
+ /**
11
+ * Registers a function to handle touched state. Required by ControlValueAccessor.
12
+ * @param fn The function to register.
13
+ */
14
+ registerOnTouched(fn) {
15
+ this._onTouchedRegistered = fn;
16
+ }
17
+ /**
18
+ * Registers a function to handle value change. Required by ControlValueAccessor.
19
+ * @param fn The function to register.
20
+ */
21
+ registerOnChange(fn) {
22
+ this._onChangeRegistered = fn;
23
+ }
24
+ /**
25
+ * Sets the component's disabled state. Required by ControlValueAccessor.
26
+ * @param isDisabled the new disabled state.
27
+ */
28
+ setDisabledState(isDisabled) {
29
+ this._disabled = isDisabled;
30
+ }
31
+ //! event handlers
32
+ onBlur(event) {
33
+ super.onBlur(event);
34
+ this._onTouchedRegistered?.();
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _NgModelComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
37
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: _NgModelComponentBase, usesInheritance: true, ngImport: i0 }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _NgModelComponentBase, decorators: [{
40
+ type: Directive
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdtb2RlbC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVoRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSx1QkFBdUI7SUFJdkU7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFrQjtRQUMvQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBZ0JELGtCQUFrQjtJQUNULE1BQU0sQ0FBQyxLQUFpQjtRQUM3QixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs4R0E1Q2lCLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUQxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9mb2N1c2FibGUtY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21tb24gY29kZSBmb3IgY29tcG9uZW50cywgd2hpY2ggaW1wbGVtZW50IHRoZSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAqXG4gKiAqKldhcm5pbmcqKjogYHdyaXRlVmFsdWVgIGZ1bmN0aW9uIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBvbiB0aGUgY2hpbGQgY29tcG9uZW50IVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvclxuICAgIHByb3RlY3RlZCBfb25DaGFuZ2VSZWdpc3RlcmVkITogKF86IGFueSkgPT4gdm9pZDtcbiAgICBwcm90ZWN0ZWQgX29uVG91Y2hlZFJlZ2lzdGVyZWQhOiAoKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGhhbmRsZSB0b3VjaGVkIHN0YXRlLiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHZhbHVlIGNoYW5nZS4gUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3Rlci5cbiAgICAgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQgPSBmbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgZGlzYWJsZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIHRoZSBuZXcgZGlzYWJsZWQgc3RhdGUuXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgdGhlIGEgbmV3IHZhbHVlIGludG8gdGhlIGNvbXBvbmVudC4gUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGFic3RyYWN0XG4gICAgICogQHBhcmFtIHYgVGhlIG5ldyB2YWx1ZSB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCB3cml0ZVZhbHVlKHY6IGFueSk6IHZvaWQ7IC8vKiBhYnN0cmFjdFxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIHRoZSBhIG5ldyB2YWx1ZSBpbnRvIHRoZSBjb21wb25lbnQuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBhYnN0cmFjdFxuICAgICAqIEBwYXJhbSB2IFRoZSBuZXcgdmFsdWUgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9lbWl0Q2hhbmdlKCk6IHZvaWQ7IC8vKiBhYnN0cmFjdFxuXG4gICAgLy8hIGV2ZW50IGhhbmRsZXJzXG4gICAgb3ZlcnJpZGUgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHN1cGVyLm9uQmx1cihldmVudCk7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQ/LigpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ export class Queue {
2
+ push(item) {
3
+ if (!this.tail)
4
+ return this.pushFront(item);
5
+ this.tail.next = new QueueItem(item);
6
+ this.tail = this.tail.next;
7
+ }
8
+ pushFront(item) {
9
+ this.head = new QueueItem(item, this.head);
10
+ if (!this.tail)
11
+ this.tail = this.head;
12
+ }
13
+ pop() {
14
+ const head = this.head;
15
+ if (!head)
16
+ return;
17
+ //replace head with the next item
18
+ this.head = head.next;
19
+ //delete the tail if there are no next items
20
+ if (!this.head)
21
+ this.tail = undefined;
22
+ return head.value;
23
+ }
24
+ peek() {
25
+ return this.head?.value;
26
+ }
27
+ clear() {
28
+ this.head = undefined;
29
+ this.tail = undefined;
30
+ }
31
+ get length() {
32
+ let length = 0;
33
+ let currentNode = this.head;
34
+ while (currentNode) {
35
+ length++;
36
+ currentNode = currentNode.next;
37
+ }
38
+ return length;
39
+ }
40
+ isEmpty() {
41
+ return !this.head;
42
+ }
43
+ toArray() {
44
+ const array = [];
45
+ let currentNode = this.head;
46
+ while (currentNode) {
47
+ array.push(currentNode.value);
48
+ currentNode = currentNode.next;
49
+ }
50
+ return array;
51
+ }
52
+ }
53
+ export class QueueItem {
54
+ constructor(value, next) {
55
+ this.value = value;
56
+ this.next = next;
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQU8sS0FBSztJQUlkLElBQUksQ0FBQyxJQUFPO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxJQUFLLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELFNBQVMsQ0FBQyxJQUFPO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBQ0QsR0FBRztRQUNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBQ2xCLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixPQUFPLFdBQVcsRUFBRTtZQUNoQixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU87UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN0QixDQUFDO0lBQ0QsT0FBTztRQUNILE1BQU0sS0FBSyxHQUFRLEVBQUUsQ0FBQztRQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLE9BQU8sV0FBVyxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDbEIsWUFDVyxLQUFRLEVBQ1IsSUFBbUI7UUFEbkIsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUNSLFNBQUksR0FBSixJQUFJLENBQWU7SUFDM0IsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIElRdWV1ZSB7XG4gICAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBRdWV1ZTxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBJUXVldWUge1xuICAgIHByaXZhdGUgaGVhZD86IFF1ZXVlSXRlbTxUPjtcbiAgICBwcml2YXRlIHRhaWw/OiBRdWV1ZUl0ZW08VD47XG5cbiAgICBwdXNoKGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhaWwpIHJldHVybiB0aGlzLnB1c2hGcm9udChpdGVtKTtcbiAgICAgICAgdGhpcy50YWlsIS5uZXh0ID0gbmV3IFF1ZXVlSXRlbShpdGVtKTtcbiAgICAgICAgdGhpcy50YWlsID0gdGhpcy50YWlsIS5uZXh0ITtcbiAgICB9XG4gICAgcHVzaEZyb250KGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oZWFkID0gbmV3IFF1ZXVlSXRlbShpdGVtLCB0aGlzLmhlYWQpO1xuICAgICAgICBpZiAoIXRoaXMudGFpbCkgdGhpcy50YWlsID0gdGhpcy5oZWFkO1xuICAgIH1cbiAgICBwb3AoKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGhlYWQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIGlmICghaGVhZCkgcmV0dXJuO1xuICAgICAgICAvL3JlcGxhY2UgaGVhZCB3aXRoIHRoZSBuZXh0IGl0ZW1cbiAgICAgICAgdGhpcy5oZWFkID0gaGVhZC5uZXh0O1xuICAgICAgICAvL2RlbGV0ZSB0aGUgdGFpbCBpZiB0aGVyZSBhcmUgbm8gbmV4dCBpdGVtc1xuICAgICAgICBpZiAoIXRoaXMuaGVhZCkgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBoZWFkLnZhbHVlO1xuICAgIH1cbiAgICBwZWVrKCk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5oZWFkPy52YWx1ZTtcbiAgICB9XG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVhZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBsZW5ndGggPSAwO1xuICAgICAgICBsZXQgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgICAgICAgbGVuZ3RoKys7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gICAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmhlYWQ7XG4gICAgfVxuICAgIHRvQXJyYXkoKTogVFtdIHtcbiAgICAgICAgY29uc3QgYXJyYXk6IFRbXSA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgICAgICAgYXJyYXkucHVzaChjdXJyZW50Tm9kZS52YWx1ZSk7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXVlSXRlbTxUPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB2YWx1ZTogVCxcbiAgICAgICAgcHVibGljIG5leHQ/OiBRdWV1ZUl0ZW08VD5cbiAgICApIHt9XG59XG4iXX0=
@@ -0,0 +1,304 @@
1
+ import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
2
+ import { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
3
+ import { SimpleItemStorage } from './item-storages/simple-item-storage';
4
+ import { _NgModelComponentBase } from './ngmodel-component';
5
+ import * as i0 from "@angular/core";
6
+ export class _SelectableListComponentBase extends _NgModelComponentBase {
7
+ constructor(_cd) {
8
+ super();
9
+ this._cd = _cd;
10
+ //! public constants
11
+ this.itemStorage = new SimpleItemStorage(this);
12
+ this.htmlId = crypto.randomUUID();
13
+ this.DEFAULTS = {
14
+ valueFrom: 'value',
15
+ labelFrom: 'label',
16
+ disabledFrom: 'disabled',
17
+ };
18
+ //! multiselectable
19
+ this._multiselectable = false;
20
+ //! require value
21
+ this._requireValue = undefined;
22
+ //! coerced properties
23
+ //should the value that the "disabledFrom" path lead to be inverted?
24
+ //useful when the property is e.g. "active", which is the oposite of "disabled"
25
+ this._invertDisabled = false;
26
+ this._maxSelectedItems = undefined;
27
+ //! change & touch event emitters
28
+ this._touched = false;
29
+ //! focus & blur handlers
30
+ this.lastBlurTimestamp = null;
31
+ this.valueChange = new EventEmitter();
32
+ //! output events
33
+ this.changeEvent = new EventEmitter();
34
+ this.addEvent = new EventEmitter();
35
+ this.removeEvent = new EventEmitter();
36
+ //! highligh-related
37
+ this.isMouseBeingUsed = false;
38
+ }
39
+ //! items setter/getter
40
+ get items() {
41
+ return this.itemStorage.items;
42
+ }
43
+ set items(value) {
44
+ if (!Array.isArray(value))
45
+ value = coerceArrayProperty(value);
46
+ let shouldPrintErrors = this.itemStorage.setItems(value);
47
+ if (shouldPrintErrors) {
48
+ this._printPrimitiveWarnings();
49
+ }
50
+ }
51
+ _printPrimitiveWarnings() {
52
+ function makeWarning(str) {
53
+ console.warn(`Skipped using [${str}] property bound to <ard-segment>, as some provided items are of primitive type`);
54
+ }
55
+ if (this.valueFrom) {
56
+ makeWarning('valueFrom');
57
+ }
58
+ if (this.labelFrom) {
59
+ makeWarning('labelFrom');
60
+ }
61
+ if (this.disabledFrom) {
62
+ makeWarning('disabledFrom');
63
+ }
64
+ if (this.invertDisabled) {
65
+ makeWarning('invertDisabled');
66
+ }
67
+ }
68
+ get singleselectable() {
69
+ return !this._multiselectable;
70
+ }
71
+ get invertDisabled() {
72
+ return this._invertDisabled;
73
+ }
74
+ set invertDisabled(v) {
75
+ this._invertDisabled = coerceBooleanProperty(v);
76
+ }
77
+ get maxSelectedItems() {
78
+ return this._maxSelectedItems;
79
+ }
80
+ set maxSelectedItems(v) {
81
+ this._maxSelectedItems = coerceNumberProperty(v);
82
+ }
83
+ //! control value accessor
84
+ //override the writeValue and setDisabledState defined in _NgModelComponent
85
+ setDisabledState(state) {
86
+ this._disabled = state;
87
+ this._cd.markForCheck();
88
+ }
89
+ writeValue(ngModel) {
90
+ this.itemStorage.writeValue(ngModel);
91
+ this._cd.markForCheck();
92
+ }
93
+ get touched() {
94
+ return this._touched;
95
+ }
96
+ set touched(state) {
97
+ this._touched = state;
98
+ }
99
+ _emitChange() {
100
+ let value = this.itemStorage.value;
101
+ this._onChangeRegistered?.(value);
102
+ this.changeEvent.emit(value);
103
+ this.valueChange.emit(value);
104
+ }
105
+ _onTouched() {
106
+ if (this.touched)
107
+ return;
108
+ this._onTouchedRegistered?.();
109
+ this.touched = true;
110
+ }
111
+ onFocus(event) {
112
+ super.onFocus(event);
113
+ if (this.touched || !this.lastBlurTimestamp || this.lastBlurTimestamp + 1 < Date.now())
114
+ return;
115
+ this.lastBlurTimestamp = null;
116
+ this._onTouched();
117
+ }
118
+ onBlur(event) {
119
+ super.onBlur(event);
120
+ if (!this.touched)
121
+ this.lastBlurTimestamp = Date.now();
122
+ }
123
+ //! getters
124
+ get firstHighlightedItem() {
125
+ return this.itemStorage.highlightedItems?.first();
126
+ }
127
+ get highlightedItems() {
128
+ return this.itemStorage.highlightedItems;
129
+ }
130
+ get isItemLimitReached() {
131
+ return this.itemStorage.isItemLimitReached;
132
+ }
133
+ //! context providers
134
+ getOptionContext(item) {
135
+ return {
136
+ $implicit: item,
137
+ item,
138
+ itemData: item.itemData,
139
+ };
140
+ }
141
+ //! value input & output
142
+ set value(newValue) {
143
+ if (!Array.isArray(newValue))
144
+ newValue = coerceArrayProperty(newValue);
145
+ this.writeValue(newValue);
146
+ }
147
+ //! item selection handlers
148
+ toggleItem(item) {
149
+ if (item.selected) {
150
+ this.unselectItem(item);
151
+ return;
152
+ }
153
+ this.selectItem(item);
154
+ }
155
+ selectItem(...items) {
156
+ let [selected, unselected] = this.itemStorage.selectItem(...items);
157
+ if (unselected.length > 0)
158
+ this.removeEvent.emit(unselected);
159
+ if (selected.length > 0) {
160
+ this.addEvent.emit(selected);
161
+ this._emitChange();
162
+ }
163
+ }
164
+ unselectItem(...items) {
165
+ let unselected = this.itemStorage.unselectItem(...items);
166
+ this.removeEvent.emit(unselected);
167
+ this._emitChange();
168
+ }
169
+ onMouseMove() {
170
+ this.isMouseBeingUsed = true;
171
+ }
172
+ onItemMouseEnter(option, event) {
173
+ if (!this.isMouseBeingUsed)
174
+ return;
175
+ this.itemStorage.highlightSingleItem(option);
176
+ event.stopPropagation();
177
+ }
178
+ onItemMouseLeave(option, event) {
179
+ if (!this.isMouseBeingUsed)
180
+ return;
181
+ this.itemStorage.unhighlightItem(option);
182
+ event.stopPropagation();
183
+ }
184
+ //! click handlers
185
+ onItemClick(option, event) {
186
+ event.stopPropagation();
187
+ this.toggleItem(option);
188
+ }
189
+ //! key press handlers
190
+ onKeyPress(event) {
191
+ switch (event.code) {
192
+ case 'Space':
193
+ case 'Enter': {
194
+ this._toggleHighlightedItems(event);
195
+ return;
196
+ }
197
+ case 'ArrowRight': {
198
+ this._highlightNext(event);
199
+ return;
200
+ }
201
+ case 'ArrowLeft': {
202
+ this._highlightPrevious(event);
203
+ return;
204
+ }
205
+ case 'Home': {
206
+ this._highlightFirst(event);
207
+ return;
208
+ }
209
+ case 'End': {
210
+ this._highlightLast(event);
211
+ return;
212
+ }
213
+ case 'KeyA': {
214
+ if (event.ctrlKey) {
215
+ this._highlightAll(event);
216
+ return;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ _toggleHighlightedItems(event) {
222
+ if (!this.isFocused)
223
+ return;
224
+ event.preventDefault();
225
+ const highlightedItems = this.highlightedItems;
226
+ if (highlightedItems.every(item => item.selected)) {
227
+ this.unselectItem(...highlightedItems);
228
+ }
229
+ else {
230
+ this.selectItem(...highlightedItems);
231
+ }
232
+ }
233
+ _highlightPrevious(event) {
234
+ if (!this.isFocused)
235
+ return;
236
+ event.preventDefault();
237
+ this.isMouseBeingUsed = false;
238
+ this.itemStorage.highlightNextItem(-1, event.shiftKey);
239
+ }
240
+ _highlightNext(event) {
241
+ if (!this.isFocused)
242
+ return;
243
+ event.preventDefault();
244
+ this.isMouseBeingUsed = false;
245
+ this.itemStorage.highlightNextItem(+1, event.shiftKey);
246
+ }
247
+ _highlightFirst(event) {
248
+ if (!this.isFocused)
249
+ return;
250
+ event.preventDefault();
251
+ this.isMouseBeingUsed = false;
252
+ this.itemStorage.highlightFirstItem();
253
+ }
254
+ _highlightLast(event) {
255
+ if (!this.isFocused)
256
+ return;
257
+ event.preventDefault();
258
+ this.isMouseBeingUsed = false;
259
+ this.itemStorage.highlightLastItem();
260
+ }
261
+ _highlightAll(event) {
262
+ this.itemStorage.highlightAllItems();
263
+ }
264
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _SelectableListComponentBase, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
265
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: _SelectableListComponentBase, inputs: { valueFrom: "valueFrom", labelFrom: "labelFrom", disabledFrom: "disabledFrom", items: "items", invertDisabled: "invertDisabled", maxSelectedItems: "maxSelectedItems", value: "value" }, outputs: { valueChange: "valueChange", changeEvent: "change", addEvent: "add", removeEvent: "remove" }, host: { listeners: { "mousemove": "onMouseMove()", "keydown": "onKeyPress($event)" }, properties: { "class.ard-touched": "this.touched" } }, usesInheritance: true, ngImport: i0 }); }
266
+ }
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: _SelectableListComponentBase, decorators: [{
268
+ type: Directive
269
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { valueFrom: [{
270
+ type: Input
271
+ }], labelFrom: [{
272
+ type: Input
273
+ }], disabledFrom: [{
274
+ type: Input
275
+ }], items: [{
276
+ type: Input
277
+ }], invertDisabled: [{
278
+ type: Input
279
+ }], maxSelectedItems: [{
280
+ type: Input
281
+ }], touched: [{
282
+ type: HostBinding,
283
+ args: ['class.ard-touched']
284
+ }], value: [{
285
+ type: Input
286
+ }], valueChange: [{
287
+ type: Output
288
+ }], changeEvent: [{
289
+ type: Output,
290
+ args: ['change']
291
+ }], addEvent: [{
292
+ type: Output,
293
+ args: ['add']
294
+ }], removeEvent: [{
295
+ type: Output,
296
+ args: ['remove']
297
+ }], onMouseMove: [{
298
+ type: HostListener,
299
+ args: ['mousemove']
300
+ }], onKeyPress: [{
301
+ type: HostListener,
302
+ args: ['keydown', ['$event']]
303
+ }] } });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS1saXN0LWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL3NlbGVjdGFibGUtbGlzdC1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRyxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0scUNBQXFDLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzVELE1BQU0sT0FBZ0IsNEJBQTZCLFNBQVEscUJBQXFCO0lBVzVFLFlBQW9CLEdBQXNCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFEsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFWMUMsb0JBQW9CO1FBQ1gsZ0JBQVcsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFHO1lBQ2hCLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLFlBQVksRUFBRSxVQUFVO1NBQzNCLENBQUM7UUEyQ0YsbUJBQW1CO1FBQ1QscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBTTVDLGlCQUFpQjtRQUNQLGtCQUFhLEdBQXdCLFNBQVMsQ0FBQztRQUd6RCxzQkFBc0I7UUFDdEIsb0VBQW9FO1FBQ3BFLCtFQUErRTtRQUN2RSxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVNqQyxzQkFBaUIsR0FBdUIsU0FBUyxDQUFDO1FB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SztnQkFJRixLQUFLO3NCQURSLEtBQUs7Z0JBK0NGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBVUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQXNCRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsbUJBQW1CO2dCQTJENUIsS0FBSztzQkFEUixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBR1csV0FBVztzQkFBNUIsTUFBTTt1QkFBQyxRQUFRO2dCQUNELFFBQVE7c0JBQXRCLE1BQU07dUJBQUMsS0FBSztnQkFDSyxXQUFXO3NCQUE1QixNQUFNO3VCQUFDLFFBQVE7Z0JBOEJoQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVztnQkF1QnpCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXlQcm9wZXJ0eSwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IEFyZE9wdGlvblNpbXBsZSwgT3B0aW9uQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzL2l0ZW0tc3RvcmFnZS50eXBlcyc7XG5pbXBvcnQgeyBTaW1wbGVJdGVtU3RvcmFnZSwgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IH0gZnJvbSAnLi9pdGVtLXN0b3JhZ2VzL3NpbXBsZS1pdGVtLXN0b3JhZ2UnO1xuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9uZ21vZGVsLWNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9TZWxlY3RhYmxlTGlzdENvbXBvbmVudEJhc2UgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IHtcbiAgICAvLyEgcHVibGljIGNvbnN0YW50c1xuICAgIHJlYWRvbmx5IGl0ZW1TdG9yYWdlID0gbmV3IFNpbXBsZUl0ZW1TdG9yYWdlKHRoaXMpO1xuICAgIHJlYWRvbmx5IGh0bWxJZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgcmVhZG9ubHkgZWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICAgIHJlYWRvbmx5IERFRkFVTFRTID0ge1xuICAgICAgICB2YWx1ZUZyb206ICd2YWx1ZScsXG4gICAgICAgIGxhYmVsRnJvbTogJ2xhYmVsJyxcbiAgICAgICAgZGlzYWJsZWRGcm9tOiAnZGlzYWJsZWQnLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvLyEgYmluZGluZy1yZWxhdGVkIGlucHV0c1xuICAgIEBJbnB1dCgpIHZhbHVlRnJvbT86IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbEZyb20/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGlzYWJsZWRGcm9tPzogc3RyaW5nO1xuXG4gICAgLy8hIGl0ZW1zIHNldHRlci9nZXR0ZXJcbiAgICBASW5wdXQoKVxuICAgIGdldCBpdGVtcygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1TdG9yYWdlLml0ZW1zO1xuICAgIH1cbiAgICBzZXQgaXRlbXModmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB2YWx1ZSA9IGNvZXJjZUFycmF5UHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIGxldCBzaG91bGRQcmludEVycm9ycyA9IHRoaXMuaXRlbVN0b3JhZ2Uuc2V0SXRlbXModmFsdWUpO1xuXG4gICAgICAgIGlmIChzaG91bGRQcmludEVycm9ycykge1xuICAgICAgICAgICAgdGhpcy5fcHJpbnRQcmltaXRpdmVXYXJuaW5ncygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3ByaW50UHJpbWl0aXZlV2FybmluZ3MoKSB7XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VXYXJuaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFNraXBwZWQgdXNpbmcgWyR7c3RyfV0gcHJvcGVydHkgYm91bmQgdG8gPGFyZC1zZWdtZW50PiwgYXMgc29tZSBwcm92aWRlZCBpdGVtcyBhcmUgb2YgcHJpbWl0aXZlIHR5cGVgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZUZyb20pIHtcbiAgICAgICAgICAgIG1ha2VXYXJuaW5nKCd2YWx1ZUZyb20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5sYWJlbEZyb20pIHtcbiAgICAgICAgICAgIG1ha2VXYXJuaW5nKCdsYWJlbEZyb20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZEZyb20pIHtcbiAgICAgICAgICAgIG1ha2VXYXJuaW5nKCdkaXNhYmxlZEZyb20nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnZlcnREaXNhYmxlZCkge1xuICAgICAgICAgICAgbWFrZVdhcm5pbmcoJ2ludmVydERpc2FibGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyEgbXVsdGlzZWxlY3RhYmxlXG4gICAgcHJvdGVjdGVkIF9tdWx0aXNlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhYnN0cmFjdCBtdWx0aXNlbGVjdGFibGU6IGFueTtcbiAgICBnZXQgc2luZ2xlc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9tdWx0aXNlbGVjdGFibGU7XG4gICAgfVxuXG4gICAgLy8hIHJlcXVpcmUgdmFsdWVcbiAgICBwcm90ZWN0ZWQgX3JlcXVpcmVWYWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBhYnN0cmFjdCByZXF1aXJlVmFsdWU6IGFueTtcblxuICAgIC8vISBjb2VyY2VkIHByb3BlcnRpZXNcbiAgICAvL3Nob3VsZCB0aGUgdmFsdWUgdGhhdCB0aGUgXCJkaXNhYmxlZEZyb21cIiBwYXRoIGxlYWQgdG8gYmUgaW52ZXJ0ZWQ/XG4gICAgLy91c2VmdWwgd2hlbiB0aGUgcHJvcGVydHkgaXMgZS5nLiBcImFjdGl2ZVwiLCB3aGljaCBpcyB0aGUgb3Bvc2l0ZSBvZiBcImRpc2FibGVkXCJcbiAgICBwcml2YXRlIF9pbnZlcnREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGludmVydERpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52ZXJ0RGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBpbnZlcnREaXNhYmxlZCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5faW52ZXJ0RGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWF4U2VsZWN0ZWRJdGVtczogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1heFNlbGVjdGVkSXRlbXMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFNlbGVjdGVkSXRlbXM7XG4gICAgfVxuICAgIHNldCBtYXhTZWxlY3RlZEl0ZW1zKHY6IGFueSkge1xuICAgICAgICB0aGlzLl9tYXhTZWxlY3RlZEl0ZW1zID0gY29lcmNlTnVtYmVyUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3JcbiAgICAvL292ZXJyaWRlIHRoZSB3cml0ZVZhbHVlIGFuZCBzZXREaXNhYmxlZFN0YXRlIGRlZmluZWQgaW4gX05nTW9kZWxDb21wb25lbnRcbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gc3RhdGU7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICB3cml0ZVZhbHVlKG5nTW9kZWw6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbVN0b3JhZ2Uud3JpdGVWYWx1ZShuZ01vZGVsKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8hIGNoYW5nZSAmIHRvdWNoIGV2ZW50IGVtaXR0ZXJzXG4gICAgcHJpdmF0ZSBfdG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuYXJkLXRvdWNoZWQnKVxuICAgIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldCB0b3VjaGVkKHN0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3RvdWNoZWQgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuaXRlbVN0b3JhZ2UudmFsdWU7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9vblRvdWNoZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvdWNoZWQpIHJldHVybjtcblxuICAgICAgICB0aGlzLl9vblRvdWNoZWRSZWdpc3RlcmVkPy4oKTtcbiAgICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyEgZm9jdXMgJiBibHVyIGhhbmRsZXJzXG4gICAgbGFzdEJsdXJUaW1lc3RhbXA6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIub25Gb2N1cyhldmVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMudG91Y2hlZCB8fCAhdGhpcy5sYXN0Qmx1clRpbWVzdGFtcCB8fCB0aGlzLmxhc3RCbHVyVGltZXN0YW1wICsgMSA8IERhdGUubm93KCkpIHJldHVybjtcbiAgICAgICAgdGhpcy5sYXN0Qmx1clRpbWVzdGFtcCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgfVxuICAgIG92ZXJyaWRlIG9uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBzdXBlci5vbkJsdXIoZXZlbnQpO1xuXG4gICAgICAgIGlmICghdGhpcy50b3VjaGVkKSB0aGlzLmxhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICAvLyEgZ2V0dGVyc1xuICAgIGdldCBmaXJzdEhpZ2hsaWdodGVkSXRlbSgpOiBBcmRPcHRpb25TaW1wbGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHRlZEl0ZW1zPy5maXJzdCgpO1xuICAgIH1cbiAgICBnZXQgaGlnaGxpZ2h0ZWRJdGVtcygpOiBBcmRPcHRpb25TaW1wbGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodGVkSXRlbXM7XG4gICAgfVxuICAgIGdldCBpc0l0ZW1MaW1pdFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1TdG9yYWdlLmlzSXRlbUxpbWl0UmVhY2hlZDtcbiAgICB9XG5cbiAgICAvLyEgY29udGV4dCBwcm92aWRlcnNcbiAgICBnZXRPcHRpb25Db250ZXh0KGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IE9wdGlvbkNvbnRleHQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtLml0ZW1EYXRhLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vISB2YWx1ZSBpbnB1dCAmIG91dHB1dFxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkgbmV3VmFsdWUgPSBjb2VyY2VBcnJheVByb3BlcnR5KG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8vISBvdXRwdXQgZXZlbnRzXG4gICAgQE91dHB1dCgnY2hhbmdlJykgY2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICAgIEBPdXRwdXQoJ2FkZCcpIGFkZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgICBAT3V0cHV0KCdyZW1vdmUnKSByZW1vdmVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgICAvLyEgaXRlbSBzZWxlY3Rpb24gaGFuZGxlcnNcbiAgICB0b2dnbGVJdGVtKGl0ZW06IEFyZE9wdGlvblNpbXBsZSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy51bnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgIH1cbiAgICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25TaW1wbGVbXSk6IHZvaWQge1xuICAgICAgICBsZXQgW3NlbGVjdGVkLCB1bnNlbGVjdGVkXSA9IHRoaXMuaXRlbVN0b3JhZ2Uuc2VsZWN0SXRlbSguLi5pdGVtcyk7XG5cbiAgICAgICAgaWYgKHVuc2VsZWN0ZWQubGVuZ3RoID4gMCkgdGhpcy5yZW1vdmVFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50LmVtaXQoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVuc2VsZWN0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uU2ltcGxlW10pOiB2b2lkIHtcbiAgICAgICAgbGV0IHVuc2VsZWN0ZWQgPSB0aGlzLml0ZW1TdG9yYWdlLnVuc2VsZWN0SXRlbSguLi5pdGVtcyk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudC5lbWl0KHVuc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLy8hIGhpZ2hsaWdoLXJlbGF0ZWRcbiAgICBwdWJsaWMgaXNNb3VzZUJlaW5nVXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScpXG4gICAgb25Nb3VzZU1vdmUoKSB7XG4gICAgICAgIHRoaXMuaXNNb3VzZUJlaW5nVXNlZCA9IHRydWU7XG4gICAgfVxuICAgIG9uSXRlbU1vdXNlRW50ZXIob3B0aW9uOiBBcmRPcHRpb25TaW1wbGUsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc01vdXNlQmVpbmdVc2VkKSByZXR1cm47XG4gICAgICAgIHRoaXMuaXRlbVN0b3JhZ2UuaGlnaGxpZ2h0U2luZ2xlSXRlbShvcHRpb24pO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgb25JdGVtTW91c2VMZWF2ZShvcHRpb246IEFyZE9wdGlvblNpbXBsZSwgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW91c2VCZWluZ1VzZWQpIHJldHVybjtcbiAgICAgICAgdGhpcy5pdGVtU3RvcmFnZS51bmhpZ2hsaWdodEl0ZW0ob3B0aW9uKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLy8hIGNsaWNrIGhhbmRsZXJzXG4gICAgb25JdGVtQ2xpY2sob3B0aW9uOiBBcmRPcHRpb25TaW1wbGUsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnRvZ2dsZUl0ZW0ob3B0aW9uKTtcbiAgICB9XG5cbiAgICAvLyEga2V5IHByZXNzIGhhbmRsZXJzXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUhpZ2hsaWdodGVkSXRlbXMoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TmV4dChldmVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFByZXZpb3VzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdIb21lJzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodEZpcnN0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TGFzdChldmVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnS2V5QSc6IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRBbGwoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3RvZ2dsZUhpZ2hsaWdodGVkSXRlbXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRm9jdXNlZCkgcmV0dXJuO1xuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRJdGVtcyA9IHRoaXMuaGlnaGxpZ2h0ZWRJdGVtcztcblxuICAgICAgICBpZiAoaGlnaGxpZ2h0ZWRJdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbSguLi5oaWdobGlnaHRlZEl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbSguLi5oaWdobGlnaHRlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRQcmV2aW91cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSByZXR1cm47XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5pc01vdXNlQmVpbmdVc2VkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5pdGVtU3RvcmFnZS5oaWdobGlnaHROZXh0SXRlbSgtMSwgZXZlbnQuc2hpZnRLZXkpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHROZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodE5leHRJdGVtKCsxLCBldmVudC5zaGlmdEtleSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hpZ2hsaWdodEZpcnN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRMYXN0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQpIHJldHVybjtcblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmlzTW91c2VCZWluZ1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodExhc3RJdGVtKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hpZ2hsaWdodEFsbChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1TdG9yYWdlLmhpZ2hsaWdodEFsbEl0ZW1zKCk7XG4gICAgfVxufVxuIl19