{"version":3,"file":"transloco-language-selector.mjs","sources":["../../../projects/transloco-language-selector/src/lib/components/language-selector/language-selector.component.ts","../../../projects/transloco-language-selector/src/lib/components/language-selector/language-selector.component.html","../../../projects/transloco-language-selector/src/lib/components/language-selector-dropdown/language-selector-dropdown.component.ts","../../../projects/transloco-language-selector/src/lib/components/language-selector-dropdown/language-selector-dropdown.component.html","../../../projects/transloco-language-selector/src/lib/transloco-language-selector.module.ts","../../../projects/transloco-language-selector/src/lib/services/language-storage.service.ts","../../../projects/transloco-language-selector/src/transloco-language-selector.ts"],"sourcesContent":["import { Component, Input, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LanguageOption } from '../../models/language-option.model';\r\n\r\n@Component({\r\n  selector: 'transloco-language-selector',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './language-selector.component.html',\r\n  styleUrls: ['./language-selector.component.css']\r\n})\r\nexport class LanguageSelectorComponent implements OnInit, OnDestroy {\r\n  @Input() languages: LanguageOption[] = [];\r\n  @Input() customClass: string = '';\r\n  @Input() dropdownClass: string = '';\r\n  @Input() storageKey: string = 'selectedLanguage';\r\n  @Input() showFlags: boolean = true;\r\n  @Output() languageChanged = new EventEmitter<string>();\r\n\r\n  currentLang: string = '';\r\n  private destroy$ = new Subject<void>();\r\n\r\n  constructor(private translocoService: TranslocoService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.initializeLanguages();\r\n    this.subscribeToLanguageChanges();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private initializeLanguages(): void {\r\n    if (this.languages.length === 0) {\r\n      this.languages = this.getDefaultLanguages();\r\n    }\r\n    this.currentLang = this.translocoService.getActiveLang();\r\n  }\r\n\r\n  private subscribeToLanguageChanges(): void {\r\n    this.translocoService.langChanges$\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(lang => {\r\n        this.currentLang = lang;\r\n      });\r\n  }\r\n\r\n  private getDefaultLanguages(): LanguageOption[] {\r\n    return [\r\n      { code: 'en', label: 'English', flag: '🇬🇧' },\r\n      { code: 'es', label: 'Español', flag: '🇪🇸' },\r\n      { code: 'fr', label: 'Français', flag: '🇫🇷' },\r\n      { code: 'de', label: 'Deutsch', flag: '🇩🇪' }\r\n    ];\r\n  }\r\n\r\n  onLanguageChange(event: Event): void {\r\n    const target = event.target as HTMLSelectElement;\r\n    const selectedLang = target.value;\r\n    this.changeLanguage(selectedLang);\r\n  }\r\n\r\n  private changeLanguage(langCode: string): void {\r\n    this.translocoService.setActiveLang(langCode);\r\n    this.saveLanguagePreference(langCode);\r\n    this.languageChanged.emit(langCode);\r\n  }\r\n\r\n  private saveLanguagePreference(langCode: string): void {\r\n    try {\r\n      localStorage.setItem(this.storageKey, langCode);\r\n    } catch (error) {\r\n      console.warn('Failed to save language preference:', error);\r\n    }\r\n  }\r\n\r\n  getLanguageDisplay(language: LanguageOption): string {\r\n    if (this.showFlags && language.flag) {\r\n      return `${language.flag} ${language.label}`;\r\n    }\r\n    return language.label;\r\n  }\r\n}\r\n","<div class=\"transloco-language-selector {{customClass}}\">\r\n  <select\r\n    [value]=\"currentLang\"\r\n    (change)=\"onLanguageChange($event)\"\r\n    class=\"language-dropdown {{dropdownClass}}\"\r\n    [attr.aria-label]=\"'Select Language'\">\r\n    <option *ngFor=\"let lang of languages\" [value]=\"lang.code\">\r\n      {{ getLanguageDisplay(lang) }}\r\n    </option>\r\n  </select>\r\n</div>\r\n","import { Component, Input, OnInit, Output, EventEmitter, HostListener, ElementRef, OnDestroy } from '@angular/core';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { LanguageOption } from '../../models/language-option.model';\r\n\r\n@Component({\r\n  selector: 'transloco-language-selector-dropdown',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './language-selector-dropdown.component.html',\r\n  styleUrls: ['./language-selector-dropdown.component.css']\r\n})\r\nexport class LanguageSelectorDropdownComponent implements OnInit, OnDestroy {\r\n  @Input() languages: LanguageOption[] = [];\r\n  @Input() customClass: string = '';\r\n  @Input() buttonClass: string = '';\r\n  @Input() menuClass: string = '';\r\n  @Input() storageKey: string = 'selectedLanguage';\r\n  @Input() showFlags: boolean = true;\r\n  @Input() position: 'bottom' | 'top' = 'bottom';\r\n  @Output() languageChanged = new EventEmitter<string>();\r\n\r\n  currentLang: string = '';\r\n  currentLanguage?: LanguageOption;\r\n  isOpen: boolean = false;\r\n  private destroy$ = new Subject<void>();\r\n\r\n  constructor(\r\n    private translocoService: TranslocoService,\r\n    private elementRef: ElementRef\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.initializeLanguages();\r\n    this.subscribeToLanguageChanges();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private initializeLanguages(): void {\r\n    if (this.languages.length === 0) {\r\n      this.languages = this.getDefaultLanguages();\r\n    }\r\n    this.currentLang = this.translocoService.getActiveLang();\r\n    this.updateCurrentLanguage();\r\n  }\r\n\r\n  private subscribeToLanguageChanges(): void {\r\n    this.translocoService.langChanges$\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(lang => {\r\n        this.currentLang = lang;\r\n        this.updateCurrentLanguage();\r\n      });\r\n  }\r\n\r\n  private getDefaultLanguages(): LanguageOption[] {\r\n    return [\r\n      { code: 'en', label: 'English', flag: '🇬🇧' },\r\n      { code: 'es', label: 'Español', flag: '🇪🇸' },\r\n      { code: 'fr', label: 'Français', flag: '🇫🇷' },\r\n      { code: 'de', label: 'Deutsch', flag: '🇩🇪' }\r\n    ];\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick(event: MouseEvent): void {\r\n    if (!this.elementRef.nativeElement.contains(event.target)) {\r\n      this.closeDropdown();\r\n    }\r\n  }\r\n\r\n  @HostListener('document:keydown.escape')\r\n  onEscapeKey(): void {\r\n    this.closeDropdown();\r\n  }\r\n\r\n  toggleDropdown(): void {\r\n    this.isOpen = !this.isOpen;\r\n  }\r\n\r\n  closeDropdown(): void {\r\n    this.isOpen = false;\r\n  }\r\n\r\n  selectLanguage(langCode: string): void {\r\n    this.translocoService.setActiveLang(langCode);\r\n    this.saveLanguagePreference(langCode);\r\n    this.languageChanged.emit(langCode);\r\n    this.closeDropdown();\r\n  }\r\n\r\n  private saveLanguagePreference(langCode: string): void {\r\n    try {\r\n      localStorage.setItem(this.storageKey, langCode);\r\n    } catch (error) {\r\n      console.warn('Failed to save language preference:', error);\r\n    }\r\n  }\r\n\r\n  private updateCurrentLanguage(): void {\r\n    this.currentLanguage = this.languages.find(lang => lang.code === this.currentLang);\r\n  }\r\n\r\n  getLanguageDisplay(language: LanguageOption, showLabel: boolean = true): string {\r\n    const parts: string[] = [];\r\n\r\n    if (this.showFlags && language.flag) {\r\n      parts.push(language.flag);\r\n    }\r\n\r\n    if (showLabel) {\r\n      parts.push(language.label);\r\n    }\r\n\r\n    return parts.join(' ');\r\n  }\r\n}\r\n","<div class=\"language-selector-dropdown\" [class]=\"customClass\">\r\n  <button\r\n    class=\"dropdown-toggle\"\r\n    [class]=\"buttonClass\"\r\n    (click)=\"toggleDropdown()\"\r\n    type=\"button\"\r\n    [attr.aria-expanded]=\"isOpen\"\r\n    [attr.aria-label]=\"'Select Language'\">\r\n    <span class=\"current-language\">\r\n      <span *ngIf=\"showFlags && currentLanguage?.flag\" class=\"flag\">\r\n        {{ currentLanguage?.flag }}\r\n      </span>\r\n      <span class=\"label\">{{ currentLanguage?.label || 'Select Language' }}</span>\r\n    </span>\r\n    <span class=\"arrow\" [class.open]=\"isOpen\">\r\n      <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"currentColor\">\r\n        <path d=\"M6 9L1 4h10z\"/>\r\n      </svg>\r\n    </span>\r\n  </button>\r\n\r\n  <div\r\n    [attr.class]=\"\r\n      'dropdown-menu' +\r\n      (menuClass ? ' ' + menuClass : '') +\r\n      (isOpen ? ' show' : '') +\r\n      (position === 'top' ? ' position-top' : '')\r\n    \"\r\n    role=\"menu\">\r\n    <button\r\n      *ngFor=\"let lang of languages\"\r\n      class=\"dropdown-item\"\r\n      [class.active]=\"lang.code === currentLang\"\r\n      (click)=\"selectLanguage(lang.code)\"\r\n      type=\"button\"\r\n      role=\"menuitem\">\r\n      <span class=\"language-content\">\r\n        <span *ngIf=\"showFlags && lang.flag\" class=\"flag\">{{ lang.flag }}</span>\r\n        <span class=\"label\">{{ lang.label }}</span>\r\n      </span>\r\n      <span *ngIf=\"lang.code === currentLang\" class=\"check\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n          <path d=\"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z\"/>\r\n        </svg>\r\n      </span>\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { LanguageSelectorComponent } from './components/language-selector/language-selector.component';\r\nimport { LanguageSelectorDropdownComponent } from './components/language-selector-dropdown/language-selector-dropdown.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    LanguageSelectorComponent,           // Import standalone components\r\n    LanguageSelectorDropdownComponent\r\n  ],\r\n  exports: [\r\n    LanguageSelectorComponent,           // Export them\r\n    LanguageSelectorDropdownComponent\r\n  ]\r\n})\r\nexport class TranslocoLanguageSelectorModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LanguageStorageService {\r\n  private readonly DEFAULT_STORAGE_KEY = 'selectedLanguage';\r\n\r\n  constructor() {}\r\n\r\n  saveLanguage(langCode: string, storageKey: string = this.DEFAULT_STORAGE_KEY): void {\r\n    try {\r\n      localStorage.setItem(storageKey, langCode);\r\n    } catch (error) {\r\n      console.warn('Failed to save language preference:', error);\r\n    }\r\n  }\r\n\r\n  getLanguage(storageKey: string = this.DEFAULT_STORAGE_KEY): string | null {\r\n    try {\r\n      return localStorage.getItem(storageKey);\r\n    } catch (error) {\r\n      console.warn('Failed to retrieve language preference:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  removeLanguage(storageKey: string = this.DEFAULT_STORAGE_KEY): void {\r\n    try {\r\n      localStorage.removeItem(storageKey);\r\n    } catch (error) {\r\n      console.warn('Failed to remove language preference:', error);\r\n    }\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil"],"mappings":"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"}