@grandgular/rive-angular 0.2.0 → 0.4.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grandgular-rive-angular.mjs","sources":["../../../../libs/rive-angular/src/lib/models/rive.model.ts","../../../../libs/rive-angular/src/lib/utils/error-codes.ts","../../../../libs/rive-angular/src/lib/utils/element-observer.ts","../../../../libs/rive-angular/src/lib/utils/debug-config.ts","../../../../libs/rive-angular/src/lib/utils/logger.ts","../../../../libs/rive-angular/src/lib/utils/validator.ts","../../../../libs/rive-angular/src/lib/components/rive-canvas.component.ts","../../../../libs/rive-angular/src/lib/services/rive-file.service.ts","../../../../libs/rive-angular/src/index.ts","../../../../libs/rive-angular/src/grandgular-rive-angular.ts"],"sourcesContent":["import { RiveErrorCode } from '../utils';\n\n/**\n * Re-export Rive SDK types for consumer convenience\n */\nexport { Fit, Alignment, EventType } from '@rive-app/canvas';\nexport type { Event as RiveEvent } from '@rive-app/canvas';\n\n/**\n * Options for constructing a RiveLoadError with detailed context.\n */\nexport interface RiveErrorOptions {\n message: string;\n code?: RiveErrorCode;\n suggestion?: string;\n docsUrl?: string;\n cause?: unknown;\n}\n\n/**\n * Error thrown when Rive animation fails to load.\n * Supports legacy constructor for backward compatibility.\n */\nexport class RiveLoadError extends Error {\n public readonly code?: RiveErrorCode;\n public readonly suggestion?: string;\n public readonly docsUrl?: string;\n public readonly originalError?: Error;\n\n constructor(\n messageOrOptions: string | RiveErrorOptions,\n originalError?: unknown,\n ) {\n if (typeof messageOrOptions === 'string') {\n // Legacy constructor: new RiveLoadError(message, originalError)\n super(messageOrOptions);\n this.originalError =\n originalError instanceof Error ? originalError : undefined;\n } else {\n // New constructor: new RiveLoadError(options)\n super(messageOrOptions.message);\n this.code = messageOrOptions.code;\n this.suggestion = messageOrOptions.suggestion;\n this.docsUrl = messageOrOptions.docsUrl;\n this.originalError =\n messageOrOptions.cause instanceof Error\n ? messageOrOptions.cause\n : undefined;\n }\n this.name = 'RiveLoadError';\n }\n}\n\n/**\n * Error thrown when validation fails (e.g. missing artboard/animation/input).\n * These errors are typically non-fatal but indicate a configuration mismatch.\n */\nexport class RiveValidationError extends Error {\n constructor(\n message: string,\n public readonly code: RiveErrorCode,\n public readonly availableOptions?: string[],\n public readonly suggestion?: string,\n ) {\n super(message);\n this.name = 'RiveValidationError';\n }\n}\n","/**\n * Error codes used throughout the Rive Angular library.\n *\n * Ranges:\n * - RIVE_1xx: Load errors (file not found, network, bad format)\n * - RIVE_2xx: Validation errors (artboard, animation, state machine mismatch)\n * - RIVE_3xx: Configuration/Usage errors (missing source, bad canvas)\n */\nexport enum RiveErrorCode {\n // Load Errors\n FileNotFound = 'RIVE_101',\n InvalidFormat = 'RIVE_102',\n NetworkError = 'RIVE_103',\n\n // Validation Errors\n ArtboardNotFound = 'RIVE_201',\n AnimationNotFound = 'RIVE_202',\n StateMachineNotFound = 'RIVE_203',\n InputNotFound = 'RIVE_204',\n\n // Configuration Errors\n NoSource = 'RIVE_301',\n InvalidCanvas = 'RIVE_302',\n}\n\n/**\n * Template messages for each error code.\n * Used by formatErrorMessage to generate user-friendly descriptions.\n */\nexport const ERROR_MESSAGES: Record<RiveErrorCode, string> = {\n [RiveErrorCode.FileNotFound]: 'File not found: {url}',\n [RiveErrorCode.InvalidFormat]: 'Invalid .riv file format',\n [RiveErrorCode.NetworkError]: 'Network error while loading file',\n [RiveErrorCode.ArtboardNotFound]: 'Artboard \"{name}\" not found',\n [RiveErrorCode.AnimationNotFound]: 'Animation \"{name}\" not found',\n [RiveErrorCode.StateMachineNotFound]: 'State machine \"{name}\" not found',\n [RiveErrorCode.InputNotFound]: 'Input \"{name}\" not found in \"{stateMachine}\"',\n [RiveErrorCode.NoSource]: 'No animation source provided',\n [RiveErrorCode.InvalidCanvas]: 'Invalid canvas element',\n};\n\n/**\n * Formats an error message by replacing placeholders with actual values.\n *\n * @param code - The error code\n * @param params - Record of values to replace in the template (e.g. { name: 'MyAnim' })\n * @returns The formatted error string\n */\nexport function formatErrorMessage(\n code: RiveErrorCode,\n params: Record<string, string> = {},\n): string {\n let message = ERROR_MESSAGES[code] || 'Unknown Rive error';\n\n for (const [key, value] of Object.entries(params)) {\n message = message.replace(`{${key}}`, value);\n }\n\n return message;\n}\n","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Fake IntersectionObserver for environments where it's not available (e.g., SSR)\n */\nclass FakeIntersectionObserver implements IntersectionObserver {\n readonly root: Element | Document | null = null;\n readonly rootMargin: string = '';\n readonly thresholds: ReadonlyArray<number> = [];\n\n observe(): void {\n // Intentionally empty for SSR compatibility\n }\n unobserve(): void {\n // Intentionally empty for SSR compatibility\n }\n disconnect(): void {\n // Intentionally empty for SSR compatibility\n }\n takeRecords(): IntersectionObserverEntry[] {\n return [];\n }\n}\n\nconst MyIntersectionObserver =\n (typeof globalThis !== 'undefined' && globalThis.IntersectionObserver) ||\n FakeIntersectionObserver;\n\n/**\n * Singleton IntersectionObserver wrapper for observing multiple elements\n * with individual callbacks. This avoids creating multiple IntersectionObserver\n * instances which is more efficient.\n * \n * Provided as an Angular service for better testability and DI integration.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ElementObserver {\n private observer: IntersectionObserver;\n private elementsMap: Map<Element, (entry: IntersectionObserverEntry) => void> = new Map();\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n // Only create real observer in browser environment\n if (isPlatformBrowser(this.platformId)) {\n this.observer = new MyIntersectionObserver(\n this.onObserved,\n ) as IntersectionObserver;\n } else {\n this.observer = new FakeIntersectionObserver();\n }\n }\n\n private onObserved = (entries: IntersectionObserverEntry[]): void => {\n entries.forEach((entry) => {\n const elementCallback = this.elementsMap.get(entry.target as Element);\n if (elementCallback) {\n elementCallback(entry);\n }\n });\n };\n\n public registerCallback(element: Element, callback: (entry: IntersectionObserverEntry) => void): void {\n this.observer.observe(element);\n this.elementsMap.set(element, callback);\n }\n\n public removeCallback(element: Element): void {\n this.observer.unobserve(element);\n this.elementsMap.delete(element);\n }\n}\n\n// Legacy function for backward compatibility\n// New code should inject ElementObserver directly\nlet legacyObserverInstance: ElementObserver | null = null;\n\n/**\n * @deprecated Use dependency injection instead: `inject(ElementObserver)`\n * Get the singleton ElementObserver instance\n */\nexport function getElementObserver(): ElementObserver {\n if (!legacyObserverInstance) {\n legacyObserverInstance = new ElementObserver();\n }\n return legacyObserverInstance;\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\n/**\n * Log levels for Rive debugging.\n * - 'none': No output\n * - 'error': Only errors (default)\n * - 'warn': Errors and warnings\n * - 'info': High-level info (loaded, played)\n * - 'debug': Detailed logs (internal state, events)\n */\nexport type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug';\n\n/**\n * Configuration for Rive debug mode.\n */\nexport interface RiveDebugConfig {\n logLevel: LogLevel;\n}\n\n/**\n * Injection token for global Rive debug configuration.\n * Can be provided via provideRiveDebug().\n */\nexport const RIVE_DEBUG_CONFIG = new InjectionToken<RiveDebugConfig>('RIVE_DEBUG_CONFIG');\n\n/**\n * Provides global configuration for Rive debugging.\n * Use this in your app.config.ts or module providers.\n *\n * @example\n * providers: [\n * provideRiveDebug({ logLevel: 'debug' })\n * ]\n */\nexport function provideRiveDebug(config: RiveDebugConfig): Provider {\n return {\n provide: RIVE_DEBUG_CONFIG,\n useValue: config,\n };\n}\n","import { LogLevel, RiveDebugConfig } from './debug-config';\n\n/**\n * Internal logger for Rive Angular library.\n * Handles log levels and formatting.\n * Not exported publicly.\n */\nexport class RiveLogger {\n private level: LogLevel;\n\n constructor(globalConfig?: RiveDebugConfig | null, localDebug?: boolean) {\n this.level = this.resolveLogLevel(globalConfig, localDebug);\n }\n\n /**\n * Resolve effective log level based on precedence rules:\n * 1. Local debug=true -> 'debug'\n * 2. Local debug=false/undefined -> Use global config\n * 3. No config -> 'error' (default)\n */\n private resolveLogLevel(\n globalConfig?: RiveDebugConfig | null,\n localDebug?: boolean,\n ): LogLevel {\n if (localDebug === true) {\n return 'debug';\n }\n if (globalConfig?.logLevel) {\n return globalConfig.logLevel;\n }\n return 'error';\n }\n\n /**\n * Update log level dynamically (e.g. when input changes)\n */\n public update(\n globalConfig?: RiveDebugConfig | null,\n localDebug?: boolean,\n ): void {\n this.level = this.resolveLogLevel(globalConfig, localDebug);\n }\n\n public debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n console.debug(`[Rive] ${message}`, ...args);\n }\n }\n\n public info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n console.info(`[Rive] ${message}`, ...args);\n }\n }\n\n public warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n console.warn(`[Rive] ${message}`, ...args);\n }\n }\n\n public error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n console.error(`[Rive] ${message}`, ...args);\n }\n }\n\n private shouldLog(level: LogLevel): boolean {\n const levels: LogLevel[] = ['none', 'error', 'warn', 'info', 'debug'];\n const currentIdx = levels.indexOf(this.level);\n const targetIdx = levels.indexOf(level);\n return currentIdx >= targetIdx;\n }\n}\n","import { Rive } from '@rive-app/canvas';\nimport { RiveValidationError } from '../models/rive.model';\nimport { RiveErrorCode, formatErrorMessage } from './error-codes';\nimport { RiveLogger } from './logger';\n\n/**\n * Validates requested artboard name against available artboards.\n * Returns error if not found.\n */\nexport function validateArtboard(\n rive: Rive,\n requestedName?: string,\n): RiveValidationError | null {\n if (!requestedName) return null;\n\n try {\n // Safe check: ensure artboardNames exist on runtime\n // Note: These properties exist at runtime but may not be in type definitions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const available = (rive as any).artboardNames;\n if (!available || !available.includes(requestedName)) {\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.ArtboardNotFound, {\n name: requestedName,\n }),\n RiveErrorCode.ArtboardNotFound,\n available || [],\n available && available.length > 0\n ? `Available artboards: ${available.join(', ')}`\n : 'No artboards found in file',\n );\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Validates requested animation names against available animations.\n * Returns first error found.\n */\nexport function validateAnimations(\n rive: Rive,\n requestedNames?: string | string[],\n): RiveValidationError | null {\n if (!requestedNames) return null;\n\n const names = Array.isArray(requestedNames)\n ? requestedNames\n : [requestedNames];\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const available = (rive as any).animationNames;\n for (const name of names) {\n if (!available || !available.includes(name)) {\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.AnimationNotFound, { name }),\n RiveErrorCode.AnimationNotFound,\n available || [],\n available && available.length > 0\n ? `Available animations: ${available.join(', ')}`\n : 'No animations found in file',\n );\n }\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Validates requested state machine names against available state machines.\n * Returns first error found.\n */\nexport function validateStateMachines(\n rive: Rive,\n requestedNames?: string | string[],\n): RiveValidationError | null {\n if (!requestedNames) return null;\n\n const names = Array.isArray(requestedNames)\n ? requestedNames\n : [requestedNames];\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const available = (rive as any).stateMachineNames;\n for (const name of names) {\n if (!available || !available.includes(name)) {\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.StateMachineNotFound, { name }),\n RiveErrorCode.StateMachineNotFound,\n available || [],\n available && available.length > 0\n ? `Available state machines: ${available.join(', ')}`\n : 'No state machines found in file',\n );\n }\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Validates if an input exists within a specific state machine.\n */\nexport function validateInput(\n rive: Rive,\n stateMachineName: string,\n inputName: string,\n): RiveValidationError | null {\n try {\n const inputs = rive.stateMachineInputs(stateMachineName);\n if (!inputs) return null; // Should not happen if SM exists\n\n const found = inputs.find((i) => i.name === inputName);\n if (!found) {\n const available = inputs.map((i) => i.name);\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.InputNotFound, {\n name: inputName,\n stateMachine: stateMachineName,\n }),\n RiveErrorCode.InputNotFound,\n available,\n available.length > 0\n ? `Available inputs in \"${stateMachineName}\": ${available.join(', ')}`\n : `No inputs found in state machine \"${stateMachineName}\"`,\n );\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Runs full configuration validation.\n * Logs warnings and returns array of errors.\n */\nexport function validateConfiguration(\n rive: Rive,\n config: {\n artboard?: string;\n animations?: string | string[];\n stateMachines?: string | string[];\n },\n logger: RiveLogger,\n): RiveValidationError[] {\n const errors: RiveValidationError[] = [];\n\n const artboardError = validateArtboard(rive, config.artboard);\n if (artboardError) errors.push(artboardError);\n\n const animError = validateAnimations(rive, config.animations);\n if (animError) errors.push(animError);\n\n const smError = validateStateMachines(rive, config.stateMachines);\n if (smError) errors.push(smError);\n\n if (errors.length > 0) {\n logger.warn(`Validation failed with ${errors.length} errors:`);\n errors.forEach((err) => {\n logger.warn(`- ${err.message}`);\n if (err.suggestion) logger.warn(` Suggestion: ${err.suggestion}`);\n });\n }\n\n return errors;\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n input,\n output,\n signal,\n effect,\n inject,\n DestroyRef,\n PLATFORM_ID,\n AfterViewInit,\n NgZone,\n viewChild,\n untracked,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Rive,\n RiveFile,\n Layout,\n Fit,\n Alignment,\n StateMachineInput,\n type LayoutParameters,\n Event as RiveEvent,\n} from '@rive-app/canvas';\nimport { RiveLoadError } from '../models';\nimport {\n ElementObserver,\n RiveLogger,\n RIVE_DEBUG_CONFIG,\n validateConfiguration,\n validateInput,\n RiveErrorCode,\n} from '../utils';\n\n/**\n * Standalone Angular component for Rive animations\n *\n * Features:\n * - Signal-based inputs for reactive updates\n * - Automatic canvas sizing via ResizeObserver with DPR support\n * - OnPush change detection strategy\n * - SSR compatible\n * - Zoneless architecture ready\n * - Automatic resource cleanup\n * - Runs outside Angular zone for optimal performance\n *\n * @example\n * ```html\n * <rive-canvas\n * src=\"assets/animations/rive/animation.riv\"\n * [stateMachines]=\"'StateMachine'\"\n * [autoplay]=\"true\"\n * [fit]=\"Fit.Cover\"\n * [alignment]=\"Alignment.Center\"\n * (loaded)=\"onLoad()\"\n * />\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'rive-canvas',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <canvas #canvas [style.width.%]=\"100\" [style.height.%]=\"100\"></canvas>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n canvas {\n display: block;\n }\n `,\n ],\n})\nexport class RiveCanvasComponent implements AfterViewInit {\n private readonly canvas =\n viewChild.required<ElementRef<HTMLCanvasElement>>('canvas');\n\n readonly #destroyRef = inject(DestroyRef);\n readonly #platformId = inject(PLATFORM_ID);\n readonly #ngZone = inject(NgZone);\n readonly #globalDebugConfig = inject(RIVE_DEBUG_CONFIG, { optional: true });\n readonly #elementObserver = inject(ElementObserver);\n\n public readonly src = input<string>();\n public readonly buffer = input<ArrayBuffer>();\n /**\n * Preloaded RiveFile instance (from RiveFileService).\n * If provided, this takes precedence over src/buffer.\n */\n public readonly riveFile = input<RiveFile>();\n public readonly artboard = input<string>();\n public readonly animations = input<string | string[]>();\n public readonly stateMachines = input<string | string[]>();\n public readonly autoplay = input<boolean>(true);\n public readonly fit = input<Fit>(Fit.Contain);\n public readonly alignment = input<Alignment>(Alignment.Center);\n public readonly useOffscreenRenderer = input<boolean>(false);\n /**\n * Enable IntersectionObserver to automatically stop rendering when canvas is not visible.\n * This optimizes performance by pausing animations that are off-screen.\n */\n public readonly shouldUseIntersectionObserver = input<boolean>(true);\n /**\n * Disable Rive event listeners on the canvas (pointer events, touch events).\n * Useful for decorative animations without interactivity.\n */\n public readonly shouldDisableRiveListeners = input<boolean>(false);\n /**\n * Allow Rive to automatically handle Rive Events (e.g., OpenUrlEvent opens URLs).\n * Default is false for security - events must be handled manually via riveEvent output.\n */\n public readonly automaticallyHandleEvents = input<boolean>(false);\n\n /**\n * Enable debug mode for this specific instance.\n * Overrides global configuration if set.\n * - true: 'debug' level\n * - false/undefined: use global level\n */\n public readonly debugMode = input<boolean>();\n\n // Outputs (Events)\n public readonly loaded = output<void>();\n public readonly loadError = output<Error>();\n /**\n * Emitted when state machine state changes.\n * Contains information about the state change event.\n */\n public readonly stateChange = output<RiveEvent>();\n /**\n * Emitted for Rive Events (custom events defined in the .riv file).\n * Use this to handle custom events like OpenUrlEvent, etc.\n */\n public readonly riveEvent = output<RiveEvent>();\n /**\n * Emitted when Rive instance is fully loaded and ready.\n * Provides direct access to the Rive instance for advanced use cases.\n * Note: This fires AFTER the animation is loaded, not just instantiated.\n */\n public readonly riveReady = output<Rive>();\n\n // Private writable signals\n readonly #isPlaying = signal<boolean>(false);\n readonly #isPaused = signal<boolean>(false);\n readonly #isLoaded = signal<boolean>(false);\n readonly #riveInstance = signal<Rive | null>(null);\n\n // Public readonly signals\n public readonly isPlaying = this.#isPlaying.asReadonly();\n public readonly isPaused = this.#isPaused.asReadonly();\n public readonly isLoaded = this.#isLoaded.asReadonly();\n /**\n * Public signal providing access to the Rive instance.\n * Use this to access advanced Rive SDK features.\n */\n public readonly riveInstance = this.#riveInstance.asReadonly();\n\n // Private state\n #rive: Rive | null = null;\n private readonly logger: RiveLogger;\n private resizeObserver: ResizeObserver | null = null;\n private isInitialized = false;\n private isPausedByIntersectionObserver = false;\n private retestIntersectionTimeoutId: ReturnType<typeof setTimeout> | null =\n null;\n private resizeRafId: number | null = null;\n private lastWidth = 0;\n private lastHeight = 0;\n\n constructor() {\n this.logger = new RiveLogger(this.#globalDebugConfig, this.debugMode());\n\n // Effect to update logger level when debugMode changes\n effect(() => {\n this.logger.update(this.#globalDebugConfig, this.debugMode());\n });\n\n // Effect to reload animation when src, buffer, riveFile, or configuration changes\n effect(() => {\n const src = this.src();\n const buffer = this.buffer();\n const riveFile = this.riveFile();\n // Track configuration changes to trigger reload\n this.artboard();\n this.animations();\n this.stateMachines();\n untracked(() => {\n if (\n (src || buffer || riveFile) &&\n isPlatformBrowser(this.#platformId) &&\n this.isInitialized\n )\n this.loadAnimation();\n });\n });\n\n // Effect to update layout when fit or alignment changes\n effect(() => {\n const fit = this.fit();\n const alignment = this.alignment();\n untracked(() => {\n if (this.#rive && isPlatformBrowser(this.#platformId)) {\n const layoutParams: LayoutParameters = { fit, alignment };\n this.#rive.layout = new Layout(layoutParams);\n }\n });\n });\n\n // Auto cleanup on destroy\n this.#destroyRef.onDestroy(() => {\n this.cleanupRive();\n this.disconnectResizeObserver();\n this.disconnectIntersectionObserver();\n });\n }\n\n public ngAfterViewInit(): void {\n if (isPlatformBrowser(this.#platformId)) {\n this.isInitialized = true;\n this.setupResizeObserver();\n this.setupIntersectionObserver();\n this.loadAnimation();\n }\n }\n\n /**\n * Setup ResizeObserver for automatic canvas sizing with DPR support\n */\n private setupResizeObserver(): void {\n const canvas = this.canvas().nativeElement;\n\n this.resizeObserver = new ResizeObserver((entries) => {\n // Cancel any pending resize frame\n if (this.resizeRafId) {\n cancelAnimationFrame(this.resizeRafId);\n }\n\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n\n // Skip if dimensions haven't changed (prevents unnecessary updates)\n if (width === this.lastWidth && height === this.lastHeight) {\n continue;\n }\n\n this.lastWidth = width;\n this.lastHeight = height;\n\n // Defer resize to next animation frame to prevent excessive updates in Safari\n this.resizeRafId = requestAnimationFrame(() => {\n // Read current DPR to support monitor changes and zoom\n const dpr = window.devicePixelRatio || 1;\n \n // Set canvas size with device pixel ratio for sharp rendering\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n\n // Resize Rive instance if it exists\n if (this.#rive) this.#rive.resizeDrawingSurfaceToCanvas();\n });\n }\n });\n\n this.resizeObserver.observe(canvas);\n }\n\n /**\n * Disconnect ResizeObserver\n */\n private disconnectResizeObserver(): void {\n if (this.resizeRafId) {\n cancelAnimationFrame(this.resizeRafId);\n this.resizeRafId = null;\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n\n /**\n * Setup IntersectionObserver to stop rendering when canvas is not visible\n */\n private setupIntersectionObserver(): void {\n if (!this.shouldUseIntersectionObserver()) return;\n\n const canvas = this.canvas().nativeElement;\n\n const onIntersectionChange = (entry: IntersectionObserverEntry): void => {\n if (entry.isIntersecting) {\n // Canvas is visible - start rendering\n if (this.#rive) {\n this.#rive.startRendering();\n }\n this.isPausedByIntersectionObserver = false;\n } else {\n // Canvas is not visible - stop rendering\n if (this.#rive) {\n this.#rive.stopRendering();\n }\n this.isPausedByIntersectionObserver = true;\n\n // Workaround for Chrome bug with insertBefore\n // Retest after 10ms if boundingClientRect.width is 0\n if (this.retestIntersectionTimeoutId) {\n clearTimeout(this.retestIntersectionTimeoutId);\n }\n\n if (entry.boundingClientRect.width === 0) {\n this.retestIntersectionTimeoutId = setTimeout(() => {\n this.retestIntersection();\n }, 10);\n }\n }\n };\n\n this.#elementObserver.registerCallback(canvas, onIntersectionChange);\n }\n\n /**\n * Retest intersection - workaround for Chrome bug\n */\n private retestIntersection(): void {\n if (!this.isPausedByIntersectionObserver) return;\n\n const canvas = this.canvas().nativeElement;\n const rect = canvas.getBoundingClientRect();\n\n const isIntersecting =\n rect.width > 0 &&\n rect.height > 0 &&\n rect.top <\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.bottom > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.right > 0;\n\n if (isIntersecting && this.#rive) {\n this.#rive.startRendering();\n this.isPausedByIntersectionObserver = false;\n }\n }\n\n /**\n * Disconnect IntersectionObserver\n */\n private disconnectIntersectionObserver(): void {\n if (this.retestIntersectionTimeoutId) {\n clearTimeout(this.retestIntersectionTimeoutId);\n this.retestIntersectionTimeoutId = null;\n }\n\n if (this.shouldUseIntersectionObserver()) {\n const canvas = this.canvas().nativeElement;\n this.#elementObserver.removeCallback(canvas);\n }\n }\n\n /**\n * Load animation from src or buffer\n */\n private loadAnimation(): void {\n // Run outside Angular zone for better performance\n this.#ngZone.runOutsideAngular(() => {\n try {\n // Clean up existing Rive instance only\n this.cleanupRive();\n\n const canvas = this.canvas().nativeElement;\n const src = this.src();\n const buffer = this.buffer();\n const riveFile = this.riveFile();\n\n if (!src && !buffer && !riveFile) {\n this.logger.warn(\n 'No animation source provided (src, buffer, or riveFile)',\n );\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveLoadError({\n message: 'No animation source provided',\n code: RiveErrorCode.NoSource,\n }),\n ),\n );\n return;\n }\n\n this.logger.info(`Loading animation`, {\n src: src || (buffer ? 'buffer' : 'riveFile'),\n canvasWidth: canvas.width,\n canvasHeight: canvas.height,\n dpr: window.devicePixelRatio,\n });\n\n // Build layout configuration\n const layoutParams: LayoutParameters = {\n fit: this.fit(),\n alignment: this.alignment(),\n };\n\n // Build typed Rive configuration\n const baseConfig = {\n canvas,\n autoplay: this.autoplay(),\n layout: new Layout(layoutParams),\n useOffscreenRenderer: this.useOffscreenRenderer(),\n shouldDisableRiveListeners: this.shouldDisableRiveListeners(),\n automaticallyHandleEvents: this.automaticallyHandleEvents(),\n onLoad: () => this.onLoad(),\n onLoadError: (error?: unknown) => this.onLoadError(error),\n onPlay: () => this.onPlay(),\n onPause: () => this.onPause(),\n onStop: () => this.onStop(),\n onStateChange: (event: RiveEvent) => this.onStateChange(event),\n onRiveEvent: (event: RiveEvent) => this.onRiveEvent(event),\n };\n\n // Add source (priority: riveFile > src > buffer)\n const sourceConfig = riveFile\n ? { riveFile }\n : src\n ? { src }\n : buffer\n ? { buffer }\n : {};\n\n // Add optional configuration\n const optionalConfig = {\n ...(this.artboard() ? { artboard: this.artboard() } : {}),\n ...(this.animations() ? { animations: this.animations() } : {}),\n ...(this.stateMachines()\n ? { stateMachines: this.stateMachines() }\n : {}),\n };\n\n // Combine all configurations\n const config = { ...baseConfig, ...sourceConfig, ...optionalConfig };\n\n this.#rive = new Rive(config);\n\n // Update public signal (riveReady will be emitted in onLoad)\n this.#ngZone.run(() => {\n this.#riveInstance.set(this.#rive);\n });\n } catch (error) {\n this.logger.error('Failed to initialize Rive instance:', error);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveLoadError({\n message: 'Failed to initialize Rive instance',\n code: RiveErrorCode.InvalidFormat,\n cause: error instanceof Error ? error : undefined,\n }),\n ),\n );\n }\n });\n }\n\n // Event handlers (run inside Angular zone for change detection)\n private onLoad(): void {\n // Validate loaded configuration\n if (this.#rive) {\n const validationErrors = validateConfiguration(\n this.#rive,\n {\n artboard: this.artboard(),\n animations: this.animations(),\n stateMachines: this.stateMachines(),\n },\n this.logger,\n );\n\n // Emit validation errors via loadError output\n if (validationErrors.length > 0) {\n this.#ngZone.run(() => {\n validationErrors.forEach((err) => this.loadError.emit(err));\n });\n }\n\n // Log available assets in debug mode\n // Note: These properties exist at runtime but may not be in type definitions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const riveWithMetadata = this.#rive as any;\n this.logger.debug('Animation loaded successfully. Available assets:', {\n artboards: riveWithMetadata.artboardNames,\n animations: riveWithMetadata.animationNames,\n stateMachines: riveWithMetadata.stateMachineNames,\n });\n }\n\n this.#ngZone.run(() => {\n this.#isLoaded.set(true);\n this.loaded.emit();\n // Emit riveReady after animation is fully loaded\n if (this.#rive) {\n this.riveReady.emit(this.#rive);\n }\n });\n }\n\n private onLoadError(originalError?: unknown): void {\n this.#ngZone.run(() => {\n // Determine probable cause and code\n let code = RiveErrorCode.NetworkError;\n let message = 'Failed to load Rive animation';\n\n if (originalError instanceof Error) {\n if (originalError.message.includes('404')) {\n code = RiveErrorCode.FileNotFound;\n message = `File not found: ${this.src()}`;\n } else if (originalError.message.includes('format')) {\n code = RiveErrorCode.InvalidFormat;\n message = 'Invalid .riv file format';\n }\n }\n\n const error = new RiveLoadError({\n message,\n code,\n cause: originalError instanceof Error ? originalError : undefined,\n });\n\n this.logger.error('Rive load error:', error);\n this.loadError.emit(error);\n });\n }\n\n private onPlay(): void {\n this.#ngZone.run(() => {\n this.#isPlaying.set(true);\n this.#isPaused.set(false);\n });\n }\n\n private onPause(): void {\n this.#ngZone.run(() => {\n this.#isPlaying.set(false);\n this.#isPaused.set(true);\n });\n }\n\n private onStop(): void {\n this.#ngZone.run(() => {\n this.#isPlaying.set(false);\n this.#isPaused.set(false);\n });\n }\n\n private onStateChange(event: RiveEvent): void {\n this.#ngZone.run(() => this.stateChange.emit(event));\n }\n\n private onRiveEvent(event: RiveEvent): void {\n this.#ngZone.run(() => this.riveEvent.emit(event));\n }\n\n // Public API methods\n\n /**\n * Play animation(s)\n */\n public playAnimation(animations?: string | string[]): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n if (animations) {\n this.#rive!.play(animations);\n } else {\n this.#rive!.play();\n }\n });\n }\n\n /**\n * Pause animation(s)\n */\n public pauseAnimation(animations?: string | string[]): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n if (animations) {\n this.#rive!.pause(animations);\n } else {\n this.#rive!.pause();\n }\n });\n }\n\n /**\n * Stop animation(s)\n */\n public stopAnimation(animations?: string | string[]): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n if (animations) {\n this.#rive!.stop(animations);\n } else {\n this.#rive!.stop();\n }\n });\n }\n\n /**\n * Reset the animation to the beginning\n */\n public reset(): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n this.#rive!.reset();\n });\n }\n\n /**\n * Set a state machine input value\n */\n public setInput(\n stateMachineName: string,\n inputName: string,\n value: number | boolean,\n ): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n // Validate input existence first\n const error = validateInput(this.#rive!, stateMachineName, inputName);\n if (error) {\n this.logger.warn(error.message);\n this.#ngZone.run(() => this.loadError.emit(error));\n return;\n }\n\n const inputs = this.#rive!.stateMachineInputs(stateMachineName);\n const input = inputs.find((i: StateMachineInput) => i.name === inputName);\n\n if (input && 'value' in input) {\n input.value = value;\n }\n });\n }\n\n /**\n * Fire a state machine trigger\n */\n public fireTrigger(stateMachineName: string, triggerName: string): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n // Validate trigger (input) existence first\n const error = validateInput(this.#rive!, stateMachineName, triggerName);\n if (error) {\n this.logger.warn(error.message);\n this.#ngZone.run(() => this.loadError.emit(error));\n return;\n }\n\n const inputs = this.#rive!.stateMachineInputs(stateMachineName);\n const input = inputs.find(\n (i: StateMachineInput) => i.name === triggerName,\n );\n\n if (input && 'fire' in input && typeof input.fire === 'function') {\n input.fire();\n }\n });\n }\n\n /**\n * Clean up Rive instance only\n */\n private cleanupRive(): void {\n if (this.#rive) {\n try {\n this.#rive.cleanup();\n } catch (error) {\n this.logger.warn('Error during Rive cleanup:', error);\n }\n this.#rive = null;\n }\n\n // Reset signals\n this.#riveInstance.set(null);\n this.#isLoaded.set(false);\n this.#isPlaying.set(false);\n this.#isPaused.set(false);\n }\n}\n","import { Injectable, signal, Signal, inject } from '@angular/core';\nimport { RiveFile, EventType } from '@rive-app/canvas';\nimport { RIVE_DEBUG_CONFIG } from '../utils';\nimport { RiveLogger } from '../utils';\n\n/**\n * Status of RiveFile loading\n */\nexport type FileStatus = 'idle' | 'loading' | 'success' | 'failed';\n\n/**\n * State of a loaded RiveFile\n */\nexport interface RiveFileState {\n riveFile: RiveFile | null;\n status: FileStatus;\n}\n\n/**\n * Parameters for loading a RiveFile\n */\nexport interface RiveFileParams {\n src?: string;\n buffer?: ArrayBuffer;\n debug?: boolean;\n}\n\n/**\n * Cache entry for a loaded RiveFile\n */\ninterface CacheEntry {\n file: RiveFile;\n state: Signal<RiveFileState>;\n refCount: number;\n}\n\n/**\n * Pending load entry to prevent duplicate loads\n */\ninterface PendingLoad {\n stateSignal: ReturnType<typeof signal<RiveFileState>>;\n promise: Promise<void>;\n}\n\n/**\n * Service for preloading and caching Rive files.\n *\n * This service allows you to:\n * - Preload .riv files before they're needed\n * - Share the same file across multiple components\n * - Cache files to avoid redundant network requests\n * - Deduplicate concurrent loads of the same file\n *\n * @example\n * ```typescript\n * export class MyComponent {\n * private riveFileService = inject(RiveFileService);\n * private destroyRef = inject(DestroyRef);\n *\n * fileState = this.riveFileService.loadFile({\n * src: 'assets/animation.riv'\n * });\n *\n * constructor() {\n * // Auto-release on component destroy\n * this.destroyRef.onDestroy(() => {\n * this.riveFileService.releaseFile({ src: 'assets/animation.riv' });\n * });\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class RiveFileService {\n private cache = new Map<string, CacheEntry>();\n private pendingLoads = new Map<string, PendingLoad>();\n private bufferIdMap = new WeakMap<ArrayBuffer, number>();\n private bufferIdCounter = 0;\n\n // Optional debug configuration\n private readonly globalDebugConfig = inject(RIVE_DEBUG_CONFIG, {\n optional: true,\n });\n\n /**\n * Load a RiveFile from URL or ArrayBuffer.\n * Returns a signal with the file state and loading status.\n * Files are cached by src URL to avoid redundant loads.\n * Concurrent loads of the same file are deduplicated.\n *\n * @param params - Parameters containing src URL or buffer\n * @returns Signal with RiveFileState\n */\n public loadFile(params: RiveFileParams): Signal<RiveFileState> {\n const cacheKey = this.getCacheKey(params);\n\n // Initialize logger for this request\n const logger = new RiveLogger(this.globalDebugConfig, params.debug);\n logger.debug(`RiveFileService: Request to load file`, { cacheKey });\n\n // Return cached entry if exists\n const cached = this.cache.get(cacheKey);\n if (cached) {\n cached.refCount++;\n logger.debug(`RiveFileService: Cache hit for ${cacheKey}`);\n return cached.state;\n }\n\n // Return pending load if already in progress\n const pending = this.pendingLoads.get(cacheKey);\n if (pending) {\n logger.debug(`RiveFileService: Reuse pending load for ${cacheKey}`);\n return pending.stateSignal.asReadonly();\n }\n\n // Create new loading state\n const stateSignal = signal<RiveFileState>({\n riveFile: null,\n status: 'loading',\n });\n\n // Start loading and track as pending\n const promise = this.loadRiveFile(params, stateSignal, cacheKey, logger);\n this.pendingLoads.set(cacheKey, { stateSignal, promise });\n\n return stateSignal.asReadonly();\n }\n\n /**\n * Release a cached file. Decrements reference count and cleans up if no longer used.\n *\n * @param params - Parameters used to load the file\n */\n public releaseFile(params: RiveFileParams): void {\n const cacheKey = this.getCacheKey(params);\n const cached = this.cache.get(cacheKey);\n\n if (cached) {\n cached.refCount--;\n if (cached.refCount <= 0) {\n try {\n cached.file.cleanup();\n } catch (error) {\n console.warn('Error cleaning up RiveFile:', error);\n }\n this.cache.delete(cacheKey);\n }\n }\n }\n\n /**\n * Clear all cached files and abort pending loads\n */\n public clearCache(): void {\n // Clear pending loads first to prevent them from populating the cache\n this.pendingLoads.forEach((pending) => {\n pending.stateSignal.set({\n riveFile: null,\n status: 'failed',\n });\n });\n this.pendingLoads.clear();\n\n // Clean up cached files\n this.cache.forEach((entry) => {\n try {\n entry.file.cleanup();\n } catch (error) {\n console.warn('Error cleaning up RiveFile:', error);\n }\n });\n this.cache.clear();\n }\n\n /**\n * Get cache key from params\n */\n private getCacheKey(params: RiveFileParams): string {\n if (params.src) {\n return `src:${params.src}`;\n }\n if (params.buffer) {\n // For buffers, use WeakMap to track unique IDs without mutating the buffer\n let bufferId = this.bufferIdMap.get(params.buffer);\n if (bufferId === undefined) {\n bufferId = ++this.bufferIdCounter;\n this.bufferIdMap.set(params.buffer, bufferId);\n }\n return `buffer:${bufferId}`;\n }\n return 'unknown';\n }\n\n /**\n * Load RiveFile and update state signal.\n * Addresses race condition by setting up listeners BEFORE init.\n */\n private async loadRiveFile(\n params: RiveFileParams,\n stateSignal: ReturnType<typeof signal<RiveFileState>>,\n cacheKey: string,\n logger: RiveLogger,\n ): Promise<void> {\n // Guard to ensure pending load is cleaned up exactly once\n let pendingCleanupDone = false;\n const finalizePendingLoadOnce = () => {\n if (!pendingCleanupDone) {\n this.pendingLoads.delete(cacheKey);\n pendingCleanupDone = true;\n }\n };\n\n try {\n // Extract debug parameter - it's not part of RiveFile SDK API\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { debug, ...sdkParams } = params;\n const file = new RiveFile(sdkParams);\n\n // Listeners must be attached BEFORE calling init() to avoid race conditions\n // where init() completes or fails synchronously/immediately.\n file.on(EventType.Load, () => {\n logger.debug(`RiveFileService: File loaded successfully`, { cacheKey });\n\n // Request an instance to increment reference count\n // This prevents the file from being destroyed while in use\n file.getInstance();\n\n stateSignal.set({\n riveFile: file,\n status: 'success',\n });\n\n // Cache the successfully loaded file\n this.cache.set(cacheKey, {\n file,\n state: stateSignal.asReadonly(),\n refCount: 1,\n });\n\n finalizePendingLoadOnce();\n });\n\n file.on(EventType.LoadError, () => {\n logger.warn(`RiveFileService: Failed to load file`, { cacheKey });\n\n stateSignal.set({\n riveFile: null,\n status: 'failed',\n });\n\n finalizePendingLoadOnce();\n });\n\n logger.debug(`RiveFileService: Initializing file`, { cacheKey });\n\n // Await init() to catch initialization errors (e.g. WASM issues)\n await file.init();\n } catch (error) {\n logger.error('RiveFileService: Unexpected error loading file', error);\n\n stateSignal.set({\n riveFile: null,\n status: 'failed',\n });\n\n finalizePendingLoadOnce();\n }\n }\n}\n","/*\n * Public API Surface of @Grandgular/rive-angular\n */\n\n// Component\nexport { RiveCanvasComponent } from './lib/components';\n\n// Services\nexport {\n RiveFileService,\n type RiveFileState,\n type RiveFileParams,\n type FileStatus,\n} from './lib/services';\n\n// Re-exported Rive SDK types and error classes\nexport {\n Fit,\n Alignment,\n RiveLoadError,\n EventType,\n RiveValidationError,\n RiveErrorCode,\n type RiveErrorOptions,\n type RiveEvent\n} from './lib/models';\n\n// Debug Configuration\nexport {\n provideRiveDebug,\n type RiveDebugConfig,\n type LogLevel\n} from './lib/utils/debug-config';\n\n// Re-export commonly used types from @rive-app/canvas for convenience\nexport {\n Rive,\n RiveFile,\n Layout,\n StateMachineInput,\n type LayoutParameters,\n type RiveParameters,\n type RiveFileParameters,\n} from '@rive-app/canvas';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grandgular-rive-angular.mjs","sources":["../../../../libs/rive-angular/src/lib/models/rive.model.ts","../../../../libs/rive-angular/src/lib/utils/error-codes.ts","../../../../libs/rive-angular/src/lib/utils/element-observer.ts","../../../../libs/rive-angular/src/lib/utils/debug-config.ts","../../../../libs/rive-angular/src/lib/utils/logger.ts","../../../../libs/rive-angular/src/lib/utils/validator.ts","../../../../libs/rive-angular/src/lib/utils/color-parser.ts","../../../../libs/rive-angular/src/lib/components/rive-canvas.component.ts","../../../../libs/rive-angular/src/lib/services/rive-file.service.ts","../../../../libs/rive-angular/src/index.ts","../../../../libs/rive-angular/src/grandgular-rive-angular.ts"],"sourcesContent":["import { RiveErrorCode } from '../utils';\n\n/**\n * Re-export Rive SDK types for consumer convenience\n */\nexport { Fit, Alignment, EventType } from '@rive-app/canvas';\nexport type { Event as RiveEvent } from '@rive-app/canvas';\n\n/**\n * Options for constructing a RiveLoadError with detailed context.\n */\nexport interface RiveErrorOptions {\n message: string;\n code?: RiveErrorCode;\n suggestion?: string;\n docsUrl?: string;\n cause?: unknown;\n}\n\n/**\n * Error thrown when Rive animation fails to load.\n * Supports legacy constructor for backward compatibility.\n */\nexport class RiveLoadError extends Error {\n public readonly code?: RiveErrorCode;\n public readonly suggestion?: string;\n public readonly docsUrl?: string;\n public readonly originalError?: Error;\n\n constructor(\n messageOrOptions: string | RiveErrorOptions,\n originalError?: unknown,\n ) {\n if (typeof messageOrOptions === 'string') {\n // Legacy constructor: new RiveLoadError(message, originalError)\n super(messageOrOptions);\n this.originalError =\n originalError instanceof Error ? originalError : undefined;\n } else {\n // New constructor: new RiveLoadError(options)\n super(messageOrOptions.message);\n this.code = messageOrOptions.code;\n this.suggestion = messageOrOptions.suggestion;\n this.docsUrl = messageOrOptions.docsUrl;\n this.originalError =\n messageOrOptions.cause instanceof Error\n ? messageOrOptions.cause\n : undefined;\n }\n this.name = 'RiveLoadError';\n }\n}\n\n/**\n * Error thrown when validation fails (e.g. missing artboard/animation/input).\n * These errors are typically non-fatal but indicate a configuration mismatch.\n */\nexport class RiveValidationError extends Error {\n constructor(\n message: string,\n public readonly code: RiveErrorCode,\n public readonly availableOptions?: string[],\n public readonly suggestion?: string,\n ) {\n super(message);\n this.name = 'RiveValidationError';\n }\n}\n","/**\n * Error codes used throughout the Rive Angular library.\n *\n * Ranges:\n * - RIVE_1xx: Load errors (file not found, network, bad format)\n * - RIVE_2xx: Validation errors (artboard, animation, state machine mismatch)\n * - RIVE_3xx: Configuration/Usage errors (missing source, bad canvas)\n * - RIVE_4xx: Data Binding errors (ViewModel, property not found, type mismatch)\n */\nexport enum RiveErrorCode {\n // Load Errors\n FileNotFound = 'RIVE_101',\n InvalidFormat = 'RIVE_102',\n NetworkError = 'RIVE_103',\n\n // Validation Errors\n ArtboardNotFound = 'RIVE_201',\n AnimationNotFound = 'RIVE_202',\n StateMachineNotFound = 'RIVE_203',\n InputNotFound = 'RIVE_204',\n TextRunNotFound = 'RIVE_205',\n\n // Configuration Errors\n NoSource = 'RIVE_301',\n InvalidCanvas = 'RIVE_302',\n\n // Data Binding Errors\n ViewModelNotFound = 'RIVE_401',\n DataBindingPropertyNotFound = 'RIVE_402',\n DataBindingTypeMismatch = 'RIVE_403',\n}\n\n/**\n * Template messages for each error code.\n * Used by formatErrorMessage to generate user-friendly descriptions.\n */\nexport const ERROR_MESSAGES: Record<RiveErrorCode, string> = {\n [RiveErrorCode.FileNotFound]: 'File not found: {url}',\n [RiveErrorCode.InvalidFormat]: 'Invalid .riv file format',\n [RiveErrorCode.NetworkError]: 'Network error while loading file',\n [RiveErrorCode.ArtboardNotFound]: 'Artboard \"{name}\" not found',\n [RiveErrorCode.AnimationNotFound]: 'Animation \"{name}\" not found',\n [RiveErrorCode.StateMachineNotFound]: 'State machine \"{name}\" not found',\n [RiveErrorCode.InputNotFound]: 'Input \"{name}\" not found in \"{stateMachine}\"',\n [RiveErrorCode.TextRunNotFound]: 'Text run \"{name}\" not found',\n [RiveErrorCode.NoSource]: 'No animation source provided',\n [RiveErrorCode.InvalidCanvas]: 'Invalid canvas element',\n [RiveErrorCode.ViewModelNotFound]: 'ViewModel \"{name}\" not found',\n [RiveErrorCode.DataBindingPropertyNotFound]:\n 'Data binding property \"{path}\" not found in ViewModel',\n [RiveErrorCode.DataBindingTypeMismatch]:\n 'Data binding type mismatch for \"{path}\": expected {expected}, got {actual}',\n};\n\n/**\n * Formats an error message by replacing placeholders with actual values.\n *\n * @param code - The error code\n * @param params - Record of values to replace in the template (e.g. { name: 'MyAnim' })\n * @returns The formatted error string\n */\nexport function formatErrorMessage(\n code: RiveErrorCode,\n params: Record<string, string> = {},\n): string {\n let message = ERROR_MESSAGES[code] || 'Unknown Rive error';\n\n for (const [key, value] of Object.entries(params)) {\n message = message.replace(`{${key}}`, value);\n }\n\n return message;\n}\n","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Fake IntersectionObserver for environments where it's not available (e.g., SSR)\n */\nclass FakeIntersectionObserver implements IntersectionObserver {\n readonly root: Element | Document | null = null;\n readonly rootMargin: string = '';\n readonly thresholds: ReadonlyArray<number> = [];\n\n observe(): void {\n // Intentionally empty for SSR compatibility\n }\n unobserve(): void {\n // Intentionally empty for SSR compatibility\n }\n disconnect(): void {\n // Intentionally empty for SSR compatibility\n }\n takeRecords(): IntersectionObserverEntry[] {\n return [];\n }\n}\n\nconst MyIntersectionObserver =\n (typeof globalThis !== 'undefined' && globalThis.IntersectionObserver) ||\n FakeIntersectionObserver;\n\n/**\n * Singleton IntersectionObserver wrapper for observing multiple elements\n * with individual callbacks. This avoids creating multiple IntersectionObserver\n * instances which is more efficient.\n * \n * Provided as an Angular service for better testability and DI integration.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ElementObserver {\n private observer: IntersectionObserver;\n private elementsMap: Map<Element, (entry: IntersectionObserverEntry) => void> = new Map();\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor() {\n // Only create real observer in browser environment\n if (isPlatformBrowser(this.platformId)) {\n this.observer = new MyIntersectionObserver(\n this.onObserved,\n ) as IntersectionObserver;\n } else {\n this.observer = new FakeIntersectionObserver();\n }\n }\n\n private onObserved = (entries: IntersectionObserverEntry[]): void => {\n entries.forEach((entry) => {\n const elementCallback = this.elementsMap.get(entry.target as Element);\n if (elementCallback) {\n elementCallback(entry);\n }\n });\n };\n\n public registerCallback(element: Element, callback: (entry: IntersectionObserverEntry) => void): void {\n this.observer.observe(element);\n this.elementsMap.set(element, callback);\n }\n\n public removeCallback(element: Element): void {\n this.observer.unobserve(element);\n this.elementsMap.delete(element);\n }\n}\n\n// Legacy function for backward compatibility\n// New code should inject ElementObserver directly\nlet legacyObserverInstance: ElementObserver | null = null;\n\n/**\n * @deprecated Use dependency injection instead: `inject(ElementObserver)`\n * Get the singleton ElementObserver instance\n */\nexport function getElementObserver(): ElementObserver {\n if (!legacyObserverInstance) {\n legacyObserverInstance = new ElementObserver();\n }\n return legacyObserverInstance;\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\n/**\n * Log levels for Rive debugging.\n * - 'none': No output\n * - 'error': Only errors (default)\n * - 'warn': Errors and warnings\n * - 'info': High-level info (loaded, played)\n * - 'debug': Detailed logs (internal state, events)\n */\nexport type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug';\n\n/**\n * Configuration for Rive debug mode.\n */\nexport interface RiveDebugConfig {\n logLevel: LogLevel;\n}\n\n/**\n * Injection token for global Rive debug configuration.\n * Can be provided via provideRiveDebug().\n */\nexport const RIVE_DEBUG_CONFIG = new InjectionToken<RiveDebugConfig>('RIVE_DEBUG_CONFIG');\n\n/**\n * Provides global configuration for Rive debugging.\n * Use this in your app.config.ts or module providers.\n *\n * @example\n * providers: [\n * provideRiveDebug({ logLevel: 'debug' })\n * ]\n */\nexport function provideRiveDebug(config: RiveDebugConfig): Provider {\n return {\n provide: RIVE_DEBUG_CONFIG,\n useValue: config,\n };\n}\n","import { LogLevel, RiveDebugConfig } from './debug-config';\n\n/**\n * Internal logger for Rive Angular library.\n * Handles log levels and formatting.\n * Not exported publicly.\n */\nexport class RiveLogger {\n private level: LogLevel;\n\n constructor(globalConfig?: RiveDebugConfig | null, localDebug?: boolean) {\n this.level = this.resolveLogLevel(globalConfig, localDebug);\n }\n\n /**\n * Resolve effective log level based on precedence rules:\n * 1. Local debug=true -> 'debug'\n * 2. Local debug=false/undefined -> Use global config\n * 3. No config -> 'error' (default)\n */\n private resolveLogLevel(\n globalConfig?: RiveDebugConfig | null,\n localDebug?: boolean,\n ): LogLevel {\n if (localDebug === true) {\n return 'debug';\n }\n if (globalConfig?.logLevel) {\n return globalConfig.logLevel;\n }\n return 'error';\n }\n\n /**\n * Update log level dynamically (e.g. when input changes)\n */\n public update(\n globalConfig?: RiveDebugConfig | null,\n localDebug?: boolean,\n ): void {\n this.level = this.resolveLogLevel(globalConfig, localDebug);\n }\n\n public debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n console.debug(`[Rive] ${message}`, ...args);\n }\n }\n\n public info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n console.info(`[Rive] ${message}`, ...args);\n }\n }\n\n public warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n console.warn(`[Rive] ${message}`, ...args);\n }\n }\n\n public error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n console.error(`[Rive] ${message}`, ...args);\n }\n }\n\n private shouldLog(level: LogLevel): boolean {\n const levels: LogLevel[] = ['none', 'error', 'warn', 'info', 'debug'];\n const currentIdx = levels.indexOf(this.level);\n const targetIdx = levels.indexOf(level);\n return currentIdx >= targetIdx;\n }\n}\n","import { Rive } from '@rive-app/canvas';\nimport { RiveValidationError } from '../models/rive.model';\nimport { RiveErrorCode, formatErrorMessage } from './error-codes';\nimport { RiveLogger } from './logger';\n\n/**\n * Validates requested artboard name against available artboards.\n * Returns error if not found.\n */\nexport function validateArtboard(\n rive: Rive,\n requestedName?: string,\n): RiveValidationError | null {\n if (!requestedName) return null;\n\n try {\n // Safe check: ensure artboardNames exist on runtime\n // Note: These properties exist at runtime but may not be in type definitions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const available = (rive as any).artboardNames;\n if (!available || !available.includes(requestedName)) {\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.ArtboardNotFound, {\n name: requestedName,\n }),\n RiveErrorCode.ArtboardNotFound,\n available || [],\n available && available.length > 0\n ? `Available artboards: ${available.join(', ')}`\n : 'No artboards found in file',\n );\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Validates requested animation names against available animations.\n * Returns first error found.\n */\nexport function validateAnimations(\n rive: Rive,\n requestedNames?: string | string[],\n): RiveValidationError | null {\n if (!requestedNames) return null;\n\n const names = Array.isArray(requestedNames)\n ? requestedNames\n : [requestedNames];\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const available = (rive as any).animationNames;\n for (const name of names) {\n if (!available || !available.includes(name)) {\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.AnimationNotFound, { name }),\n RiveErrorCode.AnimationNotFound,\n available || [],\n available && available.length > 0\n ? `Available animations: ${available.join(', ')}`\n : 'No animations found in file',\n );\n }\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Validates requested state machine names against available state machines.\n * Returns first error found.\n */\nexport function validateStateMachines(\n rive: Rive,\n requestedNames?: string | string[],\n): RiveValidationError | null {\n if (!requestedNames) return null;\n\n const names = Array.isArray(requestedNames)\n ? requestedNames\n : [requestedNames];\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const available = (rive as any).stateMachineNames;\n for (const name of names) {\n if (!available || !available.includes(name)) {\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.StateMachineNotFound, { name }),\n RiveErrorCode.StateMachineNotFound,\n available || [],\n available && available.length > 0\n ? `Available state machines: ${available.join(', ')}`\n : 'No state machines found in file',\n );\n }\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Validates if an input exists within a specific state machine.\n */\nexport function validateInput(\n rive: Rive,\n stateMachineName: string,\n inputName: string,\n): RiveValidationError | null {\n try {\n const inputs = rive.stateMachineInputs(stateMachineName);\n if (!inputs) return null; // Should not happen if SM exists\n\n const found = inputs.find((i) => i.name === inputName);\n if (!found) {\n const available = inputs.map((i) => i.name);\n return new RiveValidationError(\n formatErrorMessage(RiveErrorCode.InputNotFound, {\n name: inputName,\n stateMachine: stateMachineName,\n }),\n RiveErrorCode.InputNotFound,\n available,\n available.length > 0\n ? `Available inputs in \"${stateMachineName}\": ${available.join(', ')}`\n : `No inputs found in state machine \"${stateMachineName}\"`,\n );\n }\n } catch {\n // Graceful fallback if runtime metadata is not accessible\n // Return null silently to avoid breaking validation flow\n }\n return null;\n}\n\n/**\n * Runs full configuration validation.\n * Logs warnings and returns array of errors.\n */\nexport function validateConfiguration(\n rive: Rive,\n config: {\n artboard?: string;\n animations?: string | string[];\n stateMachines?: string | string[];\n },\n logger: RiveLogger,\n): RiveValidationError[] {\n const errors: RiveValidationError[] = [];\n\n const artboardError = validateArtboard(rive, config.artboard);\n if (artboardError) errors.push(artboardError);\n\n const animError = validateAnimations(rive, config.animations);\n if (animError) errors.push(animError);\n\n const smError = validateStateMachines(rive, config.stateMachines);\n if (smError) errors.push(smError);\n\n if (errors.length > 0) {\n logger.warn(`Validation failed with ${errors.length} errors:`);\n errors.forEach((err) => {\n logger.warn(`- ${err.message}`);\n if (err.suggestion) logger.warn(` Suggestion: ${err.suggestion}`);\n });\n }\n\n return errors;\n}\n","import { RiveColor } from '../models/data-binding.types';\n\n/**\n * Parses various color input formats into a normalized RiveColor object.\n *\n * Supported formats:\n * - Hex string: '#RRGGBB' or '#RRGGBBAA'\n * - ARGB integer: 0xAARRGGBB (32-bit integer)\n * - RiveColor object: { r, g, b, a? }\n *\n * @param input - Color in any supported format\n * @returns Normalized RiveColor object with all components in 0-255 range\n * @throws Error if the input format is invalid\n *\n * @example\n * parseRiveColor('#FF5733') // { r: 255, g: 87, b: 51, a: 255 }\n * parseRiveColor('#FF573380') // { r: 255, g: 87, b: 51, a: 128 }\n * parseRiveColor(0x80FF5733) // { r: 255, g: 87, b: 51, a: 128 }\n * parseRiveColor({ r: 255, g: 0, b: 0 }) // { r: 255, g: 0, b: 0, a: 255 }\n */\nexport function parseRiveColor(\n input: string | number | RiveColor,\n): RiveColor {\n // If already a RiveColor object, normalize it\n if (typeof input === 'object' && input !== null) {\n return {\n r: clamp(Math.round(input.r), 0, 255),\n g: clamp(Math.round(input.g), 0, 255),\n b: clamp(Math.round(input.b), 0, 255),\n a: clamp(Math.round(input.a ?? 255), 0, 255),\n };\n }\n\n // If hex string\n if (typeof input === 'string') {\n return parseHexColor(input);\n }\n\n // If ARGB integer\n if (typeof input === 'number') {\n return parseArgbInteger(input);\n }\n\n throw new Error(\n `Invalid color format: ${input}. Expected hex string, ARGB integer, or RiveColor object.`,\n );\n}\n\n/**\n * Converts a RiveColor object to an ARGB 32-bit integer.\n *\n * @param color - RiveColor object\n * @returns ARGB integer in format 0xAARRGGBB\n *\n * @example\n * riveColorToArgb({ r: 255, g: 0, b: 0, a: 255 }) // 0xFFFF0000\n * riveColorToArgb({ r: 0, g: 128, b: 255, a: 128 }) // 0x800080FF\n */\nexport function riveColorToArgb(color: RiveColor): number {\n const a = clamp(Math.round(color.a), 0, 255);\n const r = clamp(Math.round(color.r), 0, 255);\n const g = clamp(Math.round(color.g), 0, 255);\n const b = clamp(Math.round(color.b), 0, 255);\n\n return ((a << 24) | (r << 16) | (g << 8) | b) >>> 0;\n}\n\n/**\n * Converts a RiveColor object to a hex string.\n *\n * @param color - RiveColor object\n * @returns Hex string in format '#RRGGBBAA'\n *\n * @example\n * riveColorToHex({ r: 255, g: 0, b: 0, a: 255 }) // '#FF0000FF'\n * riveColorToHex({ r: 0, g: 128, b: 255, a: 128 }) // '#0080FF80'\n */\nexport function riveColorToHex(color: RiveColor): string {\n const r = clamp(Math.round(color.r), 0, 255)\n .toString(16)\n .padStart(2, '0');\n const g = clamp(Math.round(color.g), 0, 255)\n .toString(16)\n .padStart(2, '0');\n const b = clamp(Math.round(color.b), 0, 255)\n .toString(16)\n .padStart(2, '0');\n const a = clamp(Math.round(color.a), 0, 255)\n .toString(16)\n .padStart(2, '0');\n\n return `#${r}${g}${b}${a}`.toUpperCase();\n}\n\n/**\n * Parses a hex color string into a RiveColor object.\n * Supports both '#RRGGBB' and '#RRGGBBAA' formats.\n */\nfunction parseHexColor(hex: string): RiveColor {\n // Remove '#' if present\n const cleanHex = hex.startsWith('#') ? hex.slice(1) : hex;\n\n // Validate hex string\n if (!/^[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$/.test(cleanHex)) {\n throw new Error(\n `Invalid hex color format: ${hex}. Expected '#RRGGBB' or '#RRGGBBAA'.`,\n );\n }\n\n const r = parseInt(cleanHex.slice(0, 2), 16);\n const g = parseInt(cleanHex.slice(2, 4), 16);\n const b = parseInt(cleanHex.slice(4, 6), 16);\n const a = cleanHex.length === 8 ? parseInt(cleanHex.slice(6, 8), 16) : 255;\n\n return { r, g, b, a };\n}\n\n/**\n * Parses an ARGB 32-bit integer into a RiveColor object.\n * Format: 0xAARRGGBB\n */\nfunction parseArgbInteger(argb: number): RiveColor {\n // Ensure it's a valid 32-bit unsigned integer\n const value = argb >>> 0;\n\n const a = (value >> 24) & 0xff;\n const r = (value >> 16) & 0xff;\n const g = (value >> 8) & 0xff;\n const b = value & 0xff;\n\n return { r, g, b, a };\n}\n\n/**\n * Clamps a value between min and max.\n */\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n input,\n output,\n signal,\n effect,\n inject,\n DestroyRef,\n PLATFORM_ID,\n AfterViewInit,\n NgZone,\n viewChild,\n untracked,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Rive,\n RiveFile,\n Layout,\n Fit,\n Alignment,\n StateMachineInput,\n type LayoutParameters,\n Event as RiveEvent,\n ViewModelInstance,\n} from '@rive-app/canvas';\nimport { RiveLoadError } from '../models';\nimport type {\n DataBindingValue,\n DataBindingChangeEvent,\n DataBindingPropertyType,\n RiveColor,\n} from '../models/data-binding.types';\nimport {\n ElementObserver,\n RiveLogger,\n RIVE_DEBUG_CONFIG,\n validateConfiguration,\n validateInput,\n RiveErrorCode,\n formatErrorMessage,\n parseRiveColor,\n} from '../utils';\nimport { RiveValidationError } from '../models';\n\n/**\n * Standalone Angular component for Rive animations\n *\n * Features:\n * - Signal-based inputs for reactive updates\n * - Automatic canvas sizing via ResizeObserver with DPR support\n * - OnPush change detection strategy\n * - SSR compatible\n * - Zoneless architecture ready\n * - Automatic resource cleanup\n * - Runs outside Angular zone for optimal performance\n *\n * @example\n * ```html\n * <rive-canvas\n * src=\"assets/animations/rive/animation.riv\"\n * [stateMachines]=\"'StateMachine'\"\n * [autoplay]=\"true\"\n * [fit]=\"Fit.Cover\"\n * [alignment]=\"Alignment.Center\"\n * (loaded)=\"onLoad()\"\n * />\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'rive-canvas',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <canvas #canvas [style.width.%]=\"100\" [style.height.%]=\"100\"></canvas>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n canvas {\n display: block;\n }\n `,\n ],\n})\nexport class RiveCanvasComponent implements AfterViewInit {\n private readonly canvas =\n viewChild.required<ElementRef<HTMLCanvasElement>>('canvas');\n\n readonly #destroyRef = inject(DestroyRef);\n readonly #platformId = inject(PLATFORM_ID);\n readonly #ngZone = inject(NgZone);\n readonly #globalDebugConfig = inject(RIVE_DEBUG_CONFIG, { optional: true });\n readonly #elementObserver = inject(ElementObserver);\n\n public readonly src = input<string>();\n public readonly buffer = input<ArrayBuffer>();\n /**\n * Preloaded RiveFile instance (from RiveFileService).\n * If provided, this takes precedence over src/buffer.\n */\n public readonly riveFile = input<RiveFile>();\n public readonly artboard = input<string>();\n public readonly animations = input<string | string[]>();\n public readonly stateMachines = input<string | string[]>();\n public readonly autoplay = input<boolean>(true);\n public readonly fit = input<Fit>(Fit.Contain);\n public readonly alignment = input<Alignment>(Alignment.Center);\n public readonly useOffscreenRenderer = input<boolean>(false);\n /**\n * Enable IntersectionObserver to automatically stop rendering when canvas is not visible.\n * This optimizes performance by pausing animations that are off-screen.\n */\n public readonly shouldUseIntersectionObserver = input<boolean>(true);\n /**\n * Disable Rive event listeners on the canvas (pointer events, touch events).\n * Useful for decorative animations without interactivity.\n */\n public readonly shouldDisableRiveListeners = input<boolean>(false);\n /**\n * Allow Rive to automatically handle Rive Events (e.g., OpenUrlEvent opens URLs).\n * Default is false for security - events must be handled manually via riveEvent output.\n */\n public readonly automaticallyHandleEvents = input<boolean>(false);\n\n /**\n * Enable debug mode for this specific instance.\n * Overrides global configuration if set.\n * - true: 'debug' level\n * - false/undefined: use global level\n */\n public readonly debugMode = input<boolean>();\n\n /**\n * Record of text run names to values for declarative text setting.\n * Keys present in this input are CONTROLLED — the input is the source of truth.\n * Keys absent from this input are UNCONTROLLED — managed imperatively.\n * Values are applied reactively when input changes.\n */\n public readonly textRuns = input<Record<string, string>>();\n\n /**\n * Name of the ViewModel to use for data binding.\n * If not provided, uses the default ViewModel for the artboard.\n * Only relevant if the .riv file contains ViewModels.\n */\n public readonly viewModelName = input<string>();\n\n /**\n * Record of ViewModel property paths to values for declarative data binding.\n * Keys present in this input are CONTROLLED — the input is the source of truth.\n * Keys absent from this input are UNCONTROLLED — managed imperatively.\n * Values are applied reactively when input changes.\n *\n * Supports multiple data types: number, string, boolean, RiveColor.\n * The component auto-detects the property type from the ViewModel.\n *\n * @example\n * [dataBindings]=\"{\n * backgroundColor: '#FF5733',\n * score: 42,\n * playerName: 'Alice',\n * isActive: true\n * }\"\n */\n public readonly dataBindings = input<Record<string, DataBindingValue>>();\n\n // Outputs (Events)\n public readonly loaded = output<void>();\n public readonly loadError = output<Error>();\n /**\n * Emitted when state machine state changes.\n * Contains information about the state change event.\n */\n public readonly stateChange = output<RiveEvent>();\n /**\n * Emitted for Rive Events (custom events defined in the .riv file).\n * Use this to handle custom events like OpenUrlEvent, etc.\n */\n public readonly riveEvent = output<RiveEvent>();\n /**\n * Emitted when Rive instance is fully loaded and ready.\n * Provides direct access to the Rive instance for advanced use cases.\n * Note: This fires AFTER the animation is loaded, not just instantiated.\n */\n public readonly riveReady = output<Rive>();\n /**\n * Emitted when a ViewModel property changes from within the animation.\n * Enables two-way data binding between the animation and Angular application.\n * Only fires if the .riv file uses ViewModels with callbacks.\n */\n public readonly dataBindingChange = output<DataBindingChangeEvent>();\n\n // Private writable signals\n readonly #isPlaying = signal<boolean>(false);\n readonly #isPaused = signal<boolean>(false);\n readonly #isLoaded = signal<boolean>(false);\n readonly #riveInstance = signal<Rive | null>(null);\n readonly #viewModelInstance = signal<ViewModelInstance | null>(null);\n\n // Public readonly signals\n public readonly isPlaying = this.#isPlaying.asReadonly();\n public readonly isPaused = this.#isPaused.asReadonly();\n public readonly isLoaded = this.#isLoaded.asReadonly();\n /**\n * Public signal providing access to the Rive instance.\n * Use this to access advanced Rive SDK features.\n */\n public readonly riveInstance = this.#riveInstance.asReadonly();\n /**\n * Public signal providing access to the ViewModel instance.\n * Use this to access advanced ViewModel features for data binding.\n * Returns null if the .riv file doesn't use ViewModels.\n */\n public readonly viewModelInstance = this.#viewModelInstance.asReadonly();\n\n // Private state\n #rive: Rive | null = null;\n private readonly logger: RiveLogger;\n private resizeObserver: ResizeObserver | null = null;\n private isInitialized = false;\n private isPausedByIntersectionObserver = false;\n readonly #viewModelSubscriptionDisposers = new Set<() => void>();\n readonly #localMutationSuppressions = new Map<string, number>();\n private retestIntersectionTimeoutId: ReturnType<typeof setTimeout> | null =\n null;\n private resizeRafId: number | null = null;\n private lastWidth = 0;\n private lastHeight = 0;\n\n constructor() {\n this.logger = new RiveLogger(this.#globalDebugConfig, this.debugMode());\n\n // Effect to update logger level when debugMode changes\n effect(() => {\n this.logger.update(this.#globalDebugConfig, this.debugMode());\n });\n\n // Effect to reload animation when src, buffer, riveFile, or configuration changes\n effect(() => {\n const src = this.src();\n const buffer = this.buffer();\n const riveFile = this.riveFile();\n // Track configuration changes to trigger reload\n this.artboard();\n this.animations();\n this.stateMachines();\n untracked(() => {\n if (\n (src || buffer || riveFile) &&\n isPlatformBrowser(this.#platformId) &&\n this.isInitialized\n )\n this.loadAnimation();\n });\n });\n\n // Effect to update layout when fit or alignment changes\n effect(() => {\n const fit = this.fit();\n const alignment = this.alignment();\n untracked(() => {\n if (this.#rive && isPlatformBrowser(this.#platformId)) {\n const layoutParams: LayoutParameters = { fit, alignment };\n this.#rive.layout = new Layout(layoutParams);\n }\n });\n });\n\n // Effect to apply text runs when input changes or animation loads\n effect(() => {\n const runs = this.textRuns();\n const isLoaded = this.#isLoaded();\n untracked(() => {\n if (runs && isLoaded && this.#rive) {\n this.applyTextRuns(runs);\n }\n });\n });\n\n // Effect to apply data bindings when input changes or animation loads\n effect(() => {\n const bindings = this.dataBindings();\n const isLoaded = this.#isLoaded();\n const vmi = this.#viewModelInstance();\n untracked(() => {\n if (bindings && isLoaded && vmi) {\n this.applyDataBindings(bindings);\n }\n });\n });\n\n // Effect to reinitialize ViewModel when viewModelName changes after load\n effect(() => {\n const viewModelName = this.viewModelName();\n const isLoaded = this.#isLoaded();\n untracked(() => {\n if (isLoaded && this.#rive) {\n this.initializeViewModel();\n }\n });\n });\n\n // Auto cleanup on destroy\n this.#destroyRef.onDestroy(() => {\n this.cleanupRive();\n this.disconnectResizeObserver();\n this.disconnectIntersectionObserver();\n });\n }\n\n public ngAfterViewInit(): void {\n if (isPlatformBrowser(this.#platformId)) {\n this.isInitialized = true;\n this.setupResizeObserver();\n this.setupIntersectionObserver();\n this.loadAnimation();\n }\n }\n\n /**\n * Setup ResizeObserver for automatic canvas sizing with DPR support\n */\n private setupResizeObserver(): void {\n const canvas = this.canvas().nativeElement;\n\n this.resizeObserver = new ResizeObserver((entries) => {\n // Cancel any pending resize frame\n if (this.resizeRafId) {\n cancelAnimationFrame(this.resizeRafId);\n }\n\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n\n // Skip if dimensions haven't changed (prevents unnecessary updates)\n if (width === this.lastWidth && height === this.lastHeight) {\n continue;\n }\n\n this.lastWidth = width;\n this.lastHeight = height;\n\n // Defer resize to next animation frame to prevent excessive updates in Safari\n this.resizeRafId = requestAnimationFrame(() => {\n // Read current DPR to support monitor changes and zoom\n const dpr = window.devicePixelRatio || 1;\n\n // Set canvas size with device pixel ratio for sharp rendering\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n\n // Resize Rive instance if it exists\n if (this.#rive) this.#rive.resizeDrawingSurfaceToCanvas();\n });\n }\n });\n\n this.resizeObserver.observe(canvas);\n }\n\n /**\n * Disconnect ResizeObserver\n */\n private disconnectResizeObserver(): void {\n if (this.resizeRafId) {\n cancelAnimationFrame(this.resizeRafId);\n this.resizeRafId = null;\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n\n /**\n * Setup IntersectionObserver to stop rendering when canvas is not visible\n */\n private setupIntersectionObserver(): void {\n if (!this.shouldUseIntersectionObserver()) return;\n\n const canvas = this.canvas().nativeElement;\n\n const onIntersectionChange = (entry: IntersectionObserverEntry): void => {\n if (entry.isIntersecting) {\n // Canvas is visible - start rendering\n if (this.#rive) {\n this.#rive.startRendering();\n }\n this.isPausedByIntersectionObserver = false;\n } else {\n // Canvas is not visible - stop rendering\n if (this.#rive) {\n this.#rive.stopRendering();\n }\n this.isPausedByIntersectionObserver = true;\n\n // Workaround for Chrome bug with insertBefore\n // Retest after 10ms if boundingClientRect.width is 0\n if (this.retestIntersectionTimeoutId) {\n clearTimeout(this.retestIntersectionTimeoutId);\n }\n\n if (entry.boundingClientRect.width === 0) {\n this.retestIntersectionTimeoutId = setTimeout(() => {\n this.retestIntersection();\n }, 10);\n }\n }\n };\n\n this.#elementObserver.registerCallback(canvas, onIntersectionChange);\n }\n\n /**\n * Retest intersection - workaround for Chrome bug\n */\n private retestIntersection(): void {\n if (!this.isPausedByIntersectionObserver) return;\n\n const canvas = this.canvas().nativeElement;\n const rect = canvas.getBoundingClientRect();\n\n const isIntersecting =\n rect.width > 0 &&\n rect.height > 0 &&\n rect.top <\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.bottom > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.right > 0;\n\n if (isIntersecting && this.#rive) {\n this.#rive.startRendering();\n this.isPausedByIntersectionObserver = false;\n }\n }\n\n /**\n * Disconnect IntersectionObserver\n */\n private disconnectIntersectionObserver(): void {\n if (this.retestIntersectionTimeoutId) {\n clearTimeout(this.retestIntersectionTimeoutId);\n this.retestIntersectionTimeoutId = null;\n }\n\n if (this.shouldUseIntersectionObserver()) {\n const canvas = this.canvas().nativeElement;\n this.#elementObserver.removeCallback(canvas);\n }\n }\n\n /**\n * Load animation from src or buffer\n */\n private loadAnimation(): void {\n // Run outside Angular zone for better performance\n this.#ngZone.runOutsideAngular(() => {\n try {\n // Clean up existing Rive instance only\n this.cleanupRive();\n\n const canvas = this.canvas().nativeElement;\n const src = this.src();\n const buffer = this.buffer();\n const riveFile = this.riveFile();\n\n if (!src && !buffer && !riveFile) {\n this.logger.warn(\n 'No animation source provided (src, buffer, or riveFile)',\n );\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveLoadError({\n message: 'No animation source provided',\n code: RiveErrorCode.NoSource,\n }),\n ),\n );\n return;\n }\n\n this.logger.info(`Loading animation`, {\n src: src || (buffer ? 'buffer' : 'riveFile'),\n canvasWidth: canvas.width,\n canvasHeight: canvas.height,\n dpr: window.devicePixelRatio,\n });\n\n // Build layout configuration\n const layoutParams: LayoutParameters = {\n fit: this.fit(),\n alignment: this.alignment(),\n };\n\n // Build typed Rive configuration\n const baseConfig = {\n canvas,\n autoplay: this.autoplay(),\n layout: new Layout(layoutParams),\n useOffscreenRenderer: this.useOffscreenRenderer(),\n shouldDisableRiveListeners: this.shouldDisableRiveListeners(),\n automaticallyHandleEvents: this.automaticallyHandleEvents(),\n onLoad: () => this.onLoad(),\n onLoadError: (error?: unknown) => this.onLoadError(error),\n onPlay: () => this.onPlay(),\n onPause: () => this.onPause(),\n onStop: () => this.onStop(),\n onStateChange: (event: RiveEvent) => this.onStateChange(event),\n onRiveEvent: (event: RiveEvent) => this.onRiveEvent(event),\n };\n\n // Add source (priority: riveFile > src > buffer)\n const sourceConfig = riveFile\n ? { riveFile }\n : src\n ? { src }\n : buffer\n ? { buffer }\n : {};\n\n // Add optional configuration\n const optionalConfig = {\n ...(this.artboard() ? { artboard: this.artboard() } : {}),\n ...(this.animations() ? { animations: this.animations() } : {}),\n ...(this.stateMachines()\n ? { stateMachines: this.stateMachines() }\n : {}),\n };\n\n // Combine all configurations\n const config = { ...baseConfig, ...sourceConfig, ...optionalConfig };\n\n this.#rive = new Rive(config);\n\n // Update public signal (riveReady will be emitted in onLoad)\n this.#ngZone.run(() => {\n this.#riveInstance.set(this.#rive);\n });\n } catch (error) {\n this.logger.error('Failed to initialize Rive instance:', error);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveLoadError({\n message: 'Failed to initialize Rive instance',\n code: RiveErrorCode.InvalidFormat,\n cause: error instanceof Error ? error : undefined,\n }),\n ),\n );\n }\n });\n }\n\n // Event handlers (run inside Angular zone for change detection)\n private onLoad(): void {\n // Validate loaded configuration\n if (this.#rive) {\n const validationErrors = validateConfiguration(\n this.#rive,\n {\n artboard: this.artboard(),\n animations: this.animations(),\n stateMachines: this.stateMachines(),\n },\n this.logger,\n );\n\n // Emit validation errors via loadError output\n if (validationErrors.length > 0) {\n this.#ngZone.run(() => {\n validationErrors.forEach((err) => this.loadError.emit(err));\n });\n }\n\n // Log available assets in debug mode\n // Note: These properties exist at runtime but may not be in type definitions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const riveWithMetadata = this.#rive as any;\n this.logger.debug('Animation loaded successfully. Available assets:', {\n artboards: riveWithMetadata.artboardNames,\n animations: riveWithMetadata.animationNames,\n stateMachines: riveWithMetadata.stateMachineNames,\n });\n\n // Initialize ViewModel if available\n this.initializeViewModel();\n }\n\n this.#ngZone.run(() => {\n this.#isLoaded.set(true);\n this.loaded.emit();\n // Emit riveReady after animation is fully loaded\n if (this.#rive) {\n this.riveReady.emit(this.#rive);\n }\n });\n }\n\n private onLoadError(originalError?: unknown): void {\n this.#ngZone.run(() => {\n // Determine probable cause and code\n let code = RiveErrorCode.NetworkError;\n let message = 'Failed to load Rive animation';\n\n if (originalError instanceof Error) {\n if (originalError.message.includes('404')) {\n code = RiveErrorCode.FileNotFound;\n message = `File not found: ${this.src()}`;\n } else if (originalError.message.includes('format')) {\n code = RiveErrorCode.InvalidFormat;\n message = 'Invalid .riv file format';\n }\n }\n\n const error = new RiveLoadError({\n message,\n code,\n cause: originalError instanceof Error ? originalError : undefined,\n });\n\n this.logger.error('Rive load error:', error);\n this.loadError.emit(error);\n });\n }\n\n private onPlay(): void {\n this.#ngZone.run(() => {\n this.#isPlaying.set(true);\n this.#isPaused.set(false);\n });\n }\n\n private onPause(): void {\n this.#ngZone.run(() => {\n this.#isPlaying.set(false);\n this.#isPaused.set(true);\n });\n }\n\n private onStop(): void {\n this.#ngZone.run(() => {\n this.#isPlaying.set(false);\n this.#isPaused.set(false);\n });\n }\n\n private onStateChange(event: RiveEvent): void {\n this.#ngZone.run(() => this.stateChange.emit(event));\n }\n\n private onRiveEvent(event: RiveEvent): void {\n this.#ngZone.run(() => this.riveEvent.emit(event));\n }\n\n // Public API methods\n\n /**\n * Play animation(s)\n */\n public playAnimation(animations?: string | string[]): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n if (animations) {\n this.#rive!.play(animations);\n } else {\n this.#rive!.play();\n }\n });\n }\n\n /**\n * Pause animation(s)\n */\n public pauseAnimation(animations?: string | string[]): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n if (animations) {\n this.#rive!.pause(animations);\n } else {\n this.#rive!.pause();\n }\n });\n }\n\n /**\n * Stop animation(s)\n */\n public stopAnimation(animations?: string | string[]): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n if (animations) {\n this.#rive!.stop(animations);\n } else {\n this.#rive!.stop();\n }\n });\n }\n\n /**\n * Reset the animation to the beginning\n */\n public reset(): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n this.#rive!.reset();\n });\n }\n\n /**\n * Set a state machine input value\n */\n public setInput(\n stateMachineName: string,\n inputName: string,\n value: number | boolean,\n ): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n // Validate input existence first\n const error = validateInput(this.#rive!, stateMachineName, inputName);\n if (error) {\n this.logger.warn(error.message);\n this.#ngZone.run(() => this.loadError.emit(error));\n return;\n }\n\n const inputs = this.#rive!.stateMachineInputs(stateMachineName);\n const input = inputs.find((i: StateMachineInput) => i.name === inputName);\n\n if (input && 'value' in input) {\n input.value = value;\n }\n });\n }\n\n /**\n * Fire a state machine trigger\n */\n public fireTrigger(stateMachineName: string, triggerName: string): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n // Validate trigger (input) existence first\n const error = validateInput(this.#rive!, stateMachineName, triggerName);\n if (error) {\n this.logger.warn(error.message);\n this.#ngZone.run(() => this.loadError.emit(error));\n return;\n }\n\n const inputs = this.#rive!.stateMachineInputs(stateMachineName);\n const input = inputs.find(\n (i: StateMachineInput) => i.name === triggerName,\n );\n\n if (input && 'fire' in input && typeof input.fire === 'function') {\n input.fire();\n }\n });\n }\n\n /**\n * Get the current value of a text run.\n * Returns undefined if the text run doesn't exist or Rive instance is not loaded.\n */\n public getTextRunValue(textRunName: string): string | undefined {\n if (!this.#rive) return undefined;\n\n try {\n return this.#ngZone.runOutsideAngular(() => {\n return this.#rive!.getTextRunValue(textRunName);\n });\n } catch (error) {\n this.logger.warn(`Failed to get text run \"${textRunName}\":`, error);\n return undefined;\n }\n }\n\n /**\n * Set a text run value.\n * Warning: If the text run is controlled by textRuns input, this change will be overwritten\n * on the next input update.\n */\n public setTextRunValue(textRunName: string, textRunValue: string): void {\n if (!this.#rive) return;\n\n // Check if this key is controlled by textRuns input\n const controlledRuns = this.textRuns();\n if (controlledRuns && textRunName in controlledRuns) {\n this.logger.warn(\n `Text run \"${textRunName}\" is controlled by textRuns input. This change will be overwritten on next input update.`,\n );\n }\n\n this.#ngZone.runOutsideAngular(() => {\n try {\n this.#rive!.setTextRunValue(textRunName, textRunValue);\n this.logger.debug(`Text run \"${textRunName}\" set to \"${textRunValue}\"`);\n } catch (error) {\n this.logger.warn(`Failed to set text run \"${textRunName}\":`, error);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.TextRunNotFound, {\n name: textRunName,\n }),\n RiveErrorCode.TextRunNotFound,\n ),\n ),\n );\n }\n });\n }\n\n /**\n * Get the current value of a text run at a specific path (for nested artboards/components).\n * Returns undefined if the text run doesn't exist or Rive instance is not loaded.\n */\n public getTextRunValueAtPath(\n textRunName: string,\n path: string,\n ): string | undefined {\n if (!this.#rive) return undefined;\n\n try {\n return this.#ngZone.runOutsideAngular(() => {\n return this.#rive!.getTextRunValueAtPath(textRunName, path);\n });\n } catch (error) {\n this.logger.warn(\n `Failed to get text run \"${textRunName}\" at path \"${path}\":`,\n error,\n );\n return undefined;\n }\n }\n\n /**\n * Set a text run value at a specific path (for nested artboards/components).\n * Note: AtPath text runs are always uncontrolled (not managed by textRuns input).\n */\n public setTextRunValueAtPath(\n textRunName: string,\n textRunValue: string,\n path: string,\n ): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n try {\n this.#rive!.setTextRunValueAtPath(textRunName, textRunValue, path);\n this.logger.debug(\n `Text run \"${textRunName}\" at path \"${path}\" set to \"${textRunValue}\"`,\n );\n } catch (error) {\n this.logger.warn(\n `Failed to set text run \"${textRunName}\" at path \"${path}\":`,\n error,\n );\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.TextRunNotFound, {\n name: textRunName,\n }),\n RiveErrorCode.TextRunNotFound,\n ),\n ),\n );\n }\n });\n }\n\n // ========================================================================\n // Data Binding (ViewModel) Methods\n // ========================================================================\n\n /**\n * Set a data binding value in the ViewModel.\n * Auto-detects the property type and applies the value accordingly.\n * Warning: If the property is controlled by dataBindings input, this change\n * will be overwritten on the next input update.\n */\n public setDataBinding(path: string, value: DataBindingValue): void {\n const vmi = this.#viewModelInstance();\n if (!vmi) {\n this.logger.warn('No ViewModel instance available');\n return;\n }\n\n // Check if this key is controlled by dataBindings input\n const controlledBindings = this.dataBindings();\n if (controlledBindings && path in controlledBindings) {\n this.logger.warn(\n `Data binding \"${path}\" is controlled by dataBindings input. This change will be overwritten on next input update.`,\n );\n }\n\n this.#ngZone.runOutsideAngular(() => {\n this.withLocalMutation(path, () => {\n const resolved = this.resolveViewModelProperty(vmi, path);\n if (!resolved) {\n this.logger.warn(`Data binding property \"${path}\" not found in ViewModel`);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.DataBindingPropertyNotFound, {\n path,\n }),\n RiveErrorCode.DataBindingPropertyNotFound,\n ),\n ),\n );\n return;\n }\n this.tryApplyBinding(path, value, resolved);\n });\n });\n }\n\n /**\n * Get a data binding value from the ViewModel.\n * Auto-detects the property type and returns the value accordingly.\n * Returns undefined if the property doesn't exist or ViewModel is not loaded.\n */\n public getDataBinding(path: string): DataBindingValue | undefined {\n const vmi = this.#viewModelInstance();\n if (!vmi) return undefined;\n\n return this.#ngZone.runOutsideAngular(() => {\n // Try each property type\n const colorProp = vmi.color(path);\n if (colorProp) {\n const argb = colorProp.value;\n const a = (argb >> 24) & 0xff;\n const r = (argb >> 16) & 0xff;\n const g = (argb >> 8) & 0xff;\n const b = argb & 0xff;\n return { r, g, b, a } as RiveColor;\n }\n\n const numberProp = vmi.number(path);\n if (numberProp) return numberProp.value;\n\n const stringProp = vmi.string(path);\n if (stringProp) return stringProp.value;\n\n const boolProp = vmi.boolean(path);\n if (boolProp) return boolProp.value;\n\n const enumProp = vmi.enum(path);\n if (enumProp) return enumProp.value;\n\n return undefined;\n });\n }\n\n /**\n * Fire a trigger property in the ViewModel.\n * Use this for ViewModel-based triggers (data binding).\n * For state machine triggers, use fireTrigger(stateMachineName, triggerName).\n */\n public fireViewModelTrigger(path: string): void {\n const vmi = this.#viewModelInstance();\n if (!vmi) {\n this.logger.warn('No ViewModel instance available');\n return;\n }\n\n this.#ngZone.runOutsideAngular(() => {\n const triggerProp = vmi.trigger(path);\n if (triggerProp) {\n triggerProp.trigger();\n this.logger.debug(`ViewModel trigger \"${path}\" fired`);\n } else {\n this.logger.warn(`ViewModel trigger \"${path}\" not found`);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.DataBindingPropertyNotFound, {\n path,\n }),\n RiveErrorCode.DataBindingPropertyNotFound,\n ),\n ),\n );\n }\n });\n }\n\n /**\n * Set a color value in the ViewModel.\n * Accepts hex string ('#RRGGBB' or '#RRGGBBAA'), ARGB integer, or RiveColor object.\n * Warning: If the property is controlled by dataBindings input, this change\n * will be overwritten on the next input update.\n */\n public setColor(path: string, color: string | number | RiveColor): void {\n const vmi = this.#viewModelInstance();\n if (!vmi) {\n this.logger.warn('No ViewModel instance available');\n return;\n }\n\n // Check if this key is controlled by dataBindings input\n const controlledBindings = this.dataBindings();\n if (controlledBindings && path in controlledBindings) {\n this.logger.warn(\n `Color \"${path}\" is controlled by dataBindings input. This change will be overwritten on next input update.`,\n );\n }\n\n this.#ngZone.runOutsideAngular(() => {\n this.withLocalMutation(path, () => {\n const colorProp = vmi.color(path);\n if (!colorProp) {\n this.logger.warn(`Color property \"${path}\" not found in ViewModel`);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.DataBindingPropertyNotFound, {\n path,\n }),\n RiveErrorCode.DataBindingPropertyNotFound,\n ),\n ),\n );\n return;\n }\n\n try {\n const parsedColor = parseRiveColor(color);\n colorProp.rgba(parsedColor.r, parsedColor.g, parsedColor.b, parsedColor.a);\n this.logger.debug(`Color \"${path}\" set to:`, parsedColor);\n } catch (error) {\n this.logger.warn(`Failed to set color \"${path}\":`, error);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n `Failed to parse color value for \"${path}\": ${error instanceof Error ? error.message : String(error)}`,\n RiveErrorCode.DataBindingTypeMismatch,\n ),\n ),\n );\n }\n });\n });\n }\n\n /**\n * Get a color value from the ViewModel.\n * Returns undefined if the property doesn't exist or ViewModel is not loaded.\n */\n public getColor(path: string): RiveColor | undefined {\n const vmi = this.#viewModelInstance();\n if (!vmi) return undefined;\n\n return this.#ngZone.runOutsideAngular(() => {\n const colorProp = vmi.color(path);\n if (!colorProp) return undefined;\n\n const argb = colorProp.value;\n const a = (argb >> 24) & 0xff;\n const r = (argb >> 16) & 0xff;\n const g = (argb >> 8) & 0xff;\n const b = argb & 0xff;\n\n return { r, g, b, a };\n });\n }\n\n /**\n * Set a color value using RGBA components (0-255).\n * Warning: If the property is controlled by dataBindings input, this change\n * will be overwritten on the next input update.\n */\n public setColorRgba(\n path: string,\n r: number,\n g: number,\n b: number,\n a: number = 255,\n ): void {\n this.setColor(path, { r, g, b, a });\n }\n\n /**\n * Set the opacity of a color (0.0-1.0) while preserving RGB values.\n * Warning: If the property is controlled by dataBindings input, this change\n * will be overwritten on the next input update.\n */\n public setColorOpacity(path: string, opacity: number): void {\n const vmi = this.#viewModelInstance();\n if (!vmi) {\n this.logger.warn('No ViewModel instance available');\n return;\n }\n\n // Validate opacity range\n if (opacity < 0 || opacity > 1) {\n this.logger.warn(`Invalid opacity value ${opacity}: must be between 0.0 and 1.0`);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n `Invalid opacity value for \"${path}\": ${opacity}. Expected value between 0.0 and 1.0.`,\n RiveErrorCode.DataBindingTypeMismatch,\n ),\n ),\n );\n return;\n }\n\n // Check if this key is controlled by dataBindings input\n const controlledBindings = this.dataBindings();\n if (controlledBindings && path in controlledBindings) {\n this.logger.warn(\n `Color \"${path}\" is controlled by dataBindings input. This change will be overwritten on next input update.`,\n );\n }\n\n this.#ngZone.runOutsideAngular(() => {\n this.withLocalMutation(path, () => {\n const colorProp = vmi.color(path);\n if (!colorProp) {\n this.logger.warn(`Color property \"${path}\" not found in ViewModel`);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.DataBindingPropertyNotFound, {\n path,\n }),\n RiveErrorCode.DataBindingPropertyNotFound,\n ),\n ),\n );\n return;\n }\n\n colorProp.opacity(opacity);\n this.logger.debug(`Color \"${path}\" opacity set to ${opacity}`);\n });\n });\n }\n\n /**\n * Apply all text runs from input (controlled keys).\n * Called on every input change or load.\n */\n private applyTextRuns(runs: Record<string, string>): void {\n this.#ngZone.runOutsideAngular(() => {\n for (const [name, value] of Object.entries(runs)) {\n try {\n this.#rive!.setTextRunValue(name, value);\n this.logger.debug(`Text run \"${name}\" set to \"${value}\"`);\n } catch (error) {\n this.logger.warn(`Failed to set text run \"${name}\":`, error);\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.TextRunNotFound, { name }),\n RiveErrorCode.TextRunNotFound,\n ),\n ),\n );\n }\n }\n });\n }\n\n /**\n * Initialize ViewModel instance if available in the loaded file.\n * Called once after animation loads successfully.\n */\n private initializeViewModel(): void {\n if (!this.#rive) return;\n\n this.#ngZone.runOutsideAngular(() => {\n try {\n const viewModelName = this.viewModelName();\n let viewModel;\n\n // Get ViewModel by name or use default\n if (viewModelName) {\n viewModel = this.#rive!.viewModelByName(viewModelName);\n if (!viewModel) {\n this.logger.warn(\n `ViewModel \"${viewModelName}\" not found. Available ViewModels:`,\n this.getAvailableViewModelNames(),\n );\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.ViewModelNotFound, {\n name: viewModelName,\n }),\n RiveErrorCode.ViewModelNotFound,\n this.getAvailableViewModelNames(),\n ),\n ),\n );\n return;\n }\n } else {\n viewModel = this.#rive!.defaultViewModel();\n }\n\n // If no ViewModel found (file doesn't use ViewModels), that's OK\n if (!viewModel) {\n this.logger.debug('No ViewModel found in file (file may not use ViewModels)');\n return;\n }\n\n // Get ViewModel instance\n const viewModelInstance = viewModel.instance();\n if (!viewModelInstance) {\n this.logger.warn('Failed to create ViewModel instance');\n return;\n }\n\n // Bind to artboard\n this.#rive!.bindViewModelInstance(viewModelInstance);\n\n // Update signal\n this.#ngZone.run(() => {\n this.#viewModelInstance.set(viewModelInstance);\n });\n\n // Log ViewModel info in debug mode\n this.logger.debug('ViewModel initialized:', {\n name: viewModel.name,\n properties: this.getViewModelPropertyInfo(viewModelInstance),\n });\n\n // Subscribe to ViewModel property changes for two-way binding\n this.subscribeToViewModelChanges(viewModelInstance);\n } catch (error) {\n this.logger.error('Error initializing ViewModel:', error);\n }\n });\n }\n\n /**\n * Get list of available ViewModel names for error messages.\n */\n private getAvailableViewModelNames(): string[] {\n if (!this.#rive) return [];\n const names: string[] = [];\n const count = this.#rive.viewModelCount;\n for (let i = 0; i < count; i++) {\n const vm = this.#rive.viewModelByIndex(i);\n if (vm) names.push(vm.name);\n }\n return names;\n }\n\n /**\n * Get ViewModel property information for debug logging.\n */\n private getViewModelPropertyInfo(vmi: ViewModelInstance): Record<string, string> {\n const info: Record<string, string> = {};\n try {\n const properties = vmi.properties;\n for (const prop of properties) {\n // Property has name and type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const propAny = prop as any;\n const propertyType = this.normalizeViewModelPropertyType(propAny?.type);\n info[propAny.name || 'unknown'] = propertyType ?? (propAny.type || 'unknown');\n }\n } catch (error) {\n this.logger.warn('Failed to get ViewModel property info:', error);\n }\n return info;\n }\n\n /**\n * Subscribe to ViewModel property changes for two-way data binding.\n * Emits dataBindingChange output when properties change from within the animation.\n */\n private subscribeToViewModelChanges(vmi: ViewModelInstance): void {\n this.cleanupViewModelSubscriptions();\n\n const properties = vmi.properties ?? [];\n if (!Array.isArray(properties)) {\n return;\n }\n\n for (const property of properties) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const propertyAny = property as any;\n const path = propertyAny?.name;\n if (typeof path !== 'string') {\n continue;\n }\n\n const resolved = this.resolveViewModelProperty(vmi, path);\n if (!resolved) {\n continue;\n }\n\n const subscription = this.subscribeToPropertyChanges(\n path,\n resolved.type,\n resolved.accessor,\n );\n\n if (subscription) {\n this.#viewModelSubscriptionDisposers.add(subscription);\n }\n }\n }\n\n /**\n * Subscribe to changes for a specific ViewModel property.\n * Uses multiple event APIs to maximize compatibility with @rive-app/canvas runtime versions.\n */\n private subscribeToPropertyChanges(\n path: string,\n propertyType: DataBindingPropertyType,\n property: unknown,\n ): (() => void) | undefined {\n const propertyAny = property as any;\n if (!propertyAny) {\n return undefined;\n }\n\n const callback = (): void => {\n if (this.shouldSuppressLocalMutation(path)) {\n return;\n }\n\n const value = this.readPropertyValue(propertyType, propertyAny);\n if (value === undefined) return;\n\n this.#ngZone.run(() => {\n this.dataBindingChange.emit({\n path,\n value,\n propertyType,\n });\n });\n };\n\n let unsubscribe: (() => void) | undefined;\n try {\n if (typeof propertyAny.on === 'function') {\n try {\n const handler = propertyAny.on(callback);\n unsubscribe = this.buildUnsubscribeFromHandler(\n propertyAny,\n callback,\n handler,\n );\n } catch {\n const handler = propertyAny.on('change', callback);\n unsubscribe = this.buildUnsubscribeFromHandler(\n propertyAny,\n callback,\n handler,\n true,\n );\n }\n } else if (typeof propertyAny.subscribe === 'function') {\n const handler = propertyAny.subscribe(callback);\n unsubscribe = this.buildUnsubscribeFromHandler(propertyAny, callback, handler);\n } else if (typeof propertyAny.addEventListener === 'function') {\n propertyAny.addEventListener('change', callback);\n unsubscribe = () => propertyAny.removeEventListener?.('change', callback);\n } else if (typeof propertyAny.addListener === 'function') {\n propertyAny.addListener('change', callback);\n unsubscribe = () => propertyAny.removeListener?.('change', callback);\n } else if (typeof propertyAny.onChange === 'function') {\n const handler = propertyAny.onChange(callback);\n unsubscribe = this.buildUnsubscribeFromHandler(propertyAny, callback, handler);\n }\n } catch (error) {\n this.logger.warn(`Failed to subscribe to ViewModel property \"${path}\":`, error);\n }\n\n if (!unsubscribe) {\n this.logger.warn(\n `No supported subscription API found for ViewModel property \"${path}\"`,\n );\n }\n\n return unsubscribe;\n }\n\n private buildUnsubscribeFromHandler(\n property: any,\n callback: () => void,\n handler: unknown,\n useLegacyEventApi?: boolean,\n ): (() => void) | undefined {\n if (typeof handler === 'function') {\n return handler as () => void;\n }\n\n if (handler && typeof handler === 'object' && 'unsubscribe' in handler && typeof handler.unsubscribe === 'function') {\n return () => (handler as { unsubscribe: () => void }).unsubscribe();\n }\n\n if (handler && typeof handler === 'object' && 'dispose' in handler && typeof handler.dispose === 'function') {\n return () => (handler as { dispose: () => void }).dispose();\n }\n\n if (typeof property.off === 'function') {\n return useLegacyEventApi\n ? () => property.off('change', callback)\n : () => property.off(callback);\n }\n\n if (typeof property.remove === 'function') {\n return useLegacyEventApi\n ? () => property.remove('change', callback)\n : () => property.remove(callback);\n }\n\n if (typeof property.removeListener === 'function') {\n return useLegacyEventApi\n ? () => property.removeListener('change', callback)\n : () => property.removeListener(callback);\n }\n\n if (typeof property.unsubscribe === 'function') {\n return () => property.unsubscribe();\n }\n\n return undefined;\n }\n\n private withLocalMutation(path: string, fn: () => void): void {\n const previous = this.#localMutationSuppressions.get(path) ?? 0;\n this.#localMutationSuppressions.set(path, previous + 1);\n\n try {\n fn();\n } finally {\n setTimeout(() => {\n const current = this.#localMutationSuppressions.get(path) ?? 0;\n if (current <= 1) {\n this.#localMutationSuppressions.delete(path);\n } else {\n this.#localMutationSuppressions.set(path, current - 1);\n }\n });\n }\n }\n\n private shouldSuppressLocalMutation(path: string): boolean {\n const current = this.#localMutationSuppressions.get(path);\n if (current === undefined || current <= 0) {\n return false;\n }\n\n if (current <= 1) {\n this.#localMutationSuppressions.delete(path);\n } else {\n this.#localMutationSuppressions.set(path, current - 1);\n }\n\n return true;\n }\n\n private readPropertyValue(\n propertyType: DataBindingPropertyType,\n property: any,\n ): DataBindingValue | undefined {\n if (propertyType === 'color') {\n if (!property || typeof property.value !== 'number') return undefined;\n const argb = property.value;\n const a = (argb >> 24) & 0xff;\n const r = (argb >> 16) & 0xff;\n const g = (argb >> 8) & 0xff;\n const b = argb & 0xff;\n return { r, g, b, a };\n }\n\n if (propertyType === 'number' && typeof property.value === 'number') {\n return property.value;\n }\n\n if (propertyType === 'string' && typeof property.value === 'string') {\n return property.value;\n }\n\n if (propertyType === 'boolean' && typeof property.value === 'boolean') {\n return property.value;\n }\n\n if (propertyType === 'enum' && typeof property.value === 'string') {\n return property.value;\n }\n\n if (propertyType === 'trigger') {\n // Triggers don't have a meaningful value, but we return true to indicate the trigger fired\n return true;\n }\n\n return undefined;\n }\n\n private normalizeViewModelPropertyType(type: unknown): DataBindingPropertyType | null {\n if (typeof type !== 'string') {\n return null;\n }\n\n const normalized = type.toLowerCase();\n if (normalized.includes('color')) return 'color';\n if (normalized.includes('number')) return 'number';\n if (normalized.includes('string')) return 'string';\n if (normalized.includes('boolean')) return 'boolean';\n if (normalized.includes('enum')) return 'enum';\n if (normalized.includes('trigger')) return 'trigger';\n\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private resolveViewModelProperty(\n vmi: ViewModelInstance,\n path: string,\n ): { accessor: any; type: DataBindingPropertyType } | null {\n const color = vmi.color(path);\n if (color) return { accessor: color, type: 'color' };\n\n const number = vmi.number(path);\n if (number) return { accessor: number, type: 'number' };\n\n const string = vmi.string(path);\n if (string) return { accessor: string, type: 'string' };\n\n const bool = vmi.boolean(path);\n if (bool) return { accessor: bool, type: 'boolean' };\n\n const enumProp = vmi.enum(path);\n if (enumProp) return { accessor: enumProp, type: 'enum' };\n\n const trigger = vmi.trigger(path);\n if (trigger) return { accessor: trigger, type: 'trigger' };\n\n return null;\n }\n\n private emitDataBindingTypeMismatch(\n path: string,\n expectedType: DataBindingPropertyType,\n actualType: string,\n ): void {\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.DataBindingTypeMismatch, {\n path,\n expected: expectedType,\n actual: actualType,\n }),\n RiveErrorCode.DataBindingTypeMismatch,\n ),\n ),\n );\n }\n\n private cleanupViewModelSubscriptions(): void {\n this.#viewModelSubscriptionDisposers.forEach((disposer) => {\n try {\n disposer();\n } catch (error) {\n this.logger.warn('Error during ViewModel subscription cleanup:', error);\n }\n });\n this.#viewModelSubscriptionDisposers.clear();\n }\n\n /**\n * Apply all data bindings from input (controlled keys).\n * Called on every input change or load.\n * Auto-detects property type from ViewModel and applies the value accordingly.\n */\n private applyDataBindings(bindings: Record<string, DataBindingValue>): void {\n const vmi = this.#viewModelInstance();\n if (!vmi) return;\n\n this.#ngZone.runOutsideAngular(() => {\n for (const [path, value] of Object.entries(bindings)) {\n try {\n const resolved = this.resolveViewModelProperty(vmi, path);\n if (!resolved) {\n this.logger.warn(\n `Data binding property \"${path}\" not found in ViewModel`,\n );\n this.#ngZone.run(() =>\n this.loadError.emit(\n new RiveValidationError(\n formatErrorMessage(RiveErrorCode.DataBindingPropertyNotFound, {\n path,\n }),\n RiveErrorCode.DataBindingPropertyNotFound,\n ),\n ),\n );\n continue;\n }\n\n let applied = false;\n this.withLocalMutation(path, () => {\n applied = this.tryApplyBinding(path, value, resolved);\n });\n if (applied) {\n this.logger.debug(`Data binding \"${path}\" set to:`, value);\n } else {\n this.logger.warn(\n `Data binding property \"${path}\" has a type mismatch for value type ${typeof value}`,\n );\n }\n } catch (error) {\n this.logger.warn(`Failed to set data binding \"${path}\":`, error);\n }\n }\n });\n }\n\n /**\n * Try to apply a binding value to a resolved ViewModel property.\n * Returns true if successful, false on type mismatch.\n */\n private tryApplyBinding(\n path: string,\n value: DataBindingValue,\n resolved: { accessor: any; type: DataBindingPropertyType },\n ): boolean {\n const { accessor, type } = resolved;\n\n if (type === 'color') {\n if (typeof value === 'object' && value !== null && 'r' in value) {\n // RiveColor object\n const color = value as RiveColor;\n accessor.rgba(color.r, color.g, color.b, color.a);\n return true;\n }\n if (typeof value === 'string' || typeof value === 'number') {\n // Hex string or ARGB integer\n const color = parseRiveColor(value);\n accessor.rgba(color.r, color.g, color.b, color.a);\n return true;\n }\n this.logger.warn(\n `Invalid color value for \"${path}\": expected string, number, or RiveColor`,\n );\n this.emitDataBindingTypeMismatch(path, type, typeof value);\n return false;\n }\n\n if (type === 'number') {\n if (typeof value === 'number') {\n accessor.value = value;\n return true;\n }\n this.logger.warn(\n `Invalid number value for \"${path}\": expected number, got ${typeof value}`,\n );\n this.emitDataBindingTypeMismatch(path, type, typeof value);\n return false;\n }\n\n if (type === 'string') {\n if (typeof value === 'string') {\n accessor.value = value;\n return true;\n }\n this.logger.warn(\n `Invalid string value for \"${path}\": expected string, got ${typeof value}`,\n );\n this.emitDataBindingTypeMismatch(path, type, typeof value);\n return false;\n }\n\n if (type === 'boolean') {\n if (typeof value === 'boolean') {\n accessor.value = value;\n return true;\n }\n this.logger.warn(\n `Invalid boolean value for \"${path}\": expected boolean, got ${typeof value}`,\n );\n this.emitDataBindingTypeMismatch(path, type, typeof value);\n return false;\n }\n\n if (type === 'enum') {\n if (typeof value === 'string') {\n accessor.value = value;\n return true;\n }\n this.logger.warn(\n `Invalid enum value for \"${path}\": expected string, got ${typeof value}`,\n );\n this.emitDataBindingTypeMismatch(path, type, typeof value);\n return false;\n }\n\n if (type === 'trigger') {\n this.logger.warn(`Cannot set trigger property \"${path}\" via setDataBinding`);\n return false;\n }\n\n return false;\n }\n\n /**\n * Clean up Rive instance only\n */\n private cleanupRive(): void {\n this.cleanupViewModelSubscriptions();\n this.#localMutationSuppressions.clear();\n\n const vmi = this.#viewModelInstance();\n if (vmi) {\n try {\n vmi.cleanup();\n } catch (error) {\n this.logger.warn('Error during ViewModel cleanup:', error);\n }\n }\n\n if (this.#rive) {\n try {\n this.#rive.cleanup();\n } catch (error) {\n this.logger.warn('Error during Rive cleanup:', error);\n }\n this.#rive = null;\n }\n\n // Reset signals\n this.#riveInstance.set(null);\n this.#viewModelInstance.set(null);\n this.#isLoaded.set(false);\n this.#isPlaying.set(false);\n this.#isPaused.set(false);\n }\n}\n","import { Injectable, signal, Signal, inject } from '@angular/core';\nimport { RiveFile, EventType } from '@rive-app/canvas';\nimport { RIVE_DEBUG_CONFIG } from '../utils';\nimport { RiveLogger } from '../utils';\n\n/**\n * Status of RiveFile loading\n */\nexport type FileStatus = 'idle' | 'loading' | 'success' | 'failed';\n\n/**\n * State of a loaded RiveFile\n */\nexport interface RiveFileState {\n riveFile: RiveFile | null;\n status: FileStatus;\n}\n\n/**\n * Parameters for loading a RiveFile\n */\nexport interface RiveFileParams {\n src?: string;\n buffer?: ArrayBuffer;\n debug?: boolean;\n}\n\n/**\n * Cache entry for a loaded RiveFile\n */\ninterface CacheEntry {\n file: RiveFile;\n state: Signal<RiveFileState>;\n refCount: number;\n}\n\n/**\n * Pending load entry to prevent duplicate loads\n */\ninterface PendingLoad {\n stateSignal: ReturnType<typeof signal<RiveFileState>>;\n promise: Promise<void>;\n}\n\n/**\n * Service for preloading and caching Rive files.\n *\n * This service allows you to:\n * - Preload .riv files before they're needed\n * - Share the same file across multiple components\n * - Cache files to avoid redundant network requests\n * - Deduplicate concurrent loads of the same file\n *\n * @example\n * ```typescript\n * export class MyComponent {\n * private riveFileService = inject(RiveFileService);\n * private destroyRef = inject(DestroyRef);\n *\n * fileState = this.riveFileService.loadFile({\n * src: 'assets/animation.riv'\n * });\n *\n * constructor() {\n * // Auto-release on component destroy\n * this.destroyRef.onDestroy(() => {\n * this.riveFileService.releaseFile({ src: 'assets/animation.riv' });\n * });\n * }\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class RiveFileService {\n private cache = new Map<string, CacheEntry>();\n private pendingLoads = new Map<string, PendingLoad>();\n private bufferIdMap = new WeakMap<ArrayBuffer, number>();\n private bufferIdCounter = 0;\n\n // Optional debug configuration\n private readonly globalDebugConfig = inject(RIVE_DEBUG_CONFIG, {\n optional: true,\n });\n\n /**\n * Load a RiveFile from URL or ArrayBuffer.\n * Returns a signal with the file state and loading status.\n * Files are cached by src URL to avoid redundant loads.\n * Concurrent loads of the same file are deduplicated.\n *\n * @param params - Parameters containing src URL or buffer\n * @returns Signal with RiveFileState\n */\n public loadFile(params: RiveFileParams): Signal<RiveFileState> {\n const cacheKey = this.getCacheKey(params);\n\n // Initialize logger for this request\n const logger = new RiveLogger(this.globalDebugConfig, params.debug);\n logger.debug(`RiveFileService: Request to load file`, { cacheKey });\n\n // Return cached entry if exists\n const cached = this.cache.get(cacheKey);\n if (cached) {\n cached.refCount++;\n logger.debug(`RiveFileService: Cache hit for ${cacheKey}`);\n return cached.state;\n }\n\n // Return pending load if already in progress\n const pending = this.pendingLoads.get(cacheKey);\n if (pending) {\n logger.debug(`RiveFileService: Reuse pending load for ${cacheKey}`);\n return pending.stateSignal.asReadonly();\n }\n\n // Create new loading state\n const stateSignal = signal<RiveFileState>({\n riveFile: null,\n status: 'loading',\n });\n\n // Start loading and track as pending\n const promise = this.loadRiveFile(params, stateSignal, cacheKey, logger);\n this.pendingLoads.set(cacheKey, { stateSignal, promise });\n\n return stateSignal.asReadonly();\n }\n\n /**\n * Release a cached file. Decrements reference count and cleans up if no longer used.\n *\n * @param params - Parameters used to load the file\n */\n public releaseFile(params: RiveFileParams): void {\n const cacheKey = this.getCacheKey(params);\n const cached = this.cache.get(cacheKey);\n\n if (cached) {\n cached.refCount--;\n if (cached.refCount <= 0) {\n try {\n cached.file.cleanup();\n } catch (error) {\n console.warn('Error cleaning up RiveFile:', error);\n }\n this.cache.delete(cacheKey);\n }\n }\n }\n\n /**\n * Clear all cached files and abort pending loads\n */\n public clearCache(): void {\n // Clear pending loads first to prevent them from populating the cache\n this.pendingLoads.forEach((pending) => {\n pending.stateSignal.set({\n riveFile: null,\n status: 'failed',\n });\n });\n this.pendingLoads.clear();\n\n // Clean up cached files\n this.cache.forEach((entry) => {\n try {\n entry.file.cleanup();\n } catch (error) {\n console.warn('Error cleaning up RiveFile:', error);\n }\n });\n this.cache.clear();\n }\n\n /**\n * Get cache key from params\n */\n private getCacheKey(params: RiveFileParams): string {\n if (params.src) {\n return `src:${params.src}`;\n }\n if (params.buffer) {\n // For buffers, use WeakMap to track unique IDs without mutating the buffer\n let bufferId = this.bufferIdMap.get(params.buffer);\n if (bufferId === undefined) {\n bufferId = ++this.bufferIdCounter;\n this.bufferIdMap.set(params.buffer, bufferId);\n }\n return `buffer:${bufferId}`;\n }\n return 'unknown';\n }\n\n /**\n * Load RiveFile and update state signal.\n * Addresses race condition by setting up listeners BEFORE init.\n */\n private async loadRiveFile(\n params: RiveFileParams,\n stateSignal: ReturnType<typeof signal<RiveFileState>>,\n cacheKey: string,\n logger: RiveLogger,\n ): Promise<void> {\n // Guard to ensure pending load is cleaned up exactly once\n let pendingCleanupDone = false;\n const finalizePendingLoadOnce = () => {\n if (!pendingCleanupDone) {\n this.pendingLoads.delete(cacheKey);\n pendingCleanupDone = true;\n }\n };\n\n try {\n // Extract debug parameter - it's not part of RiveFile SDK API\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { debug, ...sdkParams } = params;\n const file = new RiveFile(sdkParams);\n\n // Listeners must be attached BEFORE calling init() to avoid race conditions\n // where init() completes or fails synchronously/immediately.\n file.on(EventType.Load, () => {\n logger.debug(`RiveFileService: File loaded successfully`, { cacheKey });\n\n // Request an instance to increment reference count\n // This prevents the file from being destroyed while in use\n file.getInstance();\n\n stateSignal.set({\n riveFile: file,\n status: 'success',\n });\n\n // Cache the successfully loaded file\n this.cache.set(cacheKey, {\n file,\n state: stateSignal.asReadonly(),\n refCount: 1,\n });\n\n finalizePendingLoadOnce();\n });\n\n file.on(EventType.LoadError, () => {\n logger.warn(`RiveFileService: Failed to load file`, { cacheKey });\n\n stateSignal.set({\n riveFile: null,\n status: 'failed',\n });\n\n finalizePendingLoadOnce();\n });\n\n logger.debug(`RiveFileService: Initializing file`, { cacheKey });\n\n // Await init() to catch initialization errors (e.g. WASM issues)\n await file.init();\n } catch (error) {\n logger.error('RiveFileService: Unexpected error loading file', error);\n\n stateSignal.set({\n riveFile: null,\n status: 'failed',\n });\n\n finalizePendingLoadOnce();\n }\n }\n}\n","/*\n * Public API Surface of @Grandgular/rive-angular\n */\n\n// Component\nexport { RiveCanvasComponent } from './lib/components';\n\n// Services\nexport {\n RiveFileService,\n type RiveFileState,\n type RiveFileParams,\n type FileStatus,\n} from './lib/services';\n\n// Re-exported Rive SDK types and error classes\nexport {\n Fit,\n Alignment,\n RiveLoadError,\n EventType,\n RiveValidationError,\n RiveErrorCode,\n type RiveErrorOptions,\n type RiveEvent,\n type RiveColor,\n type DataBindingValue,\n type DataBindingChangeEvent,\n type DataBindingPropertyType,\n} from './lib/models';\n\n// Debug Configuration\nexport {\n provideRiveDebug,\n type RiveDebugConfig,\n type LogLevel,\n} from './lib/utils/debug-config';\n\n// Color utilities for data binding\nexport {\n parseRiveColor,\n riveColorToArgb,\n riveColorToHex,\n} from './lib/utils/color-parser';\n\n// Re-export commonly used types from @rive-app/canvas for convenience\nexport {\n Rive,\n RiveFile,\n Layout,\n StateMachineInput,\n ViewModelInstance,\n type LayoutParameters,\n type RiveParameters,\n type RiveFileParameters,\n} from '@rive-app/canvas';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED