@beppla/tapas-ui 1.0.67 → 1.0.68

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 (255) hide show
  1. package/commonjs/AnimatedNavItem/index.js +15 -9
  2. package/commonjs/BarChart/BarChart.js +90 -112
  3. package/commonjs/BarChart/BarChart.js.map +1 -1
  4. package/commonjs/Button/Button.js +78 -96
  5. package/commonjs/Calendar/Calendar.base.js +190 -162
  6. package/commonjs/Calendar/Calendar.base.js.map +2 -1
  7. package/commonjs/Calendar/Calendar.js +102 -86
  8. package/commonjs/Calendar/Calendar.js.map +1 -2
  9. package/commonjs/Calendar/ConcreteTimeSelector.js +271 -220
  10. package/commonjs/Calendar/CustomRange.js +324 -271
  11. package/commonjs/Calendar/CustomRange.js.map +2 -1
  12. package/commonjs/Calendar/MonthSelector.js.map +2 -1
  13. package/commonjs/Calendar/TimeSelector.js +274 -223
  14. package/commonjs/Calendar/TimeSelector.js.map +2 -1
  15. package/commonjs/Calendar/WeekDaySelector.js.map +2 -1
  16. package/commonjs/Calendar/helper.js +68 -68
  17. package/commonjs/Calendar/local.js +2 -2
  18. package/commonjs/Calendar/local.js.map +1 -2
  19. package/commonjs/Calendar/types.js +11 -11
  20. package/commonjs/Card/Card.js +150 -159
  21. package/commonjs/Card/Card.js.map +1 -2
  22. package/commonjs/CheckBox/GroupCheckBox.js +80 -67
  23. package/commonjs/CheckBox/GroupCheckBox.js.map +1 -2
  24. package/commonjs/CircularProgress/CircularProgress.js +0 -11
  25. package/commonjs/Collapsible/Collapsible.js +102 -55
  26. package/commonjs/Collapsible/Collapsible.js.map +1 -2
  27. package/commonjs/DashboardCard/DashboardCard.js +94 -74
  28. package/commonjs/DashboardCard/DashboardCard.js.map +1 -2
  29. package/commonjs/DataCell/DataCell.js +205 -259
  30. package/commonjs/DataCell/DataCell.js.map +1 -1
  31. package/commonjs/DataCell/index.js.map +1 -2
  32. package/commonjs/DataTable/DataTable.js +136 -141
  33. package/commonjs/DataTable/DataTable.js.map +2 -1
  34. package/commonjs/DeviceSelectionModal/DeviceSelectionModal.js +244 -242
  35. package/commonjs/DeviceSelectionModal/DeviceSelectionModal.js.map +2 -1
  36. package/commonjs/DraggableFlatList/DraggableFlatList.js +10 -12
  37. package/commonjs/DraggableFlatList/DraggableFlatList.js.map +1 -1
  38. package/commonjs/Drawer/Drawer.js +140 -159
  39. package/commonjs/Drawer/Drawer.js.map +1 -2
  40. package/commonjs/Dropdown/InputDropdown.js +123 -114
  41. package/commonjs/Dropdown/InputDropdown.js.map +1 -2
  42. package/commonjs/ExternalLink/ExternalLink.js +50 -58
  43. package/commonjs/ExternalLink/ExternalLink.js.map +2 -1
  44. package/commonjs/Gantt/Accessories.js +168 -135
  45. package/commonjs/Gantt/Accessories.js.map +2 -1
  46. package/commonjs/Gantt/GanttInnerElementType.js +102 -93
  47. package/commonjs/Gantt/GanttInnerElementType.js.map +1 -2
  48. package/commonjs/Gantt/types.js.map +2 -1
  49. package/commonjs/Grid/FixedSizeGrid.js +76 -82
  50. package/commonjs/Grid/Grid.base.js +374 -357
  51. package/commonjs/Grid/Grid.base.js.map +1 -1
  52. package/commonjs/Grid/StaticFixedSizeGrid.js.map +1 -2
  53. package/commonjs/Grid/VariableSizeGrid.js +113 -120
  54. package/commonjs/Grid/VariableSizeGrid.js.map +1 -2
  55. package/commonjs/Grid/helper.js.map +1 -2
  56. package/commonjs/Grid/timer.js +5 -9
  57. package/commonjs/Grid/timer.js.map +2 -1
  58. package/commonjs/Icons/TapasIconExpo.js +94 -101
  59. package/commonjs/Icons/TapasIconExpo.js.map +2 -1
  60. package/commonjs/Icons/fontLoader.js.map +1 -2
  61. package/commonjs/Icons/smartFontLoader.js +222 -266
  62. package/commonjs/Image/Image.js +96 -106
  63. package/commonjs/Image/Image.js.map +2 -1
  64. package/commonjs/Image/PreviewImg.js +63 -85
  65. package/commonjs/Layout/DrawerContext.js +35 -0
  66. package/commonjs/Layout/DrawerContext.js.map +1 -0
  67. package/commonjs/Layout/index.js +34 -38
  68. package/commonjs/Layout/index.js.map +2 -1
  69. package/commonjs/LineChart/LineChart.js +144 -126
  70. package/commonjs/Loading/Loading.js.map +0 -1
  71. package/commonjs/MessageBox/MessageBox.js +126 -127
  72. package/commonjs/MessageBox/MessageBox.js.map +1 -2
  73. package/commonjs/MultiSelector/MultiSelector.js.map +2 -1
  74. package/commonjs/MultiSelector/index.js +8 -3
  75. package/commonjs/MultiSelector/index.js.map +1 -1
  76. package/commonjs/Navigation/Navigation.js.map +0 -1
  77. package/commonjs/Notification/Notification.js.map +1 -2
  78. package/commonjs/Notification/index.js +8 -6
  79. package/commonjs/Notification/index.js.map +1 -2
  80. package/commonjs/NumericInput/NumericInput.js +0 -23
  81. package/commonjs/NumericInput/NumericInput.js.map +0 -1
  82. package/commonjs/Overlay/Overlay.js +30 -29
  83. package/commonjs/Overlay/Overlay.js.map +1 -2
  84. package/commonjs/Pagination/Pagination.js +139 -120
  85. package/commonjs/Pagination/Pagination.js.map +1 -2
  86. package/commonjs/PieChart/PieChart.js +97 -74
  87. package/commonjs/PieChart/PieChart.js.map +1 -2
  88. package/commonjs/PieChart/index.js +4 -3
  89. package/commonjs/PieChart/index.js.map +1 -2
  90. package/commonjs/Popover/Popover.js +137 -112
  91. package/commonjs/Popover/Popover.js.map +2 -1
  92. package/commonjs/Progress/Progress.js.map +1 -0
  93. package/commonjs/Quantity/Quantity.js +122 -117
  94. package/commonjs/Quantity/index.js +3 -0
  95. package/commonjs/Quantity/index.js.map +1 -0
  96. package/commonjs/RadioButton/RadioButton.js +46 -94
  97. package/commonjs/RadioButton/RadioButton.js.map +1 -1
  98. package/commonjs/ReasonModal/ReasonModal.js +122 -125
  99. package/commonjs/ReasonModal/ReasonModal.js.map +1 -2
  100. package/commonjs/ReasonModal/index.js +15 -9
  101. package/commonjs/ReasonModal/index.js.map +2 -1
  102. package/commonjs/ScanButton/ScanButton.js +64 -50
  103. package/commonjs/ScanButton/ScanButton.js.map +2 -1
  104. package/commonjs/SearchInput/index.js +8 -6
  105. package/commonjs/SearchInput/index.js.map +1 -2
  106. package/commonjs/Shell/Shell.js +92 -84
  107. package/commonjs/Shell/Shell.js.map +1 -2
  108. package/commonjs/StatisticCard/StatisticCard.js +47 -41
  109. package/commonjs/StatisticCard/StatisticCard.js.map +2 -1
  110. package/commonjs/Steps/Steps.js +43 -39
  111. package/commonjs/Steps/Steps.js.map +1 -1
  112. package/commonjs/TabTitle/TabTitle.js.map +2 -1
  113. package/commonjs/TableColumnHeader/TableColumnHeader.js +140 -134
  114. package/commonjs/TableColumnHeader/index.js +15 -9
  115. package/commonjs/TableColumnHeader/index.js.map +2 -1
  116. package/commonjs/Task/type.js.map +1 -2
  117. package/commonjs/TextArea/TextArea.js +82 -0
  118. package/commonjs/TextArea/TextArea.js.map +1 -0
  119. package/commonjs/Theme/ThemeProvider.js.map +2 -1
  120. package/commonjs/Theme/defaultTheme.js +18 -10
  121. package/commonjs/Theme/defaultTheme.js.map +1 -1
  122. package/commonjs/Toast/Toast.js +41 -94
  123. package/commonjs/Toast/Toast.js.map +1 -1
  124. package/commonjs/UserSwitcher/index.js +14 -8
  125. package/commonjs/UserSwitcher/index.js.map +2 -1
  126. package/commonjs/common.js +4 -5
  127. package/commonjs/common.js.map +1 -2
  128. package/commonjs/index.js +426 -336
  129. package/commonjs/index.js.map +2 -1
  130. package/module/Alert/Alert.js +51 -71
  131. package/module/Alert/Alert.js.map +1 -2
  132. package/module/AnimatedNavItem/index.js +3 -7
  133. package/module/AnimatedNavItem/index.js.map +2 -1
  134. package/module/BarChart/index.js.map +2 -1
  135. package/module/Button/Button.js +80 -71
  136. package/module/Button/Button.js.map +1 -2
  137. package/module/Button/ButtonGroup.js +129 -120
  138. package/module/Button/ButtonGroup.js.map +2 -1
  139. package/module/Calendar/Calendar.js +80 -76
  140. package/module/Calendar/ConcreteTimeSelector.js.map +1 -2
  141. package/module/Calendar/CustomRange.js +258 -357
  142. package/module/Calendar/DaySelector.js +95 -118
  143. package/module/Calendar/DaySelector.js.map +1 -2
  144. package/module/Calendar/TimeSelector.js +215 -307
  145. package/module/Calendar/WeekDaySelector.js +98 -122
  146. package/module/Calendar/helper.js +74 -74
  147. package/module/Calendar/helper.js.map +1 -2
  148. package/module/Calendar/types.js.map +2 -1
  149. package/module/Card/Card.js +0 -133
  150. package/module/Card/Card.js.map +0 -1
  151. package/module/CheckBox/CheckBox.js +93 -89
  152. package/module/CheckBox/CheckBox.js.map +1 -2
  153. package/module/CheckBox/CheckBoxItem.js +69 -84
  154. package/module/CheckBox/CheckBoxItem.js.map +1 -2
  155. package/module/Collapsible/Collapsible.js +66 -0
  156. package/module/Collapsible/Collapsible.js.map +1 -0
  157. package/module/DashboardCard/DashboardCard.js +80 -88
  158. package/module/DashboardCard/DashboardCard.js.map +2 -1
  159. package/module/DataCell/DataCell.js +311 -224
  160. package/module/DataTable/DataTable.js +0 -100
  161. package/module/DataTable/index.js +4 -2
  162. package/module/DeviceSelectionModal/DeviceSelectionModal.js +0 -124
  163. package/module/DeviceSelectionModal/DeviceSelectionModal.js.map +0 -1
  164. package/module/Dropdown/CustomDropdown.js +212 -160
  165. package/module/Dropdown/CustomDropdown.js.map +1 -1
  166. package/module/Dropdown/Dropdown.js +484 -408
  167. package/module/Dropdown/Dropdown.js.map +2 -1
  168. package/module/Dropdown/InputDropdown.js +116 -134
  169. package/module/Dropdown/InputDropdown.js.map +1 -2
  170. package/module/Gantt/Accessories.js +176 -149
  171. package/module/Gantt/Accessories.js.map +1 -1
  172. package/module/Gantt/Gantt.js.map +1 -2
  173. package/module/Gantt/types.js.map +2 -1
  174. package/module/Grid/FixedSizeGrid.js +80 -86
  175. package/module/Grid/FixedSizeGrid.js.map +1 -2
  176. package/module/Grid/Grid.base.js +339 -401
  177. package/module/Grid/Grid.base.js.map +1 -2
  178. package/module/Grid/VariableSizeGrid.js +121 -118
  179. package/module/Grid/VariableSizeGrid.js.map +2 -1
  180. package/module/Grid/helper.js.map +1 -2
  181. package/module/Grid/timer.js.map +2 -1
  182. package/module/HelloWave/HelloWave.js +43 -53
  183. package/module/HelloWave/HelloWave.js.map +1 -2
  184. package/module/Icons/TapasIcon.js +120 -96
  185. package/module/Icons/TapasIconExpo.js.map +1 -2
  186. package/module/Icons/index.js +9 -10
  187. package/module/Icons/index.js.map +2 -1
  188. package/module/Icons/smartFontLoader.js.map +1 -2
  189. package/module/Image/PreviewImg.js +76 -79
  190. package/module/Input/Input.js +34 -112
  191. package/module/Input/Input.js.map +1 -1
  192. package/module/Layout/DrawerContext.js +18 -29
  193. package/module/Layout/DrawerContext.js.map +1 -2
  194. package/module/Layout/Layout.js.map +1 -2
  195. package/module/Layout/ToastContext.js.map +1 -2
  196. package/module/Layout/index.js +14 -15
  197. package/module/LineChart/LineChart.js.map +1 -2
  198. package/module/ListItem/ListItem.js +98 -105
  199. package/module/ListItem/ListItem.js.map +2 -1
  200. package/module/Loading/Loading.js +67 -65
  201. package/module/Loading/Loading.js.map +1 -1
  202. package/module/MessageBox/MessageBox.js +137 -98
  203. package/module/MessageBox/MessageBox.js.map +2 -1
  204. package/module/MultiSelector/MultiSelector.js +229 -320
  205. package/module/MultiSelector/MultiSelector.js.map +1 -2
  206. package/module/MultiSelector/index.js +3 -2
  207. package/module/MultiSelector/index.js.map +1 -2
  208. package/module/Navigation/Navigation.js.map +1 -0
  209. package/module/Notification/index.js +0 -16
  210. package/module/Notification/index.js.map +0 -1
  211. package/module/NumericInput/NumericInput.js.map +0 -1
  212. package/module/Overlay/Overlay.js +0 -29
  213. package/module/Pagination/Pagination.js +139 -134
  214. package/module/Pagination/Pagination.js.map +2 -1
  215. package/module/PieChart/PieChart.js.map +2 -1
  216. package/module/Popover/Popover.js +117 -147
  217. package/module/Popover/Popover.js.map +1 -2
  218. package/module/Quantity/Quantity.js +112 -129
  219. package/module/Quantity/index.js +16 -0
  220. package/module/Quantity/index.js.map +1 -0
  221. package/module/ReasonModal/index.js +0 -27
  222. package/module/ScanButton/ScanButton.js +0 -45
  223. package/module/SearchInput/index.js +3 -2
  224. package/module/SearchInput/index.js.map +1 -2
  225. package/module/SheetTitle/SheetTitle.js +35 -40
  226. package/module/SheetTitle/SheetTitle.js.map +1 -2
  227. package/module/Shell/Shell.js +79 -92
  228. package/module/Shell/Shell.js.map +1 -2
  229. package/module/Shell/styles.js +8 -8
  230. package/module/Shell/styles.js.map +1 -2
  231. package/module/StatisticCard/StatisticCard.js +79 -48
  232. package/module/StatisticCard/StatisticCard.js.map +2 -1
  233. package/module/TabTitle/TabTitle.js.map +1 -2
  234. package/module/TableColumnHeader/TableColumnHeader.js.map +2 -1
  235. package/module/TableColumnHeader/index.js +3 -8
  236. package/module/Tag/Tag.js +87 -72
  237. package/module/Tag/Tag.js.map +2 -1
  238. package/module/Task/Task.js +108 -0
  239. package/module/Task/type.js.map +2 -1
  240. package/module/Text/Text.js +70 -80
  241. package/module/Text/Text.js.map +2 -1
  242. package/module/TextArea/TextArea.js +0 -119
  243. package/module/TextArea/TextArea.js.map +0 -1
  244. package/module/Theme/ThemeProvider.js.map +2 -1
  245. package/module/Theme/defaultTheme.js +0 -20
  246. package/module/Theme/defaultTheme.js.map +0 -1
  247. package/module/Timeline/Timeline.js +0 -54
  248. package/module/Timeline/Timeline.js.map +0 -1
  249. package/module/UserSwitcher/UserSwitcher.js +171 -130
  250. package/module/UserSwitcher/index.js +3 -5
  251. package/module/UserSwitcher/index.js.map +2 -1
  252. package/module/common.js +8 -7
  253. package/module/common.js.map +1 -2
  254. package/module/index.js +131 -120
  255. package/package.json +2 -2
