{"version":3,"sources":["../src/core/accessibility.ts"],"names":["_AccessibilityManager","config","__publicField","highContrastQuery","reducedMotionQuery","e","event","target","dropzone","fileItems","currentIndex","item","nextIndex","element","root","theme","index","dropzoneElement","itemElement","fileName","descriptionId","description","liveRegion","newConfig","legacyConfig","action","options","label","newTheme","message","AccessibilityManager"],"mappings":"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","file":"chunk-CREK7TLF.cjs","sourcesContent":["export interface AccessibilityConfig {\r\n  enableHighContrast: boolean;\r\n  enableScreenReader: boolean;\r\n  enableKeyboardNavigation: boolean;\r\n  enableFocusIndicators: boolean;\r\n  enableReducedMotion: boolean;\r\n  enableLargeText: boolean;\r\n  enableColorBlindSupport: boolean;\r\n}\r\n\r\nexport interface AccessibilityTheme {\r\n  highContrast: {\r\n    primary: string;\r\n    secondary: string;\r\n    background: string;\r\n    text: string;\r\n    border: string;\r\n    focus: string;\r\n    error: string;\r\n    success: string;\r\n    warning: string;\r\n  };\r\n  reducedMotion: {\r\n    transitionDuration: string;\r\n    animationDuration: string;\r\n  };\r\n  largeText: {\r\n    fontSize: string;\r\n    lineHeight: string;\r\n    spacing: string;\r\n  };\r\n}\r\n\r\nexport class AccessibilityManager {\r\n  private static instance: AccessibilityManager;\r\n  private config: AccessibilityConfig;\r\n  private theme: AccessibilityTheme;\r\n  private isHighContrast: boolean = false;\r\n  private isReducedMotion: boolean = false;\r\n  private isLargeText: boolean = false;\r\n\r\n  // Default high contrast theme\r\n  private static readonly DEFAULT_HIGH_CONTRAST: AccessibilityTheme[\"highContrast\"] =\r\n    {\r\n      primary: \"#ffffff\",\r\n      secondary: \"#000000\",\r\n      background: \"#000000\",\r\n      text: \"#ffffff\",\r\n      border: \"#ffffff\",\r\n      focus: \"#ffff00\",\r\n      error: \"#ff0000\",\r\n      success: \"#00ff00\",\r\n      warning: \"#ffff00\",\r\n    };\r\n\r\n  // Default reduced motion theme\r\n  private static readonly DEFAULT_REDUCED_MOTION: AccessibilityTheme[\"reducedMotion\"] =\r\n    {\r\n      transitionDuration: \"0.1s\",\r\n      animationDuration: \"0.1s\",\r\n    };\r\n\r\n  // Default large text theme\r\n  private static readonly DEFAULT_LARGE_TEXT: AccessibilityTheme[\"largeText\"] =\r\n    {\r\n      fontSize: \"18px\",\r\n      lineHeight: \"1.5\",\r\n      spacing: \"1.2em\",\r\n    };\r\n\r\n  private constructor(config: Partial<AccessibilityConfig> = {}) {\r\n    this.config = {\r\n      enableHighContrast: true,\r\n      enableScreenReader: true,\r\n      enableKeyboardNavigation: true,\r\n      enableFocusIndicators: true,\r\n      enableReducedMotion: true,\r\n      enableLargeText: true,\r\n      enableColorBlindSupport: true,\r\n      ...config,\r\n    };\r\n\r\n    this.theme = {\r\n      highContrast: { ...AccessibilityManager.DEFAULT_HIGH_CONTRAST },\r\n      reducedMotion: { ...AccessibilityManager.DEFAULT_REDUCED_MOTION },\r\n      largeText: { ...AccessibilityManager.DEFAULT_LARGE_TEXT },\r\n    };\r\n\r\n    this.initialize();\r\n  }\r\n\r\n  static getInstance(\r\n    config?: Partial<AccessibilityConfig>\r\n  ): AccessibilityManager {\r\n    if (!AccessibilityManager.instance) {\r\n      AccessibilityManager.instance = new AccessibilityManager(config);\r\n    }\r\n    return AccessibilityManager.instance;\r\n  }\r\n\r\n  private initialize(): void {\r\n    this.detectUserPreferences();\r\n    this.setupEventListeners();\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  private detectUserPreferences(): void {\r\n    // Use configuration values if they are explicitly set, otherwise detect from system\r\n    if (this.config.enableHighContrast !== undefined) {\r\n      this.isHighContrast = this.config.enableHighContrast;\r\n    } else {\r\n      this.isHighContrast = this.detectHighContrastPreference();\r\n    }\r\n\r\n    if (this.config.enableReducedMotion !== undefined) {\r\n      this.isReducedMotion = this.config.enableReducedMotion;\r\n    } else {\r\n      this.isReducedMotion = this.detectReducedMotionPreference();\r\n    }\r\n\r\n    if (this.config.enableLargeText !== undefined) {\r\n      this.isLargeText = this.config.enableLargeText;\r\n    } else {\r\n      this.isLargeText = this.detectLargeTextPreference();\r\n    }\r\n  }\r\n\r\n  private detectHighContrastPreference(): boolean {\r\n    // Check for high contrast media query\r\n    if (window.matchMedia) {\r\n      return window.matchMedia(\"(prefers-contrast: high)\").matches;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private detectReducedMotionPreference(): boolean {\r\n    // Check for reduced motion media query\r\n    if (window.matchMedia) {\r\n      return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private detectLargeTextPreference(): boolean {\r\n    // Check for large text preference\r\n    if (window.matchMedia) {\r\n      return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private setupEventListeners(): void {\r\n    // Listen for preference changes\r\n    if (window.matchMedia) {\r\n      const highContrastQuery = window.matchMedia(\"(prefers-contrast: high)\");\r\n      const reducedMotionQuery = window.matchMedia(\r\n        \"(prefers-reduced-motion: reduce)\"\r\n      );\r\n\r\n      highContrastQuery.addEventListener(\"change\", (e) => {\r\n        this.isHighContrast = e.matches;\r\n        this.applyAccessibilityFeatures();\r\n      });\r\n\r\n      reducedMotionQuery.addEventListener(\"change\", (e) => {\r\n        this.isReducedMotion = e.matches;\r\n        this.applyAccessibilityFeatures();\r\n      });\r\n    }\r\n\r\n    // Listen for keyboard navigation\r\n    if (this.config.enableKeyboardNavigation) {\r\n      document.addEventListener(\r\n        \"keydown\",\r\n        this.handleKeyboardNavigation.bind(this)\r\n      );\r\n    }\r\n  }\r\n\r\n  private handleKeyboardNavigation(event: KeyboardEvent): void {\r\n    const target = event.target as HTMLElement;\r\n\r\n    // Skip if target is not in our dropzone\r\n    if (!target.closest(\"[data-dropzone]\")) {\r\n      return;\r\n    }\r\n\r\n    switch (event.key) {\r\n      case \"Tab\":\r\n        this.handleTabNavigation(event);\r\n        break;\r\n      case \"Enter\":\r\n      case \" \":\r\n        this.handleActivation(event);\r\n        break;\r\n      case \"Escape\":\r\n        this.handleEscape(event);\r\n        break;\r\n      case \"ArrowUp\":\r\n      case \"ArrowDown\":\r\n        this.handleArrowNavigation(event);\r\n        break;\r\n    }\r\n  }\r\n\r\n  private handleTabNavigation(event: KeyboardEvent): void {\r\n    // Ensure focus indicators are visible\r\n    if (this.config.enableFocusIndicators) {\r\n      this.showFocusIndicator(event.target as HTMLElement);\r\n    }\r\n  }\r\n\r\n  private handleActivation(event: KeyboardEvent): void {\r\n    const target = event.target as HTMLElement;\r\n\r\n    // Handle different types of interactive elements\r\n    if (target.hasAttribute(\"data-file-item\")) {\r\n      this.activateFileItem(target);\r\n    } else if (target.hasAttribute(\"data-upload-button\")) {\r\n      this.activateUploadButton(target);\r\n    } else if (target.hasAttribute(\"data-clear-button\")) {\r\n      this.activateClearButton(target);\r\n    }\r\n  }\r\n\r\n  private handleEscape(event: KeyboardEvent): void {\r\n    // Close any open modals or focus on main dropzone\r\n    const dropzone = (event.target as HTMLElement).closest(\"[data-dropzone]\");\r\n    if (dropzone) {\r\n      (dropzone as HTMLElement).focus();\r\n    }\r\n  }\r\n\r\n  private handleArrowNavigation(event: KeyboardEvent): void {\r\n    const target = event.target as HTMLElement;\r\n    const fileItems = Array.from(\r\n      target.closest(\"[data-dropzone]\")?.querySelectorAll(\"[data-file-item]\") ||\r\n        []\r\n    );\r\n\r\n    if (fileItems.length === 0) return;\r\n\r\n    const currentIndex = fileItems.findIndex((item) => item === target);\r\n    if (currentIndex === -1) return;\r\n\r\n    let nextIndex: number;\r\n    if (event.key === \"ArrowDown\") {\r\n      nextIndex = (currentIndex + 1) % fileItems.length;\r\n    } else {\r\n      nextIndex = currentIndex === 0 ? fileItems.length - 1 : currentIndex - 1;\r\n    }\r\n\r\n    (fileItems[nextIndex] as HTMLElement).focus();\r\n  }\r\n\r\n  private activateFileItem(element: HTMLElement): void {\r\n    // Simulate click on file item\r\n    element.click();\r\n  }\r\n\r\n  private activateUploadButton(element: HTMLElement): void {\r\n    // Simulate click on upload button\r\n    element.click();\r\n  }\r\n\r\n  private activateClearButton(element: HTMLElement): void {\r\n    // Simulate click on clear button\r\n    element.click();\r\n  }\r\n\r\n  private showFocusIndicator(element: HTMLElement): void {\r\n    // Add focus indicator styles\r\n    element.style.outline = `2px solid ${this.theme.highContrast.focus}`;\r\n    element.style.outlineOffset = \"2px\";\r\n\r\n    // Remove focus indicator after a delay\r\n    setTimeout(() => {\r\n      element.style.outline = \"\";\r\n      element.style.outlineOffset = \"\";\r\n    }, 3000);\r\n  }\r\n\r\n  private applyAccessibilityFeatures(): void {\r\n    this.applyHighContrast();\r\n    this.applyReducedMotion();\r\n    this.applyLargeText();\r\n    this.applyScreenReaderSupport();\r\n  }\r\n\r\n  private applyHighContrast(): void {\r\n    if (!this.isHighContrast) return;\r\n\r\n    const root = document.documentElement;\r\n    const theme = this.theme.highContrast;\r\n\r\n    // Apply high contrast CSS variables\r\n    root.style.setProperty(\"--ac-primary-color\", theme.primary);\r\n    root.style.setProperty(\"--ac-secondary-color\", theme.secondary);\r\n    root.style.setProperty(\"--ac-background-color\", theme.background);\r\n    root.style.setProperty(\"--ac-text-color\", theme.text);\r\n    root.style.setProperty(\"--ac-border-color\", theme.border);\r\n    root.style.setProperty(\"--ac-focus-color\", theme.focus);\r\n    root.style.setProperty(\"--ac-error-color\", theme.error);\r\n    root.style.setProperty(\"--ac-success-color\", theme.success);\r\n    root.style.setProperty(\"--ac-warning-color\", theme.warning);\r\n\r\n    // Add high contrast class\r\n    document.body.classList.add(\"ac-high-contrast\");\r\n  }\r\n\r\n  private applyReducedMotion(): void {\r\n    if (!this.isReducedMotion) return;\r\n\r\n    const root = document.documentElement;\r\n    const theme = this.theme.reducedMotion;\r\n\r\n    // Apply reduced motion CSS variables\r\n    root.style.setProperty(\r\n      \"--ac-transition-duration\",\r\n      theme.transitionDuration\r\n    );\r\n    root.style.setProperty(\"--ac-animation-duration\", theme.animationDuration);\r\n\r\n    // Add reduced motion class\r\n    document.body.classList.add(\"ac-reduced-motion\");\r\n  }\r\n\r\n  private applyLargeText(): void {\r\n    if (!this.isLargeText) return;\r\n\r\n    const root = document.documentElement;\r\n    const theme = this.theme.largeText;\r\n\r\n    // Apply large text CSS variables\r\n    root.style.setProperty(\"--ac-font-size\", theme.fontSize);\r\n    root.style.setProperty(\"--ac-line-height\", theme.lineHeight);\r\n    root.style.setProperty(\"--ac-spacing\", theme.spacing);\r\n\r\n    // Add large text class\r\n    document.body.classList.add(\"ac-large-text\");\r\n  }\r\n\r\n  private applyScreenReaderSupport(): void {\r\n    if (!this.config.enableScreenReader) return;\r\n\r\n    // Add ARIA labels and descriptions\r\n    this.addAriaLabels();\r\n    this.addAriaDescriptions();\r\n    this.addAriaLiveRegions();\r\n  }\r\n\r\n  private addAriaLabels(): void {\r\n    // Add ARIA labels to interactive elements\r\n    const dropzones = document.querySelectorAll(\"[data-dropzone]\");\r\n    dropzones.forEach((dropzone, index) => {\r\n      const dropzoneElement = dropzone as HTMLElement;\r\n      dropzoneElement.setAttribute(\r\n        \"aria-label\",\r\n        `File upload area ${index + 1}`\r\n      );\r\n      dropzoneElement.setAttribute(\r\n        \"aria-describedby\",\r\n        `dropzone-description-${index + 1}`\r\n      );\r\n    });\r\n\r\n    const fileItems = document.querySelectorAll(\"[data-file-item]\");\r\n    fileItems.forEach((item, index) => {\r\n      const itemElement = item as HTMLElement;\r\n      const fileName =\r\n        itemElement.getAttribute(\"data-file-name\") || `File ${index + 1}`;\r\n      itemElement.setAttribute(\r\n        \"aria-label\",\r\n        `${fileName}, click to view details`\r\n      );\r\n    });\r\n  }\r\n\r\n  private addAriaDescriptions(): void {\r\n    // Add ARIA descriptions\r\n    const dropzones = document.querySelectorAll(\"[data-dropzone]\");\r\n    dropzones.forEach((dropzone, index) => {\r\n      const descriptionId = `dropzone-description-${index + 1}`;\r\n      const description = document.createElement(\"div\");\r\n      description.id = descriptionId;\r\n      description.setAttribute(\"aria-hidden\", \"true\");\r\n      description.style.position = \"absolute\";\r\n      description.style.left = \"-10000px\";\r\n      description.style.width = \"1px\";\r\n      description.style.height = \"1px\";\r\n      description.style.overflow = \"hidden\";\r\n      description.textContent =\r\n        \"Drag and drop files here or click to browse. Supported formats: images, PDFs, and text files.\";\r\n\r\n      dropzone.appendChild(description);\r\n    });\r\n  }\r\n\r\n  private addAriaLiveRegions(): void {\r\n    // Add ARIA live regions for dynamic content\r\n    const liveRegion = document.createElement(\"div\");\r\n    liveRegion.setAttribute(\"aria-live\", \"polite\");\r\n    liveRegion.setAttribute(\"aria-atomic\", \"false\");\r\n    liveRegion.setAttribute(\"aria-relevant\", \"additions removals\");\r\n    liveRegion.style.position = \"absolute\";\r\n    liveRegion.style.left = \"-10000px\";\r\n    liveRegion.style.width = \"1px\";\r\n    liveRegion.style.height = \"1px\";\r\n    liveRegion.style.overflow = \"hidden\";\r\n\r\n    document.body.appendChild(liveRegion);\r\n  }\r\n\r\n  // Public methods for external control\r\n  updateConfig(\r\n    newConfig:\r\n      | Partial<AccessibilityConfig>\r\n      | {\r\n          highContrast?: boolean;\r\n          reducedMotion?: boolean;\r\n          largeText?: boolean;\r\n          screenReader?: boolean;\r\n        }\r\n  ): void {\r\n    // Handle both configuration formats\r\n    if (\r\n      \"highContrast\" in newConfig ||\r\n      \"reducedMotion\" in newConfig ||\r\n      \"largeText\" in newConfig ||\r\n      \"screenReader\" in newConfig\r\n    ) {\r\n      // Legacy format from tests\r\n      const legacyConfig = newConfig as any;\r\n      this.config = {\r\n        ...this.config,\r\n        enableHighContrast:\r\n          legacyConfig.highContrast ?? this.config.enableHighContrast,\r\n        enableReducedMotion:\r\n          legacyConfig.reducedMotion ?? this.config.enableReducedMotion,\r\n        enableLargeText: legacyConfig.largeText ?? this.config.enableLargeText,\r\n        enableScreenReader:\r\n          legacyConfig.screenReader ?? this.config.enableScreenReader,\r\n      };\r\n\r\n      // Also update internal state properties\r\n      if (legacyConfig.highContrast !== undefined) {\r\n        this.isHighContrast = legacyConfig.highContrast;\r\n      }\r\n      if (legacyConfig.reducedMotion !== undefined) {\r\n        this.isReducedMotion = legacyConfig.reducedMotion;\r\n      }\r\n      if (legacyConfig.largeText !== undefined) {\r\n        this.isLargeText = legacyConfig.largeText;\r\n      }\r\n    } else {\r\n      // New format\r\n      this.config = { ...this.config, ...newConfig };\r\n    }\r\n    this.initialize();\r\n  }\r\n\r\n  getConfig():\r\n    | AccessibilityConfig\r\n    | {\r\n        highContrast: boolean;\r\n        reducedMotion: boolean;\r\n        largeText: boolean;\r\n        screenReader: boolean;\r\n      } {\r\n    // Return legacy format for backward compatibility with tests\r\n    return {\r\n      highContrast: this.isHighContrast,\r\n      reducedMotion: this.isReducedMotion,\r\n      largeText: this.isLargeText,\r\n      screenReader: this.config.enableScreenReader,\r\n    };\r\n  }\r\n\r\n  generateAriaLabel(action: string, options: Record<string, any>): string {\r\n    let label = action;\r\n\r\n    if (options.maxFiles) {\r\n      label += `, maximum ${options.maxFiles} files`;\r\n    }\r\n\r\n    if (options.acceptedTypes) {\r\n      label += `, accepted types: ${options.acceptedTypes.join(\", \")}`;\r\n    }\r\n\r\n    return label;\r\n  }\r\n\r\n  enableHighContrast(): void {\r\n    this.isHighContrast = true;\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  disableHighContrast(): void {\r\n    this.isHighContrast = false;\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  enableReducedMotion(): void {\r\n    this.isReducedMotion = true;\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  disableReducedMotion(): void {\r\n    this.isReducedMotion = false;\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  enableLargeText(): void {\r\n    this.isLargeText = true;\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  disableLargeText(): void {\r\n    this.isLargeText = false;\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  updateTheme(newTheme: Partial<AccessibilityTheme>): void {\r\n    this.theme = { ...this.theme, ...newTheme };\r\n    this.applyAccessibilityFeatures();\r\n  }\r\n\r\n  getStatus(): {\r\n    isHighContrast: boolean;\r\n    isReducedMotion: boolean;\r\n    isLargeText: boolean;\r\n    isScreenReaderEnabled: boolean;\r\n    isKeyboardNavigationEnabled: boolean;\r\n  } {\r\n    return {\r\n      isHighContrast: this.isHighContrast,\r\n      isReducedMotion: this.isReducedMotion,\r\n      isLargeText: this.isLargeText,\r\n      isScreenReaderEnabled: this.config.enableScreenReader,\r\n      isKeyboardNavigationEnabled: this.config.enableKeyboardNavigation,\r\n    };\r\n  }\r\n\r\n  announceToScreenReader(message: string): void {\r\n    if (!this.config.enableScreenReader) return;\r\n\r\n    const liveRegion = document.querySelector('[aria-live=\"polite\"]');\r\n    if (liveRegion) {\r\n      liveRegion.textContent = message;\r\n\r\n      // Clear the message after a delay\r\n      setTimeout(() => {\r\n        liveRegion.textContent = \"\";\r\n      }, 3000);\r\n    }\r\n  }\r\n}\r\n"]}