myrta-ui 14.0.0-beta.5 → 17.0.0-beta.10

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 (752) hide show
  1. package/README.md +1 -0
  2. package/esm2022/lib/components/alert/alert.component.mjs +43 -0
  3. package/{esm2020 → esm2022}/lib/components/alert/alert.enum.mjs +14 -14
  4. package/{esm2020 → esm2022}/lib/components/alert/alert.module.mjs +19 -19
  5. package/{esm2020 → esm2022}/lib/components/badges/badge.enum.mjs +31 -31
  6. package/{esm2020 → esm2022}/lib/components/badges/badges.module.mjs +30 -30
  7. package/esm2022/lib/components/badges/components/badge/badge.component.mjs +61 -0
  8. package/{esm2020 → esm2022}/lib/components/badges/components/badge-group/badge-group.component.mjs +11 -11
  9. package/esm2022/lib/components/breadcrumbs/breadcrumbs.component.mjs +28 -0
  10. package/{esm2020 → esm2022}/lib/components/breadcrumbs/breadcrumbs.enum.mjs +5 -5
  11. package/{esm2020 → esm2022}/lib/components/breadcrumbs/breadcrumbs.module.mjs +25 -25
  12. package/esm2022/lib/components/button/button.component.mjs +100 -0
  13. package/esm2022/lib/components/button/button.enum.mjs +27 -0
  14. package/{esm2020 → esm2022}/lib/components/button/button.module.mjs +21 -21
  15. package/esm2022/lib/components/cdk-tooltip/cdk-tooltip/tooltip-container.component.mjs +29 -0
  16. package/esm2022/lib/components/cdk-tooltip/cdk-tooltip.directive.mjs +99 -0
  17. package/{esm2020 → esm2022}/lib/components/cdk-tooltip/cdk-tooltip.module.mjs +21 -21
  18. package/{esm2020 → esm2022}/lib/components/cdk-tooltip/constants/index.mjs +69 -69
  19. package/{esm2020 → esm2022}/lib/components/cdk-tooltip/models/tooltip-data.mjs +1 -1
  20. package/esm2022/lib/components/chars-left/chars-left.component.mjs +24 -0
  21. package/{esm2020 → esm2022}/lib/components/chars-left/chars-left.module.mjs +19 -19
  22. package/esm2022/lib/components/dropdown/directives/hide-after-click.directive.mjs +24 -0
  23. package/esm2022/lib/components/dropdown/dropdown.component.mjs +107 -0
  24. package/{esm2020 → esm2022}/lib/components/dropdown/dropdown.module.mjs +21 -21
  25. package/esm2022/lib/components/error-message/error-message.component.mjs +32 -0
  26. package/{esm2020 → esm2022}/lib/components/error-message/error-message.module.mjs +19 -19
  27. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +153 -0
  28. package/esm2022/lib/components/form/checkbox/checkbox.enum.mjs +5 -0
  29. package/{esm2020 → esm2022}/lib/components/form/checkbox/checkbox.module.mjs +22 -22
  30. package/esm2022/lib/components/form/checkbox-group/checkbox-group.component.mjs +178 -0
  31. package/{esm2020 → esm2022}/lib/components/form/checkbox-group/checkbox-group.module.mjs +47 -47
  32. package/{esm2020 → esm2022}/lib/components/form/checkbox-group/components/checkbox-group-header/checkbox-group-header.component.mjs +48 -49
  33. package/esm2022/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.mjs +106 -0
  34. package/esm2022/lib/components/form/checkbox-group/helpers/change-group-value.mjs +20 -0
  35. package/esm2022/lib/components/form/checkbox-group/helpers/change-item-value.mjs +15 -0
  36. package/esm2022/lib/components/form/checkbox-group/helpers/filter-search-group.mjs +27 -0
  37. package/esm2022/lib/components/form/checkbox-group/helpers/get-checked-items.mjs +20 -0
  38. package/{esm2020 → esm2022}/lib/components/form/checkbox-group/helpers/get-item-by-id.mjs +10 -10
  39. package/esm2022/lib/components/form/checkbox-group/helpers/get-sorted-list.mjs +50 -0
  40. package/{esm2020 → esm2022}/lib/components/form/checkbox-group/models/checkbox-group.model.mjs +1 -1
  41. package/{esm2020 → esm2022}/lib/components/form/editor/config/default-inline-style.mjs +5 -5
  42. package/{esm2020 → esm2022}/lib/components/form/editor/config/index.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/components/form/editor/config/popups-toolbar.mjs +8 -8
  44. package/{esm2020 → esm2022}/lib/components/form/editor/config/toolbar.mjs +71 -71
  45. package/esm2022/lib/components/form/editor/editor.component.mjs +265 -0
  46. package/{esm2020 → esm2022}/lib/components/form/editor/editor.enum.mjs +1 -1
  47. package/esm2022/lib/components/form/editor/editor.module.mjs +45 -0
  48. package/{esm2020 → esm2022}/lib/components/form/editor/models/toolbar.model.mjs +1 -1
  49. package/esm2022/lib/components/form/editor/modules/change-icon-module.mjs +92 -0
  50. package/{esm2020 → esm2022}/lib/components/form/input-date-time/constants/value-models.mjs +13 -13
  51. package/{esm2020 → esm2022}/lib/components/form/input-date-time/enum/timezone.mjs +6 -6
  52. package/{esm2020 → esm2022}/lib/components/form/input-date-time/helpers/clean-date.mjs +4 -4
  53. package/esm2022/lib/components/form/input-date-time/helpers/cursor-position.mjs +23 -0
  54. package/esm2022/lib/components/form/input-date-time/helpers/formatting-from-models.mjs +10 -0
  55. package/{esm2020 → esm2022}/lib/components/form/input-date-time/helpers/formatting-moscow-timezone.mjs +9 -9
  56. package/{esm2020 → esm2022}/lib/components/form/input-date-time/helpers/validate-value-models.mjs +60 -60
  57. package/{esm2020 → esm2022}/lib/components/form/input-date-time/helpers/value-parser.mjs +38 -38
  58. package/esm2022/lib/components/form/input-date-time/input-date-time.component.mjs +386 -0
  59. package/{esm2020 → esm2022}/lib/components/form/input-date-time/input-date-time.enum.mjs +7 -7
  60. package/esm2022/lib/components/form/input-date-time/input-date-time.module.mjs +46 -0
  61. package/{esm2020 → esm2022}/lib/components/form/input-datepicker/constants/value-models.mjs +14 -14
  62. package/{esm2020 → esm2022}/lib/components/form/input-datepicker/helpers/clean-date.mjs +4 -4
  63. package/esm2022/lib/components/form/input-datepicker/helpers/cursor-position.mjs +23 -0
  64. package/esm2022/lib/components/form/input-datepicker/helpers/get-date-dayjs-object.mjs +10 -0
  65. package/esm2022/lib/components/form/input-datepicker/helpers/get-date-object.mjs +10 -0
  66. package/{esm2020 → esm2022}/lib/components/form/input-datepicker/helpers/validate-value-models.mjs +74 -74
  67. package/{esm2020 → esm2022}/lib/components/form/input-datepicker/helpers/value-parser.mjs +47 -47
  68. package/esm2022/lib/components/form/input-datepicker/input-datepicker.component.mjs +356 -0
  69. package/{esm2020 → esm2022}/lib/components/form/input-datepicker/input-datepicker.enum.mjs +6 -6
  70. package/esm2022/lib/components/form/input-datepicker/input-datepicker.module.mjs +46 -0
  71. package/{esm2020 → esm2022}/lib/components/form/input-file/enums/error-messages.enum.mjs +7 -7
  72. package/esm2022/lib/components/form/input-file/input-file.component.mjs +368 -0
  73. package/{esm2020 → esm2022}/lib/components/form/input-file/input-file.enum.mjs +7 -7
  74. package/{esm2020 → esm2022}/lib/components/form/input-file/input-file.module.mjs +26 -26
  75. package/esm2022/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.mjs +88 -0
  76. package/esm2022/lib/components/form/input-file-image/input-file-image.component.mjs +356 -0
  77. package/{esm2020 → esm2022}/lib/components/form/input-file-image/input-file-image.enum.mjs +9 -9
  78. package/esm2022/lib/components/form/input-file-image/input-file-image.module.mjs +53 -0
  79. package/esm2022/lib/components/form/input-number/input-number.component.mjs +267 -0
  80. package/{esm2020 → esm2022}/lib/components/form/input-number/input-number.enum.mjs +7 -7
  81. package/esm2022/lib/components/form/input-number/input-number.module.mjs +55 -0
  82. package/esm2022/lib/components/form/input-opt/components/input-opt/input-opt.component.mjs +370 -0
  83. package/{esm2020 → esm2022}/lib/components/form/input-opt/components/input-opt/input-opt.enum.mjs +7 -7
  84. package/esm2022/lib/components/form/input-opt/directives/opt-pattern.directive.mjs +43 -0
  85. package/{esm2020 → esm2022}/lib/components/form/input-opt/input-opt.module.mjs +38 -38
  86. package/{esm2020 → esm2022}/lib/components/form/input-opt/models/input-opt.model.mjs +5 -5
  87. package/{esm2020 → esm2022}/lib/components/form/input-opt/services/input-opt.service.mjs +33 -33
  88. package/esm2022/lib/components/form/input-password/input-password.component.mjs +118 -0
  89. package/{esm2020 → esm2022}/lib/components/form/input-password/input-password.enum.mjs +7 -7
  90. package/esm2022/lib/components/form/input-password/input-password.module.mjs +36 -0
  91. package/esm2022/lib/components/form/input-phone/data/country-code.mjs +1331 -0
  92. package/esm2022/lib/components/form/input-phone/directives/native-element-injector.directive.mjs +35 -0
  93. package/{esm2020 → esm2022}/lib/components/form/input-phone/enums/country-iso.enum.mjs +246 -246
  94. package/{esm2020 → esm2022}/lib/components/form/input-phone/enums/input-phone.enum.mjs +6 -6
  95. package/{esm2020 → esm2022}/lib/components/form/input-phone/enums/mask.enum.mjs +138 -138
  96. package/{esm2020 → esm2022}/lib/components/form/input-phone/enums/phone-number-format.enum.mjs +5 -5
  97. package/{esm2020 → esm2022}/lib/components/form/input-phone/enums/search-country-field.enum.mjs +7 -7
  98. package/esm2022/lib/components/form/input-phone/input-phone.component.mjs +679 -0
  99. package/esm2022/lib/components/form/input-phone/input-phone.module.mjs +50 -0
  100. package/esm2022/lib/components/form/input-phone/input-phone.validator.mjs +61 -0
  101. package/{esm2020 → esm2022}/lib/components/form/input-phone/interfaces/change-data.mjs +1 -1
  102. package/{esm2020 → esm2022}/lib/components/form/input-phone/models/country.model.mjs +1 -1
  103. package/esm2022/lib/components/form/input-search/input-search.component.mjs +167 -0
  104. package/{esm2020 → esm2022}/lib/components/form/input-search/input-search.enum.mjs +7 -7
  105. package/esm2022/lib/components/form/input-search/input-search.module.mjs +41 -0
  106. package/esm2022/lib/components/form/input-select/input-select.component.mjs +253 -0
  107. package/{esm2020 → esm2022}/lib/components/form/input-select/input-select.enum.mjs +5 -5
  108. package/{esm2020 → esm2022}/lib/components/form/input-select/input-select.module.mjs +45 -45
  109. package/{esm2020 → esm2022}/lib/components/form/input-tel/assets/base64.mjs +3 -3
  110. package/{esm2020 → esm2022}/lib/components/form/input-tel/data/all-countries.mjs +1323 -1323
  111. package/{esm2020 → esm2022}/lib/components/form/input-tel/data/country-iso.enum.mjs +246 -246
  112. package/{esm2020 → esm2022}/lib/components/form/input-tel/data/phone-number-format.enum.mjs +5 -5
  113. package/{esm2020 → esm2022}/lib/components/form/input-tel/data/search-country-field.enum.mjs +7 -7
  114. package/esm2022/lib/components/form/input-tel/directives/input-tel.directive.mjs +66 -0
  115. package/{esm2020 → esm2022}/lib/components/form/input-tel/enums/input-phone.enum.mjs +6 -6
  116. package/esm2022/lib/components/form/input-tel/input-tel.component.mjs +400 -0
  117. package/esm2022/lib/components/form/input-tel/input-tel.module.mjs +43 -0
  118. package/{esm2020 → esm2022}/lib/components/form/input-tel/models/country.model.mjs +1 -1
  119. package/esm2022/lib/components/form/input-text/input-text.component.mjs +189 -0
  120. package/{esm2020 → esm2022}/lib/components/form/input-text/input-text.enum.mjs +14 -14
  121. package/esm2022/lib/components/form/input-text/input-text.module.mjs +49 -0
  122. package/esm2022/lib/components/form/input-textarea/input-textarea.component.mjs +197 -0
  123. package/{esm2020 → esm2022}/lib/components/form/input-textarea/input-textarea.enum.mjs +6 -6
  124. package/esm2022/lib/components/form/input-textarea/input-textarea.module.mjs +49 -0
  125. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/constants/value-models.mjs +7 -7
  126. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/helpers/clean-date.mjs +4 -4
  127. package/esm2022/lib/components/form/input-timepicker/helpers/cursor-position.mjs +14 -0
  128. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/helpers/get-date-dayjs-object.mjs +4 -4
  129. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/helpers/get-date-object.mjs +4 -4
  130. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/helpers/validate-value-models.mjs +29 -29
  131. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/helpers/value-parser.mjs +17 -17
  132. package/esm2022/lib/components/form/input-timepicker/input-timepicker.component.mjs +292 -0
  133. package/{esm2020 → esm2022}/lib/components/form/input-timepicker/input-timepicker.enum.mjs +6 -6
  134. package/esm2022/lib/components/form/input-timepicker/input-timepicker.module.mjs +46 -0
  135. package/esm2022/lib/components/form/radio/radio.component.mjs +91 -0
  136. package/{esm2020 → esm2022}/lib/components/form/radio/radio.enum.mjs +4 -4
  137. package/{esm2020 → esm2022}/lib/components/form/radio/radio.module.mjs +20 -20
  138. package/esm2022/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.mjs +45 -0
  139. package/esm2022/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.mjs +66 -0
  140. package/esm2022/lib/components/form/radio-group/helpers/filter-search-group.mjs +27 -0
  141. package/{esm2020 → esm2022}/lib/components/form/radio-group/helpers/get-item-by-id.mjs +10 -10
  142. package/esm2022/lib/components/form/radio-group/helpers/move-selected-to-first.mjs +27 -0
  143. package/{esm2020 → esm2022}/lib/components/form/radio-group/models/radio-group.model.mjs +2 -2
  144. package/esm2022/lib/components/form/radio-group/radio-group.component.mjs +175 -0
  145. package/esm2022/lib/components/form/radio-group/radio-group.module.mjs +26 -0
  146. package/esm2022/lib/components/form/rating/rating.component.mjs +215 -0
  147. package/{esm2020 → esm2022}/lib/components/form/rating/rating.enum.mjs +15 -15
  148. package/{esm2020 → esm2022}/lib/components/form/rating/rating.module.mjs +25 -25
  149. package/esm2022/lib/components/form/switch/switch.component.mjs +95 -0
  150. package/{esm2020 → esm2022}/lib/components/form/switch/switch.enum.mjs +10 -10
  151. package/{esm2020 → esm2022}/lib/components/form/switch/switch.module.mjs +21 -21
  152. package/esm2022/lib/components/gallery/components/gallery-confirm-modal/gallery-confirm-modal.component.mjs +37 -0
  153. package/esm2022/lib/components/gallery/components/gallery-item/gallery-item.component.mjs +112 -0
  154. package/{esm2020 → esm2022}/lib/components/gallery/constants/custom-buttons-default.mjs +6 -6
  155. package/{esm2020 → esm2022}/lib/components/gallery/constants/thumbs-config-default.mjs +4 -4
  156. package/esm2022/lib/components/gallery/gallery.component.mjs +203 -0
  157. package/{esm2020 → esm2022}/lib/components/gallery/gallery.module.mjs +54 -54
  158. package/{esm2020 → esm2022}/lib/components/gallery/models/gallery-item.model.mjs +1 -1
  159. package/esm2022/lib/components/gallery/services/gallery.service.mjs +33 -0
  160. package/esm2022/lib/components/hint-error-message/hint-error-message.component.mjs +121 -0
  161. package/{esm2020 → esm2022}/lib/components/hint-error-message/hint-error-message.module.mjs +19 -19
  162. package/esm2022/lib/components/icon-button/icon-button.component.mjs +49 -0
  163. package/{esm2020 → esm2022}/lib/components/icon-button/icon-button.enum.mjs +15 -15
  164. package/{esm2020 → esm2022}/lib/components/icon-button/icon-button.module.mjs +19 -19
  165. package/esm2022/lib/components/label/label.component.mjs +143 -0
  166. package/{esm2020 → esm2022}/lib/components/label/label.module.mjs +25 -25
  167. package/esm2022/lib/components/link/link.component.mjs +48 -0
  168. package/{esm2020 → esm2022}/lib/components/link/link.enum.mjs +19 -19
  169. package/{esm2020 → esm2022}/lib/components/link/link.module.mjs +19 -19
  170. package/esm2022/lib/components/loader/loader.component.mjs +24 -0
  171. package/{esm2020 → esm2022}/lib/components/loader/loader.enum.mjs +19 -19
  172. package/{esm2020 → esm2022}/lib/components/loader/loader.module.mjs +19 -19
  173. package/esm2022/lib/components/modal/modal.component.mjs +137 -0
  174. package/{esm2020 → esm2022}/lib/components/modal/modal.emun.mjs +20 -20
  175. package/{esm2020 → esm2022}/lib/components/modal/modal.module.mjs +20 -20
  176. package/esm2022/lib/components/pages-nav/pages-nav.component.mjs +31 -0
  177. package/{esm2020 → esm2022}/lib/components/pages-nav/pages-nav.enum.mjs +5 -5
  178. package/{esm2020 → esm2022}/lib/components/pages-nav/pages-nav.module.mjs +24 -24
  179. package/esm2022/lib/components/paginator/paginator.component.mjs +140 -0
  180. package/{esm2020 → esm2022}/lib/components/paginator/paginator.enum.mjs +5 -5
  181. package/esm2022/lib/components/paginator/paginator.module.mjs +31 -0
  182. package/esm2022/lib/components/progress/progress.component.mjs +24 -0
  183. package/{esm2020 → esm2022}/lib/components/progress/progress.enum.mjs +7 -7
  184. package/{esm2020 → esm2022}/lib/components/progress/progress.module.mjs +19 -19
  185. package/esm2022/lib/components/save-state/components/save-state-checkbox/save-state-checkbox.component.mjs +16 -0
  186. package/esm2022/lib/components/save-state/components/save-state-checkbox-group/save-state-checkbox-group.component.mjs +16 -0
  187. package/esm2022/lib/components/save-state/components/save-state-editor/save-state-editor.component.mjs +16 -0
  188. package/esm2022/lib/components/save-state/components/save-state-input/save-state-input.component.mjs +16 -0
  189. package/esm2022/lib/components/save-state/components/save-state-switch/save-state-switch.component.mjs +16 -0
  190. package/esm2022/lib/components/save-state/save-state.component.mjs +40 -0
  191. package/{esm2020 → esm2022}/lib/components/save-state/save-state.enum.mjs +2 -2
  192. package/{esm2020 → esm2022}/lib/components/save-state/save-state.module.mjs +37 -37
  193. package/esm2022/lib/components/stepper/stepper.component.mjs +52 -0
  194. package/{esm2020 → esm2022}/lib/components/stepper/stepper.enum.mjs +5 -5
  195. package/{esm2020 → esm2022}/lib/components/stepper/stepper.module.mjs +20 -20
  196. package/esm2022/lib/components/table/components/column/column.component.mjs +40 -0
  197. package/{esm2020 → esm2022}/lib/components/table/default/default-pager-settings.mjs +6 -6
  198. package/{esm2020 → esm2022}/lib/components/table/models/data-state-change.event.mjs +1 -1
  199. package/{esm2020 → esm2022}/lib/components/table/models/index.mjs +3 -3
  200. package/{esm2020 → esm2022}/lib/components/table/models/pager-settings.mjs +1 -1
  201. package/esm2022/lib/components/table/table.component.mjs +281 -0
  202. package/{esm2020 → esm2022}/lib/components/table/table.enum.mjs +7 -7
  203. package/{esm2020 → esm2022}/lib/components/table/table.module.mjs +50 -50
  204. package/esm2022/lib/components/tabs/tab/tab.component.mjs +33 -0
  205. package/esm2022/lib/components/tabs/tabs-group/tabs-group.component.mjs +27 -0
  206. package/{esm2020 → esm2022}/lib/components/tabs/tabs.enum.mjs +13 -13
  207. package/{esm2020 → esm2022}/lib/components/tabs/tabs.module.mjs +20 -20
  208. package/esm2022/lib/components/tooltip/services/tooltip.service.mjs +65 -0
  209. package/esm2022/lib/components/tooltip/tooltip-trigger/tooltip-trigger.component.mjs +36 -0
  210. package/{esm2020 → esm2022}/lib/components/tooltip/tooltip-trigger/tooltip-trigger.enum.mjs +10 -10
  211. package/esm2022/lib/components/tooltip/tooltip.component.mjs +59 -0
  212. package/{esm2020 → esm2022}/lib/components/tooltip/tooltip.enum.mjs +5 -5
  213. package/{esm2020 → esm2022}/lib/components/tooltip/tooltip.module.mjs +21 -21
  214. package/{esm2020 → esm2022}/lib/components/truncate-text/directives/truncate-text.directive.mjs +149 -139
  215. package/esm2022/lib/components/truncate-text/truncate-text.component.mjs +30 -0
  216. package/{esm2020 → esm2022}/lib/components/truncate-text/truncate-text.enum.mjs +1 -1
  217. package/{esm2020 → esm2022}/lib/components/truncate-text/truncate-text.module.mjs +21 -21
  218. package/esm2022/lib/components/warning-message/warning-message.component.mjs +29 -0
  219. package/{esm2020 → esm2022}/lib/components/warning-message/warning-message.module.mjs +19 -19
  220. package/esm2022/lib/components/wrappers/content-wrapper/content-wrapper.component.mjs +25 -0
  221. package/{esm2020 → esm2022}/lib/components/wrappers/content-wrapper/content-wrapper.enum.mjs +5 -5
  222. package/{esm2020 → esm2022}/lib/components/wrappers/content-wrapper/content-wrapper.module.mjs +19 -19
  223. package/esm2022/lib/components/wrappers/controls-wrapper/components/controls-item/controls-item.component.mjs +15 -0
  224. package/esm2022/lib/components/wrappers/controls-wrapper/controls-wrapper.component.mjs +23 -0
  225. package/{esm2020 → esm2022}/lib/components/wrappers/controls-wrapper/controls-wrapper.enum.mjs +6 -6
  226. package/{esm2020 → esm2022}/lib/components/wrappers/controls-wrapper/controls-wrapper.module.mjs +20 -20
  227. package/esm2022/lib/components/wrappers/widget-wrapper/widget-wrapper.component.mjs +99 -0
  228. package/{esm2020 → esm2022}/lib/components/wrappers/widget-wrapper/widget-wrapper.enum.mjs +16 -16
  229. package/{esm2020 → esm2022}/lib/components/wrappers/widget-wrapper/widget-wrapper.module.mjs +24 -24
  230. package/esm2022/lib/directives/autosize/autosize.directive.mjs +57 -0
  231. package/{esm2020 → esm2022}/lib/directives/autosize/autosize.module.mjs +24 -24
  232. package/esm2022/lib/directives/truncate/truncate.directive.mjs +34 -0
  233. package/{esm2020 → esm2022}/lib/directives/truncate/truncate.module.mjs +18 -18
  234. package/{esm2020 → esm2022}/lib/enums/typed.input.state.mjs +8 -8
  235. package/esm2022/lib/helpers/extension/input-file.extension.mjs +39 -0
  236. package/esm2022/lib/helpers/formatting-date.mjs +51 -0
  237. package/{esm2020 → esm2022}/lib/helpers/formatting-dates-from-array.mjs +18 -18
  238. package/{esm2020 → esm2022}/lib/helpers/formatting-iso-to-string.mjs +12 -12
  239. package/{esm2020 → esm2022}/lib/helpers/index.mjs +7 -7
  240. package/{esm2020 → esm2022}/lib/helpers/number-format.mjs +8 -8
  241. package/esm2022/lib/helpers/string-hash-code.mjs +17 -0
  242. package/{esm2020 → esm2022}/lib/helpers/word-form.mjs +10 -10
  243. package/{esm2020 → esm2022}/lib/models/index.mjs +2 -2
  244. package/esm2022/lib/models/input-file/input-file.model.mjs +2 -0
  245. package/{esm2020 → esm2022}/lib/models/typed-input-model.mjs +1 -1
  246. package/{esm2020 → esm2022}/lib/pipes/currency/currency.module.mjs +20 -20
  247. package/esm2022/lib/pipes/currency/currency.pipe.mjs +22 -0
  248. package/{esm2020 → esm2022}/lib/pipes/date/date-format.module.mjs +19 -19
  249. package/esm2022/lib/pipes/date/date-format.pipe.mjs +21 -0
  250. package/esm2022/lib/pipes/date/date-time-format.pipe.mjs +21 -0
  251. package/{esm2020 → esm2022}/lib/pipes/date/enums/timezone.mjs +9 -9
  252. package/{esm2020 → esm2022}/lib/pipes/date/helpers/change-timezone.mjs +22 -22
  253. package/{esm2020 → esm2022}/lib/pipes/phone/phone-format.module.mjs +18 -18
  254. package/esm2022/lib/pipes/phone/phone-format.pipe.mjs +23 -0
  255. package/{esm2020 → esm2022}/lib/pipes/safe/safe.module.mjs +20 -20
  256. package/esm2022/lib/pipes/safe/safe.pipe.mjs +21 -0
  257. package/{esm2020 → esm2022}/lib/pipes/truncate/truncate.module.mjs +20 -20
  258. package/esm2022/lib/pipes/truncate/truncate.pipe.mjs +23 -0
  259. package/esm2022/lib/services/file-upload/file-upload.service.mjs +28 -0
  260. package/esm2022/lib/services/index.mjs +11 -0
  261. package/esm2022/lib/services/modal-service/components/alert-modal/alert-modal.component.mjs +44 -0
  262. package/esm2022/lib/services/modal-service/components/confirm-modal/confirm-modal.component.mjs +48 -0
  263. package/esm2022/lib/services/modal-service/helpers/index.mjs +5 -0
  264. package/esm2022/lib/services/modal-service/helpers/modal-default-config.mjs +14 -0
  265. package/esm2022/lib/services/modal-service/helpers/modal-ref.mjs +29 -0
  266. package/esm2022/lib/services/modal-service/helpers/modal-tokens.mjs +4 -0
  267. package/esm2022/lib/services/modal-service/helpers/modal.component.mjs +4 -0
  268. package/esm2022/lib/services/modal-service/modal-service.module.mjs +25 -0
  269. package/esm2022/lib/services/modal-service/modal-service.service.mjs +84 -0
  270. package/esm2022/lib/services/modal-service/models/modal-config.model.mjs +2 -0
  271. package/esm2022/lib/services/mrx-autosave/mrx-autosave.service.mjs +43 -0
  272. package/esm2022/lib/services/mrx-form-validator/mrx-form-validator.mjs +283 -0
  273. package/{esm2020 → esm2022}/lib/services/save-store/constants/constants.mjs +1 -1
  274. package/{esm2020 → esm2022}/lib/services/save-store/models/save-store.model.mjs +1 -1
  275. package/{esm2020 → esm2022}/lib/services/save-store/save-store.module.mjs +29 -29
  276. package/{esm2020 → esm2022}/lib/services/save-store/store/actions.mjs +22 -22
  277. package/esm2022/lib/services/save-store/store/effect.mjs +61 -0
  278. package/esm2022/lib/services/save-store/store/reducer.mjs +96 -0
  279. package/{esm2020 → esm2022}/lib/services/save-store/store/selectors.mjs +4 -4
  280. package/{esm2020 → esm2022}/lib/services/save-store/store/state.mjs +3 -3
  281. package/{esm2020 → esm2022}/myrta-ui.mjs +4 -4
  282. package/esm2022/public-api.mjs +176 -0
  283. package/fesm2022/myrta-ui.mjs +15470 -0
  284. package/fesm2022/myrta-ui.mjs.map +1 -0
  285. package/index.d.ts +5 -5
  286. package/lib/components/alert/alert.component.d.ts +17 -17
  287. package/lib/components/alert/alert.enum.d.ts +13 -13
  288. package/lib/components/alert/alert.module.d.ts +8 -8
  289. package/lib/components/badges/badge.enum.d.ts +38 -38
  290. package/lib/components/badges/badges.module.d.ts +9 -9
  291. package/lib/components/badges/components/badge/badge.component.d.ts +21 -21
  292. package/lib/components/badges/components/badge-group/badge-group.component.d.ts +5 -5
  293. package/lib/components/breadcrumbs/breadcrumbs.component.d.ts +11 -11
  294. package/lib/components/breadcrumbs/breadcrumbs.enum.d.ts +11 -11
  295. package/lib/components/breadcrumbs/breadcrumbs.module.d.ts +8 -8
  296. package/lib/components/button/button.component.d.ts +31 -31
  297. package/lib/components/button/button.enum.d.ts +27 -29
  298. package/lib/components/button/button.module.d.ts +10 -10
  299. package/lib/components/cdk-tooltip/cdk-tooltip/tooltip-container.component.d.ts +13 -13
  300. package/lib/components/cdk-tooltip/cdk-tooltip.directive.d.ts +24 -24
  301. package/lib/components/cdk-tooltip/cdk-tooltip.module.d.ts +10 -10
  302. package/lib/components/cdk-tooltip/constants/index.d.ts +7 -7
  303. package/lib/components/cdk-tooltip/models/tooltip-data.d.ts +6 -6
  304. package/lib/components/chars-left/chars-left.component.d.ts +9 -10
  305. package/lib/components/chars-left/chars-left.module.d.ts +8 -8
  306. package/lib/components/dropdown/directives/hide-after-click.directive.d.ts +9 -9
  307. package/lib/components/dropdown/dropdown.component.d.ts +26 -26
  308. package/lib/components/dropdown/dropdown.module.d.ts +10 -10
  309. package/lib/components/error-message/error-message.component.d.ts +10 -10
  310. package/lib/components/error-message/error-message.module.d.ts +8 -8
  311. package/lib/components/form/checkbox/checkbox.component.d.ts +48 -46
  312. package/lib/components/form/checkbox/checkbox.enum.d.ts +14 -10
  313. package/lib/components/form/checkbox/checkbox.module.d.ts +11 -11
  314. package/lib/components/form/checkbox-group/checkbox-group.component.d.ts +54 -56
  315. package/lib/components/form/checkbox-group/checkbox-group.module.d.ts +16 -16
  316. package/lib/components/form/checkbox-group/components/checkbox-group-header/checkbox-group-header.component.d.ts +19 -19
  317. package/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.d.ts +26 -29
  318. package/lib/components/form/checkbox-group/helpers/change-group-value.d.ts +3 -3
  319. package/lib/components/form/checkbox-group/helpers/change-item-value.d.ts +3 -3
  320. package/lib/components/form/checkbox-group/helpers/filter-search-group.d.ts +2 -2
  321. package/lib/components/form/checkbox-group/helpers/get-checked-items.d.ts +2 -2
  322. package/lib/components/form/checkbox-group/helpers/get-item-by-id.d.ts +2 -2
  323. package/lib/components/form/checkbox-group/helpers/get-sorted-list.d.ts +2 -2
  324. package/lib/components/form/checkbox-group/models/checkbox-group.model.d.ts +15 -15
  325. package/lib/components/form/editor/config/default-inline-style.d.ts +11 -11
  326. package/lib/components/form/editor/config/index.d.ts +1 -1
  327. package/lib/components/form/editor/config/popups-toolbar.d.ts +15 -15
  328. package/lib/components/form/editor/config/toolbar.d.ts +2 -2
  329. package/lib/components/form/editor/editor.component.d.ts +65 -57
  330. package/lib/components/form/editor/editor.enum.d.ts +5 -5
  331. package/lib/components/form/editor/editor.module.d.ts +14 -14
  332. package/lib/components/form/editor/models/toolbar.model.d.ts +6 -6
  333. package/lib/components/form/editor/modules/change-icon-module.d.ts +1 -1
  334. package/lib/components/form/input-date-time/constants/value-models.d.ts +3 -3
  335. package/lib/components/form/input-date-time/enum/timezone.d.ts +6 -6
  336. package/lib/components/form/input-date-time/helpers/clean-date.d.ts +1 -1
  337. package/lib/components/form/input-date-time/helpers/cursor-position.d.ts +1 -1
  338. package/lib/components/form/input-date-time/helpers/formatting-from-models.d.ts +3 -3
  339. package/lib/components/form/input-date-time/helpers/formatting-moscow-timezone.d.ts +2 -2
  340. package/lib/components/form/input-date-time/helpers/validate-value-models.d.ts +19 -19
  341. package/lib/components/form/input-date-time/helpers/value-parser.d.ts +4 -4
  342. package/lib/components/form/input-date-time/input-date-time.component.d.ts +72 -76
  343. package/lib/components/form/input-date-time/input-date-time.enum.d.ts +21 -21
  344. package/lib/components/form/input-date-time/input-date-time.module.d.ts +13 -13
  345. package/lib/components/form/input-datepicker/constants/value-models.d.ts +3 -3
  346. package/lib/components/form/input-datepicker/helpers/clean-date.d.ts +1 -1
  347. package/lib/components/form/input-datepicker/helpers/cursor-position.d.ts +1 -1
  348. package/lib/components/form/input-datepicker/helpers/get-date-dayjs-object.d.ts +3 -3
  349. package/lib/components/form/input-datepicker/helpers/get-date-object.d.ts +2 -2
  350. package/lib/components/form/input-datepicker/helpers/validate-value-models.d.ts +20 -20
  351. package/lib/components/form/input-datepicker/helpers/value-parser.d.ts +3 -3
  352. package/lib/components/form/input-datepicker/input-datepicker.component.d.ts +69 -70
  353. package/lib/components/form/input-datepicker/input-datepicker.enum.d.ts +12 -12
  354. package/lib/components/form/input-datepicker/input-datepicker.module.d.ts +13 -13
  355. package/lib/components/form/input-file/enums/error-messages.enum.d.ts +6 -6
  356. package/lib/components/form/input-file/input-file.component.d.ts +74 -72
  357. package/lib/components/form/input-file/input-file.enum.d.ts +7 -7
  358. package/lib/components/form/input-file/input-file.module.d.ts +13 -13
  359. package/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.d.ts +43 -39
  360. package/lib/components/form/input-file-image/input-file-image.component.d.ts +57 -61
  361. package/lib/components/form/input-file-image/input-file-image.enum.d.ts +8 -8
  362. package/lib/components/form/input-file-image/input-file-image.module.d.ts +15 -16
  363. package/lib/components/form/input-number/input-number.component.d.ts +64 -69
  364. package/lib/components/form/input-number/input-number.enum.d.ts +12 -12
  365. package/lib/components/form/input-number/input-number.module.d.ts +13 -13
  366. package/lib/components/form/input-opt/components/input-opt/input-opt.component.d.ts +77 -77
  367. package/lib/components/form/input-opt/components/input-opt/input-opt.enum.d.ts +7 -7
  368. package/lib/components/form/input-opt/directives/opt-pattern.directive.d.ts +8 -8
  369. package/lib/components/form/input-opt/input-opt.module.d.ts +11 -11
  370. package/lib/components/form/input-opt/models/input-opt.model.d.ts +26 -26
  371. package/lib/components/form/input-opt/services/input-opt.service.d.ts +11 -11
  372. package/lib/components/form/input-password/input-password.component.d.ts +38 -43
  373. package/lib/components/form/input-password/input-password.enum.d.ts +7 -11
  374. package/lib/components/form/input-password/input-password.module.d.ts +11 -13
  375. package/lib/components/form/input-phone/data/country-code.d.ts +6 -6
  376. package/lib/components/form/input-phone/directives/native-element-injector.directive.d.ts +11 -11
  377. package/lib/components/form/input-phone/enums/country-iso.enum.d.ts +245 -245
  378. package/lib/components/form/input-phone/enums/input-phone.enum.d.ts +11 -11
  379. package/lib/components/form/input-phone/enums/mask.enum.d.ts +8 -8
  380. package/lib/components/form/input-phone/enums/phone-number-format.enum.d.ts +4 -4
  381. package/lib/components/form/input-phone/enums/search-country-field.enum.d.ts +6 -6
  382. package/lib/components/form/input-phone/input-phone.component.d.ts +132 -132
  383. package/lib/components/form/input-phone/input-phone.module.d.ts +14 -14
  384. package/lib/components/form/input-phone/input-phone.validator.d.ts +5 -5
  385. package/lib/components/form/input-phone/interfaces/change-data.d.ts +9 -9
  386. package/lib/components/form/input-phone/models/country.model.d.ts +13 -13
  387. package/lib/components/form/input-search/input-search.component.d.ts +48 -52
  388. package/lib/components/form/input-search/input-search.enum.d.ts +6 -11
  389. package/lib/components/form/input-search/input-search.module.d.ts +12 -13
  390. package/lib/components/form/input-select/input-select.component.d.ts +94 -86
  391. package/lib/components/form/input-select/input-select.enum.d.ts +10 -10
  392. package/lib/components/form/input-select/input-select.module.d.ts +14 -14
  393. package/lib/components/form/input-tel/assets/base64.d.ts +3 -3
  394. package/lib/components/form/input-tel/data/all-countries.d.ts +1 -1
  395. package/lib/components/form/input-tel/data/country-iso.enum.d.ts +245 -245
  396. package/lib/components/form/input-tel/data/phone-number-format.enum.d.ts +5 -5
  397. package/lib/components/form/input-tel/data/search-country-field.enum.d.ts +6 -6
  398. package/lib/components/form/input-tel/directives/input-tel.directive.d.ts +21 -21
  399. package/lib/components/form/input-tel/enums/input-phone.enum.d.ts +11 -11
  400. package/lib/components/form/input-tel/input-tel.component.d.ts +89 -89
  401. package/lib/components/form/input-tel/input-tel.module.d.ts +13 -14
  402. package/lib/components/form/input-tel/models/country.model.d.ts +18 -18
  403. package/lib/components/form/input-text/input-text.component.d.ts +54 -57
  404. package/lib/components/form/input-text/input-text.enum.d.ts +19 -19
  405. package/lib/components/form/input-text/input-text.module.d.ts +14 -14
  406. package/lib/components/form/input-textarea/input-textarea.component.d.ts +54 -49
  407. package/lib/components/form/input-textarea/input-textarea.enum.d.ts +11 -11
  408. package/lib/components/form/input-textarea/input-textarea.module.d.ts +14 -14
  409. package/lib/components/form/input-timepicker/constants/value-models.d.ts +2 -2
  410. package/lib/components/form/input-timepicker/helpers/clean-date.d.ts +1 -1
  411. package/lib/components/form/input-timepicker/helpers/cursor-position.d.ts +1 -1
  412. package/lib/components/form/input-timepicker/helpers/get-date-dayjs-object.d.ts +3 -3
  413. package/lib/components/form/input-timepicker/helpers/get-date-object.d.ts +2 -2
  414. package/lib/components/form/input-timepicker/helpers/validate-value-models.d.ts +10 -10
  415. package/lib/components/form/input-timepicker/helpers/value-parser.d.ts +2 -2
  416. package/lib/components/form/input-timepicker/input-timepicker.component.d.ts +60 -60
  417. package/lib/components/form/input-timepicker/input-timepicker.enum.d.ts +11 -11
  418. package/lib/components/form/input-timepicker/input-timepicker.module.d.ts +13 -13
  419. package/lib/components/form/radio/radio.component.d.ts +29 -29
  420. package/lib/components/form/radio/radio.enum.d.ts +4 -4
  421. package/lib/components/form/radio/radio.module.d.ts +9 -9
  422. package/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.d.ts +18 -20
  423. package/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.d.ts +26 -28
  424. package/lib/components/form/radio-group/helpers/filter-search-group.d.ts +2 -2
  425. package/lib/components/form/radio-group/helpers/get-item-by-id.d.ts +2 -2
  426. package/lib/components/form/radio-group/helpers/move-selected-to-first.d.ts +2 -2
  427. package/lib/components/form/radio-group/models/radio-group.model.d.ts +8 -12
  428. package/lib/components/form/radio-group/radio-group.component.d.ts +57 -60
  429. package/lib/components/form/radio-group/radio-group.module.d.ts +15 -16
  430. package/lib/components/form/rating/rating.component.d.ts +51 -51
  431. package/lib/components/form/rating/rating.enum.d.ts +27 -27
  432. package/lib/components/form/rating/rating.module.d.ts +9 -9
  433. package/lib/components/form/switch/switch.component.d.ts +32 -32
  434. package/lib/components/form/switch/switch.enum.d.ts +15 -15
  435. package/lib/components/form/switch/switch.module.d.ts +10 -10
  436. package/lib/components/gallery/components/gallery-confirm-modal/gallery-confirm-modal.component.d.ts +20 -17
  437. package/lib/components/gallery/components/gallery-item/gallery-item.component.d.ts +38 -38
  438. package/lib/components/gallery/constants/custom-buttons-default.d.ts +3 -3
  439. package/lib/components/gallery/constants/thumbs-config-default.d.ts +2 -2
  440. package/lib/components/gallery/gallery.component.d.ts +38 -38
  441. package/lib/components/gallery/gallery.module.d.ts +16 -16
  442. package/lib/components/gallery/models/gallery-item.model.d.ts +24 -24
  443. package/lib/components/gallery/services/gallery.service.d.ts +14 -14
  444. package/lib/components/hint-error-message/hint-error-message.component.d.ts +21 -21
  445. package/lib/components/hint-error-message/hint-error-message.module.d.ts +8 -8
  446. package/lib/components/icon-button/icon-button.component.d.ts +19 -19
  447. package/lib/components/icon-button/icon-button.enum.d.ts +15 -15
  448. package/lib/components/icon-button/icon-button.module.d.ts +9 -9
  449. package/lib/components/label/label.component.d.ts +44 -44
  450. package/lib/components/label/label.module.d.ts +14 -14
  451. package/lib/components/link/link.component.d.ts +18 -18
  452. package/lib/components/link/link.enum.d.ts +19 -19
  453. package/lib/components/link/link.module.d.ts +8 -8
  454. package/lib/components/loader/loader.component.d.ts +10 -10
  455. package/lib/components/loader/loader.enum.d.ts +19 -19
  456. package/lib/components/loader/loader.module.d.ts +8 -8
  457. package/lib/components/modal/modal.component.d.ts +36 -37
  458. package/lib/components/modal/modal.emun.d.ts +20 -20
  459. package/lib/components/modal/modal.module.d.ts +9 -9
  460. package/lib/components/pages-nav/pages-nav.component.d.ts +12 -12
  461. package/lib/components/pages-nav/pages-nav.enum.d.ts +5 -5
  462. package/lib/components/pages-nav/pages-nav.module.d.ts +8 -8
  463. package/lib/components/paginator/paginator.component.d.ts +29 -31
  464. package/lib/components/paginator/paginator.enum.d.ts +10 -10
  465. package/lib/components/paginator/paginator.module.d.ts +10 -10
  466. package/lib/components/progress/progress.component.d.ts +10 -10
  467. package/lib/components/progress/progress.enum.d.ts +7 -7
  468. package/lib/components/progress/progress.module.d.ts +8 -8
  469. package/lib/components/save-state/components/save-state-checkbox/save-state-checkbox.component.d.ts +8 -8
  470. package/lib/components/save-state/components/save-state-checkbox-group/save-state-checkbox-group.component.d.ts +8 -8
  471. package/lib/components/save-state/components/save-state-editor/save-state-editor.component.d.ts +8 -8
  472. package/lib/components/save-state/components/save-state-input/save-state-input.component.d.ts +8 -8
  473. package/lib/components/save-state/components/save-state-switch/save-state-switch.component.d.ts +8 -8
  474. package/lib/components/save-state/save-state.component.d.ts +13 -13
  475. package/lib/components/save-state/save-state.enum.d.ts +1 -1
  476. package/lib/components/save-state/save-state.module.d.ts +13 -13
  477. package/lib/components/stepper/stepper.component.d.ts +17 -17
  478. package/lib/components/stepper/stepper.enum.d.ts +5 -5
  479. package/lib/components/stepper/stepper.module.d.ts +9 -9
  480. package/lib/components/table/components/column/column.component.d.ts +14 -14
  481. package/lib/components/table/default/default-pager-settings.d.ts +2 -2
  482. package/lib/components/table/models/data-state-change.event.d.ts +15 -15
  483. package/lib/components/table/models/index.d.ts +3 -3
  484. package/lib/components/table/models/pager-settings.d.ts +22 -22
  485. package/lib/components/table/table.component.d.ts +55 -55
  486. package/lib/components/table/table.enum.d.ts +32 -32
  487. package/lib/components/table/table.module.d.ts +14 -14
  488. package/lib/components/tabs/tab/tab.component.d.ts +13 -13
  489. package/lib/components/tabs/tabs-group/tabs-group.component.d.ts +11 -11
  490. package/lib/components/tabs/tabs.enum.d.ts +11 -11
  491. package/lib/components/tabs/tabs.module.d.ts +9 -9
  492. package/lib/components/tooltip/services/tooltip.service.d.ts +18 -18
  493. package/lib/components/tooltip/tooltip-trigger/tooltip-trigger.component.d.ts +15 -15
  494. package/lib/components/tooltip/tooltip-trigger/tooltip-trigger.enum.d.ts +10 -10
  495. package/lib/components/tooltip/tooltip.component.d.ts +18 -18
  496. package/lib/components/tooltip/tooltip.enum.d.ts +4 -4
  497. package/lib/components/tooltip/tooltip.module.d.ts +10 -10
  498. package/lib/components/truncate-text/directives/truncate-text.directive.d.ts +37 -37
  499. package/lib/components/truncate-text/truncate-text.component.d.ts +12 -12
  500. package/lib/components/truncate-text/truncate-text.enum.d.ts +2 -2
  501. package/lib/components/truncate-text/truncate-text.module.d.ts +10 -10
  502. package/lib/components/warning-message/warning-message.component.d.ts +9 -9
  503. package/lib/components/warning-message/warning-message.module.d.ts +8 -8
  504. package/lib/components/wrappers/content-wrapper/content-wrapper.component.d.ts +10 -10
  505. package/lib/components/wrappers/content-wrapper/content-wrapper.enum.d.ts +5 -5
  506. package/lib/components/wrappers/content-wrapper/content-wrapper.module.d.ts +8 -8
  507. package/lib/components/wrappers/controls-wrapper/components/controls-item/controls-item.component.d.ts +6 -6
  508. package/lib/components/wrappers/controls-wrapper/controls-wrapper.component.d.ts +10 -10
  509. package/lib/components/wrappers/controls-wrapper/controls-wrapper.enum.d.ts +6 -6
  510. package/lib/components/wrappers/controls-wrapper/controls-wrapper.module.d.ts +9 -9
  511. package/lib/components/wrappers/widget-wrapper/widget-wrapper.component.d.ts +26 -26
  512. package/lib/components/wrappers/widget-wrapper/widget-wrapper.enum.d.ts +15 -15
  513. package/lib/components/wrappers/widget-wrapper/widget-wrapper.module.d.ts +8 -8
  514. package/lib/directives/autosize/autosize.directive.d.ts +16 -16
  515. package/lib/directives/autosize/autosize.module.d.ts +8 -8
  516. package/lib/directives/truncate/truncate.directive.d.ts +12 -12
  517. package/lib/directives/truncate/truncate.module.d.ts +8 -8
  518. package/lib/enums/typed.input.state.d.ts +6 -6
  519. package/lib/helpers/extension/input-file.extension.d.ts +4 -4
  520. package/lib/helpers/formatting-date.d.ts +9 -9
  521. package/lib/helpers/formatting-dates-from-array.d.ts +2 -2
  522. package/lib/helpers/formatting-iso-to-string.d.ts +2 -2
  523. package/lib/helpers/index.d.ts +7 -7
  524. package/lib/helpers/number-format.d.ts +6 -6
  525. package/lib/helpers/string-hash-code.d.ts +2 -2
  526. package/lib/helpers/word-form.d.ts +7 -7
  527. package/lib/models/index.d.ts +2 -2
  528. package/lib/models/input-file/input-file.model.d.ts +23 -22
  529. package/lib/models/typed-input-model.d.ts +16 -16
  530. package/lib/pipes/currency/currency.module.d.ts +8 -8
  531. package/lib/pipes/currency/currency.pipe.d.ts +7 -7
  532. package/lib/pipes/date/date-format.module.d.ts +9 -9
  533. package/lib/pipes/date/date-format.pipe.d.ts +9 -9
  534. package/lib/pipes/date/date-time-format.pipe.d.ts +9 -9
  535. package/lib/pipes/date/enums/timezone.d.ts +8 -8
  536. package/lib/pipes/date/helpers/change-timezone.d.ts +2 -2
  537. package/lib/pipes/phone/phone-format.module.d.ts +8 -8
  538. package/lib/pipes/phone/phone-format.pipe.d.ts +8 -8
  539. package/lib/pipes/safe/safe.module.d.ts +8 -8
  540. package/lib/pipes/safe/safe.pipe.d.ts +10 -10
  541. package/lib/pipes/truncate/truncate.module.d.ts +8 -8
  542. package/lib/pipes/truncate/truncate.pipe.d.ts +7 -7
  543. package/lib/services/file-upload/file-upload.service.d.ts +12 -12
  544. package/lib/services/index.d.ts +10 -7
  545. package/lib/services/modal-service/components/alert-modal/alert-modal.component.d.ts +19 -0
  546. package/lib/services/modal-service/components/confirm-modal/confirm-modal.component.d.ts +20 -0
  547. package/lib/services/modal-service/helpers/index.d.ts +4 -0
  548. package/lib/services/modal-service/helpers/modal-default-config.d.ts +3 -0
  549. package/lib/services/modal-service/helpers/modal-ref.d.ts +11 -0
  550. package/lib/services/modal-service/helpers/modal-tokens.d.ts +3 -0
  551. package/lib/services/modal-service/helpers/modal.component.d.ts +3 -0
  552. package/lib/services/modal-service/modal-service.module.d.ts +9 -0
  553. package/lib/services/modal-service/modal-service.service.d.ts +20 -0
  554. package/lib/services/modal-service/models/modal-config.model.d.ts +14 -0
  555. package/lib/services/mrx-autosave/mrx-autosave.service.d.ts +19 -19
  556. package/lib/services/mrx-form-validator/mrx-form-validator.d.ts +51 -23
  557. package/lib/services/save-store/constants/constants.d.ts +1 -1
  558. package/lib/services/save-store/models/save-store.model.d.ts +4 -4
  559. package/lib/services/save-store/save-store.module.d.ts +9 -9
  560. package/lib/services/save-store/store/actions.d.ts +21 -21
  561. package/lib/services/save-store/store/effect.d.ts +10 -16
  562. package/lib/services/save-store/store/reducer.d.ts +3 -3
  563. package/lib/services/save-store/store/selectors.d.ts +3 -3
  564. package/lib/services/save-store/store/state.d.ts +11 -11
  565. package/package.json +27 -37
  566. package/public-api.d.ts +162 -176
  567. package/esm2020/lib/components/alert/alert.component.mjs +0 -45
  568. package/esm2020/lib/components/badges/components/badge/badge.component.mjs +0 -61
  569. package/esm2020/lib/components/breadcrumbs/breadcrumbs.component.mjs +0 -29
  570. package/esm2020/lib/components/button/button.component.mjs +0 -102
  571. package/esm2020/lib/components/button/button.enum.mjs +0 -29
  572. package/esm2020/lib/components/cdk-tooltip/cdk-tooltip/tooltip-container.component.mjs +0 -28
  573. package/esm2020/lib/components/cdk-tooltip/cdk-tooltip.directive.mjs +0 -95
  574. package/esm2020/lib/components/chars-left/chars-left.component.mjs +0 -29
  575. package/esm2020/lib/components/context-menu/components/context-menu/context-menu.component.mjs +0 -99
  576. package/esm2020/lib/components/context-menu/components/context-menu-content/context-menu-content.component.mjs +0 -324
  577. package/esm2020/lib/components/context-menu/context-menu.module.mjs +0 -51
  578. package/esm2020/lib/components/context-menu/context-menu.options.mjs +0 -2
  579. package/esm2020/lib/components/context-menu/context-menu.tokens.mjs +0 -3
  580. package/esm2020/lib/components/context-menu/directives/context-menu/context-menu.directive.mjs +0 -36
  581. package/esm2020/lib/components/context-menu/directives/context-menu-item/context-menu-item.directive.mjs +0 -61
  582. package/esm2020/lib/components/context-menu/models/context-menu.enum.mjs +0 -2
  583. package/esm2020/lib/components/context-menu/services/context-menu/context-menu-fixed.service.mjs +0 -103
  584. package/esm2020/lib/components/context-menu/services/context-menu/context-menu.service.mjs +0 -223
  585. package/esm2020/lib/components/dropdown/directives/hide-after-click.directive.mjs +0 -23
  586. package/esm2020/lib/components/dropdown/dropdown.component.mjs +0 -104
  587. package/esm2020/lib/components/error-message/error-message.component.mjs +0 -34
  588. package/esm2020/lib/components/form/checkbox/checkbox.component.mjs +0 -143
  589. package/esm2020/lib/components/form/checkbox/checkbox.enum.mjs +0 -2
  590. package/esm2020/lib/components/form/checkbox-group/checkbox-group.component.mjs +0 -184
  591. package/esm2020/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.mjs +0 -112
  592. package/esm2020/lib/components/form/checkbox-group/helpers/change-group-value.mjs +0 -20
  593. package/esm2020/lib/components/form/checkbox-group/helpers/change-item-value.mjs +0 -15
  594. package/esm2020/lib/components/form/checkbox-group/helpers/filter-search-group.mjs +0 -27
  595. package/esm2020/lib/components/form/checkbox-group/helpers/get-checked-items.mjs +0 -20
  596. package/esm2020/lib/components/form/checkbox-group/helpers/get-sorted-list.mjs +0 -50
  597. package/esm2020/lib/components/form/document-editor/components/document-editor-preview-modal/document-editor-preview-modal.component.mjs +0 -33
  598. package/esm2020/lib/components/form/document-editor/document-editor.component.mjs +0 -105
  599. package/esm2020/lib/components/form/document-editor/document-editor.module.mjs +0 -42
  600. package/esm2020/lib/components/form/document-editor/helpers/transform-sysname.mjs +0 -41
  601. package/esm2020/lib/components/form/document-editor/models/document-editor-short-codes.enum.mjs +0 -2
  602. package/esm2020/lib/components/form/editor/editor.component.mjs +0 -264
  603. package/esm2020/lib/components/form/editor/editor.module.mjs +0 -45
  604. package/esm2020/lib/components/form/editor/modules/change-icon-module.mjs +0 -92
  605. package/esm2020/lib/components/form/input-date-time/helpers/cursor-position.mjs +0 -23
  606. package/esm2020/lib/components/form/input-date-time/helpers/formatting-from-models.mjs +0 -10
  607. package/esm2020/lib/components/form/input-date-time/input-date-time.component.mjs +0 -413
  608. package/esm2020/lib/components/form/input-date-time/input-date-time.module.mjs +0 -46
  609. package/esm2020/lib/components/form/input-datepicker/helpers/cursor-position.mjs +0 -23
  610. package/esm2020/lib/components/form/input-datepicker/helpers/get-date-dayjs-object.mjs +0 -10
  611. package/esm2020/lib/components/form/input-datepicker/helpers/get-date-object.mjs +0 -10
  612. package/esm2020/lib/components/form/input-datepicker/input-datepicker.component.mjs +0 -359
  613. package/esm2020/lib/components/form/input-datepicker/input-datepicker.module.mjs +0 -46
  614. package/esm2020/lib/components/form/input-file/input-file.component.mjs +0 -363
  615. package/esm2020/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.mjs +0 -66
  616. package/esm2020/lib/components/form/input-file-image/input-file-image.component.mjs +0 -350
  617. package/esm2020/lib/components/form/input-file-image/input-file-image.module.mjs +0 -58
  618. package/esm2020/lib/components/form/input-number/input-number.component.mjs +0 -265
  619. package/esm2020/lib/components/form/input-number/input-number.module.mjs +0 -55
  620. package/esm2020/lib/components/form/input-opt/components/input-opt/input-opt.component.mjs +0 -361
  621. package/esm2020/lib/components/form/input-opt/directives/opt-pattern.directive.mjs +0 -44
  622. package/esm2020/lib/components/form/input-password/input-password.component.mjs +0 -133
  623. package/esm2020/lib/components/form/input-password/input-password.module.mjs +0 -44
  624. package/esm2020/lib/components/form/input-phone/data/country-code.mjs +0 -1333
  625. package/esm2020/lib/components/form/input-phone/directives/native-element-injector.directive.mjs +0 -33
  626. package/esm2020/lib/components/form/input-phone/input-phone.component.mjs +0 -671
  627. package/esm2020/lib/components/form/input-phone/input-phone.module.mjs +0 -50
  628. package/esm2020/lib/components/form/input-phone/input-phone.validator.mjs +0 -61
  629. package/esm2020/lib/components/form/input-search/input-search.component.mjs +0 -174
  630. package/esm2020/lib/components/form/input-search/input-search.module.mjs +0 -44
  631. package/esm2020/lib/components/form/input-select/input-select.component.mjs +0 -249
  632. package/esm2020/lib/components/form/input-tel/directives/input-tel.directive.mjs +0 -62
  633. package/esm2020/lib/components/form/input-tel/input-tel.component.mjs +0 -389
  634. package/esm2020/lib/components/form/input-tel/input-tel.module.mjs +0 -47
  635. package/esm2020/lib/components/form/input-text/input-text.component.mjs +0 -194
  636. package/esm2020/lib/components/form/input-text/input-text.module.mjs +0 -49
  637. package/esm2020/lib/components/form/input-textarea/input-textarea.component.mjs +0 -174
  638. package/esm2020/lib/components/form/input-textarea/input-textarea.module.mjs +0 -48
  639. package/esm2020/lib/components/form/input-timepicker/helpers/cursor-position.mjs +0 -14
  640. package/esm2020/lib/components/form/input-timepicker/input-timepicker.component.mjs +0 -290
  641. package/esm2020/lib/components/form/input-timepicker/input-timepicker.module.mjs +0 -46
  642. package/esm2020/lib/components/form/radio/radio.component.mjs +0 -91
  643. package/esm2020/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.mjs +0 -49
  644. package/esm2020/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.mjs +0 -69
  645. package/esm2020/lib/components/form/radio-group/helpers/filter-search-group.mjs +0 -27
  646. package/esm2020/lib/components/form/radio-group/helpers/move-selected-to-first.mjs +0 -27
  647. package/esm2020/lib/components/form/radio-group/radio-group.component.mjs +0 -185
  648. package/esm2020/lib/components/form/radio-group/radio-group.module.mjs +0 -47
  649. package/esm2020/lib/components/form/rating/rating.component.mjs +0 -217
  650. package/esm2020/lib/components/form/switch/switch.component.mjs +0 -97
  651. package/esm2020/lib/components/gallery/components/gallery-confirm-modal/gallery-confirm-modal.component.mjs +0 -22
  652. package/esm2020/lib/components/gallery/components/gallery-item/gallery-item.component.mjs +0 -102
  653. package/esm2020/lib/components/gallery/gallery.component.mjs +0 -197
  654. package/esm2020/lib/components/gallery/services/gallery.service.mjs +0 -31
  655. package/esm2020/lib/components/hint-error-message/hint-error-message.component.mjs +0 -123
  656. package/esm2020/lib/components/icon-button/icon-button.component.mjs +0 -51
  657. package/esm2020/lib/components/label/label.component.mjs +0 -141
  658. package/esm2020/lib/components/link/link.component.mjs +0 -50
  659. package/esm2020/lib/components/loader/loader.component.mjs +0 -26
  660. package/esm2020/lib/components/modal/modal.component.mjs +0 -146
  661. package/esm2020/lib/components/pages-nav/pages-nav.component.mjs +0 -33
  662. package/esm2020/lib/components/paginator/paginator.component.mjs +0 -152
  663. package/esm2020/lib/components/paginator/paginator.module.mjs +0 -31
  664. package/esm2020/lib/components/progress/progress.component.mjs +0 -26
  665. package/esm2020/lib/components/save-state/components/save-state-checkbox/save-state-checkbox.component.mjs +0 -15
  666. package/esm2020/lib/components/save-state/components/save-state-checkbox-group/save-state-checkbox-group.component.mjs +0 -15
  667. package/esm2020/lib/components/save-state/components/save-state-editor/save-state-editor.component.mjs +0 -15
  668. package/esm2020/lib/components/save-state/components/save-state-input/save-state-input.component.mjs +0 -15
  669. package/esm2020/lib/components/save-state/components/save-state-switch/save-state-switch.component.mjs +0 -15
  670. package/esm2020/lib/components/save-state/save-state.component.mjs +0 -39
  671. package/esm2020/lib/components/stepper/stepper.component.mjs +0 -54
  672. package/esm2020/lib/components/table/components/column/column.component.mjs +0 -40
  673. package/esm2020/lib/components/table/table.component.mjs +0 -274
  674. package/esm2020/lib/components/tabs/tab/tab.component.mjs +0 -31
  675. package/esm2020/lib/components/tabs/tabs-group/tabs-group.component.mjs +0 -29
  676. package/esm2020/lib/components/tooltip/services/tooltip.service.mjs +0 -67
  677. package/esm2020/lib/components/tooltip/tooltip-trigger/tooltip-trigger.component.mjs +0 -38
  678. package/esm2020/lib/components/tooltip/tooltip.component.mjs +0 -60
  679. package/esm2020/lib/components/truncate-text/truncate-text.component.mjs +0 -30
  680. package/esm2020/lib/components/warning-message/warning-message.component.mjs +0 -31
  681. package/esm2020/lib/components/wrappers/content-wrapper/content-wrapper.component.mjs +0 -26
  682. package/esm2020/lib/components/wrappers/controls-wrapper/components/controls-item/controls-item.component.mjs +0 -17
  683. package/esm2020/lib/components/wrappers/controls-wrapper/controls-wrapper.component.mjs +0 -24
  684. package/esm2020/lib/components/wrappers/widget-wrapper/widget-wrapper.component.mjs +0 -96
  685. package/esm2020/lib/directives/autosize/autosize.directive.mjs +0 -55
  686. package/esm2020/lib/directives/truncate/truncate.directive.mjs +0 -32
  687. package/esm2020/lib/helpers/extension/input-file.extension.mjs +0 -39
  688. package/esm2020/lib/helpers/formatting-date.mjs +0 -51
  689. package/esm2020/lib/helpers/string-hash-code.mjs +0 -17
  690. package/esm2020/lib/models/input-file/input-file.model.mjs +0 -2
  691. package/esm2020/lib/pipes/currency/currency.pipe.mjs +0 -22
  692. package/esm2020/lib/pipes/date/date-format.pipe.mjs +0 -21
  693. package/esm2020/lib/pipes/date/date-time-format.pipe.mjs +0 -21
  694. package/esm2020/lib/pipes/phone/phone-format.pipe.mjs +0 -23
  695. package/esm2020/lib/pipes/safe/safe.pipe.mjs +0 -20
  696. package/esm2020/lib/pipes/truncate/truncate.pipe.mjs +0 -23
  697. package/esm2020/lib/services/file-upload/file-upload.service.mjs +0 -26
  698. package/esm2020/lib/services/index.mjs +0 -8
  699. package/esm2020/lib/services/mrx-autosave/mrx-autosave.service.mjs +0 -44
  700. package/esm2020/lib/services/mrx-form-validator/constants/invalid-messages.mjs +0 -10
  701. package/esm2020/lib/services/mrx-form-validator/helpers/get-error-message.helper.mjs +0 -10
  702. package/esm2020/lib/services/mrx-form-validator/helpers/get-sorting-validations.helper.mjs +0 -28
  703. package/esm2020/lib/services/mrx-form-validator/models/index.mjs +0 -4
  704. package/esm2020/lib/services/mrx-form-validator/models/validations-options.model.mjs +0 -2
  705. package/esm2020/lib/services/mrx-form-validator/models/validations-settings.model.mjs +0 -2
  706. package/esm2020/lib/services/mrx-form-validator/models/validations-types.model.mjs +0 -22
  707. package/esm2020/lib/services/mrx-form-validator/mrx-form-validator.mjs +0 -207
  708. package/esm2020/lib/services/mrx-form-validator/validations/callback.validation.mjs +0 -15
  709. package/esm2020/lib/services/mrx-form-validator/validations/email.validation.mjs +0 -11
  710. package/esm2020/lib/services/mrx-form-validator/validations/max-length.validation.mjs +0 -10
  711. package/esm2020/lib/services/mrx-form-validator/validations/max-value.validation.mjs +0 -10
  712. package/esm2020/lib/services/mrx-form-validator/validations/min-length.validation.mjs +0 -11
  713. package/esm2020/lib/services/mrx-form-validator/validations/min-value.validation.mjs +0 -10
  714. package/esm2020/lib/services/mrx-form-validator/validations/pattern.validation.mjs +0 -11
  715. package/esm2020/lib/services/mrx-form-validator/validations/required.validation.mjs +0 -22
  716. package/esm2020/lib/services/save-store/store/effect.mjs +0 -31
  717. package/esm2020/lib/services/save-store/store/reducer.mjs +0 -79
  718. package/esm2020/public-api.mjs +0 -186
  719. package/fesm2015/myrta-ui.mjs +0 -16283
  720. package/fesm2015/myrta-ui.mjs.map +0 -1
  721. package/fesm2020/myrta-ui.mjs +0 -16319
  722. package/fesm2020/myrta-ui.mjs.map +0 -1
  723. package/lib/components/context-menu/components/context-menu/context-menu.component.d.ts +0 -34
  724. package/lib/components/context-menu/components/context-menu-content/context-menu-content.component.d.ts +0 -62
  725. package/lib/components/context-menu/context-menu.module.d.ts +0 -15
  726. package/lib/components/context-menu/context-menu.options.d.ts +0 -4
  727. package/lib/components/context-menu/context-menu.tokens.d.ts +0 -2
  728. package/lib/components/context-menu/directives/context-menu/context-menu.directive.d.ts +0 -12
  729. package/lib/components/context-menu/directives/context-menu-item/context-menu-item.directive.d.ts +0 -30
  730. package/lib/components/context-menu/models/context-menu.enum.d.ts +0 -11
  731. package/lib/components/context-menu/services/context-menu/context-menu-fixed.service.d.ts +0 -11
  732. package/lib/components/context-menu/services/context-menu/context-menu.service.d.ts +0 -56
  733. package/lib/components/form/document-editor/components/document-editor-preview-modal/document-editor-preview-modal.component.d.ts +0 -22
  734. package/lib/components/form/document-editor/document-editor.component.d.ts +0 -37
  735. package/lib/components/form/document-editor/document-editor.module.d.ts +0 -13
  736. package/lib/components/form/document-editor/helpers/transform-sysname.d.ts +0 -5
  737. package/lib/components/form/document-editor/models/document-editor-short-codes.enum.d.ts +0 -6
  738. package/lib/services/mrx-form-validator/constants/invalid-messages.d.ts +0 -9
  739. package/lib/services/mrx-form-validator/helpers/get-error-message.helper.d.ts +0 -3
  740. package/lib/services/mrx-form-validator/helpers/get-sorting-validations.helper.d.ts +0 -2
  741. package/lib/services/mrx-form-validator/models/index.d.ts +0 -3
  742. package/lib/services/mrx-form-validator/models/validations-options.model.d.ts +0 -28
  743. package/lib/services/mrx-form-validator/models/validations-settings.model.d.ts +0 -7
  744. package/lib/services/mrx-form-validator/models/validations-types.model.d.ts +0 -19
  745. package/lib/services/mrx-form-validator/validations/callback.validation.d.ts +0 -6
  746. package/lib/services/mrx-form-validator/validations/email.validation.d.ts +0 -6
  747. package/lib/services/mrx-form-validator/validations/max-length.validation.d.ts +0 -6
  748. package/lib/services/mrx-form-validator/validations/max-value.validation.d.ts +0 -6
  749. package/lib/services/mrx-form-validator/validations/min-length.validation.d.ts +0 -6
  750. package/lib/services/mrx-form-validator/validations/min-value.validation.d.ts +0 -6
  751. package/lib/services/mrx-form-validator/validations/pattern.validation.d.ts +0 -6
  752. package/lib/services/mrx-form-validator/validations/required.validation.d.ts +0 -6
