@seniorsistemas/angular-components 17.27.1-fix-interactive-content-46e38731 → 17.27.1-fixlookupteste-sds-110-c424f879

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 (953) hide show
  1. package/button/lib/button/button.component.d.ts +3 -3
  2. package/button/lib/button/button.module.d.ts +1 -6
  3. package/confirm-dialog/README.md +226 -0
  4. package/confirm-dialog/index.d.ts +5 -0
  5. package/confirm-dialog/lib/confirm-dialog.model.d.ts +8 -0
  6. package/confirm-dialog/lib/confirm-dialog.service.d.ts +8 -0
  7. package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +7 -0
  8. package/confirm-dialog/public-api.d.ts +2 -0
  9. package/dialog/index.d.ts +5 -0
  10. package/dialog/lib/src/dialog/dialog.component.d.ts +29 -0
  11. package/dialog/lib/src/dialog/models/active-dialog.d.ts +11 -0
  12. package/dialog/lib/src/dialog/models/dialog-models.d.ts +18 -0
  13. package/dialog/lib/src/dialog/services/dialog.service.d.ts +24 -0
  14. package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +10 -0
  15. package/dialog/public-api.d.ts +4 -0
  16. package/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.d.ts +4 -3
  17. package/dynamic-form/lib/dynamic-form/dynamic-form.module.d.ts +24 -24
  18. package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +2 -0
  19. package/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.d.ts +3 -3
  20. package/esm2022/accordion/lib/accordion/accordion.component.mjs +84 -0
  21. package/esm2022/accordion/lib/accordion/accordion.module.mjs +36 -0
  22. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +124 -0
  23. package/esm2022/accordion/lib/accordion/models/accordion-button-settings.mjs +2 -0
  24. package/esm2022/accordion/public-api.mjs +4 -0
  25. package/esm2022/accordion/seniorsistemas-angular-components-accordion.mjs +5 -0
  26. package/esm2022/alert/lib/alert/alert.component.mjs +44 -0
  27. package/esm2022/alert/lib/alert/alert.module.mjs +18 -0
  28. package/esm2022/alert/public-api.mjs +3 -0
  29. package/esm2022/alert/seniorsistemas-angular-components-alert.mjs +5 -0
  30. package/esm2022/badge/lib/badge/badge.component.mjs +46 -0
  31. package/esm2022/badge/lib/badge/badge.module.mjs +20 -0
  32. package/esm2022/badge/lib/badge/types/badge-colors.mjs +4 -0
  33. package/esm2022/badge/lib/badge/types/badge-types.mjs +2 -0
  34. package/esm2022/badge/public-api.mjs +3 -0
  35. package/esm2022/badge/seniorsistemas-angular-components-badge.mjs +5 -0
  36. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +156 -0
  37. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +21 -0
  38. package/esm2022/bignumber-input/public-api.mjs +3 -0
  39. package/esm2022/bignumber-input/seniorsistemas-angular-components-bignumber-input.mjs +5 -0
  40. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +105 -0
  41. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +20 -0
  42. package/esm2022/breadcrumb/public-api.mjs +3 -0
  43. package/esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs +5 -0
  44. package/esm2022/button/lib/button/button.component.mjs +106 -0
  45. package/esm2022/button/lib/button/button.module.mjs +18 -0
  46. package/esm2022/button/lib/button/models/button-animations.mjs +2 -0
  47. package/esm2022/button/lib/button/models/button-badge-config.mjs +2 -0
  48. package/esm2022/button/lib/button/models/button-priority.mjs +2 -0
  49. package/esm2022/button/lib/button/models/button-size.mjs +2 -0
  50. package/esm2022/button/lib/button/models/index.mjs +2 -0
  51. package/esm2022/button/public-api.mjs +4 -0
  52. package/esm2022/button/seniorsistemas-angular-components-button.mjs +5 -0
  53. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +611 -0
  54. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +18 -0
  55. package/esm2022/calendar-mask/public-api.mjs +3 -0
  56. package/esm2022/calendar-mask/seniorsistemas-angular-components-calendar-mask.mjs +5 -0
  57. package/esm2022/card/lib/card/card.component.mjs +85 -0
  58. package/esm2022/card/lib/card/card.module.mjs +19 -0
  59. package/esm2022/card/public-api.mjs +3 -0
  60. package/esm2022/card/seniorsistemas-angular-components-card.mjs +5 -0
  61. package/esm2022/chat/lib/chat/chat.component.mjs +29 -0
  62. package/esm2022/chat/lib/chat/chat.module.mjs +22 -0
  63. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +29 -0
  64. package/esm2022/chat/lib/chat/types/chat-message.mjs +2 -0
  65. package/esm2022/chat/public-api.mjs +3 -0
  66. package/esm2022/chat/seniorsistemas-angular-components-chat.mjs +5 -0
  67. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +67 -0
  68. package/esm2022/checkbox/public-api.mjs +2 -0
  69. package/esm2022/checkbox/seniorsistemas-angular-components-checkbox.mjs +5 -0
  70. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +129 -0
  71. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +19 -0
  72. package/esm2022/checkbox-list/lib/checkbox-list/models/checkbox-list-data.mjs +2 -0
  73. package/esm2022/checkbox-list/lib/checkbox-list/models/checkbox-list-state.mjs +2 -0
  74. package/esm2022/checkbox-list/public-api.mjs +3 -0
  75. package/esm2022/checkbox-list/seniorsistemas-angular-components-checkbox-list.mjs +5 -0
  76. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +67 -0
  77. package/esm2022/chips/lib/chips/chips/chips.component.mjs +241 -0
  78. package/esm2022/chips/lib/chips/chips.module.mjs +22 -0
  79. package/esm2022/chips/lib/chips/models/chip-models.mjs +2 -0
  80. package/esm2022/chips/public-api.mjs +3 -0
  81. package/esm2022/chips/seniorsistemas-angular-components-chips.mjs +5 -0
  82. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +111 -0
  83. package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +32 -0
  84. package/esm2022/code-editor/lib/code-editor/core/facades/core-facade.mjs +85 -0
  85. package/esm2022/code-editor/lib/code-editor/core/facades/linter-facade.mjs +2 -0
  86. package/esm2022/code-editor/lib/code-editor/core/models/enums/marker-severity.mjs +7 -0
  87. package/esm2022/code-editor/lib/code-editor/core/models/index.mjs +5 -0
  88. package/esm2022/code-editor/lib/code-editor/core/models/interfaces/marker.mjs +2 -0
  89. package/esm2022/code-editor/lib/code-editor/core/use-cases/core-linters.mjs +11 -0
  90. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.mjs +97 -0
  91. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/editor-languages.mjs +17 -0
  92. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/json/json.language.mjs +67 -0
  93. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-empty-state.mjs +29 -0
  94. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-loading-state.mjs +29 -0
  95. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper-style.mjs +17 -0
  96. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper.mjs +77 -0
  97. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/index.mjs +4 -0
  98. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-style.mjs +35 -0
  99. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.mjs +334 -0
  100. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.service.mjs +25 -0
  101. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/base-configs.mjs +18 -0
  102. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/grammar.mjs +37 -0
  103. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/completion-types.mjs +10 -0
  104. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/enum-type-order.mjs +8 -0
  105. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/keywords.mjs +12 -0
  106. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/meta-type.mjs +36 -0
  107. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/request-types.mjs +9 -0
  108. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/index.mjs +22 -0
  109. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/completion-Item.mjs +2 -0
  110. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/facade-metadata-name.mjs +2 -0
  111. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/fields-order-by.mjs +2 -0
  112. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/get-facade-metadata-by-path.mjs +2 -0
  113. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-context-metadata-by-id.mjs +2 -0
  114. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-expression-metadata.mjs +2 -0
  115. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-facade-metadata-names.mjs +2 -0
  116. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-expression-metadata.mjs +2 -0
  117. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-context-metadata.mjs +2 -0
  118. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-facade-metadata.mjs +2 -0
  119. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-field-metadata.mjs +2 -0
  120. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-page-request.mjs +2 -0
  121. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/safe-http-communication.mjs +2 -0
  122. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/tax-calculation-configs.mjs +2 -0
  123. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation-language-configs.mjs +11 -0
  124. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation.language.mjs +9 -0
  125. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-language-configs.mjs +14 -0
  126. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-safe-response.mjs +18 -0
  127. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/index.mjs +3 -0
  128. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/index.mjs +4 -0
  129. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/types/diagnostic-severity.mjs +2 -0
  130. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/types/editor-theme.mjs +2 -0
  131. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/editor-themes.mjs +15 -0
  132. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/autocomplete-tooltip.mjs +61 -0
  133. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/font-style.mjs +39 -0
  134. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/line-counter.mjs +25 -0
  135. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/scrollbars.mjs +18 -0
  136. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-highlight-style.mjs +16 -0
  137. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.mjs +13 -0
  138. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-theme.mjs +22 -0
  139. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/convert-markers-to-diagnostics.mjs +15 -0
  140. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/index.mjs +3 -0
  141. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/is-current-position-inside-string.mjs +5 -0
  142. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/custom-http-client.mjs +82 -0
  143. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-blob-response.mjs +10 -0
  144. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-json-response.mjs +9 -0
  145. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/index.mjs +3 -0
  146. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations-service.mjs +37 -0
  147. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +32 -0
  148. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/index.mjs +3 -0
  149. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/models/index.mjs +3 -0
  150. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/models/interfaces/translations.mjs +2 -0
  151. package/esm2022/code-editor/lib/code-editor/infra/utils/index.mjs +3 -0
  152. package/esm2022/code-editor/lib/code-editor/models/enums/languages.mjs +6 -0
  153. package/esm2022/code-editor/lib/code-editor/models/enums/themes.mjs +5 -0
  154. package/esm2022/code-editor/lib/code-editor/models/index.mjs +6 -0
  155. package/esm2022/code-editor/lib/code-editor/models/interfaces/editor-options.mjs +2 -0
  156. package/esm2022/code-editor/public-api.mjs +6 -0
  157. package/esm2022/code-editor/seniorsistemas-angular-components-code-editor.mjs +5 -0
  158. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +81 -0
  159. package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +18 -0
  160. package/esm2022/collapse-link/public-api.mjs +3 -0
  161. package/esm2022/collapse-link/seniorsistemas-angular-components-collapse-link.mjs +5 -0
  162. package/esm2022/common/lib/angular-components.module.mjs +24 -0
  163. package/esm2022/common/lib/custom-http-client/custom-http-client.mjs +86 -0
  164. package/esm2022/common/lib/custom-http-client/json-response-formatters/format-blob-response.mjs +10 -0
  165. package/esm2022/common/lib/custom-http-client/json-response-formatters/format-json-response.mjs +9 -0
  166. package/esm2022/common/lib/debouce.mjs +35 -0
  167. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +11 -0
  168. package/esm2022/common/lib/svg-factory/components/senior-icon/senior-icon.component.mjs +11 -0
  169. package/esm2022/common/lib/svg-factory/components/svg-factory-icons.mjs +2 -0
  170. package/esm2022/common/lib/svg-factory/index.mjs +3 -0
  171. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +44 -0
  172. package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +26 -0
  173. package/esm2022/common/public-api.mjs +5 -0
  174. package/esm2022/common/seniorsistemas-angular-components-common.mjs +5 -0
  175. package/esm2022/confirm-dialog/lib/confirm-dialog.model.mjs +2 -0
  176. package/esm2022/confirm-dialog/lib/confirm-dialog.service.mjs +34 -0
  177. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +17 -0
  178. package/esm2022/confirm-dialog/public-api.mjs +2 -0
  179. package/esm2022/confirm-dialog/seniorsistemas-angular-components-confirm-dialog.mjs +5 -0
  180. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +52 -0
  181. package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +19 -0
  182. package/esm2022/control-errors/public-api.mjs +3 -0
  183. package/esm2022/control-errors/seniorsistemas-angular-components-control-errors.mjs +5 -0
  184. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +319 -0
  185. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +41 -0
  186. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +42 -0
  187. package/esm2022/country-phone-picker/lib/country-phone-picker/models/country-phone-data.mjs +2 -0
  188. package/esm2022/country-phone-picker/lib/country-phone-picker/models/ordination.mjs +7 -0
  189. package/esm2022/country-phone-picker/lib/country-phone-picker/models/phone-selection-data.mjs +2 -0
  190. package/esm2022/country-phone-picker/lib/country-phone-picker/resources/countries.mjs +228 -0
  191. package/esm2022/country-phone-picker/public-api.mjs +5 -0
  192. package/esm2022/country-phone-picker/seniorsistemas-angular-components-country-phone-picker.mjs +5 -0
  193. package/esm2022/currency/lib/currency.service.mjs +25 -0
  194. package/esm2022/currency/lib/models/currencies.mjs +161 -0
  195. package/esm2022/currency/lib/types/currency.mjs +2 -0
  196. package/esm2022/currency/public-api.mjs +3 -0
  197. package/esm2022/currency/seniorsistemas-angular-components-currency.mjs +5 -0
  198. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +690 -0
  199. package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +45 -0
  200. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +35 -0
  201. package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +17 -0
  202. package/esm2022/custom-fields/public-api.mjs +4 -0
  203. package/esm2022/custom-fields/seniorsistemas-angular-components-custom-fields.mjs +5 -0
  204. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +82 -0
  205. package/esm2022/dialog/lib/src/dialog/models/active-dialog.mjs +18 -0
  206. package/esm2022/dialog/lib/src/dialog/models/dialog-models.mjs +2 -0
  207. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +96 -0
  208. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +29 -0
  209. package/esm2022/dialog/public-api.mjs +4 -0
  210. package/esm2022/dialog/seniorsistemas-angular-components-dialog.mjs +5 -0
  211. package/esm2022/dynamic-form/lib/dynamic-form/components/field-label/field-label.component.mjs +20 -0
  212. package/esm2022/dynamic-form/lib/dynamic-form/components/grid/row/row.component.mjs +41 -0
  213. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.mjs +632 -0
  214. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/default-filter.mjs +2 -0
  215. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/label-options.mjs +2 -0
  216. package/esm2022/dynamic-form/lib/dynamic-form/components/structure/base-structure-component.mjs +2 -0
  217. package/esm2022/dynamic-form/lib/dynamic-form/components/structure/fieldset/fieldset.component.mjs +27 -0
  218. package/esm2022/dynamic-form/lib/dynamic-form/components/structure/section/section.component.mjs +33 -0
  219. package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-config.mjs +71 -0
  220. package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-type.mjs +26 -0
  221. package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/grid.mjs +14 -0
  222. package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/row.mjs +10 -0
  223. package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid-type.mjs +5 -0
  224. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/fieldset.mjs +10 -0
  225. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/section.mjs +31 -0
  226. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/structure.mjs +9 -0
  227. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure-type.mjs +6 -0
  228. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.component.mjs +41 -0
  229. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.directive.mjs +107 -0
  230. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.mjs +189 -0
  231. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.module.mjs +289 -0
  232. package/esm2022/dynamic-form/lib/dynamic-form/form-field/addon-config.mjs +2 -0
  233. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-size.mjs +13 -0
  234. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-type.mjs +34 -0
  235. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +24 -0
  236. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +37 -0
  237. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/blob-field.mjs +31 -0
  238. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-field.mjs +30 -0
  239. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +15 -0
  240. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/button-field.mjs +47 -0
  241. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/calendar-field.mjs +56 -0
  242. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +9 -0
  243. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/chips-field.mjs +25 -0
  244. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +15 -0
  245. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/currency-field.mjs +14 -0
  246. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/decimal-field.mjs +16 -0
  247. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/editor-field.mjs +15 -0
  248. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/field.mjs +64 -0
  249. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.mjs +66 -0
  250. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/number-field.mjs +38 -0
  251. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/password-field.mjs +33 -0
  252. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/profile-picture.mjs +35 -0
  253. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +27 -0
  254. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/select-field.mjs +43 -0
  255. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/slider-field.mjs +30 -0
  256. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +17 -0
  257. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-field.mjs +30 -0
  258. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-ia-field.mjs +32 -0
  259. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-field.mjs +38 -0
  260. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +36 -0
  261. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/base-field-component.mjs +22 -0
  262. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +124 -0
  263. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +27 -0
  264. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +23 -0
  265. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/button-field/button-field.component.mjs +31 -0
  266. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +118 -0
  267. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +21 -0
  268. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/chips/chips-field.component.mjs +59 -0
  269. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +29 -0
  270. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/currency/currency-field.component.mjs +90 -0
  271. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/editor/editor-field.component.mjs +23 -0
  272. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/file-upload/file-upload-field.component.mjs +56 -0
  273. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +23 -0
  274. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/number/number-field.component.mjs +121 -0
  275. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/password/password-field.component.mjs +75 -0
  276. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.mjs +22 -0
  277. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +52 -0
  278. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/select/select-field.component.mjs +24 -0
  279. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/slider/slider-field.component.mjs +103 -0
  280. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.mjs +25 -0
  281. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text/text-field.component.mjs +88 -0
  282. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +29 -0
  283. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.mjs +22 -0
  284. package/esm2022/dynamic-form/lib/dynamic-form/form-field/form-field.mjs +243 -0
  285. package/esm2022/dynamic-form/lib/dynamic-form/services/dynamic-form-cache.mjs +150 -0
  286. package/esm2022/dynamic-form/public-api.mjs +44 -0
  287. package/esm2022/dynamic-form/seniorsistemas-angular-components-dynamic-form.mjs +5 -0
  288. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +44 -0
  289. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +18 -0
  290. package/esm2022/editable-overlay/public-api.mjs +3 -0
  291. package/esm2022/editable-overlay/seniorsistemas-angular-components-editable-overlay.mjs +5 -0
  292. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +51 -0
  293. package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +22 -0
  294. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +34 -0
  295. package/esm2022/empty-state/public-api.mjs +4 -0
  296. package/esm2022/empty-state/seniorsistemas-angular-components-empty-state.mjs +5 -0
  297. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +78 -0
  298. package/esm2022/fieldset/lib/fieldset/fieldset.models.mjs +2 -0
  299. package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +19 -0
  300. package/esm2022/fieldset/public-api.mjs +3 -0
  301. package/esm2022/fieldset/seniorsistemas-angular-components-fieldset.mjs +5 -0
  302. package/esm2022/file-upload/lib/file-upload/file-upload.component.mjs +276 -0
  303. package/esm2022/file-upload/lib/file-upload/file-upload.module.mjs +38 -0
  304. package/esm2022/file-upload/lib/file-upload/file-upload.service.mjs +18 -0
  305. package/esm2022/file-upload/lib/file-upload/models/file-dto.mjs +2 -0
  306. package/esm2022/file-upload/lib/file-upload/models/file-upload-permissions.mjs +2 -0
  307. package/esm2022/file-upload/lib/file-upload/models/list-blob-metadata.mjs +2 -0
  308. package/esm2022/file-upload/lib/file-upload/models/uploadError.mjs +2 -0
  309. package/esm2022/file-upload/lib/file-upload/models/validate-errors.mjs +2 -0
  310. package/esm2022/file-upload/public-api.mjs +3 -0
  311. package/esm2022/file-upload/seniorsistemas-angular-components-file-upload.mjs +5 -0
  312. package/esm2022/gantt/lib/gantt/components/gantt/arrow.mjs +87 -0
  313. package/esm2022/gantt/lib/gantt/components/gantt/bar.mjs +294 -0
  314. package/esm2022/gantt/lib/gantt/components/gantt/gantt-options.mjs +20 -0
  315. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +812 -0
  316. package/esm2022/gantt/lib/gantt/components/gantt/popup.mjs +110 -0
  317. package/esm2022/gantt/lib/gantt/components/gantt/utils/date-utils.mjs +116 -0
  318. package/esm2022/gantt/lib/gantt/components/gantt/utils/svg-utils.mjs +111 -0
  319. package/esm2022/gantt/lib/gantt/components/side-table/side-table.component.mjs +32 -0
  320. package/esm2022/gantt/lib/gantt/gantt.component.mjs +146 -0
  321. package/esm2022/gantt/lib/gantt/gantt.module.mjs +24 -0
  322. package/esm2022/gantt/lib/gantt/models/index.mjs +2 -0
  323. package/esm2022/gantt/lib/gantt/models/options.mjs +2 -0
  324. package/esm2022/gantt/lib/gantt/models/task.mjs +2 -0
  325. package/esm2022/gantt/lib/gantt/models/view-mode.mjs +12 -0
  326. package/esm2022/gantt/public-api.mjs +4 -0
  327. package/esm2022/gantt/seniorsistemas-angular-components-gantt.mjs +5 -0
  328. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +73 -0
  329. package/esm2022/global-search/lib/global-search/global-search.component.mjs +140 -0
  330. package/esm2022/global-search/lib/global-search/global-search.module.mjs +78 -0
  331. package/esm2022/global-search/lib/global-search/types/global-search-size.enum.mjs +2 -0
  332. package/esm2022/global-search/public-api.mjs +5 -0
  333. package/esm2022/global-search/seniorsistemas-angular-components-global-search.mjs +5 -0
  334. package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +34 -0
  335. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +19 -0
  336. package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +19 -0
  337. package/esm2022/grid-menu/lib/grid-menu/types/grid-menu-item.mjs +2 -0
  338. package/esm2022/grid-menu/public-api.mjs +4 -0
  339. package/esm2022/grid-menu/seniorsistemas-angular-components-grid-menu.mjs +5 -0
  340. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +84 -0
  341. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +314 -0
  342. package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +25 -0
  343. package/esm2022/help-popover/lib/help-popover/models/help-popover.models.mjs +2 -0
  344. package/esm2022/help-popover/public-api.mjs +4 -0
  345. package/esm2022/help-popover/seniorsistemas-angular-components-help-popover.mjs +5 -0
  346. package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/components/ia-insight-card-loader/ia-insight-card-loader.component.mjs +13 -0
  347. package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/ia-insight-card.component.mjs +82 -0
  348. package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.mjs +49 -0
  349. package/esm2022/ia-insight/lib/ia-insight/ia-insight.component.mjs +66 -0
  350. package/esm2022/ia-insight/lib/ia-insight/ia-insight.module.mjs +47 -0
  351. package/esm2022/ia-insight/lib/ia-insight/models/ia-insight-item.mjs +2 -0
  352. package/esm2022/ia-insight/lib/ia-insight/models/ia-insight-template-types.mjs +2 -0
  353. package/esm2022/ia-insight/lib/ia-insight/models/index.mjs +2 -0
  354. package/esm2022/ia-insight/public-api.mjs +4 -0
  355. package/esm2022/ia-insight/seniorsistemas-angular-components-ia-insight.mjs +5 -0
  356. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +179 -0
  357. package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +23 -0
  358. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +73 -0
  359. package/esm2022/image-cropper/public-api.mjs +4 -0
  360. package/esm2022/image-cropper/seniorsistemas-angular-components-image-cropper.mjs +5 -0
  361. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +28 -0
  362. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +18 -0
  363. package/esm2022/infinite-scroll/public-api.mjs +3 -0
  364. package/esm2022/infinite-scroll/seniorsistemas-angular-components-infinite-scroll.mjs +5 -0
  365. package/esm2022/info-sign/lib/info-sign/components/info-sign/info-sign.component.mjs +17 -0
  366. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +68 -0
  367. package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +20 -0
  368. package/esm2022/info-sign/public-api.mjs +3 -0
  369. package/esm2022/info-sign/seniorsistemas-angular-components-info-sign.mjs +5 -0
  370. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +53 -0
  371. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.mjs +32 -0
  372. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +85 -0
  373. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +32 -0
  374. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area/inline-edit-text-area.component.mjs +33 -0
  375. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area-ia/inline-edit-text-area-ia.component.mjs +32 -0
  376. package/esm2022/inline-edit/lib/inline-edit/components/index.mjs +8 -0
  377. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +105 -0
  378. package/esm2022/inline-edit/lib/inline-edit/fields/index.mjs +8 -0
  379. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-calendar-field.mjs +45 -0
  380. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-field.mjs +13 -0
  381. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-lookup-field.mjs +60 -0
  382. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-number-field.mjs +38 -0
  383. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-area-field.mjs +15 -0
  384. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-area-ia-field.mjs +7 -0
  385. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-field.mjs +7 -0
  386. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +66 -0
  387. package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +102 -0
  388. package/esm2022/inline-edit/lib/inline-edit/types/addon-config.mjs +2 -0
  389. package/esm2022/inline-edit/public-api.mjs +4 -0
  390. package/esm2022/inline-edit/seniorsistemas-angular-components-inline-edit.mjs +5 -0
  391. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +63 -0
  392. package/esm2022/interactive-content/public-api.mjs +2 -0
  393. package/esm2022/interactive-content/seniorsistemas-angular-components-interactive-content.mjs +5 -0
  394. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +100 -0
  395. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +62 -0
  396. package/esm2022/kanban/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +17 -0
  397. package/esm2022/kanban/lib/kanban/kanban-event.service.mjs +26 -0
  398. package/esm2022/kanban/lib/kanban/kanban.component.mjs +219 -0
  399. package/esm2022/kanban/lib/kanban/kanban.module.mjs +56 -0
  400. package/esm2022/kanban/lib/kanban/types/index.mjs +2 -0
  401. package/esm2022/kanban/lib/kanban/types/kanban-data.mjs +2 -0
  402. package/esm2022/kanban/lib/kanban/types/kanban-template-types.mjs +2 -0
  403. package/esm2022/kanban/public-api.mjs +3 -0
  404. package/esm2022/kanban/seniorsistemas-angular-components-kanban.mjs +5 -0
  405. package/esm2022/label-value/lib/label-value/label-value.component.mjs +35 -0
  406. package/esm2022/label-value/lib/label-value/label-value.module.mjs +22 -0
  407. package/esm2022/label-value/lib/label-value/types/label-value-configuration.mjs +2 -0
  408. package/esm2022/label-value/public-api.mjs +3 -0
  409. package/esm2022/label-value/seniorsistemas-angular-components-label-value.mjs +5 -0
  410. package/esm2022/lib/locale/fallback.mjs +333 -0
  411. package/esm2022/loading-state/lib/loading-state/components/dots-indicator/dots-indicator.components.mjs +11 -0
  412. package/esm2022/loading-state/lib/loading-state/components/loading-state-indicators.mjs +6 -0
  413. package/esm2022/loading-state/lib/loading-state/components/logo-indicator/logo-indicator.component.mjs +12 -0
  414. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +74 -0
  415. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +62 -0
  416. package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +30 -0
  417. package/esm2022/loading-state/public-api.mjs +5 -0
  418. package/esm2022/loading-state/seniorsistemas-angular-components-loading-state.mjs +5 -0
  419. package/esm2022/locale/lib/locale/locale.module.mjs +85 -0
  420. package/esm2022/locale/lib/locale/locale.service.mjs +87 -0
  421. package/esm2022/locale/lib/locale/options/calendar.mjs +24 -0
  422. package/esm2022/locale/lib/locale/options/index.mjs +27 -0
  423. package/esm2022/locale/lib/locale/options/number.mjs +9 -0
  424. package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +18 -0
  425. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +38 -0
  426. package/esm2022/locale/lib/locale/pipes/localized-currency-impure.pipe.mjs +21 -0
  427. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +53 -0
  428. package/esm2022/locale/lib/locale/pipes/localized-date-impure.pipe.mjs +15 -0
  429. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +23 -0
  430. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +31 -0
  431. package/esm2022/locale/lib/locale/pipes/localized-time-impure.pipe.mjs +15 -0
  432. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +23 -0
  433. package/esm2022/locale/public-api.mjs +13 -0
  434. package/esm2022/locale/seniorsistemas-angular-components-locale.mjs +5 -0
  435. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +63 -0
  436. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +18 -0
  437. package/esm2022/localized-number-input/public-api.mjs +3 -0
  438. package/esm2022/localized-number-input/seniorsistemas-angular-components-localized-number-input.mjs +5 -0
  439. package/esm2022/mask/lib/mask/mask-formatter.module.mjs +16 -0
  440. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +65 -0
  441. package/esm2022/mask/public-api.mjs +3 -0
  442. package/esm2022/mask/seniorsistemas-angular-components-mask.mjs +5 -0
  443. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +37 -0
  444. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +51 -0
  445. package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +27 -0
  446. package/esm2022/mouse-events/public-api.mjs +4 -0
  447. package/esm2022/mouse-events/seniorsistemas-angular-components-mouse-events.mjs +5 -0
  448. package/esm2022/navigation-button/lib/navigation-button/models/index.mjs +2 -0
  449. package/esm2022/navigation-button/lib/navigation-button/models/navigation-button-item.mjs +2 -0
  450. package/esm2022/navigation-button/lib/navigation-button/models/navigation-button-step-changed-info.mjs +2 -0
  451. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +134 -0
  452. package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +20 -0
  453. package/esm2022/navigation-button/public-api.mjs +4 -0
  454. package/esm2022/navigation-button/seniorsistemas-angular-components-navigation-button.mjs +5 -0
  455. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +164 -0
  456. package/esm2022/number-input/lib/number-input/number-input.module.mjs +21 -0
  457. package/esm2022/number-input/public-api.mjs +3 -0
  458. package/esm2022/number-input/seniorsistemas-angular-components-number-input.mjs +5 -0
  459. package/esm2022/numeric/lib/numeric.module.mjs +18 -0
  460. package/esm2022/numeric/lib/numeric.pipe.mjs +29 -0
  461. package/esm2022/numeric/lib/numeric.service.mjs +92 -0
  462. package/esm2022/numeric/public-api.mjs +4 -0
  463. package/esm2022/numeric/seniorsistemas-angular-components-numeric.mjs +5 -0
  464. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +51 -0
  465. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +87 -0
  466. package/esm2022/object-card/lib/object-card/object-card.component.mjs +171 -0
  467. package/esm2022/object-card/lib/object-card/object-card.module.mjs +24 -0
  468. package/esm2022/object-card/public-api.mjs +5 -0
  469. package/esm2022/object-card/seniorsistemas-angular-components-object-card.mjs +5 -0
  470. package/esm2022/paginator/lib/models/paginator.models.mjs +2 -0
  471. package/esm2022/paginator/lib/paginator/paginator.component.mjs +138 -0
  472. package/esm2022/paginator/public-api.mjs +2 -0
  473. package/esm2022/paginator/seniorsistemas-angular-components-paginator.mjs +5 -0
  474. package/esm2022/panel/lib/panel/panel.component.mjs +91 -0
  475. package/esm2022/panel/lib/panel/panel.module.mjs +20 -0
  476. package/esm2022/panel/public-api.mjs +3 -0
  477. package/esm2022/panel/seniorsistemas-angular-components-panel.mjs +5 -0
  478. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +92 -0
  479. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +210 -0
  480. package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +19 -0
  481. package/esm2022/password-strength/lib/password-strength/types/password-positions.mjs +2 -0
  482. package/esm2022/password-strength/lib/password-strength/types/password-strengths.mjs +2 -0
  483. package/esm2022/password-strength/public-api.mjs +4 -0
  484. package/esm2022/password-strength/seniorsistemas-angular-components-password-strength.mjs +5 -0
  485. package/esm2022/picklist/lib/picklist/picklist.component.mjs +299 -0
  486. package/esm2022/picklist/lib/picklist/picklist.module.mjs +36 -0
  487. package/esm2022/picklist/lib/picklist/types/index.mjs +2 -0
  488. package/esm2022/picklist/lib/picklist/types/picklist-item.mjs +2 -0
  489. package/esm2022/picklist/lib/picklist/types/picklist-template-types.mjs +2 -0
  490. package/esm2022/picklist/public-api.mjs +5 -0
  491. package/esm2022/picklist/seniorsistemas-angular-components-picklist.mjs +5 -0
  492. package/esm2022/product-header/lib/product-header/product-header.component.mjs +44 -0
  493. package/esm2022/product-header/lib/product-header/product-header.module.mjs +20 -0
  494. package/esm2022/product-header/public-api.mjs +3 -0
  495. package/esm2022/product-header/seniorsistemas-angular-components-product-header.mjs +5 -0
  496. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/confirmation-texts.mjs +2 -0
  497. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/cropper-labels-config.mjs +2 -0
  498. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/file-validation-errors.mjs +2 -0
  499. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/index.mjs +2 -0
  500. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/profile-picture-picker-data.mjs +2 -0
  501. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +277 -0
  502. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +25 -0
  503. package/esm2022/profile-picture-picker/lib/profile-picture-picker/validators/index.mjs +2 -0
  504. package/esm2022/profile-picture-picker/lib/profile-picture-picker/validators/validators.mjs +28 -0
  505. package/esm2022/profile-picture-picker/public-api.mjs +4 -0
  506. package/esm2022/profile-picture-picker/seniorsistemas-angular-components-profile-picture-picker.mjs +5 -0
  507. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +60 -0
  508. package/esm2022/progressbar/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.mjs +19 -0
  509. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +57 -0
  510. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +21 -0
  511. package/esm2022/progressbar/lib/progressbar/types/index.mjs +2 -0
  512. package/esm2022/progressbar/lib/progressbar/types/progressbar-colors.mjs +2 -0
  513. package/esm2022/progressbar/lib/progressbar/types/progressbar-mode.mjs +2 -0
  514. package/esm2022/progressbar/public-api.mjs +4 -0
  515. package/esm2022/progressbar/seniorsistemas-angular-components-progressbar.mjs +5 -0
  516. package/esm2022/public-api.mjs +2 -0
  517. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +82 -0
  518. package/esm2022/radio-button/lib/radio-button-group/models/radio-button-group.models.mjs +2 -0
  519. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +62 -0
  520. package/esm2022/radio-button/lib/services/radio-button-registry.service.mjs +38 -0
  521. package/esm2022/radio-button/public-api.mjs +3 -0
  522. package/esm2022/radio-button/seniorsistemas-angular-components-radio-button.mjs +5 -0
  523. package/esm2022/rating-scale/lib/rating-scale/models/index.mjs +2 -0
  524. package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +2 -0
  525. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +54 -0
  526. package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +24 -0
  527. package/esm2022/rating-scale/public-api.mjs +3 -0
  528. package/esm2022/rating-scale/seniorsistemas-angular-components-rating-scale.mjs +5 -0
  529. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +27 -0
  530. package/esm2022/select/lib/select/select.component.mjs +712 -0
  531. package/esm2022/select/public-api.mjs +2 -0
  532. package/esm2022/select/seniorsistemas-angular-components-select.mjs +5 -0
  533. package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +28 -0
  534. package/esm2022/select-button/lib/select-button/models/select-button-item.mjs +2 -0
  535. package/esm2022/select-button/lib/select-button/select-button.component.mjs +122 -0
  536. package/esm2022/select-button/lib/select-button/select-button.module.mjs +23 -0
  537. package/esm2022/select-button/public-api.mjs +3 -0
  538. package/esm2022/select-button/seniorsistemas-angular-components-select-button.mjs +5 -0
  539. package/esm2022/seniorsistemas-angular-components.mjs +5 -0
  540. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +19 -0
  541. package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +19 -0
  542. package/esm2022/shared/lib/shared/helpers.mjs +31 -0
  543. package/esm2022/shared/lib/shared/models/border-button-options.mjs +2 -0
  544. package/esm2022/shared/lib/shared/models/severities.mjs +9 -0
  545. package/esm2022/shared/public-api.mjs +5 -0
  546. package/esm2022/shared/seniorsistemas-angular-components-shared.mjs +5 -0
  547. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +114 -0
  548. package/esm2022/sidebar/lib/sidebar/sidebar.module.mjs +20 -0
  549. package/esm2022/sidebar/public-api.mjs +3 -0
  550. package/esm2022/sidebar/seniorsistemas-angular-components-sidebar.mjs +5 -0
  551. package/esm2022/slide-panel/lib/slide-panel/slide-panel.component.mjs +137 -0
  552. package/esm2022/slide-panel/lib/slide-panel/slide-panel.module.mjs +20 -0
  553. package/esm2022/slide-panel/lib/slide-panel/slide-panel.service.mjs +26 -0
  554. package/esm2022/slide-panel/public-api.mjs +4 -0
  555. package/esm2022/slide-panel/seniorsistemas-angular-components-slide-panel.mjs +5 -0
  556. package/esm2022/slider/lib/slider/slider.component.mjs +601 -0
  557. package/esm2022/slider/lib/slider/slider.module.mjs +19 -0
  558. package/esm2022/slider/public-api.mjs +3 -0
  559. package/esm2022/slider/seniorsistemas-angular-components-slider.mjs +5 -0
  560. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +217 -0
  561. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +24 -0
  562. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +146 -0
  563. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +81 -0
  564. package/esm2022/speech-recognition/public-api.mjs +5 -0
  565. package/esm2022/speech-recognition/seniorsistemas-angular-components-speech-recognition.mjs +5 -0
  566. package/esm2022/split-button/lib/split-button/models/index.mjs +2 -0
  567. package/esm2022/split-button/lib/split-button/models/split-button-option.mjs +2 -0
  568. package/esm2022/split-button/lib/split-button/models/split-button-type.mjs +2 -0
  569. package/esm2022/split-button/lib/split-button/split-button.component.mjs +64 -0
  570. package/esm2022/split-button/lib/split-button/split-button.module.mjs +18 -0
  571. package/esm2022/split-button/public-api.mjs +4 -0
  572. package/esm2022/split-button/seniorsistemas-angular-components-split-button.mjs +5 -0
  573. package/esm2022/star-rating/public-api.mjs +2 -0
  574. package/esm2022/star-rating/seniorsistemas-angular-components-star-rating.mjs +5 -0
  575. package/esm2022/star-rating/star-rating/star-rating-models.mjs +2 -0
  576. package/esm2022/star-rating/star-rating/star-rating.component.mjs +63 -0
  577. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +119 -0
  578. package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +19 -0
  579. package/esm2022/stats-card/public-api.mjs +3 -0
  580. package/esm2022/stats-card/seniorsistemas-angular-components-stats-card.mjs +5 -0
  581. package/esm2022/steps/lib/steps/steps.component.mjs +122 -0
  582. package/esm2022/steps/lib/steps/steps.module.mjs +19 -0
  583. package/esm2022/steps/public-api.mjs +3 -0
  584. package/esm2022/steps/seniorsistemas-angular-components-steps.mjs +5 -0
  585. package/esm2022/structure/lib/structure/footer.component.mjs +14 -0
  586. package/esm2022/structure/lib/structure/header.component.mjs +14 -0
  587. package/esm2022/structure/lib/structure/structure.module.mjs +19 -0
  588. package/esm2022/structure/public-api.mjs +5 -0
  589. package/esm2022/structure/seniorsistemas-angular-components-structure.mjs +5 -0
  590. package/esm2022/switch/lib/switch/switch.component.mjs +93 -0
  591. package/esm2022/switch/lib/switch/switch.module.mjs +18 -0
  592. package/esm2022/switch/public-api.mjs +3 -0
  593. package/esm2022/switch/seniorsistemas-angular-components-switch.mjs +5 -0
  594. package/esm2022/table/lib/locale-utils.mjs +15 -0
  595. package/esm2022/table/lib/table/export-utils.mjs +112 -0
  596. package/esm2022/table/lib/table/navigation/navigation.directive.mjs +130 -0
  597. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +38 -0
  598. package/esm2022/table/lib/table/table-column/index.mjs +3 -0
  599. package/esm2022/table/lib/table/table-column/models/badge-column.interface.mjs +2 -0
  600. package/esm2022/table/lib/table/table-column/models/badge-configs.interface.mjs +2 -0
  601. package/esm2022/table/lib/table/table-column/models/column-colors.mjs +2 -0
  602. package/esm2022/table/lib/table/table-column/models/column-values.interface.mjs +2 -0
  603. package/esm2022/table/lib/table/table-column/models/column.interface.mjs +2 -0
  604. package/esm2022/table/lib/table/table-column/models/dynamic-editable-grid.interface.mjs +2 -0
  605. package/esm2022/table/lib/table/table-column/models/enum-badge-colors.mjs +10 -0
  606. package/esm2022/table/lib/table/table-column/models/enum-column-field-type.mjs +13 -0
  607. package/esm2022/table/lib/table/table-column/models/index.mjs +11 -0
  608. package/esm2022/table/lib/table/table-column/models/locale-options.interface.mjs +2 -0
  609. package/esm2022/table/lib/table/table-column/models/number-locale-options.interface.mjs +2 -0
  610. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +299 -0
  611. package/esm2022/table/lib/table/table-paging/index.mjs +3 -0
  612. package/esm2022/table/lib/table/table-paging/models/custom-action.interface.mjs +2 -0
  613. package/esm2022/table/lib/table/table-paging/models/index.mjs +2 -0
  614. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +321 -0
  615. package/esm2022/table/lib/table/table.module.mjs +27 -0
  616. package/esm2022/table/public-api.mjs +6 -0
  617. package/esm2022/table/seniorsistemas-angular-components-table.mjs +5 -0
  618. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +151 -0
  619. package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +20 -0
  620. package/esm2022/table-header/public-api.mjs +3 -0
  621. package/esm2022/table-header/seniorsistemas-angular-components-table-header.mjs +5 -0
  622. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +36 -0
  623. package/esm2022/tabs/lib/tabs/tabs.component.mjs +51 -0
  624. package/esm2022/tabs/public-api.mjs +3 -0
  625. package/esm2022/tabs/seniorsistemas-angular-components-tabs.mjs +5 -0
  626. package/esm2022/template/lib/template/template.directive.mjs +22 -0
  627. package/esm2022/template/lib/template/template.module.mjs +17 -0
  628. package/esm2022/template/public-api.mjs +3 -0
  629. package/esm2022/template/seniorsistemas-angular-components-template.mjs +5 -0
  630. package/esm2022/text-area/lib/text-area/text-area.component.mjs +116 -0
  631. package/esm2022/text-area/lib/text-area.module.mjs +35 -0
  632. package/esm2022/text-area/public-api.mjs +3 -0
  633. package/esm2022/text-area/seniorsistemas-angular-components-text-area.mjs +5 -0
  634. package/esm2022/text-area-ia/lib/services/IAssist/iassist.service.mjs +77 -0
  635. package/esm2022/text-area-ia/lib/services/IAssist/models/iassist-input-data.mjs +3 -0
  636. package/esm2022/text-area-ia/lib/services/IAssist/models/iassist-response.mjs +3 -0
  637. package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.component.mjs +150 -0
  638. package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.module.mjs +50 -0
  639. package/esm2022/text-area-ia/public-api.mjs +3 -0
  640. package/esm2022/text-area-ia/seniorsistemas-angular-components-text-area-ia.mjs +5 -0
  641. package/esm2022/thumbnail/lib/thumbnail/thumbnail-size.mjs +2 -0
  642. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +77 -0
  643. package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +20 -0
  644. package/esm2022/thumbnail/lib/thumbnail/thumbnail.service.mjs +62 -0
  645. package/esm2022/thumbnail/public-api.mjs +4 -0
  646. package/esm2022/thumbnail/seniorsistemas-angular-components-thumbnail.mjs +5 -0
  647. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-image/thumbnail-item-image.component.mjs +17 -0
  648. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-video/thumbnail-item-video.component.mjs +42 -0
  649. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +64 -0
  650. package/esm2022/thumbnails/lib/thumbnails/models/thumbnails-item.mjs +2 -0
  651. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +48 -0
  652. package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +24 -0
  653. package/esm2022/thumbnails/public-api.mjs +3 -0
  654. package/esm2022/thumbnails/seniorsistemas-angular-components-thumbnails.mjs +5 -0
  655. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +303 -0
  656. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  657. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +73 -0
  658. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +179 -0
  659. package/esm2022/tiered-menu/lib/tiered-menu/models/index.mjs +2 -0
  660. package/esm2022/tiered-menu/lib/tiered-menu/models/tiered-menu-item-data.mjs +2 -0
  661. package/esm2022/tiered-menu/lib/tiered-menu/models/tiered-menu-item-internal-data.mjs +2 -0
  662. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.event.service.mjs +17 -0
  663. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.global.service.mjs +11 -0
  664. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.service.mjs +54 -0
  665. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +234 -0
  666. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +34 -0
  667. package/esm2022/tiered-menu/public-api.mjs +6 -0
  668. package/esm2022/tiered-menu/seniorsistemas-angular-components-tiered-menu.mjs +5 -0
  669. package/esm2022/tile/lib/tile/tile.component.mjs +65 -0
  670. package/esm2022/tile/lib/tile/tile.module.mjs +20 -0
  671. package/esm2022/tile/public-api.mjs +3 -0
  672. package/esm2022/tile/seniorsistemas-angular-components-tile.mjs +5 -0
  673. package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.component.mjs +24 -0
  674. package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.module.mjs +20 -0
  675. package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.component.mjs +26 -0
  676. package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.module.mjs +19 -0
  677. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapse-option/collapse-option.component.mjs +21 -0
  678. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapsed-items/collapsed-items.component.mjs +33 -0
  679. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/range-line/range-line.component.mjs +11 -0
  680. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/vertical-items/vertical-items.component.mjs +29 -0
  681. package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.component.mjs +60 -0
  682. package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.module.mjs +33 -0
  683. package/esm2022/timeline/lib/timeline/models/timeline-item-severity.mjs +7 -0
  684. package/esm2022/timeline/lib/timeline/models/timeline-item-size.mjs +6 -0
  685. package/esm2022/timeline/lib/timeline/models/timeline-item.mjs +44 -0
  686. package/esm2022/timeline/lib/timeline/timeline.component.mjs +66 -0
  687. package/esm2022/timeline/lib/timeline/timeline.module.mjs +32 -0
  688. package/esm2022/timeline/public-api.mjs +6 -0
  689. package/esm2022/timeline/seniorsistemas-angular-components-timeline.mjs +5 -0
  690. package/esm2022/toast/lib/toast/toast.component.mjs +46 -0
  691. package/esm2022/toast/lib/toast/toast.module.mjs +17 -0
  692. package/esm2022/toast/lib/toast/toast.service.mjs +68 -0
  693. package/esm2022/toast/lib/toast/types/toast.mjs +2 -0
  694. package/esm2022/toast/public-api.mjs +4 -0
  695. package/esm2022/toast/seniorsistemas-angular-components-toast.mjs +5 -0
  696. package/esm2022/token-list/lib/token-list/models/index.mjs +2 -0
  697. package/esm2022/token-list/lib/token-list/models/token.mjs +2 -0
  698. package/esm2022/token-list/lib/token-list/token-list.component.mjs +42 -0
  699. package/esm2022/token-list/lib/token-list/token-list.module.mjs +18 -0
  700. package/esm2022/token-list/public-api.mjs +4 -0
  701. package/esm2022/token-list/seniorsistemas-angular-components-token-list.mjs +5 -0
  702. package/esm2022/tooltip/lib/tooltip/models/mobile-behavior.mjs +2 -0
  703. package/esm2022/tooltip/lib/tooltip/models/tooltip-event.mjs +2 -0
  704. package/esm2022/tooltip/lib/tooltip/models/tooltip-position.mjs +2 -0
  705. package/esm2022/tooltip/lib/tooltip/tooltip.component.mjs +18 -0
  706. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +339 -0
  707. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +19 -0
  708. package/esm2022/tooltip/public-api.mjs +3 -0
  709. package/esm2022/tooltip/seniorsistemas-angular-components-tooltip.mjs +5 -0
  710. package/esm2022/utils/lib/utils/breakpoints.mjs +11 -0
  711. package/esm2022/utils/lib/utils/utils.mjs +51 -0
  712. package/esm2022/utils/public-api.mjs +3 -0
  713. package/esm2022/utils/seniorsistemas-angular-components-utils.mjs +5 -0
  714. package/esm2022/workspace-switch/lib/workspace-switch/models/index.mjs +2 -0
  715. package/esm2022/workspace-switch/lib/workspace-switch/models/workspace.mjs +2 -0
  716. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +137 -0
  717. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +18 -0
  718. package/esm2022/workspace-switch/public-api.mjs +3 -0
  719. package/esm2022/workspace-switch/seniorsistemas-angular-components-workspace-switch.mjs +5 -0
  720. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +10 -10
  721. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  722. package/fesm2022/seniorsistemas-angular-components-alert.mjs +7 -7
  723. package/fesm2022/seniorsistemas-angular-components-badge.mjs +7 -7
  724. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +7 -7
  725. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +7 -7
  726. package/fesm2022/seniorsistemas-angular-components-button.mjs +20 -29
  727. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  728. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +7 -7
  729. package/fesm2022/seniorsistemas-angular-components-card.mjs +7 -7
  730. package/fesm2022/seniorsistemas-angular-components-chat.mjs +10 -10
  731. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -7
  732. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +3 -3
  733. package/fesm2022/seniorsistemas-angular-components-chips.mjs +10 -10
  734. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  735. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +11 -11
  736. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +7 -7
  737. package/fesm2022/seniorsistemas-angular-components-common.mjs +20 -20
  738. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +54 -0
  739. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -0
  740. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +7 -7
  741. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +10 -10
  742. package/fesm2022/seniorsistemas-angular-components-currency.mjs +3 -3
  743. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +10 -10
  744. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +221 -0
  745. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -0
  746. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +184 -173
  747. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  748. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +7 -7
  749. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +10 -10
  750. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +18 -15
  751. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  752. package/fesm2022/seniorsistemas-angular-components-file-upload.mjs +10 -10
  753. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +10 -10
  754. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  755. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +10 -10
  756. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +10 -10
  757. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +10 -10
  758. package/fesm2022/seniorsistemas-angular-components-ia-insight.mjs +16 -16
  759. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +22 -17
  760. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  761. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +7 -7
  762. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +10 -10
  763. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  764. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +28 -28
  765. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  766. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +8 -3
  767. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  768. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +19 -19
  769. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +7 -7
  770. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +16 -16
  771. package/fesm2022/seniorsistemas-angular-components-locale.mjs +34 -34
  772. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +7 -7
  773. package/fesm2022/seniorsistemas-angular-components-mask.mjs +7 -7
  774. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +10 -10
  775. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +8 -8
  776. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  777. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +7 -7
  778. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +10 -10
  779. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +13 -13
  780. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  781. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +3 -3
  782. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  783. package/fesm2022/seniorsistemas-angular-components-panel.mjs +7 -7
  784. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +10 -10
  785. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +7 -7
  786. package/fesm2022/seniorsistemas-angular-components-product-header.mjs +7 -7
  787. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +7 -7
  788. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +13 -13
  789. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +182 -0
  790. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -0
  791. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +7 -7
  792. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +10 -10
  793. package/fesm2022/seniorsistemas-angular-components-select.mjs +8 -8
  794. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  795. package/fesm2022/seniorsistemas-angular-components-shared.mjs +7 -7
  796. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  797. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +42 -23
  798. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  799. package/fesm2022/seniorsistemas-angular-components-slide-panel.mjs +10 -10
  800. package/fesm2022/seniorsistemas-angular-components-slider.mjs +8 -8
  801. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  802. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +13 -13
  803. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +7 -7
  804. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +4 -4
  805. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  806. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +7 -7
  807. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  808. package/fesm2022/seniorsistemas-angular-components-steps.mjs +7 -7
  809. package/fesm2022/seniorsistemas-angular-components-steps.mjs.map +1 -1
  810. package/fesm2022/seniorsistemas-angular-components-structure.mjs +14 -24
  811. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  812. package/fesm2022/seniorsistemas-angular-components-switch.mjs +7 -7
  813. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +7 -7
  814. package/fesm2022/seniorsistemas-angular-components-table.mjs +16 -16
  815. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  816. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +91 -0
  817. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -0
  818. package/fesm2022/seniorsistemas-angular-components-template.mjs +12 -15
  819. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  820. package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs +32 -25
  821. package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs.map +1 -1
  822. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +7 -7
  823. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +10 -10
  824. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +16 -16
  825. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +54 -92
  826. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  827. package/fesm2022/seniorsistemas-angular-components-tile.mjs +7 -7
  828. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  829. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +40 -40
  830. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  831. package/fesm2022/seniorsistemas-angular-components-toast.mjs +10 -10
  832. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +7 -7
  833. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +24 -14
  834. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  835. package/fesm2022/seniorsistemas-angular-components-utils.mjs +13 -4
  836. package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
  837. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +7 -7
  838. package/fesm2022/seniorsistemas-angular-components.mjs +1 -0
  839. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  840. package/fieldset/lib/fieldset/fieldset.component.d.ts +7 -5
  841. package/fieldset/lib/fieldset/fieldset.module.d.ts +1 -2
  842. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +2 -0
  843. package/image-cropper/lib/image-cropper/image-cropper.module.d.ts +6 -5
  844. package/index.d.ts +5 -0
  845. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +2 -1
  846. package/lib/locale/fallback.d.ts +1 -0
  847. package/package.json +25 -87
  848. package/public-api.d.ts +1 -0
  849. package/radio-button/index.d.ts +5 -0
  850. package/radio-button/lib/radio-button/radio-button.component.d.ts +31 -0
  851. package/radio-button/lib/radio-button-group/models/radio-button-group.models.d.ts +5 -0
  852. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +25 -0
  853. package/radio-button/lib/services/radio-button-registry.service.d.ts +12 -0
  854. package/radio-button/public-api.d.ts +3 -0
  855. package/select/index.d.ts +5 -0
  856. package/select/lib/select/components/select-option/select-option.component.d.ts +14 -0
  857. package/select/lib/select/select.component.d.ts +275 -0
  858. package/select/public-api.d.ts +1 -0
  859. package/sidebar/lib/sidebar/sidebar.component.d.ts +7 -6
  860. package/src/lib/styles/tailwind.scss +4 -0
  861. package/structure/lib/structure/header.component.d.ts +0 -2
  862. package/tabs/index.d.ts +5 -0
  863. package/tabs/lib/tab-item/tab-item.component.d.ts +18 -0
  864. package/tabs/lib/tabs/tabs.component.d.ts +16 -0
  865. package/tabs/public-api.d.ts +2 -0
  866. package/tailwind.css +475 -371
  867. package/template/lib/template/template.directive.d.ts +2 -3
  868. package/template/lib/template/template.module.d.ts +3 -3
  869. package/text-area-ia/lib/text-area-ia/text-area-ia.module.d.ts +7 -6
  870. package/tooltip/lib/tooltip/tooltip.directive.d.ts +4 -2
  871. package/tooltip/lib/tooltip/tooltip.module.d.ts +3 -3
  872. package/utils/lib/utils/utils.d.ts +2 -0
  873. package/accordion/package.json +0 -3
  874. package/alert/package.json +0 -3
  875. package/badge/package.json +0 -3
  876. package/bignumber-input/package.json +0 -3
  877. package/breadcrumb/package.json +0 -3
  878. package/button/package.json +0 -3
  879. package/calendar-mask/package.json +0 -3
  880. package/card/package.json +0 -3
  881. package/chat/package.json +0 -3
  882. package/checkbox/package.json +0 -3
  883. package/checkbox-list/package.json +0 -3
  884. package/chips/package.json +0 -3
  885. package/code-editor/package.json +0 -3
  886. package/collapse-link/package.json +0 -3
  887. package/common/package.json +0 -3
  888. package/control-errors/package.json +0 -3
  889. package/country-phone-picker/package.json +0 -3
  890. package/currency/package.json +0 -3
  891. package/custom-fields/package.json +0 -3
  892. package/dynamic-form/package.json +0 -3
  893. package/editable-overlay/package.json +0 -3
  894. package/empty-state/package.json +0 -3
  895. package/fieldset/package.json +0 -3
  896. package/file-upload/package.json +0 -3
  897. package/gantt/package.json +0 -3
  898. package/global-search/package.json +0 -3
  899. package/grid-menu/package.json +0 -3
  900. package/help-popover/package.json +0 -3
  901. package/ia-insight/package.json +0 -3
  902. package/image-cropper/package.json +0 -3
  903. package/infinite-scroll/package.json +0 -3
  904. package/info-sign/package.json +0 -3
  905. package/inline-edit/package.json +0 -3
  906. package/interactive-content/package.json +0 -3
  907. package/kanban/package.json +0 -3
  908. package/label-value/package.json +0 -3
  909. package/loading-state/package.json +0 -3
  910. package/locale/package.json +0 -3
  911. package/localized-number-input/package.json +0 -3
  912. package/mask/package.json +0 -3
  913. package/mouse-events/package.json +0 -3
  914. package/navigation-button/package.json +0 -3
  915. package/number-input/package.json +0 -3
  916. package/numeric/package.json +0 -3
  917. package/object-card/package.json +0 -3
  918. package/paginator/package.json +0 -3
  919. package/panel/package.json +0 -3
  920. package/password-strength/package.json +0 -3
  921. package/picklist/package.json +0 -3
  922. package/product-header/package.json +0 -3
  923. package/profile-picture-picker/package.json +0 -3
  924. package/progressbar/package.json +0 -3
  925. package/rating-scale/package.json +0 -3
  926. package/select-button/package.json +0 -3
  927. package/shared/package.json +0 -3
  928. package/sidebar/package.json +0 -3
  929. package/slide-panel/package.json +0 -3
  930. package/slider/package.json +0 -3
  931. package/speech-recognition/package.json +0 -3
  932. package/split-button/package.json +0 -3
  933. package/star-rating/package.json +0 -3
  934. package/stats-card/package.json +0 -3
  935. package/steps/package.json +0 -3
  936. package/structure/package.json +0 -3
  937. package/switch/package.json +0 -3
  938. package/table/package.json +0 -3
  939. package/table-header/package.json +0 -3
  940. package/template/package.json +0 -3
  941. package/text-area/package.json +0 -3
  942. package/text-area-ia/package.json +0 -3
  943. package/thumbnail/package.json +0 -3
  944. package/thumbnails/package.json +0 -3
  945. package/tiered-menu/lib/tiered-menu/utils.d.ts +0 -2
  946. package/tiered-menu/package.json +0 -3
  947. package/tile/package.json +0 -3
  948. package/timeline/package.json +0 -3
  949. package/toast/package.json +0 -3
  950. package/token-list/package.json +0 -3
  951. package/tooltip/package.json +0 -3
  952. package/utils/package.json +0 -3
  953. package/workspace-switch/package.json +0 -3
