@seniorsistemas/angular-components 19.9.3 → 19.9.5

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 (136) hide show
  1. package/autocomplete/README.md +4 -0
  2. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +7 -1
  3. package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +3 -1
  4. package/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
  5. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
  6. package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
  7. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
  8. package/drawer/README.md +9 -2
  9. package/drawer/lib/drawer/drawer.component.d.ts +12 -1
  10. package/editor/lib/editor/editor.component.d.ts +1 -1
  11. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +10 -4
  12. package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +5 -3
  13. package/esm2022/button/lib/button/button.component.mjs +3 -3
  14. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
  15. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
  16. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
  17. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
  18. package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
  19. package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
  20. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
  24. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
  25. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
  26. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
  27. package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
  28. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
  29. package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
  30. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
  31. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
  32. package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
  33. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
  34. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
  35. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +21 -3
  36. package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +14 -3
  37. package/esm2022/insights/lib/insights/insights.component.mjs +15 -4
  38. package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
  39. package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
  40. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
  41. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
  42. package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +1 -1
  43. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +23 -3
  44. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +5 -3
  45. package/esm2022/select/lib/select/select.component.mjs +6 -4
  46. package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
  47. package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
  48. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +58 -8
  49. package/esm2022/split-button/lib/split-button/split-button.component.mjs +11 -3
  50. package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
  51. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
  52. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
  53. package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
  54. package/esm2022/token-list/lib/token-list/token-list.component.mjs +7 -3
  55. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
  56. package/esm2022/utils/lib/utils/utils.mjs +49 -3
  57. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +13 -5
  58. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  59. package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
  60. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  61. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
  62. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  63. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
  64. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  65. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
  66. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
  68. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
  70. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  71. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +17 -17
  72. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
  74. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
  76. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
  78. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  79. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
  80. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-insights.mjs +47 -7
  82. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
  84. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  85. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
  86. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  87. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +22 -2
  88. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-select.mjs +9 -5
  90. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  91. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
  92. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
  94. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +57 -7
  96. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +10 -2
  98. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  99. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
  100. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  101. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
  102. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  103. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  104. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  105. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
  106. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  107. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -2
  108. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
  110. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
  112. package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
  113. package/global-search/lib/global-search/global-search.module.d.ts +1 -1
  114. package/insights/README.md +12 -0
  115. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +22 -1
  116. package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +9 -1
  117. package/insights/lib/insights/insights.component.d.ts +9 -1
  118. package/package.json +1 -3
  119. package/paginator/lib/models/paginator.models.d.ts +1 -0
  120. package/paginator/lib/paginator/paginator.component.d.ts +3 -1
  121. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
  122. package/rating-scale/README.md +38 -13
  123. package/rating-scale/lib/rating-scale/models/rating-scale-node.d.ts +8 -0
  124. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +4 -1
  125. package/select/README.md +2 -0
  126. package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
  127. package/select/lib/select/select.component.d.ts +3 -1
  128. package/side-sheet/README.md +4 -4
  129. package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
  130. package/speech-recognition/README.md +1 -0
  131. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +4 -1
  132. package/split-button/README.md +2 -0
  133. package/split-button/lib/split-button/split-button.component.d.ts +5 -1
  134. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
  135. package/token-list/lib/token-list/token-list.component.d.ts +3 -1
  136. package/utils/lib/utils/utils.d.ts +21 -0
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-slider.mjs","sources":["../../projects/angular-components/slider/src/lib/slider/slider.component.ts","../../projects/angular-components/slider/src/lib/slider/slider.component.html","../../projects/angular-components/slider/src/lib/slider/slider.module.ts","../../projects/angular-components/slider/src/seniorsistemas-angular-components-slider.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de controle deslizante (slider) para seleção de valores numéricos\r\n * dentro de um intervalo definido. Suporta modo simples (um valor) e modo de intervalo\r\n * (dois valores: início e fim). Implementa {@link ControlValueAccessor} para integração\r\n * com Reactive Forms e Template-driven Forms do Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Slider simples -->\r\n * <s-slider formControlName=\"volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" />\r\n *\r\n * <!-- Slider de intervalo -->\r\n * <s-slider formControlName=\"faixa\" [multiple]=\"true\" [min]=\"0\" [max]=\"1000\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [NgClass, TooltipDirective],\r\n})\r\nexport class SliderComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnChanges {\r\n private readonly MAX_RANGE_VALUE = 100;\r\n private readonly MIN_RANGE_VALUE = 0;\r\n @ViewChild('track')\r\n public track!: ElementRef;\r\n\r\n /**\r\n * @description Habilita o modo de intervalo, permitindo selecionar um valor mínimo e máximo.\r\n * Quando `true`, o valor do componente é um array `[inicio, fim]`.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public multiple = false;\r\n\r\n /**\r\n * @description Valor atual do slider. No modo simples é um número; no modo de\r\n * intervalo (`multiple: true`) é um array `[inicio, fim]`.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public value: number | [number, number] = 0;\r\n\r\n /**\r\n * @description Emitido sempre que o valor do slider é alterado pelo usuário.\r\n * Emite o novo valor (número ou array de dois números no modo de intervalo).\r\n */\r\n @Output()\r\n public valueChange = new EventEmitter<number | [number, number]>();\r\n\r\n /**\r\n * @description Incremento aplicado a cada movimento do thumb do slider.\r\n *\r\n * @default 1\r\n */\r\n @Input()\r\n public step = 1;\r\n\r\n /**\r\n * @description Oculta visualmente o thumb (botão arrastável) do slider.\r\n * Útil para visualizações onde apenas a faixa de progresso deve ser exibida.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public hiddenThumb = false;\r\n\r\n /**\r\n * @description Desabilita a interação do usuário com o slider.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public disabled = false;\r\n\r\n /**\r\n * @description Valor mínimo permitido no slider.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public min = this.MIN_RANGE_VALUE;\r\n\r\n /**\r\n * @description Valor máximo permitido no slider.\r\n *\r\n * @default 100\r\n */\r\n @Input()\r\n public max = this.MAX_RANGE_VALUE;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor mínimo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public minValueLabel?: string;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor máximo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public maxValueLabel?: string;\r\n\r\n /**\r\n * @description Índice de tabulação do elemento, controlando a ordem de foco via teclado.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public tabindex = 0;\r\n\r\n public startValue = 0;\r\n public endValue = 0;\r\n public movingProgressBar = false;\r\n public progressLeft = 0;\r\n public progressWidth = '';\r\n\r\n public onChange: (value: number | [number, number]) => void = () => {};\r\n public onTouched: (value: number | [number, number]) => void = () => {};\r\n\r\n private draggingThumb: 'start' | 'end' | null = null;\r\n private progressBarEventPositionStart = -1;\r\n private startValueBeforeProgressBarEvent = -1;\r\n private rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n private totalRangeBeforeProgressBarEvent = -1;\r\n /**\r\n * Map of valid values for values in range.\r\n * @example\r\n * with min = -10 and max = 10 will have this map.\r\n * {\r\n * -10: { 0 },\r\n * -9: { 10 },\r\n * ...\r\n * 10: { 10 }\r\n * }\r\n */\r\n private mapRangeValuesForSlider: Map<number, number> = new Map();\r\n private activeMouseDown = false;\r\n private focusActive = false;\r\n\r\n public ngOnInit(): void {\r\n this.setUserRangeMapValues();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n const hasChangesOnMin = changes['min'] && !changes['min'].firstChange;\r\n const hasChangesOnMax = changes['max'] && !changes['max'].firstChange;\r\n const hasChanges = hasChangesOnMin || hasChangesOnMax;\r\n if (hasChanges) {\r\n this.setUserRangeMapValues();\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n }\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydown($event: KeyboardEvent) {\r\n if (this.focusActive && !this.disabled) {\r\n const isArrowKeyLeft = $event.key === 'ArrowLeft';\r\n const isArrowKeyRight = $event.key === 'ArrowRight';\r\n if (isArrowKeyLeft) {\r\n this.handleArrowKeyLeft();\r\n } else if (isArrowKeyRight) {\r\n this.handleArrowKeyRight();\r\n }\r\n }\r\n }\r\n\r\n public get tooltipStartText() {\r\n return Array.isArray(this.value) ? this.value[0]?.toString() : this.value?.toString();\r\n }\r\n\r\n public get tooltipEndText() {\r\n return Array.isArray(this.value) ? this.value[1]?.toString() : this.value?.toString();\r\n }\r\n\r\n public writeValue(obj: number | [number, number]): void {\r\n this.value = obj;\r\n this.setRangeValues();\r\n }\r\n\r\n public registerOnChange(fn: (value: number | [number, number]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n public onFocusIn() {\r\n this.focusActive = true;\r\n }\r\n\r\n public onBlur() {\r\n this.focusActive = false;\r\n }\r\n\r\n public onTrackClick(evt: MouseEvent) {\r\n if (this.disabled || this.movingProgressBar || this.activeMouseDown) {\r\n return;\r\n }\r\n const trackClickPercentage = this.getPercentageByEvent(evt);\r\n const trackClickToUserRange = this.getValueFromMapByValue(trackClickPercentage);\r\n const _trackClickValid = this.needParseValues ? trackClickToUserRange : trackClickPercentage;\r\n const _setEndValue = () => {\r\n const _endValueUserValue = this.getValueFromMapByValue(this.endValue);\r\n const _endValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n if (this.needParseValues && _endValueUserValue !== trackClickToUserRange) {\r\n this.endValue = _endValue;\r\n } else if (!this.needParseValues) {\r\n this.endValue = trackClickPercentage;\r\n }\r\n };\r\n\r\n const _setStartValue = () => {\r\n const _startValueUserValue = this.getValueFromMapByValue(this.startValue);\r\n if (this.needParseValues && _startValueUserValue !== trackClickToUserRange) {\r\n const _startValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n this.startValue = _startValue;\r\n } else if (!this.needParseValues) {\r\n this.startValue = trackClickPercentage;\r\n }\r\n };\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n const validStart = (this.needParseValues ? this.mapRangeValuesForSlider.get(start) : start) ?? 0;\r\n const validEnd = (this.needParseValues ? this.mapRangeValuesForSlider.get(end) : end) ?? 0;\r\n const _updateStart = () => {\r\n _setStartValue();\r\n this.setValue([trackClickPercentage, validEnd]);\r\n };\r\n\r\n const _updateEnd = () => {\r\n _setEndValue();\r\n this.setValue([validStart, trackClickPercentage]);\r\n };\r\n const clickPercentageBetweenRange = isInRange(_trackClickValid, start, end);\r\n if (_trackClickValid < start) {\r\n _updateStart();\r\n } else if (_trackClickValid > end) {\r\n _updateEnd();\r\n } else if (clickPercentageBetweenRange) {\r\n const middle = (start + end) / 2;\r\n const trackClickPercentageIsExactiddle = _trackClickValid === middle;\r\n if (trackClickPercentageIsExactiddle) {\r\n _updateStart();\r\n } else {\r\n const setStart = _trackClickValid < middle;\r\n const setEnd = _trackClickValid > middle;\r\n if (setStart) {\r\n _updateStart();\r\n } else if (setEnd) {\r\n _updateEnd();\r\n }\r\n }\r\n }\r\n } else {\r\n this.setValue(trackClickPercentage);\r\n _setEndValue();\r\n }\r\n\r\n this.setProgress();\r\n }\r\n\r\n public onProgressMouseDown(evt: MouseEvent) {\r\n if (!this.multiple || this.disabled) {\r\n return;\r\n }\r\n this.progressBarEventPositionStart = this.getPercentageByEvent(evt);\r\n this.startValueBeforeProgressBarEvent = this.startValue;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = this.endValue - this.startValue;\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n this.totalRangeBeforeProgressBarEvent = end - start;\r\n }\r\n document.addEventListener('mousemove', this.handleProgressBarMove);\r\n document.addEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n }\r\n\r\n public onMouseDown(_: MouseEvent, thumb: 'start' | 'end'): void {\r\n if (this.disabled) return;\r\n\r\n this.draggingThumb = thumb;\r\n this.activeMouseDown = true;\r\n document.addEventListener('mousemove', this.onThumbMove);\r\n document.addEventListener('mouseup', this.onMouseUp);\r\n }\r\n\r\n private setRangeValues(): void {\r\n const _setStartAndEndValue = (startValue: number, endValue: number) => {\r\n this.startValue = this.getClosestValueFromMapSlider(startValue);\r\n this.endValue = this.getClosestValueFromMapSlider(endValue);\r\n };\r\n if (this.value === null || this.value === undefined) {\r\n return;\r\n }\r\n if (Array.isArray(this.value) && !this.multiple) {\r\n throw new Error('You must use \"multiple\" with value as array');\r\n }\r\n if (this.multiple && Array.isArray(this.value)) {\r\n this.startValue = this.value[0];\r\n this.endValue = this.value[1];\r\n } else if (!this.multiple) {\r\n this.startValue = this.value as number;\r\n this.endValue = this.value as number;\r\n }\r\n _setStartAndEndValue(this.startValue, this.endValue);\r\n if (this.multiple) {\r\n let [_startValue, _endValue] = this.value as [number, number];\r\n const difference = getDifference(_endValue, _startValue);\r\n const endValueIsGreatherThanMax = _endValue > this.max;\r\n const startValueIsLessThanMin = _startValue < this.min;\r\n const needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;\r\n if (endValueIsGreatherThanMax) {\r\n _endValue = this.max;\r\n _startValue = _endValue - difference;\r\n } else if (startValueIsLessThanMin) {\r\n _startValue = this.min;\r\n _endValue = _startValue + difference;\r\n }\r\n if (needUpdateValues) {\r\n _setStartAndEndValue(_startValue, _endValue);\r\n this.setValue([this.startValue, this.endValue]);\r\n }\r\n } else {\r\n let _value = this.value as number;\r\n const valueGreatherThanMax = _value > this.max;\r\n const valueLessThanMin = _value < this.min;\r\n const needUpdateValue = valueGreatherThanMax || valueLessThanMin;\r\n if (valueGreatherThanMax) {\r\n _value = this.max;\r\n } else if (valueLessThanMin) {\r\n _value = this.min;\r\n }\r\n if (needUpdateValue) {\r\n this.setValue(_value, false);\r\n }\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private onThumbMove = (event: MouseEvent) => {\r\n if (this.movingProgressBar || !this.draggingThumb) return;\r\n\r\n let newPosition = this.getPercentageByEvent(event);\r\n if (\r\n (this.multiple && this.draggingThumb === 'start' && newPosition > this.endValue) ||\r\n (this.multiple && this.draggingThumb === 'end' && newPosition < this.startValue)\r\n ) {\r\n return;\r\n }\r\n\r\n const positionInUserRange = this.getValueFromMapByValue(newPosition);\r\n\r\n if (this.multiple) {\r\n if (this.draggingThumb === 'start') {\r\n this.startValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n } else if (this.draggingThumb === 'end') {\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n }\r\n\r\n this.setValue([this.startValue, this.endValue]);\r\n\r\n const [start, end] = this.value as [number, number];\r\n\r\n if (start === end && this.draggingThumb === 'start') {\r\n this.startValue = this.endValue;\r\n } else if (start === end && this.draggingThumb === 'end') {\r\n this.endValue = this.startValue;\r\n }\r\n } else {\r\n const currentValue = this.value as number;\r\n const _value = this.needParseValues ? positionInUserRange : newPosition;\r\n const isAtSameValue = this.needParseValues ? positionInUserRange === this.value : false;\r\n const hasStep = this.step !== 0;\r\n const newValueIsValidByStep = hasStep\r\n ? currentValue + this.step === _value || currentValue - this.step === _value\r\n : false;\r\n if (isAtSameValue && !newValueIsValidByStep) {\r\n return;\r\n }\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n this.startValue = this.endValue;\r\n this.setValue(this.endValue);\r\n }\r\n this.setProgress();\r\n };\r\n\r\n private onMouseUp = () => {\r\n this.draggingThumb = null;\r\n document.removeEventListener('mousemove', this.onThumbMove);\r\n document.removeEventListener('mouseup', this.onMouseUp);\r\n setTimeout(() => {\r\n this.activeMouseDown = false;\r\n }, 150);\r\n };\r\n\r\n private handleProgressBarMove = (event: MouseEvent) => {\r\n this.movingProgressBar = true;\r\n const newCenter = this.getPercentageByEvent(event);\r\n const startPositionBeforeEvent = this.progressBarEventPositionStart;\r\n const startValueBeforeEvent = this.startValueBeforeProgressBarEvent;\r\n const range = this.rangeBetweenElementsBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEvent,\r\n startValueBeforeEvent + range,\r\n startPositionBeforeEvent,\r\n newCenter,\r\n );\r\n if (newStart < this.MIN_RANGE_VALUE || newEnd > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n if (this.needParseValues) {\r\n const startValueBeforeEventUserRange = this.getValueFromMapByValue(startValueBeforeEvent);\r\n const startPositionBeforeEventUserRange = this.getValueFromMapByValue(startPositionBeforeEvent);\r\n const centerUserRange = this.getValueFromMapByValue(newCenter);\r\n const valueRange = this.totalRangeBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEventUserRange,\r\n startValueBeforeEventUserRange + valueRange,\r\n startPositionBeforeEventUserRange,\r\n centerUserRange,\r\n );\r\n if (newStart < this.min || newEnd > this.max) {\r\n return;\r\n }\r\n this.startValue = this.mapRangeValuesForSlider.get(newStart) ?? 0;\r\n this.endValue = this.mapRangeValuesForSlider.get(newEnd) ?? 0;\r\n } else {\r\n this.startValue = newStart;\r\n this.endValue = newEnd;\r\n }\r\n this.setValue([this.startValue, this.endValue]);\r\n this.setProgress();\r\n };\r\n\r\n private handleProgressBarMoveEnd = () => {\r\n this.progressBarEventPositionStart = -1;\r\n this.startValueBeforeProgressBarEvent = -1;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n this.totalRangeBeforeProgressBarEvent = -1;\r\n document.removeEventListener('mousemove', this.handleProgressBarMove);\r\n document.removeEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n setTimeout(() => {\r\n this.movingProgressBar = false;\r\n }, 150);\r\n };\r\n\r\n private setProgress(): void {\r\n if (this.multiple) {\r\n this.progressLeft = this.startValue;\r\n this.progressWidth = `calc(${this.endValue - this.startValue}% + 10px)`;\r\n } else {\r\n this.progressLeft = 0;\r\n this.progressWidth = `calc(${this.endValue}% + 10px)`;\r\n }\r\n }\r\n\r\n /**\r\n * Get the percentage of a mouse event from the track's left edge\r\n * @param mouseEvent mouse event\r\n * @returns percentage from the left edge\r\n */\r\n private getPercentageByEvent(mouseEvent: MouseEvent | PointerEvent): number {\r\n const trackRect = this.track.nativeElement.getBoundingClientRect();\r\n let newLeft = Math.round(((mouseEvent.clientX - trackRect.left) / trackRect.width) * this.MAX_RANGE_VALUE);\r\n newLeft = Math.max(0, Math.min(newLeft, this.MAX_RANGE_VALUE));\r\n return newLeft;\r\n }\r\n\r\n private setValue(value: number | [number, number], parse = true) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.needParseValues && parse) {\r\n if (Array.isArray(value)) {\r\n value = value.map((x) => this.getValueFromMapByValue(x)) as [number, number];\r\n } else {\r\n value = this.getValueFromMapByValue(value);\r\n }\r\n }\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n\r\n private setUserRangeMapValues() {\r\n const start = this.min;\r\n const end = this.max;\r\n if (start > end) {\r\n throw new Error('Max value must be greater than min value');\r\n }\r\n this.mapRangeValuesForSlider.clear();\r\n const range = end - start;\r\n const decimalPlaces = 2;\r\n const stepCount = Math.floor(range / this.step);\r\n const values: number[] = [];\r\n for (let value = start; value <= end; value += this.step) {\r\n values.push(value);\r\n }\r\n if (values[values.length - 1] !== end) {\r\n values.push(end);\r\n }\r\n const mappedValues = values.map((value) => {\r\n let mapped = ((value - start) / range) * this.MAX_RANGE_VALUE;\r\n return parseFloat(mapped.toFixed(decimalPlaces));\r\n });\r\n mappedValues[0] = 0;\r\n mappedValues[mappedValues.length - 1] = this.MAX_RANGE_VALUE;\r\n const error = this.MAX_RANGE_VALUE - mappedValues[mappedValues.length - 1];\r\n const errorPerStep = error / stepCount;\r\n for (let i = 1; i < mappedValues.length - 1; i++) {\r\n mappedValues[i] += errorPerStep;\r\n mappedValues[i] = parseFloat(mappedValues[i].toFixed(decimalPlaces));\r\n }\r\n values.forEach((value, index) => {\r\n this.mapRangeValuesForSlider.set(value, mappedValues[index]);\r\n });\r\n }\r\n\r\n /**\r\n * Returns the user value from the given slider value by using the map of range values.\r\n * @example\r\n * If the map is 0: { 0 }, 1: { 10 }, 2: { 30 }, 3: { 40 }, 4: { 50 }\r\n * and the sliderValue is 37, the function returns 3\r\n * or the slider value is 40, the function returns 4\r\n * @param sliderValue the value of the slider (values only between range MIN and MAX)\r\n * @returns the user value from the given slider value\r\n */\r\n private getValueFromMapByValue(sliderValue: number) {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n const exactValue = mapToArray.find((x) => x.mapped == sliderValue);\r\n const closest = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.mapped - sliderValue) < Math.abs(prev.mapped - sliderValue) ? curr : prev,\r\n );\r\n return exactValue ? exactValue.value : closest.value;\r\n }\r\n\r\n /**\r\n * Retrieves the key from the map that is closest to the given slider value.\r\n * @param userValue - The value to find the closest key for. (values only between 0 - 100)\r\n * @returns The key that corresponds to the closest mapped value.\r\n */\r\n private getClosestValueFromMapSlider(userValue: number): number {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n if (userValue >= this.max) {\r\n return mapToArray[mapToArray.length - 1].mapped;\r\n } else if (userValue <= this.min) {\r\n return mapToArray[0].mapped;\r\n }\r\n const exactValue = mapToArray.find((x) => x.value == userValue);\r\n const closestValue = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.value - userValue) < Math.abs(prev.value - userValue) ? curr : prev,\r\n );\r\n const item = exactValue || closestValue;\r\n const isFirstItem = mapToArray[0] === item;\r\n const isLastItem = mapToArray[mapToArray.length - 1] === item;\r\n if (isFirstItem && userValue > this.min) {\r\n return getMidpoint(item.mapped, mapToArray[1].mapped);\r\n } else if (isLastItem && userValue < this.max) {\r\n return getMidpoint(item.mapped, mapToArray[mapToArray.length - 2].mapped);\r\n } else {\r\n return item.mapped;\r\n }\r\n }\r\n\r\n private handleArrowKeyLeft() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(false);\r\n } else {\r\n this._incrementOrDecrementEndValue(false);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private handleArrowKeyRight() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(true);\r\n } else {\r\n this._incrementOrDecrementEndValue(true);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private _incrementOrDecrementStartAndEndValue(increment: boolean) {\r\n let [start, end] = this.value as [number, number];\r\n const difference = getDifference(end, start);\r\n if (increment) {\r\n start += this.step;\r\n end += this.step;\r\n } else {\r\n start -= this.step;\r\n end -= this.step;\r\n }\r\n const startLessThanMin = start < this.min;\r\n const endGreaterThanMax = end > this.max;\r\n if (startLessThanMin || endGreaterThanMax) {\r\n if (startLessThanMin) {\r\n start = this.min;\r\n end = start + difference;\r\n } else if (endGreaterThanMax) {\r\n end = this.max;\r\n start = end - difference;\r\n }\r\n }\r\n if (start < this.min || end > this.max) {\r\n return;\r\n }\r\n this.setValue([start, end], false);\r\n if (this.needParseValues) {\r\n start = this.getClosestValueFromMapSlider(start);\r\n end = this.getClosestValueFromMapSlider(end);\r\n }\r\n this.startValue = start;\r\n this.endValue = end;\r\n }\r\n\r\n private _incrementOrDecrementEndValue(increment: boolean) {\r\n let value = this.value as number;\r\n if (increment) {\r\n value += this.step;\r\n } else {\r\n value -= this.step;\r\n }\r\n let _newEndValue = value;\r\n if (this.needParseValues) {\r\n _newEndValue = this.getClosestValueFromMapSlider(_newEndValue);\r\n }\r\n if (_newEndValue < this.MIN_RANGE_VALUE || _newEndValue > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n this.endValue = _newEndValue;\r\n this.startValue = this.endValue;\r\n this.setValue(_newEndValue);\r\n }\r\n\r\n private get needParseValues() {\r\n return this.max !== this.MAX_RANGE_VALUE || this.min !== this.MIN_RANGE_VALUE;\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a new range based on the old range and the positions clicked and finalized.\r\n *\r\n * @param oldStart - The starting value of the old range.\r\n * @param oldEnd - The ending value of the old range.\r\n * @param clickedPosition - The position where the click occurred.\r\n * @param finalPosition - The position where the range should end.\r\n * @returns An object containing the new start and end values of the range.\r\n */\r\nconst calculateNewRange = (oldStart: number, oldEnd: number, clickedPosition: number, finalPosition: number) => {\r\n const range = oldEnd - oldStart;\r\n const newStart = finalPosition - (clickedPosition - oldStart);\r\n const newEnd = newStart + range;\r\n return { newStart, newEnd };\r\n};\r\n\r\nconst isInRange = (value: number, rangeStart: number, rangeEnd: number): boolean => {\r\n const [min, max] = rangeStart < rangeEnd ? [rangeStart, rangeEnd] : [rangeEnd, rangeStart];\r\n return value >= min && value <= max;\r\n};\r\n\r\nconst getMidpoint = (start: number, end: number) => {\r\n const midpoint = (start + end) / 2;\r\n return parseFloat(midpoint.toFixed(2));\r\n};\r\nconst getDifference = (end: number, start: number) => {\r\n return Math.abs(end - start);\r\n};\r\n","<div\r\n class=\"slider-container\"\r\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\r\n [tabindex]=\"tabindex\"\r\n (click)=\"onTrackClick($event)\"\r\n (focus)=\"onFocusIn()\"\r\n (blur)=\"onBlur()\"\r\n>\r\n <div\r\n #track\r\n class=\"slider-track\"\r\n [ngClass]=\"{\r\n 'slider-track--hidden-thumb': hiddenThumb,\r\n 'slider-track--moving-multiple-thumbs': movingProgressBar,\r\n }\"\r\n >\r\n <div\r\n class=\"slider-progress\"\r\n (mousedown)=\"onProgressMouseDown($event)\"\r\n [style.left.%]=\"progressLeft\"\r\n [style.width]=\"progressWidth\"\r\n ></div>\r\n @if (multiple) {\r\n <div\r\n class=\"slider-thumb\"\r\n [sTooltip]=\"tooltipStartText\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'start')\"\r\n [style.left.%]=\"startValue\"\r\n ></div>\r\n }\r\n <div\r\n [sTooltip]=\"tooltipEndText\"\r\n class=\"slider-thumb\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'end')\"\r\n [style.left.%]=\"endValue\"\r\n ></div>\r\n </div>\r\n <div class=\"footer\">\r\n <span>{{ minValueLabel || min }}</span>\r\n <span>{{ maxValueLabel || max }}</span>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n imports: [SliderComponent],\r\n exports: [SliderComponent],\r\n})\r\nexport class SliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAmBA;;;;;;;;;;;;;;;;AAgBG;MAeU,eAAe,CAAA;IACP,eAAe,GAAG,GAAG,CAAC;IACtB,eAAe,GAAG,CAAC,CAAC;AAE9B,IAAA,KAAK,CAAc;AAE1B;;;;;AAKG;IAEI,QAAQ,GAAG,KAAK,CAAC;AAExB;;;;;AAKG;IAEI,KAAK,GAA8B,CAAC,CAAC;AAE5C;;;AAGG;AAEI,IAAA,WAAW,GAAG,IAAI,YAAY,EAA6B,CAAC;AAEnE;;;;AAIG;IAEI,IAAI,GAAG,CAAC,CAAC;AAEhB;;;;;AAKG;IAEI,WAAW,GAAG,KAAK,CAAC;AAE3B;;;;AAIG;IAEI,QAAQ,GAAG,KAAK,CAAC;AAExB;;;;AAIG;AAEI,IAAA,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;AAElC;;;;AAIG;AAEI,IAAA,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;AAElC;;;AAGG;AAEI,IAAA,aAAa,CAAU;AAE9B;;;AAGG;AAEI,IAAA,aAAa,CAAU;AAE9B;;;;AAIG;IAEI,QAAQ,GAAG,CAAC,CAAC;IAEb,UAAU,GAAG,CAAC,CAAC;IACf,QAAQ,GAAG,CAAC,CAAC;IACb,iBAAiB,GAAG,KAAK,CAAC;IAC1B,YAAY,GAAG,CAAC,CAAC;IACjB,aAAa,GAAG,EAAE,CAAC;AAEnB,IAAA,QAAQ,GAA+C,MAAK,GAAG,CAAC;AAChE,IAAA,SAAS,GAA+C,MAAK,GAAG,CAAC;IAEhE,aAAa,GAA2B,IAAI,CAAC;IAC7C,6BAA6B,GAAG,CAAC,CAAC,CAAC;IACnC,gCAAgC,GAAG,CAAC,CAAC,CAAC;IACtC,0CAA0C,GAAG,CAAC,CAAC,CAAC;IAChD,gCAAgC,GAAG,CAAC,CAAC,CAAC;AAC9C;;;;;;;;;;AAUG;AACK,IAAA,uBAAuB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzD,eAAe,GAAG,KAAK,CAAC;IACxB,WAAW,GAAG,KAAK,CAAC;IAErB,QAAQ,GAAA;QACX,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AACtE,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AACtE,QAAA,MAAM,UAAU,GAAG,eAAe,IAAI,eAAe,CAAC;QACtD,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;SACN;KACJ;IACM,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;AAGM,IAAA,SAAS,CAAC,MAAqB,EAAA;QAClC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpC,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC;AAClD,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,KAAK,YAAY,CAAC;YACpD,IAAI,cAAc,EAAE;gBAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC7B;iBAAM,IAAI,eAAe,EAAE;gBACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;SACJ;KACJ;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;KACzF;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;KACzF;AAEM,IAAA,UAAU,CAAC,GAA8B,EAAA;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAEM,IAAA,gBAAgB,CAAC,EAA8C,EAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAEM,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAEM,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC9B;IAEM,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AAEM,IAAA,YAAY,CAAC,GAAe,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE;YACjE,OAAO;SACV;QACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;AAChF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;QAC7F,MAAM,YAAY,GAAG,MAAK;YACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtE,YAAA,MAAM,SAAS,GACX,CAAC,IAAI,CAAC,eAAe;kBACf,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,qBAAqB,CAAC;AACzD,kBAAE,oBAAoB,KAAK,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,eAAe,IAAI,kBAAkB,KAAK,qBAAqB,EAAE;AACtE,gBAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;aAC7B;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC9B,gBAAA,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC;aACxC;AACL,SAAC,CAAC;QAEF,MAAM,cAAc,GAAG,MAAK;YACxB,MAAM,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,eAAe,IAAI,oBAAoB,KAAK,qBAAqB,EAAE;AACxE,gBAAA,MAAM,WAAW,GACb,CAAC,IAAI,CAAC,eAAe;sBACf,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,qBAAqB,CAAC;AACzD,sBAAE,oBAAoB,KAAK,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;aACjC;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC9B,gBAAA,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;aAC1C;AACL,SAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAyB,CAAC;YACpD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;YACjG,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAG,MAAK;AACtB,gBAAA,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAQ,CAAC,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpD,aAAC,CAAC;YAEF,MAAM,UAAU,GAAG,MAAK;AACpB,gBAAA,YAAY,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;AACtD,aAAC,CAAC;YACF,MAAM,2BAA2B,GAAG,SAAS,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,YAAA,IAAI,gBAAgB,GAAG,KAAK,EAAE;AAC1B,gBAAA,YAAY,EAAE,CAAC;aAClB;AAAM,iBAAA,IAAI,gBAAgB,GAAG,GAAG,EAAE;AAC/B,gBAAA,UAAU,EAAE,CAAC;aAChB;iBAAM,IAAI,2BAA2B,EAAE;gBACpC,MAAM,MAAM,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC;AACjC,gBAAA,MAAM,gCAAgC,GAAG,gBAAgB,KAAK,MAAM,CAAC;gBACrE,IAAI,gCAAgC,EAAE;AAClC,oBAAA,YAAY,EAAE,CAAC;iBAClB;qBAAM;AACH,oBAAA,MAAM,QAAQ,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAC3C,oBAAA,MAAM,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAAC;oBACzC,IAAI,QAAQ,EAAE;AACV,wBAAA,YAAY,EAAE,CAAC;qBAClB;yBAAM,IAAI,MAAM,EAAE;AACf,wBAAA,UAAU,EAAE,CAAC;qBAChB;iBACJ;aACJ;SACJ;aAAM;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AACpC,YAAA,YAAY,EAAE,CAAC;SAClB;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAEM,IAAA,mBAAmB,CAAC,GAAe,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,OAAO;SACV;QACD,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,0CAA0C,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AAClF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAyB,CAAC;AACpD,YAAA,IAAI,CAAC,gCAAgC,GAAG,GAAG,GAAG,KAAK,CAAC;SACvD;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;KACvE;IAEM,WAAW,CAAC,CAAa,EAAE,KAAsB,EAAA;QACpD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;AAE1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACxD;IAEO,cAAc,GAAA;AAClB,QAAA,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAE,QAAgB,KAAI;YAClE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AAChE,SAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YACjD,OAAO;SACV;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,YAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAClE;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACjC;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAe,CAAC;AACvC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAe,CAAC;SACxC;QACD,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAyB,CAAC;YAC9D,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACzD,YAAA,MAAM,yBAAyB,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;AACvD,YAAA,MAAM,uBAAuB,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;AACvD,YAAA,MAAM,gBAAgB,GAAG,yBAAyB,IAAI,uBAAuB,CAAC;YAC9E,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,gBAAA,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;aACxC;iBAAM,IAAI,uBAAuB,EAAE;AAChC,gBAAA,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,gBAAA,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;aACxC;YACD,IAAI,gBAAgB,EAAE;AAClB,gBAAA,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;aACnD;SACJ;aAAM;AACH,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,KAAe,CAAC;AAClC,YAAA,MAAM,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/C,YAAA,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3C,YAAA,MAAM,eAAe,GAAG,oBAAoB,IAAI,gBAAgB,CAAC;YACjE,IAAI,oBAAoB,EAAE;AACtB,gBAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;aACrB;iBAAM,IAAI,gBAAgB,EAAE;AACzB,gBAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;aACrB;YACD,IAAI,eAAe,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAChC;SACJ;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAEO,IAAA,WAAW,GAAG,CAAC,KAAiB,KAAI;AACxC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAE1D,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACnD,QAAA,IACI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ;AAC/E,aAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,EAClF;YACE,OAAO;SACV;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;AAErE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AAChC,gBAAA,IAAI,CAAC,UAAU;oBACX,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC;aACzG;AAAM,iBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AACrC,gBAAA,IAAI,CAAC,QAAQ;oBACT,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC;aACzG;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEhD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAyB,CAAC;YAEpD,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AACjD,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;aACnC;iBAAM,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AACtD,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;aACnC;SACJ;aAAM;AACH,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAe,CAAC;AAC1C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,GAAG,mBAAmB,GAAG,WAAW,CAAC;AACxE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,mBAAmB,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACxF,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;YAChC,MAAM,qBAAqB,GAAG,OAAO;AACjC,kBAAE,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM;kBAC1E,KAAK,CAAC;AACZ,YAAA,IAAI,aAAa,IAAI,CAAC,qBAAqB,EAAE;gBACzC,OAAO;aACV;AACD,YAAA,IAAI,CAAC,QAAQ;gBACT,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,WAAW,KAAK,CAAC,CAAC;AACtG,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,KAAC,CAAC;IAEM,SAAS,GAAG,MAAK;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC,EAAE,GAAG,CAAC,CAAC;AACZ,KAAC,CAAC;AAEM,IAAA,qBAAqB,GAAG,CAAC,KAAiB,KAAI;AAClD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACnD,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,6BAA6B,CAAC;AACpE,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,gCAAgC,CAAC;AACpE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,0CAA0C,CAAC;AAC9D,QAAA,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,CACxC,qBAAqB,EACrB,qBAAqB,GAAG,KAAK,EAC7B,wBAAwB,EACxB,SAAS,CACZ,CAAC;AACF,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE;YAClE,OAAO;SACV;AACD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,MAAM,8BAA8B,GAAG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;YAC1F,MAAM,iCAAiC,GAAG,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC;YAChG,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/D,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gCAAgC,CAAC;AACzD,YAAA,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,iBAAiB,CACxC,8BAA8B,EAC9B,8BAA8B,GAAG,UAAU,EAC3C,iCAAiC,EACjC,eAAe,CAClB,CAAC;AACF,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;gBAC1C,OAAO;aACV;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACjE;aAAM;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;SAC1B;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,KAAC,CAAC;IAEM,wBAAwB,GAAG,MAAK;AACpC,QAAA,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,gCAAgC,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,0CAA0C,GAAG,CAAC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,gCAAgC,GAAG,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvE,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAClC,EAAE,GAAG,CAAC,CAAC;AACZ,KAAC,CAAC;IAEM,WAAW,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAA,SAAA,CAAW,CAAC;SAC3E;aAAM;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,QAAQ,WAAW,CAAC;SACzD;KACJ;AAED;;;;AAIG;AACK,IAAA,oBAAoB,CAAC,UAAqC,EAAA;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QACnE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3G,QAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/D,QAAA,OAAO,OAAO,CAAC;KAClB;AAEO,IAAA,QAAQ,CAAC,KAAgC,EAAE,KAAK,GAAG,IAAI,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,EAAE;AAC/B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAqB,CAAC;aAChF;iBAAM;AACH,gBAAA,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;aAC9C;SACJ;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAEO,qBAAqB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,KAAK,GAAG,GAAG,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC/D;AACD,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;AACrC,QAAA,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;QAC1B,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,QAAA,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;AACtD,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACnC,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACtC,YAAA,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC;YAC9D,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACrD,SAAC,CAAC,CAAC;AACH,QAAA,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AAC7D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3E,QAAA,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,CAAC;AACvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAA,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AAChC,YAAA,YAAY,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;SACxE;QACD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAC5B,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,SAAC,CAAC,CAAC;KACN;AAED;;;;;;;;AAQG;AACK,IAAA,sBAAsB,CAAC,WAAmB,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1G,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC;AACnE,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,CAC1F,CAAC;AACF,QAAA,OAAO,UAAU,GAAG,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACxD;AAED;;;;AAIG;AACK,IAAA,4BAA4B,CAAC,SAAiB,EAAA;AAClD,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1G,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;YACvB,OAAO,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;SACnD;AAAM,aAAA,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;AAC9B,YAAA,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SAC/B;AACD,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;AAChE,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI,CACpF,CAAC;AACF,QAAA,MAAM,IAAI,GAAG,UAAU,IAAI,YAAY,CAAC;QACxC,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;QAC9D,IAAI,WAAW,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AACrC,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACzD;aAAM,IAAI,UAAU,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAC3C,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC7E;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;SACrD;aAAM;AACH,YAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,mBAAmB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC;SACpD;aAAM;AACH,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;AAEO,IAAA,qCAAqC,CAAC,SAAkB,EAAA;QAC5D,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAyB,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,SAAS,EAAE;AACX,YAAA,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;AACnB,YAAA,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;SACpB;aAAM;AACH,YAAA,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;AACnB,YAAA,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;SACpB;AACD,QAAA,MAAM,gBAAgB,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1C,QAAA,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,gBAAgB,IAAI,iBAAiB,EAAE;YACvC,IAAI,gBAAgB,EAAE;AAClB,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACjB,gBAAA,GAAG,GAAG,KAAK,GAAG,UAAU,CAAC;aAC5B;iBAAM,IAAI,iBAAiB,EAAE;AAC1B,gBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACf,gBAAA,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC;aAC5B;SACJ;AACD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACpC,OAAO;SACV;QACD,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;SAChD;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;AAEO,IAAA,6BAA6B,CAAC,SAAkB,EAAA;AACpD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;QACjC,IAAI,SAAS,EAAE;AACX,YAAA,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;SACtB;aAAM;AACH,YAAA,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;SACtB;QACD,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;SAClE;AACD,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;YAC5E,OAAO;SACV;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KAC/B;AAED,IAAA,IAAY,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,eAAe,CAAC;KACjF;wGAnoBQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAVb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CL,y7CA4CA,EAAA,MAAA,EAAA,CAAA,k8CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAd3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGT,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,y7CAAA,EAAA,MAAA,EAAA,CAAA,k8CAAA,CAAA,EAAA,CAAA;8BAM7B,KAAK,EAAA,CAAA;sBADX,SAAS;uBAAC,OAAO,CAAA;gBAUX,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAUC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAQC,WAAW,EAAA,CAAA;sBADjB,MAAM;gBASA,IAAI,EAAA,CAAA;sBADV,KAAK;gBAUC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBASC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBASC,GAAG,EAAA,CAAA;sBADT,KAAK;gBASC,GAAG,EAAA,CAAA;sBADT,KAAK;gBAQC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAQC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBASC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAsDC,SAAS,EAAA,CAAA;sBADf,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;AAsfhD;;;;;;;;AAQG;AACH,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,eAAuB,EAAE,aAAqB,KAAI;AAC3G,IAAA,MAAM,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChC,MAAM,QAAQ,GAAG,aAAa,IAAI,eAAe,GAAG,QAAQ,CAAC,CAAC;AAC9D,IAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAChC,IAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,QAAgB,KAAa;IAC/E,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3F,IAAA,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,GAAW,KAAI;IAC/C,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC;IACnC,OAAO,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,KAAa,KAAI;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;AACjC,CAAC;;ME3sBY,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAZ,YAAY,EAAA,OAAA,EAAA,CAHX,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA,CAAA;yGAEhB,YAAY,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC7B,iBAAA,CAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-slider.mjs","sources":["../../projects/angular-components/slider/src/lib/slider/slider.component.ts","../../projects/angular-components/slider/src/lib/slider/slider.component.html","../../projects/angular-components/slider/src/lib/slider/slider.module.ts","../../projects/angular-components/slider/src/seniorsistemas-angular-components-slider.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de controle deslizante (slider) para seleção de valores numéricos\r\n * dentro de um intervalo definido. Suporta modo simples (um valor) e modo de intervalo\r\n * (dois valores: início e fim). Implementa {@link ControlValueAccessor} para integração\r\n * com Reactive Forms e Template-driven Forms do Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <!-- Slider simples -->\r\n * <s-slider formControlName=\"volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" />\r\n *\r\n * <!-- Slider de intervalo -->\r\n * <s-slider formControlName=\"faixa\" [multiple]=\"true\" [min]=\"0\" [max]=\"1000\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [NgClass, TooltipDirective],\r\n})\r\nexport class SliderComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnChanges {\r\n private readonly MAX_RANGE_VALUE = 100;\r\n private readonly MIN_RANGE_VALUE = 0;\r\n @ViewChild('track')\r\n public track!: ElementRef;\r\n\r\n /**\r\n * @description Habilita o modo de intervalo, permitindo selecionar um valor mínimo e máximo.\r\n * Quando `true`, o valor do componente é um array `[inicio, fim]`.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public multiple = false;\r\n\r\n /**\r\n * @description Valor atual do slider. No modo simples é um número; no modo de\r\n * intervalo (`multiple: true`) é um array `[inicio, fim]`.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public value: number | [number, number] = 0;\r\n\r\n /**\r\n * @description Emitido sempre que o valor do slider é alterado pelo usuário.\r\n * Emite o novo valor (número ou array de dois números no modo de intervalo).\r\n */\r\n @Output()\r\n public valueChange = new EventEmitter<number | [number, number]>();\r\n\r\n /**\r\n * @description Incremento aplicado a cada movimento do thumb do slider.\r\n *\r\n * @default 1\r\n */\r\n @Input()\r\n public step = 1;\r\n\r\n /**\r\n * @description Oculta visualmente o thumb (botão arrastável) do slider.\r\n * Útil para visualizações onde apenas a faixa de progresso deve ser exibida.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public hiddenThumb = false;\r\n\r\n /**\r\n * @description Desabilita a interação do usuário com o slider.\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public disabled = false;\r\n\r\n /**\r\n * @description Valor mínimo permitido no slider.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public min = this.MIN_RANGE_VALUE;\r\n\r\n /**\r\n * @description Valor máximo permitido no slider.\r\n *\r\n * @default 100\r\n */\r\n @Input()\r\n public max = this.MAX_RANGE_VALUE;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor mínimo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public minValueLabel?: string;\r\n\r\n /**\r\n * @description Label exibido abaixo ou ao lado do valor máximo do slider.\r\n * Útil para indicar semanticamente os extremos do intervalo.\r\n */\r\n @Input()\r\n public maxValueLabel?: string;\r\n\r\n /**\r\n * @description Índice de tabulação do elemento, controlando a ordem de foco via teclado.\r\n *\r\n * @default 0\r\n */\r\n @Input()\r\n public tabindex = 0;\r\n\r\n public startValue = 0;\r\n public endValue = 0;\r\n public movingProgressBar = false;\r\n public progressLeft = 0;\r\n public progressWidth = '';\r\n\r\n public onChange: (value: number | [number, number]) => void = () => {};\r\n public onTouched: (value: number | [number, number]) => void = () => {};\r\n\r\n private draggingThumb: 'start' | 'end' | null = null;\r\n private progressBarEventPositionStart = -1;\r\n private startValueBeforeProgressBarEvent = -1;\r\n private rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n private totalRangeBeforeProgressBarEvent = -1;\r\n /**\r\n * Map of valid values for values in range.\r\n * @example\r\n * with min = -10 and max = 10 will have this map.\r\n * {\r\n * -10: { 0 },\r\n * -9: { 10 },\r\n * ...\r\n * 10: { 10 }\r\n * }\r\n */\r\n private mapRangeValuesForSlider: Map<number, number> = new Map();\r\n private activeMouseDown = false;\r\n private focusActive = false;\r\n\r\n public ngOnInit(): void {\r\n this.setUserRangeMapValues();\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n const hasChangesOnMin = changes['min'] && !changes['min'].firstChange;\r\n const hasChangesOnMax = changes['max'] && !changes['max'].firstChange;\r\n const hasChanges = hasChangesOnMin || hasChangesOnMax;\r\n if (hasChanges) {\r\n this.setUserRangeMapValues();\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n }\r\n public ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.setRangeValues();\r\n });\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydown($event: KeyboardEvent) {\r\n if (this.focusActive && !this.disabled) {\r\n const isArrowKeyLeft = $event.key === 'ArrowLeft';\r\n const isArrowKeyRight = $event.key === 'ArrowRight';\r\n if (isArrowKeyLeft) {\r\n this.handleArrowKeyLeft();\r\n } else if (isArrowKeyRight) {\r\n this.handleArrowKeyRight();\r\n }\r\n }\r\n }\r\n\r\n public get tooltipStartText() {\r\n return Array.isArray(this.value) ? this.value[0]?.toString() : this.value?.toString();\r\n }\r\n\r\n public get tooltipEndText() {\r\n return Array.isArray(this.value) ? this.value[1]?.toString() : this.value?.toString();\r\n }\r\n\r\n public writeValue(obj: number | [number, number]): void {\r\n this.value = obj;\r\n this.setRangeValues();\r\n }\r\n\r\n public registerOnChange(fn: (value: number | [number, number]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n public onFocusIn() {\r\n this.focusActive = true;\r\n }\r\n\r\n public onBlur() {\r\n this.focusActive = false;\r\n }\r\n\r\n public onTrackClick(evt: MouseEvent) {\r\n if (this.disabled || this.movingProgressBar || this.activeMouseDown) {\r\n return;\r\n }\r\n const trackClickPercentage = this.getPercentageByEvent(evt);\r\n const trackClickToUserRange = this.getValueFromMapByValue(trackClickPercentage);\r\n const _trackClickValid = this.needParseValues ? trackClickToUserRange : trackClickPercentage;\r\n const _setEndValue = () => {\r\n const _endValueUserValue = this.getValueFromMapByValue(this.endValue);\r\n const _endValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n if (this.needParseValues && _endValueUserValue !== trackClickToUserRange) {\r\n this.endValue = _endValue;\r\n } else if (!this.needParseValues) {\r\n this.endValue = trackClickPercentage;\r\n }\r\n };\r\n\r\n const _setStartValue = () => {\r\n const _startValueUserValue = this.getValueFromMapByValue(this.startValue);\r\n if (this.needParseValues && _startValueUserValue !== trackClickToUserRange) {\r\n const _startValue =\r\n (this.needParseValues\r\n ? this.mapRangeValuesForSlider.get(trackClickToUserRange)\r\n : trackClickPercentage) ?? 0;\r\n this.startValue = _startValue;\r\n } else if (!this.needParseValues) {\r\n this.startValue = trackClickPercentage;\r\n }\r\n };\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n const validStart = (this.needParseValues ? this.mapRangeValuesForSlider.get(start) : start) ?? 0;\r\n const validEnd = (this.needParseValues ? this.mapRangeValuesForSlider.get(end) : end) ?? 0;\r\n const _updateStart = () => {\r\n _setStartValue();\r\n this.setValue([trackClickPercentage, validEnd]);\r\n };\r\n\r\n const _updateEnd = () => {\r\n _setEndValue();\r\n this.setValue([validStart, trackClickPercentage]);\r\n };\r\n const clickPercentageBetweenRange = isInRange(_trackClickValid, start, end);\r\n if (_trackClickValid < start) {\r\n _updateStart();\r\n } else if (_trackClickValid > end) {\r\n _updateEnd();\r\n } else if (clickPercentageBetweenRange) {\r\n const middle = (start + end) / 2;\r\n const trackClickPercentageIsExactiddle = _trackClickValid === middle;\r\n if (trackClickPercentageIsExactiddle) {\r\n _updateStart();\r\n } else {\r\n const setStart = _trackClickValid < middle;\r\n const setEnd = _trackClickValid > middle;\r\n if (setStart) {\r\n _updateStart();\r\n } else if (setEnd) {\r\n _updateEnd();\r\n }\r\n }\r\n }\r\n } else {\r\n this.setValue(trackClickPercentage);\r\n _setEndValue();\r\n }\r\n\r\n this.setProgress();\r\n }\r\n\r\n public onProgressMouseDown(evt: MouseEvent) {\r\n if (!this.multiple || this.disabled) {\r\n return;\r\n }\r\n this.progressBarEventPositionStart = this.getPercentageByEvent(evt);\r\n this.startValueBeforeProgressBarEvent = this.startValue;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = this.endValue - this.startValue;\r\n if (this.multiple) {\r\n const [start, end] = this.value as [number, number];\r\n this.totalRangeBeforeProgressBarEvent = end - start;\r\n }\r\n document.addEventListener('mousemove', this.handleProgressBarMove);\r\n document.addEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n }\r\n\r\n public onMouseDown(_: MouseEvent, thumb: 'start' | 'end'): void {\r\n if (this.disabled) return;\r\n\r\n this.draggingThumb = thumb;\r\n this.activeMouseDown = true;\r\n document.addEventListener('mousemove', this.onThumbMove);\r\n document.addEventListener('mouseup', this.onMouseUp);\r\n }\r\n\r\n private setRangeValues(): void {\r\n const _setStartAndEndValue = (startValue: number, endValue: number) => {\r\n this.startValue = this.getClosestValueFromMapSlider(startValue);\r\n this.endValue = this.getClosestValueFromMapSlider(endValue);\r\n };\r\n if (this.value === null || this.value === undefined) {\r\n return;\r\n }\r\n if (Array.isArray(this.value) && !this.multiple) {\r\n throw new Error('You must use \"multiple\" with value as array');\r\n }\r\n if (this.multiple && Array.isArray(this.value)) {\r\n this.startValue = this.value[0];\r\n this.endValue = this.value[1];\r\n } else if (!this.multiple) {\r\n this.startValue = this.value as number;\r\n this.endValue = this.value as number;\r\n }\r\n _setStartAndEndValue(this.startValue, this.endValue);\r\n if (this.multiple) {\r\n let [_startValue, _endValue] = this.value as [number, number];\r\n const difference = getDifference(_endValue, _startValue);\r\n const endValueIsGreatherThanMax = _endValue > this.max;\r\n const startValueIsLessThanMin = _startValue < this.min;\r\n const needUpdateValues = endValueIsGreatherThanMax || startValueIsLessThanMin;\r\n if (endValueIsGreatherThanMax) {\r\n _endValue = this.max;\r\n _startValue = _endValue - difference;\r\n } else if (startValueIsLessThanMin) {\r\n _startValue = this.min;\r\n _endValue = _startValue + difference;\r\n }\r\n if (needUpdateValues) {\r\n _setStartAndEndValue(_startValue, _endValue);\r\n this.setValue([this.startValue, this.endValue]);\r\n }\r\n } else {\r\n let _value = this.value as number;\r\n const valueGreatherThanMax = _value > this.max;\r\n const valueLessThanMin = _value < this.min;\r\n const needUpdateValue = valueGreatherThanMax || valueLessThanMin;\r\n if (valueGreatherThanMax) {\r\n _value = this.max;\r\n } else if (valueLessThanMin) {\r\n _value = this.min;\r\n }\r\n if (needUpdateValue) {\r\n this.setValue(_value, false);\r\n }\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private onThumbMove = (event: MouseEvent) => {\r\n if (this.movingProgressBar || !this.draggingThumb) return;\r\n\r\n let newPosition = this.getPercentageByEvent(event);\r\n if (\r\n (this.multiple && this.draggingThumb === 'start' && newPosition > this.endValue) ||\r\n (this.multiple && this.draggingThumb === 'end' && newPosition < this.startValue)\r\n ) {\r\n return;\r\n }\r\n\r\n const positionInUserRange = this.getValueFromMapByValue(newPosition);\r\n\r\n if (this.multiple) {\r\n if (this.draggingThumb === 'start') {\r\n this.startValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n } else if (this.draggingThumb === 'end') {\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n }\r\n\r\n this.setValue([this.startValue, this.endValue]);\r\n\r\n const [start, end] = this.value as [number, number];\r\n\r\n if (start === end && this.draggingThumb === 'start') {\r\n this.startValue = this.endValue;\r\n } else if (start === end && this.draggingThumb === 'end') {\r\n this.endValue = this.startValue;\r\n }\r\n } else {\r\n const currentValue = this.value as number;\r\n const _value = this.needParseValues ? positionInUserRange : newPosition;\r\n const isAtSameValue = this.needParseValues ? positionInUserRange === this.value : false;\r\n const hasStep = this.step !== 0;\r\n const newValueIsValidByStep = hasStep\r\n ? currentValue + this.step === _value || currentValue - this.step === _value\r\n : false;\r\n if (isAtSameValue && !newValueIsValidByStep) {\r\n return;\r\n }\r\n this.endValue =\r\n (this.needParseValues ? this.mapRangeValuesForSlider.get(positionInUserRange) : newPosition) ?? 0;\r\n this.startValue = this.endValue;\r\n this.setValue(this.endValue);\r\n }\r\n this.setProgress();\r\n };\r\n\r\n private onMouseUp = () => {\r\n this.draggingThumb = null;\r\n document.removeEventListener('mousemove', this.onThumbMove);\r\n document.removeEventListener('mouseup', this.onMouseUp);\r\n setTimeout(() => {\r\n this.activeMouseDown = false;\r\n }, 150);\r\n };\r\n\r\n private handleProgressBarMove = (event: MouseEvent) => {\r\n this.movingProgressBar = true;\r\n const newCenter = this.getPercentageByEvent(event);\r\n const startPositionBeforeEvent = this.progressBarEventPositionStart;\r\n const startValueBeforeEvent = this.startValueBeforeProgressBarEvent;\r\n const range = this.rangeBetweenElementsBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEvent,\r\n startValueBeforeEvent + range,\r\n startPositionBeforeEvent,\r\n newCenter,\r\n );\r\n if (newStart < this.MIN_RANGE_VALUE || newEnd > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n if (this.needParseValues) {\r\n const startValueBeforeEventUserRange = this.getValueFromMapByValue(startValueBeforeEvent);\r\n const startPositionBeforeEventUserRange = this.getValueFromMapByValue(startPositionBeforeEvent);\r\n const centerUserRange = this.getValueFromMapByValue(newCenter);\r\n const valueRange = this.totalRangeBeforeProgressBarEvent;\r\n let { newStart, newEnd } = calculateNewRange(\r\n startValueBeforeEventUserRange,\r\n startValueBeforeEventUserRange + valueRange,\r\n startPositionBeforeEventUserRange,\r\n centerUserRange,\r\n );\r\n if (newStart < this.min || newEnd > this.max) {\r\n return;\r\n }\r\n this.startValue = this.mapRangeValuesForSlider.get(newStart) ?? 0;\r\n this.endValue = this.mapRangeValuesForSlider.get(newEnd) ?? 0;\r\n } else {\r\n this.startValue = newStart;\r\n this.endValue = newEnd;\r\n }\r\n this.setValue([this.startValue, this.endValue]);\r\n this.setProgress();\r\n };\r\n\r\n private handleProgressBarMoveEnd = () => {\r\n this.progressBarEventPositionStart = -1;\r\n this.startValueBeforeProgressBarEvent = -1;\r\n this.rangeBetweenElementsBeforeProgressBarEvent = -1;\r\n this.totalRangeBeforeProgressBarEvent = -1;\r\n document.removeEventListener('mousemove', this.handleProgressBarMove);\r\n document.removeEventListener('mouseup', this.handleProgressBarMoveEnd);\r\n setTimeout(() => {\r\n this.movingProgressBar = false;\r\n }, 150);\r\n };\r\n\r\n private setProgress(): void {\r\n if (this.multiple) {\r\n this.progressLeft = this.startValue;\r\n this.progressWidth = `calc(${this.endValue - this.startValue}% + 10px)`;\r\n } else {\r\n this.progressLeft = 0;\r\n this.progressWidth = `calc(${this.endValue}% + 10px)`;\r\n }\r\n }\r\n\r\n /**\r\n * Get the percentage of a mouse event from the track's left edge\r\n * @param mouseEvent mouse event\r\n * @returns percentage from the left edge\r\n */\r\n private getPercentageByEvent(mouseEvent: MouseEvent | PointerEvent): number {\r\n const trackRect = this.track.nativeElement.getBoundingClientRect();\r\n let newLeft = Math.round(((mouseEvent.clientX - trackRect.left) / trackRect.width) * this.MAX_RANGE_VALUE);\r\n newLeft = Math.max(0, Math.min(newLeft, this.MAX_RANGE_VALUE));\r\n return newLeft;\r\n }\r\n\r\n private setValue(value: number | [number, number], parse = true) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.needParseValues && parse) {\r\n if (Array.isArray(value)) {\r\n value = value.map((x) => this.getValueFromMapByValue(x)) as [number, number];\r\n } else {\r\n value = this.getValueFromMapByValue(value);\r\n }\r\n }\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.writeValue(this.value);\r\n this.onChange(this.value);\r\n this.onTouched(this.value);\r\n }\r\n\r\n private setUserRangeMapValues() {\r\n const start = this.min;\r\n const end = this.max;\r\n if (start > end) {\r\n throw new Error('Max value must be greater than min value');\r\n }\r\n this.mapRangeValuesForSlider.clear();\r\n const range = end - start;\r\n const decimalPlaces = 2;\r\n const stepCount = Math.floor(range / this.step);\r\n const values: number[] = [];\r\n for (let value = start; value <= end; value += this.step) {\r\n values.push(value);\r\n }\r\n if (values[values.length - 1] !== end) {\r\n values.push(end);\r\n }\r\n const mappedValues = values.map((value) => {\r\n let mapped = ((value - start) / range) * this.MAX_RANGE_VALUE;\r\n return parseFloat(mapped.toFixed(decimalPlaces));\r\n });\r\n mappedValues[0] = 0;\r\n mappedValues[mappedValues.length - 1] = this.MAX_RANGE_VALUE;\r\n const error = this.MAX_RANGE_VALUE - mappedValues[mappedValues.length - 1];\r\n const errorPerStep = error / stepCount;\r\n for (let i = 1; i < mappedValues.length - 1; i++) {\r\n mappedValues[i] += errorPerStep;\r\n mappedValues[i] = parseFloat(mappedValues[i].toFixed(decimalPlaces));\r\n }\r\n values.forEach((value, index) => {\r\n this.mapRangeValuesForSlider.set(value, mappedValues[index]);\r\n });\r\n }\r\n\r\n /**\r\n * Returns the user value from the given slider value by using the map of range values.\r\n * @example\r\n * If the map is 0: { 0 }, 1: { 10 }, 2: { 30 }, 3: { 40 }, 4: { 50 }\r\n * and the sliderValue is 37, the function returns 3\r\n * or the slider value is 40, the function returns 4\r\n * @param sliderValue the value of the slider (values only between range MIN and MAX)\r\n * @returns the user value from the given slider value\r\n */\r\n private getValueFromMapByValue(sliderValue: number) {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n const exactValue = mapToArray.find((x) => x.mapped == sliderValue);\r\n const closest = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.mapped - sliderValue) < Math.abs(prev.mapped - sliderValue) ? curr : prev,\r\n );\r\n return exactValue ? exactValue.value : closest.value;\r\n }\r\n\r\n /**\r\n * Retrieves the key from the map that is closest to the given slider value.\r\n * @param userValue - The value to find the closest key for. (values only between 0 - 100)\r\n * @returns The key that corresponds to the closest mapped value.\r\n */\r\n private getClosestValueFromMapSlider(userValue: number): number {\r\n const mapToArray = Array.from(this.mapRangeValuesForSlider).map(([value, mapped]) => ({ value, mapped }));\r\n if (userValue >= this.max) {\r\n return mapToArray[mapToArray.length - 1].mapped;\r\n } else if (userValue <= this.min) {\r\n return mapToArray[0].mapped;\r\n }\r\n const exactValue = mapToArray.find((x) => x.value == userValue);\r\n const closestValue = mapToArray.reduce((prev, curr) =>\r\n Math.abs(curr.value - userValue) < Math.abs(prev.value - userValue) ? curr : prev,\r\n );\r\n const item = exactValue || closestValue;\r\n const isFirstItem = mapToArray[0] === item;\r\n const isLastItem = mapToArray[mapToArray.length - 1] === item;\r\n if (isFirstItem && userValue > this.min) {\r\n return getMidpoint(item.mapped, mapToArray[1].mapped);\r\n } else if (isLastItem && userValue < this.max) {\r\n return getMidpoint(item.mapped, mapToArray[mapToArray.length - 2].mapped);\r\n } else {\r\n return item.mapped;\r\n }\r\n }\r\n\r\n private handleArrowKeyLeft() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(false);\r\n } else {\r\n this._incrementOrDecrementEndValue(false);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private handleArrowKeyRight() {\r\n if (this.multiple) {\r\n this._incrementOrDecrementStartAndEndValue(true);\r\n } else {\r\n this._incrementOrDecrementEndValue(true);\r\n }\r\n this.setProgress();\r\n }\r\n\r\n private _incrementOrDecrementStartAndEndValue(increment: boolean) {\r\n let [start, end] = this.value as [number, number];\r\n const difference = getDifference(end, start);\r\n if (increment) {\r\n start += this.step;\r\n end += this.step;\r\n } else {\r\n start -= this.step;\r\n end -= this.step;\r\n }\r\n const startLessThanMin = start < this.min;\r\n const endGreaterThanMax = end > this.max;\r\n if (startLessThanMin || endGreaterThanMax) {\r\n if (startLessThanMin) {\r\n start = this.min;\r\n end = start + difference;\r\n } else if (endGreaterThanMax) {\r\n end = this.max;\r\n start = end - difference;\r\n }\r\n }\r\n if (start < this.min || end > this.max) {\r\n return;\r\n }\r\n this.setValue([start, end], false);\r\n if (this.needParseValues) {\r\n start = this.getClosestValueFromMapSlider(start);\r\n end = this.getClosestValueFromMapSlider(end);\r\n }\r\n this.startValue = start;\r\n this.endValue = end;\r\n }\r\n\r\n private _incrementOrDecrementEndValue(increment: boolean) {\r\n let value = this.value as number;\r\n if (increment) {\r\n value += this.step;\r\n } else {\r\n value -= this.step;\r\n }\r\n let _newEndValue = value;\r\n if (this.needParseValues) {\r\n _newEndValue = this.getClosestValueFromMapSlider(_newEndValue);\r\n }\r\n if (_newEndValue < this.MIN_RANGE_VALUE || _newEndValue > this.MAX_RANGE_VALUE) {\r\n return;\r\n }\r\n this.endValue = _newEndValue;\r\n this.startValue = this.endValue;\r\n this.setValue(_newEndValue);\r\n }\r\n\r\n private get needParseValues() {\r\n return this.max !== this.MAX_RANGE_VALUE || this.min !== this.MIN_RANGE_VALUE;\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a new range based on the old range and the positions clicked and finalized.\r\n *\r\n * @param oldStart - The starting value of the old range.\r\n * @param oldEnd - The ending value of the old range.\r\n * @param clickedPosition - The position where the click occurred.\r\n * @param finalPosition - The position where the range should end.\r\n * @returns An object containing the new start and end values of the range.\r\n */\r\nconst calculateNewRange = (oldStart: number, oldEnd: number, clickedPosition: number, finalPosition: number) => {\r\n const range = oldEnd - oldStart;\r\n const newStart = finalPosition - (clickedPosition - oldStart);\r\n const newEnd = newStart + range;\r\n return { newStart, newEnd };\r\n};\r\n\r\nconst isInRange = (value: number, rangeStart: number, rangeEnd: number): boolean => {\r\n const [min, max] = rangeStart < rangeEnd ? [rangeStart, rangeEnd] : [rangeEnd, rangeStart];\r\n return value >= min && value <= max;\r\n};\r\n\r\nconst getMidpoint = (start: number, end: number) => {\r\n const midpoint = (start + end) / 2;\r\n return parseFloat(midpoint.toFixed(2));\r\n};\r\nconst getDifference = (end: number, start: number) => {\r\n return Math.abs(end - start);\r\n};\r\n","<div\r\n class=\"slider-container\"\r\n [ngClass]=\"{ 'slider-container--disabled': disabled }\"\r\n [tabindex]=\"disabled ? '-1' : tabindex\"\r\n (click)=\"onTrackClick($event)\"\r\n (focus)=\"onFocusIn()\"\r\n (blur)=\"onBlur()\"\r\n>\r\n <div\r\n #track\r\n class=\"slider-track\"\r\n [ngClass]=\"{\r\n 'slider-track--hidden-thumb': hiddenThumb,\r\n 'slider-track--moving-multiple-thumbs': movingProgressBar,\r\n }\"\r\n >\r\n <div\r\n class=\"slider-progress\"\r\n (mousedown)=\"onProgressMouseDown($event)\"\r\n [style.left.%]=\"progressLeft\"\r\n [style.width]=\"progressWidth\"\r\n ></div>\r\n @if (multiple) {\r\n <div\r\n class=\"slider-thumb\"\r\n [sTooltip]=\"tooltipStartText\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'start')\"\r\n [style.left.%]=\"startValue\"\r\n ></div>\r\n }\r\n <div\r\n [sTooltip]=\"tooltipEndText\"\r\n class=\"slider-thumb\"\r\n [showDelay]=\"0\"\r\n (mousedown)=\"onMouseDown($event, 'end')\"\r\n [style.left.%]=\"endValue\"\r\n ></div>\r\n </div>\r\n <div class=\"footer\">\r\n <span>{{ minValueLabel || min }}</span>\r\n <span>{{ maxValueLabel || max }}</span>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n imports: [SliderComponent],\r\n exports: [SliderComponent],\r\n})\r\nexport class SliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, NgZone, Injectable, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
2
+ import { inject, NgZone, Injectable, input, EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
3
+ import { __decorate } from 'tslib';
3
4
  import { TranslateService, TranslatePipe } from '@ngx-translate/core';
4
5
  import { Subject } from 'rxjs';
5
6
  import { takeUntil } from 'rxjs/operators';
@@ -218,6 +219,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
218
219
  }]
219
220
  }], ctorParameters: () => [] });
220
221
 
222
+ function SkipIf(...propNames) {
223
+ return function (_target, _propertyKey, descriptor) {
224
+ const original = descriptor.value;
225
+ if (original) {
226
+ descriptor.value = function (...args) {
227
+ const shouldSkip = propNames.some((propName) => {
228
+ const targetProp = this[propName];
229
+ return typeof targetProp === 'function'
230
+ ? Boolean(targetProp())
231
+ : Boolean(targetProp);
232
+ });
233
+ if (shouldSkip) {
234
+ return;
235
+ }
236
+ return original.apply(this, args);
237
+ };
238
+ }
239
+ return descriptor;
240
+ };
241
+ }
221
242
  /**
222
243
  * @description Componente de reconhecimento de voz que integra a Web Speech API para
223
244
  * transcrever a fala do usuário em texto, inserída diretamente em um `<textarea>` fornecido.
@@ -243,6 +264,8 @@ class SpeechRecognitionComponent {
243
264
  keepContext = false;
244
265
  /** @description Placeholder exibido no textarea durante o reconhecimento de voz. @default '' */
245
266
  speechRecognitionPlaceholder = '';
267
+ /** @description Classe do ícone do botão de mais opções. @default 'far fa-ellipsis-h' */
268
+ moreOptionsIconClass = 'far fa-ellipsis-h';
246
269
  _recognizedText = '';
