ngx-tethys 19.0.9 → 19.0.10

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [19.0.10](https://github.com/atinc/ngx-tethys/compare/19.0.9...19.0.10) (2025-05-07)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **i18n:** update translation of lastSevenDays and lastThirtyDays #TINFR-2033 ([#3385](https://github.com/atinc/ngx-tethys/issues/3385)) ([512af06](https://github.com/atinc/ngx-tethys/commit/512af0645339b39f7ce216f15e4d99d42cc839a1)), closes [#TINFR-2033](https://github.com/atinc/ngx-tethys/issues/TINFR-2033)
11
+ * **pagination:** fix missing type ([#3389](https://github.com/atinc/ngx-tethys/issues/3389)) ([86f09e9](https://github.com/atinc/ngx-tethys/commit/86f09e9be0d8639b3208c8cb0d2bf1c69de3780d))
12
+
13
+
14
+ ### Features
15
+
16
+ * **image:** support i18n for image ([#3386](https://github.com/atinc/ngx-tethys/issues/3386)) ([e601d6b](https://github.com/atinc/ngx-tethys/commit/e601d6bbf1978f496911121dde68e5b2827e8556))
17
+
18
+
19
+
5
20
  ## [19.0.9](https://github.com/atinc/ngx-tethys/compare/19.0.8...19.0.9) (2025-04-28)
6
21
 
7
22
 
@@ -161,6 +161,17 @@ var zhHansLocale = {
161
161
  },
162
162
  empty: {
163
163
  noDataText: '暂无数据'
164
+ },
165
+ image: {
166
+ zoomOut: '缩小',
167
+ zoomIn: '放大',
168
+ originalSize: '原始比例',
169
+ fitToScreen: '适应屏幕',
170
+ fullScreen: '全屏显示',
171
+ spin: '旋转',
172
+ download: '下载',
173
+ viewOriginal: '查看原图',
174
+ copyLink: '复制链接'
164
175
  }
165
176
  };
166
177
 
@@ -294,6 +305,17 @@ var zhHantLocale = {
294
305
  },
295
306
  empty: {
296
307
  noDataText: '暫無資料'
308
+ },
309
+ image: {
310
+ zoomOut: '縮小',
311
+ zoomIn: '放大',
312
+ originalSize: '原始比例',
313
+ fitToScreen: '適應屏幕',
314
+ fullScreen: '全屏顯示',
315
+ spin: '旋轉',
316
+ download: '下載',
317
+ viewOriginal: '查看原圖',
318
+ copyLink: '複製連結'
297
319
  }
298
320
  };
299
321
 
@@ -323,8 +345,8 @@ var enUsLocale = {
323
345
  today: 'Today',
324
346
  tomorrow: 'Tomorrow',
325
347
  nextWeek: 'Next week',
326
- lastSevenDays: 'Recent 7 days',
327
- lastThirtyDays: 'Recent 30 days',
348
+ lastSevenDays: '7 days',
349
+ lastThirtyDays: '30 days',
328
350
  currentMonth: 'This month',
329
351
  currentWeek: 'This week',
330
352
  advance: 'Advance',
@@ -427,6 +449,17 @@ var enUsLocale = {
427
449
  },
428
450
  empty: {
429
451
  noDataText: 'No data available'
452
+ },
453
+ image: {
454
+ zoomOut: 'Zoom out',
455
+ zoomIn: 'Zoom in',
456
+ originalSize: 'Original size',
457
+ fitToScreen: 'Fit to screen',
458
+ fullScreen: 'Full screen',
459
+ spin: 'Spin',
460
+ download: 'Download',
461
+ viewOriginal: 'View original',
462
+ copyLink: 'Copy link'
430
463
  }
431
464
  };
432
465
  /**
@@ -581,6 +614,17 @@ var jaJpLocale = {
581
614
  },
582
615
  empty: {
583
616
  noDataText: 'データはありません'
617
+ },
618
+ image: {
619
+ zoomOut: '縮小',
620
+ zoomIn: '拡大',
621
+ originalSize: '元のサイズ',
622
+ fitToScreen: '画面に合わせる',
623
+ fullScreen: '全画面表示',
624
+ spin: '回転',
625
+ download: 'ダウンロード',
626
+ viewOriginal: '元の画像を表示',
627
+ copyLink: 'リンクをコピー'
584
628
  }
585
629
  };
586
630
 
@@ -714,6 +758,17 @@ var deDeLocale = {
714
758
  },
715
759
  empty: {
716
760
  noDataText: 'Keine Daten vorhanden'
761
+ },
762
+ image: {
763
+ zoomOut: 'Verkleinern',
764
+ zoomIn: 'Vergrößern',
765
+ originalSize: 'Originalgröße',
766
+ fitToScreen: 'An den Bildschirm anpassen',
767
+ fullScreen: 'Vollbild anzeigen',
768
+ spin: 'Drehen',
769
+ download: 'Herunterladen',
770
+ viewOriginal: 'Original anzeigen',
771
+ copyLink: 'Link kopieren'
717
772
  }
718
773
  };
719
774
 
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-i18n.mjs","sources":["../../../src/i18n/i18n.ts","../../../src/i18n/i18n.token.ts","../../../src/i18n/util.ts","../../../src/i18n/locales/zh-hans.ts","../../../src/i18n/locales/zh-hant.ts","../../../src/i18n/locales/en-us.ts","../../../src/i18n/locales/ja-jp.ts","../../../src/i18n/locales/de-de.ts","../../../src/i18n/i18n.service.ts","../../../src/i18n/locale.ts","../../../src/i18n/ngx-tethys-i18n.ts"],"sourcesContent":["export type ThyModuleType =\n | 'datePicker'\n | 'layout'\n | 'dateRange'\n | 'timePicker'\n | 'calendar'\n | 'autocomplete'\n | 'transfer'\n | 'colorPicker'\n | 'strength'\n | 'guider'\n | 'copy'\n | 'nav'\n | 'dialog'\n | 'select'\n | 'treeSelect'\n | 'cascader'\n | 'pagination'\n | 'form'\n | 'empty';\n\nexport type ThyModuleLocaleType<K extends ThyModuleType> = ThyI18nLocale[K];\n\nexport enum ThyLocaleType {\n zhHans = 'zh-hans',\n zhHant = 'zh-hant',\n enUs = 'en-us',\n jaJp = 'ja-jp',\n deDe = 'de-de'\n}\n\nexport interface ThyI18nLocale {\n id: ThyLocaleType;\n layout: ThyLayoutLocale;\n datePicker: ThyDatePickerLocale;\n dateRange: ThyDateRangeLocale;\n timePicker: ThyTimePickerLocale;\n calendar: ThyCalendarLocale;\n autocomplete: ThyAutoCompleteLocale;\n transfer: ThyTransferLocale;\n colorPicker: ThyColorPickerLocale;\n strength: ThyStrengthLocale;\n guider: ThyGuiderLocale;\n copy: ThyCopyLocale;\n nav: ThyNavLocale;\n dialog: ThyDialogLocale;\n select: ThySelectLocale;\n treeSelect: ThyTreeSelectLocale;\n cascader: ThyCascaderLocale;\n pagination: ThyPaginationLocale;\n form: ThyFormLocale;\n empty: ThyEmptyLocale;\n}\n\nexport interface ThyLayoutLocale {\n collapse: string;\n expand: string;\n}\n\nexport interface ThyDatePickerLocale {\n yearFormat: string;\n monthFormat: string;\n zhMonthFormat: string;\n weekFormat: string;\n fullWeekFormat: string;\n weekThFormat: string;\n dateFormat: string;\n\n yearText: string;\n quarterText: string;\n monthText: string;\n week: string;\n prefixWeek: string;\n\n previousYear: string;\n nextYear: string;\n previousMonth: string;\n nextMonth: string;\n\n today: string;\n tomorrow: string;\n nextWeek: string;\n lastSevenDays: string;\n lastThirtyDays: string;\n currentMonth: string;\n currentWeek: string;\n\n advance: string;\n custom: string;\n\n startDate: string;\n endDate: string;\n\n setTime: string;\n placeholder: string;\n\n ok: string;\n clear: string;\n}\n\nexport interface ThyDateRangeLocale {\n custom: string;\n currentWeek: string;\n currentMonth: string;\n}\n\nexport interface ThyTimePickerLocale {\n placeholder: string;\n now: string;\n ok: string;\n}\n\nexport interface ThyCalendarLocale {\n today: string;\n yearMonthFormat: string;\n}\n\nexport interface ThyAutoCompleteLocale {\n empty: string;\n}\n\nexport interface ThyTransferLocale {\n maxLimit: string;\n maxLockLimit: string;\n unlocked: string;\n}\n\nexport interface ThyColorPickerLocale {\n defaultColor: string;\n noFillColor: string;\n recentUsedColor: string;\n customColor: string;\n none: string;\n}\n\nexport interface ThyStrengthLocale {\n highest: string;\n high: string;\n medium: string;\n low: string;\n}\n\nexport interface ThyGuiderLocale {\n skip: string;\n prev: string;\n next: string;\n finish: string;\n}\n\nexport interface ThyCopyLocale {\n tips: string;\n success: string;\n error: string;\n}\n\nexport interface ThyNavLocale {\n more: string;\n}\n\nexport interface ThyDialogLocale {\n title: string;\n ok: string;\n cancel: string;\n}\n\nexport interface ThySelectLocale {\n placeholder: string;\n empty: string;\n}\n\nexport interface ThyTreeSelectLocale {\n placeholder: string;\n empty: string;\n}\n\nexport interface ThyCascaderLocale {\n placeholder: string;\n empty: string;\n}\n\nexport interface ThyPaginationLocale {\n page: string;\n total: string;\n totalCount: string;\n jumpTo: string;\n firstPage: string;\n lastPage: string;\n defaultUnit: string;\n}\n\nexport interface ThyFormLocale {\n required: string;\n maxlength: string;\n minlength: string;\n uniqueCheck: string;\n email: string;\n confirm: string;\n pattern: string;\n number: string;\n url: string;\n max: string;\n min: string;\n}\n\nexport interface ThyEmptyLocale {\n noDataText: string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThyI18nLocale, ThyLocaleType } from './i18n';\n\n// Support configure the default locale id\nexport const THY_I18N_LOCALE_ID = new InjectionToken<ThyLocaleType>('thy-i18n-locale-id');\n\n// Support rewrite language package\nexport const THY_I18N_ZH_HANS = new InjectionToken<ThyI18nLocale>('thy-i18n-zh-hans');\nexport const THY_I18N_ZH_HANT = new InjectionToken<ThyI18nLocale>('thy-i18n-zh-hant');\nexport const THY_I18N_EN_US = new InjectionToken<ThyI18nLocale>('thy-i18n-en-us');\nexport const THY_I18N_JA_JP = new InjectionToken<ThyI18nLocale>('thy-i18n-ja-jp');\nexport const THY_I18N_DE_DE = new InjectionToken<ThyI18nLocale>('thy-i18n-de-de');\n","import { ThyLocaleType } from './i18n';\n\nexport function normalizeLocale(localeId: string): ThyLocaleType {\n return localeId?.toLowerCase().replace(/_/g, '-') as ThyLocaleType;\n}\n\nexport function getDefaultLocaleId(): ThyLocaleType {\n let defaultLocaleId = ThyLocaleType.zhHans;\n const allLocales = [ThyLocaleType.zhHans, ThyLocaleType.zhHant, ThyLocaleType.enUs, ThyLocaleType.jaJp, ThyLocaleType.deDe];\n if (typeof window !== 'undefined' && window?.navigator?.language) {\n defaultLocaleId = window.navigator?.language?.toLowerCase() as ThyLocaleType;\n }\n return allLocales.includes(normalizeLocale(defaultLocaleId) as ThyLocaleType) ? defaultLocaleId : ThyLocaleType.zhHans;\n}\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.zhHans,\n layout: {\n expand: '展开',\n collapse: '收起'\n },\n datePicker: {\n yearFormat: 'yyyy年', // Used in header of month picker\n monthFormat: 'MMM', // Used in header of date picker, advanced range picker (2月)\n zhMonthFormat: 'MMMM', // Used in month picker (二月)\n weekFormat: 'EEEEE', // Used in date picker table (六)\n fullWeekFormat: 'EE', // Used in calendar (周六)\n weekThFormat: 'yyyy-ww周', // Used in week picker\n dateFormat: 'yyyy年MM月dd日',\n\n yearText: '年份',\n quarterText: '季度',\n monthText: '月份',\n week: '周',\n prefixWeek: '周',\n\n previousYear: '上一年',\n nextYear: '下一年',\n previousMonth: '上个月',\n nextMonth: '下个月',\n\n today: '今天',\n tomorrow: '明天',\n nextWeek: '下周',\n lastSevenDays: '最近 7 天',\n lastThirtyDays: '最近 30 天',\n currentMonth: '本月',\n currentWeek: '本周',\n\n advance: '高级选项',\n custom: '自定义',\n\n startDate: '开始日期',\n endDate: '结束日期',\n\n setTime: '设置时间',\n placeholder: '选择日期',\n\n ok: '确定',\n clear: '清除'\n },\n dateRange: {\n custom: '自定义',\n currentWeek: '本周',\n currentMonth: '本月'\n },\n timePicker: {\n placeholder: '选择时间',\n now: '此刻',\n ok: '确定'\n },\n calendar: {\n today: '今天',\n yearMonthFormat: 'yyyy年MM月'\n },\n autocomplete: {\n empty: '没有任何数据'\n },\n transfer: {\n maxLimit: '(上限{max}个)',\n maxLockLimit: '锁定 (上限{maxLock}个)',\n unlocked: '未锁定'\n },\n colorPicker: {\n defaultColor: '默认颜色',\n noFillColor: '无填充色',\n recentUsedColor: '最近使用自定义颜色',\n customColor: '自定义颜色',\n none: '暂无'\n },\n strength: {\n highest: '最高',\n high: '高',\n medium: '中',\n low: '低'\n },\n guider: {\n skip: '跳过',\n prev: '上一步',\n next: '下一步',\n finish: '完成'\n },\n copy: {\n tips: '点击复制',\n success: '复制成功',\n error: '复制失败'\n },\n nav: {\n more: '更多'\n },\n dialog: {\n title: '确认删除',\n ok: '确定',\n cancel: '取消'\n },\n select: {\n placeholder: '请选择节点',\n empty: '暂时没有数据可选'\n },\n treeSelect: {\n placeholder: '请选择节点',\n empty: '暂时没有数据可选'\n },\n cascader: {\n placeholder: '请选择',\n empty: '暂无可选项'\n },\n pagination: {\n page: '页',\n order: '第',\n total: '共',\n totalCount: '共{total}页',\n jumpTo: '跳至',\n firstPage: '第一页',\n lastPage: '最后一页',\n defaultUnit: '条'\n },\n form: {\n required: '该选项不能为空',\n maxlength: '该选项输入值长度不能大于{maxlength}',\n minlength: '该选项输入值长度不能小于{minlength}',\n uniqueCheck: '输入值已经存在,请重新输入',\n email: '输入邮件的格式不正确',\n confirm: '两次输入不一致',\n pattern: '该选项输入格式不正确',\n number: '必须输入数字',\n url: '输入URL格式不正确',\n max: '该选项输入值不能大于{max}',\n min: '该选项输入值不能小于{min}'\n },\n empty: {\n noDataText: '暂无数据'\n }\n};\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.zhHant,\n layout: {\n expand: '展開',\n collapse: '收起'\n },\n datePicker: {\n yearFormat: 'yyyy年',\n monthFormat: 'MMM',\n zhMonthFormat: 'MMMM',\n weekFormat: 'EEEEE',\n fullWeekFormat: 'EE',\n weekThFormat: 'yyyy-ww週',\n dateFormat: 'yyyy年MM月dd日',\n\n yearText: '年份',\n quarterText: '季度',\n monthText: '月份',\n week: '週',\n prefixWeek: '週',\n\n previousYear: '上一年',\n nextYear: '下一年',\n previousMonth: '上個月',\n nextMonth: '下個月',\n\n today: '今天',\n tomorrow: '明天',\n nextWeek: '下週',\n lastSevenDays: '最近 7 天',\n lastThirtyDays: '最近 30 天',\n currentMonth: '本月',\n currentWeek: '本週',\n\n advance: '高級選項',\n custom: '自訂',\n\n startDate: '開始日期',\n endDate: '結束日期',\n\n setTime: '設置時間',\n placeholder: '選擇日期',\n\n ok: '確定',\n clear: '清除'\n },\n dateRange: {\n custom: '自訂',\n currentWeek: '本週',\n currentMonth: '本月'\n },\n timePicker: {\n placeholder: '選擇時間',\n now: '此刻',\n ok: '確定'\n },\n calendar: {\n today: '今天',\n yearMonthFormat: 'yyyy年MM月'\n },\n autocomplete: {\n empty: '沒有任何資料'\n },\n transfer: {\n maxLimit: '(上限{max}個)',\n maxLockLimit: '鎖定 (上限{maxLock}個)',\n unlocked: '未鎖定'\n },\n colorPicker: {\n defaultColor: '預設顏色',\n noFillColor: '無填充色',\n recentUsedColor: '最近使用自訂顏色',\n customColor: '自訂顏色',\n none: '暫無'\n },\n strength: {\n highest: '最高',\n high: '高',\n medium: '中',\n low: '低'\n },\n guider: {\n skip: '跳過',\n prev: '上一步',\n next: '下一步',\n finish: '完成'\n },\n copy: {\n tips: '點擊複製',\n success: '複製成功',\n error: '複製失敗'\n },\n nav: {\n more: '更多'\n },\n dialog: {\n title: '確認刪除',\n ok: '確定',\n cancel: '取消'\n },\n select: {\n placeholder: '請選擇節點',\n empty: '暫時沒有資料可選'\n },\n treeSelect: {\n placeholder: '請選擇節點',\n empty: '暫時沒有資料可選'\n },\n cascader: {\n placeholder: '請選擇',\n empty: '暫無可選項'\n },\n pagination: {\n page: '頁',\n order: '第',\n total: '共',\n totalCount: '共{total}頁',\n jumpTo: '跳至',\n firstPage: '第一頁',\n lastPage: '最後一頁',\n defaultUnit: '個'\n },\n form: {\n required: '該選項不能为空',\n maxlength: '該選項輸入值長度不能大於{maxlength}',\n minlength: '該選項輸入值長度不能小於{minlength}',\n uniqueCheck: '輸入值已經存在,請重新輸入',\n email: '輸入郵件的格式不正確',\n confirm: '兩次輸入不一致',\n pattern: '該選項輸入格式不正確',\n number: '必須輸入數字',\n url: '輸入URL格式不正確',\n max: '該選項輸入值不能大於{max}',\n min: '該選項輸入值不能小於{min}'\n },\n empty: {\n noDataText: '暫無資料'\n }\n};\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.enUs,\n layout: {\n expand: 'Expand',\n collapse: 'Collapse'\n },\n datePicker: {\n yearFormat: 'yyyy', // eg. 2025\n monthFormat: 'MMM', // eg. Sep\n zhMonthFormat: 'MMM', // eg. Sep\n weekFormat: 'EEE', // eg. Tue\n fullWeekFormat: 'EEE', // eg. Tue\n weekThFormat: 'yyyy-ww', // eg. 2025-01st、2025-02nd、2025-03rd、2025-27th\n dateFormat: 'yyyy-MM-dd', // eg. 2025-09-02\n\n yearText: 'Year',\n quarterText: 'Quarter',\n monthText: 'Month',\n week: 'Week',\n prefixWeek: '',\n\n previousYear: 'Previous year',\n nextYear: 'Next year',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n\n today: 'Today',\n tomorrow: 'Tomorrow',\n nextWeek: 'Next week',\n lastSevenDays: 'Recent 7 days',\n lastThirtyDays: 'Recent 30 days',\n currentMonth: 'This month',\n currentWeek: 'This week',\n\n advance: 'Advance',\n custom: 'Custom',\n\n startDate: 'Start date',\n endDate: 'End date',\n\n setTime: 'Set time',\n placeholder: 'Select date',\n\n ok: 'Ok',\n clear: 'Clear'\n },\n dateRange: {\n custom: 'Custom',\n currentWeek: 'This week',\n currentMonth: 'This month'\n },\n timePicker: {\n placeholder: 'Select time',\n now: 'Now',\n ok: 'Ok'\n },\n calendar: {\n today: 'Today',\n yearMonthFormat: 'yyyy-MM' // eg. 2025-09\n },\n autocomplete: {\n empty: 'No data available'\n },\n transfer: {\n maxLimit: '(Max limit: {max})',\n maxLockLimit: 'Lock (Max limit: {maxLock})',\n unlocked: 'Unlocked'\n },\n colorPicker: {\n defaultColor: 'Default color',\n noFillColor: 'No fill color',\n recentUsedColor: 'Recently used custom color',\n customColor: 'Custom color',\n none: 'None'\n },\n strength: {\n highest: 'Highest',\n high: 'High',\n medium: 'Medium',\n low: 'Low'\n },\n guider: {\n skip: 'Skip',\n prev: 'Previous',\n next: 'Next',\n finish: 'Finish'\n },\n copy: {\n tips: 'Click to copy',\n success: 'Copy succeeded',\n error: 'Copy failed'\n },\n nav: {\n more: 'More'\n },\n dialog: {\n title: 'Confirm',\n ok: 'Ok',\n cancel: 'Cancel'\n },\n select: {\n placeholder: 'Select',\n empty: 'No data available'\n },\n treeSelect: {\n placeholder: 'Select',\n empty: 'No data available'\n },\n cascader: {\n placeholder: 'Select',\n empty: 'No data available'\n },\n pagination: {\n page: 'page',\n order: 'No.',\n total: 'Total: ',\n totalCount: 'Total: {total}',\n jumpTo: 'Go to',\n firstPage: 'First page',\n lastPage: 'Last page',\n defaultUnit: ''\n },\n form: {\n required: 'This option is required',\n maxlength: 'Input cannot exceed {maxlength} characters',\n minlength: 'Input must be at least {minlength} characters',\n uniqueCheck: 'Value already exists, please try again',\n email: 'Invalid email format',\n confirm: 'Inputs do not match',\n pattern: 'Invalid input format',\n number: 'A number is required',\n url: 'Invalid URL format',\n max: 'Input cannot be greater than {max}',\n min: 'Input cannot be less than {min}'\n },\n empty: {\n noDataText: 'No data available'\n }\n};\n\n/**\n * Format options:\n * | Field type | Format | Description | Example Value |\n * |--------------------|-------------|--------------------------------------------|---------------------------------|\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | ISO Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n *\n */\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.jaJp,\n layout: {\n expand: '展開',\n collapse: '折りたたみ'\n },\n datePicker: {\n yearFormat: 'yyyy年',\n monthFormat: 'MMM',\n zhMonthFormat: 'MMMM',\n weekFormat: 'EEEEE',\n fullWeekFormat: 'EE',\n weekThFormat: 'yyyy-ww週',\n dateFormat: 'yyyy年MM月dd日',\n\n yearText: '年',\n quarterText: '四半期',\n monthText: '月',\n week: '週',\n prefixWeek: '週',\n\n previousYear: '昨年',\n nextYear: '来年',\n previousMonth: '先月',\n nextMonth: '来月',\n\n today: '今日',\n tomorrow: '明日',\n nextWeek: '来週',\n lastSevenDays: '過去7日間',\n lastThirtyDays: '過去30日間',\n currentMonth: '今月',\n currentWeek: '今週',\n\n advance: '高度なオプション',\n custom: 'カスタム',\n\n startDate: '開始日',\n endDate: '終了日',\n\n setTime: '時間を設定',\n placeholder: '日付を選択',\n\n ok: '確認',\n clear: 'クリア'\n },\n dateRange: {\n custom: 'カスタム',\n currentWeek: '今週',\n currentMonth: '今月'\n },\n timePicker: {\n placeholder: '時間を選択',\n now: '現在',\n ok: 'もちろん'\n },\n calendar: {\n today: '今日',\n yearMonthFormat: 'yyyy年MM月'\n },\n autocomplete: {\n empty: 'データはありません'\n },\n transfer: {\n maxLimit: '(上限{max}個)',\n maxLockLimit: 'ロック (上限{maxLock}個)',\n unlocked: 'ロック解除'\n },\n colorPicker: {\n defaultColor: 'デフォルトカラー',\n noFillColor: '塗りつぶしなし',\n recentUsedColor: '最近使用したカスタムカラー',\n customColor: 'カスタムカラー',\n none: 'なし'\n },\n strength: {\n highest: '最高',\n high: '高',\n medium: '中',\n low: '低'\n },\n guider: {\n skip: 'スキップ',\n prev: '前へ',\n next: '次へ',\n finish: '完了'\n },\n copy: {\n tips: 'クリックしてコピー',\n success: 'コピー成功',\n error: 'コピー失敗'\n },\n nav: {\n more: 'もっと見る'\n },\n dialog: {\n title: '削除の確認',\n ok: '確認',\n cancel: 'キャンセル'\n },\n select: {\n placeholder: 'ノードを選択してください',\n empty: '選択可能なデータはありません'\n },\n treeSelect: {\n placeholder: 'ノードを選択してください',\n empty: '選択可能なデータはありません'\n },\n cascader: {\n placeholder: '選択してください',\n empty: '選択肢はありません'\n },\n pagination: {\n page: 'ページ',\n order: '第',\n total: '合計',\n totalCount: '合計 {total}',\n jumpTo: 'ジャンプ',\n firstPage: '最初のページ',\n lastPage: '最後のページ',\n defaultUnit: '条'\n },\n form: {\n required: 'この選択肢は空にできません',\n maxlength: 'この選択肢の入力値の長さは{maxlength}を超えてはいけません',\n minlength: 'この選択肢の入力値の長さは{minlength}未満ではいけません',\n uniqueCheck: '入力値はすでに存在します。再入力してください',\n email: 'メールアドレスの形式が正しくありません',\n confirm: '二回の入力が一致しません',\n pattern: 'この選択肢の入力形式が正しくありません',\n number: '数字を入力する必要があります',\n url: 'URL形式が正しくありません',\n max: 'この選択肢の入力値は{max}を超えてはいけません',\n min: 'この選択肢の入力値は{min}未満ではいけません'\n },\n empty: {\n noDataText: 'データはありません'\n }\n};\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.deDe,\n layout: {\n expand: 'Aufklappen',\n collapse: 'Zuklappen'\n },\n datePicker: {\n yearFormat: 'yyyy',\n monthFormat: 'MMM',\n zhMonthFormat: 'MMM', // MMM:月份缩写。 MMMM:月份全称。\n weekFormat: 'EE',\n fullWeekFormat: 'EE',\n weekThFormat: 'yyyy-ww',\n dateFormat: 'yyyy-MM-dd',\n\n yearText: 'Jahr',\n quarterText: 'Quartal',\n monthText: 'Monat',\n week: 'Woche',\n prefixWeek: 'Woche',\n\n previousYear: 'Vorjahr',\n nextYear: 'Nächstes Jahr',\n previousMonth: 'Letzter Monat',\n nextMonth: 'Nächster Monat',\n\n today: 'Heute',\n tomorrow: 'Morgen',\n nextWeek: 'Nächste Woche',\n lastSevenDays: 'Letzte 7 Tage',\n lastThirtyDays: 'Letzte 30 Tage',\n currentMonth: 'Diesen Monat',\n currentWeek: 'Diese Woche',\n\n advance: 'Erweiterte Optionen',\n custom: 'Benutzerdefiniert',\n\n startDate: 'Startdatum',\n endDate: 'Enddatum',\n\n setTime: 'Zeit einstellen',\n placeholder: 'Datum auswählen',\n\n ok: 'Bestätigen',\n clear: 'Löschen'\n },\n dateRange: {\n custom: 'Benutzerdefiniert',\n currentWeek: 'Diese Woche',\n currentMonth: 'Diesen Monat'\n },\n timePicker: {\n placeholder: 'Zeit auswählen',\n now: 'Jetzt',\n ok: 'Bestätigen'\n },\n calendar: {\n today: 'Heute',\n yearMonthFormat: 'yyyy-MM'\n },\n autocomplete: {\n empty: 'Keine Daten vorhanden'\n },\n transfer: {\n maxLimit: '(Maximal {max} Stück)',\n maxLockLimit: 'Gesperrt (Maximal {maxLock} Stück)',\n unlocked: 'Entsperrt'\n },\n colorPicker: {\n defaultColor: 'Standardfarbe',\n noFillColor: 'Keine Füllfarbe',\n recentUsedColor: 'Kürzlich verwendet',\n customColor: 'Benutzerdefinierte Farbe',\n none: 'Keine'\n },\n strength: {\n highest: 'Höchste',\n high: 'Hoch',\n medium: 'Mittel',\n low: 'Niedrig'\n },\n guider: {\n skip: 'Überspringen',\n prev: 'Zurück',\n next: 'Weiter',\n finish: 'Abschließen'\n },\n copy: {\n tips: 'Klicken Sie, um zu kopieren',\n success: 'Kopieren erfolgreich',\n error: 'Kopieren fehlgeschlagen'\n },\n nav: {\n more: 'Mehr'\n },\n dialog: {\n title: 'Löschbestätigung',\n ok: 'Bestätigen',\n cancel: 'Abbrechen'\n },\n select: {\n placeholder: 'Bitte Knoten auswählen',\n empty: 'Derzeit keine Daten verfügbar'\n },\n treeSelect: {\n placeholder: 'Bitte Knoten auswählen',\n empty: 'Derzeit keine Daten verfügbar'\n },\n cascader: {\n placeholder: 'Bitte auswählen',\n empty: 'Keine Optionen verfügbar'\n },\n pagination: {\n page: 'Seite',\n order: 'Die',\n total: 'Insgesamt',\n totalCount: 'Gesamt {total}',\n jumpTo: 'Springen zu',\n firstPage: 'Erste Seite',\n lastPage: 'Letzte Seite',\n defaultUnit: 'Einträge'\n },\n form: {\n required: 'Dieses Feld darf nicht leer sein',\n maxlength: 'Die Eingabelänge darf {maxlength} nicht überschreiten',\n minlength: 'Die Eingabelänge darf {minlength} nicht unterschreiten',\n uniqueCheck: 'Der eingegebene Wert existiert bereits, bitte erneut eingeben',\n email: 'Das Format der E-Mail-Adresse ist ungültig',\n confirm: 'Die Eingaben stimmen nicht überein',\n pattern: 'Das Eingabeformat ist ungültig',\n number: 'Es muss eine Zahl eingegeben werden',\n url: 'Das Format der URL ist ungültig',\n max: 'Der eingegebene Wert darf {max} nicht überschreiten',\n min: 'Der eingegebene Wert darf {min} nicht unterschreiten'\n },\n empty: {\n noDataText: 'Keine Daten vorhanden'\n }\n};\n","import { inject, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { THY_I18N_LOCALE_ID, THY_I18N_ZH_HANS, THY_I18N_ZH_HANT, THY_I18N_EN_US, THY_I18N_JA_JP, THY_I18N_DE_DE } from './i18n.token';\nimport { ThyLocaleType, ThyI18nLocale } from './i18n';\nimport { normalizeLocale, getDefaultLocaleId } from './util';\nimport { zhHansLocale, zhHantLocale, enUsLocale, jaJpLocale, deDeLocale } from './locales';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyI18nService {\n private locales: { [key in ThyLocaleType]: ThyI18nLocale } = {\n [ThyLocaleType.zhHans]: inject(THY_I18N_ZH_HANS, { optional: true }) || zhHansLocale,\n [ThyLocaleType.zhHant]: inject(THY_I18N_ZH_HANT, { optional: true }) || zhHantLocale,\n [ThyLocaleType.enUs]: inject(THY_I18N_EN_US, { optional: true }) || enUsLocale,\n [ThyLocaleType.jaJp]: inject(THY_I18N_JA_JP, { optional: true }) || jaJpLocale,\n [ThyLocaleType.deDe]: inject(THY_I18N_DE_DE, { optional: true }) || deDeLocale\n };\n\n private defaultLocaleId: ThyLocaleType = normalizeLocale(inject(THY_I18N_LOCALE_ID, { optional: true })) || getDefaultLocaleId();\n\n private locale: WritableSignal<ThyI18nLocale> = signal(this.locales[this.defaultLocaleId]);\n\n /**\n * 设置语言\n * @param id\n */\n setLocale(id: string) {\n let localeId: ThyLocaleType = normalizeLocale(id);\n\n if (localeId.includes('zh') && localeId !== ThyLocaleType.zhHans && localeId !== ThyLocaleType.zhHant) {\n localeId = ThyLocaleType.zhHans;\n }\n\n this.locale.set(this.locales[localeId] || this.locales[this.defaultLocaleId] || ({} as ThyI18nLocale));\n }\n\n /**\n * 获取当前语言\n */\n getLocale(): Signal<ThyI18nLocale> {\n return this.locale;\n }\n}\n","import { computed, inject, Signal } from '@angular/core';\nimport { ThyModuleLocaleType, ThyModuleType, ThyI18nLocale } from './i18n';\nimport { ThyI18nService } from './i18n.service';\n\nexport function injectLocale(): Signal<ThyI18nLocale>;\n\nexport function injectLocale<K extends ThyModuleType>(key: K): Signal<ThyModuleLocaleType<K>>;\n\nexport function injectLocale<K extends ThyModuleType>(key?: K): Signal<ThyI18nLocale | ThyModuleLocaleType<K>> {\n const i18n = inject(ThyI18nService);\n const allLocale = i18n.getLocale();\n\n return computed(() => {\n if (key) {\n return allLocale()[key] ?? allLocale();\n }\n return allLocale();\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-i18n.mjs","sources":["../../../src/i18n/i18n.ts","../../../src/i18n/i18n.token.ts","../../../src/i18n/util.ts","../../../src/i18n/locales/zh-hans.ts","../../../src/i18n/locales/zh-hant.ts","../../../src/i18n/locales/en-us.ts","../../../src/i18n/locales/ja-jp.ts","../../../src/i18n/locales/de-de.ts","../../../src/i18n/i18n.service.ts","../../../src/i18n/locale.ts","../../../src/i18n/ngx-tethys-i18n.ts"],"sourcesContent":["export type ThyModuleType =\n | 'datePicker'\n | 'layout'\n | 'dateRange'\n | 'timePicker'\n | 'calendar'\n | 'autocomplete'\n | 'transfer'\n | 'colorPicker'\n | 'strength'\n | 'guider'\n | 'copy'\n | 'nav'\n | 'dialog'\n | 'select'\n | 'treeSelect'\n | 'cascader'\n | 'pagination'\n | 'form'\n | 'empty'\n | 'image';\n\nexport type ThyModuleLocaleType<K extends ThyModuleType> = ThyI18nLocale[K];\n\nexport enum ThyLocaleType {\n zhHans = 'zh-hans',\n zhHant = 'zh-hant',\n enUs = 'en-us',\n jaJp = 'ja-jp',\n deDe = 'de-de'\n}\n\nexport interface ThyI18nLocale {\n id: ThyLocaleType;\n layout: ThyLayoutLocale;\n datePicker: ThyDatePickerLocale;\n dateRange: ThyDateRangeLocale;\n timePicker: ThyTimePickerLocale;\n calendar: ThyCalendarLocale;\n autocomplete: ThyAutoCompleteLocale;\n transfer: ThyTransferLocale;\n colorPicker: ThyColorPickerLocale;\n strength: ThyStrengthLocale;\n guider: ThyGuiderLocale;\n copy: ThyCopyLocale;\n nav: ThyNavLocale;\n dialog: ThyDialogLocale;\n select: ThySelectLocale;\n treeSelect: ThyTreeSelectLocale;\n cascader: ThyCascaderLocale;\n pagination: ThyPaginationLocale;\n form: ThyFormLocale;\n empty: ThyEmptyLocale;\n image: ThyImageLocale;\n}\n\nexport interface ThyLayoutLocale {\n collapse: string;\n expand: string;\n}\n\nexport interface ThyDatePickerLocale {\n yearFormat: string;\n monthFormat: string;\n zhMonthFormat: string;\n weekFormat: string;\n fullWeekFormat: string;\n weekThFormat: string;\n dateFormat: string;\n\n yearText: string;\n quarterText: string;\n monthText: string;\n week: string;\n prefixWeek: string;\n\n previousYear: string;\n nextYear: string;\n previousMonth: string;\n nextMonth: string;\n\n today: string;\n tomorrow: string;\n nextWeek: string;\n lastSevenDays: string;\n lastThirtyDays: string;\n currentMonth: string;\n currentWeek: string;\n\n advance: string;\n custom: string;\n\n startDate: string;\n endDate: string;\n\n setTime: string;\n placeholder: string;\n\n ok: string;\n clear: string;\n}\n\nexport interface ThyDateRangeLocale {\n custom: string;\n currentWeek: string;\n currentMonth: string;\n}\n\nexport interface ThyTimePickerLocale {\n placeholder: string;\n now: string;\n ok: string;\n}\n\nexport interface ThyCalendarLocale {\n today: string;\n yearMonthFormat: string;\n}\n\nexport interface ThyAutoCompleteLocale {\n empty: string;\n}\n\nexport interface ThyTransferLocale {\n maxLimit: string;\n maxLockLimit: string;\n unlocked: string;\n}\n\nexport interface ThyColorPickerLocale {\n defaultColor: string;\n noFillColor: string;\n recentUsedColor: string;\n customColor: string;\n none: string;\n}\n\nexport interface ThyStrengthLocale {\n highest: string;\n high: string;\n medium: string;\n low: string;\n}\n\nexport interface ThyGuiderLocale {\n skip: string;\n prev: string;\n next: string;\n finish: string;\n}\n\nexport interface ThyCopyLocale {\n tips: string;\n success: string;\n error: string;\n}\n\nexport interface ThyNavLocale {\n more: string;\n}\n\nexport interface ThyDialogLocale {\n title: string;\n ok: string;\n cancel: string;\n}\n\nexport interface ThySelectLocale {\n placeholder: string;\n empty: string;\n}\n\nexport interface ThyTreeSelectLocale {\n placeholder: string;\n empty: string;\n}\n\nexport interface ThyCascaderLocale {\n placeholder: string;\n empty: string;\n}\n\nexport interface ThyPaginationLocale {\n page: string;\n order: string;\n total: string;\n totalCount: string;\n jumpTo: string;\n firstPage: string;\n lastPage: string;\n defaultUnit: string;\n}\n\nexport interface ThyFormLocale {\n required: string;\n maxlength: string;\n minlength: string;\n uniqueCheck: string;\n email: string;\n confirm: string;\n pattern: string;\n number: string;\n url: string;\n max: string;\n min: string;\n}\n\nexport interface ThyEmptyLocale {\n noDataText: string;\n}\n\nexport interface ThyImageLocale {\n zoomOut: string;\n zoomIn: string;\n originalSize: string;\n fitToScreen: string;\n fullScreen: string;\n spin: string;\n download: string;\n viewOriginal: string;\n copyLink: string;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThyI18nLocale, ThyLocaleType } from './i18n';\n\n// Support configure the default locale id\nexport const THY_I18N_LOCALE_ID = new InjectionToken<ThyLocaleType>('thy-i18n-locale-id');\n\n// Support rewrite language package\nexport const THY_I18N_ZH_HANS = new InjectionToken<ThyI18nLocale>('thy-i18n-zh-hans');\nexport const THY_I18N_ZH_HANT = new InjectionToken<ThyI18nLocale>('thy-i18n-zh-hant');\nexport const THY_I18N_EN_US = new InjectionToken<ThyI18nLocale>('thy-i18n-en-us');\nexport const THY_I18N_JA_JP = new InjectionToken<ThyI18nLocale>('thy-i18n-ja-jp');\nexport const THY_I18N_DE_DE = new InjectionToken<ThyI18nLocale>('thy-i18n-de-de');\n","import { ThyLocaleType } from './i18n';\n\nexport function normalizeLocale(localeId: string): ThyLocaleType {\n return localeId?.toLowerCase().replace(/_/g, '-') as ThyLocaleType;\n}\n\nexport function getDefaultLocaleId(): ThyLocaleType {\n let defaultLocaleId = ThyLocaleType.zhHans;\n const allLocales = [ThyLocaleType.zhHans, ThyLocaleType.zhHant, ThyLocaleType.enUs, ThyLocaleType.jaJp, ThyLocaleType.deDe];\n if (typeof window !== 'undefined' && window?.navigator?.language) {\n defaultLocaleId = window.navigator?.language?.toLowerCase() as ThyLocaleType;\n }\n return allLocales.includes(normalizeLocale(defaultLocaleId) as ThyLocaleType) ? defaultLocaleId : ThyLocaleType.zhHans;\n}\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.zhHans,\n layout: {\n expand: '展开',\n collapse: '收起'\n },\n datePicker: {\n yearFormat: 'yyyy年', // Used in header of month picker\n monthFormat: 'MMM', // Used in header of date picker, advanced range picker (2月)\n zhMonthFormat: 'MMMM', // Used in month picker (二月)\n weekFormat: 'EEEEE', // Used in date picker table (六)\n fullWeekFormat: 'EE', // Used in calendar (周六)\n weekThFormat: 'yyyy-ww周', // Used in week picker\n dateFormat: 'yyyy年MM月dd日',\n\n yearText: '年份',\n quarterText: '季度',\n monthText: '月份',\n week: '周',\n prefixWeek: '周',\n\n previousYear: '上一年',\n nextYear: '下一年',\n previousMonth: '上个月',\n nextMonth: '下个月',\n\n today: '今天',\n tomorrow: '明天',\n nextWeek: '下周',\n lastSevenDays: '最近 7 天',\n lastThirtyDays: '最近 30 天',\n currentMonth: '本月',\n currentWeek: '本周',\n\n advance: '高级选项',\n custom: '自定义',\n\n startDate: '开始日期',\n endDate: '结束日期',\n\n setTime: '设置时间',\n placeholder: '选择日期',\n\n ok: '确定',\n clear: '清除'\n },\n dateRange: {\n custom: '自定义',\n currentWeek: '本周',\n currentMonth: '本月'\n },\n timePicker: {\n placeholder: '选择时间',\n now: '此刻',\n ok: '确定'\n },\n calendar: {\n today: '今天',\n yearMonthFormat: 'yyyy年MM月'\n },\n autocomplete: {\n empty: '没有任何数据'\n },\n transfer: {\n maxLimit: '(上限{max}个)',\n maxLockLimit: '锁定 (上限{maxLock}个)',\n unlocked: '未锁定'\n },\n colorPicker: {\n defaultColor: '默认颜色',\n noFillColor: '无填充色',\n recentUsedColor: '最近使用自定义颜色',\n customColor: '自定义颜色',\n none: '暂无'\n },\n strength: {\n highest: '最高',\n high: '高',\n medium: '中',\n low: '低'\n },\n guider: {\n skip: '跳过',\n prev: '上一步',\n next: '下一步',\n finish: '完成'\n },\n copy: {\n tips: '点击复制',\n success: '复制成功',\n error: '复制失败'\n },\n nav: {\n more: '更多'\n },\n dialog: {\n title: '确认删除',\n ok: '确定',\n cancel: '取消'\n },\n select: {\n placeholder: '请选择节点',\n empty: '暂时没有数据可选'\n },\n treeSelect: {\n placeholder: '请选择节点',\n empty: '暂时没有数据可选'\n },\n cascader: {\n placeholder: '请选择',\n empty: '暂无可选项'\n },\n pagination: {\n page: '页',\n order: '第',\n total: '共',\n totalCount: '共{total}页',\n jumpTo: '跳至',\n firstPage: '第一页',\n lastPage: '最后一页',\n defaultUnit: '条'\n },\n form: {\n required: '该选项不能为空',\n maxlength: '该选项输入值长度不能大于{maxlength}',\n minlength: '该选项输入值长度不能小于{minlength}',\n uniqueCheck: '输入值已经存在,请重新输入',\n email: '输入邮件的格式不正确',\n confirm: '两次输入不一致',\n pattern: '该选项输入格式不正确',\n number: '必须输入数字',\n url: '输入URL格式不正确',\n max: '该选项输入值不能大于{max}',\n min: '该选项输入值不能小于{min}'\n },\n empty: {\n noDataText: '暂无数据'\n },\n image: {\n zoomOut: '缩小',\n zoomIn: '放大',\n originalSize: '原始比例',\n fitToScreen: '适应屏幕',\n fullScreen: '全屏显示',\n spin: '旋转',\n download: '下载',\n viewOriginal: '查看原图',\n copyLink: '复制链接'\n }\n};\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.zhHant,\n layout: {\n expand: '展開',\n collapse: '收起'\n },\n datePicker: {\n yearFormat: 'yyyy年',\n monthFormat: 'MMM',\n zhMonthFormat: 'MMMM',\n weekFormat: 'EEEEE',\n fullWeekFormat: 'EE',\n weekThFormat: 'yyyy-ww週',\n dateFormat: 'yyyy年MM月dd日',\n\n yearText: '年份',\n quarterText: '季度',\n monthText: '月份',\n week: '週',\n prefixWeek: '週',\n\n previousYear: '上一年',\n nextYear: '下一年',\n previousMonth: '上個月',\n nextMonth: '下個月',\n\n today: '今天',\n tomorrow: '明天',\n nextWeek: '下週',\n lastSevenDays: '最近 7 天',\n lastThirtyDays: '最近 30 天',\n currentMonth: '本月',\n currentWeek: '本週',\n\n advance: '高級選項',\n custom: '自訂',\n\n startDate: '開始日期',\n endDate: '結束日期',\n\n setTime: '設置時間',\n placeholder: '選擇日期',\n\n ok: '確定',\n clear: '清除'\n },\n dateRange: {\n custom: '自訂',\n currentWeek: '本週',\n currentMonth: '本月'\n },\n timePicker: {\n placeholder: '選擇時間',\n now: '此刻',\n ok: '確定'\n },\n calendar: {\n today: '今天',\n yearMonthFormat: 'yyyy年MM月'\n },\n autocomplete: {\n empty: '沒有任何資料'\n },\n transfer: {\n maxLimit: '(上限{max}個)',\n maxLockLimit: '鎖定 (上限{maxLock}個)',\n unlocked: '未鎖定'\n },\n colorPicker: {\n defaultColor: '預設顏色',\n noFillColor: '無填充色',\n recentUsedColor: '最近使用自訂顏色',\n customColor: '自訂顏色',\n none: '暫無'\n },\n strength: {\n highest: '最高',\n high: '高',\n medium: '中',\n low: '低'\n },\n guider: {\n skip: '跳過',\n prev: '上一步',\n next: '下一步',\n finish: '完成'\n },\n copy: {\n tips: '點擊複製',\n success: '複製成功',\n error: '複製失敗'\n },\n nav: {\n more: '更多'\n },\n dialog: {\n title: '確認刪除',\n ok: '確定',\n cancel: '取消'\n },\n select: {\n placeholder: '請選擇節點',\n empty: '暫時沒有資料可選'\n },\n treeSelect: {\n placeholder: '請選擇節點',\n empty: '暫時沒有資料可選'\n },\n cascader: {\n placeholder: '請選擇',\n empty: '暫無可選項'\n },\n pagination: {\n page: '頁',\n order: '第',\n total: '共',\n totalCount: '共{total}頁',\n jumpTo: '跳至',\n firstPage: '第一頁',\n lastPage: '最後一頁',\n defaultUnit: '個'\n },\n form: {\n required: '該選項不能为空',\n maxlength: '該選項輸入值長度不能大於{maxlength}',\n minlength: '該選項輸入值長度不能小於{minlength}',\n uniqueCheck: '輸入值已經存在,請重新輸入',\n email: '輸入郵件的格式不正確',\n confirm: '兩次輸入不一致',\n pattern: '該選項輸入格式不正確',\n number: '必須輸入數字',\n url: '輸入URL格式不正確',\n max: '該選項輸入值不能大於{max}',\n min: '該選項輸入值不能小於{min}'\n },\n empty: {\n noDataText: '暫無資料'\n },\n image: {\n zoomOut: '縮小',\n zoomIn: '放大',\n originalSize: '原始比例',\n fitToScreen: '適應屏幕',\n fullScreen: '全屏顯示',\n spin: '旋轉',\n download: '下載',\n viewOriginal: '查看原圖',\n copyLink: '複製連結'\n }\n};\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.enUs,\n layout: {\n expand: 'Expand',\n collapse: 'Collapse'\n },\n datePicker: {\n yearFormat: 'yyyy', // eg. 2025\n monthFormat: 'MMM', // eg. Sep\n zhMonthFormat: 'MMM', // eg. Sep\n weekFormat: 'EEE', // eg. Tue\n fullWeekFormat: 'EEE', // eg. Tue\n weekThFormat: 'yyyy-ww', // eg. 2025-01st、2025-02nd、2025-03rd、2025-27th\n dateFormat: 'yyyy-MM-dd', // eg. 2025-09-02\n\n yearText: 'Year',\n quarterText: 'Quarter',\n monthText: 'Month',\n week: 'Week',\n prefixWeek: '',\n\n previousYear: 'Previous year',\n nextYear: 'Next year',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n\n today: 'Today',\n tomorrow: 'Tomorrow',\n nextWeek: 'Next week',\n lastSevenDays: '7 days',\n lastThirtyDays: '30 days',\n currentMonth: 'This month',\n currentWeek: 'This week',\n\n advance: 'Advance',\n custom: 'Custom',\n\n startDate: 'Start date',\n endDate: 'End date',\n\n setTime: 'Set time',\n placeholder: 'Select date',\n\n ok: 'Ok',\n clear: 'Clear'\n },\n dateRange: {\n custom: 'Custom',\n currentWeek: 'This week',\n currentMonth: 'This month'\n },\n timePicker: {\n placeholder: 'Select time',\n now: 'Now',\n ok: 'Ok'\n },\n calendar: {\n today: 'Today',\n yearMonthFormat: 'yyyy-MM' // eg. 2025-09\n },\n autocomplete: {\n empty: 'No data available'\n },\n transfer: {\n maxLimit: '(Max limit: {max})',\n maxLockLimit: 'Lock (Max limit: {maxLock})',\n unlocked: 'Unlocked'\n },\n colorPicker: {\n defaultColor: 'Default color',\n noFillColor: 'No fill color',\n recentUsedColor: 'Recently used custom color',\n customColor: 'Custom color',\n none: 'None'\n },\n strength: {\n highest: 'Highest',\n high: 'High',\n medium: 'Medium',\n low: 'Low'\n },\n guider: {\n skip: 'Skip',\n prev: 'Previous',\n next: 'Next',\n finish: 'Finish'\n },\n copy: {\n tips: 'Click to copy',\n success: 'Copy succeeded',\n error: 'Copy failed'\n },\n nav: {\n more: 'More'\n },\n dialog: {\n title: 'Confirm',\n ok: 'Ok',\n cancel: 'Cancel'\n },\n select: {\n placeholder: 'Select',\n empty: 'No data available'\n },\n treeSelect: {\n placeholder: 'Select',\n empty: 'No data available'\n },\n cascader: {\n placeholder: 'Select',\n empty: 'No data available'\n },\n pagination: {\n page: 'page',\n order: 'No.',\n total: 'Total: ',\n totalCount: 'Total: {total}',\n jumpTo: 'Go to',\n firstPage: 'First page',\n lastPage: 'Last page',\n defaultUnit: ''\n },\n form: {\n required: 'This option is required',\n maxlength: 'Input cannot exceed {maxlength} characters',\n minlength: 'Input must be at least {minlength} characters',\n uniqueCheck: 'Value already exists, please try again',\n email: 'Invalid email format',\n confirm: 'Inputs do not match',\n pattern: 'Invalid input format',\n number: 'A number is required',\n url: 'Invalid URL format',\n max: 'Input cannot be greater than {max}',\n min: 'Input cannot be less than {min}'\n },\n empty: {\n noDataText: 'No data available'\n },\n image: {\n zoomOut: 'Zoom out',\n zoomIn: 'Zoom in',\n originalSize: 'Original size',\n fitToScreen: 'Fit to screen',\n fullScreen: 'Full screen',\n spin: 'Spin',\n download: 'Download',\n viewOriginal: 'View original',\n copyLink: 'Copy link'\n }\n};\n\n/**\n * Format options:\n * | Field type | Format | Description | Example Value |\n * |--------------------|-------------|--------------------------------------------|---------------------------------|\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | ISO Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n *\n */\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.jaJp,\n layout: {\n expand: '展開',\n collapse: '折りたたみ'\n },\n datePicker: {\n yearFormat: 'yyyy年',\n monthFormat: 'MMM',\n zhMonthFormat: 'MMMM',\n weekFormat: 'EEEEE',\n fullWeekFormat: 'EE',\n weekThFormat: 'yyyy-ww週',\n dateFormat: 'yyyy年MM月dd日',\n\n yearText: '年',\n quarterText: '四半期',\n monthText: '月',\n week: '週',\n prefixWeek: '週',\n\n previousYear: '昨年',\n nextYear: '来年',\n previousMonth: '先月',\n nextMonth: '来月',\n\n today: '今日',\n tomorrow: '明日',\n nextWeek: '来週',\n lastSevenDays: '過去7日間',\n lastThirtyDays: '過去30日間',\n currentMonth: '今月',\n currentWeek: '今週',\n\n advance: '高度なオプション',\n custom: 'カスタム',\n\n startDate: '開始日',\n endDate: '終了日',\n\n setTime: '時間を設定',\n placeholder: '日付を選択',\n\n ok: '確認',\n clear: 'クリア'\n },\n dateRange: {\n custom: 'カスタム',\n currentWeek: '今週',\n currentMonth: '今月'\n },\n timePicker: {\n placeholder: '時間を選択',\n now: '現在',\n ok: 'もちろん'\n },\n calendar: {\n today: '今日',\n yearMonthFormat: 'yyyy年MM月'\n },\n autocomplete: {\n empty: 'データはありません'\n },\n transfer: {\n maxLimit: '(上限{max}個)',\n maxLockLimit: 'ロック (上限{maxLock}個)',\n unlocked: 'ロック解除'\n },\n colorPicker: {\n defaultColor: 'デフォルトカラー',\n noFillColor: '塗りつぶしなし',\n recentUsedColor: '最近使用したカスタムカラー',\n customColor: 'カスタムカラー',\n none: 'なし'\n },\n strength: {\n highest: '最高',\n high: '高',\n medium: '中',\n low: '低'\n },\n guider: {\n skip: 'スキップ',\n prev: '前へ',\n next: '次へ',\n finish: '完了'\n },\n copy: {\n tips: 'クリックしてコピー',\n success: 'コピー成功',\n error: 'コピー失敗'\n },\n nav: {\n more: 'もっと見る'\n },\n dialog: {\n title: '削除の確認',\n ok: '確認',\n cancel: 'キャンセル'\n },\n select: {\n placeholder: 'ノードを選択してください',\n empty: '選択可能なデータはありません'\n },\n treeSelect: {\n placeholder: 'ノードを選択してください',\n empty: '選択可能なデータはありません'\n },\n cascader: {\n placeholder: '選択してください',\n empty: '選択肢はありません'\n },\n pagination: {\n page: 'ページ',\n order: '第',\n total: '合計',\n totalCount: '合計 {total}',\n jumpTo: 'ジャンプ',\n firstPage: '最初のページ',\n lastPage: '最後のページ',\n defaultUnit: '条'\n },\n form: {\n required: 'この選択肢は空にできません',\n maxlength: 'この選択肢の入力値の長さは{maxlength}を超えてはいけません',\n minlength: 'この選択肢の入力値の長さは{minlength}未満ではいけません',\n uniqueCheck: '入力値はすでに存在します。再入力してください',\n email: 'メールアドレスの形式が正しくありません',\n confirm: '二回の入力が一致しません',\n pattern: 'この選択肢の入力形式が正しくありません',\n number: '数字を入力する必要があります',\n url: 'URL形式が正しくありません',\n max: 'この選択肢の入力値は{max}を超えてはいけません',\n min: 'この選択肢の入力値は{min}未満ではいけません'\n },\n empty: {\n noDataText: 'データはありません'\n },\n image: {\n zoomOut: '縮小',\n zoomIn: '拡大',\n originalSize: '元のサイズ',\n fitToScreen: '画面に合わせる',\n fullScreen: '全画面表示',\n spin: '回転',\n download: 'ダウンロード',\n viewOriginal: '元の画像を表示',\n copyLink: 'リンクをコピー'\n }\n};\n","import { ThyLocaleType } from '../i18n';\n\nexport default {\n id: ThyLocaleType.deDe,\n layout: {\n expand: 'Aufklappen',\n collapse: 'Zuklappen'\n },\n datePicker: {\n yearFormat: 'yyyy',\n monthFormat: 'MMM',\n zhMonthFormat: 'MMM', // MMM:月份缩写。 MMMM:月份全称。\n weekFormat: 'EE',\n fullWeekFormat: 'EE',\n weekThFormat: 'yyyy-ww',\n dateFormat: 'yyyy-MM-dd',\n\n yearText: 'Jahr',\n quarterText: 'Quartal',\n monthText: 'Monat',\n week: 'Woche',\n prefixWeek: 'Woche',\n\n previousYear: 'Vorjahr',\n nextYear: 'Nächstes Jahr',\n previousMonth: 'Letzter Monat',\n nextMonth: 'Nächster Monat',\n\n today: 'Heute',\n tomorrow: 'Morgen',\n nextWeek: 'Nächste Woche',\n lastSevenDays: 'Letzte 7 Tage',\n lastThirtyDays: 'Letzte 30 Tage',\n currentMonth: 'Diesen Monat',\n currentWeek: 'Diese Woche',\n\n advance: 'Erweiterte Optionen',\n custom: 'Benutzerdefiniert',\n\n startDate: 'Startdatum',\n endDate: 'Enddatum',\n\n setTime: 'Zeit einstellen',\n placeholder: 'Datum auswählen',\n\n ok: 'Bestätigen',\n clear: 'Löschen'\n },\n dateRange: {\n custom: 'Benutzerdefiniert',\n currentWeek: 'Diese Woche',\n currentMonth: 'Diesen Monat'\n },\n timePicker: {\n placeholder: 'Zeit auswählen',\n now: 'Jetzt',\n ok: 'Bestätigen'\n },\n calendar: {\n today: 'Heute',\n yearMonthFormat: 'yyyy-MM'\n },\n autocomplete: {\n empty: 'Keine Daten vorhanden'\n },\n transfer: {\n maxLimit: '(Maximal {max} Stück)',\n maxLockLimit: 'Gesperrt (Maximal {maxLock} Stück)',\n unlocked: 'Entsperrt'\n },\n colorPicker: {\n defaultColor: 'Standardfarbe',\n noFillColor: 'Keine Füllfarbe',\n recentUsedColor: 'Kürzlich verwendet',\n customColor: 'Benutzerdefinierte Farbe',\n none: 'Keine'\n },\n strength: {\n highest: 'Höchste',\n high: 'Hoch',\n medium: 'Mittel',\n low: 'Niedrig'\n },\n guider: {\n skip: 'Überspringen',\n prev: 'Zurück',\n next: 'Weiter',\n finish: 'Abschließen'\n },\n copy: {\n tips: 'Klicken Sie, um zu kopieren',\n success: 'Kopieren erfolgreich',\n error: 'Kopieren fehlgeschlagen'\n },\n nav: {\n more: 'Mehr'\n },\n dialog: {\n title: 'Löschbestätigung',\n ok: 'Bestätigen',\n cancel: 'Abbrechen'\n },\n select: {\n placeholder: 'Bitte Knoten auswählen',\n empty: 'Derzeit keine Daten verfügbar'\n },\n treeSelect: {\n placeholder: 'Bitte Knoten auswählen',\n empty: 'Derzeit keine Daten verfügbar'\n },\n cascader: {\n placeholder: 'Bitte auswählen',\n empty: 'Keine Optionen verfügbar'\n },\n pagination: {\n page: 'Seite',\n order: 'Die',\n total: 'Insgesamt',\n totalCount: 'Gesamt {total}',\n jumpTo: 'Springen zu',\n firstPage: 'Erste Seite',\n lastPage: 'Letzte Seite',\n defaultUnit: 'Einträge'\n },\n form: {\n required: 'Dieses Feld darf nicht leer sein',\n maxlength: 'Die Eingabelänge darf {maxlength} nicht überschreiten',\n minlength: 'Die Eingabelänge darf {minlength} nicht unterschreiten',\n uniqueCheck: 'Der eingegebene Wert existiert bereits, bitte erneut eingeben',\n email: 'Das Format der E-Mail-Adresse ist ungültig',\n confirm: 'Die Eingaben stimmen nicht überein',\n pattern: 'Das Eingabeformat ist ungültig',\n number: 'Es muss eine Zahl eingegeben werden',\n url: 'Das Format der URL ist ungültig',\n max: 'Der eingegebene Wert darf {max} nicht überschreiten',\n min: 'Der eingegebene Wert darf {min} nicht unterschreiten'\n },\n empty: {\n noDataText: 'Keine Daten vorhanden'\n },\n image: {\n zoomOut: 'Verkleinern',\n zoomIn: 'Vergrößern',\n originalSize: 'Originalgröße',\n fitToScreen: 'An den Bildschirm anpassen',\n fullScreen: 'Vollbild anzeigen',\n spin: 'Drehen',\n download: 'Herunterladen',\n viewOriginal: 'Original anzeigen',\n copyLink: 'Link kopieren'\n }\n};\n","import { inject, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { THY_I18N_LOCALE_ID, THY_I18N_ZH_HANS, THY_I18N_ZH_HANT, THY_I18N_EN_US, THY_I18N_JA_JP, THY_I18N_DE_DE } from './i18n.token';\nimport { ThyLocaleType, ThyI18nLocale } from './i18n';\nimport { normalizeLocale, getDefaultLocaleId } from './util';\nimport { zhHansLocale, zhHantLocale, enUsLocale, jaJpLocale, deDeLocale } from './locales';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyI18nService {\n private locales: { [key in ThyLocaleType]: ThyI18nLocale } = {\n [ThyLocaleType.zhHans]: inject(THY_I18N_ZH_HANS, { optional: true }) || zhHansLocale,\n [ThyLocaleType.zhHant]: inject(THY_I18N_ZH_HANT, { optional: true }) || zhHantLocale,\n [ThyLocaleType.enUs]: inject(THY_I18N_EN_US, { optional: true }) || enUsLocale,\n [ThyLocaleType.jaJp]: inject(THY_I18N_JA_JP, { optional: true }) || jaJpLocale,\n [ThyLocaleType.deDe]: inject(THY_I18N_DE_DE, { optional: true }) || deDeLocale\n };\n\n private defaultLocaleId: ThyLocaleType = normalizeLocale(inject(THY_I18N_LOCALE_ID, { optional: true })) || getDefaultLocaleId();\n\n private locale: WritableSignal<ThyI18nLocale> = signal(this.locales[this.defaultLocaleId]);\n\n /**\n * 设置语言\n * @param id\n */\n setLocale(id: string) {\n let localeId: ThyLocaleType = normalizeLocale(id);\n\n if (localeId.includes('zh') && localeId !== ThyLocaleType.zhHans && localeId !== ThyLocaleType.zhHant) {\n localeId = ThyLocaleType.zhHans;\n }\n\n this.locale.set(this.locales[localeId] || this.locales[this.defaultLocaleId] || ({} as ThyI18nLocale));\n }\n\n /**\n * 获取当前语言\n */\n getLocale(): Signal<ThyI18nLocale> {\n return this.locale;\n }\n}\n","import { computed, inject, Signal } from '@angular/core';\nimport { ThyModuleLocaleType, ThyModuleType, ThyI18nLocale } from './i18n';\nimport { ThyI18nService } from './i18n.service';\n\nexport function injectLocale(): Signal<ThyI18nLocale>;\n\nexport function injectLocale<K extends ThyModuleType>(key: K): Signal<ThyModuleLocaleType<K>>;\n\nexport function injectLocale<K extends ThyModuleType>(key?: K): Signal<ThyI18nLocale | ThyModuleLocaleType<K>> {\n const i18n = inject(ThyI18nService);\n const allLocale = i18n.getLocale();\n\n return computed(() => {\n if (key) {\n return allLocale()[key] ?? allLocale();\n }\n return allLocale();\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ import { ThyTooltipDirective, ThyTooltipModule } from 'ngx-tethys/tooltip';
16
16
  import { humanizeBytes, isNumber, getClientSize, helpers, getOffset, getFitContentPosition, isUndefinedOrNull, coerceBooleanProperty } from 'ngx-tethys/util';
17
17
  import { fromEvent, Observable, Subject } from 'rxjs';
18
18
  import { take, map, takeUntil } from 'rxjs/operators';
19
+ import { injectLocale } from 'ngx-tethys/i18n';
19
20
  import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
20
21
  import { CommonModule } from '@angular/common';
21
22
  import { PortalModule } from '@angular/cdk/portal';
@@ -114,6 +115,7 @@ class ThyImagePreview {
114
115
  this.notifyService = inject(ThyNotifyService);
115
116
  this.host = inject(ElementRef);
116
117
  this.sanitizer = inject(DomSanitizer);
118
+ this.locale = injectLocale('image');
117
119
  this.downloadClicked = new EventEmitter();
118
120
  this.destroyRef = inject(DestroyRef);
119
121
  this.images = [];
@@ -131,7 +133,7 @@ class ThyImagePreview {
131
133
  this.defaultPreviewOperations = [
132
134
  {
133
135
  icon: 'zoom-out',
134
- name: '缩小',
136
+ name: this.locale().zoomOut,
135
137
  action: (image) => {
136
138
  this.zoomOut();
137
139
  },
@@ -139,7 +141,7 @@ class ThyImagePreview {
139
141
  },
140
142
  {
141
143
  icon: 'zoom-in',
142
- name: '放大',
144
+ name: this.locale().zoomIn,
143
145
  action: (image) => {
144
146
  this.zoomIn();
145
147
  },
@@ -147,7 +149,7 @@ class ThyImagePreview {
147
149
  },
148
150
  {
149
151
  icon: 'one-to-one',
150
- name: '原始比例',
152
+ name: this.locale().originalSize,
151
153
  action: (image) => {
152
154
  this.setOriginalSize();
153
155
  },
@@ -155,7 +157,7 @@ class ThyImagePreview {
155
157
  },
156
158
  {
157
159
  icon: 'max-view',
158
- name: '适应屏幕',
160
+ name: this.locale().fitToScreen,
159
161
  action: () => {
160
162
  this.setFitScreen();
161
163
  },
@@ -163,7 +165,7 @@ class ThyImagePreview {
163
165
  },
164
166
  {
165
167
  icon: 'expand-arrows',
166
- name: '全屏显示',
168
+ name: this.locale().fullScreen,
167
169
  action: () => {
168
170
  this.fullScreen();
169
171
  },
@@ -171,7 +173,7 @@ class ThyImagePreview {
171
173
  },
172
174
  {
173
175
  icon: 'rotate-right',
174
- name: '旋转',
176
+ name: this.locale().spin,
175
177
  action: (image) => {
176
178
  this.rotateRight();
177
179
  },
@@ -179,7 +181,7 @@ class ThyImagePreview {
179
181
  },
180
182
  {
181
183
  icon: 'download',
182
- name: '下载',
184
+ name: this.locale().download,
183
185
  action: (image) => {
184
186
  this.download(image);
185
187
  },
@@ -187,7 +189,7 @@ class ThyImagePreview {
187
189
  },
188
190
  {
189
191
  icon: 'preview',
190
- name: '查看原图',
192
+ name: this.locale().viewOriginal,
191
193
  action: () => {
192
194
  this.viewOriginal();
193
195
  },
@@ -195,7 +197,7 @@ class ThyImagePreview {
195
197
  },
196
198
  {
197
199
  icon: 'link-insert',
198
- name: '复制链接',
200
+ name: this.locale().copyLink,
199
201
  type: 'copyLink'
200
202
  }
201
203
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-image.mjs","sources":["../../../src/image/image.token.ts","../../../src/image/image-group.component.ts","../../../src/image/image.config.ts","../../../src/image/utils.ts","../../../src/image/preview/image-preview.component.ts","../../../src/image/preview/image-preview.component.html","../../../src/image/preview/image-preview-ref.ts","../../../src/image/image.service.ts","../../../src/image/image.directive.ts","../../../src/image/module.ts","../../../src/image/ngx-tethys-image.ts"],"sourcesContent":["import { ElementRef, InjectionToken, Injector } from '@angular/core';\nimport { ThyImageMeta } from './image.class';\n\nexport interface IThyImageDirective {\n previewable: boolean;\n thySrc: string;\n thyPreviewSrc: string;\n thyOriginSrc: string;\n thyImageMeta: ThyImageMeta;\n}\n\nexport interface IThyImageGroupComponent {\n injector: Injector;\n element: ElementRef;\n images: IThyImageDirective[];\n addImage: (image: IThyImageDirective, index: number) => void;\n removeImage: (index: number) => void;\n}\n\nexport const THY_IMAGE_GROUP_COMPONENT = new InjectionToken<IThyImageGroupComponent>('THY_IMAGE_GROUP_COMPONENT');\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, Injector, ElementRef, inject } from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\n\n/**\n * 图片分组,提供 thyImageGroup 指令和 thy-image-group 标签两种使用方式\n * @name thy-image-group,[thyImageGroup]\n */\n@Component({\n selector: 'thy-image-group, [thyImageGroup]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: THY_IMAGE_GROUP_COMPONENT,\n useClass: ThyImageGroup\n }\n ]\n})\nexport class ThyImageGroup implements IThyImageGroupComponent {\n injector = inject(Injector);\n\n element = inject(ElementRef);\n\n images: IThyImageDirective[] = [];\n\n addImage(image: IThyImageDirective, index: number): void {\n this.images.splice(index, 0, image);\n }\n\n removeImage(index: number) {\n this.images.splice(index, 1);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThyAbstractOverlayConfig, ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport class ThyImagePreviewConfig<TData = unknown> extends ThyAbstractOverlayConfig<TData> {\n closeOnNavigation?: boolean;\n disableClose?: boolean;\n disableKeyboardSelectable?: boolean;\n zoom?: number;\n rotate?: number;\n}\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS = new InjectionToken<ThyImagePreviewConfig>('thy-image-default-options');\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER = {\n provide: THY_IMAGE_DEFAULT_PREVIEW_OPTIONS,\n useValue: {\n hasBackdrop: true,\n closeOnNavigation: true,\n disableClose: false,\n disableKeyboardSelectable: false,\n restoreFocus: false\n }\n};\n\nexport const imageAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'image',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { fromEvent } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nexport const fetchImageBlob = (url: string) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n const loadedXhr$ = fromEvent(xhr, 'load').pipe(\n take(1),\n map(data => {\n return xhr.response;\n })\n );\n xhr.send();\n return loadedXhr$;\n};\n","import { CdkDrag } from '@angular/cdk/drag-drop';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n NgZone,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ThyAction, ThyActions } from 'ngx-tethys/action';\nimport { ThyCopyDirective, ThyCopyEvent } from 'ngx-tethys/copy';\nimport { ThyDialog } from 'ngx-tethys/dialog';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { ThyFullscreen } from 'ngx-tethys/fullscreen';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { getClientSize, getFitContentPosition, getOffset, helpers, humanizeBytes, isNumber, isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Observable, fromEvent } from 'rxjs';\nimport { InternalImageInfo, ThyImageInfo, ThyImagePreviewMode, ThyImagePreviewOperation, ThyImagePreviewOptions } from '../image.class';\nimport { fetchImageBlob } from '../utils';\n\nconst initialPosition = {\n x: 0,\n y: 0\n};\nconst IMAGE_MAX_ZOOM = 3;\nconst IMAGE_MIN_ZOOM = 0.1;\nconst HORIZONTAL_SPACE = 100 * 2; // left: 100px; right: 100px\nconst VERTICAL_SPACE = 96 + 106; // top: 96px; bottom: 106px\n\n/**\n * 图片预览组件\n * @name thy-image-preview\n * @order 20\n */\n@Component({\n selector: 'thy-image-preview',\n exportAs: 'thyImagePreview',\n templateUrl: './image-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-image-preview-wrap',\n '[class.thy-image-preview-moving]': 'isDragging'\n },\n imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective]\n})\nexport class ThyImagePreview implements OnInit {\n thyDialog = inject(ThyDialog);\n thyFullscreen = inject(ThyFullscreen);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private notifyService = inject(ThyNotifyService);\n private host = inject<ElementRef<HTMLElement>>(ElementRef);\n private sanitizer = inject(DomSanitizer);\n\n @Output() downloadClicked: EventEmitter<ThyImageInfo> = new EventEmitter();\n\n private readonly destroyRef = inject(DestroyRef);\n\n images: InternalImageInfo[] = [];\n previewIndex: number = 0;\n previewConfig: ThyImagePreviewOptions;\n previewImageTransform = '';\n previewImageWrapperTransform = '';\n zoomDisabled = false;\n zoom: number = 1;\n position = { ...initialPosition };\n isDragging = false;\n isLoadingDone = false;\n isFullScreen = false;\n isInsideScreen = true;\n currentImageMode: ThyImagePreviewMode = 'original-scale';\n previewOperations: ThyImagePreviewOperation[];\n defaultPreviewOperations: ThyImagePreviewOperation[] = [\n {\n icon: 'zoom-out',\n name: '缩小',\n action: (image: ThyImageInfo) => {\n this.zoomOut();\n },\n type: 'zoom-out'\n },\n {\n icon: 'zoom-in',\n name: '放大',\n action: (image: ThyImageInfo) => {\n this.zoomIn();\n },\n type: 'zoom-in'\n },\n {\n icon: 'one-to-one',\n name: '原始比例',\n action: (image: ThyImageInfo) => {\n this.setOriginalSize();\n },\n type: 'original-scale'\n },\n {\n icon: 'max-view',\n name: '适应屏幕',\n action: () => {\n this.setFitScreen();\n },\n type: 'fit-screen'\n },\n {\n icon: 'expand-arrows',\n name: '全屏显示',\n action: () => {\n this.fullScreen();\n },\n type: 'full-screen'\n },\n {\n icon: 'rotate-right',\n name: '旋转',\n action: (image: ThyImageInfo) => {\n this.rotateRight();\n },\n type: 'rotate-right'\n },\n {\n icon: 'download',\n name: '下载',\n action: (image: ThyImageInfo) => {\n this.download(image);\n },\n type: 'download'\n },\n {\n icon: 'preview',\n name: '查看原图',\n action: () => {\n this.viewOriginal();\n },\n type: 'view-original'\n },\n {\n icon: 'link-insert',\n name: '复制链接',\n type: 'copyLink'\n }\n ];\n\n private rotate: number;\n\n get previewImage(): InternalImageInfo {\n const image = this.images[this.previewIndex];\n if (image.size) {\n image.size = isNumber(image.size) ? humanizeBytes(image.size) : image.size;\n }\n return image;\n }\n\n get previewImageOriginSrc() {\n let imageSrc = this.previewImage.origin?.src || this.previewImage.src;\n if (imageSrc.startsWith('./')) {\n return window.location.host + '/' + imageSrc.split('./')[1];\n }\n return imageSrc;\n }\n\n get defaultZoom(): number {\n if (this.previewConfig?.zoom && this.previewConfig?.zoom > 0) {\n return this.previewConfig.zoom >= IMAGE_MAX_ZOOM\n ? IMAGE_MAX_ZOOM\n : this.previewConfig.zoom <= IMAGE_MIN_ZOOM\n ? IMAGE_MIN_ZOOM\n : this.previewConfig.zoom;\n }\n }\n\n @ViewChild('imgRef', { static: false }) imageRef!: ElementRef<HTMLImageElement>;\n @ViewChild('imagePreviewWrapper', { static: true }) imagePreviewWrapper!: ElementRef<HTMLElement>;\n\n ngOnInit(): void {\n this.initPreview();\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.host.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (\n (event.target === event.currentTarget ||\n (this.isInsideScreen && this.imagePreviewWrapper.nativeElement.contains(event.target as HTMLElement))) &&\n !this.previewConfig?.disableClose\n ) {\n this.ngZone.run(() => !this.isFullScreen && this.thyDialog.close());\n }\n });\n\n fromEvent(this.imagePreviewWrapper.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.isDragging = !this.isInsideScreen && true;\n });\n });\n }\n\n setOriginalSize() {\n this.reset();\n this.currentImageMode = 'fit-screen';\n this.zoom = 1;\n this.updatePreviewImageTransform();\n this.calculateInsideScreen();\n this.isLoadingDone = true;\n this.cdr.detectChanges();\n }\n\n setFitScreen() {\n this.reset();\n this.isInsideScreen = true;\n this.updatePreviewImage();\n }\n\n useDefaultZoomUpdate(isUpdateImageWrapper: boolean) {\n this.zoom = this.defaultZoom;\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n }\n\n useCalculateZoomUpdate(isUpdateImageWrapper?: boolean) {\n let img = new Image();\n img.src = this.previewImage.src;\n img.onload = () => {\n const { width: offsetWidth, height: offsetHeight } = getClientSize();\n const innerWidth = offsetWidth - HORIZONTAL_SPACE;\n const innerHeight = offsetHeight - VERTICAL_SPACE;\n const { naturalWidth, naturalHeight } = img;\n const xRatio = innerWidth / naturalWidth;\n const yRatio = innerHeight / naturalHeight;\n const zoom = Math.min(xRatio, yRatio);\n if (zoom > 1) {\n this.zoom = 1;\n } else {\n this.zoom = zoom;\n }\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n };\n }\n\n updatePreviewImage() {\n this.resolvePreviewImage().subscribe(result => {\n if (!result) {\n // error\n this.isLoadingDone = true;\n return;\n }\n // image size\n if (!this.previewImage.size && this.previewImage.blob) {\n this.previewImage.size = humanizeBytes(this.previewImage.blob.size);\n }\n if (this.defaultZoom) {\n this.useDefaultZoomUpdate(true);\n } else {\n this.useCalculateZoomUpdate();\n }\n });\n }\n\n resolvePreviewImage() {\n return new Observable<Boolean>(subscriber => {\n if (this.previewImage.src.startsWith('blob:')) {\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(this.previewImage.src);\n subscriber.next(true);\n subscriber.complete();\n return;\n }\n if (this.previewImage.objectURL || !this.previewConfig.resolveSize) {\n subscriber.next(true);\n subscriber.complete();\n } else {\n fetchImageBlob(this.previewImage.src).subscribe(\n blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(objectURL);\n this.previewImage.blob = blob;\n subscriber.next(true);\n subscriber.complete();\n },\n error => {\n subscriber.next(false);\n subscriber.complete();\n }\n );\n }\n });\n }\n\n initPreview() {\n if (Array.isArray(this.previewConfig?.operations) && this.previewConfig?.operations.length) {\n const defaultOperationsMap = helpers.keyBy(this.defaultPreviewOperations, 'type');\n this.previewOperations = this.previewConfig?.operations.map(operation => {\n if (helpers.isString(operation) && defaultOperationsMap[operation]) {\n return defaultOperationsMap[operation];\n } else {\n return operation as ThyImagePreviewOperation;\n }\n });\n } else {\n this.previewOperations = this.defaultPreviewOperations;\n }\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.updatePreviewImage();\n }\n\n download(image: ThyImageInfo) {\n this.downloadClicked.emit(image);\n const src = image.origin?.src || image.src;\n fetchImageBlob(src)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n let a = document.createElement('a');\n a.download = image.name || 'default.png';\n a.href = objectURL;\n a.click();\n });\n }\n\n zoomIn(): void {\n if (this.zoom < IMAGE_MAX_ZOOM) {\n this.zoom = Math.min(this.zoom + 0.1, IMAGE_MAX_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n zoomOut(): void {\n if (this.zoom > IMAGE_MIN_ZOOM) {\n this.zoom = Math.max(this.zoom - 0.1, IMAGE_MIN_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n calculateInsideScreen() {\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { width: clientWidth, height: clientHeight } = getClientSize();\n if (width >= clientWidth || height >= clientHeight) {\n this.isInsideScreen = false;\n } else {\n this.isInsideScreen = true;\n }\n }\n\n viewOriginal() {\n window.open(this.previewImage?.origin?.src || this.previewImage.src, '_blank');\n }\n\n rotateRight(): void {\n this.rotate += 90;\n this.updatePreviewImageTransform();\n }\n\n fullScreen(): void {\n const targetElement = this.host.nativeElement.querySelector('.thy-image-preview');\n this.isFullScreen = true;\n const fullscreenRef = this.thyFullscreen.launch({\n target: targetElement\n });\n fullscreenRef.afterExited().subscribe(() => {\n this.isFullScreen = false;\n this.cdr.markForCheck();\n });\n }\n\n copyLink(event: ThyCopyEvent) {\n if (event.isSuccess) {\n this.notifyService.success('复制图片地址成功');\n } else {\n this.notifyService.error('复制图片地址失败');\n }\n }\n\n prev() {\n if (this.previewIndex > 0) {\n this.previewIndex--;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n next() {\n if (this.previewIndex < this.images.length - 1) {\n this.previewIndex++;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n dragReleased() {\n this.isDragging = false;\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { left, top } = getOffset(this.imageRef.nativeElement, window);\n const { width: clientWidth, height: clientHeight } = getClientSize();\n const isRotate = this.rotate % 180 !== 0;\n const fitContentParams = {\n width: isRotate ? height : width,\n height: isRotate ? width : height,\n left,\n top,\n clientWidth,\n clientHeight\n };\n const fitContentPos = getFitContentPosition(fitContentParams);\n if (!isUndefinedOrNull(fitContentPos.x) || !isUndefinedOrNull(fitContentPos.y)) {\n this.position = { ...this.position, ...fitContentPos };\n }\n }\n\n private reset(): void {\n this.currentImageMode = 'original-scale';\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.position = { ...initialPosition };\n this.cdr.detectChanges();\n }\n\n private updatePreviewImageTransform(): void {\n this.previewImageTransform = `scale3d(${this.zoom}, ${this.zoom}, 1) rotate(${this.rotate}deg)`;\n }\n\n private updatePreviewImageWrapperTransform(): void {\n this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;\n }\n}\n","<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"退出预览\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"退出预览\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"退出全屏\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"上一张\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"下一张\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n","import { ThyImagePreview } from './image-preview.component';\nimport { ThyDialogRef } from 'ngx-tethys/dialog';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { ThyImageInfo, ThyImagePreviewOptions } from '../image.class';\nimport { Observable } from 'rxjs';\n\nexport class ThyImagePreviewRef {\n get componentInstance() {\n return this.dialogRef.componentInstance;\n }\n\n constructor(\n public previewInstance: ThyImagePreview,\n private config: ThyImagePreviewOptions,\n private dialogRef: ThyDialogRef<ThyImagePreview>\n ) {\n dialogRef\n .keydownEvents()\n .pipe()\n .subscribe(event => {\n if (!config.disableKeyboardSelectable && event.keyCode === LEFT_ARROW) {\n this.prev();\n }\n if (!config.disableKeyboardSelectable && event.keyCode === RIGHT_ARROW) {\n this.next();\n }\n });\n }\n\n next(): void {\n this.previewInstance.next();\n }\n\n prev(): void {\n this.previewInstance.prev();\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.previewInstance.downloadClicked.asObservable();\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { ThyImagePreviewConfig, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS } from './image.config';\nimport { ThyImageInfo, ThyImagePreviewOptions } from './image.class';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyDialog, ThyDialogSizes } from 'ngx-tethys/dialog';\nimport { ThyImagePreviewRef } from './preview/image-preview-ref';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * 图片预览服务\n */\n@Injectable()\nexport class ThyImageService implements OnDestroy {\n thyDialog = inject(ThyDialog);\n\n /**\n * 图片预览默认配置,外部可通过注入 THY_IMAGE_DEFAULT_PREVIEW_OPTIONS 进行配置\n */\n defaultConfig: ThyImagePreviewConfig;\n\n private downloadClicked$ = new Subject<ThyImageInfo>();\n\n private ngUnsubscribe$ = new Subject<void>();\n\n constructor() {\n const defaultConfig = inject(THY_IMAGE_DEFAULT_PREVIEW_OPTIONS, { optional: true })!;\n\n this.defaultConfig = defaultConfig;\n }\n\n /**\n * 图片预览方法\n */\n preview(images: ThyImageInfo[], options?: ThyImagePreviewOptions & { startIndex?: number }): ThyImagePreviewRef {\n const config = { ...this.defaultConfig, ...options };\n const dialogRef = this.thyDialog.open(ThyImagePreview, {\n initialState: {\n images,\n previewIndex: options?.startIndex >= 0 && options?.startIndex < images.length ? options.startIndex : 0,\n previewConfig: config\n },\n backdropClass: 'thy-image-preview-backdrop',\n panelClass: 'thy-image-preview-container',\n size: ThyDialogSizes.full,\n ...config\n });\n const imagePreviewRef = new ThyImagePreviewRef(dialogRef.componentInstance, { ...this.defaultConfig, ...options }, dialogRef);\n imagePreviewRef\n .downloadClicked()\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(image => {\n this.downloadClicked$.next(image);\n });\n return imagePreviewRef;\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.downloadClicked$.asObservable();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","import {\n Directive,\n ElementRef,\n InjectFlags,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n Injector,\n OnDestroy,\n AfterViewInit,\n inject\n} from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\nimport { ThyImageMeta } from './image.class';\nimport { ThyImageService } from './image.service';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * thyImage: 预览图片指令,只可绑定到 img 标签上\n * @name img[thyImage]\n * @order 10\n */\n@Directive({\n selector: 'img[thyImage]',\n exportAs: 'thyImage',\n host: {\n '(click)': 'onPreview($event)',\n class: 'thy-image',\n '[class.thy-image-disabled]': 'thyDisablePreview'\n }\n})\nexport class ThyImageDirective implements IThyImageDirective, OnInit, OnChanges, AfterViewInit, OnDestroy {\n private thyImageService = inject(ThyImageService);\n private injector = inject(Injector);\n private elementRef = inject(ElementRef);\n\n /**\n * 图片地址\n */\n @Input() thySrc: string;\n\n /**\n * 预览图片地址\n */\n @Input() thyPreviewSrc: string;\n\n /**\n * 图片原图地址\n */\n @Input() thyOriginSrc: string;\n\n /**\n * 图片附加信息,包含 { name: string, size?: string | number; }\n */\n @Input() thyImageMeta: ThyImageMeta;\n\n /**\n * 是否禁止预览\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisablePreview: boolean;\n\n /**\n * 是否自动计算图片资源大小\n */\n @Input({ transform: coerceBooleanProperty }) thyResolveSize = false;\n\n get previewable(): boolean {\n return !this.thyDisablePreview;\n }\n\n private parentGroup: IThyImageGroupComponent;\n\n ngOnInit(): void {\n this.getParentGroup();\n }\n\n ngAfterViewInit(): void {\n if (this.parentGroup) {\n this.addParentImage();\n }\n }\n\n getParentGroup() {\n while (true) {\n // 多层 thy-image-group 嵌套时,获取最外层 thy-image-group 下的所有图片\n const injector = this.parentGroup?.injector || this.injector;\n const parentGroup = injector.get(THY_IMAGE_GROUP_COMPONENT, null, InjectFlags.SkipSelf);\n if (!parentGroup) {\n break;\n }\n this.parentGroup = parentGroup;\n }\n }\n\n addParentImage() {\n setTimeout(() => {\n const parentElement: HTMLElement = this.parentGroup.element.nativeElement;\n const images = parentElement.querySelectorAll('img[thyImage]');\n const index = Array.prototype.indexOf.call(images, this.elementRef.nativeElement);\n if (index >= 0) {\n this.parentGroup.addImage(this, index);\n } else {\n this.parentGroup.addImage(this, this.parentGroup.images.length);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thySrc } = changes;\n if (thySrc) {\n this.elementRef.nativeElement.src = thySrc.currentValue;\n }\n }\n\n onPreview(event: MouseEvent) {\n if (!this.previewable || event.button !== 0) {\n return;\n }\n if (this.parentGroup) {\n const previewAbleImages = this.parentGroup.images.filter(e => e.previewable);\n const previewImages = previewAbleImages.map(e => ({\n src: e.thyPreviewSrc || e.thySrc,\n ...e.thyImageMeta,\n origin: {\n src: e.thyOriginSrc\n }\n }));\n const startIndex = previewAbleImages.findIndex(el => this === el);\n this.thyImageService.preview(previewImages, {\n startIndex,\n resolveSize: this.thyResolveSize\n });\n } else {\n const previewImages = [\n {\n src: this.thyPreviewSrc || this.thySrc,\n ...this.thyImageMeta,\n origin: {\n src: this.thyOriginSrc\n }\n }\n ];\n this.thyImageService.preview(previewImages, { resolveSize: this.thyResolveSize });\n }\n }\n\n ngOnDestroy(): void {\n if (this.parentGroup) {\n const index = this.parentGroup.images.findIndex(item => item === this);\n this.parentGroup.removeImage(index);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyImageDirective } from './image.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyImageGroup } from './image-group.component';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyImageService } from './image.service';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER } from './image.config';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyDividerModule } from 'ngx-tethys/divider';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyCopyModule } from 'ngx-tethys/copy';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyDialogModule } from 'ngx-tethys/dialog';\nimport { ThyActionModule } from 'ngx-tethys/action';\n\n@NgModule({\n exports: [ThyImageDirective, ThyImageGroup, ThyImagePreview],\n imports: [\n CommonModule,\n PortalModule,\n DragDropModule,\n ThyIconModule,\n ThyDialogModule,\n ThyDividerModule,\n ThyTooltipModule,\n ThyCopyModule,\n ThyLoadingModule,\n ThyActionModule,\n ThyImageDirective,\n ThyImageGroup,\n ThyImagePreview\n ],\n providers: [ThyImageService, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER]\n})\nexport class ThyImageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-image.mjs","sources":["../../../src/image/image.token.ts","../../../src/image/image-group.component.ts","../../../src/image/image.config.ts","../../../src/image/utils.ts","../../../src/image/preview/image-preview.component.ts","../../../src/image/preview/image-preview.component.html","../../../src/image/preview/image-preview-ref.ts","../../../src/image/image.service.ts","../../../src/image/image.directive.ts","../../../src/image/module.ts","../../../src/image/ngx-tethys-image.ts"],"sourcesContent":["import { ElementRef, InjectionToken, Injector } from '@angular/core';\nimport { ThyImageMeta } from './image.class';\n\nexport interface IThyImageDirective {\n previewable: boolean;\n thySrc: string;\n thyPreviewSrc: string;\n thyOriginSrc: string;\n thyImageMeta: ThyImageMeta;\n}\n\nexport interface IThyImageGroupComponent {\n injector: Injector;\n element: ElementRef;\n images: IThyImageDirective[];\n addImage: (image: IThyImageDirective, index: number) => void;\n removeImage: (index: number) => void;\n}\n\nexport const THY_IMAGE_GROUP_COMPONENT = new InjectionToken<IThyImageGroupComponent>('THY_IMAGE_GROUP_COMPONENT');\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, Injector, ElementRef, inject } from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\n\n/**\n * 图片分组,提供 thyImageGroup 指令和 thy-image-group 标签两种使用方式\n * @name thy-image-group,[thyImageGroup]\n */\n@Component({\n selector: 'thy-image-group, [thyImageGroup]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: THY_IMAGE_GROUP_COMPONENT,\n useClass: ThyImageGroup\n }\n ]\n})\nexport class ThyImageGroup implements IThyImageGroupComponent {\n injector = inject(Injector);\n\n element = inject(ElementRef);\n\n images: IThyImageDirective[] = [];\n\n addImage(image: IThyImageDirective, index: number): void {\n this.images.splice(index, 0, image);\n }\n\n removeImage(index: number) {\n this.images.splice(index, 1);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThyAbstractOverlayConfig, ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport class ThyImagePreviewConfig<TData = unknown> extends ThyAbstractOverlayConfig<TData> {\n closeOnNavigation?: boolean;\n disableClose?: boolean;\n disableKeyboardSelectable?: boolean;\n zoom?: number;\n rotate?: number;\n}\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS = new InjectionToken<ThyImagePreviewConfig>('thy-image-default-options');\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER = {\n provide: THY_IMAGE_DEFAULT_PREVIEW_OPTIONS,\n useValue: {\n hasBackdrop: true,\n closeOnNavigation: true,\n disableClose: false,\n disableKeyboardSelectable: false,\n restoreFocus: false\n }\n};\n\nexport const imageAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'image',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { fromEvent } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nexport const fetchImageBlob = (url: string) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n const loadedXhr$ = fromEvent(xhr, 'load').pipe(\n take(1),\n map(data => {\n return xhr.response;\n })\n );\n xhr.send();\n return loadedXhr$;\n};\n","import { CdkDrag } from '@angular/cdk/drag-drop';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n NgZone,\n OnInit,\n Output,\n Signal,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ThyAction, ThyActions } from 'ngx-tethys/action';\nimport { ThyCopyDirective, ThyCopyEvent } from 'ngx-tethys/copy';\nimport { ThyDialog } from 'ngx-tethys/dialog';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { ThyFullscreen } from 'ngx-tethys/fullscreen';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { getClientSize, getFitContentPosition, getOffset, helpers, humanizeBytes, isNumber, isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Observable, fromEvent } from 'rxjs';\nimport { InternalImageInfo, ThyImageInfo, ThyImagePreviewMode, ThyImagePreviewOperation, ThyImagePreviewOptions } from '../image.class';\nimport { fetchImageBlob } from '../utils';\nimport { injectLocale, ThyImageLocale } from 'ngx-tethys/i18n';\n\nconst initialPosition = {\n x: 0,\n y: 0\n};\nconst IMAGE_MAX_ZOOM = 3;\nconst IMAGE_MIN_ZOOM = 0.1;\nconst HORIZONTAL_SPACE = 100 * 2; // left: 100px; right: 100px\nconst VERTICAL_SPACE = 96 + 106; // top: 96px; bottom: 106px\n\n/**\n * 图片预览组件\n * @name thy-image-preview\n * @order 20\n */\n@Component({\n selector: 'thy-image-preview',\n exportAs: 'thyImagePreview',\n templateUrl: './image-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-image-preview-wrap',\n '[class.thy-image-preview-moving]': 'isDragging'\n },\n imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective]\n})\nexport class ThyImagePreview implements OnInit {\n thyDialog = inject(ThyDialog);\n thyFullscreen = inject(ThyFullscreen);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private notifyService = inject(ThyNotifyService);\n private host = inject<ElementRef<HTMLElement>>(ElementRef);\n private sanitizer = inject(DomSanitizer);\n private locale: Signal<ThyImageLocale> = injectLocale('image');\n\n @Output() downloadClicked: EventEmitter<ThyImageInfo> = new EventEmitter();\n\n private readonly destroyRef = inject(DestroyRef);\n\n images: InternalImageInfo[] = [];\n previewIndex: number = 0;\n previewConfig: ThyImagePreviewOptions;\n previewImageTransform = '';\n previewImageWrapperTransform = '';\n zoomDisabled = false;\n zoom: number = 1;\n position = { ...initialPosition };\n isDragging = false;\n isLoadingDone = false;\n isFullScreen = false;\n isInsideScreen = true;\n currentImageMode: ThyImagePreviewMode = 'original-scale';\n previewOperations: ThyImagePreviewOperation[];\n defaultPreviewOperations: ThyImagePreviewOperation[] = [\n {\n icon: 'zoom-out',\n name: this.locale().zoomOut,\n action: (image: ThyImageInfo) => {\n this.zoomOut();\n },\n type: 'zoom-out'\n },\n {\n icon: 'zoom-in',\n name: this.locale().zoomIn,\n action: (image: ThyImageInfo) => {\n this.zoomIn();\n },\n type: 'zoom-in'\n },\n {\n icon: 'one-to-one',\n name: this.locale().originalSize,\n action: (image: ThyImageInfo) => {\n this.setOriginalSize();\n },\n type: 'original-scale'\n },\n {\n icon: 'max-view',\n name: this.locale().fitToScreen,\n action: () => {\n this.setFitScreen();\n },\n type: 'fit-screen'\n },\n {\n icon: 'expand-arrows',\n name: this.locale().fullScreen,\n action: () => {\n this.fullScreen();\n },\n type: 'full-screen'\n },\n {\n icon: 'rotate-right',\n name: this.locale().spin,\n action: (image: ThyImageInfo) => {\n this.rotateRight();\n },\n type: 'rotate-right'\n },\n {\n icon: 'download',\n name: this.locale().download,\n action: (image: ThyImageInfo) => {\n this.download(image);\n },\n type: 'download'\n },\n {\n icon: 'preview',\n name: this.locale().viewOriginal,\n action: () => {\n this.viewOriginal();\n },\n type: 'view-original'\n },\n {\n icon: 'link-insert',\n name: this.locale().copyLink,\n type: 'copyLink'\n }\n ];\n\n private rotate: number;\n\n get previewImage(): InternalImageInfo {\n const image = this.images[this.previewIndex];\n if (image.size) {\n image.size = isNumber(image.size) ? humanizeBytes(image.size) : image.size;\n }\n return image;\n }\n\n get previewImageOriginSrc() {\n let imageSrc = this.previewImage.origin?.src || this.previewImage.src;\n if (imageSrc.startsWith('./')) {\n return window.location.host + '/' + imageSrc.split('./')[1];\n }\n return imageSrc;\n }\n\n get defaultZoom(): number {\n if (this.previewConfig?.zoom && this.previewConfig?.zoom > 0) {\n return this.previewConfig.zoom >= IMAGE_MAX_ZOOM\n ? IMAGE_MAX_ZOOM\n : this.previewConfig.zoom <= IMAGE_MIN_ZOOM\n ? IMAGE_MIN_ZOOM\n : this.previewConfig.zoom;\n }\n }\n\n @ViewChild('imgRef', { static: false }) imageRef!: ElementRef<HTMLImageElement>;\n @ViewChild('imagePreviewWrapper', { static: true }) imagePreviewWrapper!: ElementRef<HTMLElement>;\n\n ngOnInit(): void {\n this.initPreview();\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.host.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (\n (event.target === event.currentTarget ||\n (this.isInsideScreen && this.imagePreviewWrapper.nativeElement.contains(event.target as HTMLElement))) &&\n !this.previewConfig?.disableClose\n ) {\n this.ngZone.run(() => !this.isFullScreen && this.thyDialog.close());\n }\n });\n\n fromEvent(this.imagePreviewWrapper.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.isDragging = !this.isInsideScreen && true;\n });\n });\n }\n\n setOriginalSize() {\n this.reset();\n this.currentImageMode = 'fit-screen';\n this.zoom = 1;\n this.updatePreviewImageTransform();\n this.calculateInsideScreen();\n this.isLoadingDone = true;\n this.cdr.detectChanges();\n }\n\n setFitScreen() {\n this.reset();\n this.isInsideScreen = true;\n this.updatePreviewImage();\n }\n\n useDefaultZoomUpdate(isUpdateImageWrapper: boolean) {\n this.zoom = this.defaultZoom;\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n }\n\n useCalculateZoomUpdate(isUpdateImageWrapper?: boolean) {\n let img = new Image();\n img.src = this.previewImage.src;\n img.onload = () => {\n const { width: offsetWidth, height: offsetHeight } = getClientSize();\n const innerWidth = offsetWidth - HORIZONTAL_SPACE;\n const innerHeight = offsetHeight - VERTICAL_SPACE;\n const { naturalWidth, naturalHeight } = img;\n const xRatio = innerWidth / naturalWidth;\n const yRatio = innerHeight / naturalHeight;\n const zoom = Math.min(xRatio, yRatio);\n if (zoom > 1) {\n this.zoom = 1;\n } else {\n this.zoom = zoom;\n }\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n };\n }\n\n updatePreviewImage() {\n this.resolvePreviewImage().subscribe(result => {\n if (!result) {\n // error\n this.isLoadingDone = true;\n return;\n }\n // image size\n if (!this.previewImage.size && this.previewImage.blob) {\n this.previewImage.size = humanizeBytes(this.previewImage.blob.size);\n }\n if (this.defaultZoom) {\n this.useDefaultZoomUpdate(true);\n } else {\n this.useCalculateZoomUpdate();\n }\n });\n }\n\n resolvePreviewImage() {\n return new Observable<Boolean>(subscriber => {\n if (this.previewImage.src.startsWith('blob:')) {\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(this.previewImage.src);\n subscriber.next(true);\n subscriber.complete();\n return;\n }\n if (this.previewImage.objectURL || !this.previewConfig.resolveSize) {\n subscriber.next(true);\n subscriber.complete();\n } else {\n fetchImageBlob(this.previewImage.src).subscribe(\n blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(objectURL);\n this.previewImage.blob = blob;\n subscriber.next(true);\n subscriber.complete();\n },\n error => {\n subscriber.next(false);\n subscriber.complete();\n }\n );\n }\n });\n }\n\n initPreview() {\n if (Array.isArray(this.previewConfig?.operations) && this.previewConfig?.operations.length) {\n const defaultOperationsMap = helpers.keyBy(this.defaultPreviewOperations, 'type');\n this.previewOperations = this.previewConfig?.operations.map(operation => {\n if (helpers.isString(operation) && defaultOperationsMap[operation]) {\n return defaultOperationsMap[operation];\n } else {\n return operation as ThyImagePreviewOperation;\n }\n });\n } else {\n this.previewOperations = this.defaultPreviewOperations;\n }\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.updatePreviewImage();\n }\n\n download(image: ThyImageInfo) {\n this.downloadClicked.emit(image);\n const src = image.origin?.src || image.src;\n fetchImageBlob(src)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n let a = document.createElement('a');\n a.download = image.name || 'default.png';\n a.href = objectURL;\n a.click();\n });\n }\n\n zoomIn(): void {\n if (this.zoom < IMAGE_MAX_ZOOM) {\n this.zoom = Math.min(this.zoom + 0.1, IMAGE_MAX_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n zoomOut(): void {\n if (this.zoom > IMAGE_MIN_ZOOM) {\n this.zoom = Math.max(this.zoom - 0.1, IMAGE_MIN_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n calculateInsideScreen() {\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { width: clientWidth, height: clientHeight } = getClientSize();\n if (width >= clientWidth || height >= clientHeight) {\n this.isInsideScreen = false;\n } else {\n this.isInsideScreen = true;\n }\n }\n\n viewOriginal() {\n window.open(this.previewImage?.origin?.src || this.previewImage.src, '_blank');\n }\n\n rotateRight(): void {\n this.rotate += 90;\n this.updatePreviewImageTransform();\n }\n\n fullScreen(): void {\n const targetElement = this.host.nativeElement.querySelector('.thy-image-preview');\n this.isFullScreen = true;\n const fullscreenRef = this.thyFullscreen.launch({\n target: targetElement\n });\n fullscreenRef.afterExited().subscribe(() => {\n this.isFullScreen = false;\n this.cdr.markForCheck();\n });\n }\n\n copyLink(event: ThyCopyEvent) {\n if (event.isSuccess) {\n this.notifyService.success('复制图片地址成功');\n } else {\n this.notifyService.error('复制图片地址失败');\n }\n }\n\n prev() {\n if (this.previewIndex > 0) {\n this.previewIndex--;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n next() {\n if (this.previewIndex < this.images.length - 1) {\n this.previewIndex++;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n dragReleased() {\n this.isDragging = false;\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { left, top } = getOffset(this.imageRef.nativeElement, window);\n const { width: clientWidth, height: clientHeight } = getClientSize();\n const isRotate = this.rotate % 180 !== 0;\n const fitContentParams = {\n width: isRotate ? height : width,\n height: isRotate ? width : height,\n left,\n top,\n clientWidth,\n clientHeight\n };\n const fitContentPos = getFitContentPosition(fitContentParams);\n if (!isUndefinedOrNull(fitContentPos.x) || !isUndefinedOrNull(fitContentPos.y)) {\n this.position = { ...this.position, ...fitContentPos };\n }\n }\n\n private reset(): void {\n this.currentImageMode = 'original-scale';\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.position = { ...initialPosition };\n this.cdr.detectChanges();\n }\n\n private updatePreviewImageTransform(): void {\n this.previewImageTransform = `scale3d(${this.zoom}, ${this.zoom}, 1) rotate(${this.rotate}deg)`;\n }\n\n private updatePreviewImageWrapperTransform(): void {\n this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;\n }\n}\n","<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"退出预览\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"退出预览\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"退出全屏\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"上一张\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"下一张\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n","import { ThyImagePreview } from './image-preview.component';\nimport { ThyDialogRef } from 'ngx-tethys/dialog';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { ThyImageInfo, ThyImagePreviewOptions } from '../image.class';\nimport { Observable } from 'rxjs';\n\nexport class ThyImagePreviewRef {\n get componentInstance() {\n return this.dialogRef.componentInstance;\n }\n\n constructor(\n public previewInstance: ThyImagePreview,\n private config: ThyImagePreviewOptions,\n private dialogRef: ThyDialogRef<ThyImagePreview>\n ) {\n dialogRef\n .keydownEvents()\n .pipe()\n .subscribe(event => {\n if (!config.disableKeyboardSelectable && event.keyCode === LEFT_ARROW) {\n this.prev();\n }\n if (!config.disableKeyboardSelectable && event.keyCode === RIGHT_ARROW) {\n this.next();\n }\n });\n }\n\n next(): void {\n this.previewInstance.next();\n }\n\n prev(): void {\n this.previewInstance.prev();\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.previewInstance.downloadClicked.asObservable();\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { ThyImagePreviewConfig, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS } from './image.config';\nimport { ThyImageInfo, ThyImagePreviewOptions } from './image.class';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyDialog, ThyDialogSizes } from 'ngx-tethys/dialog';\nimport { ThyImagePreviewRef } from './preview/image-preview-ref';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * 图片预览服务\n */\n@Injectable()\nexport class ThyImageService implements OnDestroy {\n thyDialog = inject(ThyDialog);\n\n /**\n * 图片预览默认配置,外部可通过注入 THY_IMAGE_DEFAULT_PREVIEW_OPTIONS 进行配置\n */\n defaultConfig: ThyImagePreviewConfig;\n\n private downloadClicked$ = new Subject<ThyImageInfo>();\n\n private ngUnsubscribe$ = new Subject<void>();\n\n constructor() {\n const defaultConfig = inject(THY_IMAGE_DEFAULT_PREVIEW_OPTIONS, { optional: true })!;\n\n this.defaultConfig = defaultConfig;\n }\n\n /**\n * 图片预览方法\n */\n preview(images: ThyImageInfo[], options?: ThyImagePreviewOptions & { startIndex?: number }): ThyImagePreviewRef {\n const config = { ...this.defaultConfig, ...options };\n const dialogRef = this.thyDialog.open(ThyImagePreview, {\n initialState: {\n images,\n previewIndex: options?.startIndex >= 0 && options?.startIndex < images.length ? options.startIndex : 0,\n previewConfig: config\n },\n backdropClass: 'thy-image-preview-backdrop',\n panelClass: 'thy-image-preview-container',\n size: ThyDialogSizes.full,\n ...config\n });\n const imagePreviewRef = new ThyImagePreviewRef(dialogRef.componentInstance, { ...this.defaultConfig, ...options }, dialogRef);\n imagePreviewRef\n .downloadClicked()\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(image => {\n this.downloadClicked$.next(image);\n });\n return imagePreviewRef;\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.downloadClicked$.asObservable();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","import {\n Directive,\n ElementRef,\n InjectFlags,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n Injector,\n OnDestroy,\n AfterViewInit,\n inject\n} from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\nimport { ThyImageMeta } from './image.class';\nimport { ThyImageService } from './image.service';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * thyImage: 预览图片指令,只可绑定到 img 标签上\n * @name img[thyImage]\n * @order 10\n */\n@Directive({\n selector: 'img[thyImage]',\n exportAs: 'thyImage',\n host: {\n '(click)': 'onPreview($event)',\n class: 'thy-image',\n '[class.thy-image-disabled]': 'thyDisablePreview'\n }\n})\nexport class ThyImageDirective implements IThyImageDirective, OnInit, OnChanges, AfterViewInit, OnDestroy {\n private thyImageService = inject(ThyImageService);\n private injector = inject(Injector);\n private elementRef = inject(ElementRef);\n\n /**\n * 图片地址\n */\n @Input() thySrc: string;\n\n /**\n * 预览图片地址\n */\n @Input() thyPreviewSrc: string;\n\n /**\n * 图片原图地址\n */\n @Input() thyOriginSrc: string;\n\n /**\n * 图片附加信息,包含 { name: string, size?: string | number; }\n */\n @Input() thyImageMeta: ThyImageMeta;\n\n /**\n * 是否禁止预览\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisablePreview: boolean;\n\n /**\n * 是否自动计算图片资源大小\n */\n @Input({ transform: coerceBooleanProperty }) thyResolveSize = false;\n\n get previewable(): boolean {\n return !this.thyDisablePreview;\n }\n\n private parentGroup: IThyImageGroupComponent;\n\n ngOnInit(): void {\n this.getParentGroup();\n }\n\n ngAfterViewInit(): void {\n if (this.parentGroup) {\n this.addParentImage();\n }\n }\n\n getParentGroup() {\n while (true) {\n // 多层 thy-image-group 嵌套时,获取最外层 thy-image-group 下的所有图片\n const injector = this.parentGroup?.injector || this.injector;\n const parentGroup = injector.get(THY_IMAGE_GROUP_COMPONENT, null, InjectFlags.SkipSelf);\n if (!parentGroup) {\n break;\n }\n this.parentGroup = parentGroup;\n }\n }\n\n addParentImage() {\n setTimeout(() => {\n const parentElement: HTMLElement = this.parentGroup.element.nativeElement;\n const images = parentElement.querySelectorAll('img[thyImage]');\n const index = Array.prototype.indexOf.call(images, this.elementRef.nativeElement);\n if (index >= 0) {\n this.parentGroup.addImage(this, index);\n } else {\n this.parentGroup.addImage(this, this.parentGroup.images.length);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thySrc } = changes;\n if (thySrc) {\n this.elementRef.nativeElement.src = thySrc.currentValue;\n }\n }\n\n onPreview(event: MouseEvent) {\n if (!this.previewable || event.button !== 0) {\n return;\n }\n if (this.parentGroup) {\n const previewAbleImages = this.parentGroup.images.filter(e => e.previewable);\n const previewImages = previewAbleImages.map(e => ({\n src: e.thyPreviewSrc || e.thySrc,\n ...e.thyImageMeta,\n origin: {\n src: e.thyOriginSrc\n }\n }));\n const startIndex = previewAbleImages.findIndex(el => this === el);\n this.thyImageService.preview(previewImages, {\n startIndex,\n resolveSize: this.thyResolveSize\n });\n } else {\n const previewImages = [\n {\n src: this.thyPreviewSrc || this.thySrc,\n ...this.thyImageMeta,\n origin: {\n src: this.thyOriginSrc\n }\n }\n ];\n this.thyImageService.preview(previewImages, { resolveSize: this.thyResolveSize });\n }\n }\n\n ngOnDestroy(): void {\n if (this.parentGroup) {\n const index = this.parentGroup.images.findIndex(item => item === this);\n this.parentGroup.removeImage(index);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyImageDirective } from './image.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyImageGroup } from './image-group.component';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyImageService } from './image.service';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER } from './image.config';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyDividerModule } from 'ngx-tethys/divider';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyCopyModule } from 'ngx-tethys/copy';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyDialogModule } from 'ngx-tethys/dialog';\nimport { ThyActionModule } from 'ngx-tethys/action';\n\n@NgModule({\n exports: [ThyImageDirective, ThyImageGroup, ThyImagePreview],\n imports: [\n CommonModule,\n PortalModule,\n DragDropModule,\n ThyIconModule,\n ThyDialogModule,\n ThyDividerModule,\n ThyTooltipModule,\n ThyCopyModule,\n ThyLoadingModule,\n ThyActionModule,\n ThyImageDirective,\n ThyImageGroup,\n ThyImagePreview\n ],\n providers: [ThyImageService, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER]\n})\nexport class ThyImageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('19.0.9');
3
+ const VERSION = new Version('19.0.10');
4
4
 
5
5
  /**
6
6
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('19.0.9');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ;;ACF3C;;AAEG;;;;"}
1
+ {"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('19.0.10');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS;;ACF5C;;AAEG;;;;"}
package/i18n/i18n.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type ThyModuleType = 'datePicker' | 'layout' | 'dateRange' | 'timePicker' | 'calendar' | 'autocomplete' | 'transfer' | 'colorPicker' | 'strength' | 'guider' | 'copy' | 'nav' | 'dialog' | 'select' | 'treeSelect' | 'cascader' | 'pagination' | 'form' | 'empty';
1
+ export type ThyModuleType = 'datePicker' | 'layout' | 'dateRange' | 'timePicker' | 'calendar' | 'autocomplete' | 'transfer' | 'colorPicker' | 'strength' | 'guider' | 'copy' | 'nav' | 'dialog' | 'select' | 'treeSelect' | 'cascader' | 'pagination' | 'form' | 'empty' | 'image';
2
2
  export type ThyModuleLocaleType<K extends ThyModuleType> = ThyI18nLocale[K];
3
3
  export declare enum ThyLocaleType {
4
4
  zhHans = "zh-hans",
@@ -28,6 +28,7 @@ export interface ThyI18nLocale {
28
28
  pagination: ThyPaginationLocale;
29
29
  form: ThyFormLocale;
30
30
  empty: ThyEmptyLocale;
31
+ image: ThyImageLocale;
31
32
  }
32
33
  export interface ThyLayoutLocale {
33
34
  collapse: string;
@@ -134,6 +135,7 @@ export interface ThyCascaderLocale {
134
135
  }
135
136
  export interface ThyPaginationLocale {
136
137
  page: string;
138
+ order: string;
137
139
  total: string;
138
140
  totalCount: string;
139
141
  jumpTo: string;
@@ -157,3 +159,14 @@ export interface ThyFormLocale {
157
159
  export interface ThyEmptyLocale {
158
160
  noDataText: string;
159
161
  }
162
+ export interface ThyImageLocale {
163
+ zoomOut: string;
164
+ zoomIn: string;
165
+ originalSize: string;
166
+ fitToScreen: string;
167
+ fullScreen: string;
168
+ spin: string;
169
+ download: string;
170
+ viewOriginal: string;
171
+ copyLink: string;
172
+ }
@@ -130,5 +130,16 @@ declare const _default: {
130
130
  empty: {
131
131
  noDataText: string;
132
132
  };
133
+ image: {
134
+ zoomOut: string;
135
+ zoomIn: string;
136
+ originalSize: string;
137
+ fitToScreen: string;
138
+ fullScreen: string;
139
+ spin: string;
140
+ download: string;
141
+ viewOriginal: string;
142
+ copyLink: string;
143
+ };
133
144
  };
134
145
  export default _default;
@@ -130,6 +130,17 @@ declare const _default: {
130
130
  empty: {
131
131
  noDataText: string;
132
132
  };
133
+ image: {
134
+ zoomOut: string;
135
+ zoomIn: string;
136
+ originalSize: string;
137
+ fitToScreen: string;
138
+ fullScreen: string;
139
+ spin: string;
140
+ download: string;
141
+ viewOriginal: string;
142
+ copyLink: string;
143
+ };
133
144
  };
134
145
  export default _default;
135
146
  /**
@@ -130,5 +130,16 @@ declare const _default: {
130
130
  empty: {
131
131
  noDataText: string;
132
132
  };
133
+ image: {
134
+ zoomOut: string;
135
+ zoomIn: string;
136
+ originalSize: string;
137
+ fitToScreen: string;
138
+ fullScreen: string;
139
+ spin: string;
140
+ download: string;
141
+ viewOriginal: string;
142
+ copyLink: string;
143
+ };
133
144
  };
134
145
  export default _default;
@@ -130,5 +130,16 @@ declare const _default: {
130
130
  empty: {
131
131
  noDataText: string;
132
132
  };
133
+ image: {
134
+ zoomOut: string;
135
+ zoomIn: string;
136
+ originalSize: string;
137
+ fitToScreen: string;
138
+ fullScreen: string;
139
+ spin: string;
140
+ download: string;
141
+ viewOriginal: string;
142
+ copyLink: string;
143
+ };
133
144
  };
134
145
  export default _default;
@@ -130,5 +130,16 @@ declare const _default: {
130
130
  empty: {
131
131
  noDataText: string;
132
132
  };
133
+ image: {
134
+ zoomOut: string;
135
+ zoomIn: string;
136
+ originalSize: string;
137
+ fitToScreen: string;
138
+ fullScreen: string;
139
+ spin: string;
140
+ download: string;
141
+ viewOriginal: string;
142
+ copyLink: string;
143
+ };
133
144
  };
134
145
  export default _default;
@@ -18,6 +18,7 @@ export declare class ThyImagePreview implements OnInit {
18
18
  private notifyService;
19
19
  private host;
20
20
  private sanitizer;
21
+ private locale;
21
22
  downloadClicked: EventEmitter<ThyImageInfo>;
22
23
  private readonly destroyRef;
23
24
  images: InternalImageInfo[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-tethys",
3
- "version": "19.0.9",
3
+ "version": "19.0.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@github.com/atinc/ngx-tethys.git"
@@ -1 +1 @@
1
- export declare const VERSION = "19.0.9";
1
+ export declare const VERSION = "19.0.10";
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '19.0.9';
4
+ exports.VERSION = '19.0.10';