@weeehaoooz/talos-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs +25 -4
  2. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +1 -1
  3. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +2 -1
  4. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +1 -1
  5. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs +1627 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs.map +1 -0
  7. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +2 -2
  8. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +1 -1
  9. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +2 -2
  10. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +1 -1
  11. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +4 -4
  12. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  13. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +118 -71
  14. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  15. package/fesm2022/weeehaoooz-talos-ui.mjs +1765 -87
  16. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  17. package/package.json +5 -1
  18. package/styles/_button-group.scss +154 -6
  19. package/styles/_buttons.scss +105 -8
  20. package/styles/_variables.scss +4 -0
  21. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +5 -2
  22. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +1 -1
  23. package/types/weeehaoooz-talos-ui-button-button.d.ts +1 -1
  24. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +1 -1
  25. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts +272 -0
  26. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts.map +1 -0
  27. package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
  28. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  29. package/types/weeehaoooz-talos-ui.d.ts +309 -16
  30. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"weeehaoooz-talos-ui-form-range-input.mjs","sources":["../../../projects/talos-ui/form/range-input/range-input.directive.ts","../../../projects/talos-ui/form/range-input/range-input.component.ts","../../../projects/talos-ui/form/range-input/range-input.component.html","../../../projects/talos-ui/form/range-input/range-input.module.ts","../../../projects/talos-ui/form/range-input/weeehaoooz-talos-ui-form-range-input.ts"],"sourcesContent":["import { Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { RangeInputSize, RangeInputVariant } from './range-input.types';\n\n@Directive({\n selector: 'input[type=\"range\"][talosRangeInput], input[type=\"range\"][talos-range-input]',\n host: {\n 'class': 'talos-range-native-input',\n '[class.talos-range-input-sm]': 'size() === \"sm\"',\n '[class.talos-range-input-md]': 'size() === \"md\"',\n '[class.talos-range-input-lg]': 'size() === \"lg\"',\n '[class.talos-range-input-primary]': 'variant() === \"primary\"',\n '[class.talos-range-input-secondary]': 'variant() === \"secondary\"',\n '[class.talos-range-input-success]': 'variant() === \"success\"',\n '[class.talos-range-input-warning]': 'variant() === \"warning\"',\n '[class.talos-range-input-danger]': 'variant() === \"danger\"',\n '[class.talos-range-input-info]': 'variant() === \"info\"',\n '[class.is-invalid]': 'invalid()',\n '[style.--range-fill-percent]': 'fillPercentStyle()'\n }\n})\nexport class TalosRangeInputDirective {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** Size variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Error state */\n readonly invalid = input<boolean>(false);\n\n protected readonly fillPercentStyle = computed(() => {\n const el = this.elementRef.nativeElement;\n const min = parseFloat(el.min) || 0;\n const max = parseFloat(el.max) || 100;\n const val = parseFloat(el.value) || min;\n const percent = max > min ? ((val - min) / (max - min)) * 100 : 0;\n return `${Math.max(0, Math.min(100, percent))}%`;\n });\n}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RangeInputChangeEvent,\n RangeInputMark,\n RangeInputSize,\n RangeInputTick,\n RangeInputTooltipMode,\n RangeInputValue,\n RangeInputVariant\n} from './range-input.types';\n\nlet rangeInputCounter = 0;\n\n@Component({\n selector: 'talos-range-input, talos-range-slider, talos-slider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRangeInputComponent),\n multi: true\n }\n ],\n templateUrl: './range-input.component.html',\n styleUrl: './range-input.component.scss',\n host: {\n 'class': 'talos-range-input-host',\n '[class.talos-range-disabled]': 'effectiveDisabled()',\n '[class.talos-range-invalid]': 'effectiveInvalid()',\n '[class.is-floating]': 'isFloatingMode()'\n }\n})\nexport class TalosRangeInputComponent implements ControlValueAccessor {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly trackContainerRef = viewChild<ElementRef<HTMLDivElement>>('sliderTrackContainer');\n private readonly thumb0Ref = viewChild<ElementRef<HTMLDivElement>>('thumb0');\n private readonly thumb1Ref = viewChild<ElementRef<HTMLDivElement>>('thumb1');\n\n /** Minimum allowed value */\n readonly min = input<number>(0);\n\n /** Maximum allowed value */\n readonly max = input<number>(100);\n\n /** Step increment for values */\n readonly step = input<number>(1);\n\n /** Step interval for tick marks / labels generation (e.g. 10, 20, 25) */\n readonly interval = input<number | null>(null);\n\n /** Whether the slider operates in dual-thumb range mode */\n readonly range = input<boolean>(false);\n\n /** Minimum distance between handles in dual mode */\n readonly minRange = input<number>(0);\n\n /** Maximum distance between handles in dual mode */\n readonly maxRange = input<number | null>(null);\n\n /** Discrete tick marks with optional custom labels */\n readonly marks = input<RangeInputMark[] | number[] | null>(null);\n\n /** Whether to show tick mark notches on the track */\n readonly showTicks = input<boolean>(false);\n\n /** Whether to show interval/tick labels under the track */\n readonly showIntervals = input<boolean>(false);\n\n /** Alias for showIntervals */\n readonly showLabels = input<boolean>(false);\n\n /** Whether to snap slider thumb only to configured tick marks */\n readonly snapToTicks = input<boolean>(false);\n\n /** Sizing variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Read-only state */\n readonly readonly = input<boolean>(false);\n\n /** Invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Top label text */\n readonly label = input<string>('');\n\n /** Floating label mode toggle */\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n\n /** Helper hint text */\n readonly hint = input<string>('');\n\n /** Whether to render synchronized number inputs */\n readonly showInputs = input<boolean>(false);\n\n /** Whether to show top value badge when inputs are disabled */\n readonly showValueBadge = input<boolean>(true);\n\n /** Tooltip display mode ('always' | 'hover' | 'drag' | 'none') */\n readonly showTooltip = input<RangeInputTooltipMode>('hover');\n\n /** Optional prefix string (e.g. '$') */\n readonly prefix = input<string>('');\n\n /** Optional suffix string (e.g. '%', '°C') */\n readonly suffix = input<string>('');\n\n /** Custom value formatter function */\n readonly formatter = input<((value: number) => string) | null>(null);\n\n /** Accessibility label for single slider */\n readonly ariaLabel = input<string>('Range slider');\n\n /** Accessibility label for start thumb in range mode */\n readonly ariaLabelStart = input<string>('Minimum range value');\n\n /** Accessibility label for end thumb in range mode */\n readonly ariaLabelEnd = input<string>('Maximum range value');\n\n /** Element unique ID */\n readonly id = input<string>('');\n\n /** Standalone value input binding */\n readonly value = input<RangeInputValue | null>(null);\n\n /** Emitted when value changes */\n readonly valueChange = output<RangeInputValue>();\n\n /** Emitted during active dragging or keyboard movement */\n readonly inputChange = output<RangeInputChangeEvent>();\n\n /** Emitted on drag end, click release or input commit */\n readonly change = output<RangeInputChangeEvent>();\n\n // Internal reactive states\n private readonly defaultId = `talos-range-${++rangeInputCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<RangeInputValue | null>(null);\n readonly isCvaDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Active interaction tracking\n readonly focusedThumb = signal<number | null>(null);\n readonly hoveredThumb = signal<number | null>(null);\n readonly draggingThumb = signal<number | null>(null);\n\n // Effective state computations\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly effectiveDisabled = computed(() => this.disabled() || this.isCvaDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n /** Determines whether the component is in dual-handle range mode */\n readonly isDualRange = computed<boolean>(() => {\n if (this.range()) return true;\n const v = this.internalValue() ?? this.value();\n return Array.isArray(v);\n });\n\n /** Resolved start value (single value or lower bound of range) */\n readonly startValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[0] === 'number' ? v[0] : min;\n return this.clamp(val, min, max);\n }\n const val = typeof v === 'number' ? v : min;\n return this.clamp(val, min, max);\n });\n\n /** Resolved end value (upper bound of range mode) */\n readonly endValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[1] === 'number' ? v[1] : max;\n return this.clamp(Math.max(this.startValue(), val), min, max);\n }\n return max;\n });\n\n /** Overall span */\n readonly span = computed<number>(() => {\n const diff = this.max() - this.min();\n return diff > 0 ? diff : 1;\n });\n\n /** Percentage position of thumb 0 */\n readonly thumb0Percent = computed<number>(() => {\n return this.valueToPercent(this.startValue());\n });\n\n /** Percentage position of thumb 1 */\n readonly thumb1Percent = computed<number>(() => {\n return this.valueToPercent(this.endValue());\n });\n\n /** Fill bar left percentage */\n readonly fillLeftPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return this.thumb0Percent();\n }\n return 0;\n });\n\n /** Fill bar width percentage */\n readonly fillWidthPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return Math.max(0, this.thumb1Percent() - this.thumb0Percent());\n }\n return this.thumb0Percent();\n });\n\n /** Computed list of tick marks */\n readonly ticks = computed<RangeInputTick[]>(() => {\n const min = this.min();\n const max = this.max();\n const customMarks = this.marks();\n const intervalVal = this.interval();\n const startVal = this.startValue();\n const endVal = this.isDualRange() ? this.endValue() : startVal;\n const isDual = this.isDualRange();\n\n if (customMarks && customMarks.length > 0) {\n return customMarks.map(m => {\n const val = typeof m === 'number' ? m : m.value;\n const label = typeof m === 'number' ? undefined : m.label;\n const tooltip = typeof m === 'number' ? undefined : m.tooltip;\n const percent = this.valueToPercent(val);\n const active = isDual\n ? val >= startVal && val <= endVal\n : val <= startVal;\n return { value: val, percent, label, tooltip, active };\n });\n }\n\n if (intervalVal && intervalVal > 0) {\n const list: RangeInputTick[] = [];\n for (let v = min; v <= max; v += intervalVal) {\n const percent = this.valueToPercent(v);\n const active = isDual\n ? v >= startVal && v <= endVal\n : v <= startVal;\n list.push({\n value: v,\n percent,\n label: this.formatDisplayValue(v),\n active\n });\n }\n // Ensure max is included if not strictly a multiple\n if ((max - min) % intervalVal !== 0) {\n list.push({\n value: max,\n percent: 100,\n label: this.formatDisplayValue(max),\n active: isDual ? endVal >= max : startVal >= max\n });\n }\n return list;\n }\n\n return [];\n });\n\n /** Computed list of interval/tick labels */\n readonly labels = computed<RangeInputTick[]>(() => {\n const customMarks = this.marks();\n const ticksList = this.ticks();\n\n if (customMarks && customMarks.length > 0) {\n return ticksList.filter(t => t.label !== undefined);\n }\n return ticksList;\n });\n\n readonly isDragging = computed(() => this.draggingThumb() !== null);\n\n private onChange: (val: RangeInputValue) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Implementation ---\n writeValue(val: RangeInputValue | null): void {\n if (val === null || val === undefined) {\n this.internalValue.set(this.range() ? [this.min(), this.max()] : this.min());\n } else {\n this.internalValue.set(val);\n }\n }\n\n registerOnChange(fn: (val: RangeInputValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isCvaDisabled.set(isDisabled);\n }\n\n // --- Value Helpers & Formatting ---\n private clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private valueToPercent(value: number): number {\n const min = this.min();\n const span = this.span();\n const percent = ((value - min) / span) * 100;\n return Math.max(0, Math.min(100, percent));\n }\n\n private percentToValue(percent: number): number {\n const min = this.min();\n const span = this.span();\n return min + (percent / 100) * span;\n }\n\n private snapValue(value: number): number {\n const min = this.min();\n const max = this.max();\n\n if (this.snapToTicks()) {\n const availableTicks = this.ticks();\n if (availableTicks.length > 0) {\n let closest = availableTicks[0].value;\n let minDiff = Math.abs(value - closest);\n for (const t of availableTicks) {\n const diff = Math.abs(value - t.value);\n if (diff < minDiff) {\n minDiff = diff;\n closest = t.value;\n }\n }\n return closest;\n }\n }\n\n const step = this.step();\n if (step <= 0) return this.clamp(value, min, max);\n\n const stepsCount = Math.round((value - min) / step);\n const steppedVal = min + stepsCount * step;\n\n // Handle floating-point rounding precision\n const stepDecimals = (step.toString().split('.')[1] || '').length;\n const roundedVal = parseFloat(steppedVal.toFixed(stepDecimals));\n\n return this.clamp(roundedVal, min, max);\n }\n\n formatDisplayValue(val: number): string {\n const customFormatter = this.formatter();\n if (customFormatter) {\n return customFormatter(val);\n }\n const pre = this.prefix();\n const suf = this.suffix();\n return `${pre}${val.toLocaleString()}${suf}`;\n }\n\n isTooltipVisible(thumbIndex: number): boolean {\n const mode = this.showTooltip();\n if (mode === 'none') return false;\n if (mode === 'always') return true;\n if (mode === 'drag') return this.draggingThumb() === thumbIndex;\n if (mode === 'hover') {\n return (\n this.hoveredThumb() === thumbIndex ||\n this.draggingThumb() === thumbIndex ||\n this.focusedThumb() === thumbIndex\n );\n }\n return false;\n }\n\n // --- Interaction & Event Handlers ---\n private emitUpdate(newVal: RangeInputValue, source: 'drag' | 'keyboard' | 'input' | 'track-click', isFinal = false): void {\n this.internalValue.set(newVal);\n this.onChange(newVal);\n this.valueChange.emit(newVal);\n\n const event: RangeInputChangeEvent = { value: newVal, source };\n this.inputChange.emit(event);\n\n if (isFinal) {\n this.change.emit(event);\n this.markAsTouched();\n }\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n onThumbFocus(thumbIndex: number): void {\n this.focusedThumb.set(thumbIndex);\n }\n\n onThumbBlur(thumbIndex: number): void {\n if (this.focusedThumb() === thumbIndex) {\n this.focusedThumb.set(null);\n }\n this.markAsTouched();\n }\n\n onThumbMouseEnter(thumbIndex: number): void {\n this.hoveredThumb.set(thumbIndex);\n }\n\n onThumbMouseLeave(thumbIndex: number): void {\n if (this.hoveredThumb() === thumbIndex) {\n this.hoveredThumb.set(null);\n }\n }\n\n onThumbPointerDown(thumbIndex: number, event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.draggingThumb.set(thumbIndex);\n this.focusedThumb.set(thumbIndex);\n\n const target = event.currentTarget as HTMLElement;\n target.setPointerCapture(event.pointerId);\n\n const onPointerMove = (e: PointerEvent) => {\n if (this.draggingThumb() !== thumbIndex) return;\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', false);\n };\n\n const onPointerUp = (e: PointerEvent) => {\n target.removeEventListener('pointermove', onPointerMove);\n target.removeEventListener('pointerup', onPointerUp);\n target.removeEventListener('pointercancel', onPointerUp);\n\n try {\n target.releasePointerCapture(e.pointerId);\n } catch { }\n\n if (this.draggingThumb() === thumbIndex) {\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', true);\n this.draggingThumb.set(null);\n }\n };\n\n target.addEventListener('pointermove', onPointerMove);\n target.addEventListener('pointerup', onPointerUp);\n target.addEventListener('pointercancel', onPointerUp);\n }\n\n onTrackPointerDown(event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const clickX = event.clientX;\n const clickRatio = (clickX - rect.left) / rect.width;\n const rawVal = this.percentToValue(clickRatio * 100);\n\n let chosenThumb = 0;\n if (this.isDualRange()) {\n const dist0 = Math.abs(rawVal - this.startValue());\n const dist1 = Math.abs(rawVal - this.endValue());\n chosenThumb = dist0 <= dist1 ? 0 : 1;\n }\n\n this.updateValueFromPointer(chosenThumb, clickX, 'track-click', true);\n\n // Focus chosen thumb\n if (chosenThumb === 0) {\n this.thumb0Ref()?.nativeElement.focus();\n } else {\n this.thumb1Ref()?.nativeElement.focus();\n }\n }\n\n private updateValueFromPointer(thumbIndex: number, clientX: number, source: 'drag' | 'track-click', isFinal: boolean): void {\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const rawVal = this.percentToValue(ratio * 100);\n const steppedVal = this.snapValue(rawVal);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n const maxDistance = this.maxRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n start = end - maxDistance;\n }\n } else {\n end = Math.max(steppedVal, start + minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n end = start + maxDistance;\n }\n }\n\n this.emitUpdate([start, end], source, isFinal);\n } else {\n this.emitUpdate(steppedVal, source, isFinal);\n }\n }\n\n onThumbKeyDown(thumbIndex: number, event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = this.step();\n const span = this.span();\n const largeStep = Math.max(step * 10, span / 10);\n\n let delta = 0;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = -step;\n break;\n case 'PageUp':\n delta = largeStep;\n break;\n case 'PageDown':\n delta = -largeStep;\n break;\n case 'Home':\n delta = -(span + 1);\n break;\n case 'End':\n delta = span + 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n const nextVal = this.snapValue(start + delta);\n start = Math.min(nextVal, end - minDistance);\n } else {\n const nextVal = this.snapValue(end + delta);\n end = Math.max(nextVal, start + minDistance);\n }\n\n this.emitUpdate([start, end], 'keyboard', true);\n } else {\n const nextVal = this.snapValue(this.startValue() + delta);\n this.emitUpdate(nextVal, 'keyboard', true);\n }\n }\n\n onNumberInputChange(thumbIndex: number, event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const parsed = parseFloat(inputEl.value);\n if (isNaN(parsed)) return;\n\n const steppedVal = this.snapValue(parsed);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n } else {\n end = Math.max(steppedVal, start + minDistance);\n }\n\n inputEl.value = (thumbIndex === 0 ? start : end).toString();\n this.emitUpdate([start, end], 'input', true);\n } else {\n inputEl.value = steppedVal.toString();\n this.emitUpdate(steppedVal, 'input', true);\n }\n }\n\n onTickClick(tick: RangeInputTick, event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.stopPropagation();\n\n const targetVal = tick.value;\n if (this.isDualRange()) {\n const dist0 = Math.abs(targetVal - this.startValue());\n const dist1 = Math.abs(targetVal - this.endValue());\n let start = this.startValue();\n let end = this.endValue();\n\n if (dist0 <= dist1) {\n start = Math.min(targetVal, end - this.minRange());\n } else {\n end = Math.max(targetVal, start + this.minRange());\n }\n this.emitUpdate([start, end], 'track-click', true);\n } else {\n this.emitUpdate(targetVal, 'track-click', true);\n }\n }\n\n onLabelClick(tick: RangeInputTick, event: MouseEvent): void {\n this.onTickClick(tick, event);\n }\n}\n","<div class=\"talos-range-wrapper\" [class.is-disabled]=\"effectiveDisabled()\" [class.is-readonly]=\"readonly()\"\n [class.is-invalid]=\"effectiveInvalid()\" [class.is-range]=\"isDualRange()\" [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\" [class.size-lg]=\"size() === 'lg'\" [class.variant-primary]=\"variant() === 'primary'\"\n [class.variant-secondary]=\"variant() === 'secondary'\" [class.variant-success]=\"variant() === 'success'\"\n [class.variant-warning]=\"variant() === 'warning'\" [class.variant-danger]=\"variant() === 'danger'\"\n [class.variant-info]=\"variant() === 'info'\">\n <!-- Header: Label, Hint & Optional Value Display / Synchronized Number Inputs -->\n @if (label() || hint() || showValueBadge() || showInputs()) {\n <div class=\"talos-range-header\">\n <div class=\"talos-range-label-group\" [class.is-floating-label]=\"isFloatingMode()\">\n @if (label()) {\n <label class=\"talos-range-label\" [class.is-floated]=\"isFloatingMode()\" [attr.for]=\"elementId() + '-thumb-0'\">\n {{ label() }}\n </label>\n }\n @if (hint()) {\n <span class=\"talos-range-hint\">{{ hint() }}</span>\n }\n </div>\n\n @if (showInputs()) {\n <div class=\"talos-range-inputs-group\">\n @if (isDualRange()) {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-0'\" [min]=\"min()\"\n [max]=\"endValue()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n <span class=\"talos-range-inputs-separator\">–</span>\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-1'\" [min]=\"startValue()\"\n [max]=\"max()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"endValue()\"\n (change)=\"onNumberInputChange(1, $event)\" (keydown.enter)=\"onNumberInputChange(1, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n } @else {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num'\" [min]=\"min()\" [max]=\"max()\"\n [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n }\n </div>\n } @else if (showValueBadge()) {\n <div class=\"talos-range-value-badge\">\n @if (isDualRange()) {\n <span>{{ formatDisplayValue(startValue()) }} – {{ formatDisplayValue(endValue()) }}</span>\n } @else {\n <span>{{ formatDisplayValue(startValue()) }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Range Slider Container (Track, Fills, Ticks, Thumbs) -->\n <div #sliderTrackContainer class=\"talos-range-slider\" [class.is-active]=\"isDragging()\"\n (pointerdown)=\"onTrackPointerDown($event)\">\n <!-- Background Track -->\n <div class=\"talos-range-track\">\n <!-- Active Filled Range Segment -->\n <div class=\"talos-range-fill\" [style.left.%]=\"fillLeftPercent()\" [style.width.%]=\"fillWidthPercent()\"></div>\n\n <!-- Tick Marks -->\n @if (ticks().length > 0 && (showTicks() || marks())) {\n <div class=\"talos-range-ticks\">\n @for (tick of ticks(); track tick.value) {\n <div class=\"talos-range-tick\" [class.is-active]=\"tick.active\" [style.left.%]=\"tick.percent\"\n (click)=\"onTickClick(tick, $event)\"></div>\n }\n </div>\n }\n </div>\n\n <!-- Thumb 0 (Primary or Lower Bound Handle) -->\n <div #thumb0 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 0\"\n [class.is-dragging]=\"draggingThumb() === 0\" [class.is-tooltip-visible]=\"isTooltipVisible(0)\"\n [style.left.%]=\"thumb0Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-0'\"\n [attr.aria-label]=\"isDualRange() ? ariaLabelStart() : ariaLabel()\" [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"isDualRange() ? endValue() : max()\" [attr.aria-valuenow]=\"startValue()\"\n [attr.aria-valuetext]=\"formatDisplayValue(startValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(0, $event)\"\n (keydown)=\"onThumbKeyDown(0, $event)\" (focus)=\"onThumbFocus(0)\" (blur)=\"onThumbBlur(0)\"\n (mouseenter)=\"onThumbMouseEnter(0)\" (mouseleave)=\"onThumbMouseLeave(0)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(0)\">\n {{ formatDisplayValue(startValue()) }}\n </div>\n }\n </div>\n\n <!-- Thumb 1 (Upper Bound Handle for Dual Range) -->\n @if (isDualRange()) {\n <div #thumb1 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 1\"\n [class.is-dragging]=\"draggingThumb() === 1\" [class.is-tooltip-visible]=\"isTooltipVisible(1)\"\n [style.left.%]=\"thumb1Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-1'\"\n [attr.aria-label]=\"ariaLabelEnd()\" [attr.aria-valuemin]=\"startValue()\" [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"endValue()\" [attr.aria-valuetext]=\"formatDisplayValue(endValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(1, $event)\"\n (keydown)=\"onThumbKeyDown(1, $event)\" (focus)=\"onThumbFocus(1)\" (blur)=\"onThumbBlur(1)\"\n (mouseenter)=\"onThumbMouseEnter(1)\" (mouseleave)=\"onThumbMouseLeave(1)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(1)\">\n {{ formatDisplayValue(endValue()) }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Interval / Step Labels under track -->\n @if (labels().length > 0 && (showIntervals() || showLabels() || marks())) {\n <div class=\"talos-range-labels\">\n @for (item of labels(); track item.value) {\n <span class=\"talos-range-label-item\" [class.is-active]=\"item.active\" [style.left.%]=\"item.percent\"\n (click)=\"onLabelClick(item, $event)\">\n {{ item.label }}\n </span>\n }\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TalosRangeInputComponent } from './range-input.component';\nimport { TalosRangeInputDirective } from './range-input.directive';\n\n@NgModule({\n imports: [TalosRangeInputComponent, TalosRangeInputDirective],\n exports: [TalosRangeInputComponent, TalosRangeInputDirective]\n})\nexport class TalosRangeInputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"weeehaoooz-talos-ui-form-range-input.mjs","sources":["../../../projects/talos-ui/form/range-input/range-input.directive.ts","../../../projects/talos-ui/form/range-input/range-input.component.ts","../../../projects/talos-ui/form/range-input/range-input.component.html","../../../projects/talos-ui/form/range-input/range-input.module.ts","../../../projects/talos-ui/form/range-input/weeehaoooz-talos-ui-form-range-input.ts"],"sourcesContent":["import { Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { RangeInputSize, RangeInputVariant } from './range-input.types';\n\n@Directive({\n selector: 'input[type=\"range\"][talosRangeInput], input[type=\"range\"][talos-range-input]',\n host: {\n 'class': 'talos-range-native-input',\n '[class.talos-range-input-sm]': 'size() === \"sm\"',\n '[class.talos-range-input-md]': 'size() === \"md\"',\n '[class.talos-range-input-lg]': 'size() === \"lg\"',\n '[class.talos-range-input-primary]': 'variant() === \"primary\"',\n '[class.talos-range-input-secondary]': 'variant() === \"secondary\"',\n '[class.talos-range-input-success]': 'variant() === \"success\"',\n '[class.talos-range-input-warning]': 'variant() === \"warning\"',\n '[class.talos-range-input-danger]': 'variant() === \"danger\"',\n '[class.talos-range-input-info]': 'variant() === \"info\"',\n '[class.is-invalid]': 'invalid()',\n '[style.--range-fill-percent]': 'fillPercentStyle()'\n }\n})\nexport class TalosRangeInputDirective {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** Size variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Error state */\n readonly invalid = input<boolean>(false);\n\n protected readonly fillPercentStyle = computed(() => {\n const el = this.elementRef.nativeElement;\n const min = parseFloat(el.min) || 0;\n const max = parseFloat(el.max) || 100;\n const val = parseFloat(el.value) || min;\n const percent = max > min ? ((val - min) / (max - min)) * 100 : 0;\n return `${Math.max(0, Math.min(100, percent))}%`;\n });\n}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RangeInputChangeEvent,\n RangeInputMark,\n RangeInputSize,\n RangeInputTick,\n RangeInputTooltipMode,\n RangeInputValue,\n RangeInputVariant\n} from './range-input.types';\n\nlet rangeInputCounter = 0;\n\n@Component({\n selector: 'talos-range-input, talos-range-slider, talos-slider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRangeInputComponent),\n multi: true\n }\n ],\n templateUrl: './range-input.component.html',\n styleUrl: './range-input.component.scss',\n host: {\n 'class': 'talos-range-input-host',\n '[class.talos-range-disabled]': 'effectiveDisabled()',\n '[class.talos-range-invalid]': 'effectiveInvalid()',\n '[class.is-floating]': 'isFloatingMode()'\n }\n})\nexport class TalosRangeInputComponent implements ControlValueAccessor {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly trackContainerRef = viewChild<ElementRef<HTMLDivElement>>('sliderTrackContainer');\n private readonly thumb0Ref = viewChild<ElementRef<HTMLDivElement>>('thumb0');\n private readonly thumb1Ref = viewChild<ElementRef<HTMLDivElement>>('thumb1');\n\n /** Minimum allowed value */\n readonly min = input<number>(0);\n\n /** Maximum allowed value */\n readonly max = input<number>(100);\n\n /** Step increment for values */\n readonly step = input<number>(1);\n\n /** Step interval for tick marks / labels generation (e.g. 10, 20, 25) */\n readonly interval = input<number | null>(null);\n\n /** Whether the slider operates in dual-thumb range mode */\n readonly range = input<boolean>(false);\n\n /** Minimum distance between handles in dual mode */\n readonly minRange = input<number>(0);\n\n /** Maximum distance between handles in dual mode */\n readonly maxRange = input<number | null>(null);\n\n /** Discrete tick marks with optional custom labels */\n readonly marks = input<RangeInputMark[] | number[] | null>(null);\n\n /** Whether to show tick mark notches on the track */\n readonly showTicks = input<boolean>(false);\n\n /** Whether to show interval/tick labels under the track */\n readonly showIntervals = input<boolean>(false);\n\n /** Alias for showIntervals */\n readonly showLabels = input<boolean>(false);\n\n /** Whether to snap slider thumb only to configured tick marks */\n readonly snapToTicks = input<boolean>(false);\n\n /** Sizing variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Read-only state */\n readonly readonly = input<boolean>(false);\n\n /** Invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Top label text */\n readonly label = input<string>('');\n\n /** Floating label mode toggle */\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n\n /** Helper hint text */\n readonly hint = input<string>('');\n\n /** Whether to render synchronized number inputs */\n readonly showInputs = input<boolean>(false);\n\n /** Whether to show top value badge when inputs are disabled */\n readonly showValueBadge = input<boolean>(true);\n\n /** Tooltip display mode ('always' | 'hover' | 'drag' | 'none') */\n readonly showTooltip = input<RangeInputTooltipMode>('hover');\n\n /** Optional prefix string (e.g. '$') */\n readonly prefix = input<string>('');\n\n /** Optional suffix string (e.g. '%', '°C') */\n readonly suffix = input<string>('');\n\n /** Custom value formatter function */\n readonly formatter = input<((value: number) => string) | null>(null);\n\n /** Accessibility label for single slider */\n readonly ariaLabel = input<string>('Range slider');\n\n /** Accessibility label for start thumb in range mode */\n readonly ariaLabelStart = input<string>('Minimum range value');\n\n /** Accessibility label for end thumb in range mode */\n readonly ariaLabelEnd = input<string>('Maximum range value');\n\n /** Element unique ID */\n readonly id = input<string>('');\n\n /** Standalone value input binding */\n readonly value = input<RangeInputValue | null>(null);\n\n /** Emitted when value changes */\n readonly valueChange = output<RangeInputValue>();\n\n /** Emitted during active dragging or keyboard movement */\n readonly inputChange = output<RangeInputChangeEvent>();\n\n /** Emitted on drag end, click release or input commit */\n readonly change = output<RangeInputChangeEvent>();\n\n // Internal reactive states\n private readonly defaultId = `talos-range-${++rangeInputCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<RangeInputValue | null>(null);\n readonly isCvaDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Active interaction tracking\n readonly focusedThumb = signal<number | null>(null);\n readonly hoveredThumb = signal<number | null>(null);\n readonly draggingThumb = signal<number | null>(null);\n\n // Effective state computations\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly effectiveDisabled = computed(() => this.disabled() || this.isCvaDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n /** Determines whether the component is in dual-handle range mode */\n readonly isDualRange = computed<boolean>(() => {\n if (this.range()) return true;\n const v = this.internalValue() ?? this.value();\n return Array.isArray(v);\n });\n\n /** Resolved start value (single value or lower bound of range) */\n readonly startValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[0] === 'number' ? v[0] : min;\n return this.clamp(val, min, max);\n }\n const val = typeof v === 'number' ? v : min;\n return this.clamp(val, min, max);\n });\n\n /** Resolved end value (upper bound of range mode) */\n readonly endValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[1] === 'number' ? v[1] : max;\n return this.clamp(Math.max(this.startValue(), val), min, max);\n }\n return max;\n });\n\n /** Overall span */\n readonly span = computed<number>(() => {\n const diff = this.max() - this.min();\n return diff > 0 ? diff : 1;\n });\n\n /** Percentage position of thumb 0 */\n readonly thumb0Percent = computed<number>(() => {\n return this.valueToPercent(this.startValue());\n });\n\n /** Percentage position of thumb 1 */\n readonly thumb1Percent = computed<number>(() => {\n return this.valueToPercent(this.endValue());\n });\n\n /** Fill bar left percentage */\n readonly fillLeftPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return this.thumb0Percent();\n }\n return 0;\n });\n\n /** Fill bar width percentage */\n readonly fillWidthPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return Math.max(0, this.thumb1Percent() - this.thumb0Percent());\n }\n return this.thumb0Percent();\n });\n\n /** Computed list of tick marks */\n readonly ticks = computed<RangeInputTick[]>(() => {\n const min = this.min();\n const max = this.max();\n const customMarks = this.marks();\n const intervalVal = this.interval();\n const startVal = this.startValue();\n const endVal = this.isDualRange() ? this.endValue() : startVal;\n const isDual = this.isDualRange();\n\n if (customMarks && customMarks.length > 0) {\n return customMarks.map(m => {\n const val = typeof m === 'number' ? m : m.value;\n const label = typeof m === 'number' ? undefined : m.label;\n const tooltip = typeof m === 'number' ? undefined : m.tooltip;\n const percent = this.valueToPercent(val);\n const active = isDual\n ? val >= startVal && val <= endVal\n : val <= startVal;\n return { value: val, percent, label, tooltip, active };\n });\n }\n\n if (intervalVal && intervalVal > 0) {\n const list: RangeInputTick[] = [];\n for (let v = min; v <= max; v += intervalVal) {\n const percent = this.valueToPercent(v);\n const active = isDual\n ? v >= startVal && v <= endVal\n : v <= startVal;\n list.push({\n value: v,\n percent,\n label: this.formatDisplayValue(v),\n active\n });\n }\n // Ensure max is included if not strictly a multiple\n if ((max - min) % intervalVal !== 0) {\n list.push({\n value: max,\n percent: 100,\n label: this.formatDisplayValue(max),\n active: isDual ? endVal >= max : startVal >= max\n });\n }\n return list;\n }\n\n return [];\n });\n\n /** Computed list of interval/tick labels */\n readonly labels = computed<RangeInputTick[]>(() => {\n const customMarks = this.marks();\n const ticksList = this.ticks();\n\n if (customMarks && customMarks.length > 0) {\n return ticksList.filter(t => t.label !== undefined);\n }\n return ticksList;\n });\n\n readonly isDragging = computed(() => this.draggingThumb() !== null);\n\n private onChange: (val: RangeInputValue) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Implementation ---\n writeValue(val: RangeInputValue | null): void {\n if (val === null || val === undefined) {\n this.internalValue.set(this.range() ? [this.min(), this.max()] : this.min());\n } else {\n this.internalValue.set(val);\n }\n }\n\n registerOnChange(fn: (val: RangeInputValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isCvaDisabled.set(isDisabled);\n }\n\n // --- Value Helpers & Formatting ---\n private clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private valueToPercent(value: number): number {\n const min = this.min();\n const span = this.span();\n const percent = ((value - min) / span) * 100;\n return Math.max(0, Math.min(100, percent));\n }\n\n private percentToValue(percent: number): number {\n const min = this.min();\n const span = this.span();\n return min + (percent / 100) * span;\n }\n\n private snapValue(value: number): number {\n const min = this.min();\n const max = this.max();\n\n if (this.snapToTicks()) {\n const availableTicks = this.ticks();\n if (availableTicks.length > 0) {\n let closest = availableTicks[0].value;\n let minDiff = Math.abs(value - closest);\n for (const t of availableTicks) {\n const diff = Math.abs(value - t.value);\n if (diff < minDiff) {\n minDiff = diff;\n closest = t.value;\n }\n }\n return closest;\n }\n }\n\n const step = this.step();\n if (step <= 0) return this.clamp(value, min, max);\n\n const stepsCount = Math.round((value - min) / step);\n const steppedVal = min + stepsCount * step;\n\n // Handle floating-point rounding precision\n const stepDecimals = (step.toString().split('.')[1] || '').length;\n const roundedVal = parseFloat(steppedVal.toFixed(stepDecimals));\n\n return this.clamp(roundedVal, min, max);\n }\n\n formatDisplayValue(val: number): string {\n const customFormatter = this.formatter();\n if (customFormatter) {\n return customFormatter(val);\n }\n const pre = this.prefix();\n const suf = this.suffix();\n return `${pre}${val.toLocaleString()}${suf}`;\n }\n\n isTooltipVisible(thumbIndex: number): boolean {\n const mode = this.showTooltip();\n if (mode === 'none') return false;\n if (mode === 'always') return true;\n if (mode === 'drag') return this.draggingThumb() === thumbIndex;\n if (mode === 'hover') {\n return (\n this.hoveredThumb() === thumbIndex ||\n this.draggingThumb() === thumbIndex ||\n this.focusedThumb() === thumbIndex\n );\n }\n return false;\n }\n\n // --- Interaction & Event Handlers ---\n private emitUpdate(newVal: RangeInputValue, source: 'drag' | 'keyboard' | 'input' | 'track-click', isFinal = false): void {\n this.internalValue.set(newVal);\n this.onChange(newVal);\n this.valueChange.emit(newVal);\n\n const event: RangeInputChangeEvent = { value: newVal, source };\n this.inputChange.emit(event);\n\n if (isFinal) {\n this.change.emit(event);\n this.markAsTouched();\n }\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n onThumbFocus(thumbIndex: number): void {\n this.focusedThumb.set(thumbIndex);\n }\n\n onThumbBlur(thumbIndex: number): void {\n if (this.focusedThumb() === thumbIndex) {\n this.focusedThumb.set(null);\n }\n this.markAsTouched();\n }\n\n onThumbMouseEnter(thumbIndex: number): void {\n this.hoveredThumb.set(thumbIndex);\n }\n\n onThumbMouseLeave(thumbIndex: number): void {\n if (this.hoveredThumb() === thumbIndex) {\n this.hoveredThumb.set(null);\n }\n }\n\n onThumbPointerDown(thumbIndex: number, event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.draggingThumb.set(thumbIndex);\n this.focusedThumb.set(thumbIndex);\n\n const target = event.currentTarget as HTMLElement;\n target.setPointerCapture(event.pointerId);\n\n const onPointerMove = (e: PointerEvent) => {\n if (this.draggingThumb() !== thumbIndex) return;\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', false);\n };\n\n const onPointerUp = (e: PointerEvent) => {\n target.removeEventListener('pointermove', onPointerMove);\n target.removeEventListener('pointerup', onPointerUp);\n target.removeEventListener('pointercancel', onPointerUp);\n\n try {\n target.releasePointerCapture(e.pointerId);\n } catch { }\n\n if (this.draggingThumb() === thumbIndex) {\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', true);\n this.draggingThumb.set(null);\n }\n };\n\n target.addEventListener('pointermove', onPointerMove);\n target.addEventListener('pointerup', onPointerUp);\n target.addEventListener('pointercancel', onPointerUp);\n }\n\n onTrackPointerDown(event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const clickX = event.clientX;\n const clickRatio = (clickX - rect.left) / rect.width;\n const rawVal = this.percentToValue(clickRatio * 100);\n\n let chosenThumb = 0;\n if (this.isDualRange()) {\n const dist0 = Math.abs(rawVal - this.startValue());\n const dist1 = Math.abs(rawVal - this.endValue());\n chosenThumb = dist0 <= dist1 ? 0 : 1;\n }\n\n this.updateValueFromPointer(chosenThumb, clickX, 'track-click', true);\n\n // Focus chosen thumb\n if (chosenThumb === 0) {\n this.thumb0Ref()?.nativeElement.focus();\n } else {\n this.thumb1Ref()?.nativeElement.focus();\n }\n }\n\n private updateValueFromPointer(thumbIndex: number, clientX: number, source: 'drag' | 'track-click', isFinal: boolean): void {\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const rawVal = this.percentToValue(ratio * 100);\n const steppedVal = this.snapValue(rawVal);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n const maxDistance = this.maxRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n start = end - maxDistance;\n }\n } else {\n end = Math.max(steppedVal, start + minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n end = start + maxDistance;\n }\n }\n\n this.emitUpdate([start, end], source, isFinal);\n } else {\n this.emitUpdate(steppedVal, source, isFinal);\n }\n }\n\n onThumbKeyDown(thumbIndex: number, event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = this.step();\n const span = this.span();\n const largeStep = Math.max(step * 10, span / 10);\n\n let delta = 0;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = -step;\n break;\n case 'PageUp':\n delta = largeStep;\n break;\n case 'PageDown':\n delta = -largeStep;\n break;\n case 'Home':\n delta = -(span + 1);\n break;\n case 'End':\n delta = span + 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n const nextVal = this.snapValue(start + delta);\n start = Math.min(nextVal, end - minDistance);\n } else {\n const nextVal = this.snapValue(end + delta);\n end = Math.max(nextVal, start + minDistance);\n }\n\n this.emitUpdate([start, end], 'keyboard', true);\n } else {\n const nextVal = this.snapValue(this.startValue() + delta);\n this.emitUpdate(nextVal, 'keyboard', true);\n }\n }\n\n onNumberInputChange(thumbIndex: number, event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const parsed = parseFloat(inputEl.value);\n if (isNaN(parsed)) return;\n\n const steppedVal = this.snapValue(parsed);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n } else {\n end = Math.max(steppedVal, start + minDistance);\n }\n\n inputEl.value = (thumbIndex === 0 ? start : end).toString();\n this.emitUpdate([start, end], 'input', true);\n } else {\n inputEl.value = steppedVal.toString();\n this.emitUpdate(steppedVal, 'input', true);\n }\n }\n\n onTickClick(tick: RangeInputTick, event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.stopPropagation();\n\n const targetVal = tick.value;\n if (this.isDualRange()) {\n const dist0 = Math.abs(targetVal - this.startValue());\n const dist1 = Math.abs(targetVal - this.endValue());\n let start = this.startValue();\n let end = this.endValue();\n\n if (dist0 <= dist1) {\n start = Math.min(targetVal, end - this.minRange());\n } else {\n end = Math.max(targetVal, start + this.minRange());\n }\n this.emitUpdate([start, end], 'track-click', true);\n } else {\n this.emitUpdate(targetVal, 'track-click', true);\n }\n }\n\n onLabelClick(tick: RangeInputTick, event: MouseEvent): void {\n this.onTickClick(tick, event);\n }\n}\n","<div class=\"talos-range-wrapper\" [class.is-disabled]=\"effectiveDisabled()\" [class.is-readonly]=\"readonly()\"\n [class.is-invalid]=\"effectiveInvalid()\" [class.is-range]=\"isDualRange()\" [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\" [class.size-lg]=\"size() === 'lg'\" [class.variant-primary]=\"variant() === 'primary'\"\n [class.variant-secondary]=\"variant() === 'secondary'\" [class.variant-success]=\"variant() === 'success'\"\n [class.variant-warning]=\"variant() === 'warning'\" [class.variant-danger]=\"variant() === 'danger'\"\n [class.variant-info]=\"variant() === 'info'\">\n <!-- Header: Label, Hint & Optional Value Display / Synchronized Number Inputs -->\n @if (label() || hint() || showValueBadge() || showInputs()) {\n <div class=\"talos-range-header\">\n <div class=\"talos-range-label-group\" [class.is-floating-label]=\"isFloatingMode()\">\n @if (label()) {\n <label class=\"talos-range-label\" [class.is-floated]=\"isFloatingMode()\" [attr.for]=\"elementId() + '-thumb-0'\">\n {{ label() }}\n </label>\n }\n @if (hint()) {\n <span class=\"talos-range-hint\">{{ hint() }}</span>\n }\n </div>\n\n @if (showInputs()) {\n <div class=\"talos-range-inputs-group\">\n @if (isDualRange()) {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-0'\" [min]=\"min()\"\n [max]=\"endValue()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n <span class=\"talos-range-inputs-separator\">–</span>\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-1'\" [min]=\"startValue()\"\n [max]=\"max()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"endValue()\"\n (change)=\"onNumberInputChange(1, $event)\" (keydown.enter)=\"onNumberInputChange(1, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n } @else {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num'\" [min]=\"min()\" [max]=\"max()\"\n [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n }\n </div>\n } @else if (showValueBadge()) {\n <div class=\"talos-range-value-badge\">\n @if (isDualRange()) {\n <span>{{ formatDisplayValue(startValue()) }} – {{ formatDisplayValue(endValue()) }}</span>\n } @else {\n <span>{{ formatDisplayValue(startValue()) }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Range Slider Container (Track, Fills, Ticks, Thumbs) -->\n <div #sliderTrackContainer class=\"talos-range-slider\" [class.is-active]=\"isDragging()\"\n (pointerdown)=\"onTrackPointerDown($event)\">\n <!-- Background Track -->\n <div class=\"talos-range-track\">\n <!-- Active Filled Range Segment -->\n <div class=\"talos-range-fill\" [style.left.%]=\"fillLeftPercent()\" [style.width.%]=\"fillWidthPercent()\"></div>\n\n <!-- Tick Marks -->\n @if (ticks().length > 0 && (showTicks() || marks())) {\n <div class=\"talos-range-ticks\">\n @for (tick of ticks(); track tick.value) {\n <div class=\"talos-range-tick\" [class.is-active]=\"tick.active\" [style.left.%]=\"tick.percent\"\n (click)=\"onTickClick(tick, $event)\"></div>\n }\n </div>\n }\n </div>\n\n <!-- Thumb 0 (Primary or Lower Bound Handle) -->\n <div #thumb0 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 0\"\n [class.is-dragging]=\"draggingThumb() === 0\" [class.is-tooltip-visible]=\"isTooltipVisible(0)\"\n [style.left.%]=\"thumb0Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-0'\"\n [attr.aria-label]=\"isDualRange() ? ariaLabelStart() : ariaLabel()\" [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"isDualRange() ? endValue() : max()\" [attr.aria-valuenow]=\"startValue()\"\n [attr.aria-valuetext]=\"formatDisplayValue(startValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(0, $event)\"\n (keydown)=\"onThumbKeyDown(0, $event)\" (focus)=\"onThumbFocus(0)\" (blur)=\"onThumbBlur(0)\"\n (mouseenter)=\"onThumbMouseEnter(0)\" (mouseleave)=\"onThumbMouseLeave(0)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(0)\">\n {{ formatDisplayValue(startValue()) }}\n </div>\n }\n </div>\n\n <!-- Thumb 1 (Upper Bound Handle for Dual Range) -->\n @if (isDualRange()) {\n <div #thumb1 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 1\"\n [class.is-dragging]=\"draggingThumb() === 1\" [class.is-tooltip-visible]=\"isTooltipVisible(1)\"\n [style.left.%]=\"thumb1Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-1'\"\n [attr.aria-label]=\"ariaLabelEnd()\" [attr.aria-valuemin]=\"startValue()\" [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"endValue()\" [attr.aria-valuetext]=\"formatDisplayValue(endValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(1, $event)\"\n (keydown)=\"onThumbKeyDown(1, $event)\" (focus)=\"onThumbFocus(1)\" (blur)=\"onThumbBlur(1)\"\n (mouseenter)=\"onThumbMouseEnter(1)\" (mouseleave)=\"onThumbMouseLeave(1)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(1)\">\n {{ formatDisplayValue(endValue()) }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Interval / Step Labels under track -->\n @if (labels().length > 0 && (showIntervals() || showLabels() || marks())) {\n <div class=\"talos-range-labels\">\n @for (item of labels(); track item.value) {\n <span class=\"talos-range-label-item\" [class.is-active]=\"item.active\" [style.left.%]=\"item.percent\"\n (click)=\"onLabelClick(item, $event)\">\n {{ item.label }}\n </span>\n }\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TalosRangeInputComponent } from './range-input.component';\nimport { TalosRangeInputDirective } from './range-input.directive';\n\n@NgModule({\n imports: [TalosRangeInputComponent, TalosRangeInputDirective],\n exports: [TalosRangeInputComponent, TalosRangeInputDirective]\n})\nexport class TalosRangeInputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -278,7 +278,7 @@ class TalosRatingComponent {
278
278
  useExisting: forwardRef(() => TalosRatingComponent),
279
279
  multi: true
280
280
  }
281
- ], ngImport: i0, template: "<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;outline:none;border-radius:var(--talos-radius-sm, 4px);transition:box-shadow var(--talos-transition, .18s ease);--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fbbf24;--talos-rating-unfilled: var(--talos-border-default, #cbd5e1);--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem)}:host.variant-warning{--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fcd34d}:host.variant-primary{--talos-rating-fill: var(--talos-primary, #2563eb);--talos-rating-spark-alt: #60a5fa}:host.variant-danger{--talos-rating-fill: var(--talos-danger, #ef4444);--talos-rating-spark-alt: #f87171}:host.variant-success{--talos-rating-fill: var(--talos-success, #16a34a);--talos-rating-spark-alt: #4ade80}:host.variant-purple{--talos-rating-fill: var(--talos-purple, #8b5cf6);--talos-rating-spark-alt: #c084fc}:host.variant-custom{--talos-rating-fill: var(--talos-rating-custom-color, var(--talos-warning, #f59e0b));--talos-rating-spark-alt: var(--talos-rating-custom-color, #fbbf24)}:host.rating-sm{--talos-rating-size: 1.125rem;--talos-rating-gap: .25rem;--talos-rating-font-size: var(--talos-font-size-xs, .75rem);--particle-dist: 12px}:host.rating-md{--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem);--particle-dist: 16px}:host.rating-lg{--talos-rating-size: 1.75rem;--talos-rating-gap: .5rem;--talos-rating-font-size: var(--talos-font-size-md, .875rem);--particle-dist: 22px}:host.rating-xl{--talos-rating-size: 2.25rem;--talos-rating-gap: .625rem;--talos-rating-font-size: var(--talos-font-size-lg, 1rem);--particle-dist: 28px}:host.is-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}:host.is-readonly{cursor:default}:host:focus-visible{box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .2))}.talos-rating-container{display:inline-flex;align-items:center;gap:.625rem;-webkit-user-select:none;user-select:none;font-family:var(--talos-font-sans, inherit)}:host(.label-bottom) .talos-rating-container{flex-direction:column;align-items:flex-start;gap:.375rem}.talos-rating-stars{display:inline-flex;align-items:center;gap:var(--talos-rating-gap)}.talos-rating-star-btn{position:relative;background:transparent;border:none;padding:0;margin:0;line-height:0;display:inline-flex;align-items:center;justify-content:center;width:var(--talos-rating-size);height:var(--talos-rating-size);color:var(--talos-rating-unfilled);outline:none;cursor:default;transform-origin:center center;overflow:visible}:host(.is-interactive) .talos-rating-star-btn{cursor:pointer}.talos-rating-star-btn .talos-star-svg{width:var(--talos-rating-size);height:var(--talos-rating-size);stroke-width:1.75;stroke:var(--talos-rating-unfilled);fill:transparent;transition:color .15s ease,fill .15s ease,stroke .15s ease,transform .15s ease;transform-origin:center center}:host(.is-interactive:not(.anim-none)) .talos-rating-star-btn:hover .talos-star-svg{transform:scale(1.12)}.talos-rating-star-btn.is-active,.talos-rating-star-btn.is-hovered{color:var(--talos-rating-fill)}.talos-rating-star-btn.is-active .talos-star-svg,.talos-rating-star-btn.is-hovered .talos-star-svg{fill:var(--talos-rating-fill);stroke:var(--talos-rating-fill);filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.talos-rating-star-btn.is-animating .talos-star-svg{animation:talosStarPop .44s cubic-bezier(.175,.885,.32,1.275)}.talos-rating-star-btn:disabled{cursor:not-allowed}.talos-rating-particles{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:10}.talos-rating-particles .particle{position:absolute;top:0;left:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background-color:var(--talos-rating-fill);pointer-events:none;box-shadow:0 0 4px var(--talos-rating-fill);animation-duration:.5s;animation-timing-function:cubic-bezier(.165,.84,.44,1);animation-fill-mode:forwards}.talos-rating-particles .particle.p-1,.talos-rating-particles .particle.p-3,.talos-rating-particles .particle.p-5,.talos-rating-particles .particle.p-7{background-color:var(--talos-rating-spark-alt);box-shadow:0 0 5px var(--talos-rating-spark-alt)}.talos-rating-particles .particle.p-1{width:3.5px;height:3.5px;animation-name:burstNorthWest}.talos-rating-particles .particle.p-2{width:4.5px;height:4.5px;animation-name:burstNorth}.talos-rating-particles .particle.p-3{width:3px;height:3px;animation-name:burstNorthEast}.talos-rating-particles .particle.p-4{width:4.5px;height:4.5px;animation-name:burstEast}.talos-rating-particles .particle.p-5{width:3.5px;height:3.5px;animation-name:burstSouthEast}.talos-rating-particles .particle.p-6{width:4px;height:4px;animation-name:burstSouth}.talos-rating-particles .particle.p-7{width:3px;height:3px;animation-name:burstSouthWest}.talos-rating-particles .particle.p-8{width:4.5px;height:4.5px;animation-name:burstWest}@keyframes talosStarPop{0%{transform:scale(1)}30%{transform:scale(1.38) rotate(-6deg)}65%{transform:scale(.9) rotate(3deg)}85%{transform:scale(1.08) rotate(0)}to{transform:scale(1) rotate(0)}}@keyframes burstNorthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstNorth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}@keyframes burstNorthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstSouth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}.talos-rating-label-wrapper{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--talos-rating-font-size);line-height:1}.talos-rating-score-pill{display:inline-flex;align-items:baseline;padding:.15rem .45rem;font-weight:700;border-radius:var(--talos-radius-sm, 4px);background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-primary, #0f172a);border:1px solid var(--talos-border-subtle, #e2e8f0)}.talos-rating-score-pill .score-max{font-size:.85em;font-weight:500;color:var(--talos-text-muted, #64748b);margin-left:1px}.talos-rating-desc-text{font-weight:500;color:var(--talos-text-secondary, #334155)}:host(.anim-none) .talos-rating-star-btn,:host(.anim-none) .talos-star-svg,:host(.anim-none) .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}:host(.anim-subtle) .talos-rating-star-btn.is-animating .talos-star-svg{animation:none;transform:scale(1.08);transition:transform .15s ease}:host(.anim-pop) .talos-rating-particles{display:none!important}@media(prefers-reduced-motion:reduce){:host .talos-rating-star-btn,:host .talos-star-svg,:host .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}}:root[data-theme=dark],:root.dark,[data-theme=dark],[data-mode=dark],.dark,.dark-theme{--talos-rating-unfilled: rgba(255, 255, 255, .2)}:root[data-theme=dark] .talos-rating-star-btn .talos-star-svg,:root.dark .talos-rating-star-btn .talos-star-svg,[data-theme=dark] .talos-rating-star-btn .talos-star-svg,[data-mode=dark] .talos-rating-star-btn .talos-star-svg,.dark .talos-rating-star-btn .talos-star-svg,.dark-theme .talos-rating-star-btn .talos-star-svg{stroke:#ffffff40}:root[data-theme=dark] .talos-rating-score-pill,:root.dark .talos-rating-score-pill,[data-theme=dark] .talos-rating-score-pill,[data-mode=dark] .talos-rating-score-pill,.dark .talos-rating-score-pill,.dark-theme .talos-rating-score-pill{background-color:var(--talos-bg-subtle, #131d31);border-color:var(--talos-border-subtle, rgba(255, 255, 255, .08));color:var(--talos-text-primary, #f8fafc)}:root[data-theme=dark] .talos-rating-score-pill .score-max,:root.dark .talos-rating-score-pill .score-max,[data-theme=dark] .talos-rating-score-pill .score-max,[data-mode=dark] .talos-rating-score-pill .score-max,.dark .talos-rating-score-pill .score-max,.dark-theme .talos-rating-score-pill .score-max{color:var(--talos-text-muted, #94a3b8)}:root[data-theme=dark] .talos-rating-desc-text,:root.dark .talos-rating-desc-text,[data-theme=dark] .talos-rating-desc-text,[data-mode=dark] .talos-rating-desc-text,.dark .talos-rating-desc-text,.dark-theme .talos-rating-desc-text{color:var(--talos-text-secondary, #e2e8f0)}\n"] });
281
+ ], ngImport: i0, template: "<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;outline:none;border-radius:var(--talos-radius-sm, 4px);transition:box-shadow var(--talos-transition, .18s ease);--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fbbf24;--talos-rating-unfilled: var(--talos-border-default, #cbd5e1);--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem)}:host.variant-warning{--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fcd34d}:host.variant-primary{--talos-rating-fill: var(--talos-primary, #2563eb);--talos-rating-spark-alt: #60a5fa}:host.variant-danger{--talos-rating-fill: var(--talos-danger, #ef4444);--talos-rating-spark-alt: #f87171}:host.variant-success{--talos-rating-fill: var(--talos-success, #16a34a);--talos-rating-spark-alt: #4ade80}:host.variant-purple{--talos-rating-fill: var(--talos-purple, #8b5cf6);--talos-rating-spark-alt: #c084fc}:host.variant-custom{--talos-rating-fill: var(--talos-rating-custom-color, var(--talos-warning, #f59e0b));--talos-rating-spark-alt: var(--talos-rating-custom-color, #fbbf24)}:host.rating-sm{--talos-rating-size: 1.125rem;--talos-rating-gap: .25rem;--talos-rating-font-size: var(--talos-font-size-xs, .75rem);--particle-dist: 12px}:host.rating-md{--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem);--particle-dist: 16px}:host.rating-lg{--talos-rating-size: 1.75rem;--talos-rating-gap: .5rem;--talos-rating-font-size: var(--talos-font-size-md, .875rem);--particle-dist: 22px}:host.rating-xl{--talos-rating-size: 2.25rem;--talos-rating-gap: .625rem;--talos-rating-font-size: var(--talos-font-size-lg, 1rem);--particle-dist: 28px}:host.is-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}:host.is-readonly{cursor:default}:host:focus-visible{box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .2))}.talos-rating-container{display:inline-flex;align-items:center;gap:.625rem;-webkit-user-select:none;user-select:none;font-family:var(--talos-font-sans, inherit)}:host(.label-bottom) .talos-rating-container{flex-direction:column;align-items:flex-start;gap:.375rem}.talos-rating-stars{display:inline-flex;align-items:center;gap:var(--talos-rating-gap)}.talos-rating-star-btn{position:relative;background:transparent;border:none;padding:0;margin:0;line-height:0;display:inline-flex;align-items:center;justify-content:center;width:var(--talos-rating-size);height:var(--talos-rating-size);color:var(--talos-rating-unfilled);outline:none;cursor:default;transform-origin:center center;overflow:visible}:host(.is-interactive) .talos-rating-star-btn{cursor:pointer}.talos-rating-star-btn .talos-star-svg{width:var(--talos-rating-size);height:var(--talos-rating-size);stroke-width:1.75;stroke:var(--talos-rating-unfilled);fill:transparent;transition:color .15s ease,fill .15s ease,stroke .15s ease,transform .15s ease;transform-origin:center center}:host(.is-interactive:not(.anim-none)) .talos-rating-star-btn:hover .talos-star-svg{transform:scale(1.12)}.talos-rating-star-btn.is-active,.talos-rating-star-btn.is-hovered{color:var(--talos-rating-fill)}.talos-rating-star-btn.is-active .talos-star-svg,.talos-rating-star-btn.is-hovered .talos-star-svg{fill:var(--talos-rating-fill);stroke:var(--talos-rating-fill);filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.talos-rating-star-btn.is-animating .talos-star-svg{animation:talosStarPop .44s cubic-bezier(.175,.885,.32,1.275)}.talos-rating-star-btn:disabled{cursor:not-allowed}.talos-rating-particles{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:10}.talos-rating-particles .particle{position:absolute;top:0;left:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background-color:var(--talos-rating-fill);pointer-events:none;box-shadow:0 0 4px var(--talos-rating-fill);animation-duration:.5s;animation-timing-function:cubic-bezier(.165,.84,.44,1);animation-fill-mode:forwards}.talos-rating-particles .particle.p-1,.talos-rating-particles .particle.p-3,.talos-rating-particles .particle.p-5,.talos-rating-particles .particle.p-7{background-color:var(--talos-rating-spark-alt);box-shadow:0 0 5px var(--talos-rating-spark-alt)}.talos-rating-particles .particle.p-1{width:3.5px;height:3.5px;animation-name:burstNorthWest}.talos-rating-particles .particle.p-2{width:4.5px;height:4.5px;animation-name:burstNorth}.talos-rating-particles .particle.p-3{width:3px;height:3px;animation-name:burstNorthEast}.talos-rating-particles .particle.p-4{width:4.5px;height:4.5px;animation-name:burstEast}.talos-rating-particles .particle.p-5{width:3.5px;height:3.5px;animation-name:burstSouthEast}.talos-rating-particles .particle.p-6{width:4px;height:4px;animation-name:burstSouth}.talos-rating-particles .particle.p-7{width:3px;height:3px;animation-name:burstSouthWest}.talos-rating-particles .particle.p-8{width:4.5px;height:4.5px;animation-name:burstWest}@keyframes talosStarPop{0%{transform:scale(1)}30%{transform:scale(1.38) rotate(-6deg)}65%{transform:scale(.9) rotate(3deg)}85%{transform:scale(1) rotate(0)}to{transform:scale(1) rotate(0)}}@keyframes burstNorthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstNorth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}@keyframes burstNorthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstSouth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}.talos-rating-label-wrapper{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--talos-rating-font-size);line-height:1}.talos-rating-score-pill{display:inline-flex;align-items:baseline;padding:.15rem .45rem;font-weight:700;border-radius:var(--talos-radius-sm, 4px);background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-primary, #0f172a);border:1px solid var(--talos-border-subtle, #e2e8f0)}.talos-rating-score-pill .score-max{font-size:.85em;font-weight:500;color:var(--talos-text-muted, #64748b);margin-left:1px}.talos-rating-desc-text{font-weight:500;color:var(--talos-text-secondary, #334155)}:host(.anim-none) .talos-rating-star-btn,:host(.anim-none) .talos-star-svg,:host(.anim-none) .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}:host(.anim-subtle) .talos-rating-star-btn.is-animating .talos-star-svg{animation:none;transform:scale(1);transition:transform .15s ease}:host(.anim-pop) .talos-rating-particles{display:none!important}@media(prefers-reduced-motion:reduce){:host .talos-rating-star-btn,:host .talos-star-svg,:host .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}}:root[data-theme=dark],:root.dark,[data-theme=dark],[data-mode=dark],.dark,.dark-theme{--talos-rating-unfilled: rgba(255, 255, 255, .2)}:root[data-theme=dark] .talos-rating-star-btn .talos-star-svg,:root.dark .talos-rating-star-btn .talos-star-svg,[data-theme=dark] .talos-rating-star-btn .talos-star-svg,[data-mode=dark] .talos-rating-star-btn .talos-star-svg,.dark .talos-rating-star-btn .talos-star-svg,.dark-theme .talos-rating-star-btn .talos-star-svg{stroke:#ffffff40}:root[data-theme=dark] .talos-rating-score-pill,:root.dark .talos-rating-score-pill,[data-theme=dark] .talos-rating-score-pill,[data-mode=dark] .talos-rating-score-pill,.dark .talos-rating-score-pill,.dark-theme .talos-rating-score-pill{background-color:var(--talos-bg-subtle, #131d31);border-color:var(--talos-border-subtle, rgba(255, 255, 255, .08));color:var(--talos-text-primary, #f8fafc)}:root[data-theme=dark] .talos-rating-score-pill .score-max,:root.dark .talos-rating-score-pill .score-max,[data-theme=dark] .talos-rating-score-pill .score-max,[data-mode=dark] .talos-rating-score-pill .score-max,.dark .talos-rating-score-pill .score-max,.dark-theme .talos-rating-score-pill .score-max{color:var(--talos-text-muted, #94a3b8)}:root[data-theme=dark] .talos-rating-desc-text,:root.dark .talos-rating-desc-text,[data-theme=dark] .talos-rating-desc-text,[data-mode=dark] .talos-rating-desc-text,.dark .talos-rating-desc-text,.dark-theme .talos-rating-desc-text{color:var(--talos-text-secondary, #e2e8f0)}\n"] });
282
282
  }
283
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosRatingComponent, decorators: [{
284
284
  type: Component,
@@ -322,7 +322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
322
322
  '(focus)': 'onFocus()',
323
323
  '(blur)': 'onBlur()',
324
324
  '(mouseleave)': 'onMouseLeave()'
325
- }, template: "<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;outline:none;border-radius:var(--talos-radius-sm, 4px);transition:box-shadow var(--talos-transition, .18s ease);--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fbbf24;--talos-rating-unfilled: var(--talos-border-default, #cbd5e1);--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem)}:host.variant-warning{--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fcd34d}:host.variant-primary{--talos-rating-fill: var(--talos-primary, #2563eb);--talos-rating-spark-alt: #60a5fa}:host.variant-danger{--talos-rating-fill: var(--talos-danger, #ef4444);--talos-rating-spark-alt: #f87171}:host.variant-success{--talos-rating-fill: var(--talos-success, #16a34a);--talos-rating-spark-alt: #4ade80}:host.variant-purple{--talos-rating-fill: var(--talos-purple, #8b5cf6);--talos-rating-spark-alt: #c084fc}:host.variant-custom{--talos-rating-fill: var(--talos-rating-custom-color, var(--talos-warning, #f59e0b));--talos-rating-spark-alt: var(--talos-rating-custom-color, #fbbf24)}:host.rating-sm{--talos-rating-size: 1.125rem;--talos-rating-gap: .25rem;--talos-rating-font-size: var(--talos-font-size-xs, .75rem);--particle-dist: 12px}:host.rating-md{--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem);--particle-dist: 16px}:host.rating-lg{--talos-rating-size: 1.75rem;--talos-rating-gap: .5rem;--talos-rating-font-size: var(--talos-font-size-md, .875rem);--particle-dist: 22px}:host.rating-xl{--talos-rating-size: 2.25rem;--talos-rating-gap: .625rem;--talos-rating-font-size: var(--talos-font-size-lg, 1rem);--particle-dist: 28px}:host.is-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}:host.is-readonly{cursor:default}:host:focus-visible{box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .2))}.talos-rating-container{display:inline-flex;align-items:center;gap:.625rem;-webkit-user-select:none;user-select:none;font-family:var(--talos-font-sans, inherit)}:host(.label-bottom) .talos-rating-container{flex-direction:column;align-items:flex-start;gap:.375rem}.talos-rating-stars{display:inline-flex;align-items:center;gap:var(--talos-rating-gap)}.talos-rating-star-btn{position:relative;background:transparent;border:none;padding:0;margin:0;line-height:0;display:inline-flex;align-items:center;justify-content:center;width:var(--talos-rating-size);height:var(--talos-rating-size);color:var(--talos-rating-unfilled);outline:none;cursor:default;transform-origin:center center;overflow:visible}:host(.is-interactive) .talos-rating-star-btn{cursor:pointer}.talos-rating-star-btn .talos-star-svg{width:var(--talos-rating-size);height:var(--talos-rating-size);stroke-width:1.75;stroke:var(--talos-rating-unfilled);fill:transparent;transition:color .15s ease,fill .15s ease,stroke .15s ease,transform .15s ease;transform-origin:center center}:host(.is-interactive:not(.anim-none)) .talos-rating-star-btn:hover .talos-star-svg{transform:scale(1.12)}.talos-rating-star-btn.is-active,.talos-rating-star-btn.is-hovered{color:var(--talos-rating-fill)}.talos-rating-star-btn.is-active .talos-star-svg,.talos-rating-star-btn.is-hovered .talos-star-svg{fill:var(--talos-rating-fill);stroke:var(--talos-rating-fill);filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.talos-rating-star-btn.is-animating .talos-star-svg{animation:talosStarPop .44s cubic-bezier(.175,.885,.32,1.275)}.talos-rating-star-btn:disabled{cursor:not-allowed}.talos-rating-particles{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:10}.talos-rating-particles .particle{position:absolute;top:0;left:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background-color:var(--talos-rating-fill);pointer-events:none;box-shadow:0 0 4px var(--talos-rating-fill);animation-duration:.5s;animation-timing-function:cubic-bezier(.165,.84,.44,1);animation-fill-mode:forwards}.talos-rating-particles .particle.p-1,.talos-rating-particles .particle.p-3,.talos-rating-particles .particle.p-5,.talos-rating-particles .particle.p-7{background-color:var(--talos-rating-spark-alt);box-shadow:0 0 5px var(--talos-rating-spark-alt)}.talos-rating-particles .particle.p-1{width:3.5px;height:3.5px;animation-name:burstNorthWest}.talos-rating-particles .particle.p-2{width:4.5px;height:4.5px;animation-name:burstNorth}.talos-rating-particles .particle.p-3{width:3px;height:3px;animation-name:burstNorthEast}.talos-rating-particles .particle.p-4{width:4.5px;height:4.5px;animation-name:burstEast}.talos-rating-particles .particle.p-5{width:3.5px;height:3.5px;animation-name:burstSouthEast}.talos-rating-particles .particle.p-6{width:4px;height:4px;animation-name:burstSouth}.talos-rating-particles .particle.p-7{width:3px;height:3px;animation-name:burstSouthWest}.talos-rating-particles .particle.p-8{width:4.5px;height:4.5px;animation-name:burstWest}@keyframes talosStarPop{0%{transform:scale(1)}30%{transform:scale(1.38) rotate(-6deg)}65%{transform:scale(.9) rotate(3deg)}85%{transform:scale(1.08) rotate(0)}to{transform:scale(1) rotate(0)}}@keyframes burstNorthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstNorth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}@keyframes burstNorthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstSouth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}.talos-rating-label-wrapper{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--talos-rating-font-size);line-height:1}.talos-rating-score-pill{display:inline-flex;align-items:baseline;padding:.15rem .45rem;font-weight:700;border-radius:var(--talos-radius-sm, 4px);background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-primary, #0f172a);border:1px solid var(--talos-border-subtle, #e2e8f0)}.talos-rating-score-pill .score-max{font-size:.85em;font-weight:500;color:var(--talos-text-muted, #64748b);margin-left:1px}.talos-rating-desc-text{font-weight:500;color:var(--talos-text-secondary, #334155)}:host(.anim-none) .talos-rating-star-btn,:host(.anim-none) .talos-star-svg,:host(.anim-none) .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}:host(.anim-subtle) .talos-rating-star-btn.is-animating .talos-star-svg{animation:none;transform:scale(1.08);transition:transform .15s ease}:host(.anim-pop) .talos-rating-particles{display:none!important}@media(prefers-reduced-motion:reduce){:host .talos-rating-star-btn,:host .talos-star-svg,:host .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}}:root[data-theme=dark],:root.dark,[data-theme=dark],[data-mode=dark],.dark,.dark-theme{--talos-rating-unfilled: rgba(255, 255, 255, .2)}:root[data-theme=dark] .talos-rating-star-btn .talos-star-svg,:root.dark .talos-rating-star-btn .talos-star-svg,[data-theme=dark] .talos-rating-star-btn .talos-star-svg,[data-mode=dark] .talos-rating-star-btn .talos-star-svg,.dark .talos-rating-star-btn .talos-star-svg,.dark-theme .talos-rating-star-btn .talos-star-svg{stroke:#ffffff40}:root[data-theme=dark] .talos-rating-score-pill,:root.dark .talos-rating-score-pill,[data-theme=dark] .talos-rating-score-pill,[data-mode=dark] .talos-rating-score-pill,.dark .talos-rating-score-pill,.dark-theme .talos-rating-score-pill{background-color:var(--talos-bg-subtle, #131d31);border-color:var(--talos-border-subtle, rgba(255, 255, 255, .08));color:var(--talos-text-primary, #f8fafc)}:root[data-theme=dark] .talos-rating-score-pill .score-max,:root.dark .talos-rating-score-pill .score-max,[data-theme=dark] .talos-rating-score-pill .score-max,[data-mode=dark] .talos-rating-score-pill .score-max,.dark .talos-rating-score-pill .score-max,.dark-theme .talos-rating-score-pill .score-max{color:var(--talos-text-muted, #94a3b8)}:root[data-theme=dark] .talos-rating-desc-text,:root.dark .talos-rating-desc-text,[data-theme=dark] .talos-rating-desc-text,[data-mode=dark] .talos-rating-desc-text,.dark .talos-rating-desc-text,.dark-theme .talos-rating-desc-text{color:var(--talos-text-secondary, #e2e8f0)}\n"] }]
325
+ }, template: "<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host{display:inline-flex;vertical-align:middle;outline:none;border-radius:var(--talos-radius-sm, 4px);transition:box-shadow var(--talos-transition, .18s ease);--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fbbf24;--talos-rating-unfilled: var(--talos-border-default, #cbd5e1);--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem)}:host.variant-warning{--talos-rating-fill: var(--talos-warning, #f59e0b);--talos-rating-spark-alt: #fcd34d}:host.variant-primary{--talos-rating-fill: var(--talos-primary, #2563eb);--talos-rating-spark-alt: #60a5fa}:host.variant-danger{--talos-rating-fill: var(--talos-danger, #ef4444);--talos-rating-spark-alt: #f87171}:host.variant-success{--talos-rating-fill: var(--talos-success, #16a34a);--talos-rating-spark-alt: #4ade80}:host.variant-purple{--talos-rating-fill: var(--talos-purple, #8b5cf6);--talos-rating-spark-alt: #c084fc}:host.variant-custom{--talos-rating-fill: var(--talos-rating-custom-color, var(--talos-warning, #f59e0b));--talos-rating-spark-alt: var(--talos-rating-custom-color, #fbbf24)}:host.rating-sm{--talos-rating-size: 1.125rem;--talos-rating-gap: .25rem;--talos-rating-font-size: var(--talos-font-size-xs, .75rem);--particle-dist: 12px}:host.rating-md{--talos-rating-size: 1.375rem;--talos-rating-gap: .375rem;--talos-rating-font-size: var(--talos-font-size-sm, .8125rem);--particle-dist: 16px}:host.rating-lg{--talos-rating-size: 1.75rem;--talos-rating-gap: .5rem;--talos-rating-font-size: var(--talos-font-size-md, .875rem);--particle-dist: 22px}:host.rating-xl{--talos-rating-size: 2.25rem;--talos-rating-gap: .625rem;--talos-rating-font-size: var(--talos-font-size-lg, 1rem);--particle-dist: 28px}:host.is-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}:host.is-readonly{cursor:default}:host:focus-visible{box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .2))}.talos-rating-container{display:inline-flex;align-items:center;gap:.625rem;-webkit-user-select:none;user-select:none;font-family:var(--talos-font-sans, inherit)}:host(.label-bottom) .talos-rating-container{flex-direction:column;align-items:flex-start;gap:.375rem}.talos-rating-stars{display:inline-flex;align-items:center;gap:var(--talos-rating-gap)}.talos-rating-star-btn{position:relative;background:transparent;border:none;padding:0;margin:0;line-height:0;display:inline-flex;align-items:center;justify-content:center;width:var(--talos-rating-size);height:var(--talos-rating-size);color:var(--talos-rating-unfilled);outline:none;cursor:default;transform-origin:center center;overflow:visible}:host(.is-interactive) .talos-rating-star-btn{cursor:pointer}.talos-rating-star-btn .talos-star-svg{width:var(--talos-rating-size);height:var(--talos-rating-size);stroke-width:1.75;stroke:var(--talos-rating-unfilled);fill:transparent;transition:color .15s ease,fill .15s ease,stroke .15s ease,transform .15s ease;transform-origin:center center}:host(.is-interactive:not(.anim-none)) .talos-rating-star-btn:hover .talos-star-svg{transform:scale(1.12)}.talos-rating-star-btn.is-active,.talos-rating-star-btn.is-hovered{color:var(--talos-rating-fill)}.talos-rating-star-btn.is-active .talos-star-svg,.talos-rating-star-btn.is-hovered .talos-star-svg{fill:var(--talos-rating-fill);stroke:var(--talos-rating-fill);filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.talos-rating-star-btn.is-animating .talos-star-svg{animation:talosStarPop .44s cubic-bezier(.175,.885,.32,1.275)}.talos-rating-star-btn:disabled{cursor:not-allowed}.talos-rating-particles{position:absolute;top:50%;left:50%;width:0;height:0;pointer-events:none;z-index:10}.talos-rating-particles .particle{position:absolute;top:0;left:0;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background-color:var(--talos-rating-fill);pointer-events:none;box-shadow:0 0 4px var(--talos-rating-fill);animation-duration:.5s;animation-timing-function:cubic-bezier(.165,.84,.44,1);animation-fill-mode:forwards}.talos-rating-particles .particle.p-1,.talos-rating-particles .particle.p-3,.talos-rating-particles .particle.p-5,.talos-rating-particles .particle.p-7{background-color:var(--talos-rating-spark-alt);box-shadow:0 0 5px var(--talos-rating-spark-alt)}.talos-rating-particles .particle.p-1{width:3.5px;height:3.5px;animation-name:burstNorthWest}.talos-rating-particles .particle.p-2{width:4.5px;height:4.5px;animation-name:burstNorth}.talos-rating-particles .particle.p-3{width:3px;height:3px;animation-name:burstNorthEast}.talos-rating-particles .particle.p-4{width:4.5px;height:4.5px;animation-name:burstEast}.talos-rating-particles .particle.p-5{width:3.5px;height:3.5px;animation-name:burstSouthEast}.talos-rating-particles .particle.p-6{width:4px;height:4px;animation-name:burstSouth}.talos-rating-particles .particle.p-7{width:3px;height:3px;animation-name:burstSouthWest}.talos-rating-particles .particle.p-8{width:4.5px;height:4.5px;animation-name:burstWest}@keyframes talosStarPop{0%{transform:scale(1)}30%{transform:scale(1.38) rotate(-6deg)}65%{transform:scale(.9) rotate(3deg)}85%{transform:scale(1) rotate(0)}to{transform:scale(1) rotate(0)}}@keyframes burstNorthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstNorth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}@keyframes burstNorthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * -.7)) scale(0);opacity:0}}@keyframes burstEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthEast{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * .7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstSouth{0%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(var(--particle-dist, 16px)) scale(0);opacity:0}}@keyframes burstSouthWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -.7),calc(var(--particle-dist, 16px) * .7)) scale(0);opacity:0}}@keyframes burstWest{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(var(--particle-dist, 16px) * -1)) scale(0);opacity:0}}.talos-rating-label-wrapper{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--talos-rating-font-size);line-height:1}.talos-rating-score-pill{display:inline-flex;align-items:baseline;padding:.15rem .45rem;font-weight:700;border-radius:var(--talos-radius-sm, 4px);background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-primary, #0f172a);border:1px solid var(--talos-border-subtle, #e2e8f0)}.talos-rating-score-pill .score-max{font-size:.85em;font-weight:500;color:var(--talos-text-muted, #64748b);margin-left:1px}.talos-rating-desc-text{font-weight:500;color:var(--talos-text-secondary, #334155)}:host(.anim-none) .talos-rating-star-btn,:host(.anim-none) .talos-star-svg,:host(.anim-none) .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}:host(.anim-subtle) .talos-rating-star-btn.is-animating .talos-star-svg{animation:none;transform:scale(1);transition:transform .15s ease}:host(.anim-pop) .talos-rating-particles{display:none!important}@media(prefers-reduced-motion:reduce){:host .talos-rating-star-btn,:host .talos-star-svg,:host .talos-rating-particles{animation:none!important;transition:none!important;transform:none!important}}:root[data-theme=dark],:root.dark,[data-theme=dark],[data-mode=dark],.dark,.dark-theme{--talos-rating-unfilled: rgba(255, 255, 255, .2)}:root[data-theme=dark] .talos-rating-star-btn .talos-star-svg,:root.dark .talos-rating-star-btn .talos-star-svg,[data-theme=dark] .talos-rating-star-btn .talos-star-svg,[data-mode=dark] .talos-rating-star-btn .talos-star-svg,.dark .talos-rating-star-btn .talos-star-svg,.dark-theme .talos-rating-star-btn .talos-star-svg{stroke:#ffffff40}:root[data-theme=dark] .talos-rating-score-pill,:root.dark .talos-rating-score-pill,[data-theme=dark] .talos-rating-score-pill,[data-mode=dark] .talos-rating-score-pill,.dark .talos-rating-score-pill,.dark-theme .talos-rating-score-pill{background-color:var(--talos-bg-subtle, #131d31);border-color:var(--talos-border-subtle, rgba(255, 255, 255, .08));color:var(--talos-text-primary, #f8fafc)}:root[data-theme=dark] .talos-rating-score-pill .score-max,:root.dark .talos-rating-score-pill .score-max,[data-theme=dark] .talos-rating-score-pill .score-max,[data-mode=dark] .talos-rating-score-pill .score-max,.dark .talos-rating-score-pill .score-max,.dark-theme .talos-rating-score-pill .score-max{color:var(--talos-text-muted, #94a3b8)}:root[data-theme=dark] .talos-rating-desc-text,:root.dark .talos-rating-desc-text,[data-theme=dark] .talos-rating-desc-text,[data-mode=dark] .talos-rating-desc-text,.dark .talos-rating-desc-text,.dark-theme .talos-rating-desc-text{color:var(--talos-text-secondary, #e2e8f0)}\n"] }]
326
326
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], allowClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowClear", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }], tooltips: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltips", required: false }] }], showScore: [{ type: i0.Input, args: [{ isSignal: true, alias: "showScore", required: false }] }], showLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLabel", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], rateChange: [{ type: i0.Output, args: ["rateChange"] }], hoverChange: [{ type: i0.Output, args: ["hoverChange"] }], cleared: [{ type: i0.Output, args: ["cleared"] }] } });
327
327
 
328
328
  class TalosRatingModule {
@@ -1 +1 @@
1
- {"version":3,"file":"weeehaoooz-talos-ui-form-rating.mjs","sources":["../../../projects/talos-ui/form/rating/rating.component.ts","../../../projects/talos-ui/form/rating/rating.component.html","../../../projects/talos-ui/form/rating/rating.module.ts","../../../projects/talos-ui/form/rating/weeehaoooz-talos-ui-form-rating.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RatingAnimationMode,\n RatingChangeEvent,\n RatingHoverEvent,\n RatingLabelPosition,\n RatingSize,\n RatingVariant\n} from './rating.types';\n\nlet ratingCounter = 0;\n\n@Component({\n selector: 'talos-rating, talos-rate',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRatingComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-rating-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'effectiveReadonly()',\n '[class.is-interactive]': '!effectiveDisabled() && !effectiveReadonly()',\n '[class.is-focused]': 'isFocused()',\n '[class.rating-sm]': 'size() === \"sm\"',\n '[class.rating-md]': 'size() === \"md\"',\n '[class.rating-lg]': 'size() === \"lg\"',\n '[class.rating-xl]': 'size() === \"xl\"',\n '[class.variant-warning]': 'variant() === \"warning\"',\n '[class.variant-primary]': 'variant() === \"primary\"',\n '[class.variant-danger]': 'variant() === \"danger\"',\n '[class.variant-success]': 'variant() === \"success\"',\n '[class.variant-purple]': 'variant() === \"purple\"',\n '[class.variant-custom]': 'variant() === \"custom\"',\n '[class.label-bottom]': 'labelPosition() === \"bottom\"',\n '[class.anim-none]': 'effectiveAnimation() === \"none\"',\n '[class.anim-subtle]': 'effectiveAnimation() === \"subtle\"',\n '[class.anim-pop]': 'effectiveAnimation() === \"pop\"',\n '[class.anim-particles]': 'effectiveAnimation() === \"particles\"',\n '[class.anim-full]': 'effectiveAnimation() === \"full\"',\n '[attr.role]': '\"slider\"',\n '[attr.tabindex]': 'effectiveDisabled() ? -1 : 0',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuenow]': 'currentValue()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-readonly]': 'effectiveReadonly()',\n '[attr.aria-disabled]': 'effectiveDisabled()',\n '(keydown)': 'onKeyDown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(mouseleave)': 'onMouseLeave()'\n },\n templateUrl: './rating.component.html',\n styleUrl: './rating.component.scss'\n})\nexport class TalosRatingComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private animationTimeout: ReturnType<typeof setTimeout> | null = null;\n\n // --- Inputs ---\n /** Current numerical rating value */\n readonly value = input<number>(0);\n\n /** Maximum rating count / total stars (default: 5) */\n readonly max = input<number>(5);\n\n /** Whether clicking the current value resets/clears to 0 (default: true) */\n readonly allowClear = input<boolean>(true);\n\n /** Read-only display mode */\n readonly readonly = input<boolean>(false);\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Sizing scale ('sm' | 'md' | 'lg' | 'xl') */\n readonly size = input<RatingSize>('md');\n\n /** Visual color variant ('warning' | 'primary' | 'danger' | 'success' | 'purple' | 'custom') */\n readonly variant = input<RatingVariant>('warning');\n\n /** Custom HEX or CSS color code when variant is 'custom' or overriding */\n readonly color = input<string>('');\n\n /** Animation mode ('none' | 'subtle' | 'pop' | 'particles' | 'full') */\n readonly animation = input<RatingAnimationMode>('full');\n\n /** Whether animations are enabled (default: true) */\n readonly animated = input<boolean>(true);\n\n /** Tooltip/label strings for each star index (1-based) */\n readonly tooltips = input<string[]>([]);\n\n /** Whether to show numeric score badge */\n readonly showScore = input<boolean>(false);\n\n /** Whether to show text label from tooltips or current state */\n readonly showLabel = input<boolean>(false);\n\n /** Position of score/tooltip label */\n readonly labelPosition = input<RatingLabelPosition>('right');\n\n /** Component HTML ID */\n readonly id = input<string>('');\n\n /** Accessibility label */\n readonly ariaLabel = input<string>('Rating');\n\n // --- Outputs ---\n /** Emitted when value changes */\n readonly valueChange = output<number>();\n\n /** Emitted with old and new values */\n readonly rateChange = output<RatingChangeEvent>();\n\n /** Emitted when hovering over rating items */\n readonly hoverChange = output<RatingHoverEvent>();\n\n /** Emitted when rating is cleared */\n readonly cleared = output<void>();\n\n // --- Internal State ---\n private readonly defaultId = `talos-rating-${++ratingCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<number>(0);\n readonly hoverValue = signal<number | null>(null);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly isFocused = signal<boolean>(false);\n\n /** Index of currently pop-animating star */\n readonly animatingIndex = signal<number | null>(null);\n\n /** Index of currently particle-bursting star */\n readonly activeBurstIndex = signal<number | null>(null);\n\n // --- Computed States ---\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n readonly effectiveReadonly = computed(() => this.readonly());\n\n readonly effectiveAnimation = computed<RatingAnimationMode>(() => {\n if (!this.animated()) return 'none';\n return this.animation();\n });\n\n readonly showParticles = computed(() => {\n const anim = this.effectiveAnimation();\n return anim === 'particles' || anim === 'full';\n });\n\n readonly showPop = computed(() => {\n const anim = this.effectiveAnimation();\n return anim === 'pop' || anim === 'full';\n });\n\n readonly currentValue = computed(() => {\n const internal = this.internalValue();\n const prop = this.value();\n const val = internal !== 0 || this.isTouched() ? internal : prop;\n return Math.max(0, Math.min(this.max(), Math.round(Number(val) || 0)));\n });\n\n readonly displayValue = computed(() => {\n const hover = this.hoverValue();\n if (hover !== null) {\n return hover;\n }\n return this.currentValue();\n });\n\n /** Array of star item indices [1, 2, ..., max] */\n readonly items = computed(() => {\n const count = Math.max(1, Math.floor(this.max()));\n return Array.from({ length: count }, (_, i) => i + 1);\n });\n\n /** Active tooltip text based on current display value */\n readonly activeTooltip = computed(() => {\n const list = this.tooltips();\n if (!list || list.length === 0) return '';\n const val = this.displayValue();\n if (val <= 0) return '';\n const index = Math.min(list.length - 1, Math.max(0, Math.ceil(val) - 1));\n return list[index] || '';\n });\n\n // --- ControlValueAccessor ---\n private onChange: (val: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: number): void {\n const num = val === null || val === undefined || isNaN(val) ? 0 : Math.round(Number(val));\n this.internalValue.set(Math.max(0, Math.min(this.max(), num)));\n }\n\n registerOnChange(fn: (val: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n // --- Hover and Click Handlers ---\n onItemMouseEnter(index: number): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n this.hoverValue.set(index);\n this.hoverChange.emit({ value: index, index });\n }\n\n onItemClick(index: number): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n\n const current = this.currentValue();\n let nextVal = index;\n\n // Clearable toggle on re-clicking the current rating\n if (this.allowClear() && current === index) {\n nextVal = 0;\n this.cleared.emit();\n } else {\n // Trigger click pop & particle explosion if animation enabled\n if (this.effectiveAnimation() !== 'none') {\n this.triggerClickEffects(index);\n }\n }\n\n this.setValue(nextVal);\n }\n\n onMouseLeave(): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n this.hoverValue.set(null);\n this.hoverChange.emit({ value: 0, index: -1 });\n }\n\n private triggerClickEffects(index: number): void {\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n this.animationTimeout = null;\n }\n\n this.animatingIndex.set(index);\n this.activeBurstIndex.set(index);\n\n this.animationTimeout = setTimeout(() => {\n this.animatingIndex.set(null);\n this.activeBurstIndex.set(null);\n this.animationTimeout = null;\n }, 600);\n }\n\n // --- Keyboard Navigation ---\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n\n const current = this.currentValue();\n let nextVal = current;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n nextVal = Math.min(this.max(), current + 1);\n if (this.effectiveAnimation() !== 'none' && nextVal > current) {\n this.triggerClickEffects(nextVal);\n }\n this.setValue(nextVal);\n break;\n\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n nextVal = Math.max(0, current - 1);\n this.setValue(nextVal);\n break;\n\n case 'Home':\n event.preventDefault();\n nextVal = 0;\n this.setValue(nextVal);\n break;\n\n case 'End':\n event.preventDefault();\n nextVal = this.max();\n if (this.effectiveAnimation() !== 'none') {\n this.triggerClickEffects(nextVal);\n }\n this.setValue(nextVal);\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.effectiveAnimation() !== 'none' && current > 0) {\n this.triggerClickEffects(current);\n }\n this.setValue(current);\n break;\n }\n }\n\n onFocus(): void {\n if (this.effectiveDisabled()) return;\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.markAsTouched();\n }\n\n private setValue(val: number): void {\n const oldValue = this.currentValue();\n const clamped = Math.max(0, Math.min(this.max(), Math.round(val)));\n\n this.internalValue.set(clamped);\n this.hoverValue.set(null);\n this.onChange(clamped);\n this.valueChange.emit(clamped);\n this.rateChange.emit({ value: clamped, oldValue });\n this.markAsTouched();\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n isItemActive(index: number): boolean {\n return this.displayValue() >= index;\n }\n}\n","<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosRatingComponent } from './rating.component';\n\n@NgModule({\n imports: [TalosRatingComponent],\n exports: [TalosRatingComponent]\n})\nexport class TalosRatingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"weeehaoooz-talos-ui-form-rating.mjs","sources":["../../../projects/talos-ui/form/rating/rating.component.ts","../../../projects/talos-ui/form/rating/rating.component.html","../../../projects/talos-ui/form/rating/rating.module.ts","../../../projects/talos-ui/form/rating/weeehaoooz-talos-ui-form-rating.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RatingAnimationMode,\n RatingChangeEvent,\n RatingHoverEvent,\n RatingLabelPosition,\n RatingSize,\n RatingVariant\n} from './rating.types';\n\nlet ratingCounter = 0;\n\n@Component({\n selector: 'talos-rating, talos-rate',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRatingComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-rating-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'effectiveReadonly()',\n '[class.is-interactive]': '!effectiveDisabled() && !effectiveReadonly()',\n '[class.is-focused]': 'isFocused()',\n '[class.rating-sm]': 'size() === \"sm\"',\n '[class.rating-md]': 'size() === \"md\"',\n '[class.rating-lg]': 'size() === \"lg\"',\n '[class.rating-xl]': 'size() === \"xl\"',\n '[class.variant-warning]': 'variant() === \"warning\"',\n '[class.variant-primary]': 'variant() === \"primary\"',\n '[class.variant-danger]': 'variant() === \"danger\"',\n '[class.variant-success]': 'variant() === \"success\"',\n '[class.variant-purple]': 'variant() === \"purple\"',\n '[class.variant-custom]': 'variant() === \"custom\"',\n '[class.label-bottom]': 'labelPosition() === \"bottom\"',\n '[class.anim-none]': 'effectiveAnimation() === \"none\"',\n '[class.anim-subtle]': 'effectiveAnimation() === \"subtle\"',\n '[class.anim-pop]': 'effectiveAnimation() === \"pop\"',\n '[class.anim-particles]': 'effectiveAnimation() === \"particles\"',\n '[class.anim-full]': 'effectiveAnimation() === \"full\"',\n '[attr.role]': '\"slider\"',\n '[attr.tabindex]': 'effectiveDisabled() ? -1 : 0',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuenow]': 'currentValue()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-readonly]': 'effectiveReadonly()',\n '[attr.aria-disabled]': 'effectiveDisabled()',\n '(keydown)': 'onKeyDown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(mouseleave)': 'onMouseLeave()'\n },\n templateUrl: './rating.component.html',\n styleUrl: './rating.component.scss'\n})\nexport class TalosRatingComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private animationTimeout: ReturnType<typeof setTimeout> | null = null;\n\n // --- Inputs ---\n /** Current numerical rating value */\n readonly value = input<number>(0);\n\n /** Maximum rating count / total stars (default: 5) */\n readonly max = input<number>(5);\n\n /** Whether clicking the current value resets/clears to 0 (default: true) */\n readonly allowClear = input<boolean>(true);\n\n /** Read-only display mode */\n readonly readonly = input<boolean>(false);\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Sizing scale ('sm' | 'md' | 'lg' | 'xl') */\n readonly size = input<RatingSize>('md');\n\n /** Visual color variant ('warning' | 'primary' | 'danger' | 'success' | 'purple' | 'custom') */\n readonly variant = input<RatingVariant>('warning');\n\n /** Custom HEX or CSS color code when variant is 'custom' or overriding */\n readonly color = input<string>('');\n\n /** Animation mode ('none' | 'subtle' | 'pop' | 'particles' | 'full') */\n readonly animation = input<RatingAnimationMode>('full');\n\n /** Whether animations are enabled (default: true) */\n readonly animated = input<boolean>(true);\n\n /** Tooltip/label strings for each star index (1-based) */\n readonly tooltips = input<string[]>([]);\n\n /** Whether to show numeric score badge */\n readonly showScore = input<boolean>(false);\n\n /** Whether to show text label from tooltips or current state */\n readonly showLabel = input<boolean>(false);\n\n /** Position of score/tooltip label */\n readonly labelPosition = input<RatingLabelPosition>('right');\n\n /** Component HTML ID */\n readonly id = input<string>('');\n\n /** Accessibility label */\n readonly ariaLabel = input<string>('Rating');\n\n // --- Outputs ---\n /** Emitted when value changes */\n readonly valueChange = output<number>();\n\n /** Emitted with old and new values */\n readonly rateChange = output<RatingChangeEvent>();\n\n /** Emitted when hovering over rating items */\n readonly hoverChange = output<RatingHoverEvent>();\n\n /** Emitted when rating is cleared */\n readonly cleared = output<void>();\n\n // --- Internal State ---\n private readonly defaultId = `talos-rating-${++ratingCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<number>(0);\n readonly hoverValue = signal<number | null>(null);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly isFocused = signal<boolean>(false);\n\n /** Index of currently pop-animating star */\n readonly animatingIndex = signal<number | null>(null);\n\n /** Index of currently particle-bursting star */\n readonly activeBurstIndex = signal<number | null>(null);\n\n // --- Computed States ---\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n readonly effectiveReadonly = computed(() => this.readonly());\n\n readonly effectiveAnimation = computed<RatingAnimationMode>(() => {\n if (!this.animated()) return 'none';\n return this.animation();\n });\n\n readonly showParticles = computed(() => {\n const anim = this.effectiveAnimation();\n return anim === 'particles' || anim === 'full';\n });\n\n readonly showPop = computed(() => {\n const anim = this.effectiveAnimation();\n return anim === 'pop' || anim === 'full';\n });\n\n readonly currentValue = computed(() => {\n const internal = this.internalValue();\n const prop = this.value();\n const val = internal !== 0 || this.isTouched() ? internal : prop;\n return Math.max(0, Math.min(this.max(), Math.round(Number(val) || 0)));\n });\n\n readonly displayValue = computed(() => {\n const hover = this.hoverValue();\n if (hover !== null) {\n return hover;\n }\n return this.currentValue();\n });\n\n /** Array of star item indices [1, 2, ..., max] */\n readonly items = computed(() => {\n const count = Math.max(1, Math.floor(this.max()));\n return Array.from({ length: count }, (_, i) => i + 1);\n });\n\n /** Active tooltip text based on current display value */\n readonly activeTooltip = computed(() => {\n const list = this.tooltips();\n if (!list || list.length === 0) return '';\n const val = this.displayValue();\n if (val <= 0) return '';\n const index = Math.min(list.length - 1, Math.max(0, Math.ceil(val) - 1));\n return list[index] || '';\n });\n\n // --- ControlValueAccessor ---\n private onChange: (val: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: number): void {\n const num = val === null || val === undefined || isNaN(val) ? 0 : Math.round(Number(val));\n this.internalValue.set(Math.max(0, Math.min(this.max(), num)));\n }\n\n registerOnChange(fn: (val: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n // --- Hover and Click Handlers ---\n onItemMouseEnter(index: number): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n this.hoverValue.set(index);\n this.hoverChange.emit({ value: index, index });\n }\n\n onItemClick(index: number): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n\n const current = this.currentValue();\n let nextVal = index;\n\n // Clearable toggle on re-clicking the current rating\n if (this.allowClear() && current === index) {\n nextVal = 0;\n this.cleared.emit();\n } else {\n // Trigger click pop & particle explosion if animation enabled\n if (this.effectiveAnimation() !== 'none') {\n this.triggerClickEffects(index);\n }\n }\n\n this.setValue(nextVal);\n }\n\n onMouseLeave(): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n this.hoverValue.set(null);\n this.hoverChange.emit({ value: 0, index: -1 });\n }\n\n private triggerClickEffects(index: number): void {\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n this.animationTimeout = null;\n }\n\n this.animatingIndex.set(index);\n this.activeBurstIndex.set(index);\n\n this.animationTimeout = setTimeout(() => {\n this.animatingIndex.set(null);\n this.activeBurstIndex.set(null);\n this.animationTimeout = null;\n }, 600);\n }\n\n // --- Keyboard Navigation ---\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n\n const current = this.currentValue();\n let nextVal = current;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n nextVal = Math.min(this.max(), current + 1);\n if (this.effectiveAnimation() !== 'none' && nextVal > current) {\n this.triggerClickEffects(nextVal);\n }\n this.setValue(nextVal);\n break;\n\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n nextVal = Math.max(0, current - 1);\n this.setValue(nextVal);\n break;\n\n case 'Home':\n event.preventDefault();\n nextVal = 0;\n this.setValue(nextVal);\n break;\n\n case 'End':\n event.preventDefault();\n nextVal = this.max();\n if (this.effectiveAnimation() !== 'none') {\n this.triggerClickEffects(nextVal);\n }\n this.setValue(nextVal);\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.effectiveAnimation() !== 'none' && current > 0) {\n this.triggerClickEffects(current);\n }\n this.setValue(current);\n break;\n }\n }\n\n onFocus(): void {\n if (this.effectiveDisabled()) return;\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.markAsTouched();\n }\n\n private setValue(val: number): void {\n const oldValue = this.currentValue();\n const clamped = Math.max(0, Math.min(this.max(), Math.round(val)));\n\n this.internalValue.set(clamped);\n this.hoverValue.set(null);\n this.onChange(clamped);\n this.valueChange.emit(clamped);\n this.rateChange.emit({ value: clamped, oldValue });\n this.markAsTouched();\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n isItemActive(index: number): boolean {\n return this.displayValue() >= index;\n }\n}\n","<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosRatingComponent } from './rating.component';\n\n@NgModule({\n imports: [TalosRatingComponent],\n exports: [TalosRatingComponent]\n})\nexport class TalosRatingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}