247
270
  originalTextAreaElementText = '';
248
271
  isDoneTextToSpeech = false;
@@ -253,6 +276,7 @@ class SpeechRecognitionComponent {
253
276
  event.preventDefault();
254
277
  }
255
278
  };
279
+ disabledSpeechRecognition = input(false);
256
280
  disabled = false;
257
281
  isListeningUserVoice = false;
258
282
  voiceSpeed = 1;
@@ -284,9 +308,6 @@ class SpeechRecognitionComponent {
284
308
  });
285
309
  }
286
310
  onListen() {
287
- if (this.isDisabledMicrophone || this.isListening) {
288
- return;
289
- }
290
311
  this.disabled = true;
291
312
  this.canRenderMicrophone = false;
292
313
  this.canRenderListeningText = true;
@@ -428,11 +449,38 @@ class SpeechRecognitionComponent {
428
449
  return this.textAreaElement.value;
429
450
  }
430
451
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
431
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpeechRecognitionComponent, isStandalone: true, selector: "s-speech-recognition", inputs: { textAreaElement: "textAreaElement", keepContext: "keepContext", speechRecognitionPlaceholder: "speechRecognitionPlaceholder" }, outputs: { recognizedText: "recognizedText" }, ngImport: i0, template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
452
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpeechRecognitionComponent, isStandalone: true, selector: "s-speech-recognition", inputs: { textAreaElement: { classPropertyName: "textAreaElement", publicName: "textAreaElement", isSignal: false, isRequired: true, transformFunction: null }, keepContext: { classPropertyName: "keepContext", publicName: "keepContext", isSignal: false, isRequired: false, transformFunction: null }, speechRecognitionPlaceholder: { classPropertyName: "speechRecognitionPlaceholder", publicName: "speechRecognitionPlaceholder", isSignal: false, isRequired: false, transformFunction: null }, moreOptionsIconClass: { classPropertyName: "moreOptionsIconClass", publicName: "moreOptionsIconClass", isSignal: false, isRequired: false, transformFunction: null }, disabledSpeechRecognition: { classPropertyName: "disabledSpeechRecognition", publicName: "disabledSpeechRecognition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { recognizedText: "recognizedText" }, ngImport: i0, template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i [class]=\"moreOptionsIconClass\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }] });
432
453
  }
454
+ __decorate([
455
+ SkipIf('disabledSpeechRecognition', 'isDisabledMicrophone', 'isListening')
456
+ ], SpeechRecognitionComponent.prototype, "onListen", null);
457
+ __decorate([
458
+ SkipIf('disabledSpeechRecognition')
459
+ ], SpeechRecognitionComponent.prototype, "onOpenToolbar", null);
460
+ __decorate([
461
+ SkipIf('disabledSpeechRecognition')
462
+ ], SpeechRecognitionComponent.prototype, "onCloseToolbar", null);
463
+ __decorate([
464
+ SkipIf('disabledSpeechRecognition')
465
+ ], SpeechRecognitionComponent.prototype, "onDiscard", null);
466
+ __decorate([
467
+ SkipIf('disabledSpeechRecognition')
468
+ ], SpeechRecognitionComponent.prototype, "onAprove", null);
469
+ __decorate([
470
+ SkipIf('disabledSpeechRecognition')
471
+ ], SpeechRecognitionComponent.prototype, "toggleTextToSpeech", null);
472
+ __decorate([
473
+ SkipIf('disabledSpeechRecognition')
474
+ ], SpeechRecognitionComponent.prototype, "restartTextToSpeech", null);
475
+ __decorate([
476
+ SkipIf('disabledSpeechRecognition')
477
+ ], SpeechRecognitionComponent.prototype, "updateVoiceSpeed", null);
478
+ __decorate([
479
+ SkipIf('disabledSpeechRecognition')
480
+ ], SpeechRecognitionComponent.prototype, "stopListening", null);
433
481
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionComponent, decorators: [{
434
482
  type: Component,
435
- args: [{ selector: 's-speech-recognition', standalone: true, imports: [TranslatePipe], template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\">\n <i class=\"far fa-ellipsis-h\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"] }]
483
+ args: [{ selector: 's-speech-recognition', standalone: true, imports: [TranslatePipe], template: "@if(hasSpeechRecognitionBrowserApi) {\n <section class=\"speech-recognition\">\n <div class=\"speech-recognition-text\">\n @if(canRenderMicrophone) {\n {{ 'platform.angular_components.text_area_before_speech' | translate }}\n }\n\n @if(isListeningUserVoice) {\n {{ 'platform.angular_components.text_area_while_speech' | translate }}\n }\n\n @if(canRenderAprove && canRenderDiscard) {\n {{ 'platform.angular_components.text_area_end_speech' | translate }}\n }\n </div>\n <div class=\"speech-recognition-buttons\">\n @if(canRenderListeningText) {\n <span\n (click)=\"stopListening()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"disabledSpeechRecognition()\">\n <i [class]=\"moreOptionsIconClass\"></i>\n </span>\n }\n\n @if(canRenderMicrophone) {\n <span\n (click)=\"onListen()\"\n class=\"speech-recognition-item speech-recognition-item-microphone\"\n [class.speech-recognition-item-disabled]=\"isDisabledMicrophone || isListening || disabled || disabledSpeechRecognition()\">\n <i class=\"fas fa-microphone\"></i>\n </span>\n }\n\n\n @if(canRenderAprove) {\n <span\n (click)=\"onAprove()\"\n class=\"speech-recognition-item speech-recognition-item-aprove\">\n <i class=\"fas fa-check\"></i>\n </span>\n }\n\n @if(canRenderDiscard) {\n <span\n (click)=\"onDiscard()\"\n class=\"speech-recognition-item speech-recognition-item-discard\">\n <i class=\"fas fa-times\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeech) {\n <span\n (click)=\"onOpenToolbar()\"\n class=\"speech-recognition-item speech-recognition-item-regular\"\n [class.speech-recognition-item-disabled]=\"isDisabledTextToSpeech\">\n <i class=\"fas fa-volume-down\"></i>\n </span>\n }\n\n @if(canRenderTextToSpeechToolbar) {\n <span\n class=\"speech-recognition-item-toolbar\">\n <i class=\"fas\" [class.fa-pause]=\"isPlayingTextToSpeech\" [class.fa-play]=\"!isPlayingTextToSpeech\"\n (click)=\"toggleTextToSpeech()\"></i>\n <i class=\"fas fa-backward\" (click)=\"restartTextToSpeech()\"></i>\n <span (click)=\"updateVoiceSpeed()\">\n {{ voiceSpeed }}x\n </span>\n <i class=\"fas fa-times\" (click)=\"onCloseToolbar()\"></i>\n </span>\n }\n </div>\n </section>\n}\n", styles: [".speech-recognition{display:flex;gap:10px;justify-content:space-between;width:100%}.speech-recognition-buttons{display:flex;gap:10px;position:relative;bottom:15px;margin-right:16px}.speech-recognition-item{display:inline-flex;height:25px;padding:4px 12px;justify-content:center;align-items:center;gap:8px;border-radius:15px;cursor:pointer;transition:background .1s ease-in}.speech-recognition-item i,.speech-recognition-item span{color:#fff}.speech-recognition-item-disabled{cursor:default!important}.speech-recognition-item-disabled *{opacity:.5}.speech-recognition-item-microphone{background:#428bca}.speech-recognition-item-microphone:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-regular{background:#7892a1}.speech-recognition-item-regular:not(.speech-recognition-item-disabled):hover{background:#697882}.speech-recognition-item-aprove{background:#0c9348}.speech-recognition-item-aprove:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-discard{background:#c13018}.speech-recognition-item-discard:not(.speech-recognition-item-disabled):hover{background:#063951}.speech-recognition-item-toolbar{background:#7892a1;display:flex;border-radius:15px;align-items:center;color:#fff;height:25px}.speech-recognition-item-toolbar i,.speech-recognition-item-toolbar span{cursor:pointer}.speech-recognition-item-toolbar i:not(:first-child),.speech-recognition-item-toolbar i:not(:last-child){padding:6px}.speech-recognition-item-toolbar i:first-child{padding-left:10px}.speech-recognition-item-toolbar i:last-child{padding-right:10px}.speech-recognition-text{color:#212533;font-size:12px;font-style:normal;font-weight:400;word-break:break-word}\n"] }]
436
484
  }], propDecorators: { textAreaElement: [{
437
485
  type: Input,
438
486
  args: [{ required: true }]
@@ -440,9 +488,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
440
488
  type: Input
441
489
  }], speechRecognitionPlaceholder: [{
442
490
  type: Input
491
+ }], moreOptionsIconClass: [{
492
+ type: Input
443
493
  }], recognizedText: [{
444
494
  type: Output
445
- }] } });
495
+ }], onListen: [], onOpenToolbar: [], onCloseToolbar: [], onDiscard: [], onAprove: [], toggleTextToSpeech: [], restartTextToSpeech: [], updateVoiceSpeed: [], stopListening: [] } });
446
496
 
447
497
  class SpeechRecognitionModule {
448
498
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpeechRecognitionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });