{"version":3,"file":"moxa-formoxa-mx-shared.mjs","sources":["../../../../libs/formoxa/mx-shared/src/lib/directives/mx-auto-focus.directive.ts","../../../../libs/formoxa/mx-shared/src/lib/services/translation.service.ts","../../../../libs/formoxa/mx-shared/src/lib/services/mx-mat-paginator-intl.service.ts","../../../../libs/formoxa/mx-shared/src/moxa-formoxa-mx-shared.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n  selector: '[mxAutoFocus]',\n  standalone: true\n})\nexport class MxAutoFocusDirective implements AfterViewInit {\n  constructor(private host: ElementRef) {}\n\n  ngAfterViewInit() {\n    this.host.nativeElement.focus();\n  }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface TranslationLabels {\n  [key: string]: string | ((...args: any[]) => string);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class TranslationService<T extends TranslationLabels> {\n  protected currentLanguage = signal<string>('en');\n  private translations = signal<Record<string, T>>({});\n\n  // 獲取當前語言\n  getCurrentLanguage(): string {\n    return this.currentLanguage();\n  }\n\n  // 設置當前語言\n  setLanguage(lang: string): void {\n    this.currentLanguage.set(lang);\n  }\n\n  // 註冊新的翻譯\n  registerTranslations(lang: string, labels: T): void {\n    const currentTranslations = this.translations();\n    this.translations.set({\n      ...currentTranslations,\n      [lang]: labels\n    });\n  }\n\n  // 獲取特定語言的所有翻譯\n  getTranslations(lang?: string): T | undefined {\n    return this.translations()[lang || this.currentLanguage()];\n  }\n\n  // 獲取特定 key 的翻譯\n  translate(key: keyof T, ...args: any[]): string {\n    const translations = this.getTranslations();\n    if (!translations) return String(key);\n\n    const translation = translations[key];\n    if (typeof translation === 'function') {\n      return (translation as Function)(...args);\n    }\n    return (translation as string) || String(key);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { Subject } from 'rxjs';\nimport { TranslationLabels, TranslationService } from './translation.service';\n\nexport interface MxMatPaginatorIntlLabels extends TranslationLabels {\n  itemsPerPageLabel: string;\n  nextPageLabel: string;\n  previousPageLabel: string;\n  firstPageLabel: string;\n  lastPageLabel: string;\n  getRangeLabel: (page: number, pageSize: number, length: number) => string;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MxMatPaginatorIntlService\n  extends TranslationService<MxMatPaginatorIntlLabels>\n  implements MatPaginatorIntl\n{\n  defaultLabels: MxMatPaginatorIntlLabels = {\n    itemsPerPageLabel: 'Items per page:',\n    nextPageLabel: 'Next page',\n    previousPageLabel: 'Previous page',\n    firstPageLabel: 'First page',\n    lastPageLabel: 'Last page',\n    getRangeLabel: (page: number, pageSize: number, length: number) => {\n      if (length === 0 || pageSize === 0) return `0 of ${length}`;\n      const startIndex = page * pageSize;\n      const endIndex = Math.min(startIndex + pageSize, length);\n      return `${startIndex + 1} – ${endIndex} of ${length}`;\n    }\n  };\n\n  constructor() {\n    super();\n    this.registerTranslations('en', this.defaultLabels);\n  }\n\n  // 實作原 mat-paginator intl\n  changes = new Subject<void>();\n  itemsPerPageLabel = this.defaultLabels.itemsPerPageLabel;\n  nextPageLabel = this.defaultLabels.nextPageLabel;\n  previousPageLabel = this.defaultLabels.previousPageLabel;\n  firstPageLabel = this.defaultLabels.firstPageLabel;\n  lastPageLabel = this.defaultLabels.lastPageLabel;\n  getRangeLabel = this.defaultLabels.getRangeLabel;\n\n  // override translate function\n  override setLanguage(lang: string): void {\n    this.currentLanguage.set(lang);\n    this.updateMatPaginatorLabels();\n    this.changes.next();\n  }\n\n  private updateMatPaginatorLabels() {\n    this.itemsPerPageLabel = this.translate('itemsPerPageLabel');\n    this.nextPageLabel = this.translate('nextPageLabel');\n    this.previousPageLabel = this.translate('previousPageLabel');\n    this.firstPageLabel = this.translate('firstPageLabel');\n    this.lastPageLabel = this.translate('lastPageLabel');\n    this.getRangeLabel = this.getTranslations()\n      ? (this.getTranslations() as MxMatPaginatorIntlLabels)['getRangeLabel']\n      : this.defaultLabels.getRangeLabel;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}