@mantou/gem 1.7.8 → 1.7.10
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 +246 -113
- package/dist/gem.umd.js +24 -24
- package/elements/base/dialog.d.ts.map +1 -1
- package/elements/base/dialog.js +1 -1
- package/elements/base/dialog.js.map +1 -1
- package/elements/base/gesture.d.ts.map +1 -1
- package/elements/base/gesture.js +7 -1
- package/elements/base/gesture.js.map +1 -1
- package/elements/base/link.d.ts.map +1 -1
- package/elements/base/link.js +8 -4
- package/elements/base/link.js.map +1 -1
- package/elements/base/modal-factory.d.ts +28 -6
- package/elements/base/modal-factory.d.ts.map +1 -1
- package/elements/base/reflect.d.ts +8 -0
- package/elements/base/reflect.d.ts.map +1 -1
- package/elements/base/reflect.js +36 -9
- package/elements/base/reflect.js.map +1 -1
- package/elements/base/route.d.ts +38 -10
- package/elements/base/route.d.ts.map +1 -1
- package/elements/base/route.js +119 -73
- package/elements/base/route.js.map +1 -1
- package/elements/base/title.d.ts.map +1 -1
- package/elements/base/title.js +8 -2
- package/elements/base/title.js.map +1 -1
- package/helper/i18n.d.ts +8 -1
- package/helper/i18n.d.ts.map +1 -1
- package/helper/i18n.js +7 -3
- package/helper/i18n.js.map +1 -1
- package/helper/logger.d.ts +9 -0
- package/helper/logger.d.ts.map +1 -0
- package/helper/logger.js +16 -0
- package/helper/logger.js.map +1 -0
- package/helper/ssr-shim.d.ts.map +1 -1
- package/helper/ssr-shim.js +12 -4
- package/helper/ssr-shim.js.map +1 -1
- package/lib/element.d.ts +5 -5
- package/lib/element.d.ts.map +1 -1
- package/lib/element.js +40 -14
- package/lib/element.js.map +1 -1
- package/lib/history.d.ts +3 -2
- package/lib/history.d.ts.map +1 -1
- package/lib/history.js +22 -9
- package/lib/history.js.map +1 -1
- package/lib/utils.d.ts +2 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +10 -8
- package/lib/utils.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/src/elements/base/dialog.ts +4 -1
- package/src/elements/base/gesture.ts +6 -1
- package/src/elements/base/link.ts +8 -4
- package/src/elements/base/reflect.ts +43 -9
- package/src/elements/base/route.ts +130 -73
- package/src/elements/base/title.ts +9 -2
- package/src/helper/i18n.ts +12 -4
- package/src/helper/logger.ts +21 -0
- package/src/helper/ssr-shim.ts +14 -4
- package/src/lib/element.ts +46 -17
- package/src/lib/history.ts +30 -12
- package/src/lib/utils.ts +16 -9
- package/src/lib/version.ts +1 -1
- package/src/test/elements/link.test.ts +15 -0
- package/src/test/elements/reflect.test.ts +27 -0
- package/src/test/elements/title.test.ts +25 -0
- package/src/test/utils.test.ts +14 -0
package/src/lib/utils.ts
CHANGED
|
@@ -32,14 +32,24 @@ export function addMicrotaskToStack(func: () => void) {
|
|
|
32
32
|
microtaskStack.push(func);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
// 不编码 hash 用于比较
|
|
35
36
|
export function absoluteLocation(currentPath = '', relativePath = '') {
|
|
36
37
|
const { pathname, search, hash } = new URL(relativePath, location.origin + currentPath);
|
|
37
|
-
return pathname + search + hash;
|
|
38
|
+
return pathname + search + decodeURIComponent(hash);
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
41
41
|
export type NonPrimitive = object;
|
|
42
42
|
|
|
43
|
+
export function addListener<T extends EventTarget, A extends Parameters<T['addEventListener']>>(
|
|
44
|
+
target: T,
|
|
45
|
+
type: A[0],
|
|
46
|
+
listener: A[1],
|
|
47
|
+
options?: A[2],
|
|
48
|
+
) {
|
|
49
|
+
target.addEventListener(type, listener, options);
|
|
50
|
+
return () => target.removeEventListener(type, listener, options);
|
|
51
|
+
}
|
|
52
|
+
|
|
43
53
|
interface LinkedListEventMap {
|
|
44
54
|
start: Event;
|
|
45
55
|
end: Event;
|
|
@@ -49,7 +59,7 @@ export interface LinkedListItem<T> {
|
|
|
49
59
|
prev?: LinkedListItem<T>;
|
|
50
60
|
next?: LinkedListItem<T>;
|
|
51
61
|
}
|
|
52
|
-
|
|
62
|
+
|
|
53
63
|
export class LinkedList<T = any> extends EventTarget {
|
|
54
64
|
declare addEventListener: <K extends keyof LinkedListEventMap>(
|
|
55
65
|
type: K,
|
|
@@ -269,12 +279,9 @@ export function createCSSSheet<T extends StyledKeyValuePair>(rules: T | string,
|
|
|
269
279
|
return sheet as Sheet<T>;
|
|
270
280
|
}
|
|
271
281
|
|
|
272
|
-
export function randomStr(
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
for (let i = 0; i < number; i++) {
|
|
276
|
-
str += origin[Math.floor(Math.random() * len)];
|
|
277
|
-
}
|
|
282
|
+
export function randomStr(len = 5): string {
|
|
283
|
+
const str = Math.random().toString(36).slice(2).slice(0, len);
|
|
284
|
+
if (str.length < len) return str + randomStr(len - str.length);
|
|
278
285
|
return str;
|
|
279
286
|
}
|
|
280
287
|
|
package/src/lib/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.7.
|
|
1
|
+
export const version = '1.7.10';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { fixture, expect } from '@open-wc/testing';
|
|
2
|
+
|
|
3
|
+
import { html } from '../../lib/element';
|
|
4
|
+
import type { GemActiveLinkElement } from '../../elements/link';
|
|
5
|
+
|
|
6
|
+
import '../../elements/link';
|
|
7
|
+
|
|
8
|
+
describe('GemTitleElement', () => {
|
|
9
|
+
it('basic', async () => {
|
|
10
|
+
const ele: GemActiveLinkElement = await fixture(
|
|
11
|
+
html`<gem-active-link pattern="/*" href="/#测试">active-link</gem-active-link>`,
|
|
12
|
+
);
|
|
13
|
+
expect(ele.active).to.equal(true);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { fixture, expect, nextFrame } from '@open-wc/testing';
|
|
2
|
+
|
|
3
|
+
import { html } from '../../lib/element';
|
|
4
|
+
import type { GemReflectElement } from '../../elements/reflect';
|
|
5
|
+
|
|
6
|
+
import '../../elements/reflect';
|
|
7
|
+
|
|
8
|
+
describe('GemReflectElement', () => {
|
|
9
|
+
it('basic', async () => {
|
|
10
|
+
const reflect: GemReflectElement = await fixture(html`
|
|
11
|
+
<gem-reflect>
|
|
12
|
+
<div id="one"></div>
|
|
13
|
+
<div id="two"></div>
|
|
14
|
+
</gem-reflect>
|
|
15
|
+
`);
|
|
16
|
+
const div = document.head.querySelector('#one');
|
|
17
|
+
expect(!!div).to.equal(true);
|
|
18
|
+
const comment = new Comment();
|
|
19
|
+
div?.after(comment);
|
|
20
|
+
reflect.target = document.body;
|
|
21
|
+
await nextFrame();
|
|
22
|
+
expect(document.body.querySelector('#one')).to.equal(div);
|
|
23
|
+
expect(div?.nextSibling).to.equal(comment);
|
|
24
|
+
reflect.remove();
|
|
25
|
+
expect(!!document.querySelector('#one')).to.equal(false);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { fixture, expect, nextFrame } from '@open-wc/testing';
|
|
2
|
+
|
|
3
|
+
import { html } from '../../lib/element';
|
|
4
|
+
import type { GemTitleElement } from '../../elements/title';
|
|
5
|
+
|
|
6
|
+
import '../../elements/title';
|
|
7
|
+
|
|
8
|
+
describe('GemTitleElement', () => {
|
|
9
|
+
it('basic', async () => {
|
|
10
|
+
const ele: GemTitleElement = await fixture(html`<gem-title>title</gem-title>`);
|
|
11
|
+
expect(document.title).to.equal('title');
|
|
12
|
+
ele.textContent = 'title2';
|
|
13
|
+
await nextFrame();
|
|
14
|
+
expect(document.title).to.equal('title2');
|
|
15
|
+
|
|
16
|
+
ele.prefix = 'prefix-';
|
|
17
|
+
await nextFrame();
|
|
18
|
+
expect(document.title).to.equal('prefix-title2');
|
|
19
|
+
|
|
20
|
+
history.pushState(null, 'Page', '/');
|
|
21
|
+
await nextFrame();
|
|
22
|
+
expect(document.title).to.equal('prefix-Page');
|
|
23
|
+
expect(ele.shadowRoot!.textContent).to.equal('Page');
|
|
24
|
+
});
|
|
25
|
+
});
|
package/src/test/utils.test.ts
CHANGED
|
@@ -25,6 +25,8 @@ describe('utils 测试', () => {
|
|
|
25
25
|
expect(absoluteLocation('/a', '/a/b')).to.equal('/a/b');
|
|
26
26
|
expect(absoluteLocation('/a/c', './b')).to.equal('/a/b');
|
|
27
27
|
expect(absoluteLocation('/a/c/d', '../b')).to.equal('/a/b');
|
|
28
|
+
expect(absoluteLocation('/a/c/d', '../b?a=a#a')).to.equal('/a/b?a=a#a');
|
|
29
|
+
expect(absoluteLocation('/a/c/d', '../b?a=测试#测试#')).to.equal('/a/b?a=%E6%B5%8B%E8%AF%95#测试#');
|
|
28
30
|
});
|
|
29
31
|
it('LinkedList', () => {
|
|
30
32
|
const linkedList = new LinkedList<() => void>();
|
|
@@ -36,6 +38,18 @@ describe('utils 测试', () => {
|
|
|
36
38
|
const fun2 = () => 2;
|
|
37
39
|
linkedList.add(fun1);
|
|
38
40
|
linkedList.add(fun2);
|
|
41
|
+
expect(linkedList.first?.value).to.equal(fun1);
|
|
42
|
+
expect(linkedList.last?.value).to.equal(fun2);
|
|
43
|
+
expect(linkedList.find(fun1)).to.equal(linkedList.first);
|
|
44
|
+
expect(linkedList.find(fun2)).to.equal(linkedList.last);
|
|
45
|
+
expect(linkedList.find(fun1)?.next).to.equal(linkedList.last);
|
|
46
|
+
const subLinked = new LinkedList();
|
|
47
|
+
subLinked.add(fun1);
|
|
48
|
+
subLinked.add(fun2);
|
|
49
|
+
expect(linkedList.isSuperLinkOf(subLinked)).to.equal(true);
|
|
50
|
+
expect(new LinkedList().isSuperLinkOf(subLinked)).to.equal(false);
|
|
51
|
+
expect(subLinked.isSuperLinkOf(new LinkedList())).to.equal(true);
|
|
52
|
+
|
|
39
53
|
linkedList.delete(fun2);
|
|
40
54
|
expect(linkedList.size).to.equal(1);
|
|
41
55
|
linkedList.add(fun2);
|