@mantou/gem 1.6.3 → 1.6.9

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 (117) hide show
  1. package/README.md +6 -38
  2. package/dist/gem.es.js +3272 -0
  3. package/dist/gem.umd.js +229 -0
  4. package/elements/dialog-base.d.ts +2 -2
  5. package/elements/dialog-base.d.ts.map +1 -1
  6. package/elements/dialog-base.js +6 -6
  7. package/elements/dialog-base.js.map +1 -1
  8. package/elements/gesture.d.ts +2 -1
  9. package/elements/gesture.d.ts.map +1 -1
  10. package/elements/gesture.js +6 -5
  11. package/elements/gesture.js.map +1 -1
  12. package/elements/link.d.ts +1 -1
  13. package/elements/link.d.ts.map +1 -1
  14. package/elements/link.js +11 -16
  15. package/elements/link.js.map +1 -1
  16. package/elements/modal-base.d.ts +4 -4
  17. package/elements/modal-base.d.ts.map +1 -1
  18. package/elements/modal-base.js +9 -4
  19. package/elements/modal-base.js.map +1 -1
  20. package/elements/reflect.d.ts +1 -1
  21. package/elements/reflect.d.ts.map +1 -1
  22. package/elements/reflect.js +2 -1
  23. package/elements/reflect.js.map +1 -1
  24. package/elements/route.d.ts +7 -3
  25. package/elements/route.d.ts.map +1 -1
  26. package/elements/route.js +12 -6
  27. package/elements/route.js.map +1 -1
  28. package/elements/title.d.ts +1 -1
  29. package/elements/title.d.ts.map +1 -1
  30. package/elements/title.js +4 -1
  31. package/elements/title.js.map +1 -1
  32. package/elements/unsafe.d.ts +1 -1
  33. package/elements/unsafe.d.ts.map +1 -1
  34. package/elements/unsafe.js +2 -1
  35. package/elements/unsafe.js.map +1 -1
  36. package/elements/use.d.ts +1 -1
  37. package/elements/use.d.ts.map +1 -1
  38. package/elements/use.js +2 -1
  39. package/elements/use.js.map +1 -1
  40. package/helper/i18n.js +47 -58
  41. package/helper/i18n.js.map +1 -1
  42. package/helper/request.js +11 -19
  43. package/helper/request.js.map +1 -1
  44. package/index.d.ts +5 -4
  45. package/index.d.ts.map +1 -1
  46. package/index.js +4 -2
  47. package/index.js.map +1 -1
  48. package/lib/element.d.ts.map +1 -1
  49. package/lib/element.js +1 -1
  50. package/lib/element.js.map +1 -1
  51. package/lib/history.js +17 -5
  52. package/lib/history.js.map +1 -1
  53. package/lib/utils.d.ts +3 -1
  54. package/lib/utils.d.ts.map +1 -1
  55. package/lib/utils.js +7 -4
  56. package/lib/utils.js.map +1 -1
  57. package/lib/version.d.ts +1 -1
  58. package/lib/version.js +1 -1
  59. package/package.json +26 -53
  60. package/src/{umd.ts → dist.ts} +1 -5
  61. package/src/elements/dialog-base.ts +5 -4
  62. package/src/elements/gesture.ts +2 -1
  63. package/src/elements/link.ts +5 -15
  64. package/src/elements/modal-base.ts +3 -1
  65. package/src/elements/reflect.ts +2 -1
  66. package/src/elements/route.ts +8 -20
  67. package/src/elements/title.ts +4 -1
  68. package/src/elements/unsafe.ts +2 -1
  69. package/src/elements/use.ts +2 -1
  70. package/src/index.ts +4 -6
  71. package/src/lib/element.ts +2 -1
  72. package/src/lib/history.ts +1 -1
  73. package/src/lib/utils.ts +10 -4
  74. package/src/lib/version.ts +1 -1
  75. package/src/test/gem-element/advance.test.ts +1 -0
  76. package/src/test/gem-element/basic.test.ts +1 -0
  77. package/src/test/gem-element/decorators.test.ts +1 -0
  78. package/src/test/gem-element/multi.test.ts +1 -0
  79. package/src/test/history.test.ts +1 -0
  80. package/src/test/store.test.ts +1 -0
  81. package/src/test/utils.test.ts +1 -0
  82. package/src/examples/base-path/index.ts +0 -44
  83. package/src/examples/controlled/index.ts +0 -75
  84. package/src/examples/decorator/chidren.ts +0 -77
  85. package/src/examples/decorator/index.ts +0 -110
  86. package/src/examples/dialog/index.ts +0 -148
  87. package/src/examples/effect/index.ts +0 -45
  88. package/src/examples/elements/env.ts +0 -7
  89. package/src/examples/elements/layout.ts +0 -53
  90. package/src/examples/elements/nav.ts +0 -71
  91. package/src/examples/elements/source.ts +0 -68
  92. package/src/examples/gesture/canvas.ts +0 -69
  93. package/src/examples/gesture/index.ts +0 -97
  94. package/src/examples/gesture/manifest.json +0 -3
  95. package/src/examples/hash/index.ts +0 -55
  96. package/src/examples/i18n/index.ts +0 -63
  97. package/src/examples/index/index.ts +0 -33
  98. package/src/examples/index/manifest.json +0 -5
  99. package/src/examples/light-dom/index.ts +0 -31
  100. package/src/examples/multi-page/api.ts +0 -9
  101. package/src/examples/multi-page/index.ts +0 -78
  102. package/src/examples/multi-page/page-a.ts +0 -16
  103. package/src/examples/multi-page/page-b.ts +0 -12
  104. package/src/examples/multi-page/page-c.ts +0 -40
  105. package/src/examples/multi-page/store.ts +0 -10
  106. package/src/examples/perf-demo/index.ts +0 -136
  107. package/src/examples/ref-route/index.ts +0 -109
  108. package/src/examples/reflect/index.ts +0 -61
  109. package/src/examples/styled/index.ts +0 -39
  110. package/src/examples/svg-icon/index.ts +0 -31
  111. package/src/examples/theme/index.ts +0 -56
  112. package/src/examples/unsafe/index.ts +0 -29
  113. package/umd.d.ts +0 -18
  114. package/umd.d.ts.map +0 -1
  115. package/umd.js +0 -54
  116. package/umd.js.LICENSE.txt +0 -13
  117. package/umd.js.map +0 -1
@@ -1,136 +0,0 @@
1
- import { raw, GemElement, createStore, updateStore, html } from '../../';
2
-
3
- const store = createStore({
4
- number: 1,
5
- });
6
-
7
- setInterval(() => {
8
- updateStore(store, { number: (store.number % 10) + 1 });
9
- }, 1000);
10
-
11
- customElements.define(
12
- 'fiber-dot',
13
- class extends GemElement {
14
- static observedStores = [store];
15
- constructor() {
16
- super({ isAsync: true });
17
- }
18
-
19
- onmouseenter = () => {
20
- this.setState({ hover: true });
21
- };
22
- onmouseleave = () => {
23
- this.setState({ hover: false });
24
- };
25
-
26
- size: number;
27
- x: number;
28
- y: number;
29
-
30
- state = { hover: false };
31
-
32
- render() {
33
- const s = this.size * 1.3;
34
- Object.assign(this.style, {
35
- width: s + 'px',
36
- height: s + 'px',
37
- left: this.x + 'px',
38
- top: this.y + 'px',
39
- borderRadius: s / 2 + 'px',
40
- lineHeight: s + 'px',
41
- background: this.state.hover ? '#ff0' : '#61dafb',
42
- });
43
- return html`
44
- <style>
45
- :host {
46
- position: absolute;
47
- font: normal 15px sans-serif;
48
- text-align: center;
49
- cursor: pointer;
50
- display: block;
51
- }
52
- </style>
53
- ${this.state.hover ? '**' + store.number + '**' : store.number}
54
- `;
55
- }
56
- },
57
- );
58
-
59
- const targetSize = 25;
60
- customElements.define(
61
- 'fiber-triangle',
62
- class extends GemElement {
63
- x: number;
64
- y: number;
65
- s: number;
66
- seconds: number;
67
-
68
- render() {
69
- let s = this.s;
70
- if (s <= targetSize) {
71
- return html`
72
- <fiber-dot .x=${this.x - targetSize / 2} .y=${this.y - targetSize / 2} .size=${targetSize}></fiber-dot>
73
- `;
74
- }
75
- s = s / 2;
76
-
77
- const slowDown = true;
78
- if (slowDown) {
79
- const e = performance.now() + 0.8;
80
- while (performance.now() < e) {
81
- // Artificially long execution time.
82
- }
83
- }
84
- return html`
85
- <fiber-triangle .x=${this.x} .y=${this.y - s / 2} .s=${s}></fiber-triangle>
86
- <fiber-triangle .x=${this.x - s} .y=${this.y + s / 2} .s=${s}></fiber-triangle>
87
- <fiber-triangle .x=${this.x + s} .y=${this.y + s / 2} .s=${s}></fiber-triangle>
88
- `;
89
- }
90
- },
91
- );
92
-
93
- class App extends GemElement {
94
- static observedPropertys = ['elapsed'];
95
- elapsed = 0;
96
- render() {
97
- const elapsed = this.elapsed;
98
- const t = (elapsed / 1000) % 10;
99
- const scale = 1 + (t > 5 ? 10 - t : t) / 10;
100
- this.style.transform = 'scaleX(' + scale / 2.1 + ') scaleY(0.7) translateZ(0.1px)';
101
- return html`
102
- <style>
103
- :host {
104
- position: absolute;
105
- transform-origin: 0 0;
106
- left: 50%;
107
- top: 50%;
108
- width: 10px;
109
- height: 10px;
110
- background: #eee;
111
- }
112
- </style>
113
- <div>
114
- <fiber-triangle .x=${0} .y=${0} .s=${1000}></fiber-triangle>
115
- </div>
116
- `;
117
- }
118
- }
119
- customElements.define('app-root', App);
120
-
121
- document.body.innerHTML = raw`
122
- <ul>
123
- <li><a href="https://stencil-fiber-demo.firebaseapp.com/perf.html">stencil-fiber-demo</a></li>
124
- <li><a href="https://claudiopro.github.io/react-fiber-vs-stack-demo/fiber.html">react-fiber-demo</a></li>
125
- </ul>
126
- `;
127
-
128
- const app = new App();
129
- document.body.append(app);
130
-
131
- const start = Date.now();
132
- function update() {
133
- app.elapsed = Date.now() - start;
134
- requestAnimationFrame(update);
135
- }
136
- requestAnimationFrame(update);
@@ -1,109 +0,0 @@
1
- import { GemElement, html, history, render } from '../../';
2
- import { connectStore, customElement, RefObject, refobject } from '../../lib/decorators';
3
- import { createHistoryParams, GemRouteElement, RouteItem } from '../../elements/route';
4
- import '../../elements/link';
5
-
6
- import '../elements/layout';
7
-
8
- const homeRoute: RouteItem = {
9
- pattern: '/',
10
- async getContent(params) {
11
- await new Promise((res) => setTimeout(res, 1000));
12
- return html`<route-home .params=${params}></route-home>`;
13
- },
14
- };
15
-
16
- const aRoute: RouteItem = {
17
- pattern: '/a/:b',
18
- async getContent() {
19
- await new Promise((res) => setTimeout(res, 1000));
20
- return html`<route-a></route-a>`;
21
- },
22
- };
23
-
24
- const routes = {
25
- home: homeRoute,
26
- a: aRoute,
27
- };
28
-
29
- const locationStore = GemRouteElement.createLocationStore();
30
-
31
- @customElement('route-home')
32
- export class RouteHome extends GemElement {
33
- params: Record<string, string>;
34
- render = () => {
35
- return html`
36
- <style>
37
- gem-active-link {
38
- display: block;
39
- }
40
- gem-active-link:where(:--active, [data-active]) {
41
- color: inherit;
42
- }
43
- </style>
44
- current route: home page, current params: ${JSON.stringify(this.params)}, click navigation to /a page
45
- <gem-active-link .route=${routes.a} .options=${{ params: { b: 1 } }}>
46
- a page link, params: {a: 1}
47
- </gem-active-link>
48
- `;
49
- };
50
- }
51
-
52
- @connectStore(locationStore)
53
- @customElement('route-a')
54
- export class RouteA extends GemElement {
55
- render = () => {
56
- return html`
57
- <style>
58
- gem-active-link {
59
- display: block;
60
- }
61
- gem-active-link:where(:--active, [data-active]) {
62
- color: inherit;
63
- }
64
- </style>
65
- current route: /a/:b, current params: ${JSON.stringify(locationStore.params)}, click navigation to home page,
66
- cuurent query: ${history.getParams().query.toString()}
67
- <gem-active-link .route=${routes.a} .options=${{ params: { b: 1 }, query: '?a=1' }}>
68
- a page link, query: ?a=1
69
- </gem-active-link>
70
- `;
71
- };
72
- }
73
-
74
- @customElement('app-root')
75
- @connectStore(locationStore)
76
- export class App extends GemElement {
77
- @refobject routeRef: RefObject<GemRouteElement>;
78
- onclick = () => {
79
- if (this.routeRef.element?.currentRoute === routes.home) {
80
- history.push(createHistoryParams(routes.a, { params: { b: String(Date.now()) } }));
81
- } else {
82
- history.push(createHistoryParams(routes.home));
83
- }
84
- };
85
- render() {
86
- return html`
87
- <main>
88
- <pre>${JSON.stringify(locationStore.params)}</pre>
89
- <gem-route
90
- ref=${this.routeRef.ref}
91
- @loading=${console.log}
92
- @route-change=${console.log}
93
- @error=${console.error}
94
- .routes=${routes}
95
- .locationStore=${locationStore}
96
- ></gem-route>
97
- </main>
98
- `;
99
- }
100
- }
101
-
102
- render(
103
- html`
104
- <gem-examples-layout>
105
- <app-root slot="main"></app-root>
106
- </gem-examples-layout>
107
- `,
108
- document.body,
109
- );
@@ -1,61 +0,0 @@
1
- import { html, randomStr, GemElement, customElement, render, refobject, RefObject } from '../..';
2
-
3
- import '../../elements/reflect';
4
-
5
- import '../elements/layout';
6
- @customElement('app-children')
7
- export class AppChild extends GemElement {
8
- mounted = () => console.log('mounted');
9
- }
10
-
11
- @customElement('app-root')
12
- export class App extends GemElement {
13
- @refobject childrenRef: RefObject<HTMLStyleElement>;
14
- state = {
15
- mount: true,
16
- };
17
-
18
- mounted() {
19
- document.addEventListener('click', this.update);
20
- }
21
-
22
- updated() {
23
- console.trace('updated', this.childrenRef.element);
24
- }
25
-
26
- render() {
27
- return html`
28
- <button @click=${() => this.setState({ mount: true })}>mount</button>
29
- <button @click=${() => this.setState({ mount: false })}>unmount</button>
30
- ${this.state.mount
31
- ? html`
32
- <gem-reflect>
33
- <app-children ref=${this.childrenRef.ref}></app-children>
34
- <style>
35
- head {
36
- display: block;
37
- }
38
- head::before {
39
- content: '<head>';
40
- }
41
- head::after {
42
- content: '</head>';
43
- }
44
- </style>
45
- <div>${randomStr()}</div>
46
- <div>${randomStr()}</div>
47
- </gem-reflect>
48
- `
49
- : null}
50
- `;
51
- }
52
- }
53
-
54
- render(
55
- html`
56
- <gem-examples-layout>
57
- <app-root slot="main"></app-root>
58
- </gem-examples-layout>
59
- `,
60
- document.body,
61
- );
@@ -1,39 +0,0 @@
1
- import { GemElement, html, styled, createCSSSheet, render } from '../../';
2
-
3
- import '../elements/layout';
4
-
5
- const styles = createCSSSheet({
6
- h1: styled.class`
7
- color: yellow;
8
- &:hover {
9
- color: red;
10
- }
11
- `,
12
- h2: styled.id`
13
- background: yellow;
14
- &:hover {
15
- background: red;
16
- }
17
- `,
18
- });
19
-
20
- class App extends GemElement {
21
- static adoptedStyleSheets = [styles];
22
- render() {
23
- return html`
24
- <h1 class=${styles.h1}>Header 1</h1>
25
- <h2 id=${styles.h2}>Header 2</h2>
26
- `;
27
- }
28
- }
29
-
30
- customElements.define('app-root', App);
31
-
32
- render(
33
- html`
34
- <gem-examples-layout>
35
- <app-root slot="main"></app-root>
36
- </gem-examples-layout>
37
- `,
38
- document.body,
39
- );
@@ -1,31 +0,0 @@
1
- import { html, render, raw } from '../../';
2
-
3
- import '../../elements/use';
4
-
5
- import '../elements/layout';
6
-
7
- const app = html`
8
- <div slot="main">
9
- <template id="icon">
10
- <svg width="24" height="24" viewBox="0 0 24 24">
11
- <path d="M0 0h24v24H0z" fill="none" />
12
- <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" />
13
- </svg>
14
- </template>
15
- <gem-use .root=${document.body} selector="#icon"></gem-use>
16
- <gem-use selector="#icon"></gem-use>
17
- <gem-use
18
- .element=${raw`
19
- <svg height="24px" viewBox="0 0 24 24" width="24px">
20
- <path d="M0 0h24v24H0z" fill="none"/>
21
- <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/>
22
- </svg>
23
- `}
24
- style="fill: red; height: 1.2em; gap: 0.3em"
25
- >
26
- English
27
- </gem-use>
28
- </div>
29
- `;
30
-
31
- render(html`<gem-examples-layout>${app}</gem-examples-layout>`, document.body);
@@ -1,56 +0,0 @@
1
- import { GemElement, html, render, customElement, connectStore } from '../../';
2
- import { createTheme, getThemeStore, updateTheme } from '../../helper/theme';
3
- import { mediaQuery } from '../../helper/mediaquery';
4
-
5
- import '../elements/layout';
6
-
7
- const theme = createTheme({
8
- // 支持动态修改不透明度
9
- color: '0, 0, 0',
10
- primaryColor: '#eee',
11
- });
12
-
13
- const themeStore = getThemeStore(theme);
14
-
15
- const printTheme = createTheme({
16
- primaryColor: 'yellow',
17
- });
18
-
19
- document.onclick = () => {
20
- updateTheme(theme, {
21
- primaryColor: Math.random() > 0.5 ? 'red' : 'blue',
22
- });
23
- updateTheme(printTheme, {
24
- primaryColor: Math.random() > 0.5 ? 'gray' : 'white',
25
- });
26
- };
27
-
28
- @customElement('app-root')
29
- @connectStore(themeStore)
30
- export class App extends GemElement {
31
- render() {
32
- return html`
33
- <style>
34
- div {
35
- color: rgba(${theme.color}, 0.5);
36
- border: 2px solid ${theme.primaryColor};
37
- }
38
- @media ${mediaQuery.PRINT} {
39
- div {
40
- border: 2px solid ${printTheme.primaryColor};
41
- }
42
- }
43
- </style>
44
- <div>color: ${themeStore.primaryColor}</div>
45
- `;
46
- }
47
- }
48
-
49
- render(
50
- html`
51
- <gem-examples-layout>
52
- <app-root slot="main"></app-root>
53
- </gem-examples-layout>
54
- `,
55
- document.body,
56
- );
@@ -1,29 +0,0 @@
1
- import { html, render } from '../../';
2
-
3
- import '../../elements/unsafe';
4
-
5
- import '../elements/layout';
6
-
7
- const svgStr = `
8
- <svg width="24" height="24" viewBox="0 0 24 24">
9
- <path d="M0 0h24v24H0z" fill="none" />
10
- <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" />
11
- </svg>
12
- `;
13
- const svgStyle = `
14
- svg {
15
- transform: scale(2);
16
- }
17
- `;
18
- const htmlStr = `
19
- <pre><code>// code code code</code></pre>
20
- `;
21
-
22
- const app = html`
23
- <div slot="main">
24
- <gem-unsafe content="${svgStr}" contentcss="${svgStyle}"></gem-unsafe>
25
- <gem-unsafe content="${htmlStr}"></gem-unsafe>
26
- </div>
27
- `;
28
-
29
- render(html`<gem-examples-layout>${app}</gem-examples-layout>`, document.body);
package/umd.d.ts DELETED
@@ -1,18 +0,0 @@
1
- /**
2
- * 自定义元素不应该重复定义,gem 不应该重复引入
3
- * 包含所有资产,导出到全局变量 `Gem`,以便供 webpack 的 `externals` 使用
4
- */
5
- export * from './elements/link';
6
- export * from './elements/route';
7
- export * from './elements/title';
8
- export * from './elements/use';
9
- export * from './elements/unsafe';
10
- export * from './elements/reflect';
11
- export * from './elements/modal-base';
12
- export * from './elements/dialog-base';
13
- export * from './helper/theme';
14
- export * from './helper/i18n';
15
- export * from './helper/request';
16
- export * from './helper/mediaquery';
17
- export * from './';
18
- //# sourceMappingURL=umd.d.ts.map
package/umd.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"umd.d.ts","sourceRoot":"","sources":["src/umd.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,IAAI,CAAC"}