@@ -1,39 +1,153 @@
1
1
  "use strict";
2
2
 
3
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function rejected(value) {
18
+ try {
19
+ step(generator["throw"](value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function step(result) {
25
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
26
+ }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
31
+ var _ = {
32
+ label: 0,
33
+ sent: function () {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ },
40
+ f,
41
+ y,
42
+ t,
43
+ g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
44
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () {
45
+ return this;
46
+ }), g;
47
+ function verb(n) {
48
+ return function (v) {
49
+ return step([n, v]);
50
+ };
51
+ }
52
+ function step(op) {
53
+ if (f) throw new TypeError("Generator is already executing.");
54
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
55
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
56
+ if (y = 0, t) op = [op[0] & 2, t.value];
57
+ switch (op[0]) {
58
+ case 0:
59
+ case 1:
60
+ t = op;
61
+ break;
62
+ case 4:
63
+ _.label++;
64
+ return {
65
+ value: op[1],
66
+ done: false
67
+ };
68
+ case 5:
69
+ _.label++;
70
+ y = op[1];
71
+ op = [0];
72
+ continue;
73
+ case 7:
74
+ op = _.ops.pop();
75
+ _.trys.pop();
76
+ continue;
77
+ default:
78
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
79
+ _ = 0;
80
+ continue;
81
+ }
82
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
83
+ _.label = op[1];
84
+ break;
85
+ }
86
+ if (op[0] === 6 && _.label < t[1]) {
87
+ _.label = t[1];
88
+ t = op;
89
+ break;
90
+ }
91
+ if (t && _.label < t[2]) {
92
+ _.label = t[2];
93
+ _.ops.push(op);
94
+ break;
95
+ }
96
+ if (t[2]) _.ops.pop();
97
+ _.trys.pop();
98
+ continue;
99
+ }
100
+ op = body.call(thisArg, _);
101
+ } catch (e) {
102
+ op = [6, e];
103
+ y = 0;
104
+ } finally {
105
+ f = t = 0;
106
+ }
107
+ if (op[0] & 5) throw op[1];
108
+ return {
109
+ value: op[0] ? op[1] : void 0,
110
+ done: true
111
+ };
112
+ }
113
+ };
114
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
115
+ return mod && mod.__esModule ? mod : {
116
+ "default": mod
117
+ };
118
+ };
3
119
  Object.defineProperty(exports, "__esModule", {
4
120
  value: true
5
121
  });
