@tego/web 1.3.14

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 (184) hide show
  1. package/README.md +29 -0
  2. package/dist/assets/4378.67e21b23.css +1 -0
  3. package/dist/assets/4378.9622269d.js +464 -0
  4. package/dist/assets/4378.9622269d.js.LICENSE.txt +1860 -0
  5. package/dist/assets/android-chrome-192x192.png +0 -0
  6. package/dist/assets/android-chrome-512x512.png +0 -0
  7. package/dist/assets/apple-touch-icon.png +0 -0
  8. package/dist/assets/async/1151.6b8adcae.js +1 -0
  9. package/dist/assets/async/1152.00e4d731.js +1 -0
  10. package/dist/assets/async/1179.964211d5.js +1 -0
  11. package/dist/assets/async/131.b9e3b1ea.js +1 -0
  12. package/dist/assets/async/1356.5ccfc7e7.js +1 -0
  13. package/dist/assets/async/1467.2672bba1.js +1 -0
  14. package/dist/assets/async/166.f5a5d259.js +1 -0
  15. package/dist/assets/async/1696.f16add28.js +1 -0
  16. package/dist/assets/async/1747.d89c6a33.js +1 -0
  17. package/dist/assets/async/1800.d0580635.js +1 -0
  18. package/dist/assets/async/1901.16a32893.js +1 -0
  19. package/dist/assets/async/1902.b3a213b3.js +1 -0
  20. package/dist/assets/async/1981.cf58ec67.js +1 -0
  21. package/dist/assets/async/2015.d1881f3e.js +1 -0
  22. package/dist/assets/async/2064.d989c659.js +1 -0
  23. package/dist/assets/async/208.72f66fc4.js +1 -0
  24. package/dist/assets/async/2204.c7696234.js +1 -0
  25. package/dist/assets/async/2375.971a8c23.js +1 -0
  26. package/dist/assets/async/2400.6b3bc1d8.js +1 -0
  27. package/dist/assets/async/2434.113e771a.js +1 -0
  28. package/dist/assets/async/2493.75d6db89.js +1 -0
  29. package/dist/assets/async/2518.61a2edec.js +1 -0
  30. package/dist/assets/async/2549.cd8d4015.js +1 -0
  31. package/dist/assets/async/2563.79dd0cc0.js +1 -0
  32. package/dist/assets/async/2606.212958ec.js +1 -0
  33. package/dist/assets/async/2812.97d287f4.js +1 -0
  34. package/dist/assets/async/2883.0a405018.js +1 -0
  35. package/dist/assets/async/3024.69b15566.js +1 -0
  36. package/dist/assets/async/304.40cf6875.js +1 -0
  37. package/dist/assets/async/3105.f136ab59.js +1 -0
  38. package/dist/assets/async/3142.8fc2d9dc.js +1 -0
  39. package/dist/assets/async/3310.d8deff2a.js +1 -0
  40. package/dist/assets/async/3352.900dab1c.js +1 -0
  41. package/dist/assets/async/3371.bf1c3411.js +1 -0
  42. package/dist/assets/async/3499.04eed93d.js +1 -0
  43. package/dist/assets/async/359.29df24be.js +1 -0
  44. package/dist/assets/async/371.59b85128.js +1 -0
  45. package/dist/assets/async/3829.50241783.js +1 -0
  46. package/dist/assets/async/388.0c3417e8.js +1 -0
  47. package/dist/assets/async/3940.1fe3e367.js +1 -0
  48. package/dist/assets/async/4128.1ee4c9d1.js +1 -0
  49. package/dist/assets/async/413.1c018787.js +1 -0
  50. package/dist/assets/async/4141.2ad67e23.js +1 -0
  51. package/dist/assets/async/4308.ca18943a.js +1 -0
  52. package/dist/assets/async/4329.ba7c7b8a.js +1 -0
  53. package/dist/assets/async/4403.369e9c0f.js +1 -0
  54. package/dist/assets/async/4500.b2bc4f59.js +1 -0
  55. package/dist/assets/async/4548.10dc0699.js +1 -0
  56. package/dist/assets/async/4563.acf73fca.js +1 -0
  57. package/dist/assets/async/4621.15aef3ba.js +1 -0
  58. package/dist/assets/async/4653.c8e74766.js +1 -0
  59. package/dist/assets/async/4672.dac49a3d.js +1 -0
  60. package/dist/assets/async/4677.224484a0.js +1 -0
  61. package/dist/assets/async/4775.5295dad4.js +1 -0
  62. package/dist/assets/async/4785.2e9285c0.js +1 -0
  63. package/dist/assets/async/4888.79c31031.js +1 -0
  64. package/dist/assets/async/499.a3937d88.js +1 -0
  65. package/dist/assets/async/5050.5067f8a1.js +1 -0
  66. package/dist/assets/async/5100.6c1df095.js +1 -0
  67. package/dist/assets/async/5101.58d1b0eb.js +1 -0
  68. package/dist/assets/async/5222.ea438e67.js +1 -0
  69. package/dist/assets/async/5239.88b98c1e.js +1 -0
  70. package/dist/assets/async/5296.264999c4.js +1 -0
  71. package/dist/assets/async/5319.bf507398.js +1 -0
  72. package/dist/assets/async/5429.f6e79d30.js +1 -0
  73. package/dist/assets/async/544.ed7f02be.js +1 -0
  74. package/dist/assets/async/5595.a787d360.js +1 -0
  75. package/dist/assets/async/5845.578ec465.js +1 -0
  76. package/dist/assets/async/5902.2768d6b3.js +1 -0
  77. package/dist/assets/async/6263.dd63243a.js +1 -0
  78. package/dist/assets/async/6340.1e1737d4.js +1 -0
  79. package/dist/assets/async/6360.38331c04.js +1 -0
  80. package/dist/assets/async/641.a97d5a6b.js +1 -0
  81. package/dist/assets/async/6459.3a4b0b26.js +1 -0
  82. package/dist/assets/async/6495.7f7e42f4.js +1 -0
  83. package/dist/assets/async/6611.e6c123ec.js +1 -0
  84. package/dist/assets/async/6636.401303f5.js +1 -0
  85. package/dist/assets/async/6676.3dafddff.js +1 -0
  86. package/dist/assets/async/6717.4c9dd409.js +1 -0
  87. package/dist/assets/async/6791.6614240a.js +1 -0
  88. package/dist/assets/async/686.e3bef76d.js +1 -0
  89. package/dist/assets/async/688.494ce4c5.js +1 -0
  90. package/dist/assets/async/6916.33872615.js +1 -0
  91. package/dist/assets/async/6947.0844785c.js +1 -0
  92. package/dist/assets/async/6987.a7e06c7c.js +1 -0
  93. package/dist/assets/async/700.b00ec145.js +1 -0
  94. package/dist/assets/async/7004.f35c81a5.js +1 -0
  95. package/dist/assets/async/7038.ad773261.js +1 -0
  96. package/dist/assets/async/716.99bdcb10.js +1 -0
  97. package/dist/assets/async/7180.2d0e2000.js +1 -0
  98. package/dist/assets/async/7189.2c89ca76.js +1 -0
  99. package/dist/assets/async/720.209cbef4.js +1 -0
  100. package/dist/assets/async/7228.e808c0c4.js +1 -0
  101. package/dist/assets/async/7250.9b42c00f.js +1 -0
  102. package/dist/assets/async/7251.6b060f8c.js +1 -0
  103. package/dist/assets/async/729.f65519dc.js +1 -0
  104. package/dist/assets/async/7417.6abef294.js +1 -0
  105. package/dist/assets/async/7431.5a9b8adc.js +1 -0
  106. package/dist/assets/async/7454.cbc58ee0.js +1 -0
  107. package/dist/assets/async/7467.7d4e8998.js +1 -0
  108. package/dist/assets/async/7482.f43e2a2c.js +1 -0
  109. package/dist/assets/async/7667.a6e9b7ac.js +1 -0
  110. package/dist/assets/async/7668.960ff944.js +1 -0
  111. package/dist/assets/async/770.d1b65df1.js +1 -0
  112. package/dist/assets/async/7783.a49565f1.js +1 -0
  113. package/dist/assets/async/7816.c1dd8dad.js +1 -0
  114. package/dist/assets/async/7937.505a4cb9.js +1 -0
  115. package/dist/assets/async/7943.97fcff31.js +1 -0
  116. package/dist/assets/async/7988.93885c8e.js +1 -0
  117. package/dist/assets/async/7994.c1abb4ec.js +1 -0
  118. package/dist/assets/async/7995.9ef8dc91.js +1 -0
  119. package/dist/assets/async/8031.77b7d2fc.js +1 -0
  120. package/dist/assets/async/8048.8331d16c.js +1 -0
  121. package/dist/assets/async/8168.2ea172bb.js +1 -0
  122. package/dist/assets/async/8194.4022b0b0.js +1 -0
  123. package/dist/assets/async/8195.06557e98.js +1 -0
  124. package/dist/assets/async/8471.b83bba92.js +1 -0
  125. package/dist/assets/async/8566.8642e42a.js +1 -0
  126. package/dist/assets/async/864.a840f5b4.js +1 -0
  127. package/dist/assets/async/8683.8c7cf85c.js +1 -0
  128. package/dist/assets/async/8712.75f3fe84.js +1 -0
  129. package/dist/assets/async/8731.b9a3d14a.js +1 -0
  130. package/dist/assets/async/8733.4e56ce45.js +1 -0
  131. package/dist/assets/async/9094.ea8b166b.js +1 -0
  132. package/dist/assets/async/9178.7ba86a75.js +1 -0
  133. package/dist/assets/async/9205.c294abf0.js +1 -0
  134. package/dist/assets/async/9215.d22f7b18.js +1 -0
  135. package/dist/assets/async/9253.f064d673.js +1 -0
  136. package/dist/assets/async/9274.36f41f3c.js +1 -0
  137. package/dist/assets/async/9278.01eeb29e.js +1 -0
  138. package/dist/assets/async/9281.6516b55e.js +1 -0
  139. package/dist/assets/async/9343.2916432d.js +1 -0
  140. package/dist/assets/async/9353.a22c5d31.js +1 -0
  141. package/dist/assets/async/9407.6e395dec.js +1 -0
  142. package/dist/assets/async/942.073c0889.js +1 -0
  143. package/dist/assets/async/9444.966dde99.js +1 -0
  144. package/dist/assets/async/9446.721084a6.js +1 -0
  145. package/dist/assets/async/9564.77505ac2.js +1 -0
  146. package/dist/assets/async/9599.3f3d2f0e.js +1 -0
  147. package/dist/assets/async/964.70dce3e9.js +1 -0
  148. package/dist/assets/async/9715.2e94ce04.js +1 -0
  149. package/dist/assets/async/9857.e10cc657.js +1 -0
  150. package/dist/assets/async/9859.576a953b.js +1 -0
  151. package/dist/assets/async/9861.45bc620c.js +1 -0
  152. package/dist/assets/async/9941.16f336f3.js +1 -0
  153. package/dist/assets/index.2e0e2ff5.js +2 -0
  154. package/dist/assets/index.2e0e2ff5.js.LICENSE.txt +6 -0
  155. package/dist/assets/index.3937c8bb.css +1 -0
  156. package/dist/assets/lib-axios.8b83dd59.js +2 -0
  157. package/dist/assets/lib-axios.8b83dd59.js.LICENSE.txt +18 -0
  158. package/dist/assets/lib-react.a86740e1.js +2 -0
  159. package/dist/assets/lib-react.a86740e1.js.LICENSE.txt +48 -0
  160. package/dist/assets/lib-router.da995a7a.js +2 -0
  161. package/dist/assets/lib-router.da995a7a.js.LICENSE.txt +32 -0
  162. package/dist/browser-checker.js +215 -0
  163. package/dist/favicon.ico +0 -0
  164. package/dist/global.css +63 -0
  165. package/dist/index.html +10 -0
  166. package/dist/manifest.webmanifest +1 -0
  167. package/dist/tachybase-logo.png +0 -0
  168. package/package.json +26 -0
  169. package/public/browser-checker.js +215 -0
  170. package/public/global.css +63 -0
  171. package/public/tachybase-logo.png +0 -0
  172. package/rsbuild.config.ts +85 -0
  173. package/src/.plugins/index.ts +4 -0
  174. package/src/App.tsx +29 -0
  175. package/src/PluginWeb.ts +29 -0
  176. package/src/assets/android-chrome-192x192.png +0 -0
  177. package/src/assets/android-chrome-512x512.png +0 -0
  178. package/src/assets/apple-touch-icon.png +0 -0
  179. package/src/assets/favicon.ico +0 -0
  180. package/src/assets/index.html +10 -0
  181. package/src/dynamic-import.ts +19 -0
  182. package/src/env.d.ts +3 -0
  183. package/src/index.tsx +10 -0
  184. package/tsconfig.json +25 -0
@@ -0,0 +1,215 @@
1
+ var showLog = true;
2
+ function log(m) {
3
+ if (window.console && showLog) {
4
+ console.log(m);
5
+ }
6
+ }
7
+ function css_browser_selector(u) {
8
+ var uaInfo = {},
9
+ screens = [320, 480, 640, 768, 1024, 1152, 1280, 1440, 1680, 1920, 2560],
10
+ allScreens = screens.length,
11
+ ua = u.toLowerCase(),
12
+ is = function (t) {
13
+ return RegExp(t, 'i').test(ua);
14
+ },
15
+ version = function (p, n) {
16
+ n = n.replace('.', '_');
17
+ var i = n.indexOf('_'),
18
+ ver = '';
19
+ while (i > 0) {
20
+ ver += ' ' + p + n.substring(0, i);
21
+ i = n.indexOf('_', i + 1);
22
+ }
23
+ ver += ' ' + p + n;
24
+ return ver;
25
+ },
26
+ g = 'gecko',
27
+ w = 'webkit',
28
+ c = 'chrome',
29
+ f = 'firefox',
30
+ s = 'safari',
31
+ o = 'opera',
32
+ m = 'mobile',
33
+ a = 'android',
34
+ bb = 'blackberry',
35
+ lang = 'lang_',
36
+ dv = 'device_',
37
+ html = document.documentElement,
38
+ b = [
39
+ (!/opera|webtv/i.test(ua) && /msie\s(\d+)/.test(ua)) || /trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.test(ua)
40
+ ? 'ie ie' + (/trident\/4\.0/.test(ua) ? '8' : RegExp.$1 == '11.0' ? '11' : RegExp.$1)
41
+ : is('firefox/')
42
+ ? g +
43
+ ' ' +
44
+ f +
45
+ (/firefox\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)
46
+ ? ' ' + f + RegExp.$2 + ' ' + f + RegExp.$2 + '_' + RegExp.$4
47
+ : '')
48
+ : is('gecko/')
49
+ ? g
50
+ : is('opera')
51
+ ? o +
52
+ (/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)
53
+ ? ' ' + o + RegExp.$2 + ' ' + o + RegExp.$2 + '_' + RegExp.$4
54
+ : /opera(\s|\/)(\d+)\.(\d+)/.test(ua)
55
+ ? ' ' + o + RegExp.$2 + ' ' + o + RegExp.$2 + '_' + RegExp.$3
56
+ : '')
57
+ : is('konqueror')
58
+ ? 'konqueror'
59
+ : is('blackberry')
60
+ ? bb +
61
+ (/Version\/(\d+)(\.(\d+)+)/i.test(ua)
62
+ ? ' ' + bb + RegExp.$1 + ' ' + bb + RegExp.$1 + RegExp.$2.replace('.', '_')
63
+ : /Blackberry ?(([0-9]+)([a-z]?))[/|;]/gi.test(ua)
64
+ ? ' ' + bb + RegExp.$2 + (RegExp.$3 ? ' ' + bb + RegExp.$2 + RegExp.$3 : '')
65
+ : '')
66
+ : is('android')
67
+ ? a +
68
+ (/Version\/(\d+)(\.(\d+))+/i.test(ua)
69
+ ? ' ' + a + RegExp.$1 + ' ' + a + RegExp.$1 + RegExp.$2.replace('.', '_')
70
+ : '') +
71
+ (/Android (.+); (.+) Build/i.test(ua)
72
+ ? ' ' + dv + RegExp.$2.replace(/ /g, '_').replace(/-/g, '_')
73
+ : '')
74
+ : is('chrome')
75
+ ? w +
76
+ ' ' +
77
+ c +
78
+ (/chrome\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)
79
+ ? ' ' + c + RegExp.$2 + (RegExp.$4 > 0 ? ' ' + c + RegExp.$2 + '_' + RegExp.$4 : '')
80
+ : '')
81
+ : is('iron')
82
+ ? w + ' iron'
83
+ : is('applewebkit/')
84
+ ? w +
85
+ ' ' +
86
+ s +
87
+ (/version\/((\d+)(\.(\d+))(\.\d+)*)/.test(ua)
88
+ ? ' ' + s + RegExp.$2 + ' ' + s + RegExp.$2 + RegExp.$3.replace('.', '_')
89
+ : / Safari\/(\d+)/i.test(ua)
90
+ ? RegExp.$1 == '419' || RegExp.$1 == '417' || RegExp.$1 == '416' || RegExp.$1 == '412'
91
+ ? ' ' + s + '2_0'
92
+ : RegExp.$1 == '312'
93
+ ? ' ' + s + '1_3'
94
+ : RegExp.$1 == '125'
95
+ ? ' ' + s + '1_2'
96
+ : RegExp.$1 == '85'
97
+ ? ' ' + s + '1_0'
98
+ : ''
99
+ : '')
100
+ : is('mozilla/')
101
+ ? g
102
+ : '',
103
+ is('android|mobi|mobile|j2me|iphone|ipod|ipad|blackberry|playbook|kindle|silk') ? m : '',
104
+ is('j2me')
105
+ ? 'j2me'
106
+ : is('ipad|ipod|iphone')
107
+ ? (/CPU( iPhone)? OS (\d+[_|.]\d+([_|.]\d+)*)/i.test(ua) ? 'ios' + version('ios', RegExp.$2) : '') +
108
+ ' ' +
109
+ (/(ip(ad|od|hone))/gi.test(ua) ? RegExp.$1 : '')
110
+ : is('playbook')
111
+ ? 'playbook'
112
+ : is('kindle|silk')
113
+ ? 'kindle'
114
+ : is('playbook')
115
+ ? 'playbook'
116
+ : is('mac')
117
+ ? 'mac' +
118
+ (/mac os x ((\d+)[.|_](\d+))/.test(ua)
119
+ ? ' mac' + RegExp.$2 + ' mac' + RegExp.$1.replace('.', '_')
120
+ : '')
121
+ : is('win')
122
+ ? 'win' +
123
+ (is('windows nt 6.2')
124
+ ? ' win8'
125
+ : is('windows nt 6.1')
126
+ ? ' win7'
127
+ : is('windows nt 6.0')
128
+ ? ' vista'
129
+ : is('windows nt 5.2') || is('windows nt 5.1')
130
+ ? ' win_xp'
131
+ : is('windows nt 5.0')
132
+ ? ' win_2k'
133
+ : is('windows nt 4.0') || is('WinNT4.0')
134
+ ? ' win_nt'
135
+ : '')
136
+ : is('freebsd')
137
+ ? 'freebsd'
138
+ : is('x11|linux')
139
+ ? 'linux'
140
+ : '',
141
+ /[; |[](([a-z]{2})(-[a-z]{2})?)[)|;|\]]/i.test(ua)
142
+ ? (lang + RegExp.$2).replace('-', '_') + (RegExp.$3 != '' ? (' ' + lang + RegExp.$1).replace('-', '_') : '')
143
+ : '',
144
+ is('ipad|iphone|ipod') && !is('safari') ? 'ipad_app' : '',
145
+ ];
146
+ console.debug(ua);
147
+ function screenSize() {
148
+ var w = window.outerWidth || html.clientWidth;
149
+ var h = window.outerHeight || html.clientHeight;
150
+ uaInfo.orientation = w < h ? 'portrait' : 'landscape';
151
+ html.className = html.className.replace(/ ?orientation_\w+/g, '').replace(/ [min|max|cl]+[w|h]_\d+/g, '');
152
+ for (var i = allScreens - 1; i >= 0; i--) {
153
+ if (w >= screens[i]) {
154
+ uaInfo.maxw = screens[i];
155
+ break;
156
+ }
157
+ }
158
+ var widthClasses = '';
159
+ for (var info in uaInfo) {
160
+ widthClasses += ' ' + info + '_' + uaInfo[info];
161
+ }
162
+ html.className = html.className + widthClasses;
163
+ return widthClasses;
164
+ }
165
+ window.onresize = screenSize;
166
+ screenSize();
167
+ function retina() {
168
+ var r = window.devicePixelRatio > 1;
169
+ if (r) {
170
+ html.className += ' retina';
171
+ } else {
172
+ html.className += ' non-retina';
173
+ }
174
+ }
175
+ retina();
176
+ var cssbs = b.join(' ') + ' js ';
177
+ html.className = (cssbs + html.className.replace(/\b(no[-|_]?)?js\b/g, '')).replace(/^ /, '').replace(/ +/g, ' ');
178
+ return cssbs;
179
+ }
180
+
181
+ // 适配平板设备
182
+ function tabletOrWebScreen() {
183
+ var width = Math.max(screen.width, screen.height);
184
+ var height = Math.min(screen.width, screen.height);
185
+ if (width >= 768 && height >= 768) {
186
+ return true;
187
+ }
188
+ return false;
189
+ }
190
+
191
+ function browser_check(u) {
192
+ try {
193
+ var isTablet = RegExp('ipad|tablet', 'i').test(u);
194
+
195
+ var isTabletScreen = tabletOrWebScreen();
196
+
197
+ if (isTablet || isTabletScreen) {
198
+ var meta = document.querySelector('meta[name="viewport"]');
199
+ if (!meta) {
200
+ // 如果没有找到,创建一个新的meta标签
201
+ meta = document.createElement('meta');
202
+ meta.setAttribute('name', 'viewport');
203
+ document.head.appendChild(meta);
204
+ }
205
+ // 设置initial-scale
206
+ meta.setAttribute('content', 'initial-scale=1.0');
207
+ }
208
+ } catch (error) {
209
+ console.log('browser_check', error);
210
+ }
211
+ }
212
+
213
+ css_browser_selector(navigator.userAgent);
214
+
215
+ browser_check(navigator.userAgent);
@@ -0,0 +1,63 @@
1
+ #root {
2
+ width: 100%;
3
+ height: 100%;
4
+ }
5
+ /* width */
6
+ .win ::-webkit-scrollbar {
7
+ width: 8px;
8
+ height: 8px;
9
+ }
10
+
11
+ /* Track */
12
+ .win ::-webkit-scrollbar-track {
13
+ background: var(--colorBgScrollTrack);
14
+ }
15
+
16
+ /* Handle */
17
+ .win ::-webkit-scrollbar-thumb {
18
+ background: var(--colorBgScrollBar);
19
+ border-radius: 4px;
20
+ }
21
+
22
+ /* Handle on hover */
23
+ .win ::-webkit-scrollbar-thumb:hover {
24
+ background: var(--colorBgScrollBarHover);
25
+ }
26
+
27
+ .win ::-webkit-scrollbar-thumb:active {
28
+ background: var(--colorBgScrollBarActive);
29
+ }
30
+
31
+ .win .rc-virtual-list-scrollbar-thumb {
32
+ background: var(--colorBgScrollBar);
33
+ }
34
+ .win .rc-virtual-list-scrollbar-thumb:hover {
35
+ background: var(--colorBgScrollBarHover);
36
+ }
37
+ .win .rc-virtual-list-scrollbar-thumb:active {
38
+ background: var(--colorBgScrollBarActive);
39
+ }
40
+
41
+ body a {
42
+ color: var(--colorPrimaryText);
43
+ }
44
+
45
+ body a:hover {
46
+ color: var(--colorPrimaryTextHover);
47
+ }
48
+
49
+ body a:active {
50
+ color: var(--colorPrimaryTextActive);
51
+ }
52
+
53
+ .ant-btn-link {
54
+ color: var(--colorPrimaryText);
55
+ }
56
+
57
+ .ant-btn-link:hover {
58
+ color: var(--colorPrimaryTextHover);
59
+ }
60
+
61
+ .ant-btn-link:active {
62
+ color: var(--colorPrimaryTextActive);
63
+ }
Binary file
@@ -0,0 +1,85 @@
1
+ import path from 'node:path';
2
+
3
+ import { defineConfig } from '@rsbuild/core';
4
+ import { pluginLess } from '@rsbuild/plugin-less';
5
+ import { pluginNodePolyfill } from '@rsbuild/plugin-node-polyfill';
6
+ import { pluginReact } from '@rsbuild/plugin-react';
7
+ import { getUmiConfig, IndexGenerator } from '@tego/devkit';
8
+
9
+ const config = getUmiConfig();
10
+
11
+ const pluginDirs = ['packages'].map((item) => path.join(process.cwd(), item));
12
+
13
+ const outputPluginPath = path.join(__dirname, 'src/.plugins');
14
+ const indexGenerator = new IndexGenerator(outputPluginPath, pluginDirs);
15
+ indexGenerator.generate();
16
+
17
+ const rsDefined = {};
18
+ for (const key in config.define) {
19
+ rsDefined[key] = JSON.stringify(config.define[key]);
20
+ }
21
+
22
+ export default defineConfig({
23
+ html: {
24
+ title: 'Tachybase',
25
+ inject: 'body',
26
+ template: 'src/assets/index.html',
27
+ meta: [{ viewport: 'initial-scale=0.1' }],
28
+ favicon: 'src/assets/favicon.ico',
29
+ appIcon: {
30
+ name: 'Tachybase',
31
+ icons: [
32
+ {
33
+ src: 'src/assets/apple-touch-icon.png',
34
+ size: 180,
35
+ target: 'apple-touch-icon',
36
+ },
37
+ {
38
+ src: 'src/assets/android-chrome-192x192.png',
39
+ size: 192,
40
+ target: 'web-app-manifest',
41
+ },
42
+ {
43
+ src: 'src/assets/android-chrome-512x512.png',
44
+ size: 512,
45
+ target: 'web-app-manifest',
46
+ },
47
+ ],
48
+ },
49
+ },
50
+ source: {
51
+ define: {
52
+ ...rsDefined,
53
+ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
54
+ },
55
+ },
56
+ dev: {
57
+ hmr: false,
58
+ writeToDisk: false,
59
+ },
60
+ output: {
61
+ distPath: {
62
+ js: 'assets',
63
+ css: 'assets',
64
+ image: 'assets',
65
+ svg: 'assets',
66
+ font: 'assets',
67
+ media: 'assets',
68
+ },
69
+ minify: true,
70
+ overrideBrowserslist: ['chrome >= 69', 'edge >= 79', 'safari >= 12'],
71
+ },
72
+ server: {
73
+ port: Number(process.env.PORT || 3000),
74
+ open: !process.env.NO_OPEN,
75
+ proxy: {
76
+ ...config.proxy,
77
+ },
78
+ },
79
+ plugins: [pluginReact(), pluginLess(), pluginNodePolyfill()],
80
+ resolve: {
81
+ alias: {
82
+ ...config.alias,
83
+ },
84
+ },
85
+ });
@@ -0,0 +1,4 @@
1
+
2
+ export default function devDynamicImport(packageName: string): Promise<any> {
3
+ return Promise.resolve(null);
4
+ }
package/src/App.tsx ADDED
@@ -0,0 +1,29 @@
1
+ import { Application } from '@tachybase/client';
2
+
3
+ import devDynamicImport from './dynamic-import';
4
+ import { PluginWeb } from './PluginWeb';
5
+
6
+ declare global {
7
+ interface Window {
8
+ __tachybase_public_path__: string;
9
+ __tachybase_api_base_url__: string;
10
+ __tachybase_ws_url__: string;
11
+ __tachybase_ws_path__: string;
12
+ }
13
+ }
14
+
15
+ export const app = new Application({
16
+ apiClient: {
17
+ baseURL: window['__tachybase_api_base_url__'] || process.env.API_BASE_URL || '/api/',
18
+ },
19
+ publicPath: window['__tachybase_public_path__'] || process.env.APP_PUBLIC_PATH || '/',
20
+ plugins: [PluginWeb],
21
+ ws: {
22
+ url: window['__tachybase_ws_url__'] || process.env.WEBSOCKET_URL || '',
23
+ basename: window['__tachybase_ws_path__'] || process.env.WS_PATH || '/ws',
24
+ },
25
+ loadRemotePlugins: true,
26
+ devDynamicImport: devDynamicImport as any,
27
+ });
28
+
29
+ export default app.getRootComponent();
@@ -0,0 +1,29 @@
1
+ import { Application, BuiltInPlugin, Plugin } from '@tachybase/client';
2
+
3
+ const getCurrentTimezone = () => {
4
+ const timezoneOffset = new Date().getTimezoneOffset() / -60;
5
+ const timezone = String(Math.abs(timezoneOffset)).padStart(2, '0') + ':00';
6
+ return (timezoneOffset > 0 ? '+' : '-') + timezone;
7
+ };
8
+
9
+ function getBasename(app: Application) {
10
+ const publicPath = app.getPublicPath();
11
+ const pattern = `^${publicPath}apps/([^/]*)/`;
12
+ const match = location.pathname.match(new RegExp(pattern));
13
+ return match ? match[0] : publicPath;
14
+ }
15
+
16
+ export class PluginWeb extends Plugin {
17
+ async afterAdd() {
18
+ this.router.setType('browser');
19
+ this.router.setBasename(getBasename(this.app));
20
+ this.app.apiClient.axios.interceptors.request.use((config) => {
21
+ config.headers['X-Hostname'] = window?.location?.hostname;
22
+ config.headers['X-Timezone'] = getCurrentTimezone();
23
+ return config;
24
+ });
25
+ await this.app.pm.add(BuiltInPlugin);
26
+ }
27
+ }
28
+
29
+ export default PluginWeb;
Binary file
Binary file
@@ -0,0 +1,10 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" href="/global.css">
5
+ <script src="/browser-checker.js"></script>
6
+ </head>
7
+ <body>
8
+ <div id="<%= mountId %>"></div>
9
+ </body>
10
+ </html>
@@ -0,0 +1,19 @@
1
+ import * as others from '../../../packages/module-pdf/src/client';
2
+
3
+ async function devDynamicImport(packageName: string) {
4
+ if (process.env.NODE_ENV !== 'production') {
5
+ const packageMap = (await import('./.plugins/packageMap.json')).default as Record<string, string>;
6
+ const fileName = packageMap[packageName];
7
+ if (!fileName) {
8
+ return Promise.resolve(null);
9
+ }
10
+ // FIXME: 需要处理这个模块的加载问题
11
+ if (packageName === '@tachybase/module-pdf') {
12
+ return { ...others };
13
+ }
14
+ return await import(`./.plugins/packages/${fileName}`);
15
+ } else {
16
+ return null;
17
+ }
18
+ }
19
+ export default devDynamicImport;
package/src/env.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ /// <reference types="@rsbuild/core/types" />
2
+
3
+ declare var process: any;
package/src/index.tsx ADDED
@@ -0,0 +1,10 @@
1
+ import ReactDOM from 'react-dom/client';
2
+
3
+ import App from './App';
4
+
5
+ const rootEl = document.getElementById('root');
6
+ if (rootEl) {
7
+ const root = ReactDOM.createRoot(rootEl);
8
+ // TODO: strict mode
9
+ root.render(<App />);
10
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": ".",
4
+ "lib": ["DOM", "ES2020"],
5
+ "jsx": "react-jsx",
6
+ "target": "ES2020",
7
+ "noEmit": true,
8
+ "skipLibCheck": true,
9
+ "useDefineForClassFields": true,
10
+
11
+ /* modules */
12
+ "module": "ESNext",
13
+ "isolatedModules": true,
14
+ "resolveJsonModule": true,
15
+ "moduleResolution": "Bundler",
16
+ "allowImportingTsExtensions": true,
17
+
18
+ /* type checking */
19
+ "strict": true,
20
+ "noUnusedLocals": true,
21
+ "noUnusedParameters": true
22
+ },
23
+ "exclude": ["node_modules"],
24
+ "include": ["src/"]
25
+ }