ngx-tethys 19.0.4 → 19.0.6

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.
Files changed (242) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/anchor/anchor-link.component.d.ts +2 -1
  3. package/anchor/anchor.component.d.ts +2 -1
  4. package/anchor/anchor.token.d.ts +9 -0
  5. package/calendar/calendar-header.component.d.ts +3 -2
  6. package/carousel/carousel.component.d.ts +2 -1
  7. package/carousel/carousel.token.d.ts +7 -0
  8. package/carousel/engine/carousel-base.d.ts +3 -3
  9. package/carousel/engine/carousel-fade.d.ts +2 -2
  10. package/carousel/engine/carousel-noop.d.ts +2 -2
  11. package/carousel/engine/carousel-slide.d.ts +2 -2
  12. package/collapse/collapse-item.component.d.ts +2 -1
  13. package/collapse/collapse.component.d.ts +5 -5
  14. package/collapse/collapse.token.d.ts +15 -0
  15. package/color-picker/color-picker.component.d.ts +15 -3
  16. package/core/theme/enum.d.ts +5 -0
  17. package/core/theme/index.d.ts +1 -0
  18. package/core/theme/store.d.ts +1 -1
  19. package/core/theme/theme.d.ts +0 -5
  20. package/date-picker/abstract-picker.component.d.ts +6 -1
  21. package/date-picker/base-picker.component.d.ts +1 -1
  22. package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
  23. package/date-picker/lib/calendar/calendar-table.component.d.ts +4 -3
  24. package/date-picker/lib/popups/date-popup.component.d.ts +2 -1
  25. package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
  26. package/date-picker/picker.component.d.ts +2 -1
  27. package/date-picker/picker.util.d.ts +5 -5
  28. package/date-picker/standard-types.d.ts +7 -2
  29. package/drag-drop/drag-drop.service.d.ts +2 -2
  30. package/drag-drop/{drop-container.class.d.ts → drag-drop.token.d.ts} +12 -7
  31. package/drag-drop/drag-handle.directive.d.ts +2 -1
  32. package/drag-drop/drag-ref.d.ts +3 -5
  33. package/drag-drop/drag.directive.d.ts +3 -3
  34. package/drag-drop/drop-container.directive.d.ts +1 -1
  35. package/drag-drop/index.d.ts +1 -1
  36. package/fesm2022/ngx-tethys-action.mjs +11 -12
  37. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  38. package/fesm2022/ngx-tethys-affix.mjs +8 -9
  39. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  40. package/fesm2022/ngx-tethys-alert.mjs +11 -12
  41. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  42. package/fesm2022/ngx-tethys-anchor.mjs +26 -13
  43. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  44. package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
  45. package/fesm2022/ngx-tethys-autocomplete.mjs +17 -18
  46. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  47. package/fesm2022/ngx-tethys-avatar.mjs +25 -28
  48. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  49. package/fesm2022/ngx-tethys-back-top.mjs +7 -7
  50. package/fesm2022/ngx-tethys-badge.mjs +7 -7
  51. package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
  52. package/fesm2022/ngx-tethys-button.mjs +14 -15
  53. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  54. package/fesm2022/ngx-tethys-calendar.mjs +18 -20
  55. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  56. package/fesm2022/ngx-tethys-card.mjs +15 -17
  57. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  58. package/fesm2022/ngx-tethys-carousel.mjs +28 -17
  59. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  60. package/fesm2022/ngx-tethys-cascader.mjs +16 -16
  61. package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
  62. package/fesm2022/ngx-tethys-collapse.mjs +97 -85
  63. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  64. package/fesm2022/ngx-tethys-color-picker.mjs +34 -36
  65. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  66. package/fesm2022/ngx-tethys-comment.mjs +15 -17
  67. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  68. package/fesm2022/ngx-tethys-copy.mjs +8 -9
  69. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  70. package/fesm2022/ngx-tethys-core.mjs +21 -22
  71. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  72. package/fesm2022/ngx-tethys-date-picker.mjs +232 -248
  73. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  74. package/fesm2022/ngx-tethys-date-range.mjs +10 -10
  75. package/fesm2022/ngx-tethys-dialog.mjs +22 -23
  76. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-divider.mjs +7 -7
  78. package/fesm2022/ngx-tethys-dot.mjs +8 -9
  79. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  80. package/fesm2022/ngx-tethys-drag-drop.mjs +23 -30
  81. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  82. package/fesm2022/ngx-tethys-dropdown.mjs +58 -70
  83. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  84. package/fesm2022/ngx-tethys-empty.mjs +10 -10
  85. package/fesm2022/ngx-tethys-flexible-text.mjs +8 -8
  86. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-form.mjs +47 -54
  88. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-fullscreen.mjs +15 -16
  90. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-grid.mjs +46 -51
  92. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-guider.mjs +55 -61
  94. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-i18n.mjs +51 -54
  96. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-icon.mjs +11 -12
  98. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-image.mjs +32 -21
  100. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-input-number.mjs +7 -7
  102. package/fesm2022/ngx-tethys-input.mjs +21 -23
  103. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  104. package/fesm2022/ngx-tethys-layout.mjs +73 -88
  105. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  106. package/fesm2022/ngx-tethys-list.mjs +19 -22
  107. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  108. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  109. package/fesm2022/ngx-tethys-mention.mjs +11 -12
  110. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  111. package/fesm2022/ngx-tethys-menu.mjs +30 -30
  112. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  113. package/fesm2022/ngx-tethys-message.mjs +24 -24
  114. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  115. package/fesm2022/ngx-tethys-nav.mjs +26 -29
  116. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  117. package/fesm2022/ngx-tethys-notify.mjs +17 -17
  118. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  119. package/fesm2022/ngx-tethys-pagination.mjs +15 -17
  120. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  121. package/fesm2022/ngx-tethys-popover.mjs +21 -23
  122. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  123. package/fesm2022/ngx-tethys-progress.mjs +13 -13
  124. package/fesm2022/ngx-tethys-property-operation.mjs +11 -11
  125. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  126. package/fesm2022/ngx-tethys-property.mjs +11 -11
  127. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  128. package/fesm2022/ngx-tethys-radio.mjs +125 -115
  129. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-rate.mjs +10 -10
  131. package/fesm2022/ngx-tethys-resizable.mjs +18 -18
  132. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  133. package/fesm2022/ngx-tethys-result.mjs +7 -7
  134. package/fesm2022/ngx-tethys-segment.mjs +10 -10
  135. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  136. package/fesm2022/ngx-tethys-select.mjs +10 -10
  137. package/fesm2022/ngx-tethys-shared.mjs +81 -109
  138. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  139. package/fesm2022/ngx-tethys-skeleton.mjs +23 -24
  140. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  141. package/fesm2022/ngx-tethys-slide.mjs +36 -41
  142. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  143. package/fesm2022/ngx-tethys-slider.mjs +7 -7
  144. package/fesm2022/ngx-tethys-space.mjs +11 -12
  145. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  146. package/fesm2022/ngx-tethys-statistic.mjs +7 -7
  147. package/fesm2022/ngx-tethys-stepper.mjs +22 -24
  148. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-strength.mjs +8 -8
  150. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-switch.mjs +7 -7
  152. package/fesm2022/ngx-tethys-table.mjs +22 -25
  153. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  154. package/fesm2022/ngx-tethys-tabs.mjs +14 -15
  155. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  156. package/fesm2022/ngx-tethys-tag.mjs +12 -13
  157. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  158. package/fesm2022/ngx-tethys-time-picker.mjs +58 -56
  159. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  160. package/fesm2022/ngx-tethys-timeline.mjs +13 -13
  161. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  162. package/fesm2022/ngx-tethys-tooltip.mjs +14 -15
  163. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  164. package/fesm2022/ngx-tethys-transfer.mjs +10 -10
  165. package/fesm2022/ngx-tethys-tree-select.mjs +10 -10
  166. package/fesm2022/ngx-tethys-tree.mjs +17 -21
  167. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  168. package/fesm2022/ngx-tethys-typography.mjs +15 -17
  169. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  170. package/fesm2022/ngx-tethys-upload.mjs +18 -19
  171. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  172. package/fesm2022/ngx-tethys-util.mjs +418 -396
  173. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  174. package/fesm2022/ngx-tethys-vote.mjs +7 -7
  175. package/fesm2022/ngx-tethys-watermark.mjs +8 -9
  176. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys.mjs +1 -1
  178. package/fesm2022/ngx-tethys.mjs.map +1 -1
  179. package/grid/grid.type.d.ts +5 -0
  180. package/grid/index.d.ts +1 -0
  181. package/grid/thy-grid-item.component.d.ts +1 -1
  182. package/grid/thy-grid.component.d.ts +1 -11
  183. package/guider/guider-manager.d.ts +2 -1
  184. package/guider/guider-ref.d.ts +6 -6
  185. package/guider/guider-step-ref.d.ts +3 -4
  186. package/guider/guider.interface.d.ts +26 -0
  187. package/i18n/i18n.service.d.ts +1 -1
  188. package/i18n/index.d.ts +2 -5
  189. package/i18n/locale.d.ts +1 -7
  190. package/i18n/locales/index.d.ts +5 -0
  191. package/i18n/util.d.ts +3 -0
  192. package/icon/index.d.ts +1 -1
  193. package/image/image-group.component.d.ts +4 -4
  194. package/image/image.directive.d.ts +2 -1
  195. package/image/image.token.d.ts +17 -0
  196. package/layout/header.component.d.ts +6 -18
  197. package/list/selection/selection-list.d.ts +2 -1
  198. package/list/selection/selection.interface.d.ts +2 -3
  199. package/message/abstract/abstract-message-queue.service.d.ts +2 -2
  200. package/message/abstract/abstract-message-ref.d.ts +6 -2
  201. package/package.json +2 -1
  202. package/popover/popover.directive.d.ts +6 -2
  203. package/radio/group/radio-group.component.d.ts +2 -1
  204. package/radio/radio.component.d.ts +3 -3
  205. package/radio/radio.token.d.ts +12 -0
  206. package/resizable/interface.d.ts +5 -0
  207. package/resizable/resizable.directive.d.ts +9 -3
  208. package/resizable/resizable.service.d.ts +1 -1
  209. package/resizable/resize-handle.component.d.ts +1 -6
  210. package/schematics/version.d.ts +1 -1
  211. package/schematics/version.js +1 -1
  212. package/segment/segment-item.component.d.ts +2 -1
  213. package/segment/segment.token.d.ts +10 -4
  214. package/shared/index.d.ts +1 -0
  215. package/shared/option/list-option/list-option.component.d.ts +10 -5
  216. package/shared/option/option.component.d.ts +1 -3
  217. package/shared/option/option.token.d.ts +11 -11
  218. package/shared/shared.type.d.ts +1 -0
  219. package/table/index.d.ts +1 -0
  220. package/table/styles/table.scss +9 -1
  221. package/table/table-column.component.d.ts +5 -30
  222. package/table/table-skeleton.component.d.ts +11 -3
  223. package/table/table.component.d.ts +1 -3
  224. package/table/table.type.d.ts +3 -0
  225. package/tag/tag.component.d.ts +2 -4
  226. package/time-picker/inner/inner-time-picker.component.d.ts +3 -1
  227. package/time-picker/inner/inner-time-picker.store.d.ts +5 -5
  228. package/time-picker/time-picker.utils.d.ts +5 -5
  229. package/timeline/index.d.ts +1 -0
  230. package/timeline/timeline-item.component.d.ts +1 -1
  231. package/timeline/timeline.component.d.ts +1 -1
  232. package/timeline/timeline.type.d.ts +1 -0
  233. package/tooltip/tooltip.directive.d.ts +2 -10
  234. package/tree/index.d.ts +0 -1
  235. package/tree/tree-abstract.d.ts +1 -1
  236. package/tree/tree-node.component.d.ts +17 -8
  237. package/tree/tree.class.d.ts +40 -1
  238. package/tree/tree.component.d.ts +1 -1
  239. package/tree/tree.pipe.d.ts +1 -1
  240. package/tree/tree.service.d.ts +3 -9
  241. package/util/helpers/helpers.d.ts +1 -0
  242. package/tree/tree-node.class.d.ts +0 -29
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-i18n.mjs","sources":["../../../src/i18n/i18n.ts","../../../src/i18n/i18n.service.ts","../../../src/i18n/i18n.token.ts","../../../src/i18n/locale.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/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 { inject, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport {\n deDeLocale,\n enUsLocale,\n getDefaultLocaleId,\n jaJpLocale,\n normalizeLocale,\n THY_I18N_DE_DE,\n THY_I18N_EN_US,\n THY_I18N_JA_JP,\n THY_I18N_LOCALE_ID,\n THY_I18N_ZH_HANS,\n THY_I18N_ZH_HANT,\n ThyI18nLocale,\n ThyLocaleType,\n zhHansLocale,\n zhHantLocale\n} from './index';\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 { 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 { computed, inject, Signal } from '@angular/core';\nimport { ThyI18nLocale, ThyI18nService, ThyLocaleType, ThyModuleLocaleType, ThyModuleType } from './index';\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\nexport function normalizeLocale(localeId: string): ThyLocaleType {\n return localeId?.toLowerCase().replace(/_/g, '-') as ThyLocaleType;\n}\n\n/**\n * 支持语言列表中获取默认语言\n * return ThyLocaleType\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","/**\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\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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"}
@@ -339,10 +339,10 @@ class ThyIconRegistry {
339
339
  setIconMode(mode) {
340
340
  this.internalIconMode = mode;
341
341
  }
342
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
343
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIconRegistry, providedIn: 'root' }); }
342
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
343
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIconRegistry, providedIn: 'root' }); }
344
344
  }
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIconRegistry, decorators: [{
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIconRegistry, decorators: [{
346
346
  type: Injectable,
347
347
  args: [{
348
348
  providedIn: 'root'
@@ -499,17 +499,16 @@ class ThyIcon {
499
499
  const titleElement = svg.querySelector('title');
500
500
  titleElement && titleElement.remove();
501
501
  }
502
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
503
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.4", type: ThyIcon, isStandalone: true, selector: "thy-icon, [thy-icon]", inputs: { iconType: ["thyIconType", "iconType"], iconTwotoneColor: ["thyTwotoneColor", "iconTwotoneColor"], iconName: ["thyIconName", "iconName"], iconRotate: ["thyIconRotate", "iconRotate", numberAttribute], iconSet: ["thyIconSet", "iconSet"], iconLegging: ["thyIconLegging", "iconLegging", coerceBooleanProperty], iconLinearGradient: ["thyIconLinearGradient", "iconLinearGradient", coerceBooleanProperty] }, host: { properties: { "class.thy-icon-legging": "this.iconLegging" }, classAttribute: "thy-icon" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
502
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
503
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.6", type: ThyIcon, isStandalone: true, selector: "thy-icon, [thy-icon]", inputs: { iconType: ["thyIconType", "iconType"], iconTwotoneColor: ["thyTwotoneColor", "iconTwotoneColor"], iconName: ["thyIconName", "iconName"], iconRotate: ["thyIconRotate", "iconRotate", numberAttribute], iconSet: ["thyIconSet", "iconSet"], iconLegging: ["thyIconLegging", "iconLegging", coerceBooleanProperty], iconLinearGradient: ["thyIconLinearGradient", "iconLinearGradient", coerceBooleanProperty] }, host: { properties: { "class.thy-icon-legging": "this.iconLegging" }, classAttribute: "thy-icon" }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
504
504
  }
505
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIcon, decorators: [{
505
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIcon, decorators: [{
506
506
  type: Component,
507
507
  args: [{
508
508
  selector: 'thy-icon, [thy-icon]',
509
509
  template: '<ng-content></ng-content>',
510
510
  changeDetection: ChangeDetectionStrategy.OnPush,
511
511
  encapsulation: ViewEncapsulation.None,
512
- standalone: true,
513
512
  host: {
514
513
  class: 'thy-icon'
515
514
  }
@@ -541,11 +540,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
541
540
  }] } });
542
541
 
543
542
  class ThyIconModule {
544
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
545
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: ThyIconModule, imports: [ThyIcon, CommonModule, FormsModule], exports: [ThyIcon] }); }
546
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIconModule, imports: [CommonModule, FormsModule] }); }
543
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
544
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: ThyIconModule, imports: [ThyIcon, CommonModule, FormsModule], exports: [ThyIcon] }); }
545
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIconModule, imports: [CommonModule, FormsModule] }); }
547
546
  }
548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ThyIconModule, decorators: [{
547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThyIconModule, decorators: [{
549
548
  type: NgModule,
550
549
  args: [{
551
550
  declarations: [],
@@ -559,5 +558,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
559
558
  * Generated bundle index. Do not edit.
560
559
  */
561
560
 
562
- export { ThyIcon, ThyIconModule, ThyIconRegistry, setPrintErrorWhenIconNotFound };
561
+ export { ThyIcon, ThyIconModule, ThyIconRegistry, getWhetherPrintErrorWhenIconNotFound, setPrintErrorWhenIconNotFound };
563
562
  //# sourceMappingURL=ngx-tethys-icon.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-icon.mjs","sources":["../../../src/icon/config.ts","../../../src/icon/icon-registry.ts","../../../src/icon/icon.component.ts","../../../src/icon/icon.module.ts","../../../src/icon/ngx-tethys-icon.ts"],"sourcesContent":["let printErrorWhenNotFound = true;\n\nexport function setPrintErrorWhenIconNotFound(value: boolean) {\n printErrorWhenNotFound = value;\n}\n\nexport function getWhetherPrintErrorWhenIconNotFound() {\n return printErrorWhenNotFound;\n}\n","import { forkJoin, Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share, tap } from 'rxjs/operators';\n\nimport { DOCUMENT } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, SecurityContext, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { isString } from 'ngx-tethys/util';\n\nclass SvgIconConfig {\n url: SafeResourceUrl | null;\n svgElement: SVGElement | null;\n\n constructor(data: SafeResourceUrl | SVGElement) {\n // Note that we can't use `instanceof SVGElement` here,\n // because it'll break during server-side rendering.\n if (data && !!(data as any).nodeName) {\n this.svgElement = data as SVGElement;\n } else {\n this.url = data as SafeResourceUrl;\n }\n }\n}\n\nexport type IconMode = 'font' | 'svg';\n\nexport type SvgResourceUrl = SafeResourceUrl | string;\n\nexport type SvgHtml = SafeHtml | string;\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyIconRegistry {\n private sanitizer = inject(DomSanitizer);\n private httpClient = inject(HttpClient, { optional: false });\n private document = inject(DOCUMENT);\n\n private defaultFontSetClass = 'wt-icon';\n private internalIconMode: IconMode = 'svg';\n private svgIconConfigs = new Map<string, SvgIconConfig>();\n private svgIconSetConfigs = new Map<string, SvgIconConfig[]>();\n private inProgressUrlFetches = new Map<string, Observable<string>>();\n\n public get iconMode() {\n return this.internalIconMode;\n }\n\n private getIconNameNotFoundError(iconName: string): Error {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n }\n\n private getIconFailedToSanitizeLiteralError(literal: SvgHtml): Error {\n return Error(\n `The literal provided to ThyIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`\n );\n }\n\n private internalAddSvgIconSet(namespace: string, config: SvgIconConfig): this {\n const configNamespace = this.svgIconSetConfigs.get(namespace);\n\n if (configNamespace) {\n configNamespace.push(config);\n } else {\n this.svgIconSetConfigs.set(namespace, [config]);\n }\n\n return this;\n }\n\n private cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n }\n\n private fetchUrl(safeUrl: SafeResourceUrl | null): Observable<string> {\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n\n const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !url) {\n throw new Error(\n `The URL provided to ThyIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`\n );\n }\n\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this.inProgressUrlFetches.get(url);\n\n if (inProgressFetch) {\n return inProgressFetch;\n } else {\n // TODO(jelbourn): for some reason, the `finalize` operator \"loses\" the generic type on the\n // Observable. Figure out why and fix it.\n const req = this.httpClient.get(url, { responseType: 'text' }).pipe(\n finalize(() => this.inProgressUrlFetches.delete(url)),\n share()\n );\n\n this.inProgressUrlFetches.set(url, req);\n return req;\n }\n }\n\n private toSvgElement(element: Element): SVGElement {\n const svg = this.svgElementFromString('<svg></svg>');\n\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this.document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n\n return svg;\n }\n\n private extractSvgIconFromIconSet(iconSet: SVGElement, iconName: string): SVGElement | null {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n\n if (!iconSource) {\n return null;\n }\n\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true) as Element;\n iconElement.removeAttribute('id');\n\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this.setSvgAttributes(iconElement as SVGElement);\n }\n\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this.setSvgAttributes(this.toSvgElement(iconElement));\n }\n\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this.svgElementFromString('<svg></svg>');\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n\n return this.setSvgAttributes(svg);\n }\n\n private extractIconWithNameFromIconSetConfigs(iconName: string, iconSetConfigs: SvgIconConfig[]): SVGElement | null {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n if (config.svgElement) {\n const foundIcon = this.extractSvgIconFromIconSet(config.svgElement, iconName);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n\n private svgElementFromString(str: string): SVGElement {\n const div = this.document.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n\n return svg;\n }\n\n private setSvgAttributes(svg: SVGElement): SVGElement {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '1em');\n svg.setAttribute('width', '1em');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n return svg;\n }\n\n private createSvgElementForSingleIcon(responseText: string): SVGElement {\n const svg = this.svgElementFromString(responseText);\n this.setSvgAttributes(svg);\n return svg;\n }\n\n private loadSvgIconFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n return this.fetchUrl(config.url).pipe(map(svgText => this.createSvgElementForSingleIcon(svgText)));\n }\n\n private loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n // If the SVG for this icon set has already been parsed, do nothing.\n if (config.svgElement) {\n return of(config.svgElement);\n }\n\n return this.fetchUrl(config.url).pipe(\n map(svgText => {\n // It is possible that the icon set was parsed and cached by an earlier request, so parsing\n // only needs to occur if the cache is yet unset.\n if (!config.svgElement) {\n config.svgElement = this.svgElementFromString(svgText);\n }\n\n return config.svgElement;\n })\n );\n }\n\n private getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n if (config.svgElement) {\n // We already have the SVG element for this icon, return a copy.\n return of(this.cloneSvg(config.svgElement));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this.loadSvgIconFromConfig(config).pipe(\n tap(svg => (config.svgElement = svg)),\n map(svg => this.cloneSvg(svg))\n );\n }\n }\n\n private getSvgFromIconSetConfigs(name: string, iconSetConfigs: SvgIconConfig[]): Observable<SVGElement> {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this.extractIconWithNameFromIconSetConfigs(name, iconSetConfigs);\n\n if (namedIcon) {\n // We could cache namedIcon in svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return of(namedIcon);\n }\n\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests: Observable<SVGElement | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgElement)\n .map(iconSetConfig => {\n return this.loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse): Observable<SVGElement | null> => {\n const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n console.error(`Loading icon set URL: ${url} failed: ${err.message}`);\n return of(null);\n })\n );\n });\n\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(\n map(() => {\n const foundIcon = this.extractIconWithNameFromIconSetConfigs(name, iconSetConfigs);\n\n if (!foundIcon) {\n throw this.getIconNameNotFoundError(name);\n }\n\n return foundIcon;\n })\n );\n }\n\n private internalAddSvgIconConfig(namespace: string, iconName: string, config: SvgIconConfig): this {\n this.svgIconConfigs.set(this.buildIconKey(namespace, iconName), config);\n return this;\n }\n\n public buildIconKey(namespace: string, name: string) {\n return namespace + ':' + name;\n }\n\n public splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return <[string, string]>parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`);\n }\n }\n\n public addSvgIconSetInNamespace(namespace: string, url: SvgResourceUrl): this {\n url = isString(url) ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : url;\n return this.internalAddSvgIconSet(namespace, new SvgIconConfig(url));\n }\n\n /**\n * 添加SVG图标集,添加到默认命名空间\n */\n public addSvgIconSet(url: SvgResourceUrl): this {\n return this.addSvgIconSetInNamespace('', url);\n }\n\n public addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml): this {\n const sanitizedLiteral = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitizedLiteral) {\n throw this.getIconFailedToSanitizeLiteralError(literal);\n }\n\n const svgElement = this.svgElementFromString(sanitizedLiteral);\n return this.internalAddSvgIconSet(namespace, new SvgIconConfig(svgElement));\n }\n\n public addSvgIconSetLiteral(literal: SafeHtml): this {\n return this.addSvgIconSetLiteralInNamespace('', literal);\n }\n\n /**\n * @description.en-us Registers an icon by URL in the specified namespace.\n * @description 添加单个SVG图标到指定的命名空间\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n public addSvgIconInNamespace(namespace: string, iconName: string, url: SvgResourceUrl): this {\n url = isString(url) ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : url;\n return this.internalAddSvgIconConfig(namespace, iconName, new SvgIconConfig(url));\n }\n\n /**\n * @description.en-us Registers an icon by URL in the default namespace.\n * @description 添加单个SVG图标\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n public addSvgIcon(iconName: string, url: SvgResourceUrl): this {\n return this.addSvgIconInNamespace('', iconName, url);\n }\n\n /**\n * @description.en-us Registers an icon using an HTML string in the default namespace.\n * @description 添加单个SVG图标字符串,直接传入 SVG HTML 字符串\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n public addSvgIconLiteral(iconName: string, literal: SvgHtml): this {\n return this.addSvgIconLiteralInNamespace('', iconName, literal);\n }\n\n /**\n * @description.en-us Registers an icon using an HTML string in the specified namespace.\n * @description 添加单个SVG图标字符串到指定的命名空间,直接传入 SVG HTML 字符串\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n public addSvgIconLiteralInNamespace(namespace: string, iconName: string, literal: SvgHtml): this {\n literal = isString(literal) ? this.sanitizer.bypassSecurityTrustHtml(literal) : literal;\n const sanitizedLiteral = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitizedLiteral) {\n throw this.getIconFailedToSanitizeLiteralError(literal);\n }\n\n const svgElement = this.createSvgElementForSingleIcon(sanitizedLiteral);\n return this.internalAddSvgIconConfig(namespace, iconName, new SvgIconConfig(svgElement));\n }\n\n public getDefaultFontSetClass() {\n return this.defaultFontSetClass;\n }\n\n public getFontSetClassByAlias(fontSet: string) {\n return fontSet;\n }\n\n /**\n * 获取某个图标\n */\n public getSvgIcon(name: string, namespace: string = ''): Observable<SVGElement> {\n // Return (copy of) cached icon if possible.\n const key = this.buildIconKey(namespace, name);\n const config = this.svgIconConfigs.get(key);\n\n if (config) {\n return this.getSvgFromConfig(config);\n }\n\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this.svgIconSetConfigs.get(namespace);\n\n if (iconSetConfigs) {\n return this.getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n\n return throwError(this.getIconNameNotFoundError(key));\n }\n\n public setIconMode(mode: IconMode) {\n this.internalIconMode = mode;\n }\n}\n","import { take } from 'rxjs/operators';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n numberAttribute,\n inject\n} from '@angular/core';\n\nimport { getWhetherPrintErrorWhenIconNotFound } from './config';\nimport { ThyIconRegistry } from './icon-registry';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst iconSuffixMap = {\n fill: 'fill',\n twotone: 'tt'\n};\n\n/**\n * 图标组件\n * @name thy-icon,[thy-icon]\n * @order 10\n */\n@Component({\n selector: 'thy-icon, [thy-icon]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n host: {\n class: 'thy-icon'\n }\n})\nexport class ThyIcon implements OnInit, OnChanges {\n private render = inject(Renderer2);\n private elementRef = inject(ElementRef);\n private iconRegistry = inject(ThyIconRegistry);\n\n private initialized = false;\n\n /**\n * 图标的类型\n * @type outline | fill | twotone\n */\n @Input('thyIconType') iconType: 'outline' | 'fill' | 'twotone' = 'outline';\n\n @Input('thyTwotoneColor') iconTwotoneColor: string;\n\n /**\n * 图标的名字\n */\n @Input('thyIconName') iconName: string;\n\n /**\n * 图标的旋转角度\n * @default 0\n */\n @Input({ alias: 'thyIconRotate', transform: numberAttribute }) iconRotate: number;\n\n @Input('thyIconSet') iconSet: string;\n\n /**\n * 图标打底色,镂空的图标,会透过颜色来\n * @default false\n */\n @HostBinding(`class.thy-icon-legging`)\n @Input({ alias: 'thyIconLegging', transform: coerceBooleanProperty })\n iconLegging: boolean;\n\n @Input({ alias: 'thyIconLinearGradient', transform: coerceBooleanProperty })\n iconLinearGradient: boolean;\n\n private hostRenderer = useHostRenderer();\n\n ngOnInit() {\n this.updateClasses();\n this.initialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.initialized) {\n if (\n changes['iconName'] ||\n changes['iconSet'] ||\n changes['iconTwotoneColor'] ||\n changes['iconType'] ||\n changes['iconLinearGradient']\n ) {\n this.updateClasses();\n } else if (changes['iconRotate']) {\n this.setStyleRotate();\n }\n }\n }\n\n private updateClasses() {\n const [namespace, iconName] = this.iconRegistry.splitIconName(this.iconName);\n if (iconName) {\n if (this.iconRegistry.iconMode === 'svg') {\n this.iconRegistry\n .getSvgIcon(this.buildIconNameByType(iconName), namespace)\n .pipe(take(1))\n .subscribe(\n svg => {\n this.setSvgElement(svg);\n },\n (error: Error) => {\n if (getWhetherPrintErrorWhenIconNotFound()) {\n console.error(`Error retrieving icon: ${error.message}`);\n }\n }\n );\n this.hostRenderer.updateClass([`thy-icon${namespace ? `-${namespace}` : ``}-${this.buildIconNameByType(iconName)}`]);\n } else {\n const fontSetClass = this.iconSet\n ? this.iconRegistry.getFontSetClassByAlias(this.iconSet)\n : this.iconRegistry.getDefaultFontSetClass();\n this.hostRenderer.updateClass([fontSetClass, `${fontSetClass}-${this.iconName}`]);\n }\n }\n }\n\n private setStyleRotate() {\n if (this.iconRotate !== undefined) {\n this.render.setStyle(this.elementRef.nativeElement.querySelector('svg'), 'transform', `rotate(${this.iconRotate}deg)`);\n }\n }\n\n //#region svg element\n\n private setSvgElement(svg: SVGElement) {\n this.clearSvgElement();\n\n // Workaround for IE11 and Edge ignoring `style` tags inside dynamically-created SVGs.\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/\n // Do this before inserting the element into the DOM, in order to avoid a style recalculation.\n const styleTags = svg.querySelectorAll('style') as NodeListOf<HTMLStyleElement>;\n\n for (let i = 0; i < styleTags.length; i++) {\n styleTags[i].textContent += ' ';\n }\n\n if (this.iconType === 'twotone') {\n const allPaths = svg.querySelectorAll('path');\n if (allPaths.length > 1) {\n allPaths.forEach((child, index: number) => {\n if (child.getAttribute('id').includes('secondary-color')) {\n child.setAttribute('fill', this.iconTwotoneColor);\n }\n });\n }\n }\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n // if (this._location) {\n // const path = this._location.getPathname();\n // this._previousPath = path;\n // this._cacheChildrenWithExternalReferences(svg);\n // this._prependPathToReferences(path);\n // }\n if (this.iconLinearGradient) {\n this.setBaseUrl(svg);\n this.clearTitleElement(svg);\n }\n\n this.elementRef.nativeElement.appendChild(svg);\n this.setStyleRotate();\n }\n\n private clearSvgElement() {\n const layoutElement: HTMLElement = this.elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n // if (this._elementsWithExternalReferences) {\n // this._elementsWithExternalReferences.clear();\n // }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n layoutElement.removeChild(child);\n }\n }\n }\n\n //#endregion\n\n private buildIconNameByType(iconName: string) {\n if (this.iconType && ['fill', 'twotone'].indexOf(this.iconType) >= 0) {\n const suffix = iconSuffixMap[this.iconType];\n return iconName.includes(`-${suffix}`) ? iconName : `${iconName}-${suffix}`;\n } else {\n return iconName;\n }\n }\n\n /**\n * Support Safari SVG LinearGradient.\n * @param svg\n */\n private setBaseUrl(svg: SVGElement) {\n const styleElements = svg.querySelectorAll('style');\n styleElements.forEach((n: HTMLElement) => {\n if (n.style.cssText.includes('url')) {\n n.style.fill = n.style.fill.replace('url(\"', 'url(\"' + location.pathname);\n }\n if (n.style.cssText.includes('clip-path')) {\n n.style.clipPath = n.style.clipPath.replace('url(\"', 'url(\"' + location.pathname);\n }\n });\n }\n\n private clearTitleElement(svg: SVGElement) {\n const titleElement = svg.querySelector('title');\n titleElement && titleElement.remove();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ThyIcon } from './icon.component';\n\n@NgModule({\n declarations: [],\n exports: [ThyIcon],\n imports: [ThyIcon, CommonModule, FormsModule],\n providers: []\n})\nexport class ThyIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAAA,IAAI,sBAAsB,GAAG,IAAI;AAE3B,SAAU,6BAA6B,CAAC,KAAc,EAAA;IACxD,sBAAsB,GAAG,KAAK;AAClC;SAEgB,oCAAoC,GAAA;AAChD,IAAA,OAAO,sBAAsB;AACjC;;ACCA,MAAM,aAAa,CAAA;AAIf,IAAA,WAAA,CAAY,IAAkC,EAAA;;;QAG1C,IAAI,IAAI,IAAI,CAAC,CAAE,IAAY,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAkB;;aACjC;AACH,YAAA,IAAI,CAAC,GAAG,GAAG,IAAuB;;;AAG7C;AAQD;;AAEG;MAIU,eAAe,CAAA;AAH5B,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;QAChC,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE3B,IAAmB,CAAA,mBAAA,GAAG,SAAS;QAC/B,IAAgB,CAAA,gBAAA,GAAa,KAAK;AAClC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAyB;AACjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAA2B;AACtD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAA8B;AAsXvE;AApXG,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;;AAGxB,IAAA,wBAAwB,CAAC,QAAgB,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,CAAA,mCAAA,EAAsC,QAAQ,CAAA,CAAA,CAAG,CAAC;;AAG3D,IAAA,mCAAmC,CAAC,OAAgB,EAAA;QACxD,OAAO,KAAK,CACR,CAA0E,wEAAA,CAAA;YACtE,CAAkD,+CAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CACpE;;IAGG,qBAAqB,CAAC,SAAiB,EAAE,MAAqB,EAAA;QAClE,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;QAE7D,IAAI,eAAe,EAAE;AACjB,YAAA,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;aACzB;YACH,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGnD,QAAA,OAAO,IAAI;;AAGP,IAAA,QAAQ,CAAC,GAAe,EAAA;AAC5B,QAAA,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAe;;AAGpC,IAAA,QAAQ,CAAC,OAA+B,EAAA;AAC5C,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACjB,YAAA,MAAM,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,CAAA,EAAA,CAAI,CAAC;;AAG3D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC;AAE1E,QAAA,IAAI,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,CAAC,GAAG,EAAE;YACzD,MAAM,IAAI,KAAK,CACX,CAAwE,sEAAA,CAAA;gBACpE,CAAkD,+CAAA,EAAA,GAAG,CAAI,EAAA,CAAA,CAChE;;;;;QAML,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;QAE1D,IAAI,eAAe,EAAE;AACjB,YAAA,OAAO,eAAe;;aACnB;;;AAGH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAC/D,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACrD,KAAK,EAAE,CACV;YAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AACvC,YAAA,OAAO,GAAG;;;AAIV,IAAA,YAAY,CAAC,OAAgB,EAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAEpD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC/D,gBAAA,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;;AAI9D,QAAA,OAAO,GAAG;;IAGN,yBAAyB,CAAC,OAAmB,EAAE,QAAgB,EAAA;;;QAGnE,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAQ,KAAA,EAAA,QAAQ,CAAI,EAAA,CAAA,CAAC;QAE9D,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,OAAO,IAAI;;;;QAKf,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAY;AACzD,QAAA,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC;;;QAIjC,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAyB,CAAC;;;;;QAM3D,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;YACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;;;;;;;QAQhE,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;;AAEpD,QAAA,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC;AAE5B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;;IAG7B,qCAAqC,CAAC,QAAgB,EAAE,cAA+B,EAAA;;AAE3F,QAAA,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;AAChC,YAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACnB,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAC7E,IAAI,SAAS,EAAE;AACX,oBAAA,OAAO,SAAS;;;;AAI5B,QAAA,OAAO,IAAI;;AAGP,IAAA,oBAAoB,CAAC,GAAW,EAAA;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9C,QAAA,GAAG,CAAC,SAAS,GAAG,GAAG;QACnB,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAe;QAElD,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,MAAM,KAAK,CAAC,qBAAqB,CAAC;;AAGtC,QAAA,OAAO,GAAG;;AAGN,IAAA,gBAAgB,CAAC,GAAe,EAAA;AACpC,QAAA,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;AAC3B,QAAA,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;AACjC,QAAA,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AAChC,QAAA,GAAG,CAAC,YAAY,CAAC,qBAAqB,EAAE,eAAe,CAAC;QACxD,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACvC,QAAA,OAAO,GAAG;;AAGN,IAAA,6BAA6B,CAAC,YAAoB,EAAA;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;AACnD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC1B,QAAA,OAAO,GAAG;;AAGN,IAAA,qBAAqB,CAAC,MAAqB,EAAA;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;;AAG9F,IAAA,wBAAwB,CAAC,MAAqB,EAAA;;AAElD,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACnB,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACjC,GAAG,CAAC,OAAO,IAAG;;;AAGV,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBACpB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;;YAG1D,OAAO,MAAM,CAAC,UAAU;SAC3B,CAAC,CACL;;AAGG,IAAA,gBAAgB,CAAC,MAAqB,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;;YAEnB,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;aACxC;;AAEH,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,EACrC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACjC;;;IAID,wBAAwB,CAAC,IAAY,EAAE,cAA+B,EAAA;;;QAG1E,MAAM,SAAS,GAAG,IAAI,CAAC,qCAAqC,CAAC,IAAI,EAAE,cAAc,CAAC;QAElF,IAAI,SAAS,EAAE;;;;AAIX,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;;;;QAKxB,MAAM,oBAAoB,GAAoC;aACzD,MAAM,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,UAAU;aACjD,GAAG,CAAC,aAAa,IAAG;AACjB,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,IAAI,CACpD,UAAU,CAAC,CAAC,GAAsB,KAAmC;AACjE,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC;;;gBAIpF,OAAO,CAAC,KAAK,CAAC,CAAyB,sBAAA,EAAA,GAAG,CAAY,SAAA,EAAA,GAAG,CAAC,OAAO,CAAE,CAAA,CAAC;AACpE,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;aAClB,CAAC,CACL;AACL,SAAC,CAAC;;;QAIN,OAAO,QAAQ,CAAC,oBAAoB,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,MAAK;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,qCAAqC,CAAC,IAAI,EAAE,cAAc,CAAC;YAElF,IAAI,CAAC,SAAS,EAAE;AACZ,gBAAA,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;;AAG7C,YAAA,OAAO,SAAS;SACnB,CAAC,CACL;;AAGG,IAAA,wBAAwB,CAAC,SAAiB,EAAE,QAAgB,EAAE,MAAqB,EAAA;AACvF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;AACvE,QAAA,OAAO,IAAI;;IAGR,YAAY,CAAC,SAAiB,EAAE,IAAY,EAAA;AAC/C,QAAA,OAAO,SAAS,GAAG,GAAG,GAAG,IAAI;;AAG1B,IAAA,aAAa,CAAC,QAAgB,EAAA;QACjC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;;QAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,QAAA,QAAQ,KAAK,CAAC,MAAM;AAChB,YAAA,KAAK,CAAC;gBACF,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAA,KAAK,CAAC;AACF,gBAAA,OAAyB,KAAK;AAClC,YAAA;AACI,gBAAA,MAAM,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,CAAG,CAAC;;;IAIpD,wBAAwB,CAAC,SAAiB,EAAE,GAAmB,EAAA;QAClE,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,GAAG;AAC9E,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;;AAGxE;;AAEG;AACI,IAAA,aAAa,CAAC,GAAmB,EAAA;QACpC,OAAO,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,GAAG,CAAC;;IAG1C,+BAA+B,CAAC,SAAiB,EAAE,OAAiB,EAAA;AACvE,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QAE/E,IAAI,CAAC,gBAAgB,EAAE;AACnB,YAAA,MAAM,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC;;QAG3D,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;;AAGxE,IAAA,oBAAoB,CAAC,OAAiB,EAAA;QACzC,OAAO,IAAI,CAAC,+BAA+B,CAAC,EAAE,EAAE,OAAO,CAAC;;AAG5D;;;;;;AAMG;AACI,IAAA,qBAAqB,CAAC,SAAiB,EAAE,QAAgB,EAAE,GAAmB,EAAA;QACjF,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,GAAG,GAAG;AAC9E,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;;AAGrF;;;;;AAKG;IACI,UAAU,CAAC,QAAgB,EAAE,GAAmB,EAAA;QACnD,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC;;AAGxD;;;;;AAKG;IACI,iBAAiB,CAAC,QAAgB,EAAE,OAAgB,EAAA;QACvD,OAAO,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;;AAGnE;;;;;;AAMG;AACI,IAAA,4BAA4B,CAAC,SAAiB,EAAE,QAAgB,EAAE,OAAgB,EAAA;QACrF,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,OAAO;AACvF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QAE/E,IAAI,CAAC,gBAAgB,EAAE;AACnB,YAAA,MAAM,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC;;QAG3D,MAAM,UAAU,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC;AACvE,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;;IAGrF,sBAAsB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB;;AAG5B,IAAA,sBAAsB,CAAC,OAAe,EAAA;AACzC,QAAA,OAAO,OAAO;;AAGlB;;AAEG;AACI,IAAA,UAAU,CAAC,IAAY,EAAE,SAAA,GAAoB,EAAE,EAAA;;QAElD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAE3C,IAAI,MAAM,EAAE;AACR,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;;;QAIxC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;QAE5D,IAAI,cAAc,EAAE;YAChB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,cAAc,CAAC;;QAG9D,OAAO,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;;AAGlD,IAAA,WAAW,CAAC,IAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;8GA7XvB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACbD,MAAM,aAAa,GAAG;AAClB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE;CACZ;AAED;;;;AAIG;MAWU,OAAO,CAAA;AAVpB,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;QAEtC,IAAW,CAAA,WAAA,GAAG,KAAK;AAE3B;;;AAGG;QACmB,IAAQ,CAAA,QAAA,GAAmC,SAAS;QA4BlE,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE;AAsJ3C;IApJG,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;AAG3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IACI,OAAO,CAAC,UAAU,CAAC;gBACnB,OAAO,CAAC,SAAS,CAAC;gBAClB,OAAO,CAAC,kBAAkB,CAAC;gBAC3B,OAAO,CAAC,UAAU,CAAC;AACnB,gBAAA,OAAO,CAAC,oBAAoB,CAAC,EAC/B;gBACE,IAAI,CAAC,aAAa,EAAE;;AACjB,iBAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gBAC9B,IAAI,CAAC,cAAc,EAAE;;;;IAKzB,aAAa,GAAA;AACjB,QAAA,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC5E,IAAI,QAAQ,EAAE;YACV,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC;qBACA,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,SAAS;AACxD,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;qBACZ,SAAS,CACN,GAAG,IAAG;AACF,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAC3B,iBAAC,EACD,CAAC,KAAY,KAAI;oBACb,IAAI,oCAAoC,EAAE,EAAE;wBACxC,OAAO,CAAC,KAAK,CAAC,CAAA,uBAAA,EAA0B,KAAK,CAAC,OAAO,CAAE,CAAA,CAAC;;AAEhE,iBAAC,CACJ;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAW,QAAA,EAAA,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,GAAG,CAAA,CAAE,CAAI,CAAA,EAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA,CAAE,CAAC,CAAC;;iBACjH;AACH,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC;sBACpB,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO;AACvD,sBAAE,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE;AAChD,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,CAAG,EAAA,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAE,CAAA,CAAC,CAAC;;;;IAKrF,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,UAAU,CAAM,IAAA,CAAA,CAAC;;;;AAMtH,IAAA,aAAa,CAAC,GAAe,EAAA;QACjC,IAAI,CAAC,eAAe,EAAE;;;;QAKtB,MAAM,SAAS,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAiC;AAE/E,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG;;AAGnC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7C,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAa,KAAI;AACtC,oBAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;wBACtD,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC;;AAEzD,iBAAC,CAAC;;;;;;;;;;;AAYV,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;;QAG/B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE;;IAGjB,eAAe,GAAA;AACnB,QAAA,MAAM,aAAa,GAAgB,IAAI,CAAC,UAAU,CAAC,aAAa;AAChE,QAAA,IAAI,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM;;;;;;QAQhD,OAAO,UAAU,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;;;AAIlD,YAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;AAChE,gBAAA,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;;;;;AAOpC,IAAA,mBAAmB,CAAC,QAAgB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA,CAAE,CAAC,GAAG,QAAQ,GAAG,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,MAAM,EAAE;;aACxE;AACH,YAAA,OAAO,QAAQ;;;AAIvB;;;AAGG;AACK,IAAA,UAAU,CAAC,GAAe,EAAA;QAC9B,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAc,KAAI;YACrC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACjC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;;YAE7E,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACvC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;;AAEzF,SAAC,CAAC;;AAGE,IAAA,iBAAiB,CAAC,GAAe,EAAA;QACrC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/C,QAAA,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;;8GA3LhC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,uPAwB4B,eAAe,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EASd,qBAAqB,CAGd,EAAA,kBAAA,EAAA,CAAA,uBAAA,EAAA,oBAAA,EAAA,qBAAqB,sJA5C/D,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQ5B,OAAO,EAAA,UAAA,EAAA,CAAA;kBAVnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;8BAYyB,QAAQ,EAAA,CAAA;sBAA7B,KAAK;uBAAC,aAAa;gBAEM,gBAAgB,EAAA,CAAA;sBAAzC,KAAK;uBAAC,iBAAiB;gBAKF,QAAQ,EAAA,CAAA;sBAA7B,KAAK;uBAAC,aAAa;gBAM2C,UAAU,EAAA,CAAA;sBAAxE,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE;gBAExC,OAAO,EAAA,CAAA;sBAA3B,KAAK;uBAAC,YAAY;gBAQnB,WAAW,EAAA,CAAA;sBAFV,WAAW;uBAAC,CAAwB,sBAAA,CAAA;;sBACpC,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAIpE,kBAAkB,EAAA,CAAA;sBADjB,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,qBAAqB,EAAE;;;MCnElE,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAHZ,OAAO,EAAE,YAAY,EAAE,WAAW,aADlC,OAAO,CAAA,EAAA,CAAA,CAAA;+GAIR,aAAa,EAAA,OAAA,EAAA,CAHH,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAGnC,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,OAAO,CAAC;AAClB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC;AAC7C,oBAAA,SAAS,EAAE;AACd,iBAAA;;;ACVD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngx-tethys-icon.mjs","sources":["../../../src/icon/config.ts","../../../src/icon/icon-registry.ts","../../../src/icon/icon.component.ts","../../../src/icon/icon.module.ts","../../../src/icon/ngx-tethys-icon.ts"],"sourcesContent":["let printErrorWhenNotFound = true;\n\nexport function setPrintErrorWhenIconNotFound(value: boolean) {\n printErrorWhenNotFound = value;\n}\n\nexport function getWhetherPrintErrorWhenIconNotFound() {\n return printErrorWhenNotFound;\n}\n","import { forkJoin, Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, map, share, tap } from 'rxjs/operators';\n\nimport { DOCUMENT } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Injectable, SecurityContext, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { isString } from 'ngx-tethys/util';\n\nclass SvgIconConfig {\n url: SafeResourceUrl | null;\n svgElement: SVGElement | null;\n\n constructor(data: SafeResourceUrl | SVGElement) {\n // Note that we can't use `instanceof SVGElement` here,\n // because it'll break during server-side rendering.\n if (data && !!(data as any).nodeName) {\n this.svgElement = data as SVGElement;\n } else {\n this.url = data as SafeResourceUrl;\n }\n }\n}\n\nexport type IconMode = 'font' | 'svg';\n\nexport type SvgResourceUrl = SafeResourceUrl | string;\n\nexport type SvgHtml = SafeHtml | string;\n\n/**\n * @order 20\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyIconRegistry {\n private sanitizer = inject(DomSanitizer);\n private httpClient = inject(HttpClient, { optional: false });\n private document = inject(DOCUMENT);\n\n private defaultFontSetClass = 'wt-icon';\n private internalIconMode: IconMode = 'svg';\n private svgIconConfigs = new Map<string, SvgIconConfig>();\n private svgIconSetConfigs = new Map<string, SvgIconConfig[]>();\n private inProgressUrlFetches = new Map<string, Observable<string>>();\n\n public get iconMode() {\n return this.internalIconMode;\n }\n\n private getIconNameNotFoundError(iconName: string): Error {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n }\n\n private getIconFailedToSanitizeLiteralError(literal: SvgHtml): Error {\n return Error(\n `The literal provided to ThyIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`\n );\n }\n\n private internalAddSvgIconSet(namespace: string, config: SvgIconConfig): this {\n const configNamespace = this.svgIconSetConfigs.get(namespace);\n\n if (configNamespace) {\n configNamespace.push(config);\n } else {\n this.svgIconSetConfigs.set(namespace, [config]);\n }\n\n return this;\n }\n\n private cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n }\n\n private fetchUrl(safeUrl: SafeResourceUrl | null): Observable<string> {\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n\n const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !url) {\n throw new Error(\n `The URL provided to ThyIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`\n );\n }\n\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this.inProgressUrlFetches.get(url);\n\n if (inProgressFetch) {\n return inProgressFetch;\n } else {\n // TODO(jelbourn): for some reason, the `finalize` operator \"loses\" the generic type on the\n // Observable. Figure out why and fix it.\n const req = this.httpClient.get(url, { responseType: 'text' }).pipe(\n finalize(() => this.inProgressUrlFetches.delete(url)),\n share()\n );\n\n this.inProgressUrlFetches.set(url, req);\n return req;\n }\n }\n\n private toSvgElement(element: Element): SVGElement {\n const svg = this.svgElementFromString('<svg></svg>');\n\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this.document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n\n return svg;\n }\n\n private extractSvgIconFromIconSet(iconSet: SVGElement, iconName: string): SVGElement | null {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n\n if (!iconSource) {\n return null;\n }\n\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true) as Element;\n iconElement.removeAttribute('id');\n\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this.setSvgAttributes(iconElement as SVGElement);\n }\n\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this.setSvgAttributes(this.toSvgElement(iconElement));\n }\n\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this.svgElementFromString('<svg></svg>');\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n\n return this.setSvgAttributes(svg);\n }\n\n private extractIconWithNameFromIconSetConfigs(iconName: string, iconSetConfigs: SvgIconConfig[]): SVGElement | null {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n if (config.svgElement) {\n const foundIcon = this.extractSvgIconFromIconSet(config.svgElement, iconName);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n\n private svgElementFromString(str: string): SVGElement {\n const div = this.document.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n\n return svg;\n }\n\n private setSvgAttributes(svg: SVGElement): SVGElement {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '1em');\n svg.setAttribute('width', '1em');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n return svg;\n }\n\n private createSvgElementForSingleIcon(responseText: string): SVGElement {\n const svg = this.svgElementFromString(responseText);\n this.setSvgAttributes(svg);\n return svg;\n }\n\n private loadSvgIconFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n return this.fetchUrl(config.url).pipe(map(svgText => this.createSvgElementForSingleIcon(svgText)));\n }\n\n private loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n // If the SVG for this icon set has already been parsed, do nothing.\n if (config.svgElement) {\n return of(config.svgElement);\n }\n\n return this.fetchUrl(config.url).pipe(\n map(svgText => {\n // It is possible that the icon set was parsed and cached by an earlier request, so parsing\n // only needs to occur if the cache is yet unset.\n if (!config.svgElement) {\n config.svgElement = this.svgElementFromString(svgText);\n }\n\n return config.svgElement;\n })\n );\n }\n\n private getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n if (config.svgElement) {\n // We already have the SVG element for this icon, return a copy.\n return of(this.cloneSvg(config.svgElement));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this.loadSvgIconFromConfig(config).pipe(\n tap(svg => (config.svgElement = svg)),\n map(svg => this.cloneSvg(svg))\n );\n }\n }\n\n private getSvgFromIconSetConfigs(name: string, iconSetConfigs: SvgIconConfig[]): Observable<SVGElement> {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this.extractIconWithNameFromIconSetConfigs(name, iconSetConfigs);\n\n if (namedIcon) {\n // We could cache namedIcon in svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return of(namedIcon);\n }\n\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests: Observable<SVGElement | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgElement)\n .map(iconSetConfig => {\n return this.loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse): Observable<SVGElement | null> => {\n const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n console.error(`Loading icon set URL: ${url} failed: ${err.message}`);\n return of(null);\n })\n );\n });\n\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(\n map(() => {\n const foundIcon = this.extractIconWithNameFromIconSetConfigs(name, iconSetConfigs);\n\n if (!foundIcon) {\n throw this.getIconNameNotFoundError(name);\n }\n\n return foundIcon;\n })\n );\n }\n\n private internalAddSvgIconConfig(namespace: string, iconName: string, config: SvgIconConfig): this {\n this.svgIconConfigs.set(this.buildIconKey(namespace, iconName), config);\n return this;\n }\n\n public buildIconKey(namespace: string, name: string) {\n return namespace + ':' + name;\n }\n\n public splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return <[string, string]>parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`);\n }\n }\n\n public addSvgIconSetInNamespace(namespace: string, url: SvgResourceUrl): this {\n url = isString(url) ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : url;\n return this.internalAddSvgIconSet(namespace, new SvgIconConfig(url));\n }\n\n /**\n * 添加SVG图标集,添加到默认命名空间\n */\n public addSvgIconSet(url: SvgResourceUrl): this {\n return this.addSvgIconSetInNamespace('', url);\n }\n\n public addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml): this {\n const sanitizedLiteral = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitizedLiteral) {\n throw this.getIconFailedToSanitizeLiteralError(literal);\n }\n\n const svgElement = this.svgElementFromString(sanitizedLiteral);\n return this.internalAddSvgIconSet(namespace, new SvgIconConfig(svgElement));\n }\n\n public addSvgIconSetLiteral(literal: SafeHtml): this {\n return this.addSvgIconSetLiteralInNamespace('', literal);\n }\n\n /**\n * @description.en-us Registers an icon by URL in the specified namespace.\n * @description 添加单个SVG图标到指定的命名空间\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n public addSvgIconInNamespace(namespace: string, iconName: string, url: SvgResourceUrl): this {\n url = isString(url) ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : url;\n return this.internalAddSvgIconConfig(namespace, iconName, new SvgIconConfig(url));\n }\n\n /**\n * @description.en-us Registers an icon by URL in the default namespace.\n * @description 添加单个SVG图标\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n public addSvgIcon(iconName: string, url: SvgResourceUrl): this {\n return this.addSvgIconInNamespace('', iconName, url);\n }\n\n /**\n * @description.en-us Registers an icon using an HTML string in the default namespace.\n * @description 添加单个SVG图标字符串,直接传入 SVG HTML 字符串\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n public addSvgIconLiteral(iconName: string, literal: SvgHtml): this {\n return this.addSvgIconLiteralInNamespace('', iconName, literal);\n }\n\n /**\n * @description.en-us Registers an icon using an HTML string in the specified namespace.\n * @description 添加单个SVG图标字符串到指定的命名空间,直接传入 SVG HTML 字符串\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n public addSvgIconLiteralInNamespace(namespace: string, iconName: string, literal: SvgHtml): this {\n literal = isString(literal) ? this.sanitizer.bypassSecurityTrustHtml(literal) : literal;\n const sanitizedLiteral = this.sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!sanitizedLiteral) {\n throw this.getIconFailedToSanitizeLiteralError(literal);\n }\n\n const svgElement = this.createSvgElementForSingleIcon(sanitizedLiteral);\n return this.internalAddSvgIconConfig(namespace, iconName, new SvgIconConfig(svgElement));\n }\n\n public getDefaultFontSetClass() {\n return this.defaultFontSetClass;\n }\n\n public getFontSetClassByAlias(fontSet: string) {\n return fontSet;\n }\n\n /**\n * 获取某个图标\n */\n public getSvgIcon(name: string, namespace: string = ''): Observable<SVGElement> {\n // Return (copy of) cached icon if possible.\n const key = this.buildIconKey(namespace, name);\n const config = this.svgIconConfigs.get(key);\n\n if (config) {\n return this.getSvgFromConfig(config);\n }\n\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this.svgIconSetConfigs.get(namespace);\n\n if (iconSetConfigs) {\n return this.getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n\n return throwError(this.getIconNameNotFoundError(key));\n }\n\n public setIconMode(mode: IconMode) {\n this.internalIconMode = mode;\n }\n}\n","import { take } from 'rxjs/operators';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewEncapsulation,\n numberAttribute,\n inject\n} from '@angular/core';\n\nimport { getWhetherPrintErrorWhenIconNotFound } from './config';\nimport { ThyIconRegistry } from './icon-registry';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst iconSuffixMap = {\n fill: 'fill',\n twotone: 'tt'\n};\n\n/**\n * 图标组件\n * @name thy-icon,[thy-icon]\n * @order 10\n */\n@Component({\n selector: 'thy-icon, [thy-icon]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-icon'\n }\n})\nexport class ThyIcon implements OnInit, OnChanges {\n private render = inject(Renderer2);\n private elementRef = inject(ElementRef);\n private iconRegistry = inject(ThyIconRegistry);\n\n private initialized = false;\n\n /**\n * 图标的类型\n * @type outline | fill | twotone\n */\n @Input('thyIconType') iconType: 'outline' | 'fill' | 'twotone' = 'outline';\n\n @Input('thyTwotoneColor') iconTwotoneColor: string;\n\n /**\n * 图标的名字\n */\n @Input('thyIconName') iconName: string;\n\n /**\n * 图标的旋转角度\n * @default 0\n */\n @Input({ alias: 'thyIconRotate', transform: numberAttribute }) iconRotate: number;\n\n @Input('thyIconSet') iconSet: string;\n\n /**\n * 图标打底色,镂空的图标,会透过颜色来\n * @default false\n */\n @HostBinding(`class.thy-icon-legging`)\n @Input({ alias: 'thyIconLegging', transform: coerceBooleanProperty })\n iconLegging: boolean;\n\n @Input({ alias: 'thyIconLinearGradient', transform: coerceBooleanProperty })\n iconLinearGradient: boolean;\n\n private hostRenderer = useHostRenderer();\n\n ngOnInit() {\n this.updateClasses();\n this.initialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.initialized) {\n if (\n changes['iconName'] ||\n changes['iconSet'] ||\n changes['iconTwotoneColor'] ||\n changes['iconType'] ||\n changes['iconLinearGradient']\n ) {\n this.updateClasses();\n } else if (changes['iconRotate']) {\n this.setStyleRotate();\n }\n }\n }\n\n private updateClasses() {\n const [namespace, iconName] = this.iconRegistry.splitIconName(this.iconName);\n if (iconName) {\n if (this.iconRegistry.iconMode === 'svg') {\n this.iconRegistry\n .getSvgIcon(this.buildIconNameByType(iconName), namespace)\n .pipe(take(1))\n .subscribe(\n svg => {\n this.setSvgElement(svg);\n },\n (error: Error) => {\n if (getWhetherPrintErrorWhenIconNotFound()) {\n console.error(`Error retrieving icon: ${error.message}`);\n }\n }\n );\n this.hostRenderer.updateClass([`thy-icon${namespace ? `-${namespace}` : ``}-${this.buildIconNameByType(iconName)}`]);\n } else {\n const fontSetClass = this.iconSet\n ? this.iconRegistry.getFontSetClassByAlias(this.iconSet)\n : this.iconRegistry.getDefaultFontSetClass();\n this.hostRenderer.updateClass([fontSetClass, `${fontSetClass}-${this.iconName}`]);\n }\n }\n }\n\n private setStyleRotate() {\n if (this.iconRotate !== undefined) {\n this.render.setStyle(this.elementRef.nativeElement.querySelector('svg'), 'transform', `rotate(${this.iconRotate}deg)`);\n }\n }\n\n //#region svg element\n\n private setSvgElement(svg: SVGElement) {\n this.clearSvgElement();\n\n // Workaround for IE11 and Edge ignoring `style` tags inside dynamically-created SVGs.\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/\n // Do this before inserting the element into the DOM, in order to avoid a style recalculation.\n const styleTags = svg.querySelectorAll('style') as NodeListOf<HTMLStyleElement>;\n\n for (let i = 0; i < styleTags.length; i++) {\n styleTags[i].textContent += ' ';\n }\n\n if (this.iconType === 'twotone') {\n const allPaths = svg.querySelectorAll('path');\n if (allPaths.length > 1) {\n allPaths.forEach((child, index: number) => {\n if (child.getAttribute('id').includes('secondary-color')) {\n child.setAttribute('fill', this.iconTwotoneColor);\n }\n });\n }\n }\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n // if (this._location) {\n // const path = this._location.getPathname();\n // this._previousPath = path;\n // this._cacheChildrenWithExternalReferences(svg);\n // this._prependPathToReferences(path);\n // }\n if (this.iconLinearGradient) {\n this.setBaseUrl(svg);\n this.clearTitleElement(svg);\n }\n\n this.elementRef.nativeElement.appendChild(svg);\n this.setStyleRotate();\n }\n\n private clearSvgElement() {\n const layoutElement: HTMLElement = this.elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n // if (this._elementsWithExternalReferences) {\n // this._elementsWithExternalReferences.clear();\n // }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n layoutElement.removeChild(child);\n }\n }\n }\n\n //#endregion\n\n private buildIconNameByType(iconName: string) {\n if (this.iconType && ['fill', 'twotone'].indexOf(this.iconType) >= 0) {\n const suffix = iconSuffixMap[this.iconType];\n return iconName.includes(`-${suffix}`) ? iconName : `${iconName}-${suffix}`;\n } else {\n return iconName;\n }\n }\n\n /**\n * Support Safari SVG LinearGradient.\n * @param svg\n */\n private setBaseUrl(svg: SVGElement) {\n const styleElements = svg.querySelectorAll('style');\n styleElements.forEach((n: HTMLElement) => {\n if (n.style.cssText.includes('url')) {\n n.style.fill = n.style.fill.replace('url(\"', 'url(\"' + location.pathname);\n }\n if (n.style.cssText.includes('clip-path')) {\n n.style.clipPath = n.style.clipPath.replace('url(\"', 'url(\"' + location.pathname);\n }\n });\n }\n\n private clearTitleElement(svg: SVGElement) {\n const titleElement = svg.querySelector('title');\n titleElement && titleElement.remove();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ThyIcon } from './icon.component';\n\n@NgModule({\n declarations: [],\n exports: [ThyIcon],\n imports: [ThyIcon, CommonModule, FormsModule],\n providers: []\n})\nexport class ThyIconModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}