@mantou/gem 1.7.10 → 1.7.12
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/dist/gem.es.js +1839 -2597
- package/dist/gem.umd.js +23 -24
- package/elements/base/gesture.d.ts +1 -3
- package/elements/base/gesture.d.ts.map +1 -1
- package/elements/base/gesture.js +2 -3
- package/elements/base/gesture.js.map +1 -1
- package/elements/base/link.d.ts +2 -0
- package/elements/base/link.d.ts.map +1 -1
- package/elements/base/link.js +2 -0
- package/elements/base/link.js.map +1 -1
- package/elements/base/modal-factory.d.ts +23 -21
- package/elements/base/modal-factory.d.ts.map +1 -1
- package/elements/base/reflect.d.ts +5 -0
- package/elements/base/reflect.d.ts.map +1 -1
- package/elements/base/reflect.js +26 -7
- package/elements/base/reflect.js.map +1 -1
- package/elements/base/route.d.ts +9 -7
- package/elements/base/route.d.ts.map +1 -1
- package/elements/base/route.js +23 -7
- package/elements/base/route.js.map +1 -1
- package/elements/base/title.d.ts +1 -1
- package/elements/base/title.js +1 -1
- package/elements/base/unsafe.d.ts +1 -2
- package/elements/base/unsafe.d.ts.map +1 -1
- package/elements/base/unsafe.js +1 -2
- package/elements/base/unsafe.js.map +1 -1
- package/elements/base/use.d.ts +1 -1
- package/elements/base/use.js +1 -1
- package/helper/i18n.d.ts +1 -1
- package/helper/i18n.d.ts.map +1 -1
- package/helper/i18n.js +2 -3
- package/helper/i18n.js.map +1 -1
- package/helper/request.d.ts +17 -7
- package/helper/request.d.ts.map +1 -1
- package/helper/request.js +103 -53
- package/helper/request.js.map +1 -1
- package/lib/decorators.d.ts +1 -0
- package/lib/decorators.d.ts.map +1 -1
- package/lib/element.d.ts.map +1 -1
- package/lib/element.js +16 -18
- package/lib/element.js.map +1 -1
- package/lib/store.d.ts +1 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +3 -1
- package/lib/store.js.map +1 -1
- package/lib/utils.d.ts +7 -7
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +19 -30
- package/lib/utils.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +6 -5
- package/src/elements/base/gesture.ts +3 -3
- package/src/elements/base/link.ts +2 -0
- package/src/elements/base/reflect.ts +18 -6
- package/src/elements/base/route.ts +32 -11
- package/src/elements/base/title.ts +1 -1
- package/src/elements/base/unsafe.ts +1 -2
- package/src/elements/base/use.ts +1 -1
- package/src/helper/i18n.ts +2 -4
- package/src/helper/request.ts +122 -53
- package/src/lib/decorators.ts +1 -1
- package/src/lib/element.ts +18 -17
- package/src/lib/store.ts +3 -1
- package/src/lib/utils.ts +30 -37
- package/src/lib/version.ts +1 -1
- package/src/test/utils.test.ts +12 -4
package/src/lib/utils.ts
CHANGED
|
@@ -257,21 +257,29 @@ export interface StyledKeyValuePair {
|
|
|
257
257
|
|
|
258
258
|
/**
|
|
259
259
|
*
|
|
260
|
-
* 创建 style sheet 用于 `adoptedStyleSheets
|
|
261
|
-
* @param rules string | Record<string, string>
|
|
262
|
-
* @param
|
|
260
|
+
* 创建 style sheet 用于 `adoptedStyleSheets`,不支持样式更新,只支持自定义 CSS 属性
|
|
261
|
+
* @param rules string | Record<string, string>
|
|
262
|
+
* @param media string 媒体查询
|
|
263
263
|
*/
|
|
264
|
-
export function createCSSSheet<T extends StyledKeyValuePair>(rules: T | string,
|
|
265
|
-
const styleSheet = new CSSStyleSheet();
|
|
264
|
+
export function createCSSSheet<T extends StyledKeyValuePair>(rules: T | string, media?: string): Sheet<T> {
|
|
265
|
+
const styleSheet = new CSSStyleSheet({ media });
|
|
266
266
|
const sheet: any = {};
|
|
267
|
-
styleSheet.media.mediaText = mediaQuery;
|
|
268
267
|
let style = '';
|
|
269
268
|
if (typeof rules === 'string') {
|
|
270
269
|
style = rules;
|
|
271
270
|
} else {
|
|
272
271
|
Object.keys(rules).forEach((key: keyof T) => {
|
|
273
272
|
sheet[key] = `${key as string}-${randomStr()}`;
|
|
274
|
-
|
|
273
|
+
switch (rules[key].type) {
|
|
274
|
+
case 'class':
|
|
275
|
+
style += `.${sheet[key]} {${rules[key].styledContent}}`;
|
|
276
|
+
break;
|
|
277
|
+
case 'id':
|
|
278
|
+
style += `#${sheet[key]} {${rules[key].styledContent}}`;
|
|
279
|
+
break;
|
|
280
|
+
default:
|
|
281
|
+
style += `@keyframes ${key as string} {${rules[key].styledContent}}`;
|
|
282
|
+
}
|
|
275
283
|
});
|
|
276
284
|
}
|
|
277
285
|
styleSheet.replaceSync(style);
|
|
@@ -285,24 +293,7 @@ export function randomStr(len = 5): string {
|
|
|
285
293
|
return str;
|
|
286
294
|
}
|
|
287
295
|
|
|
288
|
-
const nestingRuleRegExp = new RegExp('&.*{((.|\n)*)}', 'g');
|
|
289
|
-
// 只支持一层嵌套
|
|
290
|
-
// https://drafts.csswg.org/css-nesting-1/
|
|
291
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1648037
|
|
292
|
-
// https://bugs.webkit.org/show_bug.cgi?id=223497
|
|
293
|
-
function flatStyled(style: string, type: StyledType): StyledValueObject {
|
|
294
|
-
const nestingRules: string[] = [];
|
|
295
|
-
let styledContent =
|
|
296
|
-
`& {${style.replace(nestingRuleRegExp, (substr) => {
|
|
297
|
-
nestingRules.push(substr);
|
|
298
|
-
return '';
|
|
299
|
-
})}}` + nestingRules.join('');
|
|
300
|
-
styledContent = styledContent.replace(/&/g, type === 'class' ? '.&' : '#&');
|
|
301
|
-
return { styledContent, type };
|
|
302
|
-
}
|
|
303
|
-
|
|
304
296
|
// 写 css 文本,在 CSSStyleSheet 中使用,使用 styed-components 高亮
|
|
305
|
-
// 暂时不支持 `at` 规则
|
|
306
297
|
//
|
|
307
298
|
// createCSSSheet({
|
|
308
299
|
// red: styled.class`
|
|
@@ -313,18 +304,14 @@ function flatStyled(style: string, type: StyledType): StyledValueObject {
|
|
|
313
304
|
// `,
|
|
314
305
|
// });
|
|
315
306
|
export const styled = {
|
|
316
|
-
class: (arr: TemplateStringsArray, ...args: any[]) => {
|
|
317
|
-
|
|
318
|
-
return flatStyled(style, 'class');
|
|
307
|
+
class: (arr: TemplateStringsArray, ...args: any[]): StyledValueObject => {
|
|
308
|
+
return { styledContent: raw(arr, ...args), type: 'class' };
|
|
319
309
|
},
|
|
320
|
-
id: (arr: TemplateStringsArray, ...args: any[]) => {
|
|
321
|
-
|
|
322
|
-
return flatStyled(style, 'id');
|
|
310
|
+
id: (arr: TemplateStringsArray, ...args: any[]): StyledValueObject => {
|
|
311
|
+
return { styledContent: raw(arr, ...args), type: 'id' };
|
|
323
312
|
},
|
|
324
313
|
keyframes: (arr: TemplateStringsArray, ...args: any[]): StyledValueObject => {
|
|
325
|
-
|
|
326
|
-
const styledContent = `@keyframes & {${keyframesContent}}`;
|
|
327
|
-
return { styledContent, type: 'keyframes' };
|
|
314
|
+
return { styledContent: raw(arr, ...args), type: 'keyframes' };
|
|
328
315
|
},
|
|
329
316
|
};
|
|
330
317
|
|
|
@@ -385,18 +372,24 @@ export function objectMapToString<T = any>(
|
|
|
385
372
|
}
|
|
386
373
|
|
|
387
374
|
// Wait: Typescript lib dom CSSStyleDeclaration anchor position
|
|
388
|
-
type StyleProp =
|
|
375
|
+
type StyleProp =
|
|
376
|
+
| keyof CSSStyleDeclaration
|
|
377
|
+
| `--${string}`
|
|
378
|
+
| 'scrollbarWidth'
|
|
379
|
+
| 'scrollbarColor'
|
|
380
|
+
| 'anchorDefault'
|
|
381
|
+
| 'anchorName';
|
|
389
382
|
|
|
390
|
-
export type StyleObject = Partial<Record<StyleProp, string | number | undefined | null>>;
|
|
383
|
+
export type StyleObject = Partial<Record<StyleProp, string | number | false | undefined | null>>;
|
|
391
384
|
|
|
392
385
|
// 不支持 webkit 属性
|
|
393
386
|
export function styleMap(object: StyleObject) {
|
|
394
387
|
return objectMapToString(object, ';', (key, value) =>
|
|
395
|
-
value
|
|
388
|
+
value || value === 0 ? `${camelToKebabCase(key)}:${value}` : '',
|
|
396
389
|
);
|
|
397
390
|
}
|
|
398
391
|
|
|
399
|
-
export function classMap(object: Record<string,
|
|
392
|
+
export function classMap(object: Record<string, string | number | boolean | undefined | null>) {
|
|
400
393
|
return objectMapToString(object, ' ', (key, value) => (value ? key : ''));
|
|
401
394
|
}
|
|
402
395
|
|
package/src/lib/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.7.
|
|
1
|
+
export const version = '1.7.12';
|
package/src/test/utils.test.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
|
|
17
17
|
declare global {
|
|
18
18
|
interface CSSRuleList {
|
|
19
|
+
// only test style rule
|
|
19
20
|
item(index: number): CSSStyleRule;
|
|
20
21
|
}
|
|
21
22
|
}
|
|
@@ -106,15 +107,22 @@ describe('utils 测试', () => {
|
|
|
106
107
|
`,
|
|
107
108
|
wrap: styled.id`
|
|
108
109
|
position: fixed;
|
|
110
|
+
animation: 3s infinite alternate slideIn;
|
|
111
|
+
`,
|
|
112
|
+
slideIn: styled.keyframes`
|
|
113
|
+
from {
|
|
114
|
+
transform: translateX(0%);
|
|
115
|
+
}
|
|
109
116
|
`,
|
|
110
117
|
});
|
|
111
118
|
expect(cssSheet.scroll.startsWith('scroll')).to.true;
|
|
112
119
|
const rules = cssSheet[SheetToken].cssRules;
|
|
113
120
|
expect(rules.item(0).selectorText.startsWith('.scroll')).to.true;
|
|
114
|
-
expect(rules.item(0).style.background.
|
|
115
|
-
expect(
|
|
116
|
-
expect(rules.item(
|
|
117
|
-
expect(rules.item(
|
|
121
|
+
expect(rules.item(0).style.background).to.equal('red');
|
|
122
|
+
expect(rules.item(0).cssRules.item(0).selectorText).to.equal('&:hover *');
|
|
123
|
+
expect(rules.item(0).cssRules.item(0).style.background).to.equal('blue');
|
|
124
|
+
expect(rules.item(1).selectorText.startsWith('#wrap')).to.true;
|
|
125
|
+
expect((rules.item(2) as any).name).to.equal('slideIn');
|
|
118
126
|
});
|
|
119
127
|
it('styleMap/classMap/exportPartsMap', () => {
|
|
120
128
|
expect(styleMap({ '--x': '1px', fontSize: '14px', content: `'*'` })).to.equal(
|