{"version":3,"file":"uofx-app-components.mjs","sources":["../../../projects/uofx-app-pack/src/controller/toast.controller.ts","../../../projects/uofx-app-pack/src/core/app-config.ts","../../../projects/uofx-app-pack/src/core/current-user.ts","../../../projects/uofx-app-pack/src/pagination/pagination.interface.ts","../../../projects/uofx-app-pack/src/pipes/dateformat/date.pipe.ts","../../../projects/uofx-app-pack/src/pipes/decodeURI/decodeURI.pipe.ts","../../../projects/uofx-app-pack/src/pipes/html-encode/html-encode.pipe.ts","../../../projects/uofx-app-pack/src/pipes/highlight/highlight.pipe.ts","../../../projects/uofx-app-pack/src/pipes/safe-html/safeHtml.pipe.ts","../../../projects/uofx-app-pack/src/pipes/safe-newline/safe-newline.pipe.ts","../../../projects/uofx-app-pack/src/pipes/pipe.module.ts","../../../projects/uofx-app-pack/src/translate/i18n-convert.ts","../../../projects/uofx-app-pack/src/translate/i18n-key.directive.ts","../../../projects/uofx-app-pack/src/translate/i18n-key.pipe.ts","../../../projects/uofx-app-pack/src/translate/translate-key.pipe.ts","../../../projects/uofx-app-pack/src/translate/translate.module.ts","../../../projects/uofx-app-pack/src/utility/broadcast.service.ts","../../../projects/uofx-app-pack/src/settings/settings.ts","../../../projects/uofx-app-pack/src/uofx-app-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { ToastController } from '@ionic/angular';\r\nimport { UofxI18NService } from '@uofx/core';\r\n\r\n@Injectable()\r\nexport class UofxToastController {\r\n  /** 預設顯示時間: 2000 毫秒 */\r\n  private DEFAULT_DURATION = 800;\r\n\r\n  /** 預設顯示位置: 上方(top) */\r\n  private DEFAULT_POSITION: 'top' | 'bottom' | 'middle' = 'top';\r\n\r\n  /** 關閉按鈕 */\r\n  private closeBtn = { icon: 'close', role: 'cancel' };\r\n\r\n  constructor(\r\n    private toastCtrl: ToastController,\r\n    private i18n: UofxI18NService\r\n  ) {}\r\n\r\n  /** 顯示「已儲存」 */\r\n  public async saved() {\r\n    // *UKEY:\"global.comm.toast.saved\"\r\n    const toast = await this.toastCtrl.create({\r\n      message: this.i18n.trans('global.comm.toast.saved'),\r\n      duration: this.DEFAULT_DURATION,\r\n      position: this.DEFAULT_POSITION,\r\n      buttons: [this.closeBtn],\r\n    });\r\n    toast.present();\r\n  }\r\n\r\n  /** 顯示「此功能尚未實作」 */\r\n  public async notReady() {\r\n    const toast = await this.toastCtrl.create({\r\n      header: '此功能尚未實作',\r\n      duration: this.DEFAULT_DURATION,\r\n      position: this.DEFAULT_POSITION,\r\n      buttons: [this.closeBtn],\r\n    });\r\n    toast.present();\r\n  }\r\n\r\n  /** 顯示提示訊息 */\r\n  async show(options: ToastOptions) {\r\n    const toast = await this.toastCtrl.create({\r\n      header: options.header,\r\n      message: options.message,\r\n      duration: options.duration || this.DEFAULT_DURATION,\r\n      position: this.DEFAULT_POSITION,\r\n      buttons: [this.closeBtn],\r\n    });\r\n    toast.present();\r\n  }\r\n}\r\n\r\nexport interface ToastOptions {\r\n  /** 標題 */\r\n  header?: string;\r\n  /** 內容 */\r\n  message: string;\r\n  /** 持續顯示(毫秒) */\r\n  duration?: number;\r\n}\r\n","import { UofxDeviceInfo } from '@uofx/app-native';\r\nimport { LocalStorage } from '@uofx/core';\r\n\r\n/**\r\n * 全域系統設定值\r\n */\r\nexport class UofxAppConfig {\r\n  private static _serverUrl: string;\r\n\r\n  /** 主機URL */\r\n  static get serverUrl(): string {\r\n    return this._serverUrl;\r\n  }\r\n\r\n  /** 主機URL */\r\n  static set serverUrl(url: string) {\r\n    this._serverUrl = url;\r\n  }\r\n\r\n  /**\r\n   * 取得真正的url\r\n   * @param url 要被轉換的網址, 使用~/ 開頭\r\n   */\r\n  static transUrl(url: string): string {\r\n    if (url && url.startsWith('~/')) {\r\n      return url.replace('~/', '');\r\n    }\r\n    return url;\r\n  }\r\n\r\n  /**\r\n   * 轉換成 Server 的 URL\r\n   * @param url 要被轉換的網址, 使用~/ 開頭\r\n   */\r\n  static transToServerUrl(url: string): string {\r\n    if (url && url.startsWith('~/')) {\r\n      return url.replace('~/', this.serverUrl);\r\n    }\r\n    return url;\r\n  }\r\n\r\n  private static _uploadSize: number;\r\n  /** 單一檔案上傳限制(單位bytes) */\r\n  public static get uploadSize(): number {\r\n    return this._uploadSize;\r\n  }\r\n\r\n  /** 單一檔案上傳限制(單位bytes) */\r\n  public static set uploadSize(upload: number) {\r\n    this._uploadSize = upload;\r\n  }\r\n\r\n  private static _remainingSize: number;\r\n  /** 目前剩餘容量 (單位bytes) */\r\n  public static get remainingSize(): number {\r\n    return this._remainingSize;\r\n  }\r\n\r\n  /** 目前剩餘容量 (單位bytes) */\r\n  public static set remainingSize(remain: number) {\r\n    this._remainingSize = remain;\r\n  }\r\n\r\n  // #region === Package version ===\r\n\r\n  private static _packVer: string;\r\n\r\n  /** 軟體包版本 */\r\n  static get packVer(): string {\r\n    return this._packVer;\r\n  }\r\n\r\n  /** 軟體包版本 */\r\n  static set packVer(ver: string) {\r\n    this._packVer = ver;\r\n  }\r\n\r\n  // #endregion\r\n\r\n  /** 殼的資訊 */\r\n  public static get deviceInfo() {\r\n    // 網頁版不會有殼的資訊\r\n    const info = <UofxDeviceInfo>{\r\n      appVersion: '99.0.0',\r\n      manufacturer: 'Web  (mock data)',\r\n      operatingSystem: 'ios',\r\n      platform: 'web',\r\n      osVersion: '14.6',\r\n      model: 'iPhone13,1',\r\n      uuid: 'app-web',\r\n    };\r\n\r\n    return LocalStorage.getObject('uofx_deviceInfo') || info;\r\n  }\r\n\r\n  /** 殼的資訊 */\r\n  public static set deviceInfo(info: UofxDeviceInfo) {\r\n    if (info) LocalStorage.setObject('uofx_deviceInfo', info);\r\n    else LocalStorage.remove('uofx_deviceInfo');\r\n  }\r\n}\r\n","import { deepMerge, LocalStorage, UserCorpsModel, UserProfileModel, UserAuthModel } from '@uofx/core';\r\nimport { IBiometricSetting } from './app-setting.interface';\r\n\r\n/**\r\n * 使用者個人設定值\r\n * @description 沒有使用 Frontend.Core 的原因是因為 app 需要用 localStorage 存取\r\n */\r\nexport class AppCurrentUser {\r\n  private static readonly KEY_USER_CORPS = 'userCorps';\r\n  private static readonly KEY_USER_PROFILE = 'settingUserInfo';\r\n\r\n  // 各功能\r\n  private static readonly KEY_BIOMETRIC_INFO = 'biometricInfo';\r\n  private static readonly KEY_PUSH_TOKEN = 'pushToken';\r\n  private static readonly KEY_BATCH_PROCESS_TIP = 'batchProcessTip';\r\n  private static readonly KEY_REL_FORM_TIP = 'relFormTip';\r\n\r\n  /** 使用者資訊 */\r\n  private static _profile: UserProfileModel = this._localStorageGet(this.KEY_USER_PROFILE) ?? null;\r\n  /** 授權相關資訊，token */\r\n  private static _authInfo: UserAuthModel = this._localStorageGet(this.KEY_USER_PROFILE) ?? null;\r\n  /** 登入者的公司資訊 */\r\n  private static _corpsInfo: UserCorpsModel = this._localStorageGet(this.KEY_USER_CORPS) ?? null;\r\n\r\n  /** 是否已登入 */\r\n  static get IsLoggedIn(): boolean {\r\n    return !!this._profile?.account;\r\n  }\r\n\r\n  /** 使用者資訊 */\r\n  static get Profile(): UserProfileModel {\r\n    return this._profile ?? <UserProfileModel>{};\r\n  }\r\n  /** 使用者資訊 */\r\n  static set Profile(info: UserProfileModel) {\r\n    this._setProfile(info);\r\n  }\r\n\r\n  /** 登入者的公司資訊 */\r\n  static get Corps(): UserCorpsModel {\r\n    return this._corpsInfo ?? { admin: [], user: [] };\r\n  }\r\n\r\n  /** 登入者的公司資訊 */\r\n  static set Corps(corps: UserCorpsModel) {\r\n    this._setCorps(corps);\r\n  }\r\n\r\n  /** 授權資訊 */\r\n  static get Auth(): UserAuthModel {\r\n    return this._authInfo ?? <UserAuthModel>{};\r\n  }\r\n  /** 授權資訊 */\r\n  static set Auth(auth: UserAuthModel) {\r\n    this._setAuthInfo(auth);\r\n  }\r\n\r\n  /** 清除所有設定 */\r\n  static clear() {\r\n    this._clear();\r\n  }\r\n\r\n  /** 生物驗證資訊 */\r\n  public static get BiometricInfo(): IBiometricSetting {\r\n    return (\r\n      this._localStorageGet(this.KEY_BIOMETRIC_INFO) ||\r\n      <IBiometricSetting>{\r\n        biometricEnable: null,\r\n        biometricValid: null,\r\n        biometricType: null,\r\n      }\r\n    );\r\n  }\r\n\r\n  /** 生物驗證資訊 */\r\n  public static set BiometricInfo(biometric: IBiometricSetting) {\r\n    if (biometric) {\r\n      const originalbio = this.BiometricInfo;\r\n      deepMerge(originalbio, biometric);\r\n      this._localStorageSet(this.KEY_BIOMETRIC_INFO, biometric);\r\n    } else {\r\n      this._localStorageRemove(this.KEY_BIOMETRIC_INFO);\r\n    }\r\n  }\r\n\r\n  /** 推播 Token */\r\n  public static get PushToken(): string {\r\n    return this._localStorageGet(this.KEY_PUSH_TOKEN);\r\n  }\r\n  /** 推播 Token */\r\n  public static set PushToken(token: string) {\r\n    this._localStorageSet(this.KEY_PUSH_TOKEN, token);\r\n  }\r\n\r\n  private static _tempData: any;\r\n  public static get TempData(): any {\r\n    return this._tempData;\r\n  }\r\n  public static set TempData(value: any) {\r\n    this._tempData = value;\r\n  }\r\n\r\n  /** 是否要顯示批次處理提示 */\r\n  public static get displayBatchProcessTip(): boolean {\r\n    return this._localStorageGet(this.KEY_BATCH_PROCESS_TIP) ?? true;\r\n  }\r\n\r\n  /** 是否要顯示批次處理提示 */\r\n  public static set displayBatchProcessTip(setting: boolean) {\r\n    this._localStorageSet(this.KEY_BATCH_PROCESS_TIP, setting);\r\n  }\r\n\r\n  /** 是否顯示關聯表單查詢提示 */\r\n  public static get displayRelFormTip(): boolean {\r\n    return this._localStorageGet(this.KEY_REL_FORM_TIP) ?? true;\r\n  }\r\n\r\n  /** 是否顯示關聯表單查詢提示 */\r\n  public static set displayRelFormTip(setting: boolean) {\r\n    this._localStorageSet(this.KEY_REL_FORM_TIP, setting);\r\n  }\r\n\r\n  /** 使用者資訊 */\r\n  private static _setProfile(info: UserProfileModel) {\r\n    if (!info) {\r\n      this._localStorageRemove(this.KEY_USER_PROFILE);\r\n      this._profile = null;\r\n      return;\r\n    }\r\n    let original = this._profile ?? <UserProfileModel>{};\r\n    deepMerge(original, info);\r\n\r\n    // 確保 token 不會被覆蓋\r\n    if (this._authInfo) {\r\n      const { token, tokenExp } = this._authInfo;\r\n      deepMerge(original, { token, tokenExp });\r\n    }\r\n\r\n    this._localStorageSet(this.KEY_USER_PROFILE, original);\r\n    this._profile = { ...original };\r\n  }\r\n\r\n  /** 登入者的公司資訊 */\r\n  private static _setCorps(corps: UserCorpsModel) {\r\n    if (corps) {\r\n      this._localStorageSet(this.KEY_USER_CORPS, corps);\r\n      this._corpsInfo = corps;\r\n    } else {\r\n      this._localStorageRemove(this.KEY_USER_CORPS);\r\n      this._corpsInfo = null;\r\n    }\r\n  }\r\n\r\n  /** 授權相關資訊 */\r\n  private static _setAuthInfo(auth: UserAuthModel) {\r\n    if (!auth) {\r\n      this._authInfo = null;\r\n      return;\r\n    }\r\n\r\n    let original = this._profile ?? <UserProfileModel>{};\r\n    deepMerge(original, auth);\r\n    this._localStorageSet(this.KEY_USER_PROFILE, original);\r\n\r\n    const existingAuth = this._authInfo ?? <UserAuthModel>{};\r\n    const mergedAuth = deepMerge(existingAuth, auth);\r\n\r\n    this._authInfo = { ...mergedAuth };\r\n  }\r\n\r\n  /** 清除所有設定 */\r\n  private static _clear() {\r\n    this._localStorageRemove(this.KEY_USER_CORPS);\r\n    this._localStorageRemove(this.KEY_USER_PROFILE);\r\n\r\n    this._profile = null;\r\n    this._authInfo = null;\r\n    this._corpsInfo = null;\r\n  }\r\n\r\n  /** 取得 localStorage 中的物件 */\r\n  private static _localStorageGet(key: string) {\r\n    return LocalStorage.getObject(key);\r\n  }\r\n  /** 設定 localStorage 中的物件 */\r\n  private static _localStorageSet(key: string, value: any) {\r\n    LocalStorage.setObject(key, value);\r\n  }\r\n  /** 移除 localStorage 中的物件 */\r\n  private static _localStorageRemove(key: string) {\r\n    LocalStorage.remove(key);\r\n  }\r\n}\r\n","/** 分頁model */\r\nexport class UofxPaginationReqModel {\r\n  /** 排序欄位 */\r\n  order = 0;\r\n  /** 排序 */\r\n  by = 1;\r\n  /** 一頁幾筆，預設為 50 筆 */\r\n  pageSize = 50;\r\n  /** 第幾頁 */\r\n  pageNumber = 1;\r\n  /** 第一筆資料，預設 5 筆 */\r\n  firstPageSize? = 5;\r\n}\r\n\r\n/** 分頁 Response Model */\r\nexport class UofxPaginationRespModel {\r\n  /** 第一頁要顯示幾筆 */\r\n  firstPageSize? = -1;\r\n  /** 一頁幾筆 */\r\n  pageSize = -1;\r\n  /** 總筆數 */\r\n  itemsCount = 0;\r\n  /** 第幾頁 */\r\n  pageNumber = 1;\r\n  /** 總頁數 */\r\n  pageCount = 10;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { UofxI18NService } from '@uofx/core';\r\n\r\n/** yyyy:年、MM:月、dd:天、HH:小時、mm:分、ss:秒、tt: pm/am、TT: PM/AM */\r\n@Pipe({ name: 'dateFormat' })\r\nexport class UofxCoreDateFormatPipe implements PipeTransform {\r\n  formatDay: string;\r\n\r\n  transform(value: any, exponent = 'yyyy-MM-dd'): string {\r\n    if (value === undefined || value === null || value === '') return '';\r\n    const date = new Date(value);\r\n    if (isNaN(date.getDay())) throw SyntaxError('invalid date');\r\n    const regex = /d{1,4}|M{1,4}|yy(?:yy)?|([HhmsTt])\\1?|(ISOString)/g;\r\n    const d = date.getDate();\r\n    const M = date.getMonth();\r\n    const y = date.getFullYear();\r\n    const H = date.getHours();\r\n    const m = date.getMinutes();\r\n    const s = date.getSeconds();\r\n    const flags = {\r\n      d,\r\n      dd: this.pad(d),\r\n      M: M + 1,\r\n      MM: this.pad(M + 1),\r\n      yy: String(y).slice(2),\r\n      yyyy: y,\r\n      h: H % 12 || 12,\r\n      hh: this.pad(H % 12 || 12),\r\n      H,\r\n      HH: this.pad(H),\r\n      m,\r\n      mm: this.pad(m),\r\n      s,\r\n      ss: this.pad(s),\r\n      t: H < 12 ? 'a' : 'p',\r\n      tt: H < 12 ? 'am' : 'pm',\r\n      T: H < 12 ? 'A' : 'P',\r\n      TT: H < 12 ? 'AM' : 'PM',\r\n      ISOString: new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString(),\r\n    };\r\n    return exponent.replace(regex, ($0) => ($0 in flags ? flags[$0] : $0.slice(1, $0.length - 1)));\r\n  }\r\n  pad(val, len = 2): string {\r\n    val = String(val);\r\n    while (val.length < len) val = '0' + val;\r\n    return val;\r\n  }\r\n}\r\n\r\n@Pipe({ name: 'ToDatePipe' })\r\nexport class ToDatePipe implements PipeTransform {\r\n  /** 將ISO 8601格式轉成Date並加上使用者時區 */\r\n  // 跟Date轉時間的差異在於Date會把時間轉成目前使用者所在時區的時間，\r\n  // ToDatePipe 不會轉換時間指是把使用者的時區加上去。\r\n  transform(value: any): Date {\r\n    if (value === undefined || value === null || value === '') throw SyntaxError('invalid date');\r\n\r\n    let dateMillSec = Date.parse(value);\r\n    const date = new Date(dateMillSec);\r\n\r\n    if (isNaN(dateMillSec)) throw SyntaxError('invalid date');\r\n\r\n    dateMillSec = dateMillSec + date.getTimezoneOffset() * 60000;\r\n\r\n    return new Date(dateMillSec);\r\n  }\r\n}\r\n\r\n@Pipe({\r\n  name: 'weekDay',\r\n  pure: false,\r\n})\r\nexport class UofxWeekDayPipe implements PipeTransform {\r\n  // *UKEY:\"global.comm.week-day.sun\"\r\n  // *UKEY:\"global.comm.week-day.mon\"\r\n  // *UKEY:\"global.comm.week-day.tue\"\r\n  // *UKEY:\"global.comm.week-day.wed\"\r\n  // *UKEY:\"global.comm.week-day.thur\"\r\n  // *UKEY:\"global.comm.week-day.fri\"\r\n  // *UKEY:\"global.comm.week-day.sat\"\r\n\r\n  // *UKEY: \"global.comm.days-abbreviated-sun\"\r\n  // *UKEY: \"global.comm.days-abbreviated-mon\"\r\n  // *UKEY: \"global.comm.days-abbreviated-tue\"\r\n  // *UKEY: \"global.comm.days-abbreviated-wed\"\r\n  // *UKEY: \"global.comm.days-abbreviated-thur\"\r\n  // *UKEY: \"global.comm.days-abbreviated-fri\"\r\n  // *UKEY: \"global.comm.days-abbreviated-sat\"\r\n\r\n  /** 用於轉換多語系字串 */\r\n  weekDay = ['sun', 'mon', 'tue', 'wed', 'thur', 'fri', 'sat'];\r\n\r\n  constructor(private i18nService: UofxI18NService) {}\r\n\r\n  /**\r\n   * 將new Date()物件內的getDay()數值轉成UI要顯示的字串\r\n   * @param value new Date().getDay()；數值0 ~ 6\r\n   * @returns\r\n   */\r\n  transform(value: number, mode: 'full' | 'short' = 'full') {\r\n    // 取不到weekDay則回傳空字串\r\n    if (!this.weekDay[value]) return '';\r\n\r\n    // short mode 使用縮寫語系Key\r\n    if (mode === 'short') {\r\n      return this.i18nService.trans('global.comm.days-abbreviated-' + this.weekDay[value]);\r\n    }\r\n\r\n    return this.i18nService.trans('global.comm.week-day.' + this.weekDay[value]);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'decodeURI',\r\n})\r\nexport class UofxCoreDecodeURIPipe implements PipeTransform {\r\n  /**\r\n   * 解碼html字串\r\n   * @param {string} encodeHtml 傳入已經被編碼的html字串\r\n   * @return {*} 回傳解碼後的html字串\r\n   * @memberof UofxCoreDecodeURIPipe\r\n   */\r\n  transform(encodeHtml: string) {\r\n    if (!encodeHtml) return '';\r\n    return decodeURI(encodeHtml);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'htmlEncode' })\r\nexport class UofxCoreHtmlEncodePipe implements PipeTransform {\r\n  transform(text: string) {\r\n    let temp = document.createElement('div');\r\n    temp.textContent === null ? (temp.innerText = text) : (temp.textContent = text);\r\n    const output = temp.innerHTML;\r\n    temp = null;\r\n    return output;\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { UofxCoreHtmlEncodePipe } from '../html-encode/html-encode.pipe';\r\n\r\n@Pipe({ name: 'highlight' })\r\nexport class UofxCoreHighLightPipe implements PipeTransform {\r\n  /**\r\n   * 1. 為了適用於一些html格式的字串，所以無論text或search一律先encode\r\n   * 2. (){}這類的特殊符號也需要可以被查詢，並且也要符合英文大小寫通用查詢，所以用字串處理的方式來找出結果。\r\n   * @param {string} text\r\n   * @param {string} search\r\n   * @return {*}  {string}\r\n   * @memberof UofxHighLightPipe\r\n   */\r\n  transform(text: string, search: string): string {\r\n    text = new UofxCoreHtmlEncodePipe().transform(text);\r\n    search = new UofxCoreHtmlEncodePipe().transform(search);\r\n    const replaceText = this.replaceText(text, search);\r\n    return search ? text.replace(replaceText, `<span class=\"highlight-text\">${replaceText}</span>`) : text;\r\n  }\r\n\r\n  /** 取得要被highlight的字串 */\r\n  replaceText(text: string, search: string) {\r\n    const index = text.toUpperCase().indexOf(search.toUpperCase());\r\n    if (index < 0) return '';\r\n    return text.substring(index, index + search.length);\r\n  }\r\n}\r\n\r\n// Usage:\r\n// <input type=\"text\" [(ngModel)]=\"filter\">\r\n// <div [innerHTML]=\"myAwesomeText  | highlight : filter\"></div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n  name: 'safeHtml',\r\n})\r\nexport class UofxCoreSafeHtmlPipe implements PipeTransform {\r\n  constructor(private sanitizer: DomSanitizer) {}\r\n  //  文字編輯器設定的文字效果在表單說明內容跟申明頁上會失效，原因是因為angular避免站台發生XSS攻擊，\r\n  //  會移除innerHtml上styles屬性，要讓設定的style保有效果解決方式要用bypassSecurityTrustHtml把顯示的內容轉換成安全的值。\r\n  //  https://www.thecodehubs.com/style-not-working-for-innerhtml-in-angular/\r\n  transform(html: string): SafeHtml {\r\n    if (!html) return '';\r\n\r\n    return this.sanitizer.bypassSecurityTrustHtml(decodeURI(html));\r\n  }\r\n}\r\n","import * as _ from 'lodash';\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'safeNewline' })\r\nexport class UofxSafeNewlinePipe implements PipeTransform {\r\n  /**\r\n   * 用途說明\r\n   * 只會將換行轉成 <br>，其他 HTML 標籤都會被 escape，不會有 XSS 風險，也不會有其他 HTML 效果。\r\n   * 使用端用 [innerHTML]\r\n   */\r\n  transform(value: string): string {\r\n    if (!value) return '';\r\n    // 先把「字面上的」\\r\\n、\\n、\\r 轉成真正的換行\r\n    const withRealNewlines = value.replace(/\\\\r\\\\n|\\\\n|\\\\r/g, '\\n');\r\n    const escaped = _.escape(withRealNewlines);\r\n    return escaped.replace(/\\r\\n|\\n|\\r/g, '<br>');\r\n  }\r\n}\r\n","import { ToDatePipe, UofxCoreDateFormatPipe, UofxWeekDayPipe } from './dateformat/date.pipe';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { UofxCoreDecodeURIPipe } from './decodeURI/decodeURI.pipe';\r\nimport { UofxCoreHighLightPipe } from './highlight/highlight.pipe';\r\nimport { UofxCoreHtmlEncodePipe } from './html-encode/html-encode.pipe';\r\nimport { UofxCoreSafeHtmlPipe } from './safe-html/safeHtml.pipe';\r\nimport { UofxSafeNewlinePipe } from './safe-newline/safe-newline.pipe';\r\n\r\nconst PIPE = [\r\n  UofxCoreDateFormatPipe,\r\n  UofxCoreHighLightPipe,\r\n  UofxCoreSafeHtmlPipe,\r\n  UofxCoreHtmlEncodePipe,\r\n  ToDatePipe,\r\n  UofxWeekDayPipe,\r\n  UofxCoreDecodeURIPipe,\r\n  UofxSafeNewlinePipe\r\n];\r\n@NgModule({\r\n  declarations: [...PIPE],\r\n  imports: [CommonModule, TranslateModule.forChild()],\r\n  exports: [...PIPE],\r\n})\r\nexport class UofxCorePipeModule {}\r\n","// =================================================\r\n// 參考來自: src\\app\\shared\\plugin\\plugin.service.ts\r\n// =================================================\r\n\r\n/**\r\n *  轉換 Plugin Code 給多語系命名空間\r\n * @param pluginCode Plugin 代號\r\n * @returns\r\n */\r\nexport function convertPluginCodeToI18nNamespace(pluginCode: string) {\r\n  // 保留字 'plugin'\r\n  // Plugin Code: Ede.Sample.Plugin\r\n  // 轉換後: plugin.ede.sample.plugin\r\n  return `plugin.${pluginCode.toLowerCase()}`;\r\n}\r\n\r\n/**\r\n * 轉換多語系 key 為外掛模組多語系 key\r\n * 例如: plugin.ede.sample.plugin.key\r\n *\r\n * @param pluginCode Plugin 代號\r\n * @param key 要翻譯的 key 值\r\n * @returns\r\n */\r\nexport function convertToPluginI18nKey(pluginCode: string, key: string) {\r\n  const prefix = convertPluginCodeToI18nNamespace(pluginCode);\r\n  return `${prefix}.${key}`;\r\n}\r\n","import { ChangeDetectorRef, Directive, ElementRef, Input } from '@angular/core';\r\nimport { TranslateDirective, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { convertToPluginI18nKey } from './i18n-convert';\r\n\r\n@Directive({\r\n  // eslint-disable-next-line @angular-eslint/directive-selector\r\n  selector: '[translate]',\r\n})\r\nexport class UofxI18nKeyDirective extends TranslateDirective {\r\n  @Input() translatePluginCode: string;\r\n\r\n  /** 同一個 rAF 內只觸發一次 reflow，避免重複 */\r\n  private static reflowPending = false;\r\n  /** 首次啟動 reflow 完成後即設為 true，語言不切換則不再觸發 */\r\n  private static reflowDone = false;\r\n\r\n  constructor(translateService: TranslateService, element: ElementRef, _ref: ChangeDetectorRef) {\r\n    super(translateService, element, _ref);\r\n  }\r\n\r\n  /** 更新翻譯內容，並根據是否為 plugin 翻譯來決定使用原 key 或加上 plugin 前綴的 key */\r\n  updateValue(key: string, node: any, translations: any) {\r\n    const isPluginTranslate = !!this.translatePluginCode;\r\n    // 1.系統翻譯才需要加 uofx-i18n-key\r\n    if (!isPluginTranslate) {\r\n      node.parentElement.setAttribute('uof-i18n-key', key);\r\n    }\r\n\r\n    // 2.若有 pluginCode，則加上前綴後嘗試翻譯\r\n    if (isPluginTranslate) {\r\n      const prefixedKey = convertToPluginI18nKey(this.translatePluginCode, key);\r\n      super.updateValue(prefixedKey, node, translations);\r\n\r\n      // 3.若翻譯後內容仍是 prefixedKey，表示找不到翻譯，使用原本的 key\r\n      if (super.getContent(node) === prefixedKey) {\r\n        super.setContent(node, key);\r\n      }\r\n    } else {\r\n      super.updateValue(key, node, translations);\r\n    }\r\n\r\n    // 初次登入時 hyphens: auto 會失效，強制觸發一次 reflow 讓它生效\r\n    // 在 rAF 內讀取 offsetHeight 強制觸發一次 reflow，讓 hyphens: auto 生效。\r\n    UofxI18nKeyDirective.scheduleReflow();\r\n  }\r\n\r\n  /** 透過 reflowPending flag 讓 hyphens: auto 生效 */\r\n  private static scheduleReflow(): void {\r\n    if (UofxI18nKeyDirective.reflowDone || UofxI18nKeyDirective.reflowPending) {\r\n      return;\r\n    }\r\n    UofxI18nKeyDirective.reflowPending = true;\r\n    requestAnimationFrame(() => {\r\n      void document.documentElement.offsetHeight;\r\n      UofxI18nKeyDirective.reflowPending = false;\r\n      UofxI18nKeyDirective.reflowDone = true;\r\n    });\r\n  }\r\n}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\nimport { convertToPluginI18nKey } from './i18n-convert';\r\n\r\n@Pipe({\r\n  name: 'translate',\r\n  pure: false,\r\n})\r\nexport class UofxI18nKeyPipe implements PipeTransform {\r\n  private translate = inject(TranslatePipe);\r\n\r\n  transform(value: any, ...args: Array<any>): any {\r\n    let pluginCode: string = null;\r\n    let isPluginTranslate: boolean = false;\r\n\r\n    if (args.length > 0 && typeof args[0] === 'object') {\r\n      const elem = args[0];\r\n      // 1.處理 pluginCode 參數\r\n      if (elem.pluginCode) {\r\n        pluginCode = elem.pluginCode;\r\n      }\r\n      isPluginTranslate = !!pluginCode;\r\n\r\n      // 2.處理 element 參數\r\n      // 系統參數才需要加上 uof-i18n-key，外掛參數不需要，因為外掛的翻譯 key 已經包含 pluginCode 前綴了\r\n      if (elem.element) {\r\n        if (!isPluginTranslate) {\r\n          elem.element.setAttribute('uof-i18n-key', value);\r\n        }\r\n        args.shift();\r\n      } else if (elem.tagName) {\r\n        if (!isPluginTranslate) {\r\n          elem.setAttribute('uof-i18n-key', value);\r\n        }\r\n        args.shift();\r\n      } else if (pluginCode) {\r\n        args.shift();\r\n      }\r\n    }\r\n\r\n    // 3.如果有 pluginCode，則加上前綴後嘗試翻譯\r\n    if (isPluginTranslate) {\r\n      const prefixedKey = convertToPluginI18nKey(pluginCode, value);\r\n      const result = this.translate.transform(prefixedKey, ...args);\r\n\r\n      // 若翻譯後內容仍是 prefixedKey，表示找不到翻譯，使用原本的 key\r\n      if (result === prefixedKey) {\r\n        return value;\r\n      }\r\n      return result;\r\n    }\r\n\r\n    return this.translate.transform(value, ...args);\r\n  }\r\n}\r\n\r\n@Pipe({\r\n  name: 'quietTrans',\r\n})\r\nexport class UofxQuietTransPipe implements PipeTransform {\r\n  constructor(private translate: UofxI18nKeyPipe) {}\r\n\r\n  transform(value: any, ...args: Array<any>): any {\r\n    return this.translate.transform(value, ...args);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'translateKey' })\r\nexport class UofxTranslateKeyPipe implements PipeTransform {\r\n  transform(value: any): any {\r\n    return value;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TranslateDirective, TranslatePipe } from '@ngx-translate/core';\r\nimport { UofxI18nKeyDirective } from './i18n-key.directive';\r\nimport { UofxI18nKeyPipe, UofxQuietTransPipe } from './i18n-key.pipe';\r\nimport { UofxTranslateKeyPipe } from './translate-key.pipe';\r\n\r\n@NgModule({\r\n  declarations: [UofxI18nKeyDirective, UofxI18nKeyPipe, UofxQuietTransPipe, UofxTranslateKeyPipe],\r\n  exports: [UofxI18nKeyDirective, UofxI18nKeyPipe, UofxQuietTransPipe, UofxTranslateKeyPipe],\r\n  providers: [\r\n    TranslateDirective,\r\n    TranslatePipe,\r\n    UofxI18nKeyDirective,\r\n    UofxI18nKeyPipe,\r\n    UofxQuietTransPipe,\r\n    UofxTranslateKeyPipe,\r\n  ],\r\n})\r\nexport class UofxTranslateModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { IBpmEventModel } from './broadcast.interface';\r\n\r\nexport class UofxCoreBroadcastType<T> {\r\n  private _sub$ = new Subject<T>();\r\n  private _defaultValue: any;\r\n  constructor(defaultValue?: any) {\r\n    if (defaultValue) {\r\n      this._sub$ = new BehaviorSubject<T>(defaultValue);\r\n      this._defaultValue = defaultValue;\r\n    }\r\n  }\r\n\r\n  send(value?: T): void {\r\n    this._sub$.next(value);\r\n  }\r\n\r\n  receive(): Observable<T> {\r\n    return new Observable((ob) => {\r\n      this._sub$.subscribe((res) => {\r\n        if (res === undefined) {\r\n          ob.next(this._defaultValue);\r\n        } else {\r\n          ob.next(res);\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  remove(): void {\r\n    if (this._sub$ && this._sub$.observers.length > 0) {\r\n      this._sub$.observers = [];\r\n    }\r\n  }\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class UofxCoreBroadcastService {\r\n  /** 重新計算badge 數量 */\r\n  public reCalBadgeCount: UofxCoreBroadcastType<any> = new UofxCoreBroadcastType<any>();\r\n  /** 更新個人表單數量(待處理、異常、已取回數量) */\r\n  public updateFormsAmount: UofxCoreBroadcastType<any> = new UofxCoreBroadcastType<any>();\r\n  /** 表單列表重新取得資料 */\r\n  public bpmDoRefresh: UofxCoreBroadcastType<IBpmEventModel> = new UofxCoreBroadcastType<IBpmEventModel>();\r\n  /** 重新取得公告未讀數量 */\r\n  public reCallBulletinCount: UofxCoreBroadcastType<any> = new UofxCoreBroadcastType<any>();\r\n  /** 重新取得問卷調查中數量 */\r\n  public reCallQueCount: UofxCoreBroadcastType<any> = new UofxCoreBroadcastType<any>();\r\n}\r\n","import { LocalStorage } from \"@uofx/core\";\r\n\r\n/** 外掛模組:用來存放當前登入者的資訊 */\r\nexport class AppSettings {\r\n  /** 使用者資訊 */\r\n  public static get UserInfo(): UofxUserProfileModel {\r\n    // 暫時寫法: 因移動到 app-pack 上，app 和外掛拿到的不是同一個實體><\r\n    const info = LocalStorage.getObject('settingUserInfo');\r\n    return {\r\n      account: info.account,\r\n      name: info.name,\r\n      corpId: info.corpId,\r\n      corpName: info.corpName,\r\n      corpCode: info.signinPathCode,\r\n      culture: info.culture\r\n    };\r\n  }\r\n}\r\n\r\n/** 使用者基本資訊 */\r\ninterface UofxUserProfileModel {\r\n  /** 帳號 */\r\n  account: string;\r\n  /** 姓名 */\r\n  name: string;\r\n  /** 公司 Id */\r\n  corpId: string;\r\n  /** 公司名稱 */\r\n  corpName: string;\r\n  /** 公司代號 */\r\n  corpCode: string;\r\n  /** 語系 */\r\n  culture: string;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}