@@ -0,0 +1,601 @@
1
+ import { Component, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@seniorsistemas/angular-components/tooltip";
6
+ export class SliderComponent {
7
+ MAX_RANGE_VALUE = 100;
8
+ MIN_RANGE_VALUE = 0;
9
+ track;
10
+ multiple = false;
11
+ value = 0;
12
+ valueChange = new EventEmitter();
13
+ step = 1;
14
+ hiddenThumb = false;
15
+ disabled = false;
16
+ min = this.MIN_RANGE_VALUE;
17
+ max = this.MAX_RANGE_VALUE;
18
+ minValueLabel;
19
+ maxValueLabel;
20
+ tabindex = 0;
21
+ startValue = 0;
22
+ endValue = 0;
23
+ movingProgressBar = false;
24
+ progressLeft = 0;
25
+ progressWidth = '';
26
+ onChange = () => { };
27
+ onTouched = () => { };
28
+ draggingThumb = null;
29
+ progressBarEventPositionStart = -1;
30
+ startValueBeforeProgressBarEvent = -1;
31
+ rangeBetweenElementsBeforeProgressBarEvent = -1;
32
+ totalRangeBeforeProgressBarEvent = -1;
33
+ /**
34
+ * Map of valid values for values in range.
35
+ * @example
36
+ * with min = -10 and max = 10 will have this map.
37
+ * {
38
+ * -10: { 0 },
39
+ * -9: { 10 },
40
+ * ...
41
+ * 10: { 10 }
42
+ * }
43
+ */
44
+ mapRangeValuesForSlider = new Map();
45
+ activeMouseDown = false;
46
+ focusActive = false;
47
+ ngOnInit() {
48
+ this.setUserRangeMapValues();
49
+ }
50
+ ngOnChanges(changes) {
51
+ const hasChangesOnMin = changes['min'] && !changes['min'].firstChange;
52
+ const hasChangesOnMax = changes['max'] && !changes['max'].firstChange;
53
+ const hasChanges = hasChangesOnMin || hasChangesOnMax;
54
+ if (hasChanges) {
55
+ this.setUserRangeMapValues();
56
+ setTimeout(() => {
57
+ this.setRangeValues();
58
+ });
59
+ }
60
+ }
61
+ ngAfterViewInit() {
62
+ setTimeout(() => {
63
+ this.setRangeValues();
64
+ });
65
+ }
66
+ onKeydown($event) {
67
+ if (this.focusActive && !this.disabled) {
68
+ const isArrowKeyLeft = $event.key === 'ArrowLeft';
69
+ const isArrowKeyRight = $event.key === 'ArrowRight';
70
+ if (isArrowKeyLeft) {
71
+ this.handleArrowKeyLeft();
72
+ }
73
+ else if (isArrowKeyRight) {
74
+ this.handleArrowKeyRight();
75
+ }
76
+ }
77
+ }
78
+ get tooltipStartText() {
79
+ return Array.isArray(this.value) ? this.value[0]?.toString() : this.value?.toString();
80
+ }
81
+ get tooltipEndText() {
82
+ return Array.isArray(this.value) ? this.value[1]?.toString() : this.value?.toString();
83
+ }
84
+ writeValue(obj) {
85
+ this.value = obj;
86
+ this.setRangeValues();
87
+ }
88
+ registerOnChange(fn) {
89
+ this.onChange = fn;
90
+ }
91
+ registerOnTouched(fn) {
92
+ this.onTouched = fn;
93
+ }
94
+ setDisabledState(isDisabled) {
95
+ this.disabled = isDisabled;
96
+ }
97
+ onFocusIn() {
98
+ this.focusActive = true;
99
+ }
100
+ onBlur() {
101
+ this.focusActive = false;
102
+ }
103
+ onTrackClick(evt) {
104
+ if (this.disabled || this.movingProgressBar || this.activeMouseDown) {
105
+ return;
106
+ }
107
+ const trackClickPercentage = this.getPercentageByEvent(evt);
108
+ const trackClickToUserRange = this.getValueFromMapByValue(trackClickPercentage);
109
+ const _trackClickValid = this.needParseValues ? trackClickToUserRange : trackClickPercentage;
110
+ const _setEndValue = () => {
111
+ const _endValueUserValue = this.getValueFromMapByValue(this.endValue);
112
+ const _endValue = (this.needParseValues ? this.mapRangeValuesForSlider.get(trackClickToUserRange) : trackClickPercentage) ?? 0;
113
+ if (this.needParseValues && _endValueUserValue !== trackClickToUserRange) {
114
+ this.endValue = _endValue;
115
+ }
116
+ else if (!this.needParseValues) {
117
+ this.endValue = trackClickPercentage;
118
+ }
119
+ };
120
+ const _setStartValue = () => {
121
+ const _startValueUserValue = this.getValueFromMapByValue(this.startValue);
122
+ if (this.needParseValues && _startValueUserValue !== trackClickToUserRange) {
123
+ const _startValue = (this.needParseValues ? this.mapRangeValuesForSlider.get(trackClickToUserRange) : trackClickPercentage) ?? 0;
124
+ this.startValue = _startValue;
125
+ }
126
+ else if (!this.needParseValues) {
127
+ this.startValue = trackClickPercentage;
128
+ }
129
+ };
130
+ if (this.multiple) {
131
+ const [start, end] = this.value;
132
+ const validStart = (this.needParseValues ? this.mapRangeValuesForSlider.get(start) : start) ?? 0;
133
+ const validEnd = (this.needParseValues ? this.mapRangeValuesForSlider.get(end) : end) ?? 0;
134
+ const _updateStart = () => {
135
+ _setStartValue();
136
+ this.setValue([trackClickPercentage, validEnd]);
137
+ };
138
+ const _updateEnd = () => {
139
+ _setEndValue();
140
+ this.setValue([validStart, trackClickPercentage]);
141
+ };
142
+ const clickPercentageBetweenRange = isInRange(_trackClickValid, start, end);
143
+ if (_trackClickValid < start) {
144
+ _updateStart();
145
+ }
146
+ else if (_trackClickValid > end) {
147
+ _updateEnd();
148
+ }
149
+ else if (clickPercentageBetweenRange) {
150
+ const middle = (start + end) / 2;
151
+ const trackClickPercentageIsExactiddle = _trackClickValid === middle;
152
+ if (trackClickPercentageIsExactiddle) {
153
+ _updateStart();
154
+ }
155
+ else {
156
+ const setStart = _trackClickValid < middle;
157
+ const setEnd = _trackClickValid > middle;
158
+ if (setStart) {
159
+ _updateStart();
160
+ }
161
+ else if (setEnd) {
162
+ _updateEnd();
163
+ }
164
+ }
165
+ }
166
+ }
167
+ else {
168
+ this.setValue(trackClickPercentage);
169
+ _setEndValue();
170
+ }
171
+ this.setProgress();
172
+ }
173
+ onProgressMouseDown(evt) {
174
+ if (!this.multiple || this.disabled) {
175
+ return;
176
+ }
177
+ this.progressBarEventPositionStart = this.getPercentageByEvent(evt);
178
+ this.startValueBeforeProgressBarEvent = this.startValue;
179
+ this.rangeBetweenElementsBeforeProgressBarEvent = this.endValue - this.startValue;
180
+ if (this.multiple) {
181
+ const [start, end] = this.value;
182
+ this.totalRangeBeforeProgressBarEvent = end - start;
183
+ }
184
+ document.addEventListener('mousemove', this.handleProgressBarMove);
185
+ document.addEventListener('mouseup', this.handleProgressBarMoveEnd);
186
+ }
187
+ onMouseDown(_, thumb) {
188
+ if (this.disabled)
189
+ return;
190
+ this.draggingThumb = thumb;
191
+ this.activeMouseDown = true;
192
+ document.addEventListener('mousemove', this.onThumbMove);
193
+ document.addEventListener('mouseup', this.onMouseUp);
194
+ }
195
+ setRangeValues() {
196
+ const _setStartAndEndValue = (startValue, endValue) => {
197
+ this.startValue = this.getClosestValueFromMapSlider(startValue);
198
+ this.endValue = this.getClosestValueFromMapSlider(endValue);
199
+ };
200
+ if (this.value === null || this.value === undefined) {
201
+ return;
202
+ }
203
+ if (Array.isArray(this.value) && !this.multiple) {
204
+ throw new Error('You must use "multiple" with value as array');
205
+ }
206
+ if (this.multiple && Array.isArray(this.value)) {
207
+ this.startValue = this.value[0];
208
+ this.endValue = this.value[1];
209
+ }
210
+ else if (!this.multiple) {
211
+ this.startValue = this.value;
212
+ this.endValue = this.value;
213
+ }
214
+ _setStartAndEndValue(this.startValue, this.endValue);
215
+ if (this.multiple) {
216
+ let [_startValue, _endValue] = this.value;
217
+ const difference = getDifference(_endValue, _startValue);
218
+ const endValueIsGreatherThanMax = _endValue > this.max;
219
+ const startValueIsLessThanMin = _startValue < this.min;
220
+ const needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;
221
+ if (endValueIsGreatherThanMax) {
222
+ _endValue = this.max;
223
+ _startValue = _endValue - difference;
224
+ }
225
+ else if (startValueIsLessThanMin) {
226
+ _startValue = this.min;
227
+ _endValue = _startValue + difference;
228
+ }
229
+ if (needUpdateValues) {
230
+ _setStartAndEndValue(_startValue, _endValue);
231
+ this.setValue([this.startValue, this.endValue]);
232
+ }
233
+ }
234
+ else {
235
+ let _value = this.value;
236
+ const valueGreatherThanMax = _value > this.max;
237
+ const valueLessThanMin = _value < this.min;
238
+ const needUpdateValue = valueGreatherThanMax || valueLessThanMin;
239
+ if (valueGreatherThanMax) {
240
+ _value = this.max;
241
+ }
242
+ else if (valueLessThanMin) {
243
+ _value = this.min;
244
+ }
245
+ if (needUpdateValue) {
246
+ this.setValue(_value, false);
247
+ }
248
+ }
249
+ this.setProgress();
250
+ }
251
+ onThumbMove = (event) => {
252
+ if (this.movingProgressBar || !this.draggingThumb)
253
+ return;
254
+ let newPosition = this.getPercentageByEvent(event);
255
+ if ((this.multiple && this.draggingThumb === 'start' && newPosition > this.endValue) ||
256
+ (this.multiple && this.draggingThumb === 'end' && newPosition < this.startValue)) {
257
+ return;
258
+ }
259
+ const positionInUserRange = this.getValueFromMapByValue(newPosition);
260
+ if (this.multiple) {
261
+ if (this.draggingThumb === 'start') {
262
+ this.startValue = (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;
263
+ }
264
+ else if (this.draggingThumb === 'end') {
265
+ this.endValue = (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;
266
+ }
267
+ this.setValue([this.startValue, this.endValue]);
268
+ const [start, end] = this.value;
269
+ if (start === end && this.draggingThumb === 'start') {
270
+ this.startValue = this.endValue;
271
+ }
272
+ else if (start === end && this.draggingThumb === 'end') {
273
+ this.endValue = this.startValue;
274
+ }
275
+ }
276
+ else {
277
+ const currentValue = this.value;
278
+ const _value = this.needParseValues ? positionInUserRange : newPosition;
279
+ const isAtSameValue = this.needParseValues ? positionInUserRange === this.value : false;
280
+ const hasStep = this.step !== 0;
281
+ const newValueIsValidByStep = hasStep ? currentValue + this.step === _value || currentValue - this.step === _value : false;
282
+ if (isAtSameValue && !newValueIsValidByStep) {
283
+ return;
284
+ }
285
+ this.endValue = (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;
286
+ this.startValue = this.endValue;
287
+ this.setValue(this.endValue);
288
+ }
289
+ this.setProgress();
290
+ };
291
+ onMouseUp = () => {
292
+ this.draggingThumb = null;
293
+ document.removeEventListener('mousemove', this.onThumbMove);
294
+ document.removeEventListener('mouseup', this.onMouseUp);
295
+ setTimeout(() => {
296
+ this.activeMouseDown = false;
297
+ }, 150);
298
+ };
299
+ handleProgressBarMove = (event) => {
300
+ this.movingProgressBar = true;
301
+ const newCenter = this.getPercentageByEvent(event);
302
+ const startPositionBeforeEvent = this.progressBarEventPositionStart;
303
+ const startValueBeforeEvent = this.startValueBeforeProgressBarEvent;
304
+ const range = this.rangeBetweenElementsBeforeProgressBarEvent;
305
+ let { newStart, newEnd } = calculateNewRange(startValueBeforeEvent, startValueBeforeEvent + range, startPositionBeforeEvent, newCenter);
306
+ if (newStart < this.MIN_RANGE_VALUE || newEnd > this.MAX_RANGE_VALUE) {
307
+ return;
308
+ }
309
+ if (this.needParseValues) {
310
+ const startValueBeforeEventUserRange = this.getValueFromMapByValue(startValueBeforeEvent);
311
+ const startPositionBeforeEventUserRange = this.getValueFromMapByValue(startPositionBeforeEvent);
312
+ const centerUserRange = this.getValueFromMapByValue(newCenter);
313
+ const valueRange = this.totalRangeBeforeProgressBarEvent;
314
+ let { newStart, newEnd } = calculateNewRange(startValueBeforeEventUserRange, startValueBeforeEventUserRange + valueRange, startPositionBeforeEventUserRange, centerUserRange);
315
+ if (newStart < this.min || newEnd > this.max) {
316
+ return;
317
+ }
318
+ this.startValue = this.mapRangeValuesForSlider.get(newStart) ?? 0;
319
+ this.endValue = this.mapRangeValuesForSlider.get(newEnd) ?? 0;
320
+ }
321
+ else {
322
+ this.startValue = newStart;
323
+ this.endValue = newEnd;
324
+ }
325
+ this.setValue([this.startValue, this.endValue]);
326
+ this.setProgress();
327
+ };
328
+ handleProgressBarMoveEnd = () => {
329
+ this.progressBarEventPositionStart = -1;
330
+ this.startValueBeforeProgressBarEvent = -1;
331
+ this.rangeBetweenElementsBeforeProgressBarEvent = -1;
332
+ this.totalRangeBeforeProgressBarEvent = -1;
333
+ document.removeEventListener('mousemove', this.handleProgressBarMove);
334
+ document.removeEventListener('mouseup', this.handleProgressBarMoveEnd);
335
+ setTimeout(() => {
336
+ this.movingProgressBar = false;
337
+ }, 150);
338
+ };
339
+ setProgress() {
340
+ if (this.multiple) {
341
+ this.progressLeft = this.startValue;
342
+ this.progressWidth = `calc(${this.endValue - this.startValue}% + 10px)`;
343
+ }
344
+ else {
345
+ this.progressLeft = 0;
346
+ this.progressWidth = `calc(${this.endValue}% + 10px)`;
347
+ }
348
+ }
349
+ /**
350
+ * Get the percentage of a mouse event from the track's left edge
351
+ * @param mouseEvent mouse event
352
+ * @returns percentage from the left edge
353
+ */
354
+ getPercentageByEvent(mouseEvent) {
355
+ const trackRect = this.track.nativeElement.getBoundingClientRect();
356
+ let newLeft = Math.round(((mouseEvent.clientX - trackRect.left) / trackRect.width) * this.MAX_RANGE_VALUE);
357
+ newLeft = Math.max(0, Math.min(newLeft, this.MAX_RANGE_VALUE));
358
+ return newLeft;
359
+ }
360
+ setValue(value, parse = true) {
361
+ if (this.disabled) {
362
+ return;
363
+ }
364
+ if (this.needParseValues && parse) {
365
+ if (Array.isArray(value)) {
366
+ value = value.map((x) => this.getValueFromMapByValue(x));
367
+ }
368
+ else {
369
+ value = this.getValueFromMapByValue(value);
370
+ }
371
+ }
372
+ this.value = value;
373
+ this.valueChange.emit(value);
374
+ this.writeValue(this.value);
375
+ this.onChange(this.value);
376
+ this.onTouched(this.value);
377
+ }
378
+ setUserRangeMapValues() {
379
+ const start = this.min;
380
+ const end = this.max;
381
+ if (start > end) {
382
+ throw new Error('Max value must be greater than min value');
383
+ }
384
+ this.mapRangeValuesForSlider.clear();
385
+ const range = end - start;
386
+ const decimalPlaces = 2;
387
+ const stepCount = Math.floor(range / this.step);
388
+ const values = [];
389
+ for (let value = start; value <= end; value += this.step) {
390
+ values.push(value);
391
+ }
392
+ if (values[values.length - 1] !== end) {
393
+ values.push(end);
394
+ }
395
+ const mappedValues = values.map((value) => {
396
+ let mapped = ((value - start) / range) * this.MAX_RANGE_VALUE;
397
+ return parseFloat(mapped.toFixed(decimalPlaces));
398
+ });
399
+ mappedValues[0] = 0;
400
+ mappedValues[mappedValues.length - 1] = this.MAX_RANGE_VALUE;
401
+ const error = this.MAX_RANGE_VALUE - mappedValues[mappedValues.length - 1];
402
+ const errorPerStep = error / stepCount;
403
+ for (let i = 1; i < mappedValues.length - 1; i++) {
404
+ mappedValues[i] += errorPerStep;
405
+ mappedValues[i] = parseFloat(mappedValues[i].toFixed(decimalPlaces));
406
+ }
407
+ values.forEach((value, index) => {
408
+ this.mapRangeValuesForSlider.set(value, mappedValues[index]);
409
+ });
410
+ }
411
+ /**
412
+ * Returns the user value from the given slider value by using the map of range values.
413
+ * @example
414
+ * If the map is 0: { 0 }, 1: { 10 }, 2: { 30 }, 3: { 40 }, 4: { 50 }
415
+ * and the sliderValue is 37, the function returns 3
416
+ * or the slider value is 40, the function returns 4
417
+ * @param sliderValue the value of the slider (values only between range MIN and MAX)
418
+ * @returns the user value from the given slider value
419
+ */
420
+ getValueFromMapByValue(sliderValue) {
421
+ const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));
422
+ const exactValue = mapToArray.find((x) => x.mapped == sliderValue);
423
+ const closest = mapToArray.reduce((prev, curr) => (Math.abs(curr.mapped - sliderValue) < Math.abs(prev.mapped - sliderValue) ? curr : prev));
424
+ return exactValue ? exactValue.value : closest.value;
425
+ }
426
+ /**
427
+ * Retrieves the key from the map that is closest to the given slider value.
428
+ * @param userValue - The value to find the closest key for. (values only between 0 - 100)
429
+ * @returns The key that corresponds to the closest mapped value.
430
+ */
431
+ getClosestValueFromMapSlider(userValue) {
432
+ const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));
433
+ if (userValue >= this.max) {
434
+ return mapToArray[mapToArray.length - 1].mapped;
435
+ }
436
+ else if (userValue <= this.min) {
437
+ return mapToArray[0].mapped;
438
+ }
439
+ const exactValue = mapToArray.find((x) => x.value == userValue);
440
+ const closestValue = mapToArray.reduce((prev, curr) => (Math.abs(curr.value - userValue) < Math.abs(prev.value - userValue) ? curr : prev));
441
+ const item = exactValue || closestValue;
442
+ const isFirstItem = mapToArray[0] === item;
443
+ const isLastItem = mapToArray[mapToArray.length - 1] === item;
444
+ if (isFirstItem && userValue > this.min) {
445
+ return getMidpoint(item.mapped, mapToArray[1].mapped);
446
+ }
447
+ else if (isLastItem && userValue < this.max) {
448
+ return getMidpoint(item.mapped, mapToArray[mapToArray.length - 2].mapped);
449
+ }
450
+ else {
451
+ return item.mapped;
452
+ }
453
+ }
454
+ handleArrowKeyLeft() {
455
+ if (this.multiple) {
456
+ this._incrementOrDecrementStartAndEndValue(false);
457
+ }
458
+ else {
459
+ this._incrementOrDecrementEndValue(false);
460
+ }
461
+ this.setProgress();
462
+ }
463
+ handleArrowKeyRight() {
464
+ if (this.multiple) {
465
+ this._incrementOrDecrementStartAndEndValue(true);
466
+ }
467
+ else {
468
+ this._incrementOrDecrementEndValue(true);
469
+ }
470
+ this.setProgress();
471
+ }
472
+ _incrementOrDecrementStartAndEndValue(increment) {
473
+ let [start, end] = this.value;
474
+ const difference = getDifference(end, start);
475
+ if (increment) {
476
+ start += this.step;
477
+ end += this.step;
478
+ }
479
+ else {
480
+ start -= this.step;
481
+ end -= this.step;
482
+ }
483
+ const startLessThanMin = start < this.min;
484
+ const endGreaterThanMax = end > this.max;
485
+ if (startLessThanMin || endGreaterThanMax) {
486
+ if (startLessThanMin) {
487
+ start = this.min;
488
+ end = start + difference;
489
+ }
490
+ else if (endGreaterThanMax) {
491
+ end = this.max;
492
+ start = end - difference;
493
+ }
494
+ }
495
+ if (start < this.min || end > this.max) {
496
+ return;
497
+ }
498
+ this.setValue([start, end], false);
499
+ if (this.needParseValues) {
500
+ start = this.getClosestValueFromMapSlider(start);
501
+ end = this.getClosestValueFromMapSlider(end);
502
+ }
503
+ this.startValue = start;
504
+ this.endValue = end;
505
+ }
506
+ _incrementOrDecrementEndValue(increment) {
507
+ let value = this.value;
508
+ if (increment) {
509
+ value += this.step;
510
+ }
511
+ else {
512
+ value -= this.step;
513
+ }
514
+ let _newEndValue = value;
515
+ if (this.needParseValues) {
516
+ _newEndValue = this.getClosestValueFromMapSlider(_newEndValue);
517
+ }
518
+ if (_newEndValue < this.MIN_RANGE_VALUE || _newEndValue > this.MAX_RANGE_VALUE) {
519
+ return;
520
+ }
521
+ this.endValue = _newEndValue;
522
+ this.startValue = this.endValue;
523
+ this.setValue(_newEndValue);
524
+ }
525
+ get needParseValues() {
526
+ return this.max !== this.MAX_RANGE_VALUE || this.min !== this.MIN_RANGE_VALUE;
527
+ }
528
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
529
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SliderComponent, selector: "s-slider", inputs: { multiple: "multiple", value: "value", step: "step", hiddenThumb: "hiddenThumb", disabled: "disabled", min: "min", max: "max", minValueLabel: "minValueLabel", maxValueLabel: "maxValueLabel", tabindex: "tabindex" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:keydown": "onKeydown($event)" } }, providers: [
530
+ {
531
+ provide: NG_VALUE_ACCESSOR,
532
+ useExisting: forwardRef(() => SliderComponent),
533
+ multi: true,
534
+ },
535
+ ], viewQueries: [{ propertyName: "track", first: true, predicate: ["track"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"slider-container\"\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\n [tabindex]=\"tabindex\"\n (click)=\"onTrackClick($event)\"\n (focus)=\"onFocusIn()\"\n (blur)=\"onBlur()\">\n <div\n #track\n class=\"slider-track\"\n [ngClass]=\"{\n 'slider-track--hidden-thumb': hiddenThumb,\n 'slider-track--moving-multiple-thumbs': movingProgressBar\n }\">\n <div\n class=\"slider-progress\"\n (mousedown)=\"onProgressMouseDown($event)\"\n [style.left.%]=\"progressLeft\"\n [style.width]=\"progressWidth\"\n ></div>\n <div\n *ngIf=\"multiple\"\n class=\"slider-thumb\"\n [sTooltip]=\"tooltipStartText\"\n [showDelay]=\"0\"\n (mousedown)=\"onMouseDown($event, 'start')\"\n [style.left.%]=\"startValue\"\n ></div>\n <div\n [sTooltip]=\"tooltipEndText\"\n class=\"slider-thumb\"\n [showDelay]=\"0\"\n (mousedown)=\"onMouseDown($event, 'end')\"\n [style.left.%]=\"endValue\"></div>\n </div>\n <div class=\"footer\">\n <span>{{ minValueLabel || min }}</span>\n <span>{{ maxValueLabel || max }}</span>\n </div>\n</div>\n", styles: [".slider-container{height:20px;padding:16px 0 40px;position:relative;-webkit-user-select:none;user-select:none;width:100%}.slider-container .slider-track{background-color:#ddd;border-radius:3px;cursor:pointer;height:6px;position:relative;width:100%}.slider-container .slider-track .slider-progress{background-color:#428bca;border-radius:3px;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:0}.slider-container .slider-track .slider-thumb{background-color:#fff;border:2px solid #428bca;border-radius:50%;cursor:pointer;height:20px;position:absolute;transform:translateY(-50%);top:50%;width:20px}.slider-container .slider-track .slider-thumb:active{box-shadow:0 0 0 4px #428bca33}.slider-container .slider-track--hidden-thumb:not(:hover) .slider-thumb{opacity:0}.slider-container .slider-track--moving-multiple-thumbs .slider-thumb{box-shadow:0 0 0 4px #428bca33}.slider-container .footer{color:#212533;display:flex;font-family:Open Sans,sans-serif;font-size:14px;justify-content:space-between;margin-top:8px}.slider-container--disabled .slider-track{cursor:default}.slider-container--disabled .slider-track .slider-thumb{border-color:#a5a5b2;cursor:default}.slider-container--disabled .slider-track .slider-thumb:active{box-shadow:none}.slider-container--disabled .slider-track .slider-progress{background-color:#a5a5b2;cursor:default}.slider-container:focus-visible{outline:none}.slider-container:focus-visible .slider-thumb{box-shadow:0 0 0 4px #428bca33}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
536
+ }
537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SliderComponent, decorators: [{
538
+ type: Component,
539
+ args: [{ selector: 's-slider', providers: [
540
+ {
541
+ provide: NG_VALUE_ACCESSOR,
542
+ useExisting: forwardRef(() => SliderComponent),
543
+ multi: true,
544
+ },
545
+ ], template: "<div\n class=\"slider-container\"\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\n [tabindex]=\"tabindex\"\n (click)=\"onTrackClick($event)\"\n (focus)=\"onFocusIn()\"\n (blur)=\"onBlur()\">\n <div\n #track\n class=\"slider-track\"\n [ngClass]=\"{\n 'slider-track--hidden-thumb': hiddenThumb,\n 'slider-track--moving-multiple-thumbs': movingProgressBar\n }\">\n <div\n class=\"slider-progress\"\n (mousedown)=\"onProgressMouseDown($event)\"\n [style.left.%]=\"progressLeft\"\n [style.width]=\"progressWidth\"\n ></div>\n <div\n *ngIf=\"multiple\"\n class=\"slider-thumb\"\n [sTooltip]=\"tooltipStartText\"\n [showDelay]=\"0\"\n (mousedown)=\"onMouseDown($event, 'start')\"\n [style.left.%]=\"startValue\"\n ></div>\n <div\n [sTooltip]=\"tooltipEndText\"\n class=\"slider-thumb\"\n [showDelay]=\"0\"\n (mousedown)=\"onMouseDown($event, 'end')\"\n [style.left.%]=\"endValue\"></div>\n </div>\n <div class=\"footer\">\n <span>{{ minValueLabel || min }}</span>\n <span>{{ maxValueLabel || max }}</span>\n </div>\n</div>\n", styles: [".slider-container{height:20px;padding:16px 0 40px;position:relative;-webkit-user-select:none;user-select:none;width:100%}.slider-container .slider-track{background-color:#ddd;border-radius:3px;cursor:pointer;height:6px;position:relative;width:100%}.slider-container .slider-track .slider-progress{background-color:#428bca;border-radius:3px;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:0}.slider-container .slider-track .slider-thumb{background-color:#fff;border:2px solid #428bca;border-radius:50%;cursor:pointer;height:20px;position:absolute;transform:translateY(-50%);top:50%;width:20px}.slider-container .slider-track .slider-thumb:active{box-shadow:0 0 0 4px #428bca33}.slider-container .slider-track--hidden-thumb:not(:hover) .slider-thumb{opacity:0}.slider-container .slider-track--moving-multiple-thumbs .slider-thumb{box-shadow:0 0 0 4px #428bca33}.slider-container .footer{color:#212533;display:flex;font-family:Open Sans,sans-serif;font-size:14px;justify-content:space-between;margin-top:8px}.slider-container--disabled .slider-track{cursor:default}.slider-container--disabled .slider-track .slider-thumb{border-color:#a5a5b2;cursor:default}.slider-container--disabled .slider-track .slider-thumb:active{box-shadow:none}.slider-container--disabled .slider-track .slider-progress{background-color:#a5a5b2;cursor:default}.slider-container:focus-visible{outline:none}.slider-container:focus-visible .slider-thumb{box-shadow:0 0 0 4px #428bca33}\n"] }]
546
+ }], propDecorators: { track: [{
547
+ type: ViewChild,
548
+ args: ['track']
549
+ }], multiple: [{
550
+ type: Input
551
+ }], value: [{
552
+ type: Input
553
+ }], valueChange: [{
554
+ type: Output
555
+ }], step: [{
556
+ type: Input
557
+ }], hiddenThumb: [{
558
+ type: Input
559
+ }], disabled: [{
560
+ type: Input
561
+ }], min: [{
562
+ type: Input
563
+ }], max: [{
564
+ type: Input
565
+ }], minValueLabel: [{
566
+ type: Input
567
+ }], maxValueLabel: [{
568
+ type: Input
569
+ }], tabindex: [{
570
+ type: Input
571
+ }], onKeydown: [{
572
+ type: HostListener,
573
+ args: ['document:keydown', ['$event']]
574
+ }] } });
575
+ /**
576
+ * Calculates a new range based on the old range and the positions clicked and finalized.
577
+ *
578
+ * @param oldStart - The starting value of the old range.
579
+ * @param oldEnd - The ending value of the old range.
580
+ * @param clickedPosition - The position where the click occurred.
581
+ * @param finalPosition - The position where the range should end.
582
+ * @returns An object containing the new start and end values of the range.
583
+ */
584
+ const calculateNewRange = (oldStart, oldEnd, clickedPosition, finalPosition) => {
585
+ const range = oldEnd - oldStart;
586
+ const newStart = finalPosition - (clickedPosition - oldStart);
587
+ const newEnd = newStart + range;
588
+ return { newStart, newEnd };
589
+ };
590
+ const isInRange = (value, rangeStart, rangeEnd) => {
591
+ const [min, max] = rangeStart < rangeEnd ? [rangeStart, rangeEnd] : [rangeEnd, rangeStart];
592
+ return value >= min && value <= max;
593
+ };
594
+ const getMidpoint = (start, end) => {
595
+ const midpoint = (start + end) / 2;
596
+ return parseFloat(midpoint.toFixed(2));
597
+ };
598
+ const getDifference = (end, start) => {
599
+ return Math.abs(end - start);
600
+ };
601
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zbGlkZXIvc3JjL2xpYi9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zbGlkZXIvc3JjL2xpYi9zbGlkZXIvc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBY3pFLE1BQU0sT0FBTyxlQUFlO0lBQ1AsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUN0QixlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBRTlCLEtBQUssQ0FBYztJQUduQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLEtBQUssR0FBOEIsQ0FBQyxDQUFDO0lBR3JDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztJQUc1RCxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBR1QsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUdwQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBRzNCLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBRzNCLGFBQWEsQ0FBVTtJQUd2QixhQUFhLENBQVU7SUFHdkIsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUViLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDZixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFlBQVksR0FBRyxDQUFD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QUFDLEtBQWEsRUFBRSxVQUFrQixFQUFFLFFBQWdCLEVBQVcsRUFBRTtJQUMvRSxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRixPQUFPLEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEdBQUcsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQUNGLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFO0lBQ2pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NsaWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFYX1JBTkdFX1ZBTFVFID0gMTAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUlOX1JBTkdFX1ZBTFVFID0gMDtcbiAgICBAVmlld0NoaWxkKCd0cmFjaycpXG4gICAgcHVibGljIHRyYWNrITogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSA9IDA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzdGVwID0gMTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZGRlblRodW1iID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gdGhpcy5NSU5fUkFOR0VfVkFMVUU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXggPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblZhbHVlTGFiZWw/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhWYWx1ZUxhYmVsPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGFiaW5kZXggPSAwO1xuXG4gICAgcHVibGljIHN0YXJ0VmFsdWUgPSAwO1xuICAgIHB1YmxpYyBlbmRWYWx1ZSA9IDA7XG4gICAgcHVibGljIG1vdmluZ1Byb2dyZXNzQmFyID0gZmFsc2U7XG4gICAgcHVibGljIHByb2dyZXNzTGVmdCA9IDA7XG4gICAgcHVibGljIHByb2dyZXNzV2lkdGggPSAnJztcblxuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgcHVibGljIG9uVG91Y2hlZDogKHZhbHVlOiBudW1iZXIgfCBbbnVtYmVyLCBudW1iZXJdKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIGRyYWdnaW5nVGh1bWI6ICdzdGFydCcgfCAnZW5kJyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcHJvZ3Jlc3NCYXJFdmVudFBvc2l0aW9uU3RhcnQgPSAtMTtcbiAgICBwcml2YXRlIHN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgcHJpdmF0ZSByYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICBwcml2YXRlIHRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gLTE7XG4gICAgLyoqXG4gICAgICogTWFwIG9mIHZhbGlkIHZhbHVlcyBmb3IgdmFsdWVzIGluIHJhbmdlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2l0aCBtaW4gPSAtMTAgYW5kIG1heCA9IDEwIHdpbGwgaGF2ZSB0aGlzIG1hcC5cbiAgICAgKiB7XG4gICAgICogICAgIC0xMDogeyAwIH0sXG4gICAgICogICAgIC05OiB7IDEwIH0sXG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgMTA6IHsgMTAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBwcml2YXRlIG1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyOiBNYXA8bnVtYmVyLCBudW1iZXI+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgYWN0aXZlTW91c2VEb3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb2N1c0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFVzZXJSYW5nZU1hcFZhbHVlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZXNPbk1pbiA9IGNoYW5nZXNbJ21pbiddICYmICFjaGFuZ2VzWydtaW4nXS5maXJzdENoYW5nZTtcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlc09uTWF4ID0gY2hhbmdlc1snbWF4J10gJiYgIWNoYW5nZXNbJ21heCddLmZpcnN0Q2hhbmdlO1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2VzID0gaGFzQ2hhbmdlc09uTWluIHx8IGhhc0NoYW5nZXNPbk1heDtcbiAgICAgICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VXNlclJhbmdlTWFwVmFsdWVzKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWVzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNBY3RpdmUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQXJyb3dLZXlMZWZ0ID0gJGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCc7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93S2V5UmlnaHQgPSAkZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCc7XG4gICAgICAgICAgICBpZiAoaXNBcnJvd0tleUxlZnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUFycm93S2V5TGVmdCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Fycm93S2V5UmlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUFycm93S2V5UmlnaHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRpcFN0YXJ0VGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlWzBdPy50b1N0cmluZygpIDogdGhpcy52YWx1ZT8udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBFbmRUZXh0KCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IHRoaXMudmFsdWVbMV0/LnRvU3RyaW5nKCkgOiB0aGlzLnZhbHVlPy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gb2JqO1xuICAgICAgICB0aGlzLnNldFJhbmdlVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Gb2N1c0luKCkge1xuICAgICAgICB0aGlzLmZvY3VzQWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVHJhY2tDbGljayhldnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCB0aGlzLmFjdGl2ZU1vdXNlRG93bikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRyYWNrQ2xpY2tQZXJjZW50YWdlID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldnQpO1xuICAgICAgICBjb25zdCB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodHJhY2tDbGlja1BlcmNlbnRhZ2UpO1xuICAgICAgICBjb25zdCBfdHJhY2tDbGlja1ZhbGlkID0gdGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0cmFja0NsaWNrVG9Vc2VyUmFuZ2UgOiB0cmFja0NsaWNrUGVyY2VudGFnZTtcbiAgICAgICAgY29uc3QgX3NldEVuZFZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2VuZFZhbHVlVXNlclZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgX2VuZFZhbHVlID0gKHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQodHJhY2tDbGlja1RvVXNlclJhbmdlKSA6IHRyYWNrQ2xpY2tQZXJjZW50YWdlKSA/PyAwO1xuICAgICAgICAgICAgaWYgKHRoaXMubmVlZFBhcnNlVmFsdWVzICYmIF9lbmRWYWx1ZVVzZXJWYWx1ZSAhPT0gdHJhY2tDbGlja1RvVXNlclJhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IF9lbmRWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubmVlZFBhcnNlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRWYWx1ZSA9IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IF9zZXRTdGFydFZhbHVlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX3N0YXJ0VmFsdWVVc2VyVmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUodGhpcy5zdGFydFZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcyAmJiBfc3RhcnRWYWx1ZVVzZXJWYWx1ZSAhPT0gdHJhY2tDbGlja1RvVXNlclJhbmdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgX3N0YXJ0VmFsdWUgPSAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldCh0cmFja0NsaWNrVG9Vc2VyUmFuZ2UpIDogdHJhY2tDbGlja1BlcmNlbnRhZ2UpID8/IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gX3N0YXJ0VmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRyYWNrQ2xpY2tQZXJjZW50YWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgICAgICAgY29uc3QgdmFsaWRTdGFydCA9ICh0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuZ2V0KHN0YXJ0KSA6IHN0YXJ0KSA/PyAwO1xuICAgICAgICAgICAgY29uc3QgdmFsaWRFbmQgPSAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChlbmQpIDogZW5kKSA/PyAwO1xuICAgICAgICAgICAgY29uc3QgX3VwZGF0ZVN0YXJ0ID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIF9zZXRTdGFydFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdHJhY2tDbGlja1BlcmNlbnRhZ2UsIHZhbGlkRW5kXSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBfdXBkYXRlRW5kID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIF9zZXRFbmRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoW3ZhbGlkU3RhcnQsIHRyYWNrQ2xpY2tQZXJjZW50YWdlXSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY2xpY2tQZXJjZW50YWdlQmV0d2VlblJhbmdlID0gaXNJblJhbmdlKF90cmFja0NsaWNrVmFsaWQsIHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgaWYgKF90cmFja0NsaWNrVmFsaWQgPCBzdGFydCkge1xuICAgICAgICAgICAgICAgIF91cGRhdGVTdGFydCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChfdHJhY2tDbGlja1ZhbGlkID4gZW5kKSB7XG4gICAgICAgICAgICAgICAgX3VwZGF0ZUVuZCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjbGlja1BlcmNlbnRhZ2VCZXR3ZWVuUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGUgPSAoc3RhcnQgKyBlbmQpIC8gMjtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFja0NsaWNrUGVyY2VudGFnZUlzRXhhY3RpZGRsZSA9IF90cmFja0NsaWNrVmFsaWQgPT09IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBpZiAodHJhY2tDbGlja1BlcmNlbnRhZ2VJc0V4YWN0aWRkbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVN0YXJ0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0U3RhcnQgPSBfdHJhY2tDbGlja1ZhbGlkIDwgbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXRFbmQgPSBfdHJhY2tDbGlja1ZhbGlkID4gbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0U3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF91cGRhdGVTdGFydCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNldEVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZUVuZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0cmFja0NsaWNrUGVyY2VudGFnZSk7XG4gICAgICAgICAgICBfc2V0RW5kVmFsdWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Qcm9ncmVzc01vdXNlRG93bihldnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb2dyZXNzQmFyRXZlbnRQb3NpdGlvblN0YXJ0ID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldnQpO1xuICAgICAgICB0aGlzLnN0YXJ0VmFsdWVCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gdGhpcy5zdGFydFZhbHVlO1xuICAgICAgICB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IHRoaXMuZW5kVmFsdWUgLSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSB0aGlzLnZhbHVlIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmFuZ2VCZWZvcmVQcm9ncmVzc0JhckV2ZW50ID0gZW5kIC0gc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5oYW5kbGVQcm9ncmVzc0Jhck1vdmVFbmQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vdXNlRG93bihfOiBNb3VzZUV2ZW50LCB0aHVtYjogJ3N0YXJ0JyB8ICdlbmQnKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kcmFnZ2luZ1RodW1iID0gdGh1bWI7XG4gICAgICAgIHRoaXMuYWN0aXZlTW91c2VEb3duID0gdHJ1ZTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vblRodW1iTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm9uTW91c2VVcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRSYW5nZVZhbHVlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgX3NldFN0YXJ0QW5kRW5kVmFsdWUgPSAoc3RhcnRWYWx1ZTogbnVtYmVyLCBlbmRWYWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZUZyb21NYXBTbGlkZXIoc3RhcnRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKGVuZFZhbHVlKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwgfHwgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgdXNlIFwibXVsdGlwbGVcIiB3aXRoIHZhbHVlIGFzIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy52YWx1ZVswXTtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSB0aGlzLnZhbHVlIGFzIG51bWJlcjtcbiAgICAgICAgfVxuICAgICAgICBfc2V0U3RhcnRBbmRFbmRWYWx1ZSh0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgbGV0IFtfc3RhcnRWYWx1ZSwgX2VuZFZhbHVlXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSBnZXREaWZmZXJlbmNlKF9lbmRWYWx1ZSwgX3N0YXJ0VmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgZW5kVmFsdWVJc0dyZWF0aGVyVGhhbk1heCA9IF9lbmRWYWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4gPSBfc3RhcnRWYWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlcyA9IGVuZFZhbHVlSXNHcmVhdGhlclRoYW5NYXggfHwgc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW47XG4gICAgICAgICAgICBpZiAoZW5kVmFsdWVJc0dyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgICAgIF9zdGFydFZhbHVlID0gX2VuZFZhbHVlIC0gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRWYWx1ZUlzTGVzc1RoYW5NaW4pIHtcbiAgICAgICAgICAgICAgICBfc3RhcnRWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIF9lbmRWYWx1ZSA9IF9zdGFydFZhbHVlICsgZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZWVkVXBkYXRlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgX3NldFN0YXJ0QW5kRW5kVmFsdWUoX3N0YXJ0VmFsdWUsIF9lbmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShbdGhpcy5zdGFydFZhbHVlLCB0aGlzLmVuZFZhbHVlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgX3ZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZUdyZWF0aGVyVGhhbk1heCA9IF92YWx1ZSA+IHRoaXMubWF4O1xuICAgICAgICAgICAgY29uc3QgdmFsdWVMZXNzVGhhbk1pbiA9IF92YWx1ZSA8IHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgbmVlZFVwZGF0ZVZhbHVlID0gdmFsdWVHcmVhdGhlclRoYW5NYXggfHwgdmFsdWVMZXNzVGhhbk1pbjtcbiAgICAgICAgICAgIGlmICh2YWx1ZUdyZWF0aGVyVGhhbk1heCkge1xuICAgICAgICAgICAgICAgIF92YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUxlc3NUaGFuTWluKSB7XG4gICAgICAgICAgICAgICAgX3ZhbHVlID0gdGhpcy5taW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmVlZFVwZGF0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShfdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblRodW1iTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tb3ZpbmdQcm9ncmVzc0JhciB8fCAhdGhpcy5kcmFnZ2luZ1RodW1iKSByZXR1cm47XG5cbiAgICAgICAgbGV0IG5ld1Bvc2l0aW9uID0gdGhpcy5nZXRQZXJjZW50YWdlQnlFdmVudChldmVudCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gJ3N0YXJ0JyAmJiBuZXdQb3NpdGlvbiA+IHRoaXMuZW5kVmFsdWUpIHx8XG4gICAgICAgICAgICAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLmRyYWdnaW5nVGh1bWIgPT09ICdlbmQnICYmIG5ld1Bvc2l0aW9uIDwgdGhpcy5zdGFydFZhbHVlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uSW5Vc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUobmV3UG9zaXRpb24pO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZ2luZ1RodW1iID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gKHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQocG9zaXRpb25JblVzZXJSYW5nZSkgOiBuZXdQb3NpdGlvbikgPz8gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmFnZ2luZ1RodW1iID09PSAnZW5kJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kVmFsdWUgPSAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgPyB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLmdldChwb3NpdGlvbkluVXNlclJhbmdlKSA6IG5ld1Bvc2l0aW9uKSA/PyAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKFt0aGlzLnN0YXJ0VmFsdWUsIHRoaXMuZW5kVmFsdWVdKTtcblxuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy52YWx1ZSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCAmJiB0aGlzLmRyYWdnaW5nVGh1bWIgPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VmFsdWUgPSB0aGlzLmVuZFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PT0gZW5kICYmIHRoaXMuZHJhZ2dpbmdUaHVtYiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5zdGFydFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZSBhcyBudW1iZXI7XG4gICAgICAgICAgICBjb25zdCBfdmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHBvc2l0aW9uSW5Vc2VyUmFuZ2UgOiBuZXdQb3NpdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGlzQXRTYW1lVmFsdWUgPSB0aGlzLm5lZWRQYXJzZVZhbHVlcyA/IHBvc2l0aW9uSW5Vc2VyUmFuZ2UgPT09IHRoaXMudmFsdWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1N0ZXAgPSB0aGlzLnN0ZXAgIT09IDA7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZUlzVmFsaWRCeVN0ZXAgPSBoYXNTdGVwID8gY3VycmVudFZhbHVlICsgdGhpcy5zdGVwID09PSBfdmFsdWUgfHwgY3VycmVudFZhbHVlIC0gdGhpcy5zdGVwID09PSBfdmFsdWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChpc0F0U2FtZVZhbHVlICYmICFuZXdWYWx1ZUlzVmFsaWRCeVN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gKHRoaXMubmVlZFBhcnNlVmFsdWVzID8gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQocG9zaXRpb25JblVzZXJSYW5nZSkgOiBuZXdQb3NpdGlvbikgPz8gMDtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZW5kVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3MoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ2dpbmdUaHVtYiA9IG51bGw7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25UaHVtYk1vdmUpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW91c2VEb3duID0gZmFsc2U7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaGFuZGxlUHJvZ3Jlc3NCYXJNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMubW92aW5nUHJvZ3Jlc3NCYXIgPSB0cnVlO1xuICAgICAgICBjb25zdCBuZXdDZW50ZXIgPSB0aGlzLmdldFBlcmNlbnRhZ2VCeUV2ZW50KGV2ZW50KTtcbiAgICAgICAgY29uc3Qgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50ID0gdGhpcy5wcm9ncmVzc0JhckV2ZW50UG9zaXRpb25TdGFydDtcbiAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50ID0gdGhpcy5zdGFydFZhbHVlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudDtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnJhbmdlQmV0d2VlbkVsZW1lbnRzQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudDtcbiAgICAgICAgbGV0IHsgbmV3U3RhcnQsIG5ld0VuZCB9ID0gY2FsY3VsYXRlTmV3UmFuZ2Uoc3RhcnRWYWx1ZUJlZm9yZUV2ZW50LCBzdGFydFZhbHVlQmVmb3JlRXZlbnQgKyByYW5nZSwgc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50LCBuZXdDZW50ZXIpO1xuICAgICAgICBpZiAobmV3U3RhcnQgPCB0aGlzLk1JTl9SQU5HRV9WQUxVRSB8fCBuZXdFbmQgPiB0aGlzLk1BWF9SQU5HRV9WQUxVRSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5lZWRQYXJzZVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHN0YXJ0VmFsdWVCZWZvcmVFdmVudCk7XG4gICAgICAgICAgICBjb25zdCBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnRVc2VyUmFuZ2UgPSB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoc3RhcnRQb3NpdGlvbkJlZm9yZUV2ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNlbnRlclVzZXJSYW5nZSA9IHRoaXMuZ2V0VmFsdWVGcm9tTWFwQnlWYWx1ZShuZXdDZW50ZXIpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVSYW5nZSA9IHRoaXMudG90YWxSYW5nZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQ7XG4gICAgICAgICAgICBsZXQgeyBuZXdTdGFydCwgbmV3RW5kIH0gPSBjYWxjdWxhdGVOZXdSYW5nZShcbiAgICAgICAgICAgICAgICBzdGFydFZhbHVlQmVmb3JlRXZlbnRVc2VyUmFuZ2UsXG4gICAgICAgICAgICAgICAgc3RhcnRWYWx1ZUJlZm9yZUV2ZW50VXNlclJhbmdlICsgdmFsdWVSYW5nZSxcbiAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uQmVmb3JlRXZlbnRVc2VyUmFuZ2UsXG4gICAgICAgICAgICAgICAgY2VudGVyVXNlclJhbmdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChuZXdTdGFydCA8IHRoaXMubWluIHx8IG5ld0VuZCA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQobmV3U3RhcnQpID8/IDA7XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlci5nZXQobmV3RW5kKSA/PyAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGFydFZhbHVlID0gbmV3U3RhcnQ7XG4gICAgICAgICAgICB0aGlzLmVuZFZhbHVlID0gbmV3RW5kO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoW3RoaXMuc3RhcnRWYWx1ZSwgdGhpcy5lbmRWYWx1ZV0pO1xuICAgICAgICB0aGlzLnNldFByb2dyZXNzKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgaGFuZGxlUHJvZ3Jlc3NCYXJNb3ZlRW5kID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnByb2dyZXNzQmFyRXZlbnRQb3NpdGlvblN0YXJ0ID0gLTE7XG4gICAgICAgIHRoaXMuc3RhcnRWYWx1ZUJlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICAgICAgdGhpcy5yYW5nZUJldHdlZW5FbGVtZW50c0JlZm9yZVByb2dyZXNzQmFyRXZlbnQgPSAtMTtcbiAgICAgICAgdGhpcy50b3RhbFJhbmdlQmVmb3JlUHJvZ3Jlc3NCYXJFdmVudCA9IC0xO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZVByb2dyZXNzQmFyTW92ZUVuZCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmdQcm9ncmVzc0JhciA9IGZhbHNlO1xuICAgICAgICB9LCAxNTApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldFByb2dyZXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0xlZnQgPSB0aGlzLnN0YXJ0VmFsdWU7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzV2lkdGggPSBgY2FsYygke3RoaXMuZW5kVmFsdWUgLSB0aGlzLnN0YXJ0VmFsdWV9JSArIDEwcHgpYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NMZWZ0ID0gMDtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NXaWR0aCA9IGBjYWxjKCR7dGhpcy5lbmRWYWx1ZX0lICsgMTBweClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwZXJjZW50YWdlIG9mIGEgbW91c2UgZXZlbnQgZnJvbSB0aGUgdHJhY2sncyBsZWZ0IGVkZ2VcbiAgICAgKiBAcGFyYW0gbW91c2VFdmVudCBtb3VzZSBldmVudFxuICAgICAqIEByZXR1cm5zIHBlcmNlbnRhZ2UgZnJvbSB0aGUgbGVmdCBlZGdlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQZXJjZW50YWdlQnlFdmVudChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50IHwgUG9pbnRlckV2ZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdHJhY2tSZWN0ID0gdGhpcy50cmFjay5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBsZXQgbmV3TGVmdCA9IE1hdGgucm91bmQoKChtb3VzZUV2ZW50LmNsaWVudFggLSB0cmFja1JlY3QubGVmdCkgLyB0cmFja1JlY3Qud2lkdGgpICogdGhpcy5NQVhfUkFOR0VfVkFMVUUpO1xuICAgICAgICBuZXdMZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obmV3TGVmdCwgdGhpcy5NQVhfUkFOR0VfVkFMVUUpKTtcbiAgICAgICAgcmV0dXJuIG5ld0xlZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSwgcGFyc2UgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMgJiYgcGFyc2UpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiB0aGlzLmdldFZhbHVlRnJvbU1hcEJ5VmFsdWUoeCkpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVc2VyUmFuZ2VNYXBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5taW47XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMubWF4O1xuICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWF4IHZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbiB2YWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgY29uc3QgZGVjaW1hbFBsYWNlcyA9IDI7XG4gICAgICAgIGNvbnN0IHN0ZXBDb3VudCA9IE1hdGguZmxvb3IocmFuZ2UgLyB0aGlzLnN0ZXApO1xuICAgICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlID0gc3RhcnQ7IHZhbHVlIDw9IGVuZDsgdmFsdWUgKz0gdGhpcy5zdGVwKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV0gIT09IGVuZCkge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2goZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1hcHBlZCA9ICgodmFsdWUgLSBzdGFydCkgLyByYW5nZSkgKiB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcHBlZC50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG1hcHBlZFZhbHVlc1swXSA9IDA7XG4gICAgICAgIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV0gPSB0aGlzLk1BWF9SQU5HRV9WQUxVRTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLk1BWF9SQU5HRV9WQUxVRSAtIG1hcHBlZFZhbHVlc1ttYXBwZWRWYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGVycm9yUGVyU3RlcCA9IGVycm9yIC8gc3RlcENvdW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG1hcHBlZFZhbHVlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hcHBlZFZhbHVlc1tpXSArPSBlcnJvclBlclN0ZXA7XG4gICAgICAgICAgICBtYXBwZWRWYWx1ZXNbaV0gPSBwYXJzZUZsb2F0KG1hcHBlZFZhbHVlc1tpXS50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpKTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcFJhbmdlVmFsdWVzRm9yU2xpZGVyLnNldCh2YWx1ZSwgbWFwcGVkVmFsdWVzW2luZGV4XSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlIGJ5IHVzaW5nIHRoZSBtYXAgb2YgcmFuZ2UgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogSWYgdGhlIG1hcCBpcyAwOiB7IDAgfSwgMTogeyAxMCB9LCAyOiB7IDMwIH0sIDM6IHsgNDAgfSwgNDogeyA1MCB9XG4gICAgICogYW5kIHRoZSBzbGlkZXJWYWx1ZSBpcyAzNywgdGhlIGZ1bmN0aW9uIHJldHVybnMgM1xuICAgICAqIG9yIHRoZSBzbGlkZXIgdmFsdWUgaXMgNDAsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDRcbiAgICAgKiBAcGFyYW0gc2xpZGVyVmFsdWUgdGhlIHZhbHVlIG9mIHRoZSBzbGlkZXIgKHZhbHVlcyBvbmx5IGJldHdlZW4gcmFuZ2UgTUlOIGFuZCBNQVgpXG4gICAgICogQHJldHVybnMgdGhlIHVzZXIgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc2xpZGVyIHZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21NYXBCeVZhbHVlKHNsaWRlclZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWFwVG9BcnJheSA9IEFycmF5LmZyb20odGhpcy5tYXBSYW5nZVZhbHVlc0ZvclNsaWRlcikubWFwKChbdmFsdWUsIG1hcHBlZF0pID0+ICh7IHZhbHVlLCBtYXBwZWQgfSkpO1xuICAgICAgICBjb25zdCBleGFjdFZhbHVlID0gbWFwVG9BcnJheS5maW5kKCh4KSA9PiB4Lm1hcHBlZCA9PSBzbGlkZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSBtYXBUb0FycmF5LnJlZHVjZSgocHJldiwgY3VycikgPT4gKE1hdGguYWJzKGN1cnIubWFwcGVkIC0gc2xpZGVyVmFsdWUpIDwgTWF0aC5hYnMocHJldi5tYXBwZWQgLSBzbGlkZXJWYWx1ZSkgPyBjdXJyIDogcHJldikpO1xuICAgICAgICByZXR1cm4gZXhhY3RWYWx1ZSA/IGV4YWN0VmFsdWUudmFsdWUgOiBjbG9zZXN0LnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUga2V5IGZyb20gdGhlIG1hcCB0aGF0IGlzIGNsb3Nlc3QgdG8gdGhlIGdpdmVuIHNsaWRlciB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdXNlclZhbHVlIC0gVGhlIHZhbHVlIHRvIGZpbmQgdGhlIGNsb3Nlc3Qga2V5IGZvci4gKHZhbHVlcyBvbmx5IGJldHdlZW4gMCAtIDEwMClcbiAgICAgKiBAcmV0dXJucyBUaGUga2V5IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIGNsb3Nlc3QgbWFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcih1c2VyVmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG1hcFRvQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMubWFwUmFuZ2VWYWx1ZXNGb3JTbGlkZXIpLm1hcCgoW3ZhbHVlLCBtYXBwZWRdKSA9PiAoeyB2YWx1ZSwgbWFwcGVkIH0pKTtcbiAgICAgICAgaWYgKHVzZXJWYWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAxXS5tYXBwZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAodXNlclZhbHVlIDw9IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheVswXS5tYXBwZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhhY3RWYWx1ZSA9IG1hcFRvQXJyYXkuZmluZCgoeCkgPT4geC52YWx1ZSA9PSB1c2VyVmFsdWUpO1xuICAgICAgICBjb25zdCBjbG9zZXN0VmFsdWUgPSBtYXBUb0FycmF5LnJlZHVjZSgocHJldiwgY3VycikgPT4gKE1hdGguYWJzKGN1cnIudmFsdWUgLSB1c2VyVmFsdWUpIDwgTWF0aC5hYnMocHJldi52YWx1ZSAtIHVzZXJWYWx1ZSkgPyBjdXJyIDogcHJldikpO1xuICAgICAgICBjb25zdCBpdGVtID0gZXhhY3RWYWx1ZSB8fCBjbG9zZXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RJdGVtID0gbWFwVG9BcnJheVswXSA9PT0gaXRlbTtcbiAgICAgICAgY29uc3QgaXNMYXN0SXRlbSA9IG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAxXSA9PT0gaXRlbTtcbiAgICAgICAgaWYgKGlzRmlyc3RJdGVtICYmIHVzZXJWYWx1ZSA+IHRoaXMubWluKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbMV0ubWFwcGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0xhc3RJdGVtICYmIHVzZXJWYWx1ZSA8IHRoaXMubWF4KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TWlkcG9pbnQoaXRlbS5tYXBwZWQsIG1hcFRvQXJyYXlbbWFwVG9BcnJheS5sZW5ndGggLSAyXS5tYXBwZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWFwcGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVBcnJvd0tleUxlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmNyZW1lbnRPckRlY3JlbWVudFN0YXJ0QW5kRW5kVmFsdWUoZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5jcmVtZW50T3JEZWNyZW1lbnRFbmRWYWx1ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQXJyb3dLZXlSaWdodCgpIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50U3RhcnRBbmRFbmRWYWx1ZSh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2luY3JlbWVudE9yRGVjcmVtZW50RW5kVmFsdWUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luY3JlbWVudE9yRGVjcmVtZW50U3RhcnRBbmRFbmRWYWx1ZShpbmNyZW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IGdldERpZmZlcmVuY2UoZW5kLCBzdGFydCk7XG4gICAgICAgIGlmIChpbmNyZW1lbnQpIHtcbiAgICAgICAgICAgIHN0YXJ0ICs9IHRoaXMuc3RlcDtcbiAgICAgICAgICAgIGVuZCArPSB0aGlzLnN0ZXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGFydCAtPSB0aGlzLnN0ZXA7XG4gICAgICAgICAgICBlbmQgLT0gdGhpcy5zdGVwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0TGVzc1RoYW5NaW4gPSBzdGFydCA8IHRoaXMubWluO1xuICAgICAgICBjb25zdCBlbmRHcmVhdGVyVGhhbk1heCA9IGVuZCA+IHRoaXMubWF4O1xuICAgICAgICBpZiAoc3RhcnRMZXNzVGhhbk1pbiB8fCBlbmRHcmVhdGVyVGhhbk1heCkge1xuICAgICAgICAgICAgaWYgKHN0YXJ0TGVzc1RoYW5NaW4pIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMubWluO1xuICAgICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kR3JlYXRlclRoYW5NYXgpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLm1heDtcbiAgICAgICAgICAgICAgICBzdGFydCA9IGVuZCAtIGRpZmZlcmVuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0IDwgdGhpcy5taW4gfHwgZW5kID4gdGhpcy5tYXgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZhbHVlKFtzdGFydCwgZW5kXSwgZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5nZXRDbG9zZXN0VmFsdWVGcm9tTWFwU2xpZGVyKHN0YXJ0KTtcbiAgICAgICAgICAgIGVuZCA9IHRoaXMuZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcihlbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmVuZFZhbHVlID0gZW5kO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luY3JlbWVudE9yRGVjcmVtZW50RW5kVmFsdWUoaW5jcmVtZW50OiBib29sZWFuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgICBpZiAoaW5jcmVtZW50KSB7XG4gICAgICAgICAgICB2YWx1ZSArPSB0aGlzLnN0ZXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSAtPSB0aGlzLnN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IF9uZXdFbmRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5uZWVkUGFyc2VWYWx1ZXMpIHtcbiAgICAgICAgICAgIF9uZXdFbmRWYWx1ZSA9IHRoaXMuZ2V0Q2xvc2VzdFZhbHVlRnJvbU1hcFNsaWRlcihfbmV3RW5kVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfbmV3RW5kVmFsdWUgPCB0aGlzLk1JTl9SQU5HRV9WQUxVRSB8fCBfbmV3RW5kVmFsdWUgPiB0aGlzLk1BWF9SQU5HRV9WQUxVRSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSBfbmV3RW5kVmFsdWU7XG4gICAgICAgIHRoaXMuc3RhcnRWYWx1ZSA9IHRoaXMuZW5kVmFsdWU7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoX25ld0VuZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuZWVkUGFyc2VWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heCAhPT0gdGhpcy5NQVhfUkFOR0VfVkFMVUUgfHwgdGhpcy5taW4gIT09IHRoaXMuTUlOX1JBTkdFX1ZBTFVFO1xuICAgIH1cbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIGEgbmV3IHJhbmdlIGJhc2VkIG9uIHRoZSBvbGQgcmFuZ2UgYW5kIHRoZSBwb3NpdGlvbnMgY2xpY2tlZCBhbmQgZmluYWxpemVkLlxuICpcbiAqIEBwYXJhbSBvbGRTdGFydCAtIFRoZSBzdGFydGluZyB2YWx1ZSBvZiB0aGUgb2xkIHJhbmdlLlxuICogQHBhcmFtIG9sZEVuZCAtIFRoZSBlbmRpbmcgdmFsdWUgb2YgdGhlIG9sZCByYW5nZS5cbiAqIEBwYXJhbSBjbGlja2VkUG9zaXRpb24gLSBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIGNsaWNrIG9jY3VycmVkLlxuICogQHBhcmFtIGZpbmFsUG9zaXRpb24gLSBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIHJhbmdlIHNob3VsZCBlbmQuXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbmV3IHN0YXJ0IGFuZCBlbmQgdmFsdWVzIG9mIHRoZSByYW5nZS5cbiAqL1xuY29uc3QgY2FsY3VsYXRlTmV3UmFuZ2UgPSAob2xkU3RhcnQ6IG51bWJlciwgb2xkRW5kOiBudW1iZXIsIGNsaWNrZWRQb3NpdGlvbjogbnVtYmVyLCBmaW5hbFBvc2l0aW9uOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCByYW5nZSA9IG9sZEVuZCAtIG9sZFN0YXJ0O1xuICAgIGNvbnN0IG5ld1N0YXJ0ID0gZmluYWxQb3NpdGlvbiAtIChjbGlja2VkUG9zaXRpb24gLSBvbGRTdGFydCk7XG4gICAgY29uc3QgbmV3RW5kID0gbmV3U3RhcnQgKyByYW5nZTtcbiAgICByZXR1cm4geyBuZXdTdGFydCwgbmV3RW5kIH07XG59O1xuXG5jb25zdCBpc0luUmFuZ2UgPSAodmFsdWU6IG51bWJlciwgcmFuZ2VTdGFydDogbnVtYmVyLCByYW5nZUVuZDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgW21pbiwgbWF4XSA9IHJhbmdlU3RhcnQgPCByYW5nZUVuZCA/IFtyYW5nZVN0YXJ0LCByYW5nZUVuZF0gOiBbcmFuZ2VFbmQsIHJhbmdlU3RhcnRdO1xuICAgIHJldHVybiB2YWx1ZSA+PSBtaW4gJiYgdmFsdWUgPD0gbWF4O1xufTtcblxuY29uc3QgZ2V0TWlkcG9pbnQgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBtaWRwb2ludCA9IChzdGFydCArIGVuZCkgLyAyO1xuICAgIHJldHVybiBwYXJzZUZsb2F0KG1pZHBvaW50LnRvRml4ZWQoMikpO1xufTtcbmNvbnN0IGdldERpZmZlcmVuY2UgPSAoZW5kOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gTWF0aC5hYnMoZW5kIC0gc3RhcnQpO1xufTtcbiIsIjxkaXZcbiAgICBjbGFzcz1cInNsaWRlci1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NsaWRlci1jb250YWluZXItLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAoY2xpY2spPVwib25UcmFja0NsaWNrKCRldmVudClcIlxuICAgIChmb2N1cyk9XCJvbkZvY3VzSW4oKVwiXG4gICAgKGJsdXIpPVwib25CbHVyKClcIj5cbiAgICA8ZGl2XG4gICAgICAgICN0cmFja1xuICAgICAgICBjbGFzcz1cInNsaWRlci10cmFja1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdzbGlkZXItdHJhY2stLWhpZGRlbi10aHVtYic6IGhpZGRlblRodW1iLFxuICAgICAgICAgICAgJ3NsaWRlci10cmFjay0tbW92aW5nLW11bHRpcGxlLXRodW1icyc6IG1vdmluZ1Byb2dyZXNzQmFyXG4gICAgICAgIH1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzbGlkZXItcHJvZ3Jlc3NcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblByb2dyZXNzTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJwcm9ncmVzc0xlZnRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzV2lkdGhcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJzbGlkZXItdGh1bWJcIlxuICAgICAgICAgICAgW3NUb29sdGlwXT1cInRvb2x0aXBTdGFydFRleHRcIlxuICAgICAgICAgICAgW3Nob3dEZWxheV09XCIwXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAnc3RhcnQnKVwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cInN0YXJ0VmFsdWVcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtzVG9vbHRpcF09XCJ0b29sdGlwRW5kVGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cInNsaWRlci10aHVtYlwiXG4gICAgICAgICAgICBbc2hvd0RlbGF5XT1cIjBcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsICdlbmQnKVwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImVuZFZhbHVlXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgICA8c3Bhbj57eyBtaW5WYWx1ZUxhYmVsIHx8IG1pbiB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+e3sgbWF4VmFsdWVMYWJlbCB8fCBtYXggfX08L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==