@tsi-developpement/tsi-shared-ui 0.0.1

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 (558) hide show
  1. package/esm2022/lib/consts/app-providers.mjs +11 -0
  2. package/esm2022/lib/consts/html-template.const.mjs +40 -0
  3. package/esm2022/lib/consts/index.mjs +8 -0
  4. package/esm2022/lib/consts/localization-key.mjs +12 -0
  5. package/esm2022/lib/consts/locals.const.mjs +8 -0
  6. package/esm2022/lib/consts/queryParamNames.const.mjs +11 -0
  7. package/esm2022/lib/consts/themes.mjs +5 -0
  8. package/esm2022/lib/consts/tsi-consts.mjs +45 -0
  9. package/esm2022/lib/end-points/authorization-endpoints.mjs +35 -0
  10. package/esm2022/lib/end-points/baseuri.mjs +11 -0
  11. package/esm2022/lib/end-points/endpoints.mjs +208 -0
  12. package/esm2022/lib/end-points/import-export-endpoint.mjs +35 -0
  13. package/esm2022/lib/end-points/index.mjs +7 -0
  14. package/esm2022/lib/end-points/presentation-settings-endpoints.mjs +13 -0
  15. package/esm2022/lib/end-points/reporting-endpoints.mjs +55 -0
  16. package/esm2022/lib/end-points/shared-endpoint.mjs +12 -0
  17. package/esm2022/lib/end-points/user-identity-endpoints.mjs +61 -0
  18. package/esm2022/lib/enums/Language.mjs +9 -0
  19. package/esm2022/lib/enums/auto-complete.mjs +6 -0
  20. package/esm2022/lib/enums/button-type.enum.mjs +6 -0
  21. package/esm2022/lib/enums/claim-types.mjs +15 -0
  22. package/esm2022/lib/enums/code-format.mjs +6 -0
  23. package/esm2022/lib/enums/component-use-modes-enum.mjs +19 -0
  24. package/esm2022/lib/enums/css-units.mjs +10 -0
  25. package/esm2022/lib/enums/decimal-format.mjs +8 -0
  26. package/esm2022/lib/enums/display-types.mjs +35 -0
  27. package/esm2022/lib/enums/filter-operator-type.mjs +34 -0
  28. package/esm2022/lib/enums/form-validation-error.mjs +7 -0
  29. package/esm2022/lib/enums/grid-selection-mode.mjs +7 -0
  30. package/esm2022/lib/enums/grid-sort-mode.mjs +7 -0
  31. package/esm2022/lib/enums/http-method-types.mjs +6 -0
  32. package/esm2022/lib/enums/index.mjs +25 -0
  33. package/esm2022/lib/enums/input-types.mjs +20 -0
  34. package/esm2022/lib/enums/layout-orientation.mjs +6 -0
  35. package/esm2022/lib/enums/logout-reason-enum.mjs +8 -0
  36. package/esm2022/lib/enums/modal-size-enum.mjs +10 -0
  37. package/esm2022/lib/enums/report-type.mjs +9 -0
  38. package/esm2022/lib/enums/status.mjs +9 -0
  39. package/esm2022/lib/enums/text-box-type.mjs +7 -0
  40. package/esm2022/lib/enums/tooltipPosition.enum.mjs +8 -0
  41. package/esm2022/lib/enums/tsi-component-enum.mjs +40 -0
  42. package/esm2022/lib/enums/type-import.mjs +6 -0
  43. package/esm2022/lib/functions/array.functions.mjs +8 -0
  44. package/esm2022/lib/functions/index.mjs +3 -0
  45. package/esm2022/lib/functions/modal-open.function.mjs +69 -0
  46. package/esm2022/lib/guards/admin.guard.mjs +37 -0
  47. package/esm2022/lib/guards/auth.guard.mjs +30 -0
  48. package/esm2022/lib/guards/index.mjs +4 -0
  49. package/esm2022/lib/guards/permission.guard.mjs +32 -0
  50. package/esm2022/lib/interfaces/configuration/configuration.mjs +2 -0
  51. package/esm2022/lib/interfaces/generic-form/generic-form.mjs +118 -0
  52. package/esm2022/lib/interfaces/generic-types/dictionary.mjs +2 -0
  53. package/esm2022/lib/interfaces/grid/grid-configuration.mjs +2 -0
  54. package/esm2022/lib/interfaces/index.mjs +12 -0
  55. package/esm2022/lib/interfaces/modal/dynamic.component.mjs +7 -0
  56. package/esm2022/lib/interfaces/modal/modal-size.mjs +2 -0
  57. package/esm2022/lib/interfaces/pagination/pagination-base.mjs +2 -0
  58. package/esm2022/lib/interfaces/select-list/combo-status-model.mjs +10 -0
  59. package/esm2022/lib/interfaces/settings/app-settings.mjs +2 -0
  60. package/esm2022/lib/interfaces/styles/css-size-property.mjs +17 -0
  61. package/esm2022/lib/interfaces/translation/translation.mjs +2 -0
  62. package/esm2022/lib/models/Notes/Note.mjs +7 -0
  63. package/esm2022/lib/models/application/configuration/endpoint-infos.mjs +3 -0
  64. package/esm2022/lib/models/application/configuration/entity-delete-behavior.mjs +2 -0
  65. package/esm2022/lib/models/authorization/authorization-token-mapper.mjs +24 -0
  66. package/esm2022/lib/models/authorization/authorization-token.mjs +2 -0
  67. package/esm2022/lib/models/common/component-descriminator.mjs +2 -0
  68. package/esm2022/lib/models/common/entity-properties.mjs +2 -0
  69. package/esm2022/lib/models/common/entity-validations.mjs +2 -0
  70. package/esm2022/lib/models/common/event-schema.mjs +2 -0
  71. package/esm2022/lib/models/common/key-value-pair.mjs +2 -0
  72. package/esm2022/lib/models/entity-info/entity-info.mjs +29 -0
  73. package/esm2022/lib/models/filter/filter-by-existing-values.mjs +7 -0
  74. package/esm2022/lib/models/filter/paged-result-request-base.mjs +13 -0
  75. package/esm2022/lib/models/filter/search-field.mjs +2 -0
  76. package/esm2022/lib/models/import-export/import-export.mjs +15 -0
  77. package/esm2022/lib/models/index.mjs +38 -0
  78. package/esm2022/lib/models/journalisation-application/journalisation-application.mjs +10 -0
  79. package/esm2022/lib/models/journalisation-application/status-history.mjs +3 -0
  80. package/esm2022/lib/models/layout/layout-config.mjs +2 -0
  81. package/esm2022/lib/models/modal/bs-modal.mjs +6 -0
  82. package/esm2022/lib/models/presentation-settings/presentation-settings.mjs +8 -0
  83. package/esm2022/lib/models/progress-bar/progress-bar-create-request.mjs +2 -0
  84. package/esm2022/lib/models/progress-bar/progress-bar-response.mjs +8 -0
  85. package/esm2022/lib/models/progress-bar/progress-bar-update-request.mjs +3 -0
  86. package/esm2022/lib/models/remote-services-utility/subscription-result.mjs +17 -0
  87. package/esm2022/lib/models/reporting/json-data-connection.mjs +2 -0
  88. package/esm2022/lib/models/reporting/optional-endpoints.mjs +2 -0
  89. package/esm2022/lib/models/reporting/report-template-response.mjs +2 -0
  90. package/esm2022/lib/models/reporting/report-to-edit-template.mjs +2 -0
  91. package/esm2022/lib/models/reporting/report-to-print.mjs +2 -0
  92. package/esm2022/lib/models/reporting/report-to-template.mjs +2 -0
  93. package/esm2022/lib/models/settings/devise.mjs +3 -0
  94. package/esm2022/lib/models/settings/fichier.mjs +6 -0
  95. package/esm2022/lib/models/settings/type-fichier.mjs +3 -0
  96. package/esm2022/lib/models/tsi-card/tsi-card.mjs +3 -0
  97. package/esm2022/lib/models/user-identity/login-response.mjs +7 -0
  98. package/esm2022/lib/models/user-identity/tenant.mjs +3 -0
  99. package/esm2022/lib/models/user-identity/user-identity.mjs +3 -0
  100. package/esm2022/lib/models/workflow/workflow.mjs +14 -0
  101. package/esm2022/lib/package-initializer.mjs +7 -0
  102. package/esm2022/lib/pipes/cut-label.pipe.mjs +23 -0
  103. package/esm2022/lib/pipes/index.mjs +8 -0
  104. package/esm2022/lib/pipes/localize.pipe.mjs +51 -0
  105. package/esm2022/lib/pipes/modal-label.pipe.mjs +37 -0
  106. package/esm2022/lib/pipes/shorten.pipe.mjs +20 -0
  107. package/esm2022/lib/pipes/to-number.pipe.mjs +20 -0
  108. package/esm2022/lib/pipes/tsi-currency.pipe.mjs +29 -0
  109. package/esm2022/lib/pipes/tsi-decimal.pipe.mjs +21 -0
  110. package/esm2022/lib/providers/index.mjs +2 -0
  111. package/esm2022/lib/providers/shared-ui-tsi.provider.mjs +15 -0
  112. package/esm2022/lib/routes/admin.routes.mjs +5 -0
  113. package/esm2022/lib/routes/app.routes.mjs +7 -0
  114. package/esm2022/lib/routes/identity.routes.mjs +4 -0
  115. package/esm2022/lib/routes/index.mjs +5 -0
  116. package/esm2022/lib/routes/manage-reporting.routes.mjs +5 -0
  117. package/esm2022/lib/services/Component-Finder/tsi-component-finder.service.mjs +22 -0
  118. package/esm2022/lib/services/Import-Export/modele-import.service.mjs +59 -0
  119. package/esm2022/lib/services/Note/Note.service.mjs +35 -0
  120. package/esm2022/lib/services/UserIdentity/identity-platform-authentication.service.mjs +29 -0
  121. package/esm2022/lib/services/UserIdentity/user-identity.service.mjs +40 -0
  122. package/esm2022/lib/services/application/api-explorer.service.mjs +24 -0
  123. package/esm2022/lib/services/application/app.layout.service.mjs +97 -0
  124. package/esm2022/lib/services/application/parametres-application-parambase.service.mjs +20 -0
  125. package/esm2022/lib/services/authorization/authorization.service.mjs +124 -0
  126. package/esm2022/lib/services/authorization/identity-manager.service.mjs +97 -0
  127. package/esm2022/lib/services/base/crud-base.service.mjs +38 -0
  128. package/esm2022/lib/services/configuration/entity-configuration.service.mjs +49 -0
  129. package/esm2022/lib/services/currentUser/currentUser.service.mjs +49 -0
  130. package/esm2022/lib/services/date-helper.service.mjs +133 -0
  131. package/esm2022/lib/services/dialog-data.service.mjs +32 -0
  132. package/esm2022/lib/services/fichier/fichier-upload.service.mjs +44 -0
  133. package/esm2022/lib/services/fichier/fichier.service.mjs +20 -0
  134. package/esm2022/lib/services/formula.service.mjs +20 -0
  135. package/esm2022/lib/services/generator/html-template-generator.service.mjs +196 -0
  136. package/esm2022/lib/services/index.mjs +41 -0
  137. package/esm2022/lib/services/journalisation/journalisation-application.service.mjs +23 -0
  138. package/esm2022/lib/services/journalisation/status-history.service.mjs +23 -0
  139. package/esm2022/lib/services/layout/layout-helper.service.mjs +72 -0
  140. package/esm2022/lib/services/modal/tsi-bs-modal.service.mjs +37 -0
  141. package/esm2022/lib/services/modal/tsi-modal.service.mjs +21 -0
  142. package/esm2022/lib/services/module-code/module-code.service.mjs +31 -0
  143. package/esm2022/lib/services/module-main-parameter.service.mjs +31 -0
  144. package/esm2022/lib/services/notification/error-response-manager.service.mjs +57 -0
  145. package/esm2022/lib/services/notification/tsi-confirmation.service.mjs +37 -0
  146. package/esm2022/lib/services/notification/tsi-message.service.mjs +54 -0
  147. package/esm2022/lib/services/notification/tsi-notification.service.mjs +47 -0
  148. package/esm2022/lib/services/presentation-setting/presentation-designer-base.service.mjs +26 -0
  149. package/esm2022/lib/services/presentation-setting/presentation-designer.service.mjs +58 -0
  150. package/esm2022/lib/services/presentation-setting/presentation-setting.service.mjs +39 -0
  151. package/esm2022/lib/services/progress-bar/progress-bar-helper.service.mjs +39 -0
  152. package/esm2022/lib/services/progress-bar/progress-bar.service.mjs +30 -0
  153. package/esm2022/lib/services/record-info-popup.service.mjs +21 -0
  154. package/esm2022/lib/services/reporting/dashboard-module.service.mjs +24 -0
  155. package/esm2022/lib/services/reporting/reporting.service.mjs +111 -0
  156. package/esm2022/lib/services/settings/app-settings.service.mjs +47 -0
  157. package/esm2022/lib/services/settings/keyboard-shortcut.service.mjs +30 -0
  158. package/esm2022/lib/services/status/entityStatus.service.mjs +21 -0
  159. package/esm2022/lib/services/translation/translation.service.mjs +71 -0
  160. package/esm2022/lib/services/validation/entity-validations.service.mjs +21 -0
  161. package/esm2022/lib/services/validation/generic-validation-state.service.mjs +30 -0
  162. package/esm2022/lib/services/validation/input-registry.service.mjs +25 -0
  163. package/esm2022/lib/services/workflow/workflow-configuration.service.mjs +80 -0
  164. package/esm2022/lib/shared.module.mjs +643 -0
  165. package/esm2022/lib/tsi-base/components/app-base/app-base.component.mjs +101 -0
  166. package/esm2022/lib/tsi-base/components/tsi-base/tsi-base.component.mjs +25 -0
  167. package/esm2022/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +645 -0
  168. package/esm2022/lib/tsi-base/components/tsi-list-base/tsi-list-base.component.mjs +514 -0
  169. package/esm2022/lib/tsi-base/index.mjs +6 -0
  170. package/esm2022/lib/tsi-base/tsi-input-base/tsi-input-base.component.mjs +141 -0
  171. package/esm2022/lib/tsi-components/alert-import-message/alert-import-message.component.mjs +19 -0
  172. package/esm2022/lib/tsi-components/button-components/Tsi-Submit-Button/tsi-submit-button.component.mjs +40 -0
  173. package/esm2022/lib/tsi-components/button-components/tsi-button/tsi-button.component.mjs +75 -0
  174. package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +173 -0
  175. package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +201 -0
  176. package/esm2022/lib/tsi-components/index.mjs +80 -0
  177. package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +643 -0
  178. package/esm2022/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.mjs +120 -0
  179. package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +53 -0
  180. package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +62 -0
  181. package/esm2022/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.mjs +116 -0
  182. package/esm2022/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.mjs +51 -0
  183. package/esm2022/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.mjs +195 -0
  184. package/esm2022/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.mjs +54 -0
  185. package/esm2022/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.mjs +55 -0
  186. package/esm2022/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.mjs +43 -0
  187. package/esm2022/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.mjs +56 -0
  188. package/esm2022/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.mjs +649 -0
  189. package/esm2022/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.mjs +44 -0
  190. package/esm2022/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.mjs +50 -0
  191. package/esm2022/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.mjs +65 -0
  192. package/esm2022/lib/tsi-components/logout-popup/logout-popup.component.mjs +12 -0
  193. package/esm2022/lib/tsi-components/manage-import-export/manage-import-export.component.mjs +435 -0
  194. package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs +148 -0
  195. package/esm2022/lib/tsi-components/manage-reporting/manage-reporting.component.mjs +1075 -0
  196. package/esm2022/lib/tsi-components/message-components/tsi-error-message/tsi-error-message.component.mjs +31 -0
  197. package/esm2022/lib/tsi-components/message-components/tsi-info-message/tsi-info-message.component.mjs +24 -0
  198. package/esm2022/lib/tsi-components/message-components/tsi-redirection-message/tsi-redirection-message.component.mjs +19 -0
  199. package/esm2022/lib/tsi-components/message-components/tsi-success-message/tsi-success-message.component.mjs +22 -0
  200. package/esm2022/lib/tsi-components/modal-component/modal.component.mjs +138 -0
  201. package/esm2022/lib/tsi-components/modal-loader/modal-loader.component.mjs +58 -0
  202. package/esm2022/lib/tsi-components/output-components/display-nested-prop/display-nested-prop.component.mjs +32 -0
  203. package/esm2022/lib/tsi-components/output-components/tsi-checkbox-display/tsi-checkbox-display.component.mjs +18 -0
  204. package/esm2022/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.mjs +17 -0
  205. package/esm2022/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.mjs +57 -0
  206. package/esm2022/lib/tsi-components/output-components/tsi-date-display/tsi-date-display.component.mjs +27 -0
  207. package/esm2022/lib/tsi-components/output-components/tsi-decimal-display/tsi-decimal-display.component.mjs +25 -0
  208. package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +139 -0
  209. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +1509 -0
  210. package/esm2022/lib/tsi-components/output-components/tsi-image-display/tsi-image-display.component.mjs +144 -0
  211. package/esm2022/lib/tsi-components/output-components/tsi-integer-display/tsi-integer-display.component.mjs +13 -0
  212. package/esm2022/lib/tsi-components/output-components/tsi-label/tsi-label.component.mjs +24 -0
  213. package/esm2022/lib/tsi-components/output-components/tsi-label-legend/tsi-label-legend.component.mjs +18 -0
  214. package/esm2022/lib/tsi-components/output-components/tsi-legend/tsi-legend.component.mjs +20 -0
  215. package/esm2022/lib/tsi-components/output-components/tsi-paragraph/tsi-paragraph.component.mjs +17 -0
  216. package/esm2022/lib/tsi-components/output-components/tsi-rate-display/tsi-rate-display.component.mjs +30 -0
  217. package/esm2022/lib/tsi-components/output-components/tsi-time-display/tsi-time-display.component.mjs +17 -0
  218. package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs +427 -0
  219. package/esm2022/lib/tsi-components/reporting/reporting.component.mjs +667 -0
  220. package/esm2022/lib/tsi-components/spinner/spinner.component.mjs +15 -0
  221. package/esm2022/lib/tsi-components/tsi-bubble-info/tsi-bubble-info.component.mjs +21 -0
  222. package/esm2022/lib/tsi-components/tsi-calender/context-menu/context-menu.component.mjs +46 -0
  223. package/esm2022/lib/tsi-components/tsi-calender/tsi-calender.component.mjs +297 -0
  224. package/esm2022/lib/tsi-components/tsi-card/tsi-card.component.mjs +64 -0
  225. package/esm2022/lib/tsi-components/tsi-card-list/tsi-card-list.component.mjs +112 -0
  226. package/esm2022/lib/tsi-components/tsi-change-password/tsi-change-password.component.mjs +39 -0
  227. package/esm2022/lib/tsi-components/tsi-code-generator/tsi-code-generator.component.mjs +83 -0
  228. package/esm2022/lib/tsi-components/tsi-divider/tsi-divider.component.mjs +18 -0
  229. package/esm2022/lib/tsi-components/tsi-form/tsi-form.component.mjs +305 -0
  230. package/esm2022/lib/tsi-components/tsi-form-modal-footer/tsi-form-modal-footer.component.mjs +15 -0
  231. package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +883 -0
  232. package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +149 -0
  233. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +231 -0
  234. package/esm2022/lib/tsi-components/tsi-log-event-history/tsi-log-event-history.component.mjs +119 -0
  235. package/esm2022/lib/tsi-components/tsi-modal/tsi-modal.component.mjs +25 -0
  236. package/esm2022/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.mjs +119 -0
  237. package/esm2022/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.mjs +54 -0
  238. package/esm2022/lib/tsi-components/tsi-notes-avertir/tsi-notes-avertir.component.mjs +27 -0
  239. package/esm2022/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.mjs +123 -0
  240. package/esm2022/lib/tsi-components/tsi-notes-grid/tsi-notes-grid.component.mjs +41 -0
  241. package/esm2022/lib/tsi-components/tsi-popup-text-viewer/tsi-popup-text-viewer.component.mjs +187 -0
  242. package/esm2022/lib/tsi-components/tsi-progress-bar/tsi-progress-bar.component.mjs +170 -0
  243. package/esm2022/lib/tsi-components/tsi-search-box/tsi-search-box.component.mjs +142 -0
  244. package/esm2022/lib/tsi-components/tsi-send-mail/tsi-send-mail.component.mjs +37 -0
  245. package/esm2022/lib/tsi-components/tsi-tab-panel/tsi-tab-panel.component.mjs +52 -0
  246. package/esm2022/lib/tsi-components/tsi-tab-view/tsi-tab-view.component.mjs +46 -0
  247. package/esm2022/lib/tsi-components/tsi-tenants/tsi-tenants.component.mjs +122 -0
  248. package/esm2022/lib/tsi-components/tsi-tooltip/tsi-tooltip.component.mjs +21 -0
  249. package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +186 -0
  250. package/esm2022/lib/tsi-components/tsi-upload-grid/tsi-upload-grid.component.mjs +54 -0
  251. package/esm2022/lib/tsi-directives/auto-select.directive.mjs +33 -0
  252. package/esm2022/lib/tsi-directives/busy.directive.mjs +32 -0
  253. package/esm2022/lib/tsi-directives/dynamic-component-loader/ad.directive.mjs +16 -0
  254. package/esm2022/lib/tsi-directives/index.mjs +8 -0
  255. package/esm2022/lib/tsi-directives/module-main-parameter.directive.mjs +16 -0
  256. package/esm2022/lib/tsi-directives/presentation-designer-base.directive.mjs +238 -0
  257. package/esm2022/lib/tsi-directives/presentation-designer.directive.mjs +205 -0
  258. package/esm2022/lib/tsi-directives/validation.directive.mjs +85 -0
  259. package/esm2022/lib/tsi-helpers/compoent-reference.helper.mjs +7 -0
  260. package/esm2022/lib/tsi-helpers/date-helper.mjs +21 -0
  261. package/esm2022/lib/tsi-helpers/export-excel.helper.mjs +40 -0
  262. package/esm2022/lib/tsi-helpers/filter-helper.mjs +126 -0
  263. package/esm2022/lib/tsi-helpers/grid-col-style.helper.mjs +7 -0
  264. package/esm2022/lib/tsi-helpers/guid.helper.mjs +19 -0
  265. package/esm2022/lib/tsi-helpers/helpers.mjs +9 -0
  266. package/esm2022/lib/tsi-helpers/index.mjs +13 -0
  267. package/esm2022/lib/tsi-helpers/mapping-helper.mjs +10 -0
  268. package/esm2022/lib/tsi-helpers/object.helper.mjs +6 -0
  269. package/esm2022/lib/tsi-helpers/primeng-translate-config.mjs +55 -0
  270. package/esm2022/lib/tsi-helpers/storage-manager.mjs +33 -0
  271. package/esm2022/lib/tsi-helpers/type-registry.helper.mjs +49 -0
  272. package/esm2022/lib/types/enum-description.type.mjs +2 -0
  273. package/esm2022/lib/types/index.mjs +3 -0
  274. package/esm2022/lib/types/time-only.mjs +42 -0
  275. package/esm2022/public-api.mjs +21 -0
  276. package/esm2022/tsi-developpement-tsi-shared-ui.mjs +5 -0
  277. package/esm2022/tsi-tsi-shared-ui.mjs +5 -0
  278. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +17486 -0
  279. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -0
  280. package/fesm2022/tsi-tsi-shared-ui.mjs +17486 -0
  281. package/fesm2022/tsi-tsi-shared-ui.mjs.map +1 -0
  282. package/index.d.ts +5 -0
  283. package/lib/consts/app-providers.d.ts +4 -0
  284. package/lib/consts/html-template.const.d.ts +12 -0
  285. package/lib/consts/index.d.ts +7 -0
  286. package/lib/consts/localization-key.d.ts +11 -0
  287. package/lib/consts/locals.const.d.ts +7 -0
  288. package/lib/consts/queryParamNames.const.d.ts +10 -0
  289. package/lib/consts/themes.d.ts +4 -0
  290. package/lib/consts/tsi-consts.d.ts +40 -0
  291. package/lib/end-points/authorization-endpoints.d.ts +31 -0
  292. package/lib/end-points/baseuri.d.ts +10 -0
  293. package/lib/end-points/endpoints.d.ts +205 -0
  294. package/lib/end-points/import-export-endpoint.d.ts +33 -0
  295. package/lib/end-points/index.d.ts +6 -0
  296. package/lib/end-points/presentation-settings-endpoints.d.ts +11 -0
  297. package/lib/end-points/reporting-endpoints.d.ts +53 -0
  298. package/lib/end-points/shared-endpoint.d.ts +9 -0
  299. package/lib/end-points/user-identity-endpoints.d.ts +59 -0
  300. package/lib/enums/Language.d.ts +9 -0
  301. package/lib/enums/auto-complete.d.ts +4 -0
  302. package/lib/enums/button-type.enum.d.ts +4 -0
  303. package/lib/enums/claim-types.d.ts +13 -0
  304. package/lib/enums/code-format.d.ts +4 -0
  305. package/lib/enums/component-use-modes-enum.d.ts +17 -0
  306. package/lib/enums/css-units.d.ts +8 -0
  307. package/lib/enums/decimal-format.d.ts +6 -0
  308. package/lib/enums/display-types.d.ts +17 -0
  309. package/lib/enums/filter-operator-type.d.ts +18 -0
  310. package/lib/enums/form-validation-error.d.ts +11 -0
  311. package/lib/enums/grid-selection-mode.d.ts +5 -0
  312. package/lib/enums/grid-sort-mode.d.ts +5 -0
  313. package/lib/enums/http-method-types.d.ts +4 -0
  314. package/lib/enums/index.d.ts +24 -0
  315. package/lib/enums/input-types.d.ts +18 -0
  316. package/lib/enums/layout-orientation.d.ts +4 -0
  317. package/lib/enums/logout-reason-enum.d.ts +6 -0
  318. package/lib/enums/modal-size-enum.d.ts +10 -0
  319. package/lib/enums/report-type.d.ts +7 -0
  320. package/lib/enums/status.d.ts +7 -0
  321. package/lib/enums/text-box-type.d.ts +5 -0
  322. package/lib/enums/tooltipPosition.enum.d.ts +6 -0
  323. package/lib/enums/tsi-component-enum.d.ts +37 -0
  324. package/lib/enums/type-import.d.ts +4 -0
  325. package/lib/functions/array.functions.d.ts +1 -0
  326. package/lib/functions/index.d.ts +1 -0
  327. package/lib/functions/modal-open.function.d.ts +9 -0
  328. package/lib/guards/admin.guard.d.ts +14 -0
  329. package/lib/guards/auth.guard.d.ts +12 -0
  330. package/lib/guards/index.d.ts +3 -0
  331. package/lib/guards/permission.guard.d.ts +2 -0
  332. package/lib/interfaces/configuration/configuration.d.ts +10 -0
  333. package/lib/interfaces/generic-form/generic-form.d.ts +45 -0
  334. package/lib/interfaces/generic-types/dictionary.d.ts +3 -0
  335. package/lib/interfaces/grid/grid-configuration.d.ts +116 -0
  336. package/lib/interfaces/index.d.ts +11 -0
  337. package/lib/interfaces/modal/dynamic.component.d.ts +18 -0
  338. package/lib/interfaces/modal/modal-size.d.ts +4 -0
  339. package/lib/interfaces/pagination/pagination-base.d.ts +46 -0
  340. package/lib/interfaces/select-list/combo-status-model.d.ts +8 -0
  341. package/lib/interfaces/settings/app-settings.d.ts +4 -0
  342. package/lib/interfaces/styles/css-size-property.d.ts +10 -0
  343. package/lib/interfaces/translation/translation.d.ts +10 -0
  344. package/lib/models/Notes/Note.d.ts +25 -0
  345. package/lib/models/application/configuration/endpoint-infos.d.ts +6 -0
  346. package/lib/models/application/configuration/entity-delete-behavior.d.ts +6 -0
  347. package/lib/models/authorization/authorization-token-mapper.d.ts +4 -0
  348. package/lib/models/authorization/authorization-token.d.ts +16 -0
  349. package/lib/models/common/component-descriminator.d.ts +4 -0
  350. package/lib/models/common/entity-properties.d.ts +5 -0
  351. package/lib/models/common/entity-validations.d.ts +7 -0
  352. package/lib/models/common/event-schema.d.ts +6 -0
  353. package/lib/models/common/key-value-pair.d.ts +4 -0
  354. package/lib/models/entity-info/entity-info.d.ts +37 -0
  355. package/lib/models/filter/filter-by-existing-values.d.ts +6 -0
  356. package/lib/models/filter/paged-result-request-base.d.ts +16 -0
  357. package/lib/models/filter/search-field.d.ts +35 -0
  358. package/lib/models/import-export/import-export.d.ts +28 -0
  359. package/lib/models/index.d.ts +37 -0
  360. package/lib/models/journalisation-application/journalisation-application.d.ts +39 -0
  361. package/lib/models/journalisation-application/status-history.d.ts +12 -0
  362. package/lib/models/layout/layout-config.d.ts +3 -0
  363. package/lib/models/modal/bs-modal.d.ts +5 -0
  364. package/lib/models/presentation-settings/presentation-settings.d.ts +14 -0
  365. package/lib/models/progress-bar/progress-bar-create-request.d.ts +8 -0
  366. package/lib/models/progress-bar/progress-bar-response.d.ts +10 -0
  367. package/lib/models/progress-bar/progress-bar-update-request.d.ts +9 -0
  368. package/lib/models/remote-services-utility/subscription-result.d.ts +15 -0
  369. package/lib/models/reporting/json-data-connection.d.ts +6 -0
  370. package/lib/models/reporting/optional-endpoints.d.ts +8 -0
  371. package/lib/models/reporting/report-template-response.d.ts +13 -0
  372. package/lib/models/reporting/report-to-edit-template.d.ts +29 -0
  373. package/lib/models/reporting/report-to-print.d.ts +18 -0
  374. package/lib/models/reporting/report-to-template.d.ts +19 -0
  375. package/lib/models/settings/devise.d.ts +9 -0
  376. package/lib/models/settings/fichier.d.ts +14 -0
  377. package/lib/models/settings/type-fichier.d.ts +4 -0
  378. package/lib/models/tsi-card/tsi-card.d.ts +9 -0
  379. package/lib/models/user-identity/login-response.d.ts +8 -0
  380. package/lib/models/user-identity/tenant.d.ts +5 -0
  381. package/lib/models/user-identity/user-identity.d.ts +5 -0
  382. package/lib/models/workflow/workflow.d.ts +36 -0
  383. package/lib/package-initializer.d.ts +1 -0
  384. package/lib/pipes/cut-label.pipe.d.ts +7 -0
  385. package/lib/pipes/index.d.ts +7 -0
  386. package/lib/pipes/localize.pipe.d.ts +11 -0
  387. package/lib/pipes/modal-label.pipe.d.ts +10 -0
  388. package/lib/pipes/shorten.pipe.d.ts +7 -0
  389. package/lib/pipes/to-number.pipe.d.ts +7 -0
  390. package/lib/pipes/tsi-currency.pipe.d.ts +10 -0
  391. package/lib/pipes/tsi-decimal.pipe.d.ts +7 -0
  392. package/lib/providers/index.d.ts +1 -0
  393. package/lib/providers/shared-ui-tsi.provider.d.ts +8 -0
  394. package/lib/routes/admin.routes.d.ts +4 -0
  395. package/lib/routes/app.routes.d.ts +6 -0
  396. package/lib/routes/identity.routes.d.ts +3 -0
  397. package/lib/routes/index.d.ts +4 -0
  398. package/lib/routes/manage-reporting.routes.d.ts +4 -0
  399. package/lib/services/Component-Finder/tsi-component-finder.service.d.ts +10 -0
  400. package/lib/services/Import-Export/modele-import.service.d.ts +21 -0
  401. package/lib/services/Note/Note.service.d.ts +15 -0
  402. package/lib/services/UserIdentity/identity-platform-authentication.service.d.ts +13 -0
  403. package/lib/services/UserIdentity/user-identity.service.d.ts +15 -0
  404. package/lib/services/application/api-explorer.service.d.ts +13 -0
  405. package/lib/services/application/app.layout.service.d.ts +47 -0
  406. package/lib/services/application/parametres-application-parambase.service.d.ts +10 -0
  407. package/lib/services/authorization/authorization.service.d.ts +46 -0
  408. package/lib/services/authorization/identity-manager.service.d.ts +23 -0
  409. package/lib/services/base/crud-base.service.d.ts +20 -0
  410. package/lib/services/configuration/entity-configuration.service.d.ts +22 -0
  411. package/lib/services/currentUser/currentUser.service.d.ts +26 -0
  412. package/lib/services/date-helper.service.d.ts +32 -0
  413. package/lib/services/dialog-data.service.d.ts +12 -0
  414. package/lib/services/fichier/fichier-upload.service.d.ts +15 -0
  415. package/lib/services/fichier/fichier.service.d.ts +10 -0
  416. package/lib/services/formula.service.d.ts +10 -0
  417. package/lib/services/generator/html-template-generator.service.d.ts +28 -0
  418. package/lib/services/index.d.ts +40 -0
  419. package/lib/services/journalisation/journalisation-application.service.d.ts +12 -0
  420. package/lib/services/journalisation/status-history.service.d.ts +12 -0
  421. package/lib/services/layout/layout-helper.service.d.ts +25 -0
  422. package/lib/services/modal/tsi-bs-modal.service.d.ts +16 -0
  423. package/lib/services/modal/tsi-modal.service.d.ts +9 -0
  424. package/lib/services/module-code/module-code.service.d.ts +18 -0
  425. package/lib/services/module-main-parameter.service.d.ts +12 -0
  426. package/lib/services/notification/error-response-manager.service.d.ts +13 -0
  427. package/lib/services/notification/tsi-confirmation.service.d.ts +11 -0
  428. package/lib/services/notification/tsi-message.service.d.ts +13 -0
  429. package/lib/services/notification/tsi-notification.service.d.ts +18 -0
  430. package/lib/services/presentation-setting/presentation-designer-base.service.d.ts +14 -0
  431. package/lib/services/presentation-setting/presentation-designer.service.d.ts +19 -0
  432. package/lib/services/presentation-setting/presentation-setting.service.d.ts +16 -0
  433. package/lib/services/progress-bar/progress-bar-helper.service.d.ts +19 -0
  434. package/lib/services/progress-bar/progress-bar.service.d.ts +16 -0
  435. package/lib/services/record-info-popup.service.d.ts +10 -0
  436. package/lib/services/reporting/dashboard-module.service.d.ts +11 -0
  437. package/lib/services/reporting/reporting.service.d.ts +32 -0
  438. package/lib/services/settings/app-settings.service.d.ts +13 -0
  439. package/lib/services/settings/keyboard-shortcut.service.d.ts +9 -0
  440. package/lib/services/status/entityStatus.service.d.ts +11 -0
  441. package/lib/services/translation/translation.service.d.ts +20 -0
  442. package/lib/services/validation/entity-validations.service.d.ts +10 -0
  443. package/lib/services/validation/generic-validation-state.service.d.ts +15 -0
  444. package/lib/services/validation/input-registry.service.d.ts +11 -0
  445. package/lib/services/workflow/workflow-configuration.service.d.ts +28 -0
  446. package/lib/shared.module.d.ts +141 -0
  447. package/lib/tsi-base/components/app-base/app-base.component.d.ts +28 -0
  448. package/lib/tsi-base/components/tsi-base/tsi-base.component.d.ts +11 -0
  449. package/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.d.ts +118 -0
  450. package/lib/tsi-base/components/tsi-list-base/tsi-list-base.component.d.ts +85 -0
  451. package/lib/tsi-base/index.d.ts +5 -0
  452. package/lib/tsi-base/tsi-input-base/tsi-input-base.component.d.ts +34 -0
  453. package/lib/tsi-components/alert-import-message/alert-import-message.component.d.ts +10 -0
  454. package/lib/tsi-components/button-components/Tsi-Submit-Button/tsi-submit-button.component.d.ts +16 -0
  455. package/lib/tsi-components/button-components/tsi-button/tsi-button.component.d.ts +26 -0
  456. package/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.d.ts +31 -0
  457. package/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.d.ts +52 -0
  458. package/lib/tsi-components/index.d.ts +79 -0
  459. package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +127 -0
  460. package/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.d.ts +30 -0
  461. package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +18 -0
  462. package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +21 -0
  463. package/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.d.ts +38 -0
  464. package/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.d.ts +14 -0
  465. package/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.d.ts +45 -0
  466. package/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.d.ts +17 -0
  467. package/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.d.ts +19 -0
  468. package/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.d.ts +16 -0
  469. package/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.d.ts +16 -0
  470. package/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.d.ts +92 -0
  471. package/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.d.ts +17 -0
  472. package/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.d.ts +21 -0
  473. package/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.d.ts +23 -0
  474. package/lib/tsi-components/logout-popup/logout-popup.component.d.ts +5 -0
  475. package/lib/tsi-components/manage-import-export/manage-import-export.component.d.ts +64 -0
  476. package/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.d.ts +151 -0
  477. package/lib/tsi-components/manage-reporting/manage-reporting.component.d.ts +109 -0
  478. package/lib/tsi-components/message-components/tsi-error-message/tsi-error-message.component.d.ts +15 -0
  479. package/lib/tsi-components/message-components/tsi-info-message/tsi-info-message.component.d.ts +13 -0
  480. package/lib/tsi-components/message-components/tsi-redirection-message/tsi-redirection-message.component.d.ts +9 -0
  481. package/lib/tsi-components/message-components/tsi-success-message/tsi-success-message.component.d.ts +13 -0
  482. package/lib/tsi-components/modal-component/modal.component.d.ts +25 -0
  483. package/lib/tsi-components/modal-loader/modal-loader.component.d.ts +27 -0
  484. package/lib/tsi-components/output-components/display-nested-prop/display-nested-prop.component.d.ts +14 -0
  485. package/lib/tsi-components/output-components/tsi-checkbox-display/tsi-checkbox-display.component.d.ts +6 -0
  486. package/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.d.ts +7 -0
  487. package/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.d.ts +19 -0
  488. package/lib/tsi-components/output-components/tsi-date-display/tsi-date-display.component.d.ts +10 -0
  489. package/lib/tsi-components/output-components/tsi-decimal-display/tsi-decimal-display.component.d.ts +9 -0
  490. package/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.d.ts +41 -0
  491. package/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.d.ts +231 -0
  492. package/lib/tsi-components/output-components/tsi-image-display/tsi-image-display.component.d.ts +46 -0
  493. package/lib/tsi-components/output-components/tsi-integer-display/tsi-integer-display.component.d.ts +6 -0
  494. package/lib/tsi-components/output-components/tsi-label/tsi-label.component.d.ts +8 -0
  495. package/lib/tsi-components/output-components/tsi-label-legend/tsi-label-legend.component.d.ts +6 -0
  496. package/lib/tsi-components/output-components/tsi-legend/tsi-legend.component.d.ts +9 -0
  497. package/lib/tsi-components/output-components/tsi-paragraph/tsi-paragraph.component.d.ts +6 -0
  498. package/lib/tsi-components/output-components/tsi-rate-display/tsi-rate-display.component.d.ts +10 -0
  499. package/lib/tsi-components/output-components/tsi-time-display/tsi-time-display.component.d.ts +7 -0
  500. package/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.d.ts +97 -0
  501. package/lib/tsi-components/reporting/reporting.component.d.ts +103 -0
  502. package/lib/tsi-components/spinner/spinner.component.d.ts +8 -0
  503. package/lib/tsi-components/tsi-bubble-info/tsi-bubble-info.component.d.ts +9 -0
  504. package/lib/tsi-components/tsi-calender/context-menu/context-menu.component.d.ts +25 -0
  505. package/lib/tsi-components/tsi-calender/tsi-calender.component.d.ts +50 -0
  506. package/lib/tsi-components/tsi-card/tsi-card.component.d.ts +25 -0
  507. package/lib/tsi-components/tsi-card-list/tsi-card-list.component.d.ts +35 -0
  508. package/lib/tsi-components/tsi-change-password/tsi-change-password.component.d.ts +21 -0
  509. package/lib/tsi-components/tsi-code-generator/tsi-code-generator.component.d.ts +23 -0
  510. package/lib/tsi-components/tsi-divider/tsi-divider.component.d.ts +6 -0
  511. package/lib/tsi-components/tsi-form/tsi-form.component.d.ts +91 -0
  512. package/lib/tsi-components/tsi-form-modal-footer/tsi-form-modal-footer.component.d.ts +8 -0
  513. package/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.d.ts +156 -0
  514. package/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.d.ts +28 -0
  515. package/lib/tsi-components/tsi-kanban/tsi-kanban.component.d.ts +68 -0
  516. package/lib/tsi-components/tsi-log-event-history/tsi-log-event-history.component.d.ts +35 -0
  517. package/lib/tsi-components/tsi-modal/tsi-modal.component.d.ts +10 -0
  518. package/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.d.ts +38 -0
  519. package/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.d.ts +19 -0
  520. package/lib/tsi-components/tsi-notes-avertir/tsi-notes-avertir.component.d.ts +13 -0
  521. package/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.d.ts +21 -0
  522. package/lib/tsi-components/tsi-notes-grid/tsi-notes-grid.component.d.ts +12 -0
  523. package/lib/tsi-components/tsi-popup-text-viewer/tsi-popup-text-viewer.component.d.ts +41 -0
  524. package/lib/tsi-components/tsi-progress-bar/tsi-progress-bar.component.d.ts +38 -0
  525. package/lib/tsi-components/tsi-search-box/tsi-search-box.component.d.ts +44 -0
  526. package/lib/tsi-components/tsi-send-mail/tsi-send-mail.component.d.ts +21 -0
  527. package/lib/tsi-components/tsi-tab-panel/tsi-tab-panel.component.d.ts +18 -0
  528. package/lib/tsi-components/tsi-tab-view/tsi-tab-view.component.d.ts +17 -0
  529. package/lib/tsi-components/tsi-tenants/tsi-tenants.component.d.ts +39 -0
  530. package/lib/tsi-components/tsi-tooltip/tsi-tooltip.component.d.ts +9 -0
  531. package/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.d.ts +35 -0
  532. package/lib/tsi-components/tsi-upload-grid/tsi-upload-grid.component.d.ts +13 -0
  533. package/lib/tsi-directives/auto-select.directive.d.ts +9 -0
  534. package/lib/tsi-directives/busy.directive.d.ts +11 -0
  535. package/lib/tsi-directives/dynamic-component-loader/ad.directive.d.ts +8 -0
  536. package/lib/tsi-directives/index.d.ts +7 -0
  537. package/lib/tsi-directives/module-main-parameter.directive.d.ts +8 -0
  538. package/lib/tsi-directives/presentation-designer-base.directive.d.ts +41 -0
  539. package/lib/tsi-directives/presentation-designer.directive.d.ts +37 -0
  540. package/lib/tsi-directives/validation.directive.d.ts +18 -0
  541. package/lib/tsi-helpers/compoent-reference.helper.d.ts +5 -0
  542. package/lib/tsi-helpers/date-helper.d.ts +6 -0
  543. package/lib/tsi-helpers/export-excel.helper.d.ts +5 -0
  544. package/lib/tsi-helpers/filter-helper.d.ts +12 -0
  545. package/lib/tsi-helpers/grid-col-style.helper.d.ts +5 -0
  546. package/lib/tsi-helpers/guid.helper.d.ts +6 -0
  547. package/lib/tsi-helpers/helpers.d.ts +4 -0
  548. package/lib/tsi-helpers/index.d.ts +12 -0
  549. package/lib/tsi-helpers/mapping-helper.d.ts +5 -0
  550. package/lib/tsi-helpers/object.helper.d.ts +3 -0
  551. package/lib/tsi-helpers/primeng-translate-config.d.ts +54 -0
  552. package/lib/tsi-helpers/storage-manager.d.ts +8 -0
  553. package/lib/tsi-helpers/type-registry.helper.d.ts +34 -0
  554. package/lib/types/enum-description.type.d.ts +3 -0
  555. package/lib/types/index.d.ts +2 -0
  556. package/lib/types/time-only.d.ts +17 -0
  557. package/package.json +24 -0
  558. package/public-api.d.ts +17 -0
@@ -0,0 +1,195 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../pipes/localize.pipe";
5
+ import * as i2 from "../../../services/notification/tsi-notification.service";
6
+ import * as i3 from "@angular/platform-browser";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "primeng/button";
9
+ import * as i6 from "primeng/api";
10
+ import * as i7 from "primeng/fileupload";
11
+ export class TsiFileManagerComponent extends TsiInputBase {
12
+ /* ngAfterViewInit() {
13
+ if (this.showSelectButton && this.fileUploadInput) {
14
+ this.fileUploadInput.nativeElement.style.display = 'none';
15
+ }
16
+ } */
17
+ constructor(localize, notificationService, domSanitizer) {
18
+ super();
19
+ this.localize = localize;
20
+ this.notificationService = notificationService;
21
+ this.domSanitizer = domSanitizer;
22
+ this.name = '';
23
+ this.accept = '';
24
+ this.maxFileSize = 10485760;
25
+ this.multiple = false;
26
+ this.exploreOnDownload = false;
27
+ this.showUploadButton = false;
28
+ this.showCancelButton = false;
29
+ this.showDownloadButton = false;
30
+ this.chooseIcon = '';
31
+ this.chooseLabel = '';
32
+ this.showSelectButton = true;
33
+ this.showFileUpload = true;
34
+ this.onSelectFileManager = new EventEmitter();
35
+ this.onClear = new EventEmitter();
36
+ this.onRemove = new EventEmitter();
37
+ this.inputFieldChange = new EventEmitter();
38
+ this.fileNameChange = new EventEmitter();
39
+ this.imageUrl = null;
40
+ this.fileSizeError = '';
41
+ }
42
+ getFileExtension(fileName) {
43
+ return fileName?.split('.')?.pop();
44
+ }
45
+ onFileSelect(event) {
46
+ const files = event.files;
47
+ // this.convertFileToBase64(files[0]).then((base64String: string) => {
48
+ // this.inputField = base64String;
49
+ // });
50
+ const reader = new FileReader();
51
+ reader.onload = () => {
52
+ this.inputField = reader.result.split(',')[1];
53
+ };
54
+ reader.onerror = (error) => {
55
+ };
56
+ reader.readAsDataURL(files[0]);
57
+ this.fileName = files[0].name;
58
+ const fileName = this.fileName;
59
+ if (files[0].size > this.maxFileSize) {
60
+ this.notificationService.warn(`
61
+ ${this.localize.transform("tsi_file_upload_auto_validation_max_length_detail_1")}
62
+ ${(files[0].size / (1024 * 1024)).toFixed(2)}
63
+ ${this.localize.transform("tsi_file_upload_auto_validation_max_length_detail_2")}
64
+ ${(this.maxFileSize / (1024 * 1024)).toFixed(2)} Mo`, this.localize.transform("tsi_file_upload_auto_validation_max_length_title"));
65
+ this.inputField = undefined;
66
+ return;
67
+ }
68
+ setTimeout(() => {
69
+ //this.fileName = files.map((file: any) => file.name).join(', ');
70
+ this.onSelectFileManager.emit({ event, files, inputField: this.inputField, fileName: fileName });
71
+ this.inputFieldChange.emit(this.inputField);
72
+ this.fileNameChange.emit(this.fileName);
73
+ }, 200);
74
+ }
75
+ onFileClear() {
76
+ this.inputField = null;
77
+ this.fileName = '';
78
+ this.imageUrl = null;
79
+ this.inputFieldChange.emit(this.inputField);
80
+ this.fileNameChange.emit(this.fileName);
81
+ this.onClear.emit();
82
+ }
83
+ onFileRemove(event) {
84
+ const file = event.file;
85
+ //this.inputField = this.inputField.filter((f: any) => f !== file);
86
+ //this.fileName = this.inputField.map((f: any) => f.name).join(', ');
87
+ this.inputField = null;
88
+ this.fileName = '';
89
+ this.imageUrl = null;
90
+ this.onRemove.emit(file);
91
+ this.inputFieldChange.emit(this.inputField);
92
+ this.fileNameChange.emit(this.fileName);
93
+ }
94
+ convertFileToBase64(file) {
95
+ return new Promise((resolve, reject) => {
96
+ const reader = new FileReader();
97
+ reader.readAsDataURL(file);
98
+ reader.onload = () => {
99
+ const base64String = reader.result; // Conversion explicite en string
100
+ resolve(base64String);
101
+ };
102
+ reader.onerror = error => reject(error);
103
+ });
104
+ }
105
+ downloadFile() {
106
+ if (!this.inputField) {
107
+ return;
108
+ }
109
+ const byteCharacters = atob(this.inputField);
110
+ const byteNumbers = new Array(byteCharacters.length);
111
+ for (let i = 0; i < byteCharacters.length; i++) {
112
+ byteNumbers[i] = byteCharacters.charCodeAt(i);
113
+ }
114
+ const byteArray = new Uint8Array(byteNumbers);
115
+ const blob = new Blob([byteArray], { type: 'application/octet-stream' });
116
+ const url = window.URL.createObjectURL(blob);
117
+ const a = document.createElement('a');
118
+ document.body.appendChild(a);
119
+ a.style.display = 'none';
120
+ a.href = url;
121
+ a.download = this.fileName;
122
+ a.click();
123
+ //window.URL.revokeObjectURL(url);
124
+ }
125
+ arrayBufferToBase64(buffer) {
126
+ const bytes = new Uint8Array(buffer);
127
+ let binary = '';
128
+ for (let i = 0; i < bytes.byteLength; i++) {
129
+ binary += String.fromCharCode(bytes[i]);
130
+ }
131
+ return 'data:application/octet-stream;base64,' + btoa(binary);
132
+ }
133
+ get fileUrl() {
134
+ if (!this.inputField) {
135
+ return '';
136
+ }
137
+ const byteCharacters = atob(this.inputField);
138
+ const byteNumbers = new Array(byteCharacters.length);
139
+ for (let i = 0; i < byteCharacters.length; i++) {
140
+ byteNumbers[i] = byteCharacters.charCodeAt(i);
141
+ }
142
+ const byteArray = new Uint8Array(byteNumbers);
143
+ const blob = new Blob([byteArray], { type: 'application/octet-stream' });
144
+ const url = window.URL.createObjectURL(blob);
145
+ return this.domSanitizer.bypassSecurityTrustUrl(url);
146
+ }
147
+ fileExtensionImage() {
148
+ return this.getFileExtension(this.fileName) == 'jpg';
149
+ }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFileManagerComponent, deps: [{ token: i1.LocalizePipe }, { token: i2.TsiNotificationService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
151
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFileManagerComponent, selector: "Tsi-File-Manager", inputs: { fileName: "fileName", name: "name", id: "id", accept: "accept", maxFileSize: "maxFileSize", multiple: "multiple", exploreOnDownload: "exploreOnDownload", showUploadButton: "showUploadButton", showCancelButton: "showCancelButton", showDownloadButton: "showDownloadButton", chooseIcon: "chooseIcon", chooseLabel: "chooseLabel", showSelectButton: "showSelectButton", showFileUpload: "showFileUpload" }, outputs: { onSelectFileManager: "onSelectFileManager", onClear: "onClear", onRemove: "onRemove", inputFieldChange: "inputFieldChange", fileNameChange: "fileNameChange" }, usesInheritance: true, ngImport: i0, template: "<!-- <p-fileUpload class=\"file-manager\" #fileUpload [name]=\"name\" [id]=\"id\" [accept]=\"accept\" [maxFileSize]=\"maxFileSize\"\r\n [multiple]=\"multiple\" [showUploadButton]=\"showUploadButton\" [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\" chooseLabel=\" \" (onSelect)=\"onFileSelect($event)\" (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\" class=\"custom-file-upload\" icon=\"pi pi-upload\">\r\n</p-fileUpload>\r\n\r\n<BR>\r\n<div *ngIf=\"showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n</div> -->\r\n<div class=\"{{validationStatusCssClass}}\">\r\n\r\n <p-fileUpload class=\"file-manager custom-file-upload \" \r\n #fileUpload\r\n [name]=\"name\"\r\n [id]=\"id\" \r\n [accept]=\"accept\" \r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n [showUploadButton]=\"showUploadButton\" \r\n [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel= \"Upload\" \r\n (onSelect)=\"onFileSelect($event)\"\r\n (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\"\r\n >\r\n \r\n \r\n \r\n <!-- <ng-template pTemplate=\"content\">\r\n <button type=\"button\" pButton icon=\"pi pi-upload\" class=\"ml-4 h-2rem w-full text-center\">\r\n </button>\r\n </ng-template> -->\r\n <ng-template pTemplate=\"content\" let-files>\r\n <div *ngIf=\"fileExtensionImage() || inputField\">\r\n <img [src]=\"fileUrl\" style=\"width: 15rem;\"/>\r\n </div>\r\n <div *ngIf=\"fileName != undefined && fileName != null\">\r\n <p>File Name: {{ fileName }}</p>\r\n <p>File Extension: {{ getFileExtension(fileName) }}</p>\r\n </div>\r\n <div *ngIf=\"fileName != undefined && showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\" h-2rem w-full text-center\">\r\n <!-- <span class=\"font-bold ml-2\" >Download</span> -->\r\n </button>\r\n </div>\r\n </ng-template>\r\n \r\n </p-fileUpload>\r\n \r\n</div>", styles: [".ui-fileupload-choose{display:flex;align-items:center;justify-content:center;padding:.5rem;width:10rem;height:40px}.ui-fileupload-choose .ui-button-text{display:none}.ui-fileupload-choose .pi{font-size:2rem}.p-fileupload-choose input{display:none!important}:host ::ng-deep .p-fileupload-choose[disabled]{display:none!important}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }], encapsulation: i0.ViewEncapsulation.None }); }
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFileManagerComponent, decorators: [{
154
+ type: Component,
155
+ args: [{ selector: 'Tsi-File-Manager', encapsulation: ViewEncapsulation.None, template: "<!-- <p-fileUpload class=\"file-manager\" #fileUpload [name]=\"name\" [id]=\"id\" [accept]=\"accept\" [maxFileSize]=\"maxFileSize\"\r\n [multiple]=\"multiple\" [showUploadButton]=\"showUploadButton\" [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\" chooseLabel=\" \" (onSelect)=\"onFileSelect($event)\" (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\" class=\"custom-file-upload\" icon=\"pi pi-upload\">\r\n</p-fileUpload>\r\n\r\n<BR>\r\n<div *ngIf=\"showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\"h-2rem w-full text-center\">\r\n </button>\r\n</div> -->\r\n<div class=\"{{validationStatusCssClass}}\">\r\n\r\n <p-fileUpload class=\"file-manager custom-file-upload \" \r\n #fileUpload\r\n [name]=\"name\"\r\n [id]=\"id\" \r\n [accept]=\"accept\" \r\n [multiple]=\"multiple\"\r\n [disabled]=\"disabled\"\r\n [showUploadButton]=\"showUploadButton\" \r\n [showCancelButton]=\"showCancelButton\"\r\n chooseIcon=\"pi pi-upload\"\r\n chooseLabel= \"Upload\" \r\n (onSelect)=\"onFileSelect($event)\"\r\n (onClear)=\"onFileClear()\"\r\n (onRemove)=\"onFileRemove($event)\"\r\n >\r\n \r\n \r\n \r\n <!-- <ng-template pTemplate=\"content\">\r\n <button type=\"button\" pButton icon=\"pi pi-upload\" class=\"ml-4 h-2rem w-full text-center\">\r\n </button>\r\n </ng-template> -->\r\n <ng-template pTemplate=\"content\" let-files>\r\n <div *ngIf=\"fileExtensionImage() || inputField\">\r\n <img [src]=\"fileUrl\" style=\"width: 15rem;\"/>\r\n </div>\r\n <div *ngIf=\"fileName != undefined && fileName != null\">\r\n <p>File Name: {{ fileName }}</p>\r\n <p>File Extension: {{ getFileExtension(fileName) }}</p>\r\n </div>\r\n <div *ngIf=\"fileName != undefined && showDownloadButton\">\r\n <button pButton type=\"button\" icon=\"pi pi-download\" (click)=\"downloadFile()\" class=\" h-2rem w-full text-center\">\r\n <!-- <span class=\"font-bold ml-2\" >Download</span> -->\r\n </button>\r\n </div>\r\n </ng-template>\r\n \r\n </p-fileUpload>\r\n \r\n</div>", styles: [".ui-fileupload-choose{display:flex;align-items:center;justify-content:center;padding:.5rem;width:10rem;height:40px}.ui-fileupload-choose .ui-button-text{display:none}.ui-fileupload-choose .pi{font-size:2rem}.p-fileupload-choose input{display:none!important}:host ::ng-deep .p-fileupload-choose[disabled]{display:none!important}\n"] }]
156
+ }], ctorParameters: () => [{ type: i1.LocalizePipe }, { type: i2.TsiNotificationService }, { type: i3.DomSanitizer }], propDecorators: { fileName: [{
157
+ type: Input
158
+ }], name: [{
159
+ type: Input
160
+ }], id: [{
161
+ type: Input
162
+ }], accept: [{
163
+ type: Input
164
+ }], maxFileSize: [{
165
+ type: Input
166
+ }], multiple: [{
167
+ type: Input
168
+ }], exploreOnDownload: [{
169
+ type: Input
170
+ }], showUploadButton: [{
171
+ type: Input
172
+ }], showCancelButton: [{
173
+ type: Input
174
+ }], showDownloadButton: [{
175
+ type: Input
176
+ }], chooseIcon: [{
177
+ type: Input
178
+ }], chooseLabel: [{
179
+ type: Input
180
+ }], showSelectButton: [{
181
+ type: Input
182
+ }], showFileUpload: [{
183
+ type: Input
184
+ }], onSelectFileManager: [{
185
+ type: Output
186
+ }], onClear: [{
187
+ type: Output
188
+ }], onRemove: [{
189
+ type: Output
190
+ }], inputFieldChange: [{
191
+ type: Output
192
+ }], fileNameChange: [{
193
+ type: Output
194
+ }] } });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWZpbGUtbWFuYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy90c2ktZmlsZS1tYW5hZ2VyL3RzaS1maWxlLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWZpbGUtbWFuYWdlci90c2ktZmlsZS1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7Ozs7OztBQVV6RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBb0Q7SUE4Qi9GOzs7O1FBSUk7SUFFRixZQUNVLFFBQXNCLEVBQ3RCLG1CQUEyQyxFQUMzQyxZQUEwQjtRQUVsQyxLQUFLLEVBQUUsQ0FBQztRQUpBLGFBQVEsR0FBUixRQUFRLENBQWM7UUFDdEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUMzQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQW5DN0IsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUVsQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsUUFBUSxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRTlCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbkMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMzQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHdEQsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFJL0Isa0JBQWEsR0FBWSxFQUFFLENBQUM7SUFhekIsQ0FBQztJQUdKLGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLE9BQU8sUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsTUFBTSxLQUFLLEdBQVcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNsQyxzRUFBc0U7UUFDdEUsa0NBQWtDO1FBQ2xDLE1BQU07UUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMzQixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsUUFBUyxDQUFDO1FBRXhDLElBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztVQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxxREFBcUQsQ0FBQztVQUM5RSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1VBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLHFEQUFxRCxDQUFDO1VBQzlFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUE7WUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7WUFDN0IsT0FBTztRQUNULENBQUM7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsaUVBQWlFO1lBQ2pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFHVixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFVO1FBQzVCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNuQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLGlDQUFpQztnQkFDL0UsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQW9CLENBQUMsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFFekUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0MsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDekIsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFTLENBQUM7UUFDNUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRVYsa0NBQWtDO0lBQ3BDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFtQjtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyx1Q0FBdUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQUksT0FBTztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFvQixDQUFDLENBQUM7UUFDdkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUYsa0JBQWtCO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQTtJQUN2RCxDQUFDOytHQTNLVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixvcEJDWnBDLG9xRUFvRE07OzRGRHhDTyx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUk7aUpBSzVCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgVHNpSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvdHNpLWlucHV0LWJhc2UvdHNpLWlucHV0LWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUZpbGUtTWFuYWdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1maWxlLW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1maWxlLW1hbmFnZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lGaWxlTWFuYWdlckNvbXBvbmVudCBleHRlbmRzIFRzaUlucHV0QmFzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlciB8dW5kZWZpbmVkIHwgbnVsbD4ge1xyXG5cclxuICAvLyBASW5wdXQoKSBpbnB1dEZpZWxkOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8dW5kZWZpbmVkIHwgbnVsbDtcclxuICBASW5wdXQoKSBmaWxlTmFtZTogc3RyaW5nIHx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplOiBudW1iZXIgPSAxMDQ4NTc2MDtcclxuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGV4cGxvcmVPbkRvd25sb2FkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd1VwbG9hZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dDYW5jZWxCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93RG93bmxvYWRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjaG9vc2VJY29uOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBjaG9vc2VMYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2hvd1NlbGVjdEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ZpbGVVcGxvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWxlY3RGaWxlTWFuYWdlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBvblJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBpbnB1dEZpZWxkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGVOYW1lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cclxuICBpbWFnZVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGZpbGVFeHRlbnNpb24/OiBzdHJpbmc7XHJcblxyXG4gIGZpbGVTaXplRXJyb3IgOiBzdHJpbmcgPSAnJztcclxuICAvKiBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5zaG93U2VsZWN0QnV0dG9uICYmIHRoaXMuZmlsZVVwbG9hZElucHV0KSB7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZElucHV0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9ICovXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgbG9jYWxpemU6IExvY2FsaXplUGlwZSxcclxuICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgICApIHtcclxuICAgICAgc3VwZXIoKTtcclxuICAgICB9XHJcblxyXG5cclxuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmaWxlTmFtZT8uc3BsaXQoJy4nKT8ucG9wKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IGV2ZW50LmZpbGVzO1xyXG4gICAgLy8gdGhpcy5jb252ZXJ0RmlsZVRvQmFzZTY0KGZpbGVzWzBdKS50aGVuKChiYXNlNjRTdHJpbmc6IHN0cmluZykgPT4ge1xyXG4gICAgLy8gdGhpcy5pbnB1dEZpZWxkID0gYmFzZTY0U3RyaW5nO1xyXG4gICAgLy8gfSk7XHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pbnB1dEZpZWxkPSAocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpLnNwbGl0KCcsJylbMV07XHJcbiAgICB9O1xyXG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcclxuICAgIH07XHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlc1swXSk7IFxyXG4gICAgdGhpcy5maWxlTmFtZSA9IGZpbGVzWzBdLm5hbWU7XHJcbiAgICBjb25zdCBmaWxlTmFtZTogc3RyaW5nID0gdGhpcy5maWxlTmFtZSE7XHJcblxyXG4gICAgaWYoZmlsZXNbMF0uc2l6ZSA+IHRoaXMubWF4RmlsZVNpemUpe1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uud2FybihgXHJcbiAgICAgICAgJHt0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShcInRzaV9maWxlX3VwbG9hZF9hdXRvX3ZhbGlkYXRpb25fbWF4X2xlbmd0aF9kZXRhaWxfMVwiKX0gXHJcbiAgICAgICAgJHsoZmlsZXNbMF0uc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMil9IFxyXG4gICAgICAgICR7dGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oXCJ0c2lfZmlsZV91cGxvYWRfYXV0b192YWxpZGF0aW9uX21heF9sZW5ndGhfZGV0YWlsXzJcIil9XHJcbiAgICAgICAgJHsodGhpcy5tYXhGaWxlU2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMil9IE1vYCxcclxuICAgICAgICB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShcInRzaV9maWxlX3VwbG9hZF9hdXRvX3ZhbGlkYXRpb25fbWF4X2xlbmd0aF90aXRsZVwiKSlcclxuICAgICAgICB0aGlzLmlucHV0RmllbGQgPSB1bmRlZmluZWRcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vdGhpcy5maWxlTmFtZSA9IGZpbGVzLm1hcCgoZmlsZTogYW55KSA9PiBmaWxlLm5hbWUpLmpvaW4oJywgJyk7XHJcbiAgICAgIHRoaXMub25TZWxlY3RGaWxlTWFuYWdlci5lbWl0KHsgZXZlbnQsIGZpbGVzLCBpbnB1dEZpZWxkOiB0aGlzLmlucHV0RmllbGQsIGZpbGVOYW1lOiBmaWxlTmFtZSB9KTtcclxuICAgICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlLmVtaXQodGhpcy5pbnB1dEZpZWxkKTtcclxuICAgICAgdGhpcy5maWxlTmFtZUNoYW5nZS5lbWl0KHRoaXMuZmlsZU5hbWUpO1xyXG4gICAgfSwgMjAwKTtcclxuICAgIFxyXG5cclxuICB9IFxyXG5cclxuICBvbkZpbGVDbGVhcigpIHtcclxuICAgIHRoaXMuaW5wdXRGaWVsZCA9IG51bGw7XHJcbiAgICB0aGlzLmZpbGVOYW1lID0gJyc7XHJcbiAgICB0aGlzLmltYWdlVXJsID0gbnVsbDtcclxuICAgIHRoaXMuaW5wdXRGaWVsZENoYW5nZS5lbWl0KHRoaXMuaW5wdXRGaWVsZCk7XHJcbiAgICB0aGlzLmZpbGVOYW1lQ2hhbmdlLmVtaXQodGhpcy5maWxlTmFtZSk7XHJcbiAgICB0aGlzLm9uQ2xlYXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBldmVudC5maWxlO1xyXG4gICAgLy90aGlzLmlucHV0RmllbGQgPSB0aGlzLmlucHV0RmllbGQuZmlsdGVyKChmOiBhbnkpID0+IGYgIT09IGZpbGUpO1xyXG4gICAgLy90aGlzLmZpbGVOYW1lID0gdGhpcy5pbnB1dEZpZWxkLm1hcCgoZjogYW55KSA9PiBmLm5hbWUpLmpvaW4oJywgJyk7XHJcbiAgICB0aGlzLmlucHV0RmllbGQgPSBudWxsO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9ICcnO1xyXG4gICAgdGhpcy5pbWFnZVVybCA9IG51bGw7XHJcbiAgICB0aGlzLm9uUmVtb3ZlLmVtaXQoZmlsZSk7XHJcbiAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RmllbGQpO1xyXG4gICAgdGhpcy5maWxlTmFtZUNoYW5nZS5lbWl0KHRoaXMuZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydEZpbGVUb0Jhc2U2NChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nOyAvLyBDb252ZXJzaW9uIGV4cGxpY2l0ZSBlbiBzdHJpbmdcclxuICAgICAgICByZXNvbHZlKGJhc2U2NFN0cmluZyk7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZXJyb3IgPT4gcmVqZWN0KGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRGaWxlKCkge1xyXG4gICAgaWYgKCF0aGlzLmlucHV0RmllbGQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYih0aGlzLmlucHV0RmllbGQgYXMgc3RyaW5nKTtcclxuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSB0aGlzLmZpbGVOYW1lITtcclxuICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICAvL3dpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBhcnJheUJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xyXG4gICAgbGV0IGJpbmFyeSA9ICcnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5ieXRlTGVuZ3RoOyBpKyspIHtcclxuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsJyArIGJ0b2EoYmluYXJ5KTtcclxuICB9XHJcblxyXG4gIGdldCBmaWxlVXJsKCk6IFNhZmVVcmx7XHJcbiAgICBpZiAoIXRoaXMuaW5wdXRGaWVsZCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKHRoaXMuaW5wdXRGaWVsZCBhcyBzdHJpbmcpO1xyXG4gICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoYnl0ZUNoYXJhY3RlcnMubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgXHJcbiAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh1cmwpO1xyXG4gIH1cclxuXHJcbiBmaWxlRXh0ZW5zaW9uSW1hZ2UoKSA6ICBib29sZWFuICB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKHRoaXMuZmlsZU5hbWUhKSA9PSAnanBnJ1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxwLWZpbGVVcGxvYWQgY2xhc3M9XCJmaWxlLW1hbmFnZXJcIiAjZmlsZVVwbG9hZCBbbmFtZV09XCJuYW1lXCIgW2lkXT1cImlkXCIgW2FjY2VwdF09XCJhY2NlcHRcIiBbbWF4RmlsZVNpemVdPVwibWF4RmlsZVNpemVcIlxyXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtzaG93VXBsb2FkQnV0dG9uXT1cInNob3dVcGxvYWRCdXR0b25cIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJzaG93Q2FuY2VsQnV0dG9uXCJcclxuICBjaG9vc2VJY29uPVwicGkgcGktdXBsb2FkXCIgY2hvb3NlTGFiZWw9XCIgXCIgKG9uU2VsZWN0KT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25GaWxlQ2xlYXIoKVwiXHJcbiAgKG9uUmVtb3ZlKT1cIm9uRmlsZVJlbW92ZSgkZXZlbnQpXCIgY2xhc3M9XCJjdXN0b20tZmlsZS11cGxvYWRcIiBpY29uPVwicGkgcGktdXBsb2FkXCI+XHJcbjwvcC1maWxlVXBsb2FkPlxyXG5cclxuPEJSPlxyXG48ZGl2ICpuZ0lmPVwic2hvd0Rvd25sb2FkQnV0dG9uXCI+XHJcbiAgPGJ1dHRvbiBwQnV0dG9uIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktZG93bmxvYWRcIiAoY2xpY2spPVwiZG93bmxvYWRGaWxlKClcIiBjbGFzcz1cImgtMnJlbSB3LWZ1bGwgdGV4dC1jZW50ZXJcIj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+IC0tPlxyXG48ZGl2IGNsYXNzPVwie3t2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3N9fVwiPlxyXG5cclxuICA8cC1maWxlVXBsb2FkIGNsYXNzPVwiZmlsZS1tYW5hZ2VyIGN1c3RvbS1maWxlLXVwbG9hZCBcIiBcclxuICAgICNmaWxlVXBsb2FkXHJcbiAgICBbbmFtZV09XCJuYW1lXCJcclxuICAgIFtpZF09XCJpZFwiIFxyXG4gICAgW2FjY2VwdF09XCJhY2NlcHRcIiBcclxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW3Nob3dVcGxvYWRCdXR0b25dPVwic2hvd1VwbG9hZEJ1dHRvblwiIFxyXG4gICAgW3Nob3dDYW5jZWxCdXR0b25dPVwic2hvd0NhbmNlbEJ1dHRvblwiXHJcbiAgICBjaG9vc2VJY29uPVwicGkgcGktdXBsb2FkXCJcclxuICAgIGNob29zZUxhYmVsPSBcIlVwbG9hZFwiIFxyXG4gICAgKG9uU2VsZWN0KT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQpXCJcclxuICAgIChvbkNsZWFyKT1cIm9uRmlsZUNsZWFyKClcIlxyXG4gICAgKG9uUmVtb3ZlKT1cIm9uRmlsZVJlbW92ZSgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIFxyXG4gICAgXHJcbiAgICBcclxuICAgIDwhLS0gPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBpY29uPVwicGkgcGktdXBsb2FkXCIgY2xhc3M9XCJtbC00IGgtMnJlbSB3LWZ1bGwgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCIgbGV0LWZpbGVzPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsZUV4dGVuc2lvbkltYWdlKCkgfHwgaW5wdXRGaWVsZFwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJmaWxlVXJsXCIgc3R5bGU9XCJ3aWR0aDogMTVyZW07XCIvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImZpbGVOYW1lICE9IHVuZGVmaW5lZCAmJiBmaWxlTmFtZSAhPSBudWxsXCI+XHJcbiAgICAgICAgPHA+RmlsZSBOYW1lOiB7eyBmaWxlTmFtZSB9fTwvcD5cclxuICAgICAgICA8cD5GaWxlIEV4dGVuc2lvbjoge3sgZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZSkgfX08L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsZU5hbWUgIT0gdW5kZWZpbmVkICYmIHNob3dEb3dubG9hZEJ1dHRvblwiPlxyXG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWRvd25sb2FkXCIgKGNsaWNrKT1cImRvd25sb2FkRmlsZSgpXCIgY2xhc3M9XCIgaC0ycmVtIHctZnVsbCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCBtbC0yXCIgPkRvd25sb2FkPC9zcGFuPiAtLT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgXHJcbiAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgXHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/formula.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ export class TsiFormulaBoxComponent extends TsiInputBase {
8
+ constructor(_formulaService, cdRef) {
9
+ super();
10
+ this._formulaService = _formulaService;
11
+ this.cdRef = cdRef;
12
+ this.value = '';
13
+ this.endPoint = '';
14
+ this.valueChange = new EventEmitter();
15
+ this.suggestions = [];
16
+ }
17
+ onInputChange(val) {
18
+ this.value = val;
19
+ this.valueChange.emit(this.value);
20
+ // Détecter `TOTAL(` suivi de tout ce qui n'est pas une parenthèse fermante
21
+ const match = /TOTAL\(([^)]*)$/i.exec(val);
22
+ if (match) {
23
+ const term = match[1];
24
+ if (term !== undefined && term.length >= 0) {
25
+ this._formulaService.getFormulaSuggestions(this.endPoint, term).subscribe(res => {
26
+ this.suggestions = res;
27
+ this.cdRef.detectChanges();
28
+ });
29
+ }
30
+ }
31
+ else {
32
+ this.suggestions = [];
33
+ this.cdRef.detectChanges();
34
+ }
35
+ }
36
+ onSuggestionSelect(s) {
37
+ this.value = this.value.replace(/TOTAL\([^\)]*$/, `TOTAL(${s}`);
38
+ this.valueChange.emit(this.value);
39
+ this.suggestions = [];
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormulaBoxComponent, deps: [{ token: i1.FormulaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiFormulaBoxComponent, selector: "Tsi-Formula-Box", inputs: { value: "value", endPoint: "endPoint" }, outputs: { valueChange: "valueChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"formula-wrapper {{validationStatusCssClass}}\" style=\"position: relative; z-index: 9999;\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\"\r\n placeholder=\"\" maxlength=\"{{maxLength}}\"/>\r\n\r\n <ul *ngIf=\"suggestions.length > 0\">\r\n <li *ngFor=\"let s of suggestions\" (click)=\"onSuggestionSelect(s)\">\r\n {{ s }}\r\n </li>\r\n </ul>\r\n</div>", styles: [".formula-wrapper{position:relative;width:100%}::ng-deep ul li{list-style:none!important}::ng-deep ul li:hover{text-decoration:underline!important}\n"], dependencies: [{ 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: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiFormulaBoxComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'Tsi-Formula-Box', template: "<div class=\"formula-wrapper {{validationStatusCssClass}}\" style=\"position: relative; z-index: 9999;\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"value\" (ngModelChange)=\"onInputChange($event)\"\r\n placeholder=\"\" maxlength=\"{{maxLength}}\"/>\r\n\r\n <ul *ngIf=\"suggestions.length > 0\">\r\n <li *ngFor=\"let s of suggestions\" (click)=\"onSuggestionSelect(s)\">\r\n {{ s }}\r\n </li>\r\n </ul>\r\n</div>", styles: [".formula-wrapper{position:relative;width:100%}::ng-deep ul li{list-style:none!important}::ng-deep ul li:hover{text-decoration:underline!important}\n"] }]
47
+ }], ctorParameters: () => [{ type: i1.FormulaService }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
48
+ type: Input
49
+ }], endPoint: [{
50
+ type: Input
51
+ }], valueChange: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWZvcm11bGEtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9pbnB1dC1jb21wb25lbnRzL3RzaS1mb3JtdWxhLWJveC90c2ktZm9ybXVsYS1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWZvcm11bGEtYm94L1RzaS1Gb3JtdWxhLUJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7O0FBUXpGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBT3RELFlBQW9CLGVBQStCLEVBQWtCLEtBQXdCO1FBQzNGLEtBQUssRUFBRSxDQUFDO1FBRFUsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQWtCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBTnBGLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFbkQsZ0JBQVcsR0FBYSxFQUFFLENBQUM7SUFJM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsQywyRUFBMkU7UUFDM0UsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQzlFLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO29CQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxDQUFTO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQWxDVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix5S0NUbkMsMGdCQVNNOzs0RkRBTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCO21IQUtsQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRzaUlucHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL3RzaS1pbnB1dC1iYXNlL3RzaS1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm11bGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybXVsYS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUZvcm11bGEtQm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vVHNpLUZvcm11bGEtQm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9Uc2ktRm9ybXVsYS1Cb3guY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaUZvcm11bGFCb3hDb21wb25lbnQgZXh0ZW5kcyBUc2lJbnB1dEJhc2Uge1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBlbmRQb2ludDogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mb3JtdWxhU2VydmljZTogRm9ybXVsYVNlcnZpY2UsIHB1YmxpYyBvdmVycmlkZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0Q2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gIFxyXG4gICAgLy8gRMOpdGVjdGVyIGBUT1RBTChgIHN1aXZpIGRlIHRvdXQgY2UgcXVpIG4nZXN0IHBhcyB1bmUgcGFyZW50aMOoc2UgZmVybWFudGVcclxuICAgIGNvbnN0IG1hdGNoID0gL1RPVEFMXFwoKFteKV0qKSQvaS5leGVjKHZhbCk7XHJcbiAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgY29uc3QgdGVybSA9IG1hdGNoWzFdO1xyXG4gICAgICBpZiAodGVybSAhPT0gdW5kZWZpbmVkICYmIHRlcm0ubGVuZ3RoID49IDApIHtcclxuICAgICAgICB0aGlzLl9mb3JtdWxhU2VydmljZS5nZXRGb3JtdWxhU3VnZ2VzdGlvbnModGhpcy5lbmRQb2ludCwgdGVybSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uU3VnZ2VzdGlvblNlbGVjdChzOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnJlcGxhY2UoL1RPVEFMXFwoW15cXCldKiQvLCBgVE9UQUwoJHtzfWApO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybXVsYS13cmFwcGVyIHt7dmFsaWRhdGlvblN0YXR1c0Nzc0NsYXNzfX1cIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogOTk5OTtcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIiBtYXhsZW5ndGg9XCJ7e21heExlbmd0aH19XCIvPlxyXG5cclxuICAgICAgICA8dWwgKm5nSWY9XCJzdWdnZXN0aW9ucy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHMgb2Ygc3VnZ2VzdGlvbnNcIiAoY2xpY2spPVwib25TdWdnZXN0aW9uU2VsZWN0KHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHMgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuPC9kaXY+Il19
@@ -0,0 +1,55 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "primeng/inputnumber";
7
+ import * as i3 from "../../tsi-bubble-info/tsi-bubble-info.component";
8
+ import * as i4 from "../../../tsi-directives/auto-select.directive";
9
+ export class TsiIntegerComponent extends TsiInputBase {
10
+ constructor() {
11
+ super(...arguments);
12
+ //#region inputs
13
+ // @Input() inputField?: number | undefined | string;
14
+ this.class = {};
15
+ this.delayChangeTime = 1000;
16
+ this.myFormControl = new FormControl();
17
+ //#endregion
18
+ //#region outputs
19
+ this.newItemEvent = new EventEmitter();
20
+ this.inputFieldChange = new EventEmitter();
21
+ //#endregion
22
+ this.infinityRef = Infinity;
23
+ this.isValueChanged = false;
24
+ }
25
+ valueChanged() {
26
+ this.isValueChanged = true;
27
+ }
28
+ onChangeofOptions() {
29
+ if (this.isValueChanged) {
30
+ this.newItemEvent.emit(this.inputField);
31
+ this.inputFieldChange.emit(this.inputField);
32
+ this.isValueChanged = false;
33
+ }
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiIntegerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiIntegerComponent, selector: "Tsi-Integer", inputs: { class: "class", minValue: "minValue", maxValue: "maxValue", delayChangeTime: "delayChangeTime" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{class}} {{myStyleClass}}\"\r\n inputStyleClass=\"{{class}} {{validationStatusCssClass}}\" styleClass=\"border-radius-7\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"inputField\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n (ngModelChange)=\"valueChanged()\"\r\n [max]=\"maxValue ?? infinityRef\" [maxlength]=\"maxLength ?? infinityRef\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#7fffd4;text-align:right}::ng-deep p-inputNumber span input{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i3.TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: i4.AutoSelectDirective, selector: "[autoSelect]" }] }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiIntegerComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'Tsi-Integer', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{class}} {{myStyleClass}}\"\r\n inputStyleClass=\"{{class}} {{validationStatusCssClass}}\" styleClass=\"border-radius-7\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"inputField\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\"\r\n (onBlur)=\"onChangeofOptions()\"\r\n (ngModelChange)=\"valueChanged()\"\r\n [max]=\"maxValue ?? infinityRef\" [maxlength]=\"maxLength ?? infinityRef\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#7fffd4;text-align:right}::ng-deep p-inputNumber span input{width:100%!important}\n"] }]
41
+ }], propDecorators: { class: [{
42
+ type: Input,
43
+ args: ['class']
44
+ }], minValue: [{
45
+ type: Input
46
+ }], maxValue: [{
47
+ type: Input
48
+ }], delayChangeTime: [{
49
+ type: Input
50
+ }], newItemEvent: [{
51
+ type: Output
52
+ }], inputFieldChange: [{
53
+ type: Output
54
+ }] } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLWludGVnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWludGVnZXIvdHNpLWludGVnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLWludGVnZXIvdHNpLWludGVnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJEQUEyRCxDQUFDOzs7Ozs7QUFPekYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQXlDO0lBTGxGOztRQU1FLGdCQUFnQjtRQUNoQixxREFBcUQ7UUFDckMsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUd2QixvQkFBZSxHQUFXLElBQUksQ0FBQTtRQUN2QyxrQkFBYSxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQy9DLFlBQVk7UUFFWixpQkFBaUI7UUFDUCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdkMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNyRCxZQUFZO1FBRVosZ0JBQVcsR0FBRyxRQUFRLENBQUE7UUFDZCxtQkFBYyxHQUFhLEtBQUssQ0FBQTtLQWF6QztJQVhDLFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQTtJQUM1QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBRyxJQUFJLENBQUMsY0FBYyxFQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDOytHQTVCVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix1UUNUaEMsNm9CQVVNOzs0RkRETyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYTs4QkFPUCxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBQ0wsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHNpSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvdHNpLWlucHV0LWJhc2UvdHNpLWlucHV0LWJhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLUludGVnZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktaW50ZWdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLWludGVnZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lJbnRlZ2VyQ29tcG9uZW50IGV4dGVuZHMgVHNpSW5wdXRCYXNlPG51bWJlciB8IHVuZGVmaW5lZCB8IHN0cmluZz4ge1xyXG4gIC8vI3JlZ2lvbiBpbnB1dHNcclxuICAvLyBASW5wdXQoKSBpbnB1dEZpZWxkPzogbnVtYmVyIHwgdW5kZWZpbmVkIHwgc3RyaW5nO1xyXG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzczogYW55ID0ge307XHJcbiAgQElucHV0KCkgbWluVmFsdWU/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWF4VmFsdWU/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGVsYXlDaGFuZ2VUaW1lOiBudW1iZXIgPSAxMDAwXHJcbiAgbXlGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgbmV3SXRlbUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGlucHV0RmllbGRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgaW5maW5pdHlSZWYgPSBJbmZpbml0eVxyXG4gIHByaXZhdGUgaXNWYWx1ZUNoYW5nZWQgOiBib29sZWFuID0gZmFsc2VcclxuXHJcbiAgdmFsdWVDaGFuZ2VkKCl7XHJcbiAgICB0aGlzLmlzVmFsdWVDaGFuZ2VkID0gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VvZk9wdGlvbnMoKSB7XHJcbiAgICBpZih0aGlzLmlzVmFsdWVDaGFuZ2VkKXtcclxuICAgICAgdGhpcy5uZXdJdGVtRXZlbnQuZW1pdCh0aGlzLmlucHV0RmllbGQpO1xyXG4gICAgICB0aGlzLmlucHV0RmllbGRDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RmllbGQpO1xyXG4gICAgICB0aGlzLmlzVmFsdWVDaGFuZ2VkID0gZmFsc2VcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggaC0ycmVtXCI+XHJcbiAgICAgICAgPHAtaW5wdXROdW1iZXIgYXV0b1NlbGVjdCBjbGFzcz1cInt7Y2xhc3N9fSB7e215U3R5bGVDbGFzc319XCJcclxuICAgICAgICAgICAgICAgIGlucHV0U3R5bGVDbGFzcz1cInt7Y2xhc3N9fSB7e3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc319XCIgc3R5bGVDbGFzcz1cImJvcmRlci1yYWRpdXMtN1wiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cImlucHV0RmllbGRcIiBuYW1lPVwie3tpbnB1dE5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICBpZD1cInt7aW5wdXRJZH19XCJcclxuICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25DaGFuZ2VvZk9wdGlvbnMoKVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoKVwiXHJcbiAgICAgICAgICAgICAgICBbbWF4XT1cIm1heFZhbHVlID8/IGluZmluaXR5UmVmXCIgW21heGxlbmd0aF09XCJtYXhMZW5ndGggPz8gaW5maW5pdHlSZWZcIj5cclxuICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPFRzaS1CdWJibGUtSW5mbyBbaW5mb1RleHRdPVwiaW5mb1RleHRcIj48L1RzaS1CdWJibGUtSW5mbz5cclxuPC9kaXY+Il19
@@ -0,0 +1,43 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { LayoutOrientation } from '../../../enums';
3
+ import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "primeng/radiobutton";
8
+ import * as i4 from "../../../pipes/localize.pipe";
9
+ export class TsiRadioButtonComponent extends TsiInputBase {
10
+ constructor() {
11
+ super(...arguments);
12
+ //#region local variables
13
+ this.verticalLayoutOrientation = LayoutOrientation.vertical;
14
+ this.horizontalLayoutOrientation = LayoutOrientation.horizontal;
15
+ // @Input() inputField: any;
16
+ this.class = {};
17
+ this.layoutOrientation = LayoutOrientation.vertical;
18
+ //#endregion
19
+ //#region outputs
20
+ this.inputFieldChange = new EventEmitter();
21
+ }
22
+ //#endregion
23
+ onChangeofOptions(input) {
24
+ this.inputField = input;
25
+ this.inputFieldChange.emit(input);
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRadioButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiRadioButtonComponent, selector: "Tsi-Radio-Button", inputs: { dataSource: "dataSource", class: "class", layoutOrientation: "layoutOrientation" }, outputs: { inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<!-- align items vertical -->\r\n<div *ngIf=\"layoutOrientation == verticalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio\">\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n\r\n<!-- align items horizontal -->\r\n<div class=\"flex flex-row\" *ngIf=\"layoutOrientation == horizontalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio p-1\" >\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i4.LocalizePipe, name: "localize" }] }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRadioButtonComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'Tsi-Radio-Button', template: "<!-- align items vertical -->\r\n<div *ngIf=\"layoutOrientation == verticalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio\">\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n\r\n<!-- align items horizontal -->\r\n<div class=\"flex flex-row\" *ngIf=\"layoutOrientation == horizontalLayoutOrientation\">\r\n <div *ngFor=\"let item of dataSource\" class=\"custom-control custom-radio p-1\" >\r\n <p-radioButton [disabled]=\"disabled\" class=\"tsi-component {{validationStatusCssClass}}\" name=\"groupname\" value=\"{{item.key}}\" label=\"{{item.value | localize}}\"\r\n [ngModel]=\"inputField\" (ngModelChange)=\"onChangeofOptions($event)\"></p-radioButton>\r\n </div>\r\n</div>\r\n" }]
33
+ }], propDecorators: { dataSource: [{
34
+ type: Input
35
+ }], class: [{
36
+ type: Input,
37
+ args: ['class']
38
+ }], layoutOrientation: [{
39
+ type: Input
40
+ }], inputFieldChange: [{
41
+ type: Output
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLXJhZGlvLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvaW5wdXQtY29tcG9uZW50cy90c2ktcmFkaW8tYnV0dG9uL3RzaS1yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLXJhZGlvLWJ1dHRvbi90c2ktcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJEQUEyRCxDQUFDOzs7Ozs7QUFPekYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFlBQWlCO0lBTDlEOztRQU1FLHlCQUF5QjtRQUN6Qiw4QkFBeUIsR0FBc0IsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQzFFLGdDQUEyQixHQUFzQixpQkFBaUIsQ0FBQyxVQUFVLENBQUM7UUFJOUUsNEJBQTRCO1FBQ1osVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUN2QixzQkFBaUIsR0FBc0IsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQzNFLFlBQVk7UUFFWixpQkFBaUI7UUFDUCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBT3pEO0lBTkMsWUFBWTtJQUVaLGlCQUFpQixDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDOytHQW5CVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixnT0NWcEMsbStCQWVBOzs0RkRMYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCOzhCQVVuQixVQUFVO3NCQUFsQixLQUFLO2dCQUVVLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMYXlvdXRPcmllbnRhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgVHNpSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vdHNpLWJhc2UvdHNpLWlucHV0LWJhc2UvdHNpLWlucHV0LWJhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnVHNpLVJhZGlvLUJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS1yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1yYWRpby1idXR0b24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lSYWRpb0J1dHRvbkNvbXBvbmVudCBleHRlbmRzIFRzaUlucHV0QmFzZTxhbnk+e1xyXG4gIC8vI3JlZ2lvbiBsb2NhbCB2YXJpYWJsZXNcclxuICB2ZXJ0aWNhbExheW91dE9yaWVudGF0aW9uOiBMYXlvdXRPcmllbnRhdGlvbiA9IExheW91dE9yaWVudGF0aW9uLnZlcnRpY2FsO1xyXG4gIGhvcml6b250YWxMYXlvdXRPcmllbnRhdGlvbjogTGF5b3V0T3JpZW50YXRpb24gPSBMYXlvdXRPcmllbnRhdGlvbi5ob3Jpem9udGFsO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG4gIC8vI3JlZ2lvbiBpbnB1dHNcclxuICBASW5wdXQoKSBkYXRhU291cmNlPzogQXJyYXk8S2V5VmFsdWU8YW55LCBzdHJpbmc+PjtcclxuICAvLyBASW5wdXQoKSBpbnB1dEZpZWxkOiBhbnk7XHJcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBsYXlvdXRPcmllbnRhdGlvbjogTGF5b3V0T3JpZW50YXRpb24gPSBMYXlvdXRPcmllbnRhdGlvbi52ZXJ0aWNhbDtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIG91dHB1dHNcclxuICBAT3V0cHV0KCkgaW5wdXRGaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkNoYW5nZW9mT3B0aW9ucyhpbnB1dDogYW55KTp2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRGaWVsZCA9IGlucHV0O1xyXG4gICAgdGhpcy5pbnB1dEZpZWxkQ2hhbmdlLmVtaXQoaW5wdXQpO1xyXG4gIH1cclxufVxyXG4iLCI8IS0tIGFsaWduIGl0ZW1zIHZlcnRpY2FsIC0tPlxyXG48ZGl2ICpuZ0lmPVwibGF5b3V0T3JpZW50YXRpb24gPT0gdmVydGljYWxMYXlvdXRPcmllbnRhdGlvblwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVNvdXJjZVwiIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvXCI+XHJcbiAgICA8cC1yYWRpb0J1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cInRzaS1jb21wb25lbnQge3t2YWxpZGF0aW9uU3RhdHVzQ3NzQ2xhc3N9fVwiIG5hbWU9XCJncm91cG5hbWVcIiB2YWx1ZT1cInt7aXRlbS5rZXl9fVwiIGxhYmVsPVwie3tpdGVtLnZhbHVlIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgIFtuZ01vZGVsXT1cImlucHV0RmllbGRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZW9mT3B0aW9ucygkZXZlbnQpXCI+PC9wLXJhZGlvQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gYWxpZ24gaXRlbXMgaG9yaXpvbnRhbCAtLT5cclxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIiAqbmdJZj1cImxheW91dE9yaWVudGF0aW9uID09IGhvcml6b250YWxMYXlvdXRPcmllbnRhdGlvblwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVNvdXJjZVwiIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvIHAtMVwiID5cclxuICAgIDxwLXJhZGlvQnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwidHNpLWNvbXBvbmVudCB7e3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc319XCIgbmFtZT1cImdyb3VwbmFtZVwiIHZhbHVlPVwie3tpdGVtLmtleX19XCIgbGFiZWw9XCJ7e2l0ZW0udmFsdWUgfCBsb2NhbGl6ZX19XCJcclxuICAgICAgW25nTW9kZWxdPVwiaW5wdXRGaWVsZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlb2ZPcHRpb25zKCRldmVudClcIj48L3AtcmFkaW9CdXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { TsiInputBase } from '../../../tsi-base/tsi-input-base/tsi-input-base.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "primeng/inputnumber";
6
+ import * as i3 from "../../tsi-bubble-info/tsi-bubble-info.component";
7
+ import * as i4 from "../../../tsi-directives/auto-select.directive";
8
+ export class TsiRateInputComponent extends TsiInputBase {
9
+ constructor() {
10
+ super(...arguments);
11
+ // isFraction = true : 2% est enregistré 0.02
12
+ // isFraction = false : 2% est enregistré 2
13
+ this.isFraction = false;
14
+ this.numOfDecimal = 2;
15
+ //#endregion
16
+ //#region outputs
17
+ this.newItemEvent = new EventEmitter();
18
+ this.inputFieldChange = new EventEmitter();
19
+ //#endregion
20
+ this.isValueChanged = false;
21
+ }
22
+ ngOnInit() {
23
+ super.ngOnInit();
24
+ // if (this.inputField === undefined || this.inputField === null) {
25
+ // this.inputField = 0;
26
+ // this.inputFieldChange.emit(this.inputField);
27
+ // }
28
+ }
29
+ valueChanged() {
30
+ this.isValueChanged = true;
31
+ }
32
+ onChangeofOptions() {
33
+ if (this.isValueChanged) {
34
+ this.newItemEvent.emit(Number(this.inputField));
35
+ this.inputFieldChange.emit(this.inputField);
36
+ this.isValueChanged = false;
37
+ }
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRateInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiRateInputComponent, selector: "Tsi-Rate-Input", inputs: { required: "required", isFraction: "isFraction", numOfDecimal: "numOfDecimal" }, outputs: { newItemEvent: "newItemEvent", inputFieldChange: "inputFieldChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{myStyleClass}}\" \r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"inputField\" \r\n (ngModelChange)=\"valueChanged()\"\r\n [required]=\"isRequired\"\r\n (onBlur)=\"onChangeofOptions()\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" suffix=\"%\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#f0f;text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "component", type: i3.TsiBubbleInfoComponent, selector: "Tsi-Bubble-Info", inputs: ["infoText"] }, { kind: "directive", type: i4.AutoSelectDirective, selector: "[autoSelect]" }] }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiRateInputComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'Tsi-Rate-Input', template: "<div class=\"flex h-2rem\">\r\n <p-inputNumber autoSelect class=\"{{myStyleClass}}\" \r\n styleClass=\"{{myStyleClass}} border-radius-7\" \r\n inputStyleClass=\"{{myStyleClass}} {{validationStatusCssClass}}\"\r\n [disabled]=\"disabled\" [(ngModel)]=\"inputField\" \r\n (ngModelChange)=\"valueChanged()\"\r\n [required]=\"isRequired\"\r\n (onBlur)=\"onChangeofOptions()\" name=\"{{inputName}}\"\r\n id=\"{{inputId}}\" suffix=\"%\" [minFractionDigits]=\"numOfDecimal ?? 0\" [maxFractionDigits]=\"numOfDecimal ?? 0\">\r\n </p-inputNumber>\r\n <Tsi-Bubble-Info [infoText]=\"infoText\"></Tsi-Bubble-Info>\r\n</div>", styles: [".ColorClass{background-color:#f0f;text-align:right}\n"] }]
45
+ }], propDecorators: { required: [{
46
+ type: Input
47
+ }], isFraction: [{
48
+ type: Input
49
+ }], numOfDecimal: [{
50
+ type: Input
51
+ }], newItemEvent: [{
52
+ type: Output
53
+ }], inputFieldChange: [{
54
+ type: Output
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLXJhdGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLXJhdGUtaW5wdXQvdHNpLXJhdGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL2lucHV0LWNvbXBvbmVudHMvdHNpLXJhdGUtaW5wdXQvdHNpLXJhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7OztBQU96RixNQUFNLE9BQU8scUJBQXNCLFNBQVEsWUFBZ0M7SUFMM0U7O1FBVUUsOENBQThDO1FBRTlDLDRDQUE0QztRQUNuQyxlQUFVLEdBQWEsS0FBSyxDQUFDO1FBQzdCLGlCQUFZLEdBQVksQ0FBQyxDQUFDO1FBQ25DLFlBQVk7UUFFWixpQkFBaUI7UUFDUCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4RCxZQUFZO1FBRUosbUJBQWMsR0FBWSxLQUFLLENBQUE7S0FxQnhDO0lBbkJVLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsbUVBQW1FO1FBQ25FLHlCQUF5QjtRQUN6QixpREFBaUQ7UUFDakQsSUFBSTtJQUNOLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUE7SUFDNUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQTtRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0FyQ1UscUJBQXFCO21HQUFyQixxQkFBcUIsd1BDUmxDLDZwQkFXTTs7NEZESE8scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjs4QkFPakIsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRzaUlucHV0QmFzZSB9IGZyb20gJy4uLy4uLy4uL3RzaS1iYXNlL3RzaS1pbnB1dC1iYXNlL3RzaS1pbnB1dC1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1RzaS1SYXRlLUlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHNpLXJhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS1yYXRlLWlucHV0LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHNpUmF0ZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgVHNpSW5wdXRCYXNlPG51bWJlciB8IHVuZGVmaW5lZD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIC8vI3JlZ2lvbiBpbnB1dHNcclxuICAvLyBASW5wdXQoKSBpbnB1dEZpZWxkPzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuXHJcbiAgLy8gaXNGcmFjdGlvbiA9IHRydWUgIDogMiUgZXN0IGVucmVnaXN0csOpIDAuMDJcclxuXHJcbiAgLy8gaXNGcmFjdGlvbiA9IGZhbHNlICA6IDIlIGVzdCBlbnJlZ2lzdHLDqSAyXHJcbiAgQElucHV0KCkgaXNGcmFjdGlvbj86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBudW1PZkRlY2ltYWw/OiBudW1iZXIgPSAyO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gb3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBuZXdJdGVtRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgaW5wdXRGaWVsZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBwcml2YXRlIGlzVmFsdWVDaGFuZ2VkOiBib29sZWFuID0gZmFsc2VcclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgLy8gaWYgKHRoaXMuaW5wdXRGaWVsZCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaW5wdXRGaWVsZCA9PT0gbnVsbCkge1xyXG4gICAgLy8gICB0aGlzLmlucHV0RmllbGQgPSAwO1xyXG4gICAgLy8gICB0aGlzLmlucHV0RmllbGRDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RmllbGQpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5pc1ZhbHVlQ2hhbmdlZCA9IHRydWVcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlb2ZPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMuaXNWYWx1ZUNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5uZXdJdGVtRXZlbnQuZW1pdChOdW1iZXIodGhpcy5pbnB1dEZpZWxkKSk7XHJcbiAgICAgIHRoaXMuaW5wdXRGaWVsZENoYW5nZS5lbWl0KHRoaXMuaW5wdXRGaWVsZCk7XHJcbiAgICAgIHRoaXMuaXNWYWx1ZUNoYW5nZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBoLTJyZW1cIj5cclxuICAgIDxwLWlucHV0TnVtYmVyIGF1dG9TZWxlY3QgY2xhc3M9XCJ7e215U3R5bGVDbGFzc319XCIgXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cInt7bXlTdHlsZUNsYXNzfX0gYm9yZGVyLXJhZGl1cy03XCIgXHJcbiAgICAgICAgaW5wdXRTdHlsZUNsYXNzPVwie3tteVN0eWxlQ2xhc3N9fSB7e3ZhbGlkYXRpb25TdGF0dXNDc3NDbGFzc319XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbKG5nTW9kZWwpXT1cImlucHV0RmllbGRcIiBcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZWQoKVwiXHJcbiAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxyXG4gICAgICAgIChvbkJsdXIpPVwib25DaGFuZ2VvZk9wdGlvbnMoKVwiIG5hbWU9XCJ7e2lucHV0TmFtZX19XCJcclxuICAgICAgICBpZD1cInt7aW5wdXRJZH19XCIgc3VmZml4PVwiJVwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCJudW1PZkRlY2ltYWwgPz8gMFwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCJudW1PZkRlY2ltYWwgPz8gMFwiPlxyXG4gICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgPFRzaS1CdWJibGUtSW5mbyBbaW5mb1RleHRdPVwiaW5mb1RleHRcIj48L1RzaS1CdWJibGUtSW5mbz5cclxuPC9kaXY+Il19