@mantou/gem 1.5.6 → 1.5.7
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.
- package/helper/i18n.d.ts +2 -4
- package/helper/i18n.d.ts.map +1 -1
- package/helper/i18n.js +69 -34
- package/helper/i18n.js.map +1 -1
- package/helper/mediaquery.d.ts +2 -0
- package/helper/mediaquery.d.ts.map +1 -1
- package/helper/mediaquery.js +18 -13
- package/helper/mediaquery.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/src/examples/i18n/index.ts +14 -0
- package/src/helper/i18n.ts +41 -13
- package/src/helper/mediaquery.ts +20 -13
- package/src/lib/version.ts +1 -1
- package/umd.js +4 -4
- package/umd.js.map +1 -1
package/helper/i18n.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ interface Options<T> {
|
|
|
26
26
|
onChange?: (currentLanguage: string) => void;
|
|
27
27
|
}
|
|
28
28
|
export declare class I18n<T = Record<string, Msg>> {
|
|
29
|
+
#private;
|
|
29
30
|
resources: Resources<T>;
|
|
30
31
|
fallbackLanguage: string;
|
|
31
32
|
currentLanguage: string;
|
|
@@ -35,10 +36,6 @@ export declare class I18n<T = Record<string, Msg>> {
|
|
|
35
36
|
urlParamsName?: string;
|
|
36
37
|
onChange?: (currentLanguage: string) => void;
|
|
37
38
|
store: Store<any>;
|
|
38
|
-
get cacheCurrentKey(): string;
|
|
39
|
-
get urlParamsLang(): string | undefined;
|
|
40
|
-
get cacheLang(): string;
|
|
41
|
-
set lang(lang: string);
|
|
42
39
|
constructor(options: Options<T>);
|
|
43
40
|
get(s: keyof T): string;
|
|
44
41
|
get(s: keyof T, ...rest: (((s: string) => TemplateResult) | string)[]): TemplateResult;
|
|
@@ -46,6 +43,7 @@ export declare class I18n<T = Record<string, Msg>> {
|
|
|
46
43
|
setLanguage(lang: string): Promise<string>;
|
|
47
44
|
resetLanguage(): Promise<string>;
|
|
48
45
|
setCache(): void;
|
|
46
|
+
createSubModule<K = Record<string, Msg>>(name: string, resources: Resources<K>): I18n<K>;
|
|
49
47
|
/**
|
|
50
48
|
* prepare: @connectStore(i18n.store)
|
|
51
49
|
*
|
package/helper/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/helper/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAQ,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/helper/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAQ,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAWtD,aAAK,GAAG,GACJ;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,GACD,MAAM,CAAC;AAEX,oBAAY,QAAQ,CAAC,CAAC,IAAI;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACjC,CAAC;AAEF,UAAU,SAAS,CAAC,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CACpC;AAED,UAAU,OAAO,CAAC,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAG3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;IACvC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,WAAW,SAAc;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAsCN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IA6B/B,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM;IACvB,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,cAAc,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,cAAc;IAoBtF,cAAc;IAUR,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwDhD,aAAa;IAYb,QAAQ;IAOR,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAY9E;;;;;;;;;;OAUG;IACH,MAAM;;;;CAMP"}
|
package/helper/i18n.js
CHANGED
|
@@ -7,6 +7,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
12
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
13
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
14
|
+
};
|
|
15
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
16
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
17
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
18
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
19
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
20
|
+
};
|
|
21
|
+
var _I18n_instances, _I18n_cacheCurrentKey_get, _I18n_urlParamsLang_get, _I18n_cacheLang_get, _I18n_isMain_get, _I18n_lang_set;
|
|
10
22
|
import { createStore, updateStore } from '../lib/store';
|
|
11
23
|
import { html } from '../lib/element';
|
|
12
24
|
import { GemError } from '../lib/utils';
|
|
@@ -16,15 +28,17 @@ import { GemError } from '../lib/utils';
|
|
|
16
28
|
const splitReg = /\$\d(?:<[^>]*>)?/;
|
|
17
29
|
const matchReg = /\$(\d)(<([^>]*)>)?/g;
|
|
18
30
|
const matchStrIndex = 3;
|
|
31
|
+
const modules = new Set();
|
|
19
32
|
export class I18n {
|
|
20
33
|
constructor(options) {
|
|
34
|
+
_I18n_instances.add(this);
|
|
21
35
|
this.cachePrefix = 'gem-i18n';
|
|
22
36
|
if (!options.resources[options.fallbackLanguage]) {
|
|
23
37
|
throw new GemError('i18n: fallbackLanguage invalid');
|
|
24
38
|
}
|
|
25
39
|
this.store = createStore(this);
|
|
26
40
|
Object.assign(this, options);
|
|
27
|
-
let currentLanguage = this
|
|
41
|
+
let currentLanguage = __classPrivateFieldGet(this, _I18n_instances, "a", _I18n_urlParamsLang_get) || this.currentLanguage || __classPrivateFieldGet(this, _I18n_instances, "a", _I18n_cacheLang_get);
|
|
28
42
|
const ele = document.querySelector(`[type*=${this.cachePrefix}]`);
|
|
29
43
|
if (ele) {
|
|
30
44
|
try {
|
|
@@ -37,40 +51,13 @@ export class I18n {
|
|
|
37
51
|
}
|
|
38
52
|
}
|
|
39
53
|
if (currentLanguage) {
|
|
40
|
-
this
|
|
54
|
+
__classPrivateFieldSet(this, _I18n_instances, currentLanguage, "a", _I18n_lang_set);
|
|
41
55
|
this.setLanguage(currentLanguage);
|
|
42
56
|
}
|
|
43
57
|
else {
|
|
44
58
|
this.resetLanguage();
|
|
45
59
|
}
|
|
46
60
|
}
|
|
47
|
-
get cacheCurrentKey() {
|
|
48
|
-
return `${this.cachePrefix}:current`;
|
|
49
|
-
}
|
|
50
|
-
get urlParamsLang() {
|
|
51
|
-
const { hostname, pathname, search } = location;
|
|
52
|
-
const parts = hostname.split('.');
|
|
53
|
-
switch (this.urlParamsType) {
|
|
54
|
-
case 'ccTLD':
|
|
55
|
-
return parts.pop();
|
|
56
|
-
case 'gTLD':
|
|
57
|
-
return parts.shift();
|
|
58
|
-
case 'path':
|
|
59
|
-
return pathname.split('/')[1];
|
|
60
|
-
default:
|
|
61
|
-
const fragment = (this.urlParamsName && new URLSearchParams(search).get(this.urlParamsName)) || '';
|
|
62
|
-
return fragment in this.resources ? fragment : '';
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
get cacheLang() {
|
|
66
|
-
return (this.cache && localStorage.getItem(this.cacheCurrentKey)) || '';
|
|
67
|
-
}
|
|
68
|
-
set lang(lang) {
|
|
69
|
-
var _a;
|
|
70
|
-
this.currentLanguage = lang;
|
|
71
|
-
document.documentElement.lang = lang;
|
|
72
|
-
(_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this, lang);
|
|
73
|
-
}
|
|
74
61
|
get(s, ...rest) {
|
|
75
62
|
const currentLanguagePack = this.resources[this.currentLanguage];
|
|
76
63
|
const fallbackLanguagePack = this.resources[this.fallbackLanguage];
|
|
@@ -101,11 +88,14 @@ export class I18n {
|
|
|
101
88
|
}
|
|
102
89
|
setLanguage(lang) {
|
|
103
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
if (__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_isMain_get)) {
|
|
92
|
+
modules.forEach((i18n) => __awaiter(this, void 0, void 0, function* () { return yield i18n.setLanguage(lang); }));
|
|
93
|
+
}
|
|
104
94
|
let pack;
|
|
105
95
|
const data = this.resources[lang];
|
|
106
96
|
if (!data) {
|
|
107
97
|
// eslint-disable-next-line no-console
|
|
108
|
-
console.warn(
|
|
98
|
+
console.warn(`${this.cachePrefix}: not found \`${lang}\``);
|
|
109
99
|
return this.resetLanguage();
|
|
110
100
|
}
|
|
111
101
|
if (typeof data === 'string') {
|
|
@@ -144,7 +134,7 @@ export class I18n {
|
|
|
144
134
|
this.resources[lang] = pack;
|
|
145
135
|
updateStore(this.store, {});
|
|
146
136
|
if (lang !== this.currentLanguage) {
|
|
147
|
-
this
|
|
137
|
+
__classPrivateFieldSet(this, _I18n_instances, lang, "a", _I18n_lang_set);
|
|
148
138
|
}
|
|
149
139
|
// auto cache
|
|
150
140
|
if (this.cache === true) {
|
|
@@ -154,15 +144,32 @@ export class I18n {
|
|
|
154
144
|
});
|
|
155
145
|
}
|
|
156
146
|
resetLanguage() {
|
|
157
|
-
this
|
|
147
|
+
if (__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_isMain_get)) {
|
|
148
|
+
modules.forEach((i18n) => i18n.resetLanguage());
|
|
149
|
+
}
|
|
150
|
+
__classPrivateFieldSet(this, _I18n_instances, this.fallbackLanguage, "a", _I18n_lang_set);
|
|
158
151
|
if (this.cache) {
|
|
159
|
-
localStorage.removeItem(this
|
|
152
|
+
localStorage.removeItem(__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_cacheCurrentKey_get));
|
|
160
153
|
}
|
|
161
154
|
return this.setLanguage(this.detectLanguage());
|
|
162
155
|
}
|
|
163
156
|
// 一般用在 `onChange` 中
|
|
164
157
|
setCache() {
|
|
165
|
-
|
|
158
|
+
if (__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_isMain_get)) {
|
|
159
|
+
modules.forEach((i18n) => i18n.setCache());
|
|
160
|
+
}
|
|
161
|
+
localStorage.setItem(__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_cacheCurrentKey_get), this.currentLanguage);
|
|
162
|
+
}
|
|
163
|
+
createSubModule(name, resources) {
|
|
164
|
+
const module = new I18n({
|
|
165
|
+
resources,
|
|
166
|
+
cachePrefix: `${this.cachePrefix}-${name}`,
|
|
167
|
+
currentLanguage: this.currentLanguage,
|
|
168
|
+
fallbackLanguage: this.fallbackLanguage,
|
|
169
|
+
cache: this.cache,
|
|
170
|
+
});
|
|
171
|
+
modules.add(module);
|
|
172
|
+
return module;
|
|
166
173
|
}
|
|
167
174
|
/**
|
|
168
175
|
* prepare: @connectStore(i18n.store)
|
|
@@ -182,4 +189,32 @@ export class I18n {
|
|
|
182
189
|
};
|
|
183
190
|
}
|
|
184
191
|
}
|
|
192
|
+
_I18n_instances = new WeakSet(), _I18n_cacheCurrentKey_get = function _I18n_cacheCurrentKey_get() {
|
|
193
|
+
return `${this.cachePrefix}:current`;
|
|
194
|
+
}, _I18n_urlParamsLang_get = function _I18n_urlParamsLang_get() {
|
|
195
|
+
const { hostname, pathname, search } = location;
|
|
196
|
+
const parts = hostname.split('.');
|
|
197
|
+
switch (this.urlParamsType) {
|
|
198
|
+
case 'ccTLD':
|
|
199
|
+
return parts.pop();
|
|
200
|
+
case 'gTLD':
|
|
201
|
+
return parts.shift();
|
|
202
|
+
case 'path':
|
|
203
|
+
return pathname.split('/')[1];
|
|
204
|
+
default:
|
|
205
|
+
const fragment = (this.urlParamsName && new URLSearchParams(search).get(this.urlParamsName)) || '';
|
|
206
|
+
return fragment in this.resources ? fragment : '';
|
|
207
|
+
}
|
|
208
|
+
}, _I18n_cacheLang_get = function _I18n_cacheLang_get() {
|
|
209
|
+
return (this.cache && localStorage.getItem(__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_cacheCurrentKey_get))) || '';
|
|
210
|
+
}, _I18n_isMain_get = function _I18n_isMain_get() {
|
|
211
|
+
return !modules.has(this);
|
|
212
|
+
}, _I18n_lang_set = function _I18n_lang_set(lang) {
|
|
213
|
+
var _a;
|
|
214
|
+
if (__classPrivateFieldGet(this, _I18n_instances, "a", _I18n_isMain_get)) {
|
|
215
|
+
document.documentElement.lang = lang;
|
|
216
|
+
}
|
|
217
|
+
this.currentLanguage = lang;
|
|
218
|
+
(_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this, lang);
|
|
219
|
+
};
|
|
185
220
|
//# sourceMappingURL=i18n.js.map
|
package/helper/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/helper/i18n.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/helper/i18n.ts"],"names":[],"mappings":"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"}
|
package/helper/mediaquery.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaquery.d.ts","sourceRoot":"","sources":["../src/helper/mediaquery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mediaquery.d.ts","sourceRoot":"","sources":["../src/helper/mediaquery.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEtB,CAAC"}
|
package/helper/mediaquery.js
CHANGED
|
@@ -1,59 +1,64 @@
|
|
|
1
1
|
// https://gist.github.com/gokulkrishh/242e68d1ee94ad05f488
|
|
2
2
|
// https://mediag.com/news/popular-screen-resolutions-designing-for-all/
|
|
3
|
+
const matche = (query) => window.matchMedia(query).matches;
|
|
3
4
|
export const mediaQuery = {
|
|
4
5
|
PRINT: 'print',
|
|
5
6
|
get isPrint() {
|
|
6
|
-
return
|
|
7
|
+
return matche(this.PRINT);
|
|
7
8
|
},
|
|
8
9
|
HOVER: '(hover: hover)',
|
|
9
10
|
get isHover() {
|
|
10
|
-
return
|
|
11
|
+
return matche(this.HOVER);
|
|
11
12
|
},
|
|
12
13
|
PHONE: '(min-width: 319px) and (max-width: 480px)',
|
|
13
14
|
get isPhone() {
|
|
14
|
-
return
|
|
15
|
+
return matche(this.PHONE);
|
|
15
16
|
},
|
|
16
17
|
LAPTOP: '(min-width: 1023px) and (max-width: 1280px) and (orientation: landscape)',
|
|
17
18
|
get isLaptop() {
|
|
18
|
-
return
|
|
19
|
+
return matche(this.LAPTOP);
|
|
19
20
|
},
|
|
20
21
|
DESKTOP: '(min-width: 1279px) and (orientation: landscape)',
|
|
21
22
|
get isDesktop() {
|
|
22
|
-
return
|
|
23
|
+
return matche(this.DESKTOP);
|
|
24
|
+
},
|
|
25
|
+
WIDTHSCREEN: '(min-width: 1919px) and (orientation: landscape)',
|
|
26
|
+
get isWidthScreen() {
|
|
27
|
+
return matche(this.WIDTHSCREEN);
|
|
23
28
|
},
|
|
24
29
|
PHONE_LANDSCAPE: '(min-width: 479px) and (max-width: 767px) and (orientation: landscape)',
|
|
25
30
|
// PHONE_LANDSCAPE: '(min-width: 481px) and (max-width: 767px)',
|
|
26
31
|
get isPhoneLandscape() {
|
|
27
|
-
return
|
|
32
|
+
return matche(this.PHONE_LANDSCAPE);
|
|
28
33
|
},
|
|
29
34
|
TABLET: '(min-width: 768px) and (max-width: 1024px)',
|
|
30
35
|
get isTablet() {
|
|
31
|
-
return
|
|
36
|
+
return matche(this.TABLET);
|
|
32
37
|
},
|
|
33
38
|
SMALL_PHONE: '(min-width: 319px) and (max-width: 480px) and (max-height: 640px)',
|
|
34
39
|
get isSmallPhone() {
|
|
35
|
-
return
|
|
40
|
+
return matche(this.SMALL_PHONE);
|
|
36
41
|
},
|
|
37
42
|
WATCH: '(max-width: 319px)',
|
|
38
43
|
get isWatch() {
|
|
39
|
-
return
|
|
44
|
+
return matche(this.WATCH);
|
|
40
45
|
},
|
|
41
46
|
SHORT: '(min-width: 479px) and (max-height: 320px)',
|
|
42
47
|
get isShort() {
|
|
43
|
-
return
|
|
48
|
+
return matche(this.SHORT);
|
|
44
49
|
},
|
|
45
50
|
PWA: '(display-mode: standalone)',
|
|
46
51
|
// PWA: '(display-mode: browser)', // debugging
|
|
47
52
|
get isPWA() {
|
|
48
|
-
return
|
|
53
|
+
return matche(this.PWA);
|
|
49
54
|
},
|
|
50
55
|
MOTION_REDUCE: '(prefers-reduced-motion: reduce)',
|
|
51
56
|
get isMotionReduce() {
|
|
52
|
-
return
|
|
57
|
+
return matche(this.MOTION_REDUCE);
|
|
53
58
|
},
|
|
54
59
|
DATA_REDUCE: '(prefers-reduced-data: reduce)',
|
|
55
60
|
get isDataReduce() {
|
|
56
|
-
return
|
|
61
|
+
return matche(this.DATA_REDUCE);
|
|
57
62
|
},
|
|
58
63
|
};
|
|
59
64
|
//# sourceMappingURL=mediaquery.js.map
|
package/helper/mediaquery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaquery.js","sourceRoot":"","sources":["../src/helper/mediaquery.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,wEAAwE;AAExE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,IAAI,OAAO;QACT,OAAO,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"mediaquery.js","sourceRoot":"","sources":["../src/helper/mediaquery.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,wEAAwE;AAExE,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAEnE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,IAAI,OAAO;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,EAAE,gBAAgB;IACvB,IAAI,OAAO;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,EAAE,2CAA2C;IAClD,IAAI,OAAO;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,EAAE,0EAA0E;IAClF,IAAI,QAAQ;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,kDAAkD;IAC3D,IAAI,SAAS;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,EAAE,kDAAkD;IAC/D,IAAI,aAAa;QACf,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,eAAe,EAAE,wEAAwE;IACzF,gEAAgE;IAChE,IAAI,gBAAgB;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,EAAE,4CAA4C;IACpD,IAAI,QAAQ;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,EAAE,mEAAmE;IAChF,IAAI,YAAY;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,EAAE,oBAAoB;IAC3B,IAAI,OAAO;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,EAAE,4CAA4C;IACnD,IAAI,OAAO;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,EAAE,4BAA4B;IACjC,+CAA+C;IAC/C,IAAI,KAAK;QACP,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa,EAAE,kCAAkC;IACjD,IAAI,cAAc;QAChB,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,EAAE,gCAAgC;IAC7C,IAAI,YAAY;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.5.
|
|
1
|
+
export declare const version = "1.5.7";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -22,7 +22,16 @@ const i18n = new I18n<typeof en>({
|
|
|
22
22
|
onChange: console.log,
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
+
const i18nModule = i18n.createSubModule<typeof en>('test', {
|
|
26
|
+
en,
|
|
27
|
+
de: {
|
|
28
|
+
title: 'Das ist I18n',
|
|
29
|
+
},
|
|
30
|
+
zh: 'data:text/plain;base64,eyJ0aXRsZSI6Iui/meaYr0kxOG4ifQ==',
|
|
31
|
+
});
|
|
32
|
+
|
|
25
33
|
@connectStore(i18n.store)
|
|
34
|
+
@connectStore(i18nModule.store)
|
|
26
35
|
@customElement('app-root')
|
|
27
36
|
export class App extends GemElement {
|
|
28
37
|
render() {
|
|
@@ -35,6 +44,11 @@ export class App extends GemElement {
|
|
|
35
44
|
<p>${i18n.get('title')}</p>
|
|
36
45
|
<p>${i18n.get('hello', 'World', 'reverse')}</p>
|
|
37
46
|
<p>${i18n.get('detail', (s) => html`<a href="#">${s}</a>`)}</p>
|
|
47
|
+
|
|
48
|
+
<h2>sub module</h2>
|
|
49
|
+
<p>${i18nModule.get('title')}</p>
|
|
50
|
+
<p>${i18nModule.get('hello', 'World', 'reverse')}</p>
|
|
51
|
+
<p>${i18nModule.get('detail', (s) => html`<a href="#">${s}</a>`)}</p>
|
|
38
52
|
`;
|
|
39
53
|
}
|
|
40
54
|
}
|
package/src/helper/i18n.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { GemError } from '../lib/utils';
|
|
|
8
8
|
const splitReg = /\$\d(?:<[^>]*>)?/;
|
|
9
9
|
const matchReg = /\$(\d)(<([^>]*)>)?/g;
|
|
10
10
|
const matchStrIndex = 3;
|
|
11
|
+
const modules = new Set<I18n<any>>();
|
|
11
12
|
|
|
12
13
|
type Msg =
|
|
13
14
|
| {
|
|
@@ -56,11 +57,11 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
56
57
|
|
|
57
58
|
store: Store<any>;
|
|
58
59
|
|
|
59
|
-
get cacheCurrentKey() {
|
|
60
|
+
get #cacheCurrentKey() {
|
|
60
61
|
return `${this.cachePrefix}:current`;
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
get urlParamsLang() {
|
|
64
|
+
get #urlParamsLang() {
|
|
64
65
|
const { hostname, pathname, search } = location;
|
|
65
66
|
const parts = hostname.split('.');
|
|
66
67
|
switch (this.urlParamsType) {
|
|
@@ -76,13 +77,19 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
get cacheLang() {
|
|
80
|
-
return (this.cache && localStorage.getItem(this
|
|
80
|
+
get #cacheLang() {
|
|
81
|
+
return (this.cache && localStorage.getItem(this.#cacheCurrentKey)) || '';
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
get #isMain(): boolean {
|
|
85
|
+
return !modules.has(this);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
set #lang(lang: string) {
|
|
89
|
+
if (this.#isMain) {
|
|
90
|
+
document.documentElement.lang = lang;
|
|
91
|
+
}
|
|
84
92
|
this.currentLanguage = lang;
|
|
85
|
-
document.documentElement.lang = lang;
|
|
86
93
|
this.onChange?.(lang);
|
|
87
94
|
}
|
|
88
95
|
|
|
@@ -94,7 +101,7 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
94
101
|
this.store = createStore(this as any);
|
|
95
102
|
Object.assign<I18n<T>, Options<T>>(this as I18n<T>, options);
|
|
96
103
|
|
|
97
|
-
let currentLanguage = this
|
|
104
|
+
let currentLanguage = this.#urlParamsLang || this.currentLanguage || this.#cacheLang;
|
|
98
105
|
|
|
99
106
|
const ele = document.querySelector(`[type*=${this.cachePrefix}]`);
|
|
100
107
|
if (ele) {
|
|
@@ -108,7 +115,7 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
108
115
|
}
|
|
109
116
|
|
|
110
117
|
if (currentLanguage) {
|
|
111
|
-
this
|
|
118
|
+
this.#lang = currentLanguage;
|
|
112
119
|
this.setLanguage(currentLanguage);
|
|
113
120
|
} else {
|
|
114
121
|
this.resetLanguage();
|
|
@@ -147,11 +154,14 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
147
154
|
}
|
|
148
155
|
|
|
149
156
|
async setLanguage(lang: string): Promise<string> {
|
|
157
|
+
if (this.#isMain) {
|
|
158
|
+
modules.forEach(async (i18n) => await i18n.setLanguage(lang));
|
|
159
|
+
}
|
|
150
160
|
let pack: Partial<T>;
|
|
151
161
|
const data = this.resources[lang];
|
|
152
162
|
if (!data) {
|
|
153
163
|
// eslint-disable-next-line no-console
|
|
154
|
-
console.warn(
|
|
164
|
+
console.warn(`${this.cachePrefix}: not found \`${lang}\``);
|
|
155
165
|
return this.resetLanguage();
|
|
156
166
|
}
|
|
157
167
|
|
|
@@ -190,7 +200,7 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
190
200
|
this.resources[lang] = pack;
|
|
191
201
|
updateStore(this.store, {});
|
|
192
202
|
if (lang !== this.currentLanguage) {
|
|
193
|
-
this
|
|
203
|
+
this.#lang = lang;
|
|
194
204
|
}
|
|
195
205
|
// auto cache
|
|
196
206
|
if (this.cache === true) {
|
|
@@ -200,16 +210,34 @@ export class I18n<T = Record<string, Msg>> {
|
|
|
200
210
|
}
|
|
201
211
|
|
|
202
212
|
resetLanguage() {
|
|
203
|
-
this
|
|
213
|
+
if (this.#isMain) {
|
|
214
|
+
modules.forEach((i18n) => i18n.resetLanguage());
|
|
215
|
+
}
|
|
216
|
+
this.#lang = this.fallbackLanguage;
|
|
204
217
|
if (this.cache) {
|
|
205
|
-
localStorage.removeItem(this
|
|
218
|
+
localStorage.removeItem(this.#cacheCurrentKey);
|
|
206
219
|
}
|
|
207
220
|
return this.setLanguage(this.detectLanguage());
|
|
208
221
|
}
|
|
209
222
|
|
|
210
223
|
// 一般用在 `onChange` 中
|
|
211
224
|
setCache() {
|
|
212
|
-
|
|
225
|
+
if (this.#isMain) {
|
|
226
|
+
modules.forEach((i18n) => i18n.setCache());
|
|
227
|
+
}
|
|
228
|
+
localStorage.setItem(this.#cacheCurrentKey, this.currentLanguage);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
createSubModule<K = Record<string, Msg>>(name: string, resources: Resources<K>) {
|
|
232
|
+
const module = new I18n<K>({
|
|
233
|
+
resources,
|
|
234
|
+
cachePrefix: `${this.cachePrefix}-${name}`,
|
|
235
|
+
currentLanguage: this.currentLanguage,
|
|
236
|
+
fallbackLanguage: this.fallbackLanguage,
|
|
237
|
+
cache: this.cache,
|
|
238
|
+
});
|
|
239
|
+
modules.add(module);
|
|
240
|
+
return module;
|
|
213
241
|
}
|
|
214
242
|
|
|
215
243
|
/**
|
package/src/helper/mediaquery.ts
CHANGED
|
@@ -1,70 +1,77 @@
|
|
|
1
1
|
// https://gist.github.com/gokulkrishh/242e68d1ee94ad05f488
|
|
2
2
|
// https://mediag.com/news/popular-screen-resolutions-designing-for-all/
|
|
3
3
|
|
|
4
|
+
const matche = (query: string) => window.matchMedia(query).matches;
|
|
5
|
+
|
|
4
6
|
export const mediaQuery = {
|
|
5
7
|
PRINT: 'print',
|
|
6
8
|
get isPrint() {
|
|
7
|
-
return
|
|
9
|
+
return matche(this.PRINT);
|
|
8
10
|
},
|
|
9
11
|
HOVER: '(hover: hover)',
|
|
10
12
|
get isHover() {
|
|
11
|
-
return
|
|
13
|
+
return matche(this.HOVER);
|
|
12
14
|
},
|
|
13
15
|
|
|
14
16
|
PHONE: '(min-width: 319px) and (max-width: 480px)',
|
|
15
17
|
get isPhone() {
|
|
16
|
-
return
|
|
18
|
+
return matche(this.PHONE);
|
|
17
19
|
},
|
|
18
20
|
|
|
19
21
|
LAPTOP: '(min-width: 1023px) and (max-width: 1280px) and (orientation: landscape)',
|
|
20
22
|
get isLaptop() {
|
|
21
|
-
return
|
|
23
|
+
return matche(this.LAPTOP);
|
|
22
24
|
},
|
|
23
25
|
|
|
24
26
|
DESKTOP: '(min-width: 1279px) and (orientation: landscape)',
|
|
25
27
|
get isDesktop() {
|
|
26
|
-
return
|
|
28
|
+
return matche(this.DESKTOP);
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
WIDTHSCREEN: '(min-width: 1919px) and (orientation: landscape)',
|
|
32
|
+
get isWidthScreen() {
|
|
33
|
+
return matche(this.WIDTHSCREEN);
|
|
27
34
|
},
|
|
28
35
|
|
|
29
36
|
PHONE_LANDSCAPE: '(min-width: 479px) and (max-width: 767px) and (orientation: landscape)',
|
|
30
37
|
// PHONE_LANDSCAPE: '(min-width: 481px) and (max-width: 767px)',
|
|
31
38
|
get isPhoneLandscape() {
|
|
32
|
-
return
|
|
39
|
+
return matche(this.PHONE_LANDSCAPE);
|
|
33
40
|
},
|
|
34
41
|
|
|
35
42
|
TABLET: '(min-width: 768px) and (max-width: 1024px)',
|
|
36
43
|
get isTablet() {
|
|
37
|
-
return
|
|
44
|
+
return matche(this.TABLET);
|
|
38
45
|
},
|
|
39
46
|
|
|
40
47
|
SMALL_PHONE: '(min-width: 319px) and (max-width: 480px) and (max-height: 640px)',
|
|
41
48
|
get isSmallPhone() {
|
|
42
|
-
return
|
|
49
|
+
return matche(this.SMALL_PHONE);
|
|
43
50
|
},
|
|
44
51
|
|
|
45
52
|
WATCH: '(max-width: 319px)',
|
|
46
53
|
get isWatch() {
|
|
47
|
-
return
|
|
54
|
+
return matche(this.WATCH);
|
|
48
55
|
},
|
|
49
56
|
|
|
50
57
|
SHORT: '(min-width: 479px) and (max-height: 320px)',
|
|
51
58
|
get isShort() {
|
|
52
|
-
return
|
|
59
|
+
return matche(this.SHORT);
|
|
53
60
|
},
|
|
54
61
|
|
|
55
62
|
PWA: '(display-mode: standalone)',
|
|
56
63
|
// PWA: '(display-mode: browser)', // debugging
|
|
57
64
|
get isPWA() {
|
|
58
|
-
return
|
|
65
|
+
return matche(this.PWA);
|
|
59
66
|
},
|
|
60
67
|
|
|
61
68
|
MOTION_REDUCE: '(prefers-reduced-motion: reduce)',
|
|
62
69
|
get isMotionReduce() {
|
|
63
|
-
return
|
|
70
|
+
return matche(this.MOTION_REDUCE);
|
|
64
71
|
},
|
|
65
72
|
|
|
66
73
|
DATA_REDUCE: '(prefers-reduced-data: reduce)',
|
|
67
74
|
get isDataReduce() {
|
|
68
|
-
return
|
|
75
|
+
return matche(this.DATA_REDUCE);
|
|
69
76
|
},
|
|
70
77
|
};
|
package/src/lib/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Do not modify manually
|
|
2
|
-
export const version = '1.5.
|
|
2
|
+
export const version = '1.5.7';
|