@@ -1,363 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { HttpEventType } from '@angular/common/http';
3
- import { catchError } from 'rxjs/operators';
4
- import { EMPTY } from 'rxjs';
5
- import { v4 as uuidv4 } from 'uuid';
6
- import { formatBytes } from '../../../helpers/extension/input-file.extension';
7
- import { ErrorMessagesEnum } from './enums/error-messages.enum';
8
- import { InputFileTargetTypesEnum } from './input-file.enum';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../../../services/file-upload/file-upload.service";
11
- import * as i2 from "@angular/common";
12
- import * as i3 from "ngx-file-drop";
13
- import * as i4 from "../../error-message/error-message.component";
14
- import * as i5 from "../../cdk-tooltip/cdk-tooltip.directive";
15
- export class InputFileComponent {
16
- constructor(fileUploadService) {
17
- this.fileUploadService = fileUploadService;
18
- this.formatBytes = formatBytes;
19
- this.allowedExtensions = [];
20
- this.files = [];
21
- this.autoUpload = true;
22
- this.required = false;
23
- this.disabled = false;
24
- this.viewOnly = false;
25
- this.lightDisabled = false;
26
- this.bottomFiles = false;
27
- this.maxSize = 31457280;
28
- this.maxFiles = 5;
29
- this.minFiles = 0;
30
- this.formData = {}; // Параметры, которые будут передаваться в форме
31
- this.showInputWithError = true;
32
- this.showDeleteButton = true;
33
- this.isTooltipValue = false;
34
- this.isDownloadingFile = true;
35
- this.isHideListFiles = false;
36
- this.target = '_self';
37
- this.uploadAdditionalData = {};
38
- // ERROR
39
- this.invalid = false;
40
- this.invalidMessage = '';
41
- this.checkInvalid = null;
42
- // ERROR MESSAGES
43
- this.messageTooManyFiles = ErrorMessagesEnum.TooManyFiles;
44
- this.messageFileTooBig = ErrorMessagesEnum.FileTooBig;
45
- this.messageEmptyFile = ErrorMessagesEnum.EmptyFile;
46
- this.messageInvalidFileFormat = ErrorMessagesEnum.InvalidFileFormat;
47
- // PLACEHOLDERS
48
- this.placeholder = 'Перенесите файл с устройства или нажмите на данное поле для добавления файла';
49
- this.placeholderFileMaxSize = 'Размер файла: не больше';
50
- this.placeholderFileFormat = 'Формат файла:';
51
- this.filesChanged = new EventEmitter();
52
- this.checkDroppedFile = new EventEmitter();
53
- }
54
- set initFiles(data) {
55
- if (data) {
56
- if (Array.isArray(data)) {
57
- this.files = data.map(s => ({ ...s }));
58
- }
59
- else {
60
- this.files = [{ ...data }];
61
- }
62
- }
63
- else {
64
- this.files = [];
65
- }
66
- }
67
- set initAllowedExtensions(val) {
68
- if (val) {
69
- this.allowedExtensions = val;
70
- this.extensions = val.join(', ');
71
- }
72
- else {
73
- this.allowedExtensions = [];
74
- this.extensions = undefined;
75
- }
76
- }
77
- get canAdd() {
78
- if (this.showInputWithError) {
79
- return this.maxFiles > this.files.filter(s => !s.error).length;
80
- }
81
- else {
82
- return this.maxFiles > this.files.length;
83
- }
84
- }
85
- get getTarget() {
86
- return InputFileTargetTypesEnum[this.target];
87
- }
88
- get isInvalidMessage() {
89
- return !!this.invalidMessage || !!this.invalidMessage.length;
90
- }
91
- get checkValidClasses() {
92
- return this.checkInvalid === false ?
93
- 'mrx-input-checked-success' :
94
- this.checkInvalid === true ? 'mrx-input-checked-error' : '';
95
- }
96
- get getClasses() {
97
- return `${this.checkValidClasses}`;
98
- }
99
- get isValid() {
100
- return this.baseValidate();
101
- }
102
- getTooltipValue(value) {
103
- return this.isTooltipValue && value ? value : '';
104
- }
105
- baseValidate() {
106
- return true;
107
- }
108
- trackByFn(index, item) {
109
- return Boolean(item.uuid) ? item.uuid : item.tempUuid;
110
- }
111
- delete(file) {
112
- if (this.deleteConfirm) {
113
- this.deleteConfirm(file, (ok) => {
114
- if (ok) {
115
- const findFile = this.files.find(s => s.uuid === file.uuid);
116
- if (findFile) {
117
- if (this.deleteEndPoint) {
118
- const formData = this.createFormData();
119
- formData.append('Qquuid', file.uuid);
120
- findFile.deleting = true;
121
- if (this.autoUpload) {
122
- this.fileUploadService.delete(this.deleteEndPoint, formData).subscribe(result => {
123
- this.files.splice(this.files.indexOf(findFile), 1);
124
- this.filesChanged.emit(this.files);
125
- });
126
- }
127
- else {
128
- this.clear(file);
129
- }
130
- }
131
- else {
132
- this.files.splice(this.files.indexOf(findFile), 1);
133
- this.filesChanged.emit(this.files);
134
- }
135
- }
136
- }
137
- });
138
- }
139
- }
140
- canCancelUploading(file) {
141
- return !!file.uploading && file.percentage ? file.percentage < 90 : false;
142
- }
143
- clear(file) {
144
- if (file.uploading) {
145
- if (file.execution) {
146
- file.execution.unsubscribe();
147
- }
148
- }
149
- const findFileIdx = this.files.indexOf(file);
150
- if (findFileIdx >= 0) {
151
- this.files.splice(findFileIdx, 1);
152
- this.filesChanged.emit(this.files);
153
- }
154
- }
155
- downloadUrl(file) {
156
- if (file.url && !file.size) {
157
- return file.url;
158
- }
159
- else {
160
- if (this.downloadEndPoint) {
161
- return `${this.downloadEndPoint}?uuid=${file.uuid}`;
162
- }
163
- return '#';
164
- }
165
- }
166
- dropped(files) {
167
- for (const droppedFile of files) {
168
- if (droppedFile.fileEntry.isFile) {
169
- const fileEntry = droppedFile.fileEntry;
170
- fileEntry.file((file) => {
171
- this.uploadFile(file);
172
- });
173
- }
174
- else {
175
- // It was a directory (empty directories are added, otherwise only files)
176
- const fileEntry = droppedFile.fileEntry;
177
- }
178
- }
179
- }
180
- formDataKeys() {
181
- return Object.keys(this.formData);
182
- }
183
- createFormData() {
184
- const form = new FormData();
185
- if (this.maxFiles) {
186
- form.append('MaxFiles', this.maxFiles.toString(10));
187
- }
188
- const keys = this.formDataKeys();
189
- keys.forEach(key => form.append(key, this.formData[key]));
190
- return form;
191
- }
192
- uploadFile(file) {
193
- const data = {
194
- uuid: '',
195
- tempUuid: uuidv4(),
196
- name: file.name,
197
- size: file.size,
198
- uploading: true,
199
- percentage: 0,
200
- file: file
201
- };
202
- if (!this.checkForUpload(data)) {
203
- return;
204
- }
205
- const formData = this.createFormData();
206
- formData.append('File', file);
207
- if (this.uploadAdditionalData && Object.keys(this.uploadAdditionalData).length) {
208
- Object.keys(this.uploadAdditionalData).forEach(key => {
209
- formData.append(key, this.uploadAdditionalData[key]);
210
- });
211
- }
212
- if (this.autoUpload) {
213
- data.execution = this.fileUploadService.upload(this.uploadEndPoint, formData).pipe(catchError((err) => {
214
- data.uploading = false;
215
- return EMPTY;
216
- }))
217
- .subscribe((event) => {
218
- switch (event.type) {
219
- case HttpEventType.Sent:
220
- break;
221
- case HttpEventType.ResponseHeader:
222
- break;
223
- case HttpEventType.UploadProgress:
224
- if (event.total) {
225
- data.percentage = Math.round(event.loaded / event.total * 100);
226
- }
227
- break;
228
- case HttpEventType.Response:
229
- if (event.body) {
230
- data.uploading = false;
231
- data.percentage = 0;
232
- data.uuid = event.body.uuid;
233
- data.file = undefined;
234
- data.error = event.body.message;
235
- if (data.execution) {
236
- data.execution.unsubscribe();
237
- }
238
- if (this.files.every(s => !s.uploading)) {
239
- const completedFiles = this.files.filter(s => !s.error);
240
- this.filesChanged.emit(completedFiles);
241
- }
242
- }
243
- }
244
- });
245
- }
246
- else {
247
- data.uploading = false;
248
- data.uuid = data.tempUuid || '';
249
- if (this.files.every(s => !s.uploading)) {
250
- this.filesChanged.emit(this.files);
251
- }
252
- }
253
- }
254
- checkForUpload(data) {
255
- this.checkDroppedFile.emit(data);
256
- if (!this.canAdd) {
257
- data.error = this.messageTooManyFiles;
258
- data.uploading = false;
259
- this.files.push(data);
260
- return false;
261
- }
262
- this.files.push(data);
263
- if (data.file && data.file.size > this.maxSize) {
264
- data.error = this.messageFileTooBig;
265
- data.uploading = false;
266
- return false;
267
- }
268
- if (data.file && data.file.size == 0) {
269
- data.error = this.messageEmptyFile;
270
- data.uploading = false;
271
- return false;
272
- }
273
- if (this.allowedExtensions.length > 0 && !this.allowedExtensions.some(s => data.file && data.file.name.toLowerCase().endsWith(s.toLowerCase()))) {
274
- data.error = this.messageInvalidFileFormat;
275
- data.uploading = false;
276
- return false;
277
- }
278
- return true;
279
- }
280
- }
281
- InputFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputFileComponent, deps: [{ token: i1.FileUploadService }], target: i0.ɵɵFactoryTarget.Component });
282
- InputFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: InputFileComponent, selector: "mrx-input-file", inputs: { autoUpload: "autoUpload", required: "required", disabled: "disabled", viewOnly: "viewOnly", lightDisabled: "lightDisabled", bottomFiles: "bottomFiles", maxSize: "maxSize", maxFiles: "maxFiles", minFiles: "minFiles", formData: "formData", uploadEndPoint: "uploadEndPoint", deleteEndPoint: "deleteEndPoint", downloadEndPoint: "downloadEndPoint", fileNamePlaceholder: "fileNamePlaceholder", showInputWithError: "showInputWithError", showDeleteButton: "showDeleteButton", isTooltipValue: "isTooltipValue", isDownloadingFile: "isDownloadingFile", isHideListFiles: "isHideListFiles", target: "target", deleteConfirm: "deleteConfirm", innerTemplate: "innerTemplate", uploadAdditionalData: "uploadAdditionalData", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", messageTooManyFiles: "messageTooManyFiles", messageFileTooBig: "messageFileTooBig", messageEmptyFile: "messageEmptyFile", messageInvalidFileFormat: "messageInvalidFileFormat", placeholder: "placeholder", placeholderFileMaxSize: "placeholderFileMaxSize", placeholderFileFormat: "placeholderFileFormat", initFiles: ["files", "initFiles"], initAllowedExtensions: ["allowedExtensions", "initAllowedExtensions"] }, outputs: { filesChanged: "filesChanged", checkDroppedFile: "checkDroppedFile" }, ngImport: i0, template: "<div\r\n class=\"ng-form-file-input\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\">\r\n <div class=\"form-row\" *ngIf=\"disabled; else notDisabled\">\r\n <div *ngIf=\"!files || files.length == 0\"\r\n class=\"col-sm-12 col-md-6\"\r\n >\r\n <div class=\"d-flex align-items-center color-tertiary\">\r\n <div class=\"mrx-icon icon-file icon-font-24 mr-2\"></div>\r\n <span>\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435\u0442</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12\">\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n >\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <a\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [target]=\"getTarget\"\r\n [href]=\"downloadUrl(file)\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</a>\r\n </div>\r\n <div class=\"info\">\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </div>\r\n\r\n <ng-template #notDisabled>\r\n <ng-container *ngIf=\"!bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n\r\n <ngx-file-drop\r\n *ngIf=\"canAdd\"\r\n [className]=\"'ng-custom-file-input'\"\r\n [accept]=\"extensions || ''\"\r\n [disabled]=\"lightDisabled\"\r\n [ngClass]=\"{'ng-custom-file-input--disabled': lightDisabled}\"\r\n (onFileDrop)=\"dropped($event)\"\r\n >\r\n <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\r\n <div\r\n class=\"ng-custom-file-input-content\"\r\n (click)=\"!lightDisabled ? openFileSelector() : undefined\"\r\n >\r\n <div class=\"text-center\">\r\n <div class=\"ng-custom-file-input-content--placeholder mb-2\">\r\n {{placeholder}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--size\">\r\n {{placeholderFileMaxSize}} {{formatBytes(maxSize)}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--extensions\" *ngIf=\"extensions\">\r\n {{placeholderFileFormat}} {{extensions}}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-file-drop>\r\n\r\n <ng-container *ngIf=\"bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<mrx-error-message\r\n *ngIf=\"(!isValid || invalid) && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n\r\n<ng-template #fileListTemplate>\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n [ngClass]=\"{'file-error': file.error}\"\r\n [mrxCdkTooltip]=\"getTooltipValue(fileNamePlaceholder ? fileNamePlaceholder : file.name || '')\"\r\n [tooltipPosition]=\"'top-start'\"\r\n >\r\n <ng-container *ngIf=\"autoUpload\">\r\n <a class=\"qq-download-link\" [target]=\"getTarget\" [href]=\"downloadUrl(file)\" *ngIf=\"file.uuid && isDownloadingFile\"></a>\r\n </ng-container>\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <span\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</span>\r\n </div>\r\n <div class=\"info\">\r\n <div class=\"ng-custom-file-input_progress\" *ngIf=\"file.uploading\">\r\n <span [ngStyle]=\"{width: file.percentage + '%'}\"></span>\r\n </div>\r\n\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n <span\r\n *ngIf=\"!disabled && file.uuid && showDeleteButton && !viewOnly\"\r\n (click)=\"delete(file)\"\r\n class=\"mrx-icon icon-delete icon-font-24 cursor-pointer\"\r\n aria-label=\"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\"\r\n ></span>\r\n\r\n <div class=\"ng-custom-file-input-error\" *ngIf=\"file.error\">\r\n <span class=\"mrx-icon icon-attention icon-color-red icon-font-16 mr-1\"></span>\r\n <span class=\"color-negative\">{{file.error}}</span>\r\n </div>\r\n\r\n <div\r\n class=\"mrx-icon icon-close icon-font-24 cursor-pointer ml-2\"\r\n *ngIf=\"(file.error && !file.uuid) || canCancelUploading(file) && !viewOnly\"\r\n (click)=\"clear(file)\"\r\n ></div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n", styles: ["mrx-input-file .new-custom-file-input__item .qq-upload-size-selector{color:var(--neutral-text-tertiary, #71767E)!important}:host::ng-deep .ng-form-file-input .color-tertiary,:host::ng-deep .ng-form-file-input .color-tertiary *{color:var(--neutral-text-tertiary, #71767E)}.ng-custom-file-input-content{padding:var(--spacing-4);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--size,.ng-custom-file-input-content--extensions{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input__item{border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);border-radius:var(--border-radius-1);padding:var(--spacing-3);background-color:var(--brand-bg-tertiary-default, #FFF)}.new-custom-file-input__item .qq-file-info .qq-upload-file-selector{margin:0;-webkit-line-clamp:1;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;color:var(--neutral-text-primary)}.new-custom-file-input__item .qq-file-info .qq-upload-size-selector{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363);padding-left:var(--spacing-2);margin-right:var(--spacing-2)}.new-custom-file-input .qq-file-info .info{position:relative;z-index:2}:host::ng-deep .ng-form-file-input .ng-custom-file-input .ngx-file-drop__drop-zone{background:var(--brand-bg-tertiary-default, #FFF);border-radius:var(--border-radius-1)!important;border:none;background-image:repeating-linear-gradient(0deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px),repeating-linear-gradient(90deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px),repeating-linear-gradient(180deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px),repeating-linear-gradient(270deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px);background-size:1px 100%,100% 1px,1px 100%,100% 1px;background-position:0 0,0 0,100% 0,0 100%;background-repeat:no-repeat}:host::ng-deep .ng-form-file-input .ng-custom-file-input .ngx-file-drop__drop-zone:hover,:host::ng-deep .ng-form-file-input .ng-custom-file-input .ngx-file-drop__drop-zone:focus{background-image:repeating-linear-gradient(0deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px),repeating-linear-gradient(90deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px),repeating-linear-gradient(180deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px),repeating-linear-gradient(270deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px)}:host::ng-deep .ng-form-file-input .ng-custom-file-input.ng-custom-file-input--disabled .ngx-file-drop__drop-zone{background-color:var(--neutral-bg-disabled, #F4F4F4)}::ng-deep .new-custom-file-input__item.file-error{border-color:var(--system-bg-controls-negative-default, #B83B15)}::ng-deep .ng-custom-file-input-error{white-space:nowrap;font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}::ng-deep .ng-form-file-input.mrx-input-error .ng-custom-file-input .ngx-file-drop__drop-zone{background-image:repeating-linear-gradient(0deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(90deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(180deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(270deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px)!important}::ng-deep .ng-form-file-input.mrx-input-checked-error .ng-custom-file-input .ngx-file-drop__drop-zone{background-color:var(--system-bg-negative-secondary);background-image:repeating-linear-gradient(0deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(90deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(180deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(270deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px)!important}::ng-deep .ng-form-file-input.mrx-input-checked-success .ng-custom-file-input .ngx-file-drop__drop-zone{background-color:var(--system-bg-positive-secondary);background-image:repeating-linear-gradient(0deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px),repeating-linear-gradient(90deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px),repeating-linear-gradient(180deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px),repeating-linear-gradient(270deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.NgxFileDropComponent, selector: "ngx-file-drop", inputs: ["accept", "directory", "multiple", "dropZoneLabel", "dropZoneClassName", "useDragEnter", "contentClassName", "showBrowseBtn", "browseBtnClassName", "browseBtnLabel", "disabled"], outputs: ["onFileDrop", "onFileOver", "onFileLeave"] }, { kind: "directive", type: i3.NgxFileDropContentTemplateDirective, selector: "[ngx-file-drop-content-tmp]" }, { kind: "component", type: i4.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "directive", type: i5.CdkTooltipDirective, selector: "[mrxCdkTooltip]", inputs: ["mrxCdkTooltip", "tooltipActive", "autoCloseByScroll", "tooltipPosition", "tooltipMaxWidth"] }] });
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: InputFileComponent, decorators: [{
284
- type: Component,
285
- args: [{ selector: 'mrx-input-file', template: "<div\r\n class=\"ng-form-file-input\"\r\n [class]=\"getClasses\"\r\n [class.mrx-input-error]=\"invalid\">\r\n <div class=\"form-row\" *ngIf=\"disabled; else notDisabled\">\r\n <div *ngIf=\"!files || files.length == 0\"\r\n class=\"col-sm-12 col-md-6\"\r\n >\r\n <div class=\"d-flex align-items-center color-tertiary\">\r\n <div class=\"mrx-icon icon-file icon-font-24 mr-2\"></div>\r\n <span>\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435\u0442</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12\">\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n >\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <a\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [target]=\"getTarget\"\r\n [href]=\"downloadUrl(file)\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</a>\r\n </div>\r\n <div class=\"info\">\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </div>\r\n\r\n <ng-template #notDisabled>\r\n <ng-container *ngIf=\"!bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n\r\n <ngx-file-drop\r\n *ngIf=\"canAdd\"\r\n [className]=\"'ng-custom-file-input'\"\r\n [accept]=\"extensions || ''\"\r\n [disabled]=\"lightDisabled\"\r\n [ngClass]=\"{'ng-custom-file-input--disabled': lightDisabled}\"\r\n (onFileDrop)=\"dropped($event)\"\r\n >\r\n <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\r\n <div\r\n class=\"ng-custom-file-input-content\"\r\n (click)=\"!lightDisabled ? openFileSelector() : undefined\"\r\n >\r\n <div class=\"text-center\">\r\n <div class=\"ng-custom-file-input-content--placeholder mb-2\">\r\n {{placeholder}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--size\">\r\n {{placeholderFileMaxSize}} {{formatBytes(maxSize)}}\r\n </div>\r\n <div class=\"ng-custom-file-input-content--extensions\" *ngIf=\"extensions\">\r\n {{placeholderFileFormat}} {{extensions}}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-file-drop>\r\n\r\n <ng-container *ngIf=\"bottomFiles && !isHideListFiles\">\r\n <ng-container *ngTemplateOutlet=\"fileListTemplate\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"innerTemplate; context:{}\"></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n\r\n<mrx-error-message\r\n *ngIf=\"(!isValid || invalid) && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n\r\n<ng-template #fileListTemplate>\r\n <ul class=\"new-custom-file-input\" *ngIf=\"files.length\">\r\n <li\r\n class=\"new-custom-file-input__item\"\r\n *ngFor=\"let file of files; trackBy: trackByFn\"\r\n [ngClass]=\"{'file-error': file.error}\"\r\n [mrxCdkTooltip]=\"getTooltipValue(fileNamePlaceholder ? fileNamePlaceholder : file.name || '')\"\r\n [tooltipPosition]=\"'top-start'\"\r\n >\r\n <ng-container *ngIf=\"autoUpload\">\r\n <a class=\"qq-download-link\" [target]=\"getTarget\" [href]=\"downloadUrl(file)\" *ngIf=\"file.uuid && isDownloadingFile\"></a>\r\n </ng-container>\r\n <div class=\"qq-file-info\">\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"mrx-icon icon-file icon-font-24 mr-2\"></span>\r\n <span\r\n class=\"qq-upload-file-selector qq-upload-file\"\r\n [title]=\"fileNamePlaceholder ? fileNamePlaceholder : file.name\"\r\n >{{fileNamePlaceholder ? fileNamePlaceholder : file.name}}</span>\r\n </div>\r\n <div class=\"info\">\r\n <div class=\"ng-custom-file-input_progress\" *ngIf=\"file.uploading\">\r\n <span [ngStyle]=\"{width: file.percentage + '%'}\"></span>\r\n </div>\r\n\r\n <span class=\"qq-upload-size-selector qq-upload-size\" *ngIf=\"!file.error\">{{formatBytes(file.size)}}</span>\r\n <span\r\n *ngIf=\"!disabled && file.uuid && showDeleteButton && !viewOnly\"\r\n (click)=\"delete(file)\"\r\n class=\"mrx-icon icon-delete icon-font-24 cursor-pointer\"\r\n aria-label=\"\u0423\u0434\u0430\u043B\u0438\u0442\u044C\"\r\n ></span>\r\n\r\n <div class=\"ng-custom-file-input-error\" *ngIf=\"file.error\">\r\n <span class=\"mrx-icon icon-attention icon-color-red icon-font-16 mr-1\"></span>\r\n <span class=\"color-negative\">{{file.error}}</span>\r\n </div>\r\n\r\n <div\r\n class=\"mrx-icon icon-close icon-font-24 cursor-pointer ml-2\"\r\n *ngIf=\"(file.error && !file.uuid) || canCancelUploading(file) && !viewOnly\"\r\n (click)=\"clear(file)\"\r\n ></div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n", styles: ["mrx-input-file .new-custom-file-input__item .qq-upload-size-selector{color:var(--neutral-text-tertiary, #71767E)!important}:host::ng-deep .ng-form-file-input .color-tertiary,:host::ng-deep .ng-form-file-input .color-tertiary *{color:var(--neutral-text-tertiary, #71767E)}.ng-custom-file-input-content{padding:var(--spacing-4);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363)}.ng-custom-file-input-content--size,.ng-custom-file-input-content--extensions{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-secondary, #636363)}.new-custom-file-input__item{border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);border-radius:var(--border-radius-1);padding:var(--spacing-3);background-color:var(--brand-bg-tertiary-default, #FFF)}.new-custom-file-input__item .qq-file-info .qq-upload-file-selector{margin:0;-webkit-line-clamp:1;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;color:var(--neutral-text-primary)}.new-custom-file-input__item .qq-file-info .qq-upload-size-selector{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary, #636363);padding-left:var(--spacing-2);margin-right:var(--spacing-2)}.new-custom-file-input .qq-file-info .info{position:relative;z-index:2}:host::ng-deep .ng-form-file-input .ng-custom-file-input .ngx-file-drop__drop-zone{background:var(--brand-bg-tertiary-default, #FFF);border-radius:var(--border-radius-1)!important;border:none;background-image:repeating-linear-gradient(0deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px),repeating-linear-gradient(90deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px),repeating-linear-gradient(180deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px),repeating-linear-gradient(270deg,var(--neutral-bg-stroke-default, #DAD5CE),var(--neutral-bg-stroke-default, #DAD5CE) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-default, #DAD5CE) 10px);background-size:1px 100%,100% 1px,1px 100%,100% 1px;background-position:0 0,0 0,100% 0,0 100%;background-repeat:no-repeat}:host::ng-deep .ng-form-file-input .ng-custom-file-input .ngx-file-drop__drop-zone:hover,:host::ng-deep .ng-form-file-input .ng-custom-file-input .ngx-file-drop__drop-zone:focus{background-image:repeating-linear-gradient(0deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px),repeating-linear-gradient(90deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px),repeating-linear-gradient(180deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px),repeating-linear-gradient(270deg,var(--neutral-bg-stroke-hover, #BCB5AC),var(--neutral-bg-stroke-hover, #BCB5AC) 6px,transparent 6px,transparent 10px,var(--neutral-bg-stroke-hover, #BCB5AC) 10px)}:host::ng-deep .ng-form-file-input .ng-custom-file-input.ng-custom-file-input--disabled .ngx-file-drop__drop-zone{background-color:var(--neutral-bg-disabled, #F4F4F4)}::ng-deep .new-custom-file-input__item.file-error{border-color:var(--system-bg-controls-negative-default, #B83B15)}::ng-deep .ng-custom-file-input-error{white-space:nowrap;font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}::ng-deep .ng-form-file-input.mrx-input-error .ng-custom-file-input .ngx-file-drop__drop-zone{background-image:repeating-linear-gradient(0deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(90deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(180deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(270deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px)!important}::ng-deep .ng-form-file-input.mrx-input-checked-error .ng-custom-file-input .ngx-file-drop__drop-zone{background-color:var(--system-bg-negative-secondary);background-image:repeating-linear-gradient(0deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(90deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(180deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px),repeating-linear-gradient(270deg,var(--system-bg-controls-negative-default, #B83B15),var(--system-bg-controls-negative-default, #B83B15) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-negative-default, #B83B15) 10px)!important}::ng-deep .ng-form-file-input.mrx-input-checked-success .ng-custom-file-input .ngx-file-drop__drop-zone{background-color:var(--system-bg-positive-secondary);background-image:repeating-linear-gradient(0deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px),repeating-linear-gradient(90deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px),repeating-linear-gradient(180deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px),repeating-linear-gradient(270deg,var(--system-bg-controls-positive-default, #108E3A),var(--system-bg-controls-positive-default, #108E3A) 6px,transparent 6px,transparent 10px,var(--system-bg-controls-positive-default, #108E3A) 10px)!important}\n"] }]
286
- }], ctorParameters: function () { return [{ type: i1.FileUploadService }]; }, propDecorators: { autoUpload: [{
287
- type: Input
288
- }], required: [{
289
- type: Input
290
- }], disabled: [{
291
- type: Input
292
- }], viewOnly: [{
293
- type: Input
294
- }], lightDisabled: [{
295
- type: Input
296
- }], bottomFiles: [{
297
- type: Input
298
- }], maxSize: [{
299
- type: Input
300
- }], maxFiles: [{
301
- type: Input
302
- }], minFiles: [{
303
- type: Input
304
- }], formData: [{
305
- type: Input
306
- }], uploadEndPoint: [{
307
- type: Input
308
- }], deleteEndPoint: [{
309
- type: Input
310
- }], downloadEndPoint: [{
311
- type: Input
312
- }], fileNamePlaceholder: [{
313
- type: Input
314
- }], showInputWithError: [{
315
- type: Input
316
- }], showDeleteButton: [{
317
- type: Input
318
- }], isTooltipValue: [{
319
- type: Input
320
- }], isDownloadingFile: [{
321
- type: Input
322
- }], isHideListFiles: [{
323
- type: Input
324
- }], target: [{
325
- type: Input
326
- }], deleteConfirm: [{
327
- type: Input
328
- }], innerTemplate: [{
329
- type: Input
330
- }], uploadAdditionalData: [{
331
- type: Input
332
- }], invalid: [{
333
- type: Input
334
- }], invalidMessage: [{
335
- type: Input
336
- }], checkInvalid: [{
337
- type: Input
338
- }], messageTooManyFiles: [{
339
- type: Input
340
- }], messageFileTooBig: [{
341
- type: Input
342
- }], messageEmptyFile: [{
343
- type: Input
344
- }], messageInvalidFileFormat: [{
345
- type: Input
346
- }], placeholder: [{
347
- type: Input
348
- }], placeholderFileMaxSize: [{
349
- type: Input
350
- }], placeholderFileFormat: [{
351
- type: Input
352
- }], initFiles: [{
353
- type: Input,
354
- args: ['files']
355
- }], initAllowedExtensions: [{
356
- type: Input,
357
- args: ['allowedExtensions']
358
- }], filesChanged: [{
359
- type: Output
360
- }], checkDroppedFile: [{
361
- type: Output
362
- }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTdHLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7SUEyRTdCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBMUV4RCxnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFFYixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFD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QUFtQjtzQkFBbEMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLHdCQUF3QjtzQkFBdkMsS0FBSztnQkFHVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLHNCQUFzQjtzQkFBckMsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBR0YsU0FBUztzQkFEWixLQUFLO3VCQUFDLE9BQU87Z0JBY0gscUJBQXFCO3NCQUQvQixLQUFLO3VCQUFDLG1CQUFtQjtnQkFXVCxZQUFZO3NCQUE1QixNQUFNO2dCQUNVLGdCQUFnQjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4RmlsZURyb3BFbnRyeSB9IGZyb20gJ25neC1maWxlLWRyb3AnO1xyXG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVNb2RlbCwgVXBsb2FkZWRGaWxlTW9kZWwsIFVwbG9hZGVkUmVzdWx0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaW5wdXQtZmlsZS9pbnB1dC1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgZm9ybWF0Qnl0ZXMgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL2V4dGVuc2lvbi9pbnB1dC1maWxlLmV4dGVuc2lvbic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNFbnVtIH0gZnJvbSAnLi9lbnVtcy9lcnJvci1tZXNzYWdlcy5lbnVtJztcclxuaW1wb3J0IHsgSW5wdXRGaWxlVGFyZ2V0VHlwZXMsIElucHV0RmlsZVRhcmdldFR5cGVzRW51bSB9IGZyb20gJy4vaW5wdXQtZmlsZS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVDb21wb25lbnQge1xyXG4gIGZvcm1hdEJ5dGVzID0gZm9ybWF0Qnl0ZXM7XHJcbiAgZXh0ZW5zaW9ucz86IHN0cmluZztcclxuICBhbGxvd2VkRXh0ZW5zaW9uczogc3RyaW5nW10gPSBbXTtcclxuICBmaWxlczogSW5wdXRGaWxlTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgYXV0b1VwbG9hZCA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHZpZXdPbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGxpZ2h0RGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgYm90dG9tRmlsZXMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4U2l6ZSA9IDMxNDU3MjgwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhGaWxlcyA9IDU7XHJcbiAgQElucHV0KCkgcHVibGljIG1pbkZpbGVzID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybURhdGE6IGFueSA9IHt9OyAvLyDQn9Cw0YDQsNC80LXRgtGA0YssINC60L7RgtC+0YDRi9C1INCx0YPQtNGD0YIg0L/QtdGA0LXQtNCw0LLQsNGC0YzRgdGPINCyINGE0L7RgNC80LVcclxuICBASW5wdXQoKSBwdWJsaWMgdXBsb2FkRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRlbGV0ZUVuZFBvaW50Pzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkb3dubG9hZEVuZFBvaW50Pzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlTmFtZVBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93SW5wdXRXaXRoRXJyb3IgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93RGVsZXRlQnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNUb29sdGlwVmFsdWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNEb3dubG9hZGluZ0ZpbGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0hpZGVMaXN0RmlsZXMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdGFyZ2V0OiBJbnB1dEZpbGVUYXJnZXRUeXBlcyA9ICdfc2VsZic7XHJcbiAgQElucHV0KCkgcHVibGljIGRlbGV0ZUNvbmZpcm0/OiAoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwsIHJlc3VsdDogKG9rOiBib29sZWFuKSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgaW5uZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRBZGRpdGlvbmFsRGF0YTogYW55ID0ge307XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIEVSUk9SIE1FU1NBR0VTXHJcbiAgQElucHV0KCkgcHVibGljIG1lc3NhZ2VUb29NYW55RmlsZXM6IHN0cmluZyA9IEVycm9yTWVzc2FnZXNFbnVtLlRvb01hbnlGaWxlcztcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZUZpbGVUb29CaWc6IHN0cmluZyA9IEVycm9yTWVzc2FnZXNFbnVtLkZpbGVUb29CaWc7XHJcbiAgQElucHV0KCkgcHVibGljIG1lc3NhZ2VFbXB0eUZpbGU6IHN0cmluZyA9IEVycm9yTWVzc2FnZXNFbnVtLkVtcHR5RmlsZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZUludmFsaWRGaWxlRm9ybWF0OiBzdHJpbmcgPSBFcnJvck1lc3NhZ2VzRW51bS5JbnZhbGlkRmlsZUZvcm1hdDtcclxuXHJcbiAgLy8gUExBQ0VIT0xERVJTXHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJ9Cf0LXRgNC10L3QtdGB0LjRgtC1INGE0LDQudC7INGBINGD0YHRgtGA0L7QudGB0YLQstCwINC40LvQuCDQvdCw0LbQvNC40YLQtSDQvdCwINC00LDQvdC90L7QtSDQv9C+0LvQtSDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0YTQsNC50LvQsCc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyRmlsZU1heFNpemUgPSAn0KDQsNC30LzQtdGAINGE0LDQudC70LA6INC90LUg0LHQvtC70YzRiNC1JztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJGaWxlRm9ybWF0ID0gJ9Ck0L7RgNC80LDRgiDRhNCw0LnQu9CwOic7XHJcblxyXG4gIEBJbnB1dCgnZmlsZXMnKVxyXG4gIHNldCBpbml0RmlsZXMoZGF0YTogVXBsb2FkZWRGaWxlTW9kZWxbXSB8IFVwbG9hZGVkRmlsZU1vZGVsKSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBkYXRhLm1hcChzID0+ICh7IC4uLnMgfSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbeyAuLi5kYXRhIH1dO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ2FsbG93ZWRFeHRlbnNpb25zJylcclxuICBwdWJsaWMgc2V0IGluaXRBbGxvd2VkRXh0ZW5zaW9ucyh2YWw6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSB2YWw7XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHZhbC5qb2luKCcsICcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmV4dGVuc2lvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGZpbGVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0RmlsZU1vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hlY2tEcm9wcGVkRmlsZTogRXZlbnRFbWl0dGVyPElucHV0RmlsZU1vZGVsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGdldCBjYW5BZGQoKSB7XHJcbiAgICBpZiAodGhpcy5zaG93SW5wdXRXaXRoRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF4RmlsZXMgPiB0aGlzLmZpbGVzLmZpbHRlcihzID0+ICFzLmVycm9yKS5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhGaWxlcyA+IHRoaXMuZmlsZXMubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRUYXJnZXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJbnB1dEZpbGVUYXJnZXRUeXBlc0VudW1bdGhpcy50YXJnZXRdXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUb29sdGlwVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1Rvb2x0aXBWYWx1ZSAmJiB2YWx1ZSA/IHZhbHVlIDogJydcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBiYXNlVmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBJbnB1dEZpbGVNb2RlbCkge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4oaXRlbS51dWlkKSA/IGl0ZW0udXVpZCA6IGl0ZW0udGVtcFV1aWQ7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRlbGV0ZUNvbmZpcm0pIHtcclxuICAgICAgdGhpcy5kZWxldGVDb25maXJtKGZpbGUsIChvaykgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgY29uc3QgZmluZEZpbGUgPSB0aGlzLmZpbGVzLmZpbmQocyA9PiBzLnV1aWQgPT09IGZpbGUudXVpZCk7XHJcbiAgICAgICAgICBpZiAoZmluZEZpbGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVsZXRlRW5kUG9pbnQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuY3JlYXRlRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ1FxdXVpZCcsIGZpbGUudXVpZCk7XHJcbiAgICAgICAgICAgICAgZmluZEZpbGUuZGVsZXRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvVXBsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmRlbGV0ZSh0aGlzLmRlbGV0ZUVuZFBvaW50LCBmb3JtRGF0YSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoZmlsZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbkNhbmNlbFVwbG9hZGluZyhmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhZmlsZS51cGxvYWRpbmcgJiYgZmlsZS5wZXJjZW50YWdlID8gZmlsZS5wZXJjZW50YWdlIDwgOTAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsZWFyKGZpbGU6IElucHV0RmlsZU1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAoZmlsZS51cGxvYWRpbmcpIHtcclxuICAgICAgaWYgKGZpbGUuZXhlY3V0aW9uKSB7XHJcbiAgICAgICAgZmlsZS5leGVjdXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbmRGaWxlSWR4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xyXG4gICAgaWYgKGZpbmRGaWxlSWR4ID49IDApIHtcclxuICAgICAgdGhpcy5maWxlcy5zcGxpY2UoZmluZEZpbGVJZHgsIDEpO1xyXG4gICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRVcmwoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgaWYgKGZpbGUudXJsICYmICFmaWxlLnNpemUpIHtcclxuICAgICAgcmV0dXJuIGZpbGUudXJsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZG93bmxvYWRFbmRQb2ludCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRvd25sb2FkRW5kUG9pbnR9P3V1aWQ9JHtmaWxlLnV1aWR9YDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gJyMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyb3BwZWQoZmlsZXM6IE5neEZpbGVEcm9wRW50cnlbXSkge1xyXG4gICAgZm9yIChjb25zdCBkcm9wcGVkRmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBpZiAoZHJvcHBlZEZpbGUuZmlsZUVudHJ5LmlzRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVFbnRyeSA9IGRyb3BwZWRGaWxlLmZpbGVFbnRyeSBhcyBGaWxlU3lzdGVtRmlsZUVudHJ5O1xyXG4gICAgICAgIGZpbGVFbnRyeS5maWxlKChmaWxlOiBGaWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSXQgd2FzIGEgZGlyZWN0b3J5IChlbXB0eSBkaXJlY3RvcmllcyBhcmUgYWRkZWQsIG90aGVyd2lzZSBvbmx5IGZpbGVzKVxyXG4gICAgICAgIGNvbnN0IGZpbGVFbnRyeSA9IGRyb3BwZWRGaWxlLmZpbGVFbnRyeSBhcyBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybURhdGFLZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybURhdGEoKTogRm9ybURhdGEge1xyXG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMubWF4RmlsZXMpIHtcclxuICAgICAgZm9ybS5hcHBlbmQoJ01heEZpbGVzJywgdGhpcy5tYXhGaWxlcy50b1N0cmluZygxMCkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5cyA9IHRoaXMuZm9ybURhdGFLZXlzKCk7XHJcbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IGZvcm0uYXBwZW5kKGtleSwgdGhpcy5mb3JtRGF0YVtrZXldKSk7XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBsb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICB1dWlkOiAnJyxcclxuICAgICAgdGVtcFV1aWQ6IHV1aWR2NCgpLFxyXG4gICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgIHNpemU6IGZpbGUuc2l6ZSxcclxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICBwZXJjZW50YWdlOiAwLFxyXG4gICAgICBmaWxlOiBmaWxlXHJcbiAgICB9IGFzIElucHV0RmlsZU1vZGVsO1xyXG5cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclVwbG9hZChkYXRhKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmNyZWF0ZUZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ0ZpbGUnLCBmaWxlKTtcclxuXHJcbiAgICBpZiAodGhpcy51cGxvYWRBZGRpdGlvbmFsRGF0YSAmJiBPYmplY3Qua2V5cyh0aGlzLnVwbG9hZEFkZGl0aW9uYWxEYXRhKS5sZW5ndGgpIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy51cGxvYWRBZGRpdGlvbmFsRGF0YSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHRoaXMudXBsb2FkQWRkaXRpb25hbERhdGFba2V5XSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b1VwbG9hZCkge1xyXG4gICAgICBkYXRhLmV4ZWN1dGlvbiA9IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudXBsb2FkKHRoaXMudXBsb2FkRW5kUG9pbnQsIGZvcm1EYXRhKS5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEh0dHBFdmVudDxVcGxvYWRlZFJlc3VsdE1vZGVsPikgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2VIZWFkZXI6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICAgICAgICBpZiAoZXZlbnQudG90YWwpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEucGVyY2VudGFnZSA9IE1hdGgucm91bmQoZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwgKiAxMDApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgICAgICAgIGlmIChldmVudC5ib2R5KSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wZXJjZW50YWdlID0gMDtcclxuICAgICAgICAgICAgICAgIGRhdGEudXVpZCA9IGV2ZW50LmJvZHkudXVpZDtcclxuICAgICAgICAgICAgICAgIGRhdGEuZmlsZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGRhdGEuZXJyb3IgPSBldmVudC5ib2R5Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5leGVjdXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgZGF0YS5leGVjdXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlcy5ldmVyeShzID0+ICFzLnVwbG9hZGluZykpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxldGVkRmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihzID0+ICFzLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdChjb21wbGV0ZWRGaWxlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgZGF0YS51dWlkID0gZGF0YS50ZW1wVXVpZCB8fCAnJztcclxuXHJcbiAgICAgIGlmICh0aGlzLmZpbGVzLmV2ZXJ5KHMgPT4gIXMudXBsb2FkaW5nKSkge1xyXG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmVtaXQodGhpcy5maWxlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGb3JVcGxvYWQoZGF0YTogSW5wdXRGaWxlTW9kZWwpOiBib29sZWFuIHtcclxuICAgIHRoaXMuY2hlY2tEcm9wcGVkRmlsZS5lbWl0KGRhdGEpXHJcblxyXG4gICAgaWYgKCF0aGlzLmNhbkFkZCkge1xyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlVG9vTWFueUZpbGVzO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcblxyXG4gICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA+IHRoaXMubWF4U2l6ZSkge1xyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlRmlsZVRvb0JpZztcclxuICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLmZpbGUgJiYgZGF0YS5maWxlLnNpemUgPT0gMCkge1xyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlRW1wdHlGaWxlO1xyXG4gICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMubGVuZ3RoID4gMCAmJiAhdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucy5zb21lKFxyXG4gICAgICBzID0+IGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHMudG9Mb3dlckNhc2UoKSkpKSB7XHJcblxyXG4gICAgICBkYXRhLmVycm9yID0gdGhpcy5tZXNzYWdlSW52YWxpZEZpbGVGb3JtYXQ7XHJcbiAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibmctZm9ybS1maWxlLWlucHV0XCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCIgKm5nSWY9XCJkaXNhYmxlZDsgZWxzZSBub3REaXNhYmxlZFwiPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFmaWxlcyB8fCBmaWxlcy5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02XCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY29sb3ItdGVydGlhcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWljb24gaWNvbi1maWxlIGljb24tZm9udC0yNCBtci0yXCI+PC9kaXY+XHJcbiAgICAgICAgPHNwYW4+0JTQvtC60YPQvNC10L3RgtC+0LIg0L3QtdGCPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgPHVsIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0XCIgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIj5cclxuICAgICAgICA8bGlcclxuICAgICAgICAgIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0X19pdGVtXCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJxcS1maWxlLWluZm9cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZmlsZSBpY29uLWZvbnQtMjQgbXItMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJxcS11cGxvYWQtZmlsZS1zZWxlY3RvciBxcS11cGxvYWQtZmlsZVwiXHJcbiAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cImdldFRhcmdldFwiXHJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJkb3dubG9hZFVybChmaWxlKVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmlsZU5hbWVQbGFjZWhvbGRlciA/IGZpbGVOYW1lUGxhY2Vob2xkZXIgOiBmaWxlLm5hbWVcIlxyXG4gICAgICAgICAgICAgID57e2ZpbGVOYW1lUGxhY2Vob2xkZXIgPyBmaWxlTmFtZVBsYWNlaG9sZGVyIDogZmlsZS5uYW1lfX08L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXEtdXBsb2FkLXNpemUtc2VsZWN0b3IgcXEtdXBsb2FkLXNpemVcIiAqbmdJZj1cIiFmaWxlLmVycm9yXCI+e3tmb3JtYXRCeXRlcyhmaWxlLnNpemUpfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGU7IGNvbnRleHQ6e31cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNub3REaXNhYmxlZD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYm90dG9tRmlsZXMgJiYgIWlzSGlkZUxpc3RGaWxlc1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTsgY29udGV4dDp7fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5neC1maWxlLWRyb3BcclxuICAgICAgKm5nSWY9XCJjYW5BZGRcIlxyXG4gICAgICBbY2xhc3NOYW1lXT1cIiduZy1jdXN0b20tZmlsZS1pbnB1dCdcIlxyXG4gICAgICBbYWNjZXB0XT1cImV4dGVuc2lvbnMgfHwgJydcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwibGlnaHREaXNhYmxlZFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnbmctY3VzdG9tLWZpbGUtaW5wdXQtLWRpc2FibGVkJzogbGlnaHREaXNhYmxlZH1cIlxyXG4gICAgICAob25GaWxlRHJvcCk9XCJkcm9wcGVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbmd4LWZpbGUtZHJvcC1jb250ZW50LXRtcCBsZXQtb3BlbkZpbGVTZWxlY3Rvcj1cIm9wZW5GaWxlU2VsZWN0b3JcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIiFsaWdodERpc2FibGVkID8gb3BlbkZpbGVTZWxlY3RvcigpIDogdW5kZWZpbmVkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLWN1c3RvbS1maWxlLWlucHV0LWNvbnRlbnQtLXBsYWNlaG9sZGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICB7e3BsYWNlaG9sZGVyfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1jb250ZW50LS1zaXplXCI+XHJcbiAgICAgICAgICAgICAge3twbGFjZWhvbGRlckZpbGVNYXhTaXplfX0ge3tmb3JtYXRCeXRlcyhtYXhTaXplKX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctY3VzdG9tLWZpbGUtaW5wdXQtY29udGVudC0tZXh0ZW5zaW9uc1wiICpuZ0lmPVwiZXh0ZW5zaW9uc1wiPlxyXG4gICAgICAgICAgICAgIHt7cGxhY2Vob2xkZXJGaWxlRm9ybWF0fX0ge3tleHRlbnNpb25zfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmd4LWZpbGUtZHJvcD5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYm90dG9tRmlsZXMgJiYgIWlzSGlkZUxpc3RGaWxlc1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZUxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTsgY29udGV4dDp7fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcblxyXG48bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAqbmdJZj1cIighaXNWYWxpZCB8fCBpbnZhbGlkKSAmJiBpc0ludmFsaWRNZXNzYWdlXCJcclxuICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZmlsZUxpc3RUZW1wbGF0ZT5cclxuICA8dWwgY2xhc3M9XCJuZXctY3VzdG9tLWZpbGUtaW5wdXRcIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgPGxpXHJcbiAgICAgIGNsYXNzPVwibmV3LWN1c3RvbS1maWxlLWlucHV0X19pdGVtXCJcclxuICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZmlsZS1lcnJvcic6IGZpbGUuZXJyb3J9XCJcclxuICAgICAgW21yeENka1Rvb2x0aXBdPVwiZ2V0VG9vbHRpcFZhbHVlKGZpbGVOYW1lUGxhY2Vob2xkZXIgPyBmaWxlTmFtZVBsYWNlaG9sZGVyIDogZmlsZS5uYW1lIHx8ICcnKVwiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwiJ3RvcC1zdGFydCdcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV0b1VwbG9hZFwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwicXEtZG93bmxvYWQtbGlua1wiIFt0YXJnZXRdPVwiZ2V0VGFyZ2V0XCIgW2hyZWZdPVwiZG93bmxvYWRVcmwoZmlsZSlcIiAqbmdJZj1cImZpbGUudXVpZCAmJiBpc0Rvd25sb2FkaW5nRmlsZVwiPjwvYT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJxcS1maWxlLWluZm9cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWZpbGUgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cInFxLXVwbG9hZC1maWxlLXNlbGVjdG9yIHFxLXVwbG9hZC1maWxlXCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cImZpbGVOYW1lUGxhY2Vob2xkZXIgPyBmaWxlTmFtZVBsYWNlaG9sZGVyIDogZmlsZS5uYW1lXCJcclxuICAgICAgICAgID57e2ZpbGVOYW1lUGxhY2Vob2xkZXIgPyBmaWxlTmFtZVBsYWNlaG9sZGVyIDogZmlsZS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dF9wcm9ncmVzc1wiICpuZ0lmPVwiZmlsZS51cGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwie3dpZHRoOiBmaWxlLnBlcmNlbnRhZ2UgKyAnJSd9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcS11cGxvYWQtc2l6ZS1zZWxlY3RvciBxcS11cGxvYWQtc2l6ZVwiICpuZ0lmPVwiIWZpbGUuZXJyb3JcIj57e2Zvcm1hdEJ5dGVzKGZpbGUuc2l6ZSl9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWRpc2FibGVkICYmIGZpbGUudXVpZCAmJiBzaG93RGVsZXRlQnV0dG9uICYmICF2aWV3T25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGUoZmlsZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0yNCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCLQo9C00LDQu9C40YLRjFwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy1jdXN0b20tZmlsZS1pbnB1dC1lcnJvclwiICpuZ0lmPVwiZmlsZS5lcnJvclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tYXR0ZW50aW9uIGljb24tY29sb3ItcmVkIGljb24tZm9udC0xNiBtci0xXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbG9yLW5lZ2F0aXZlXCI+e3tmaWxlLmVycm9yfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMjQgY3Vyc29yLXBvaW50ZXIgbWwtMlwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiKGZpbGUuZXJyb3IgJiYgIWZpbGUudXVpZCkgfHwgY2FuQ2FuY2VsVXBsb2FkaW5nKGZpbGUpICYmICF2aWV3T25seVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcihmaWxlKVwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9saT5cclxuICA8L3VsPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -1,66 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { SimpleModalComponent } from 'ngx-simple-modal';
3
- import { convertBase64ToFile } from '../../../../../helpers/extension/input-file.extension';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../../../modal/modal.component";
6
- import * as i2 from "../../../../button/button.component";
7
- import * as i3 from "ngx-image-cropper";
8
- export class FileImageEditModalComponent extends SimpleModalComponent {
9
- constructor() {
10
- super();
11
- this.imageChangedEvent = '';
12
- this.croppedImage = '';
13
- this.canvasRotation = 0;
14
- this.transform = {};
15
- this.result = { result: false };
16
- }
17
- ok() {
18
- this.result = {
19
- result: true,
20
- fileImage: convertBase64ToFile(this.croppedImage, this.fileImage.name, this.fileImage.type),
21
- fileUrl: this.croppedImage
22
- };
23
- this.close();
24
- }
25
- rotateLeft() {
26
- this.canvasRotation--;
27
- this.flipAfterRotate();
28
- }
29
- rotateRight() {
30
- this.canvasRotation++;
31
- this.flipAfterRotate();
32
- }
33
- flipAfterRotate() {
34
- const flippedH = this.transform.flipH;
35
- const flippedV = this.transform.flipV;
36
- this.transform = {
37
- ...this.transform,
38
- flipH: flippedV,
39
- flipV: flippedH
40
- };
41
- }
42
- fileChangeEvent(event) {
43
- this.imageChangedEvent = event;
44
- }
45
- imageCropped(event) {
46
- if (event.base64) {
47
- this.croppedImage = event.base64;
48
- }
49
- }
50
- imageLoaded(image) {
51
- // console.log(image)
52
- }
53
- cropperReady() {
54
- // cropper ready
55
- }
56
- loadImageFailed() {
57
- // show message
58
- }
59
- }
60
- FileImageEditModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileImageEditModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- FileImageEditModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FileImageEditModalComponent, selector: "mrx-file-image-edit-modal", usesInheritance: true, ngImport: i0, template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"close()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"true\"\r\n [aspectRatio]=\"aspectRatio\"\r\n format=\"png\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"close()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:rgba(31,34,38,.5);border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"], dependencies: [{ kind: "component", type: i1.ModalComponent, selector: "mrx-modal", inputs: ["title", "message", "okText", "closeText", "size", "color", "customClasses", "expandable", "isClose", "isBack", "backText", "enableFooter", "alignButtons", "isLoading", "iconPosition"], outputs: ["ok", "close", "back"] }, { kind: "component", type: i2.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType"], outputs: ["mrxClick"] }, { kind: "component", type: i3.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }] });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileImageEditModalComponent, decorators: [{
63
- type: Component,
64
- args: [{ selector: 'mrx-file-image-edit-modal', template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"close()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"true\"\r\n [aspectRatio]=\"aspectRatio\"\r\n format=\"png\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"close()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:rgba(31,34,38,.5);border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"] }]
65
- }], ctorParameters: function () { return []; } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWZpbGUtaW1hZ2UvY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWZpbGUtaW1hZ2UvY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7O0FBc0I1RixNQUFNLE9BQU8sMkJBQ1gsU0FBUSxvQkFBc0Q7SUFhOUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQVBWLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQW1CLEVBQUUsQ0FBQztRQUs3QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxFQUFFO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJO1lBQ1osU0FBUyxFQUFFLG1CQUFtQixDQUM1QixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3BCO1lBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQzNCLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBd0I7UUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBa0I7UUFDNUIscUJBQXFCO0lBQ3ZCLENBQUM7SUFFRCxZQUFZO1FBQ1YsZ0JBQWdCO0lBQ2xCLENBQUM7SUFFRCxlQUFlO1FBQ2IsZUFBZTtJQUNqQixDQUFDOzt3SEF4RVUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsd0ZDekJ4Qyw4aklBaUVBOzJGRHhDYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpbXBsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnbmd4LXNpbXBsZS1tb2RhbCc7XHJcbmltcG9ydCB7IENyb3BwZXJTZXR0aW5ncywgSW1hZ2VDcm9wcGVkRXZlbnQsIEltYWdlVHJhbnNmb3JtLCBMb2FkZWRJbWFnZSB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcclxuaW1wb3J0IHsgY29udmVydEJhc2U2NFRvRmlsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hlbHBlcnMvZXh0ZW5zaW9uL2lucHV0LWZpbGUuZXh0ZW5zaW9uJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VFZGl0U2VsZWN0IHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGZpbGVJbWFnZT86IGFueTtcclxuICBjcm9wcGVyTWF4V2lkdGg6IG51bWJlcjtcclxuICBjcm9wcGVyTWF4SGVpZ2h0OiBudW1iZXI7XHJcbiAgYXNwZWN0UmF0aW86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlRWRpdFJlc3VsdCB7XHJcbiAgcmVzdWx0OiBib29sZWFuLFxyXG4gIGZpbGVJbWFnZT86IGFueSxcclxuICBmaWxlVXJsPzogc3RyaW5nXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWZpbGUtaW1hZ2UtZWRpdC1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW1hZ2UtZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlSW1hZ2VFZGl0TW9kYWxDb21wb25lbnRcclxuICBleHRlbmRzIFNpbXBsZU1vZGFsQ29tcG9uZW50PEltYWdlRWRpdFNlbGVjdCwgSW1hZ2VFZGl0UmVzdWx0PiB7XHJcblxyXG4gIHRpdGxlITogc3RyaW5nO1xyXG4gIGZpbGVJbWFnZT86IGFueTtcclxuICBjcm9wcGVyTWF4V2lkdGghOiBudW1iZXI7XHJcbiAgY3JvcHBlck1heEhlaWdodCE6IG51bWJlcjtcclxuICBhc3BlY3RSYXRpbyE6IG51bWJlcjtcclxuICBpbWFnZUNoYW5nZWRFdmVudDogYW55ID0gJyc7XHJcbiAgY3JvcHBlZEltYWdlID0gJyc7XHJcbiAgY2FudmFzUm90YXRpb24gPSAwO1xyXG4gIHRyYW5zZm9ybTogSW1hZ2VUcmFuc2Zvcm0gPSB7fTtcclxuICBjcm9wcGVyU2V0dGluZ3MhOiBDcm9wcGVyU2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMucmVzdWx0ID0ge3Jlc3VsdDogZmFsc2V9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9rKCkge1xyXG4gICAgdGhpcy5yZXN1bHQgPSB7XHJcbiAgICAgIHJlc3VsdDogdHJ1ZSxcclxuICAgICAgZmlsZUltYWdlOiBjb252ZXJ0QmFzZTY0VG9GaWxlKFxyXG4gICAgICAgIHRoaXMuY3JvcHBlZEltYWdlLFxyXG4gICAgICAgIHRoaXMuZmlsZUltYWdlLm5hbWUsXHJcbiAgICAgICAgdGhpcy5maWxlSW1hZ2UudHlwZVxyXG4gICAgICApLFxyXG4gICAgICBmaWxlVXJsOiB0aGlzLmNyb3BwZWRJbWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHJvdGF0ZUxlZnQoKSB7XHJcbiAgICB0aGlzLmNhbnZhc1JvdGF0aW9uLS07XHJcbiAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcm90YXRlUmlnaHQoKSB7XHJcbiAgICB0aGlzLmNhbnZhc1JvdGF0aW9uKys7XHJcbiAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmbGlwQWZ0ZXJSb3RhdGUoKSB7XHJcbiAgICBjb25zdCBmbGlwcGVkSCA9IHRoaXMudHJhbnNmb3JtLmZsaXBIO1xyXG4gICAgY29uc3QgZmxpcHBlZFYgPSB0aGlzLnRyYW5zZm9ybS5mbGlwVjtcclxuICAgIHRoaXMudHJhbnNmb3JtID0ge1xyXG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcclxuICAgICAgZmxpcEg6IGZsaXBwZWRWLFxyXG4gICAgICBmbGlwVjogZmxpcHBlZEhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmaWxlQ2hhbmdlRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5pbWFnZUNoYW5nZWRFdmVudCA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgaW1hZ2VDcm9wcGVkKGV2ZW50OiBJbWFnZUNyb3BwZWRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmJhc2U2NCkge1xyXG4gICAgICB0aGlzLmNyb3BwZWRJbWFnZSA9IGV2ZW50LmJhc2U2NDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltYWdlTG9hZGVkKGltYWdlOiBMb2FkZWRJbWFnZSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coaW1hZ2UpXHJcbiAgfVxyXG5cclxuICBjcm9wcGVyUmVhZHkoKSB7XHJcbiAgICAvLyBjcm9wcGVyIHJlYWR5XHJcbiAgfVxyXG5cclxuICBsb2FkSW1hZ2VGYWlsZWQoKSB7XHJcbiAgICAvLyBzaG93IG1lc3NhZ2VcclxuICB9XHJcbn1cclxuIiwiPG1yeC1tb2RhbFxyXG4gIFt0aXRsZV09XCJ0aXRsZVwiXHJcbiAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gIChjbG9zZSk9XCJjbG9zZSgpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLTEyXCI+XHJcbiAgICAgIDxwPtCS0YvQsdGA0LDQvdC90LDRjyDQvtCx0LvQsNGB0YLRjCDQsdGD0LTQtdGCINC/0L7QutCw0LfRi9Cy0LDRgtGM0YHRjyDQvdCwINC+0LHQu9C+0LbQutC1INGB0YLRgNCw0L3QuNGG0Ys8L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC0xMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWltYWdlLWNyb3BwZXJfX3dyYXBwZXJcIj5cclxuICAgICAgICA8aW1hZ2UtY3JvcHBlclxyXG4gICAgICAgICAgW2ltYWdlRmlsZV09XCJmaWxlSW1hZ2VcIlxyXG4gICAgICAgICAgW21haW50YWluQXNwZWN0UmF0aW9dPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxyXG4gICAgICAgICAgZm9ybWF0PVwicG5nXCJcclxuICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGltYWdlTG9hZGVkKT1cImltYWdlTG9hZGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJjcm9wcGVyUmVhZHkoKVwiXHJcbiAgICAgICAgICAobG9hZEltYWdlRmFpbGVkKT1cImxvYWRJbWFnZUZhaWxlZCgpXCJcclxuICAgICAgICAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyMwMDAwMDAnXCJcclxuICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvblwiXHJcbiAgICAgICAgICBbdHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiXHJcbiAgICAgICAgICBbY3JvcHBlck1heFdpZHRoXT1cImNyb3BwZXJNYXhXaWR0aFwiXHJcbiAgICAgICAgICBbY3JvcHBlck1heEhlaWdodF09XCJjcm9wcGVyTWF4SGVpZ2h0XCJcclxuICAgICAgICA+PC9pbWFnZS1jcm9wcGVyPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWltYWdlLWNyb3BwZXJfX2NvbnRyb2xzXCI+XHJcbiAgICAgICAgICA8c3ZnIChjbGljayk9XCJyb3RhdGVMZWZ0KClcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjE1XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiMC44ODg4ODlcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTQuNSAxOC41QzUuMDUyMjggMTguNSA1LjUgMTguMDUyMyA1LjUgMTcuNUM1LjUgMTYuOTQ3NyA1LjA1MjI4IDE2LjUgNC41IDE2LjVDMy45NDc3MiAxNi41IDMuNSAxNi45NDc3IDMuNSAxNy41QzMuNSAxOC4wNTIzIDMuOTQ3NzIgMTguNSA0LjUgMTguNVpcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTc4IDIwLjMzMzNMNy43Nzc1NiAxOC4xMTExTDIuODg4NjcgMjNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4xNTc1IDIxLjY4NDJDMTguNTkzMiAyMS42ODQyIDIyLjk5OTYgMTcuMjc3NyAyMi45OTk2IDExLjg0MjFDMjIuOTk5NiA2LjQwNjQ2IDE4LjU5MzIgMiAxMy4xNTc1IDJDNy43MjE4OSAyIDMuMzE1NDMgNi40MDY0NiAzLjMxNTQzIDExLjg0MjFcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMS4wMDAyNiAxMC4xMDUyTDMuMzE2MDUgMTIuNDIxTDUuNjMxODQgMTAuMTA1MlwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgPHN2ZyAoY2xpY2spPVwicm90YXRlUmlnaHQoKVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjE0XCIgeT1cIjE1XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiMC44ODg4ODlcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjUgMTguNUMxNy4wNTIzIDE4LjUgMTcuNSAxOC4wNTIzIDE3LjUgMTcuNUMxNy41IDE2Ljk0NzcgMTcuMDUyMyAxNi41IDE2LjUgMTYuNUMxNS45NDc3IDE2LjUgMTUuNSAxNi45NDc3IDE1LjUgMTcuNUMxNS41IDE4LjA1MjMgMTUuOTQ3NyAxOC41IDE2LjUgMTguNVpcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yMS45OTk4IDIwLjMzMzNMMTkuNzc3NiAxOC4xMTExTDE0Ljg4ODcgMjNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMC44NDI1IDIxLjY4NDJDNS40MDY4MiAyMS42ODQyIDEuMDAwMzYgMTcuMjc3NyAxLjAwMDM2IDExLjg0MjFDMS4wMDAzNiA2LjQwNjQ2IDUuNDA2ODIgMiAxMC44NDI1IDJDMTYuMjc4MSAyIDIwLjY4NDYgNi40MDY0NiAyMC42ODQ2IDExLjg0MjFcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjIuOTk5NyAxMC4xMDUyTDIwLjY4NCAxMi40MjFMMTguMzY4MiAxMC4xMDUyXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNmb290ZXJDb250ZW50PlxyXG4gICAgPG1yeC1idXR0b25cclxuICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ21yLTMnXCJcclxuICAgICAgW3R5cGVdPVwiJ3NlY29uZGFyeSdcIlxyXG4gICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcclxuICAgID7QntGC0LzQtdC90LjRgtGMXHJcbiAgICA8L21yeC1idXR0b24+XHJcbiAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICBbdHlwZV09XCIncHJpbWFyeSdcIlxyXG4gICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgIChjbGljayk9XCJvaygpXCJcclxuICAgID7Qn9C+0LTRgtCy0LXRgNC00LjRgtGMXHJcbiAgICA8L21yeC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9tcngtbW9kYWw+XHJcbiJdfQ==