6
122
  exports.smartFontLoader = void 0;
7
123
  exports.useSmartFontLoader = useSmartFontLoader;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _reactNative = require("react-native");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
124
+ var react_1 = __importDefault(require("react"));
125
+ var react_native_1 = require("react-native");
11
126
  /**
12
127
  * 智能字体加载器
13
128
  * 自动检测环境并选择合适的字体加载策略
14
129
  */
15
- class SmartFontLoader {
16
- fontsLoaded = false;
17
- loading = false;
18
- listeners = [];
19
- fontPaths = [];
20
- constructor() {
130
+ var SmartFontLoader = /** @class */function () {
131
+ function SmartFontLoader() {
132
+ this.fontsLoaded = false;
133
+ this.loading = false;
134
+ this.listeners = [];
135
+ this.fontPaths = [];
21
136
  this.initFontPaths();
22
137
  this.init();
23
138
  }
24
- static getInstance() {
139
+ SmartFontLoader.getInstance = function () {
25
140
  if (!SmartFontLoader.instance) {
26
141
  SmartFontLoader.instance = new SmartFontLoader();
27
142
  }
28
143
  return SmartFontLoader.instance;
29
- }
30
-
144
+ };
31
145
  /**
32
146
  * 初始化字体路径列表
33
147
  * 根据不同的构建环境提供多个可能的路径
34
148
  */
35
- initFontPaths() {
36
- if (_reactNative.Platform.OS === 'web') {
149
+ SmartFontLoader.prototype.initFontPaths = function () {
150
+ if (react_native_1.Platform.OS === 'web') {
37
151
  // Web 环境的可能路径
38
152
  this.fontPaths = [
39
153
  // Storybook 环境
@@ -51,266 +165,108 @@ class SmartFontLoader {
51
165
  // 字体应该由使用组件库的应用来加载
52
166
  this.fontPaths = [];
53
167
  }
54
- }
55
-
168
+ };
56
169
  /**
57
170
  * 初始化字体加载器
58
171
  */
59
- async init() {
60
- if (_reactNative.Platform.OS !== 'web') {
61
- // React Native 环境,组件库不直接加载字体
62
- // 字体应该由使用组件库的应用来加载
63
- console.log('TapasIcon: 字体加载应由应用端处理,请确保在应用中加载 icomoon 字体');
64
- this.fontsLoaded = true;
65
- this.notifyListeners();
66
- return;
67
- }
68
- try {
69
- await this.loadWebFont();
70
- } catch (error) {
71
- console.warn('字体加载失败,将使用备用图标:', error);
72
- // 即使失败也标记为已加载,使用备用图标
73
- this.fontsLoaded = true;
74
- this.notifyListeners();
75
- }
76
- }
77
-
78
- /**
79
- * 在 Web 环境中加载字体
80
- */
81
- async loadWebFont() {
82
- // 检查 Web 环境是否可用
83
- if (typeof window === 'undefined' || typeof document === 'undefined') {
84
- console.warn('Web环境不可用,跳过字体加载');
85
- this.fontsLoaded = true;
86
- this.notifyListeners();
87
- return;
88
- }
89
- const doc = document;
90
-
91
- // 检查字体是否已经加载
92
- if (doc.fonts && doc.fonts.check('1em icomoon')) {
93
- this.fontsLoaded = true;
94
- this.notifyListeners();
95
- return;
96
- }
97
- this.loading = true;
98
- try {
99
- let fontLoaded = false;
100
-
101
- // 检查FontFace API是否可用
102
- if (typeof FontFace !== 'undefined') {
103
- // 尝试所有可能的字体路径
104
- for (const path of this.fontPaths) {
105
- try {
106
- const font = new FontFace('icomoon', `url(${path})`);
107
- await font.load();
108
- doc.fonts.add(font);
109
- fontLoaded = true;
110
- console.log(`字体加载成功: ${path}`);
111
- break;
112
- } catch (error) {
113
- console.warn(`字体路径加载失败: ${path}`, error);
114
- continue;
115
- }
116
- }
117
- } else {
118
- console.warn('FontFace API不可用,使用CSS方式加载字体');
119
- this.loadFontWithCSS(doc);
120
- return;
121
- }
122
- if (!fontLoaded) {
123
- // 如果所有路径都失败,尝试动态检测
124
- await this.detectAndLoadFont(doc);
125
- }
126
-
127
- // 等待字体完全加载
128
- await this.waitForFontLoad(doc);
129
- this.fontsLoaded = true;
130
- this.loading = false;
131
- this.notifyListeners();
132
- } catch (error) {
133
- this.loading = false;
134
- throw error;
135
- }
136
- }
137
-
138
- /**
139
- * 动态检测并加载字体
140
- */
141
- async detectAndLoadFont(doc) {
142
- // 尝试从已加载的样式中检测字体路径
143
- const stylesheets = doc.styleSheets;
144
- for (let i = 0; i < stylesheets.length; i++) {
145
- try {
146
- const rules = stylesheets[i].cssRules || stylesheets[i].rules;
147
- for (let j = 0; j < rules.length; j++) {
148
- const rule = rules[j];
149
- if (rule.type === CSSRule.FONT_FACE_RULE) {
150
- const src = rule.style.getPropertyValue('src');
151
- if (src && src.includes('customfont')) {
152
- // 提取字体URL
153
- const urlMatch = src.match(/url\(['"]?([^'"]+)['"]?\)/);
154
- if (urlMatch) {
155
- const fontUrl = urlMatch[1];
156
- const FontFace = globalThis.FontFace;
157
- const font = new FontFace('icomoon', `url(${fontUrl})`);
158
- await font.load();
159
- doc.fonts.add(font);
160
- console.log(`动态检测字体加载成功: ${fontUrl}`);
161
- return;
162
- }
172
+ SmartFontLoader.prototype.init = function () {
173
+ return __awaiter(this, void 0, void 0, function () {
174
+ var error_1;
175
+ return __generator(this, function (_a) {
176
+ switch (_a.label) {
177
+ case 0:
178
+ if (react_native_1.Platform.OS !== 'web') {
179
+ // React Native 环境,组件库不直接加载字体
180
+ // 字体应该由使用组件库的应用来加载
181
+ console.log('TapasIcon: 字体加载应由应用端处理,请确保在应用中加载 icomoon 字体');
182
+ this.fontsLoaded = true;
183
+ this.notifyListeners();
184
+ return [2 /*return*/];
163
185
  }
164
- }
165
- }
166
- } catch (error) {
167
- // 跨域或其他错误,继续尝试下一个
168
- continue;
169
- }
170
- }
171
- throw new Error('无法找到可用的字体文件');
172
- }
173
-
174
- /**
175
- * 等待字体完全加载
176
- */
177
- async waitForFontLoad(doc) {
178
- if (doc.fonts && doc.fonts.ready) {
179
- await doc.fonts.ready;
180
- } else {
181
- // 降级处理,等待一段时间
182
- await new Promise(resolve => setTimeout(resolve, 1000));
183
- }
184
- }
185
-
186
- /**
187
- * 添加字体加载完成监听器
188
- */
189
- addListener(listener) {
190
- this.listeners.push(listener);
191
-
192
- // 如果字体已经加载,立即调用监听器
193
- if (this.fontsLoaded) {
194
- listener();
195
- }
196
-
197
- // 返回取消监听的函数
198
- return () => {
199
- const index = this.listeners.indexOf(listener);
200
- if (index > -1) {
201
- this.listeners.splice(index, 1);
202
- }
203
- };
204
- }
205
-
206
- /**
207
- * 使用 CSS @font-face 加载字体
208
- */
209
- loadFontWithCSS(doc) {
210
- try {
211
- const style = doc.createElement('style');
212
- style.textContent = `
213
- @font-face {
214
- font-family: 'icomoon';
215
- src: url('/assets/fonts/customfont.ttf') format('truetype');
216
- font-weight: normal;
217
- font-style: normal;
218
- font-display: swap;
186
+ _a.label = 1;
187
+ case 1:
188
+ _a.trys.push([1, 3,, 4]);
189
+ return [4 /*yield*/, this.loadWebFont()];
190
+ case 2:
191
+ _a.sent();
192
+ return [3 /*break*/, 4];
193
+ case 3:
194
+ error_1 = _a.sent();
195
+ console.warn('字体加载失败,将使用备用图标:', error_1);
196
+ // 即使失败也标记为已加载,使用备用图标
197
+ this.fontsLoaded = true;
198
+ this.notifyListeners();
199
+ return [3 /*break*/, 4];
200
+ case 4:
201
+ return [2 /*return*/];
219
202
  }
220
- `;
221
- doc.head.appendChild(style);
222
-
223
- // 监听字体加载完成
224
- if (doc.fonts && doc.fonts.ready) {
225
- doc.fonts.ready.then(() => {
226
- this.fontsLoaded = true;
227
- this.notifyListeners();
228
- console.log('字体加载成功 (CSS方式)');
229
- }).catch(error => {
230
- console.warn('CSS字体加载失败,将使用备用图标:', error);
231
- this.fontsLoaded = true;
232
- this.notifyListeners();
233
- });
234
- } else {
235
- // 降级处理
236
- setTimeout(() => {
237
- this.fontsLoaded = true;
238
- this.notifyListeners();
239
- }, 1000);
240
- }
241
- } catch (error) {
242
- console.warn('CSS字体加载过程中出错,将使用备用图标:', error);
243
- this.fontsLoaded = true;
244
- this.notifyListeners();
245
- }
246
- }
247
-
248
- /**
249
- * 通知所有监听器
250
- */
251
- notifyListeners() {
252
- this.listeners.forEach(listener => {
253
- try {
254
- listener();
255
- } catch (error) {
256
- console.warn('字体加载监听器执行失败:', error);
257
- }
203
+ });
258
204
  });
259
- }
260
-
261
- /**
262
- * 检查字体是否已加载
263
- */
264
- isFontLoaded() {
265
- return this.fontsLoaded;
266
- }
267
-
268
- /**
269
- * 检查是否正在加载
270
- */
271
- isLoading() {
272
- return this.loading;
273
- }
274
-
275
- /**
276
- * 重新加载字体
277
- */
278
- async reload() {
279
- this.fontsLoaded = false;
280
- this.loading = false;
281
- await this.init();
282
- }
283
-
205
+ };
284
206
  /**
285
- * 添加自定义字体路径
207
+ * 在 Web 环境中加载字体
286
208
  */
287
- addFontPath(path) {
288
- if (!this.fontPaths.includes(path)) {
289
- this.fontPaths.unshift(path); // 添加到最前面,优先尝试
290
- }
291
- }
292
- }
293
- const smartFontLoader = exports.smartFontLoader = SmartFontLoader.getInstance();
294
-
295
- /**
296
- * 智能字体加载 Hook
297
- */
298
- function useSmartFontLoader() {
299
- const [fontsLoaded, setFontsLoaded] = _react.default.useState(smartFontLoader.isFontLoaded());
300
- const [loading, setLoading] = _react.default.useState(smartFontLoader.isLoading());
301
- _react.default.useEffect(() => {
302
- const unsubscribe = smartFontLoader.addListener(() => {
303
- setFontsLoaded(true);
304
- setLoading(false);
305
- });
306
- return unsubscribe;
307
- }, []);
308
- return {
309
- fontsLoaded,
310
- loading
311
- };
312
- }
313
- //# sourceMappingURL=smartFontLoader.js.map // 如果所有路径都失败,尝试动态检测
209
+ SmartFontLoader.prototype.loadWebFont = function () {
210
+ return __awaiter(this, void 0, void 0, function () {
211
+ var doc, fontLoaded, _i, _a, path, font, error_2, error_3;
212
+ return __generator(this, function (_b) {
213
+ switch (_b.label) {
214
+ case 0:
215
+ // 检查 Web 环境是否可用
216
+ if (typeof window === 'undefined' || typeof document === 'undefined') {
217
+ console.warn('Web环境不可用,跳过字体加载');
218
+ this.fontsLoaded = true;
219
+ this.notifyListeners();
220
+ return [2 /*return*/];
221
+ }
222
+ doc = document;
223
+ // 检查字体是否已经加载
224
+ if (doc.fonts && doc.fonts.check('1em icomoon')) {
225
+ this.fontsLoaded = true;
226
+ this.notifyListeners();
227
+ return [2 /*return*/];
228
+ }
229
+ this.loading = true;
230
+ _b.label = 1;
231
+ case 1:
232
+ _b.trys.push([1, 13,, 14]);
233
+ fontLoaded = false;
234
+ if (!(typeof FontFace !== 'undefined')) return [3 /*break*/, 8];
235
+ _i = 0, _a = this.fontPaths;
236
+ _b.label = 2;
237
+ case 2:
238
+ if (!(_i < _a.length)) return [3 /*break*/, 7];
239
+ path = _a[_i];
240
+ _b.label = 3;
241
+ case 3:
242
+ _b.trys.push([3, 5,, 6]);
243
+ font = new FontFace('icomoon', "url(".concat(path, ")"));
244
+ return [4 /*yield*/, font.load()];
245
+ case 4:
246
+ _b.sent();
247
+ doc.fonts.add(font);
248
+ fontLoaded = true;
249
+ console.log("\u5B57\u4F53\u52A0\u8F7D\u6210\u529F: ".concat(path));
250
+ return [3 /*break*/, 7];
251
+ case 5:
252
+ error_2 = _b.sent();
253
+ console.warn("\u5B57\u4F53\u8DEF\u5F84\u52A0\u8F7D\u5931\u8D25: ".concat(path), error_2);
254
+ return [3 /*break*/, 6];
255
+ case 6:
256
+ _i++;
257
+ return [3 /*break*/, 2];
258
+ case 7:
259
+ return [3 /*break*/, 9];
260
+ case 8:
261
+ console.warn('FontFace API不可用,使用CSS方式加载字体');
262
+ this.loadFontWithCSS(doc);
263
+ return [2 /*return*/];
264
+ case 9:
265
+ if (!!fontLoaded) return [3 /*break*/, 11];
266
+ // 如果所有路径都失败,尝试动态检测
267
+ return [4 /*yield*/, this.detectAndLoadFont(doc)];
268
+ case 10:
269
+ // 如果所有路径都失败,尝试动态检测
314
270
  _b.sent();
315
271
  _b.label = 11;
316
272
  case 11: