@umijs/plugins 4.0.0-beta.9 → 4.0.0-rc.3

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 (58) hide show
  1. package/README.md +4 -1
  2. package/dist/access.js +73 -1
  3. package/dist/{sass.d.ts → analytics.d.ts} +0 -0
  4. package/dist/analytics.js +67 -0
  5. package/dist/antd.js +89 -145
  6. package/dist/dva.d.ts +3 -0
  7. package/dist/dva.js +168 -4
  8. package/dist/initial-state.js +112 -1
  9. package/dist/layout.js +479 -1
  10. package/dist/locale.d.ts +1 -0
  11. package/dist/locale.js +199 -1
  12. package/dist/model.js +112 -1
  13. package/dist/moment2dayjs.d.ts +3 -0
  14. package/dist/moment2dayjs.js +96 -0
  15. package/dist/qiankun/constants.d.ts +5 -0
  16. package/dist/qiankun/constants.js +8 -0
  17. package/dist/qiankun/master.d.ts +6 -0
  18. package/dist/qiankun/master.js +114 -0
  19. package/dist/qiankun/slave.d.ts +3 -0
  20. package/dist/qiankun/slave.js +141 -0
  21. package/dist/qiankun.js +15 -1
  22. package/dist/request.js +300 -1
  23. package/dist/tailwindcss.d.ts +3 -0
  24. package/dist/tailwindcss.js +38 -0
  25. package/dist/unocss.d.ts +3 -0
  26. package/dist/unocss.js +57 -0
  27. package/dist/utils/astUtils.d.ts +3 -0
  28. package/dist/utils/astUtils.js +34 -0
  29. package/dist/utils/localeUtils.d.ts +33 -0
  30. package/dist/utils/localeUtils.js +135 -0
  31. package/dist/utils/modelUtils.d.ts +35 -0
  32. package/dist/utils/modelUtils.js +145 -0
  33. package/dist/utils/resolveProjectDep.d.ts +5 -0
  34. package/dist/utils/resolveProjectDep.js +15 -0
  35. package/dist/utils/withTmpPath.d.ts +6 -0
  36. package/dist/utils/withTmpPath.js +11 -0
  37. package/libs/dva.ts +10 -0
  38. package/libs/locale/SelectLang.tpl +478 -0
  39. package/libs/locale/locale.tpl +82 -0
  40. package/libs/locale/localeExports.tpl +271 -0
  41. package/libs/locale/runtime.tpl +33 -0
  42. package/libs/model.tsx +140 -0
  43. package/libs/qiankun/master/AntdErrorBoundary.tsx +34 -0
  44. package/libs/qiankun/master/AntdLoader.tsx +15 -0
  45. package/libs/qiankun/master/ErrorBoundary.tsx +7 -0
  46. package/libs/qiankun/master/MicroApp.tsx +262 -0
  47. package/libs/qiankun/master/MicroAppWithMemoHistory.tsx +43 -0
  48. package/libs/qiankun/master/common.ts +133 -0
  49. package/libs/qiankun/master/constants.ts +7 -0
  50. package/libs/qiankun/master/getMicroAppRouteComponent.tsx.tpl +45 -0
  51. package/libs/qiankun/master/masterRuntimePlugin.tsx +130 -0
  52. package/libs/qiankun/master/types.ts +44 -0
  53. package/libs/qiankun/slave/connectMaster.tsx +15 -0
  54. package/libs/qiankun/slave/lifecycles.ts +149 -0
  55. package/libs/qiankun/slave/qiankunModel.ts +19 -0
  56. package/libs/qiankun/slave/slaveRuntimePlugin.ts +21 -0
  57. package/package.json +21 -5
  58. package/dist/sass.js +0 -5
