@beppla/tapas-ui 1.0.68 → 1.0.70

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 (248) hide show
  1. package/commonjs/AnimatedNavItem/index.js.map +2 -1
  2. package/commonjs/BarChart/BarChart.js +112 -90
  3. package/commonjs/BarChart/BarChart.js.map +1 -1
  4. package/commonjs/Button/Button.js +96 -78
  5. package/commonjs/Button/Button.js.map +1 -2
  6. package/commonjs/Button/ButtonGroup.js +156 -136
  7. package/commonjs/Button/ButtonGroup.js.map +1 -2
  8. package/commonjs/Calendar/Calendar.base.js +162 -190
  9. package/commonjs/Calendar/Calendar.base.js.map +1 -2
  10. package/commonjs/Calendar/Calendar.js +86 -102
  11. package/commonjs/Calendar/Calendar.js.map +2 -1
  12. package/commonjs/Calendar/CustomRange.js +271 -324
  13. package/commonjs/Calendar/DaySelector.js +115 -113
  14. package/commonjs/Calendar/DaySelector.js.map +2 -1
  15. package/commonjs/Calendar/MonthSelector.js +118 -115
  16. package/commonjs/Calendar/local.js +2 -2
  17. package/commonjs/Calendar/local.js.map +2 -1
  18. package/commonjs/Calendar/types.js +11 -11
  19. package/commonjs/CheckBox/CheckBox.js +96 -63
  20. package/commonjs/CheckBox/CheckBox.js.map +1 -2
  21. package/commonjs/CheckBox/CheckBoxItem.js +78 -57
  22. package/commonjs/CheckBox/CheckBoxItem.js.map +1 -2
  23. package/commonjs/CircularProgress/CircularProgress.js +25 -23
  24. package/commonjs/CircularProgress/CircularProgress.js.map +1 -2
  25. package/commonjs/Collapsible/Collapsible.js +60 -74
  26. package/commonjs/Collapsible/Collapsible.js.map +2 -1
  27. package/commonjs/DashboardCard/DashboardCard.js +74 -94
  28. package/commonjs/DashboardCard/DashboardCard.js.map +1 -1
  29. package/commonjs/DataCell/DataCell.js +108 -0
  30. package/commonjs/DataCell/DataCell.js.map +1 -0
  31. package/commonjs/DataCell/index.js +15 -9
  32. package/commonjs/DataTable/DataTable.js +0 -69
  33. package/commonjs/DataTable/index.js.map +2 -1
  34. package/commonjs/DeviceSelectionModal/DeviceSelectionModal.js +242 -244
  35. package/commonjs/DeviceSelectionModal/DeviceSelectionModal.js.map +1 -2
  36. package/commonjs/DraggableFlatList/DraggableFlatList.js +1 -1
  37. package/commonjs/Dropdown/InputDropdown.js.map +2 -1
  38. package/commonjs/Gantt/Accessories.js +135 -168
  39. package/commonjs/Gantt/Accessories.js.map +1 -2
  40. package/commonjs/Gantt/Gantt.js +149 -149
  41. package/commonjs/Gantt/Gantt.js.map +2 -1
  42. package/commonjs/Gantt/GanttInnerElementType.js +93 -102
  43. package/commonjs/Gantt/GanttInnerElementType.js.map +2 -1
  44. package/commonjs/Gantt/helper.js +119 -145
  45. package/commonjs/Gantt/types.js +4 -4
  46. package/commonjs/Grid/VariableSizeGrid.js +120 -113
  47. package/commonjs/Grid/VariableSizeGrid.js.map +2 -1
  48. package/commonjs/Grid/helper.js.map +2 -1
  49. package/commonjs/Grid/timer.js +9 -5
  50. package/commonjs/Grid/timer.js.map +1 -2
  51. package/commonjs/HelloWave/HelloWave.js +46 -53
  52. package/commonjs/HelloWave/HelloWave.js.map +1 -2
  53. package/commonjs/Hoverable/Hoverable.js +35 -33
  54. package/commonjs/Hoverable/Hoverable.js.map +2 -2
  55. package/commonjs/IconText/IconText.js +88 -65
  56. package/commonjs/IconText/IconText.js.map +2 -1
  57. package/commonjs/Icons/TapasIcon.js +99 -100
  58. package/commonjs/Icons/TapasIcon.js.map +1 -2
  59. package/commonjs/Icons/TapasIconExpo.js +101 -94
  60. package/commonjs/Icons/smartFontLoader.js +266 -222
  61. package/commonjs/Image/PreviewImg.js +85 -63
  62. package/commonjs/Image/PreviewImg.js.map +1 -2
  63. package/commonjs/Layout/DrawerContext.js +49 -35
  64. package/commonjs/Layout/DrawerContext.js.map +1 -2
  65. package/commonjs/Layout/ToastContext.js +34 -46
  66. package/commonjs/LineChart/LineChart.js +126 -144
  67. package/commonjs/LineChart/LineChart.js.map +1 -2
  68. package/commonjs/LineChart/index.js +4 -3
  69. package/commonjs/LineChart/index.js.map +1 -2
  70. package/commonjs/ListItem/ListItem.js +80 -108
  71. package/commonjs/ListItem/ListItem.js.map +2 -1
  72. package/commonjs/Loading/Loading.js +66 -54
  73. package/commonjs/Loading/Loading.js.map +1 -1
  74. package/commonjs/MessageBox/MessageBox.js +127 -126
  75. package/commonjs/MessageBox/MessageBox.js.map +2 -1
  76. package/commonjs/MultiSelector/MultiSelector.js +250 -225
  77. package/commonjs/MultiSelector/index.js +6 -8
  78. package/commonjs/MultiSelector/index.js.map +2 -1
  79. package/commonjs/Navigation/Navigation.js +65 -0
  80. package/commonjs/Navigation/Navigation.js.map +1 -0
  81. package/commonjs/Notification/Notification.js +110 -89
  82. package/commonjs/Notification/index.js +6 -8
  83. package/commonjs/Notification/index.js.map +2 -1
  84. package/commonjs/NumericInput/NumericInput.js +23 -0
  85. package/commonjs/NumericInput/NumericInput.js.map +1 -0
  86. package/commonjs/Overlay/Overlay.js +24 -45
  87. package/commonjs/Overlay/Overlay.js.map +1 -1
  88. package/commonjs/Pagination/Pagination.js +93 -151
  89. package/commonjs/Pagination/Pagination.js.map +1 -1
  90. package/commonjs/PieChart/PieChart.js.map +2 -1
  91. package/commonjs/PieChart/index.js +3 -4
  92. package/commonjs/PieChart/index.js.map +2 -1
  93. package/commonjs/Popover/Popover.js +112 -137
  94. package/commonjs/Popover/Popover.js.map +1 -2
  95. package/commonjs/Progress/Progress.js +54 -48
  96. package/commonjs/Progress/Progress.js.map +1 -2
  97. package/commonjs/Quantity/Quantity.js +52 -127
  98. package/commonjs/Quantity/Quantity.js.map +0 -1
  99. package/commonjs/Quantity/index.js +8 -6
  100. package/commonjs/Quantity/index.js.map +1 -2
  101. package/commonjs/ReasonModal/ReasonModal.js +125 -122
  102. package/commonjs/ReasonModal/ReasonModal.js.map +2 -1
  103. package/commonjs/ReasonModal/index.js +9 -15
  104. package/commonjs/ReasonModal/index.js.map +1 -2
  105. package/commonjs/SearchInput/SearchInput.js +92 -108
  106. package/commonjs/SheetTitle/SheetTitle.js +0 -6
  107. package/commonjs/SheetTitle/SheetTitle.js.map +0 -1
  108. package/commonjs/Shell/Shell.js +84 -92
  109. package/commonjs/Shell/Shell.js.map +2 -1
  110. package/commonjs/Shell/styles.js.map +1 -2
  111. package/commonjs/Shell/types.js +2 -2
  112. package/commonjs/Shell/types.js.map +1 -2
  113. package/commonjs/StatisticCard/StatisticCard.js +41 -47
  114. package/commonjs/Steps/Steps.js +41 -40
  115. package/commonjs/Steps/Steps.js.map +1 -1
  116. package/commonjs/TabTitle/index.js +0 -1
  117. package/commonjs/TabTitle/index.js.map +0 -1
  118. package/commonjs/TableColumnHeader/TableColumnHeader.js +134 -140
  119. package/commonjs/Tag/Tag.js +0 -41
  120. package/commonjs/Tag/Tag.js.map +0 -1
  121. package/commonjs/Task/Task.js +201 -112
  122. package/commonjs/Task/Task.js.map +2 -1
  123. package/commonjs/Text/Text.js.map +0 -1
  124. package/commonjs/Theme/ThemeProvider.js +18 -16
  125. package/commonjs/Theme/defaultTheme.js +21 -16
  126. package/commonjs/Theme/defaultTheme.js.map +2 -1
  127. package/commonjs/Toast/Toast.js +32 -0
  128. package/commonjs/Toast/Toast.js.map +1 -0
  129. package/commonjs/UserSwitcher/UserSwitcher.js +147 -144
  130. package/commonjs/UserSwitcher/UserSwitcher.js.map +2 -1
  131. package/module/Alert/Alert.js +71 -51
  132. package/module/Alert/Alert.js.map +2 -1
  133. package/module/AnimatedNavItem/AnimatedNavItem.js.map +1 -2
  134. package/module/AnimatedNavItem/index.js +7 -3
  135. package/module/AnimatedNavItem/index.js.map +1 -2
  136. package/module/BarChart/BarChart.js +140 -109
  137. package/module/BarChart/BarChart.js.map +2 -1
  138. package/module/BarChart/index.js +4 -2
  139. package/module/Button/ButtonGroup.js +120 -129
  140. package/module/Button/ButtonGroup.js.map +1 -2
  141. package/module/Calendar/ConcreteTimeSelector.js +299 -211
  142. package/module/Calendar/ConcreteTimeSelector.js.map +2 -1
  143. package/module/Calendar/DaySelector.js +118 -95
  144. package/module/Calendar/DaySelector.js.map +2 -1
  145. package/module/Calendar/TimeSelector.js +307 -215
  146. package/module/Calendar/TimeSelector.js.map +1 -2
  147. package/module/Calendar/local.js +7 -7
  148. package/module/Calendar/local.js.map +2 -1
  149. package/module/Calendar/types.js.map +1 -2
  150. package/module/Card/Card.js +236 -154
  151. package/module/Card/Card.js.map +1 -1
  152. package/module/CheckBox/CheckBox.js +89 -93
  153. package/module/CheckBox/CheckBox.js.map +2 -1
  154. package/module/CheckBox/CheckBoxItem.js +84 -69
  155. package/module/CheckBox/CheckBoxItem.js.map +1 -1
  156. package/module/CheckBox/GroupCheckBox.js +76 -66
  157. package/module/CheckBox/GroupCheckBox.js.map +2 -1
  158. package/module/CircularProgress/CircularProgress.js +0 -22
  159. package/module/CircularProgress/CircularProgress.js.map +0 -1
  160. package/module/DashboardCard/DashboardCard.js +88 -80
  161. package/module/DashboardCard/DashboardCard.js.map +1 -2
  162. package/module/DataCell/DataCell.js +224 -311
  163. package/module/DataCell/DataCell.js.map +1 -2
  164. package/module/DataTable/DataTable.js +100 -0
  165. package/module/DataTable/index.js.map +1 -2
  166. package/module/DeviceSelectionModal/DeviceSelectionModal.js +124 -0
  167. package/module/DeviceSelectionModal/DeviceSelectionModal.js.map +1 -0
  168. package/module/DraggableFlatList/DraggableFlatList.js +9 -0
  169. package/module/DraggableFlatList/DraggableFlatList.js.map +1 -0
  170. package/module/Dropdown/CustomDropdown.js +160 -212
  171. package/module/Dropdown/CustomDropdown.js.map +1 -1
  172. package/module/Dropdown/Dropdown.js +408 -484
  173. package/module/Dropdown/Dropdown.js.map +1 -2
  174. package/module/Dropdown/InputDropdown.js +134 -116
  175. package/module/Dropdown/InputDropdown.js.map +2 -1
  176. package/module/ExternalLink/ExternalLink.js +0 -150
  177. package/module/ExternalLink/ExternalLink.js.map +0 -1
  178. package/module/Gantt/Accessories.js.map +2 -1
  179. package/module/Gantt/Gantt.js +152 -139
  180. package/module/Gantt/Gantt.js.map +2 -1
  181. package/module/Gantt/GanttInnerElementType.js.map +1 -2
  182. package/module/Gantt/helper.js +163 -129
  183. package/module/Gantt/types.js +8 -4
  184. package/module/Gantt/types.js.map +1 -2
  185. package/module/Grid/VariableSizeGrid.js +118 -121
  186. package/module/Grid/VariableSizeGrid.js.map +1 -2
  187. package/module/Grid/helper.js.map +2 -1
  188. package/module/Grid/timer.js +16 -14
  189. package/module/Grid/timer.js.map +1 -2
  190. package/module/HelloWave/HelloWave.js +53 -43
  191. package/module/HelloWave/HelloWave.js.map +2 -1
  192. package/module/Hoverable/Hoverable.js +66 -69
  193. package/module/Hoverable/Hoverable.js.map +1 -2
  194. package/module/Icons/TapasIcon.js +96 -120
  195. package/module/Icons/TapasIcon.js.map +1 -2
  196. package/module/Icons/TapasIconExpo.js +98 -78
  197. package/module/Icons/TapasIconExpo.js.map +2 -1
  198. package/module/Icons/fontLoader.js.map +2 -1
  199. package/module/Icons/index.js +10 -9
  200. package/module/Icons/smartFontLoader.js.map +2 -1
  201. package/module/Input/Input.js +74 -0
  202. package/module/Input/Input.js.map +1 -0
  203. package/module/Layout/DrawerContext.js +29 -18
  204. package/module/Layout/DrawerContext.js.map +2 -1
  205. package/module/Layout/Layout.js +100 -100
  206. package/module/Layout/index.js +15 -14
  207. package/module/LineChart/LineChart.js +157 -121
  208. package/module/Loading/Loading.js +65 -67
  209. package/module/Loading/Loading.js.map +2 -1
  210. package/module/MultiSelector/MultiSelector.js.map +2 -1
  211. package/module/MultiSelector/index.js +2 -3
  212. package/module/MultiSelector/index.js.map +2 -1
  213. package/module/Notification/Notification.js +105 -101
  214. package/module/Notification/Notification.js.map +2 -1
  215. package/module/Notification/index.js +18 -1
  216. package/module/Notification/index.js.map +1 -1
  217. package/module/NumericInput/NumericInput.js.map +1 -0
  218. package/module/Overlay/Overlay.js +29 -0
  219. package/module/Overlay/Overlay.js.map +1 -0
  220. package/module/Pagination/Pagination.js +0 -72
  221. package/module/Pagination/Pagination.js.map +0 -1
  222. package/module/PieChart/PieChart.js +101 -76
  223. package/module/PieChart/PieChart.js.map +1 -2
  224. package/module/Quantity/Quantity.js +129 -112
  225. package/module/ReasonModal/ReasonModal.js +114 -145
  226. package/module/ReasonModal/ReasonModal.js.map +1 -2
  227. package/module/ReasonModal/index.js +27 -0
  228. package/module/ScanButton/ScanButton.js +56 -35
  229. package/module/ScanButton/ScanButton.js.map +1 -1
  230. package/module/Shell/types.js +2 -4
  231. package/module/TabTitle/TabTitle.js +57 -48
  232. package/module/TableColumnHeader/TableColumnHeader.js +153 -126
  233. package/module/Task/Task.js +113 -207
  234. package/module/Task/Task.js.map +1 -2
  235. package/module/Task/type.js +4 -8
  236. package/module/Task/type.js.map +1 -2
  237. package/module/Text/Text.js +80 -70
  238. package/module/Text/Text.js.map +1 -2
  239. package/module/TextArea/TextArea.js +119 -0
  240. package/module/TextArea/TextArea.js.map +1 -0
  241. package/module/Theme/defaultTheme.js +20 -0
  242. package/module/Theme/defaultTheme.js.map +1 -0
  243. package/module/Timeline/Timeline.js +54 -0
  244. package/module/Timeline/Timeline.js.map +1 -0
  245. package/module/UserSwitcher/UserSwitcher.js.map +2 -1
  246. package/module/index.js.map +1 -2
  247. package/package.json +1 -1
  248. package/typescript/Hoverable/Hoverable.d.ts.map +1 -1
@@ -1,153 +1,39 @@
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
- };
119
3
  Object.defineProperty(exports, "__esModule", {
120
4
  value: true
121
5
  });
122
6
  exports.smartFontLoader = void 0;
123
7
  exports.useSmartFontLoader = useSmartFontLoader;
124
- var react_1 = __importDefault(require("react"));
125
- var react_native_1 = require("react-native");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactNative = require("react-native");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
126
11
  /**
127
12
  * 智能字体加载器
128
13
  * 自动检测环境并选择合适的字体加载策略
129
14
  */
130
- var SmartFontLoader = /** @class */function () {
131
- function SmartFontLoader() {
132
- this.fontsLoaded = false;
133
- this.loading = false;
134
- this.listeners = [];
135
- this.fontPaths = [];
15
+ class SmartFontLoader {
16
+ fontsLoaded = false;
17
+ loading = false;
18
+ listeners = [];
19
+ fontPaths = [];
20
+ constructor() {
136
21
  this.initFontPaths();
137
22
  this.init();
138
23
  }
139
- SmartFontLoader.getInstance = function () {
24
+ static getInstance() {
140
25
  if (!SmartFontLoader.instance) {
141
26
  SmartFontLoader.instance = new SmartFontLoader();
142
27
  }
143
28
  return SmartFontLoader.instance;
144
- };
29
+ }
30
+
145
31
  /**
146
32
  * 初始化字体路径列表
147
33
  * 根据不同的构建环境提供多个可能的路径
148
34
  */
149
- SmartFontLoader.prototype.initFontPaths = function () {
150
- if (react_native_1.Platform.OS === 'web') {
35
+ initFontPaths() {
36
+ if (_reactNative.Platform.OS === 'web') {
151
37
  // Web 环境的可能路径
152
38
  this.fontPaths = [
153
39
  // Storybook 环境
@@ -165,108 +51,266 @@ var SmartFontLoader = /** @class */function () {
165
51
  // 字体应该由使用组件库的应用来加载
166
52
  this.fontPaths = [];
167
53
  }
168
- };
54
+ }
55
+
169
56
  /**
170
57
  * 初始化字体加载器
171
58
  */
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*/];
185
- }
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*/];
202
- }
203
- });
204
- });
205
- };
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
+
206
78
  /**
207
79
  * 在 Web 环境中加载字体
208
80
  */
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();
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();
247
108
  doc.fonts.add(font);
248
109
  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
- // 如果所有路径都失败,尝试动态检测
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
+ }
163
+ }
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;
219
+ }
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
+ }
258
+ });
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
+
284
+ /**
285
+ * 添加自定义字体路径
286
+ */
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 // 如果所有路径都失败,尝试动态检测
270
314
  _b.sent();
271
315
  _b.label = 11;
272
316
  case 11: