{"version":3,"file":"craftedcode-dev-ngx-analog-clock.mjs","sources":["../../../projects/ngx-analog-clock/src/lib/analog-clock.component.ts","../../../projects/ngx-analog-clock/src/lib/analog-clock.component.html","../../../projects/ngx-analog-clock/src/craftedcode-dev-ngx-analog-clock.ts"],"sourcesContent":["import { Component, Input, OnInit, OnDestroy, OnChanges, SimpleChanges, signal, computed, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ClockTheme, ClockCustomColors, DigitalDisplayConfig, AnalogClockConfig, HandConfig, DisplayConfig, LabelConfig, } from './analog-clock.interface';\n\ninterface Position {\n\tx: number;\n\ty: number;\n}\n\ninterface MarkerCoords {\n\tx1: number;\n\ty1: number;\n\tx2: number;\n\ty2: number;\n}\n\n@Component({\n\tselector: 'ngx-analog-clock',\n\tstandalone: true,\n\timports: [CommonModule],\n\ttemplateUrl: './analog-clock.component.html',\n\tstyleUrl: './analog-clock.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AnalogClockComponent implements OnInit, OnDestroy, OnChanges {\n\n\tconstructor() {}\n\n\tsecondHandTailPosition = computed(() => {\n\t\tconst angle = this.secondAngle();\n\t\tconst tailLength = 0.2;\n\t\treturn {\n\t\t\tx: this.center() - Math.cos(angle) * this.radius() * tailLength,\n\t\t\ty: this.center() - Math.sin(angle) * this.radius() * tailLength\n\t\t};\n\t});\n\n\t@Input() size: number = 200;\n\t@Input() theme: ClockTheme = 'light';\n\t@Input() timezone: string = 'local';\n\t@Input() time?: Date;\n\t@Input() customClass?: string;\n\n\t@Input() hands: HandConfig = {};\n\t@Input() display: DisplayConfig = {};\n\t@Input() customColors?: ClockCustomColors;\n\t@Input() label?: LabelConfig;\n\t@Input() digitalDisplay?: DigitalDisplayConfig;\n\n\t@Input() set config(value: Partial<AnalogClockConfig>) {\n\t\tif (!value) return;\n\n\t\tconst prevSmooth = this.hands.smooth;\n\n\t\tif (value.size !== undefined) this.size = value.size;\n\t\tif (value.theme !== undefined) this.theme = value.theme;\n\t\tif (value.timezone !== undefined) this.timezone = value.timezone;\n\t\tif (value.time !== undefined) this.time = value.time;\n\t\tif (value.customColors !== undefined) this.customColors = value.customColors;\n\t\tif (value.customClass !== undefined) this.customClass = value.customClass;\n\n\t\tif (value.hands) this.hands = { ...this.hands, ...value.hands };\n\t\tif (value.display) this.display = { ...this.display, ...value.display };\n\t\tif (value.label) this.label = value.label;\n\t\tif (value.digitalDisplay) this.digitalDisplay = value.digitalDisplay;\n\n\t\tthis.validateInputs();\n\n\t\tif (prevSmooth !== this.hands.smooth && !this.time) {\n\t\t\tthis.restartAnimation();\n\t\t}\n\t}\n\n\t@Output() tick = new EventEmitter<Date>();\n\t@Output() hourChange = new EventEmitter<number>();\n\n\tprivate sizeSignal = signal(200);\n\tprivate baseTime = signal(new Date());\n\tprivate animationTime = signal(Date.now());\n\tprivate timezoneOffset = signal(0);\n\tprivate lastEmittedHour?: number;\n\tprivate animationFrameId?: number;\n\tprivate timeUpdateInterval?: any;\n\n\tprivate currentTime = computed(() => {\n\t\tconst offset = this.timezoneOffset();\n\t\tconst now = this.animationTime();\n\n\t\tif (this.effectiveSmoothHands()) {\n\t\t\treturn new Date(now + offset);\n\t\t} else {\n\t\t\treturn this.baseTime();\n\t\t}\n\t});\n\n\tdisplayHourMarkers = computed(() => [1, 2, 4, 5, 7, 8, 10, 11]);\n\tcardinalMarkers = computed(() => [0, 3, 6, 9]);\n\tdisplayNumbers = computed(() => Array.from({ length: 12 }, (_, i) => i));\n\tminutes = computed(() => \n\t\tthis.isSmall() ? [] : \n\t\tArray.from({ length: 60 }, (_, i) => i).filter(m => m % 5 !== 0)\n\t);\n\n\tcenter = computed(() => this.sizeSignal() / 2);\n\tradius = computed(() => {\n\t\tconst baseRadius = this.sizeSignal() / 2;\n\t\tconst hasNumbers = this.effectiveMarkers() === 'numbers' || this.effectiveMarkers() === 'lines-numbers';\n\t\treturn baseRadius - (hasNumbers ? 15 : 10);\n\t});\n\n\tisSmall = computed(() => this.sizeSignal() <= 150);\n\tisMedium = computed(() => this.sizeSignal() > 150 && this.sizeSignal() <= 250);\n\n\tprivate hourAngle = computed(() => {\n\t\tconst time = this.currentTime();\n\t\tconst hours = time.getHours() % 12;\n\t\tconst minutes = time.getMinutes();\n\n\t\treturn ((hours + minutes / 60) * 30 - 90) * (Math.PI / 180);\n\t});\n\n\tprivate minuteAngle = computed(() => {\n\t\tconst time = this.currentTime();\n\t\tconst minutes = time.getMinutes();\n\n\t\tif (this.effectiveSmoothHands()) {\n\t\t\tconst seconds = time.getSeconds();\n\t\t\treturn ((minutes + seconds / 60) * 6 - 90) * (Math.PI / 180);\n\t\t}\n\t\treturn (minutes * 6 - 90) * (Math.PI / 180);\n\t});\n\n\tprivate secondAngle = computed(() => {\n\t\tconst time = this.currentTime();\n\t\tconst seconds = time.getSeconds();\n\n\t\tif (this.effectiveSmoothHands()) {\n\t\t\tconst ms = time.getMilliseconds();\n\t\t\treturn ((seconds + ms / 1000) * 6 - 90) * (Math.PI / 180);\n\t\t}\n\t\treturn (seconds * 6 - 90) * (Math.PI / 180);\n\t});\n\n\tprivate getHandPosition(angle: number, length: number): Position {\n\t\treturn {\n\t\t\tx: this.center() + Math.cos(angle) * this.radius() * length,\n\t\t\ty: this.center() + Math.sin(angle) * this.radius() * length\n\t\t};\n\t}\n\n\thourHandPosition = computed(() => \n\tthis.getHandPosition(this.hourAngle(), this.effectiveHourHandLength()));\n\tminuteHandPosition = computed(() => \n\tthis.getHandPosition(this.minuteAngle(), this.effectiveMinuteHandLength()));\n\tsecondHandPosition = computed(() => \n\tthis.getHandPosition(this.secondAngle(), this.effectiveSecondHandLength()));\n\n\thourHandX = () => this.hourHandPosition().x;\n\thourHandY = () => this.hourHandPosition().y;\n\tminuteHandX = () => this.minuteHandPosition().x;\n\tminuteHandY = () => this.minuteHandPosition().y;\n\tsecondHandX = () => this.secondHandPosition().x;\n\tsecondHandY = () => this.secondHandPosition().y;\n\tsecondHandTailX = () => this.secondHandTailPosition().x;\n\tsecondHandTailY = () => this.secondHandTailPosition().y;\n\tsecondAngleValue = () => this.secondAngle();\n\n\tprivate getMarkerCoords(index: number, isHour: boolean): MarkerCoords {\n\t\tconst angle = (index * (isHour ? 30 : 6) - 90) * (Math.PI / 180);\n\t\tconst outerLength = isHour ? 0.85 : 0.95;\n\t\tconst center = this.center();\n\t\tconst radius = this.radius();\n\n\t\treturn {\n\t\t\tx1: center + Math.cos(angle) * radius * outerLength,\n\t\t\ty1: center + Math.sin(angle) * radius * outerLength,\n\t\t\tx2: center + Math.cos(angle) * radius,\n\t\t\ty2: center + Math.sin(angle) * radius\n\t\t};\n\t}\n\n\tgetMarkerX1 = (index: number, isHour: boolean) => this.getMarkerCoords(index, isHour).x1;\n\tgetMarkerY1 = (index: number, isHour: boolean) => this.getMarkerCoords(index, isHour).y1;\n\tgetMarkerX2 = (index: number, isHour: boolean) => this.getMarkerCoords(index, isHour).x2;\n\tgetMarkerY2 = (index: number, isHour: boolean) => this.getMarkerCoords(index, isHour).y2;\n\n\tprivate getDotPosition(index: number, isHour: boolean): Position {\n\t\tconst angle = (index * (isHour ? 30 : 6) - 90) * (Math.PI / 180);\n\t\tconst positionMultiplier = 0.92;\n\t\tconst center = this.center();\n\t\tconst radius = this.radius();\n\n\t\treturn {\n\t\t\tx: center + Math.cos(angle) * radius * positionMultiplier,\n\t\t\ty: center + Math.sin(angle) * radius * positionMultiplier\n\t\t};\n\t}\n\n\tgetDotX = (index: number, isHour: boolean) => this.getDotPosition(index, isHour).x;\n\tgetDotY = (index: number, isHour: boolean) => this.getDotPosition(index, isHour).y;\n\n\n\tgetNumberX(hour: number): number {\n\t\tconst angle = (hour * 30 - 90) * (Math.PI / 180);\n\t\treturn this.center() + Math.cos(angle) * this.radius() * this.numberPositionMultiplier();\n\t}\n\n\tgetNumberY(hour: number): number {\n\t\tconst angle = (hour * 30 - 90) * (Math.PI / 180);\n\t\treturn this.center() + Math.sin(angle) * this.radius() * this.numberPositionMultiplier();\n\t}\n\n\tprivate validateHandLength(length: number | undefined, defaultValue: number): number {\n\t\tif (length === undefined) return defaultValue;\n\t\treturn Math.min(Math.max(length, 0), 1);\n\t}\n\n\tprivate validateHandWidth(width: number | undefined, min: number, max: number, defaultValue: number): number {\n\t\tif (width === undefined) return defaultValue;\n\t\treturn Math.min(Math.max(width, min), max);\n\t}\n\n\teffectiveShowHour = () => this.hands.hour?.show ?? true;\n\teffectiveShowMinute = () => this.hands.minute?.show ?? true;\n\teffectiveShowSecond = () => this.hands.second?.show ?? true;\n\teffectiveSmoothHands = () => this.hands.smooth ?? true;\n\teffectiveMarkers = () => this.display.markers ?? 'lines';\n\teffectiveShowBorder = () => {\n\t\tif (this.display.showBorder !== undefined) {\n\t\t\treturn this.display.showBorder;\n\t\t}\n\t\treturn false;\n\t};\n\teffectiveShowInnerRing = () => this.display.showInnerRing ?? false;\n\teffectiveShowCenterRing = () => this.display.showCenterRing ?? false;\n\teffectiveNumberStyle = () => this.display.numberStyle ?? 'arabic';\n\teffectiveLabelText = () => this.label?.text;\n\teffectiveLabelPosition = () => this.label?.position ?? 'top';\n\n\teffectiveHourHandLength = () => {\n\t\tconst length = this.hands.hour?.length ?? 0.55;\n\t\treturn this.validateHandLength(length, 0.55);\n\t};\n\n\teffectiveMinuteHandLength = () => {\n\t\tconst length = this.hands.minute?.length ?? 0.7;\n\t\treturn this.validateHandLength(length, 0.7);\n\t};\n\n\teffectiveSecondHandLength = () => {\n\t\tconst length = this.hands.second?.length ?? 0.8;\n\t\treturn this.validateHandLength(length, 0.8);\n\t};\n\n\tprivate getResponsiveHourWidth(): number {\n\t\treturn 6;\n\t}\n\n\tprivate getResponsiveMinuteWidth(): number {\n\t\treturn 6;\n\t}\n\n\tprivate getResponsiveSecondWidth(): number {\n\t\treturn 4;\n\t}\n\n\thourHandWidth(): number {\n\t\tconst width = this.hands.hour?.width;\n\t\tconst defaultWidth = this.getResponsiveHourWidth();\n\t\treturn this.validateHandWidth(width, 2, 15, defaultWidth);\n\t}\n\n\tminuteHandWidth(): number {\n\t\tconst width = this.hands.minute?.width;\n\t\tconst defaultWidth = this.getResponsiveMinuteWidth();\n\t\treturn this.validateHandWidth(width, 1, 10, defaultWidth);\n\t}\n\n\tsecondHandWidth(): number {\n\t\tconst width = this.hands.second?.width;\n\t\tconst defaultWidth = this.getResponsiveSecondWidth();\n\t\treturn this.validateHandWidth(width, 1, 5, defaultWidth);\n\t}\n\n\thourMarkerWidth(): number {\n\t\tconst customWidth = this.display.hourMarkerWidth;\n\n\t\tif (customWidth !== undefined) {\n\t\t\treturn Math.min(Math.max(customWidth, 1), 10);\n\t\t}\n\n\t\treturn 3;\n\t}\n\n\tminuteMarkerWidth(): number {\n\t\tconst customWidth = this.display.minuteMarkerWidth;\n\n\t\tif (customWidth !== undefined) {\n\t\t\treturn Math.min(Math.max(customWidth, 0), 5);\n\t\t}\n\n\t\treturn 1;\n\t}\n\t\n\thourDotRadius(): number {\n\t\tconst customSize = this.display.hourMarkerWidth;\n\n\t\tif (customSize !== undefined) {\n\t\t\treturn Math.min(Math.max(customSize, 1), 8);\n\t\t}\n\n\t\tif (this.isSmall()) return 2;\n\t\tif (this.isMedium()) return 3;\n\t\treturn 4;\n\t}\n\n\tminuteDotRadius(): number {\n\t\tconst customSize = this.display.minuteMarkerWidth;\n\n\t\tif (customSize !== undefined) {\n\t\t\treturn Math.min(Math.max(customSize, 0.5), 4);\n\t\t}\n\n\t\tif (this.isSmall()) return 0;\n\t\tif (this.isMedium()) return 1;\n\t\treturn 1.5;\n\t}\n\n\n\tnumberFontSize(): number {\n\t\tconst customSize = this.display.numberSize;\n\t\tconst markers = this.effectiveMarkers();\n\n\t\tlet defaultSize: number;\n\n\t\tif (markers === 'numbers') {\n\t\t\tif (this.isSmall()) defaultSize = 12;\n\t\t\telse if (this.isMedium()) defaultSize = 16;\n\t\t\telse defaultSize = 20;\n\t\t} else {\n\t\t\tif (this.isSmall()) defaultSize = 10;\n\t\t\telse if (this.isMedium()) defaultSize = 14;\n\t\t\telse defaultSize = 16;\n\t\t}\n\n\t\tif (customSize !== undefined) {\n\t\t\treturn Math.min(Math.max(customSize, 8), 32);\n\t\t}\n\n\t\treturn defaultSize;\n\t}\n\n\tnumberFontWeight(): string {\n\t\tconst weight = this.display.numberWeight;\n\n\t\tif (weight === 'light') return '300';\n\t\tif (weight === 'bold') return '700';\n\t\treturn '400';\n\t}\n\n\tfontSize(): number {\n\t\tif (this.isSmall()) return 10;\n\t\tif (this.isMedium()) return 14;\n\t\treturn 16;\n\t}\n\n\tnumberPositionMultiplier(): number {\n\t\tconst markers = this.effectiveMarkers();\n\n\t\tif (markers === 'numbers') {\n\t\t\tif (this.isSmall()) return 0.85;\n\t\t\tif (this.isMedium()) return 0.87;\n\t\t\treturn 0.88;\n\t\t}\n\n\t\tif (markers === 'lines-numbers') {\n\t\t\tif (this.isSmall()) return 0.68;\n\t\t\tif (this.isMedium()) return 0.70;\n\t\t\treturn 0.72;\n\t\t}\n\n\t\tif (markers === 'dots-numbers') {\n\t\t\tif (this.isSmall()) return 0.68;\n\t\t\tif (this.isMedium()) return 0.70;\n\t\t\treturn 0.72;\n\t\t}\n\n\t\tif (this.isSmall()) return 0.85;\n\t\tif (this.isMedium()) return 0.87;\n\t\treturn 0.88;\n\t}\n\n\tlabelFontSize(): number {\n\t\tif (this.isSmall()) return 10;\n\t\tif (this.isMedium()) return 12;\n\t\treturn 14;\n\t}\n\n\tlabelY(): number {\n\t\tconst position = this.effectiveLabelPosition();\n\t\tconst offset = this.isSmall() ? 0.35 : 0.4;\n\n\t\tif (position === 'bottom') {\n\t\t\treturn this.center() + this.radius() * offset;\n\t\t}\n\t\treturn this.center() - this.radius() * offset;\n\t}\n\n\tcenterDotRadius(): number {\n\t\tif (this.isSmall()) return 5;\n\t\tif (this.isMedium()) return 6;\n\t\treturn 8;\n\t}\n\n\tcenterDotInnerRadius(): number {\n\t\tif (this.isSmall()) return 3;\n\t\tif (this.isMedium()) return 4;\n\t\treturn 5;\n\t}\n\n\tborderWidth(): number {\n\t\tconst customWidth = this.display.borderWidth;\n\n\t\tlet defaultWidth: number;\n\t\tif (this.isSmall()) defaultWidth = 2;\n\t\telse if (this.isMedium()) defaultWidth = 3;\n\t\telse defaultWidth = 4;\n\n\t\tif (customWidth !== undefined) {\n\t\t\treturn Math.min(Math.max(customWidth, 1), 10);\n\t\t}\n\n\t\treturn defaultWidth;\n\t}\n\n\tcustomStyles(): { [key: string]: string } {\n\t\tif (!this.customColors) return {};\n\n\t\tconst styles: { [key: string]: string } = {};\n\n\t\tif (this.customColors.background && !this.customColors.backgroundGradient) {\n\t\t\tstyles['--clock-bg'] = this.customColors.background;\n\t\t}\n\n\t\tif (this.customColors.border) styles['--border-color'] = this.customColors.border;\n\n\t\tif (this.customColors.hands?.hour) styles['--hour-hand-color'] = this.customColors.hands.hour;\n\t\tif (this.customColors.hands?.minute) styles['--minute-hand-color'] = this.customColors.hands.minute;\n\t\tif (this.customColors.hands?.second) styles['--second-hand-color'] = this.customColors.hands.second;\n\n\t\tif (this.customColors.markers?.hour) styles['--hour-marker-color'] = this.customColors.markers.hour;\n\t\tif (this.customColors.markers?.minute) styles['--minute-marker-color'] = this.customColors.markers.minute;\n\t\tif (this.customColors.markers?.numbers) styles['--number-color'] = this.customColors.markers.numbers;\n\n\t\tif (this.customColors.center?.dot) styles['--center-dot-color'] = this.customColors.center.dot;\n\t\tif (this.customColors.center?.ring) styles['--center-dot-outer-color'] = this.customColors.center.ring;\n\n\t\tif (this.customColors.innerRing) styles['--inner-ring-color'] = this.customColors.innerRing;\n\t\tif (this.customColors.label) styles['--label-color'] = this.customColors.label;\n\n\t\treturn styles;\n\t}\n\n\thasBackgroundGradient(): boolean {\n\t\treturn !!this.customColors?.backgroundGradient;\n\t}\n\n\tgetGradientType(): 'linear' | 'radial' {\n\t\treturn this.customColors?.backgroundGradient?.type ?? 'linear';\n\t}\n\n\tisLinearGradient(): boolean {\n\t\treturn this.getGradientType() === 'linear';\n\t}\n\n\tisRadialGradient(): boolean {\n\t\treturn this.getGradientType() === 'radial';\n\t}\n\n\tgradientId = 'clock-bg-gradient-' + Math.random().toString(36).substr(2, 9);\n\n\tgetGradientCoordinates(): { x1: string, y1: string, x2: string, y2: string } {\n\t\tconst angle = this.customColors?.backgroundGradient?.angle ?? 135;\n\t\tconst radians = (angle - 90) * (Math.PI / 180);\n\n\t\tconst x = Math.cos(radians);\n\t\tconst y = Math.sin(radians);\n\n\t\tconst x1 = 50 - (x * 50);\n\t\tconst y1 = 50 - (y * 50);\n\t\tconst x2 = 50 + (x * 50);\n\t\tconst y2 = 50 + (y * 50);\n\n\t\treturn {\n\t\t\tx1: `${x1}%`,\n\t\t\ty1: `${y1}%`,\n\t\t\tx2: `${x2}%`,\n\t\t\ty2: `${y2}%`\n\t\t};\n\t}\n\n\tgetRadialGradientCoordinates(): { cx: string, cy: string, r: string } {\n\t\treturn {\n\t\t\tcx: '50%',\n\t\t\tcy: '50%',\n\t\t\tr: '50%'\n\t\t};\n\t}\n\n\tgetGradientStartColor(): string {\n\t\treturn this.customColors?.backgroundGradient?.start ?? '#000000';\n\t}\n\n\tgetGradientEndColor(): string {\n\t\treturn this.customColors?.backgroundGradient?.end ?? '#ffffff';\n\t}\n\n\tgetCircleFill(): string | undefined {\n\t\tif (this.hasBackgroundGradient()) {\n\t\t\treturn `url(#${this.gradientId})`;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tdigitalTime = computed(() => {\n\t\tif (!this.digitalDisplay?.enabled) return '';\n\n\t\tconst format = this.digitalDisplay.format || '24h';\n\t\tconst showSeconds = this.digitalDisplay.showSeconds ?? true;\n\t\tconst time = this.currentTime();\n\n\t\tconst hours = time.getHours();\n\t\tconst minutes = time.getMinutes().toString().padStart(2, '0');\n\t\tconst seconds = time.getSeconds().toString().padStart(2, '0');\n\n\t\tif (format === '12h') {\n\t\t\tconst hours12 = (hours % 12 || 12).toString().padStart(2, '0');\n\t\t\tconst ampm = hours >= 12 ? 'PM' : 'AM';\n\t\t\treturn showSeconds ? `${hours12}:${minutes}:${seconds} ${ampm}` : `${hours12}:${minutes} ${ampm}`;\n\t\t}\n\n\t\tconst hoursStr = hours.toString().padStart(2, '0');\n\t\treturn showSeconds ? `${hoursStr}:${minutes}:${seconds}` : `${hoursStr}:${minutes}`;\n\t});\n\n\tdigitalDate = computed(() => {\n\t\tif (!this.digitalDisplay?.enabled || !this.digitalDisplay?.showDate) return '';\n\n\t\tconst options: Intl.DateTimeFormatOptions = {\n\t\t\tyear: 'numeric',\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t\ttimeZone: this.timezone === 'local' ? undefined : this.timezone\n\t\t};\n\n\t\treturn this.currentTime().toLocaleDateString('en-US', options);\n\t});\n\n\tgetNumberDisplay(hour: number): string {\n\t\tconst displayHour = hour === 0 ? 12 : hour;\n\n\t\tif (this.effectiveNumberStyle() === 'roman') {\n\t\t\tconst romanNumerals: { [key: number]: string } = {\n\t\t\t1: 'I', 2: 'II', 3: 'III', 4: 'IV', 5: 'V', 6: 'VI',\n\t\t\t7: 'VII', 8: 'VIII', 9: 'IX', 10: 'X', 11: 'XI', 12: 'XII'\n\t\t\t};\n\t\t\treturn romanNumerals[displayHour];\n\t\t}\n\n\t\treturn displayHour.toString();\n\t}\n\n\tgetAriaLabel(): string {\n\t\tconst time = this.currentTime();\n\t\tconst hours = time.getHours();\n\t\tconst minutes = time.getMinutes().toString().padStart(2, '0');\n\n\t\tif (this.digitalDisplay?.format === '12h') {\n\t\t\tconst hours12 = hours % 12 || 12;\n\t\t\tconst ampm = hours >= 12 ? 'PM' : 'AM';\n\t\t\treturn `Current time: ${hours12}:${minutes} ${ampm}`;\n\t\t}\n\n\t\treturn `Current time: ${hours}:${minutes}`;\n\t}\n\n\tngOnInit(): void {\n\t\tthis.validateInputs();\n\n\t\tif (!this.time) {\n\t\t\tthis.updateTime();\n\t\t\tthis.startTimeUpdates();\n\t\t\tthis.startAnimation();\n\t\t} else {\n\t\t\tthis.setManualTime(this.time);\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['size']) {\n\t\t\tthis.validateInputs();\n\t\t}\n\n\t\tif (changes['timezone']) {\n\t\t\tthis.timezoneOffset.set(0);\n\t\t\tthis.updateTime();\n\t\t}\n\n\t\tif (changes['hands'] && !changes['hands'].firstChange) {\n\t\t\tconst prevHands = changes['hands'].previousValue as HandConfig;\n\t\t\tconst currHands = changes['hands'].currentValue as HandConfig;\n\t\t\t\n\t\t\tif (prevHands?.smooth !== currHands?.smooth && !this.time) {\n\t\t\t\tthis.restartAnimation();\n\t\t\t}\n\t\t}\n\n\t\tif (changes['time']) {\n\t\t\tif (this.time) {\n\t\t\t\tthis.stopAnimation();\n\t\t\t\tthis.setManualTime(this.time);\n\t\t\t} else if (!changes['time'].firstChange) {\n\t\t\t\tthis.updateTime();\n\t\t\t\tthis.startTimeUpdates();\n\t\t\t\tthis.startAnimation();\n\t\t\t}\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.stopAnimation();\n\t}\n\n\tprivate validateInputs(): void {\n\t\tconst validSize = Math.max(100, this.size);\n\t\tif (validSize !== this.size) {\n\t\t\tconsole.warn(`ngx-analog-clock: size must be at least 100px. Using ${validSize} instead of ${this.size}.`);\n\t\t}\n\t\tthis.sizeSignal.set(validSize);\n\t}\n\n\tprivate setManualTime(time: Date): void {\n\t\tif (!(time instanceof Date) || isNaN(time.getTime())) {\n\t\t\tconsole.error('ngx-analog-clock: Invalid Date provided to time input. Falling back to current time.');\n\t\t\tthis.baseTime.set(new Date());\n\t\t\tthis.animationTime.set(Date.now());\n\t\t\treturn;\n\t\t}\n\n\t\tthis.baseTime.set(time);\n\t\tthis.animationTime.set(time.getTime());\n\t\tthis.tick.emit(time);\n\n\t\tconst currentHour = time.getHours();\n\t\tif (this.lastEmittedHour !== currentHour) {\n\t\t\tthis.hourChange.emit(currentHour);\n\t\t\tthis.lastEmittedHour = currentHour;\n\t\t}\n\t}\n\n\tprivate startTimeUpdates(): void {\n\t\tthis.timeUpdateInterval = setInterval(() => {\n\t\t\tthis.updateTime();\n\t\t}, 1000);\n\t}\n\n\tprivate startAnimation(): void {\n\t\tif (!this.effectiveSmoothHands()) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet lastFrameTime = 0;\n\t\tconst targetInterval = 1000 / 30;\n\n\t\tconst animate = (timestamp: number) => {\n\t\t\tif (timestamp - lastFrameTime >= targetInterval) {\n\t\t\t\tthis.animationTime.set(Date.now());\n\t\t\t\tlastFrameTime = timestamp;\n\t\t\t}\n\t\t\t\n\t\t\tthis.animationFrameId = requestAnimationFrame(animate);\n\t\t};\n\n\t\tthis.animationFrameId = requestAnimationFrame(animate);\n\t}\n\n\tprivate restartAnimation(): void {\n\t\tif (this.animationFrameId) {\n\t\t\tcancelAnimationFrame(this.animationFrameId);\n\t\t\tthis.animationFrameId = undefined;\n\t\t}\n\n\t\tif (this.effectiveSmoothHands()) {\n\t\t\tthis.startAnimation();\n\t\t} else {\n\t\t\tthis.animationTime.set(this.baseTime().getTime());\n\t\t}\n\t}\n\n\tprivate stopAnimation(): void {\n\t\tif (this.animationFrameId) {\n\t\t\tcancelAnimationFrame(this.animationFrameId);\n\t\t\tthis.animationFrameId = undefined;\n\t\t}\n\t\tif (this.timeUpdateInterval) {\n\t\t\tclearInterval(this.timeUpdateInterval);\n\t\t\tthis.timeUpdateInterval = undefined;\n\t\t}\n\t}\n\n\tprivate updateTime(): void {\n\t\tlet newTime: Date;\n\n\t\tif (this.timezone === 'local') {\n\t\t\tnewTime = new Date();\n\t\t\tthis.timezoneOffset.set(0);\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst localTime = new Date();\n\t\t\t\t\n\t\t\t\tconst formatter = new Intl.DateTimeFormat('en-US', {\n\t\t\t\t\ttimeZone: this.timezone,\n\t\t\t\t\tyear: 'numeric',\n\t\t\t\t\tmonth: '2-digit',\n\t\t\t\t\tday: '2-digit',\n\t\t\t\t\thour: '2-digit',\n\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\tsecond: '2-digit',\n\t\t\t\t\thour12: false\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tconst parts = formatter.formatToParts(localTime);\n\t\t\t\tconst getValue = (type: string) => \n\t\t\t\t\tparts.find(p => p.type === type)?.value || '0';\n\t\t\t\t\n\t\t\t\tnewTime = new Date(\n\t\t\t\t\tparseInt(getValue('year')),\n\t\t\t\t\tparseInt(getValue('month')) - 1,\n\t\t\t\t\tparseInt(getValue('day')),\n\t\t\t\t\tparseInt(getValue('hour')),\n\t\t\t\t\tparseInt(getValue('minute')),\n\t\t\t\t\tparseInt(getValue('second'))\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\tconst offset = newTime.getTime() - localTime.getTime();\n\t\t\t\tthis.timezoneOffset.set(offset);\n\t\t\t} catch {\n\t\t\t\tconsole.error('Invalid timezone:', this.timezone);\n\t\t\t\tnewTime = new Date();\n\t\t\t\tthis.timezoneOffset.set(0);\n\t\t\t}\n\t\t}\n\n\t\tthis.baseTime.set(newTime);\n\t\tthis.animationTime.set(Date.now());\n\t\tthis.tick.emit(newTime);\n\n\t\tconst currentHour = newTime.getHours();\n\t\tif (this.lastEmittedHour !== currentHour) {\n\t\t\tthis.hourChange.emit(currentHour);\n\t\t\tthis.lastEmittedHour = currentHour;\n\t\t}\n\t}\n}","<div \n\tclass=\"clock-container\" \n\t[class]=\"customClass\"\n\t[style.width.px]=\"size\" \n\t[style.height.px]=\"size\"\n\trole=\"img\"\n\t[attr.aria-label]=\"getAriaLabel()\">\n\t<svg \n\t[attr.width]=\"size\" \n\t[attr.height]=\"size\" \n\t[attr.viewBox]=\"'0 0 ' + size + ' ' + size\"\n\t[class]=\"customClass\"\n\t[class.light-theme]=\"theme === 'light'\"\n\t[class.dark-theme]=\"theme === 'dark'\"\n\t[class.custom-theme]=\"theme === 'custom'\"\n\t[class.small-size]=\"isSmall()\"\n\t[class.medium-size]=\"isMedium()\"\n\t[ngStyle]=\"customStyles()\"\n\taria-hidden=\"true\"\n\tclass=\"analog-clock\">\n\n\t<defs>\n\t\t@if (hasBackgroundGradient()) {\n\t\t\t@if (isLinearGradient()) {\n\t\t\t\t<linearGradient \n\t\t\t\t\t[attr.id]=\"gradientId\"\n\t\t\t\t\t[attr.x1]=\"getGradientCoordinates().x1\"\n\t\t\t\t\t[attr.y1]=\"getGradientCoordinates().y1\"\n\t\t\t\t\t[attr.x2]=\"getGradientCoordinates().x2\"\n\t\t\t\t\t[attr.y2]=\"getGradientCoordinates().y2\">\n\t\t\t\t\t<stop offset=\"0%\" [attr.stop-color]=\"getGradientStartColor()\" />\n\t\t\t\t\t<stop offset=\"100%\" [attr.stop-color]=\"getGradientEndColor()\" />\n\t\t\t\t</linearGradient>\n\t\t\t} @else {\n\t\t\t\t<radialGradient \n\t\t\t\t\t[attr.id]=\"gradientId\"\n\t\t\t\t\t[attr.cx]=\"getRadialGradientCoordinates().cx\"\n\t\t\t\t\t[attr.cy]=\"getRadialGradientCoordinates().cy\"\n\t\t\t\t\t[attr.r]=\"getRadialGradientCoordinates().r\">\n\t\t\t\t\t<stop offset=\"0%\" [attr.stop-color]=\"getGradientStartColor()\" />\n\t\t\t\t\t<stop offset=\"100%\" [attr.stop-color]=\"getGradientEndColor()\" />\n\t\t\t\t</radialGradient>\n\t\t\t}\n\t\t}\n\t</defs>\n\n\t@if (effectiveShowBorder()) {\n\t\t<circle \n\t\t\t[attr.cx]=\"center()\" \n\t\t\t[attr.cy]=\"center()\" \n\t\t\t[attr.r]=\"radius() + 5\" \n\t\t\t[attr.stroke-width]=\"borderWidth()\"\n\t\t\tclass=\"glow-ring\" />\n\t}\n\n\t<circle \n\t\t[attr.cx]=\"center()\" \n\t\t[attr.cy]=\"center()\" \n\t\t[attr.r]=\"radius()\"\n\t\t[attr.fill]=\"getCircleFill()\"\n\t\tclass=\"clock-face\" />\n\n\t@if (effectiveShowInnerRing()) {\n\t\t<circle \n\t\t\t[attr.cx]=\"center()\" \n\t\t\t[attr.cy]=\"center()\" \n\t\t\t[attr.r]=\"radius() - 15\" \n\t\t\tclass=\"inner-ring\" />\n\t}\n\n\t@if (effectiveMarkers() !== 'none' && (effectiveMarkers() === 'lines' || effectiveMarkers() === 'lines-numbers')) {\n\t\t@for (hour of displayHourMarkers(); track hour) {\n\t\t<line\n\t\t\t[attr.x1]=\"getMarkerX1(hour, true)\"\n\t\t\t[attr.y1]=\"getMarkerY1(hour, true)\"\n\t\t\t[attr.x2]=\"getMarkerX2(hour, true)\"\n\t\t\t[attr.y2]=\"getMarkerY2(hour, true)\"\n\t\t\t[attr.stroke-width]=\"hourMarkerWidth()\"\n\t\t\tclass=\"hour-marker\" />\n\t\t}\n\t}\n\n\t@if (effectiveMarkers() === 'lines' || effectiveMarkers() === 'lines-numbers') {\n\t\t@for (hour of cardinalMarkers(); track hour) {\n\t\t\t<line\n\t\t\t\t[attr.x1]=\"getMarkerX1(hour, true)\"\n\t\t\t\t[attr.y1]=\"getMarkerY1(hour, true)\"\n\t\t\t\t[attr.x2]=\"getMarkerX2(hour, true)\"\n\t\t\t\t[attr.y2]=\"getMarkerY2(hour, true)\"\n\t\t\t\t[attr.stroke-width]=\"hourMarkerWidth()\"\n\t\t\t\tclass=\"hour-marker cardinal-marker\" />\n\t\t}\n\t}\n\n\t@if (effectiveMarkers() !== 'none' && (effectiveMarkers() === 'lines' || effectiveMarkers() === 'lines-numbers') && !isSmall()) {\n\t\t@for (minute of minutes(); track minute) {\n\t\t\t<line\n\t\t\t\t[attr.x1]=\"getMarkerX1(minute, false)\"\n\t\t\t\t[attr.y1]=\"getMarkerY1(minute, false)\"\n\t\t\t\t[attr.x2]=\"getMarkerX2(minute, false)\"\n\t\t\t\t[attr.y2]=\"getMarkerY2(minute, false)\"\n\t\t\t\t[attr.stroke-width]=\"minuteMarkerWidth()\"\n\t\t\t\tclass=\"minute-marker\" />\n\t\t}\n\t}\n\n\t@if (effectiveMarkers() === 'dots' || effectiveMarkers() === 'dots-numbers') {\n\t\t@for (hour of displayHourMarkers(); track hour) {\n\t\t\t<circle\n\t\t\t\t[attr.cx]=\"getDotX(hour, true)\"\n\t\t\t\t[attr.cy]=\"getDotY(hour, true)\"\n\t\t\t\t[attr.r]=\"hourDotRadius()\"\n\t\t\t\tclass=\"hour-dot\" />\n\t\t}\n\t\t\n\t\t@for (hour of cardinalMarkers(); track hour) {\n\t\t\t<circle\n\t\t\t\t[attr.cx]=\"getDotX(hour === 0 ? 12 : hour, true)\"\n\t\t\t\t[attr.cy]=\"getDotY(hour === 0 ? 12 : hour, true)\"\n\t\t\t\t[attr.r]=\"hourDotRadius() + 1\"\n\t\t\t\tclass=\"hour-dot cardinal-dot\" />\n\t\t}\n\t\t\n\t\t@if (!isSmall()) {\n\t\t\t@for (minute of minutes(); track minute) {\n\t\t\t\t<circle\n\t\t\t\t\t[attr.cx]=\"getDotX(minute, false)\"\n\t\t\t\t\t[attr.cy]=\"getDotY(minute, false)\"\n\t\t\t\t\t[attr.r]=\"minuteDotRadius()\"\n\t\t\t\t\tclass=\"minute-dot\" />\n\t\t\t}\n\t\t}\n\t}\n\n\t@if (effectiveMarkers() === 'numbers') {\n\t\t@for (hour of displayNumbers(); track hour) {\n\t\t\t<text\n\t\t\t\t[attr.x]=\"getNumberX(hour === 0 ? 12 : hour)\"\n\t\t\t\t[attr.y]=\"getNumberY(hour === 0 ? 12 : hour)\"\n\t\t\t\t[attr.font-size]=\"numberFontSize()\"\n\t\t\t\t[style.font-weight]=\"numberFontWeight()\"\n\t\t\t\tclass=\"hour-number\"\n\t\t\t\ttext-anchor=\"middle\"\n\t\t\t\tdominant-baseline=\"middle\">\n\t\t\t\t{{ getNumberDisplay(hour) }}\n\t\t\t</text>\n\t\t}\n\t}\n\n\t@if (effectiveMarkers() === 'lines-numbers') {\n\t\t@for (hour of cardinalMarkers(); track hour) {\n\t\t\t<text\n\t\t\t\t[attr.x]=\"getNumberX(hour === 0 ? 12 : hour)\"\n\t\t\t\t[attr.y]=\"getNumberY(hour === 0 ? 12 : hour)\"\n\t\t\t\t[attr.font-size]=\"numberFontSize()\"\n\t\t\t\t[style.font-weight]=\"numberFontWeight()\"\n\t\t\t\tclass=\"hour-number cardinal-number\"\n\t\t\t\ttext-anchor=\"middle\"\n\t\t\t\tdominant-baseline=\"middle\">\n\t\t\t\t{{ getNumberDisplay(hour) }}\n\t\t\t</text>\n\t\t}\n\t}\n\n\t@if (effectiveMarkers() === 'dots-numbers') {\n\t\t@for (hour of cardinalMarkers(); track hour) {\n\t\t\t<text\n\t\t\t\t[attr.x]=\"getNumberX(hour === 0 ? 12 : hour)\"\n\t\t\t\t[attr.y]=\"getNumberY(hour === 0 ? 12 : hour)\"\n\t\t\t\t[attr.font-size]=\"numberFontSize()\"\n\t\t\t\t[style.font-weight]=\"numberFontWeight()\"\n\t\t\t\tclass=\"hour-number cardinal-number\"\n\t\t\t\ttext-anchor=\"middle\"\n\t\t\t\tdominant-baseline=\"middle\">\n\t\t\t\t{{ getNumberDisplay(hour) }}\n\t\t\t</text>\n\t\t}\n\t}\n\n\n\t@if (effectiveLabelText()) {\n\t\t<text\n\t\t\t[attr.x]=\"center()\"\n\t\t\t[attr.y]=\"labelY()\"\n\t\t\t[attr.font-size]=\"labelFontSize()\"\n\t\t\tclass=\"clock-label\"\n\t\t\ttext-anchor=\"middle\"\n\t\t\tdominant-baseline=\"middle\">\n\t\t\t{{ effectiveLabelText() }}\n\t\t</text>\n\t}\n\n\t@if (effectiveShowHour()) {\n\t\t<line\n\t\t\t[attr.x1]=\"center()\"\n\t\t\t[attr.y1]=\"center()\"\n\t\t\t[attr.x2]=\"hourHandX()\"\n\t\t\t[attr.y2]=\"hourHandY()\"\n\t\t\t[attr.stroke-width]=\"hourHandWidth()\"\n\t\t\t[class.smooth]=\"effectiveSmoothHands()\"\n\t\t\tclass=\"hour-hand\" />\n\t}\n\n\t@if (effectiveShowMinute()) {\n\t\t<line\n\t\t\t[attr.x1]=\"center()\"\n\t\t\t[attr.y1]=\"center()\"\n\t\t\t[attr.x2]=\"minuteHandX()\"\n\t\t\t[attr.y2]=\"minuteHandY()\"\n\t\t\t[attr.stroke-width]=\"minuteHandWidth()\"\n\t\t\t[class.smooth]=\"effectiveSmoothHands()\"\n\t\t\tclass=\"minute-hand\" />\n\t}\n\n\t@if (effectiveShowSecond()) {\n\t\t<line\n\t\t\t[attr.x1]=\"center()\"\n\t\t\t[attr.y1]=\"center()\"\n\t\t\t[attr.x2]=\"secondHandX()\"\n\t\t\t[attr.y2]=\"secondHandY()\"\n\t\t\t[attr.stroke-width]=\"secondHandWidth()\"\n\t\t\t[class.smooth]=\"effectiveSmoothHands()\"\n\t\t\tclass=\"second-hand\" />\n\t\t\n\t\t@if (!isSmall()) {\n\t\t<line\n\t\t\t[attr.x1]=\"center()\"\n\t\t\t[attr.y1]=\"center()\"\n\t\t\t[attr.x2]=\"secondHandTailX()\"\n\t\t\t[attr.y2]=\"secondHandTailY()\"\n\t\t\t[attr.stroke-width]=\"secondHandWidth()\"\n\t\t\t[class.smooth]=\"effectiveSmoothHands()\"\n\t\t\tclass=\"second-hand-tail\" />\n\t\t}\n\t}\n\n\t@if (effectiveShowCenterRing()) {\n\t\t<circle \n\t\t\t[attr.cx]=\"center()\" \n\t\t\t[attr.cy]=\"center()\" \n\t\t\t[attr.r]=\"centerDotRadius()\" \n\t\t\tclass=\"center-dot-outer\" />\n\t}\n\t<circle \n\t\t[attr.cx]=\"center()\" \n\t\t[attr.cy]=\"center()\" \n\t\t[attr.r]=\"centerDotInnerRadius()\" \n\t\tclass=\"center-dot\" />\n\t</svg>\n\n\t@if (digitalDisplay?.enabled) {\n\t\t<div class=\"digital-display\" [style.color]=\"digitalDisplay?.color\">\n\t\t\t<div class=\"digital-time\">{{ digitalTime() }}</div>\n\t\t\t@if (digitalDisplay?.showDate) {\n\t\t\t\t<div class=\"digital-date\">{{ digitalDate() }}</div>\n\t\t\t}\n\t\t</div>\n\t}\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}