@@ -0,0 +1,478 @@
1
+ import React,{ useState } from 'react';
2
+ {{#Antd}}
3
+ import { Menu, Dropdown } from 'antd';
4
+ import { ClickParam } from 'antd/{{{antdFiles}}}/menu';
5
+ import { DropDownProps } from 'antd/{{{antdFiles}}}/dropdown';
6
+ {{/Antd}}
7
+ import { getLocale, getAllLocales, setLocale } from './localeExports';
8
+
9
+ {{#Antd}}
10
+ export interface HeaderDropdownProps extends DropDownProps {
11
+ overlayClassName?: string;
12
+ placement?:
13
+ | 'bottomLeft'
14
+ | 'bottomRight'
15
+ | 'topLeft'
16
+ | 'topCenter'
17
+ | 'topRight'
18
+ | 'bottomCenter';
19
+ }
20
+
21
+ const HeaderDropdown: React.FC<HeaderDropdownProps> = ({
22
+ overlayClassName: cls,
23
+ ...restProps
24
+ }) => (
25
+ <Dropdown
26
+ overlayClassName={cls}
27
+ {...restProps}
28
+ />
29
+ );
30
+ {{/Antd}}
31
+
32
+ interface LocalData {
33
+ lang: string,
34
+ label?: string,
35
+ icon?: string,
36
+ title?: string,
37
+ }
38
+
39
+ interface SelectLangProps {
40
+ globalIconClassName?: string;
41
+ postLocalesData?: (locales: LocalData[]) => LocalData[];
42
+ onItemClick?: (params: ClickParam) => void;
43
+ className?: string;
44
+ reload?: boolean;
45
+ icon?: React.ReactNode;
46
+ }
47
+
48
+ const transformArrayToObject = (allLangUIConfig:LocalData[])=>{
49
+ return allLangUIConfig.reduce((obj, item) => {
50
+ if(!item.lang){
51
+ return obj;
52
+ }
53
+
54
+ return {
55
+ ...obj,
56
+ [item.lang]: item,
57
+ };
58
+ }, {});
59
+ }
60
+
61
+ const defaultLangUConfigMap = {
62
+ 'ar-EG': {
63
+ lang: 'ar-EG',
64
+ label: 'العربية',
65
+ icon: '🇪🇬',
66
+ title: 'لغة'
67
+ },
68
+ 'az-AZ': {
69
+ lang: 'az-AZ',
70
+ label: 'Azərbaycan dili',
71
+ icon: '🇦🇿',
72
+ title: 'Dil'
73
+ },
74
+ 'bg-BG': {
75
+ lang: 'bg-BG',
76
+ label: 'Български език',
77
+ icon: '🇧🇬',
78
+ title: 'език'
79
+ },
80
+ 'bn-BD': {
81
+ lang: 'bn-BD',
82
+ label: 'বাংলা',
83
+ icon: '🇧🇩',
84
+ title: 'ভাষা'
85
+ },
86
+ 'ca-ES': {
87
+ lang: 'ca-ES',
88
+ label: 'Catalá',
89
+ icon: '🇨🇦',
90
+ title: 'llengua'
91
+ },
92
+ 'cs-CZ': {
93
+ lang: 'cs-CZ',
94
+ label: 'Čeština',
95
+ icon: '🇨🇿',
96
+ title: 'Jazyk'
97
+ },
98
+ 'da-DK': {
99
+ lang: 'da-DK',
100
+ label: 'Dansk',
101
+ icon: '🇩🇰',
102
+ title: 'Sprog'
103
+ },
104
+ 'de-DE': {
105
+ lang: 'de-DE',
106
+ label: 'Deutsch',
107
+ icon: '🇩🇪',
108
+ title: 'Sprache'
109
+ },
110
+ 'el-GR': {
111
+ lang: 'el-GR',
112
+ label: 'Ελληνικά',
113
+ icon: '🇬🇷',
114
+ title: 'Γλώσσα'
115
+ },
116
+ 'en-GB': {
117
+ lang: 'en-GB',
118
+ label: 'English',
119
+ icon: '🇬🇧',
120
+ title: 'Language'
121
+ },
122
+ 'en-US': {
123
+ lang: 'en-US',
124
+ label: 'English',
125
+ icon: '🇺🇸',
126
+ title: 'Language'
127
+ },
128
+ 'es-ES': {
129
+ lang: 'es-ES',
130
+ label: 'Español',
131
+ icon: '🇪🇸',
132
+ title: 'Idioma'
133
+ },
134
+ 'et-EE': {
135
+ lang: 'et-EE',
136
+ label: 'Eesti',
137
+ icon: '🇪🇪',
138
+ title: 'Keel'
139
+ },
140
+ 'fa-IR': {
141
+ lang: 'fa-IR',
142
+ label: 'فارسی',
143
+ icon: '🇮🇷',
144
+ title: 'زبان'
145
+ },
146
+ 'fi-FI': {
147
+ lang: 'fi-FI',
148
+ label: 'Suomi',
149
+ icon: '🇫🇮',
150
+ title: 'Kieli'
151
+ },
152
+ 'fr-BE': {
153
+ lang: 'fr-BE',
154
+ label: 'Français',
155
+ icon: '🇧🇪',
156
+ title: 'Langue'
157
+ },
158
+ 'fr-FR': {
159
+ lang: 'fr-FR',
160
+ label: 'Français',
161
+ icon: '🇫🇷',
162
+ title: 'Langue'
163
+ },
164
+ 'ga-IE': {
165
+ lang: 'ga-IE',
166
+ label: 'Gaeilge',
167
+ icon: '🇮🇪',
168
+ title: 'Teanga'
169
+ },
170
+ 'he-IL': {
171
+ lang: 'he-IL',
172
+ label: 'עברית',
173
+ icon: '🇮🇱',
174
+ title: 'שפה'
175
+ },
176
+ 'hi-IN': {
177
+ lang: 'hi-IN',
178
+ label: 'हिन्दी, हिंदी',
179
+ icon: '🇮🇳',
180
+ title: 'भाषा: हिन्दी'
181
+ },
182
+ 'hr-HR': {
183
+ lang: 'hr-HR',
184
+ label: 'Hrvatski jezik',
185
+ icon: '🇭🇷',
186
+ title: 'Jezik'
187
+ },
188
+ 'hu-HU': {
189
+ lang: 'hu-HU',
190
+ label: 'Magyar',
191
+ icon: '🇭🇺',
192
+ title: 'Nyelv'
193
+ },
194
+ 'hy-AM': {
195
+ lang: 'hu-HU',
196
+ label: 'Հայերեն',
197
+ icon: '🇦🇲',
198
+ title: 'Լեզու'
199
+ },
200
+ 'id-ID': {
201
+ lang: 'id-ID',
202
+ label: 'Bahasa Indonesia',
203
+ icon: '🇮🇩',
204
+ title: 'Bahasa'
205
+ },
206
+ 'it-IT': {
207
+ lang: 'it-IT',
208
+ label: 'Italiano',
209
+ icon: '🇮🇹',
210
+ title: 'Linguaggio'
211
+ },
212
+ 'is-IS': {
213
+ lang: 'is-IS',
214
+ label: 'Íslenska',
215
+ icon: '🇮🇸',
216
+ title: 'Tungumál'
217
+ },
218
+ 'ja-JP': {
219
+ lang: 'ja-JP',
220
+ label: '日本語',
221
+ icon: '🇯🇵',
222
+ title: '言語'
223
+ },
224
+ 'ku-IQ': {
225
+ lang: 'ku-IQ',
226
+ label: 'کوردی',
227
+ icon: '🇮🇶',
228
+ title: 'Ziman'
229
+ },
230
+ 'kn-IN': {
231
+ lang: 'zh-TW',
232
+ label: 'ಕನ್ನಡ',
233
+ icon: '🇮🇳',
234
+ title: 'ಭಾಷೆ'
235
+ },
236
+ 'ko-KR': {
237
+ lang: 'ko-KR',
238
+ label: '한국어',
239
+ icon: '🇰🇷',
240
+ title: '언어'
241
+ },
242
+ 'lv-LV': {
243
+ lang: 'lv-LV',
244
+ label: 'Latviešu valoda',
245
+ icon: '🇱🇮',
246
+ title: 'Kalba'
247
+ },
248
+ 'mk-MK': {
249
+ lang: 'mk-MK',
250
+ label: 'македонски јазик',
251
+ icon: '🇲🇰',
252
+ title: 'Јазик'
253
+ },
254
+ 'mn-MN': {
255
+ lang: 'mn-MN',
256
+ label: 'Монгол хэл',
257
+ icon: '🇲🇳',
258
+ title: 'Хэл'
259
+ },
260
+ 'ms-MY': {
261
+ lang: 'ms-MY',
262
+ label: 'بهاس ملايو‎',
263
+ icon: '🇲🇾',
264
+ title: 'Bahasa'
265
+ },
266
+ 'nb-NO': {
267
+ lang: 'nb-NO',
268
+ label: 'Norsk',
269
+ icon: '🇳🇴',
270
+ title: 'Språk'
271
+ },
272
+ 'ne-NP': {
273
+ lang: 'ne-NP',
274
+ label: 'नेपाली',
275
+ icon: '🇳🇵',
276
+ title: 'भाषा'
277
+ },
278
+ 'nl-BE': {
279
+ lang: 'nl-BE',
280
+ label: 'Vlaams',
281
+ icon: '🇧🇪',
282
+ title: 'Taal'
283
+ },
284
+ 'nl-NL': {
285
+ lang: 'nl-NL',
286
+ label: 'Vlaams',
287
+ icon: '🇳🇱',
288
+ title: 'Taal'
289
+ },
290
+ 'pl-PL': {
291
+ lang: 'pl-PL',
292
+ label: 'Polski',
293
+ icon: '🇵🇱',
294
+ title: 'Język'
295
+ },
296
+ 'pt-BR': {
297
+ lang: 'pt-BR',
298
+ label: 'Português',
299
+ icon: '🇧🇷',
300
+ title: 'Idiomas'
301
+ },
302
+ 'pt-PT': {
303
+ lang: 'pt-PT',
304
+ label: 'Português',
305
+ icon: '🇵🇹',
306
+ title: 'Idiomas'
307
+ },
308
+ 'ro-RO': {
309
+ lang: 'ro-RO',
310
+ label: 'Română',
311
+ icon: '🇷🇴',
312
+ title: 'Limba'
313
+ },
314
+ 'ru-RU': {
315
+ lang: 'ru-RU',
316
+ label: 'Русский',
317
+ icon: '🇷🇺',
318
+ title: 'язык'
319
+ },
320
+ 'sk-SK': {
321
+ lang: 'sk-SK',
322
+ label: 'Slovenčina',
323
+ icon: '🇸🇰',
324
+ title: 'Jazyk'
325
+ },
326
+ 'sr-RS': {
327
+ lang: 'sr-RS',
328
+ label: 'српски језик',
329
+ icon: '🇸🇷',
330
+ title: 'Језик'
331
+ },
332
+ 'sl-SI': {
333
+ lang: 'sl-SI',
334
+ label: 'Slovenščina',
335
+ icon: '🇸🇱',
336
+ title: 'Jezik'
337
+ },
338
+ 'sv-SE': {
339
+ lang: 'sv-SE',
340
+ label: 'Svenska',
341
+ icon: '🇸🇪',
342
+ title: 'Språk'
343
+ },
344
+ 'ta-IN': {
345
+ lang: 'ta-IN',
346
+ label: 'தமிழ்',
347
+ icon: '🇮🇳',
348
+ title: 'மொழி'
349
+ },
350
+ 'th-TH': {
351
+ lang: 'th-TH',
352
+ label: 'ไทย',
353
+ icon: '🇹🇭',
354
+ title: 'ภาษา'
355
+ },
356
+ 'tr-TR': {
357
+ lang: 'tr-TR',
358
+ label: 'Türkçe',
359
+ icon: '🇹🇷',
360
+ title: 'Dil'
361
+ },
362
+ 'uk-UA': {
363
+ lang: 'uk-UA',
364
+ label: 'Українська',
365
+ icon: '🇺🇰',
366
+ title: 'Мова'
367
+ },
368
+ 'vi-VN': {
369
+ lang: 'vi-VN',
370
+ label: 'Tiếng Việt',
371
+ icon: '🇻🇳',
372
+ title: 'Ngôn ngữ'
373
+ },
374
+ 'zh-CN': {
375
+ lang: 'zh-CN',
376
+ label: '简体中文',
377
+ icon: '🇨🇳',
378
+ title: '语言'
379
+ },
380
+ 'zh-TW': {
381
+ lang: 'zh-TW',
382
+ label: '繁體中文',
383
+ icon: '🇭🇰',
384
+ title: '語言'
385
+ }
386
+ };
387
+
388
+ export const SelectLang: React.FC<SelectLangProps> = (props) => {
389
+ {{#ShowSelectLang}}
390
+ const {
391
+ globalIconClassName,
392
+ postLocalesData,
393
+ onItemClick,
394
+ icon,
395
+ style,
396
+ reload,
397
+ ...restProps
398
+ } = props;
399
+ const [selectedLang, setSelectedLang] = useState(() => getLocale());
400
+
401
+ const changeLang = ({ key }: ClickParam): void => {
402
+ setLocale(key, reload);
403
+ setSelectedLang(getLocale())
404
+ };
405
+
406
+
407
+ const defaultLangUConfig = getAllLocales().map(
408
+ (key) =>
409
+ defaultLangUConfigMap[key] || {
410
+ lang: key,
411
+ label: key,
412
+ icon: "🌐",
413
+ title: key,
414
+ }
415
+ );
416
+
417
+ const allLangUIConfig =
418
+ postLocalesData?.(defaultLangUConfig) || defaultLangUConfig;
419
+ const handleClick = onItemClick
420
+ ? (params: ClickParam) => onItemClick(params)
421
+ : changeLang;
422
+
423
+ const menuItemStyle = { minWidth: "160px" };
424
+ const menuItemIconStyle = { marginRight: "8px" };
425
+ const langMenu = (
426
+ <Menu selectedKeys={[selectedLang]} onClick={handleClick}>
427
+ {allLangUIConfig.map((localeObj) => {
428
+ return (
429
+ <Menu.Item key={localeObj.lang || localeObj.key} style={menuItemStyle}>
430
+ <span role="img" aria-label={localeObj?.label || "en-US"} style={menuItemIconStyle}>
431
+ {localeObj?.icon || "🌐"}
432
+ </span>
433
+ {localeObj?.label || "en-US"}
434
+ </Menu.Item>
435
+ );
436
+ })}
437
+ </Menu>
438
+ );
439
+
440
+ const inlineStyle = {
441
+ cursor: "pointer",
442
+ padding: "12px",
443
+ display: "inline-flex",
444
+ alignItems: "center",
445
+ justifyContent: "center",
446
+ fontSize: 18,
447
+ verticalAlign: "middle",
448
+ ...style,
449
+ };
450
+
451
+ return (
452
+ <HeaderDropdown overlay={langMenu} placement="bottomRight" {...restProps}>
453
+ <span className={globalIconClassName} style={inlineStyle}>
454
+ <i className="anticon" title={allLangUIConfig[selectedLang]?.title}>
455
+ { icon ?
456
+ icon : (
457
+ <svg
458
+ viewBox="0 0 24 24"
459
+ focusable="false"
460
+ width="1em"
461
+ height="1em"
462
+ fill="currentColor"
463
+ aria-hidden="true"
464
+ >
465
+ <path d="M0 0h24v24H0z" fill="none" />
466
+ <path
467
+ d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z "
468
+ className="css-c4d79v"
469
+ />
470
+ </svg>
471
+ )}
472
+ </i>
473
+ </span>
474
+ </HeaderDropdown>
475
+ );
476
+ {{/ShowSelectLang}}
477
+ return <></>
478
+ };
@@ -0,0 +1,82 @@
1
+ import React from 'react';
2
+ {{#Antd}}
3
+ import { ConfigProvider } from 'antd';
4
+ {{/Antd}}
5
+
6
+ {{#MomentLocales.length}}
7
+ import moment from '{{{momentPkgPath}}}';
8
+ {{#MomentLocales}}
9
+ import '{{{momentPkgPath}}}/locale/{{.}}';
10
+ {{/MomentLocales}}
11
+ {{/MomentLocales.length}}
12
+ import { RawIntlProvider, getLocale, getDirection , setIntl, getIntl, localeInfo, event, LANG_CHANGE_EVENT } from './localeExports';
13
+
14
+ {{#DefaultAntdLocales}}
15
+ import {{NormalizeAntdLocalesName}} from '{{{.}}}';
16
+ {{/DefaultAntdLocales}}
17
+
18
+
19
+
20
+ export function _onCreate() {
21
+ const locale = getLocale();
22
+ {{#MomentLocales.length}}
23
+ if (moment?.locale) {
24
+ moment.locale(localeInfo[locale]?.momentLocale || '{{{DefaultMomentLocale}}}');
25
+ }
26
+ {{/MomentLocales.length}}
27
+ setIntl(locale);
28
+ }
29
+
30
+ const useIsomorphicLayoutEffect =
31
+ typeof window !== 'undefined' &&
32
+ typeof window.document !== 'undefined' &&
33
+ typeof window.document.createElement !== 'undefined'
34
+ ? React.useLayoutEffect
35
+ : React.useEffect
36
+
37
+ export const _LocaleContainer = (props:any) => {
38
+ const initLocale = getLocale();
39
+ const [locale, setLocale] = React.useState(initLocale);
40
+ const [intl, setContainerIntl] = React.useState(() => getIntl(locale, true));
41
+
42
+ const handleLangChange = (locale:string) => {
43
+ {{#MomentLocales.length}}
44
+ if (moment?.locale) {
45
+ moment.locale(localeInfo[locale]?.momentLocale || 'en');
46
+ }
47
+ {{/MomentLocales.length}}
48
+ setLocale(locale);
49
+ setContainerIntl(getIntl(locale));
50
+ };
51
+
52
+ useIsomorphicLayoutEffect(() => {
53
+ event.on(LANG_CHANGE_EVENT, handleLangChange);
54
+ {{#Title}}
55
+ // avoid reset route title
56
+ if (typeof document !== 'undefined' && intl.messages['{{.}}']) {
57
+ document.title = intl.formatMessage({ id: '{{.}}' });
58
+ }
59
+ {{/Title}}
60
+ return () => {
61
+ event.off(LANG_CHANGE_EVENT, handleLangChange);
62
+ };
63
+ }, []);
64
+
65
+ {{#Antd}}
66
+ const defaultAntdLocale = {
67
+ {{#DefaultAntdLocales}}
68
+ ...{{NormalizeAntdLocalesName}},
69
+ {{/DefaultAntdLocales}}
70
+ }
71
+ const direction = getDirection();
72
+
73
+ return (
74
+ <ConfigProvider direction={direction} locale={localeInfo[locale]?.antd || defaultAntdLocale}>
75
+ <RawIntlProvider value={intl}>{props.children}</RawIntlProvider>
76
+ </ConfigProvider>
77
+ )
78
+ {{/Antd}}
79
+ {{^Antd}}
80
+ return <RawIntlProvider value={intl}>{props.children}</RawIntlProvider>;
81
+ {{/Antd}}
82
+ };