create-mettle-app 1.3.2 → 1.6.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-mettle-app",
3
- "version": "1.3.2",
3
+ "version": "1.6.0",
4
4
  "license": "MIT",
5
5
  "author": "maomincoding",
6
6
  "bin": {
@@ -9,9 +9,10 @@
9
9
  },
10
10
  "devDependencies": {
11
11
  "vite": "^6.1.0",
12
- "vite-plugin-mettle": "^1.0.0"
12
+ "vite-plugin-mettle": "^1.5.0",
13
+ "mettle-jsx-runtime": "^1.0.0"
13
14
  },
14
15
  "dependencies": {
15
- "mettle": "^1.1.2"
16
+ "mettle": "^1.5.0"
16
17
  }
17
18
  }
@@ -1,27 +1,29 @@
1
+ import { signal, produce } from 'mettle';
1
2
  import style from '../style/list.module.css';
2
3
 
3
- export default function List({ setData }) {
4
- const listState = {
5
- arr: [1, 2],
6
- };
7
- let count = 3;
4
+ export default function List() {
5
+ const arr = signal([1, 2]);
6
+ const count = signal(3);
8
7
 
9
8
  function usePush() {
10
- listState.arr.push(count++);
11
- setData();
9
+ arr.value = produce(arr.value, (draft) => {
10
+ draft.push(count.value++);
11
+ });
12
12
  }
13
13
 
14
14
  function useUnshift() {
15
- listState.arr.unshift(count++);
16
- setData();
15
+ arr.value = produce(arr.value, (draft) => {
16
+ draft.unshift(count.value++);
17
+ });
17
18
  }
18
19
 
19
20
  function useDel() {
20
- listState.arr.splice(1, 1);
21
- setData();
21
+ arr.value = produce(arr.value, (draft) => {
22
+ draft.splice(1, 1);
23
+ });
22
24
  }
23
25
 
24
- return () => (
26
+ return (
25
27
  <fragment>
26
28
  <div class={style.listInner}>
27
29
  <button onClick={useUnshift}>Unshift</button>
@@ -29,7 +31,7 @@ export default function List({ setData }) {
29
31
  <button onClick={useDel}>Del</button>
30
32
  </div>
31
33
  <ul class={style.listInner}>
32
- {listState.arr.map((item) => (
34
+ {arr.value.map((item) => (
33
35
  <li key={item}>{item}</li>
34
36
  ))}
35
37
  </ul>
@@ -4,12 +4,12 @@ import List from './components/list';
4
4
  import './style/app.css';
5
5
 
6
6
  function App() {
7
- return () => (
7
+ return (
8
8
  <div class='inner'>
9
9
  <h1>Hello mettle.js</h1>
10
10
  <div class='app-tool'>
11
- <Home/>
12
- <List/>
11
+ <Home />
12
+ <List />
13
13
  </div>
14
14
  </div>
15
15
  );
@@ -1,11 +1,12 @@
1
- export default function Home({ setData }) {
2
- let count = 0;
1
+ import { signal } from 'mettle';
2
+
3
+ export default function Home() {
4
+ const count = signal(0);
3
5
 
4
6
  function add() {
5
- count++;
6
- setData();
7
+ count.value++;
7
8
  }
8
- return () => (
9
+ return (
9
10
  <fragment>
10
11
  <button onClick={add}>Add</button>
11
12
  <h1>{count}</h1>
@@ -9,10 +9,11 @@
9
9
  },
10
10
  "devDependencies": {
11
11
  "vite": "^6.1.0",
12
- "vite-plugin-mettle": "^1.0.0"
12
+ "vite-plugin-mettle": "^1.5.0",
13
+ "mettle-jsx-runtime": "^1.0.0"
13
14
  },
14
15
  "dependencies": {
15
- "mettle": "^1.1.2",
16
+ "mettle": "^1.5.0",
16
17
  "mettle-router": "^0.6.0"
17
18
  }
18
19
  }
@@ -2,7 +2,7 @@ import { createApp } from 'mettle';
2
2
  import Router from './router/index';
3
3
 
4
4
  function App() {
5
- return () => <Router></Router>;
5
+ return <Router></Router>;
6
6
  }
7
7
 
8
- createApp(<App />, '#app');
8
+ createApp(<App />, '#app');
@@ -11,7 +11,7 @@ export default function About() {
11
11
  console.log(toParse());
12
12
  }
13
13
 
14
- return () => (
14
+ return (
15
15
  <fragment>
16
16
  <button onClick={goHome}>goHome</button>
17
17
  <h1 onClick={getOption}>About</h1>
@@ -1,11 +1,10 @@
1
+ import { signal, produce, batch, computed } from 'mettle';
1
2
  import { linkTo } from 'mettle-router';
2
3
 
3
- export default function Home({ setData }) {
4
- const state = {
5
- msg: 'hello',
6
- arr: [1, 2],
7
- count: 3,
8
- };
4
+ export default function Home() {
5
+ const msg = signal('hello');
6
+ const arr = signal([1, 2]);
7
+ const count = signal(3);
9
8
 
10
9
  function goAbout() {
11
10
  linkTo({
@@ -18,22 +17,23 @@ export default function Home({ setData }) {
18
17
  }
19
18
 
20
19
  function useChange() {
21
- state.msg = 'world';
22
- state.count++;
23
- state.arr.unshift(state.count);
24
- setData();
20
+ batch(() => {
21
+ msg.value = 'world';
22
+ count.value++;
23
+ arr.value = produce(arr.value, (draft) => {
24
+ draft.unshift(count.value);
25
+ });
26
+ });
25
27
  }
26
28
 
27
- return () => (
29
+ const list = computed(() => arr.value.map((item) => <li key={item}>{item}</li>));
30
+
31
+ return (
28
32
  <fragment>
29
33
  <button onClick={goAbout}>goAbout</button>
30
34
  <h1>Home</h1>
31
- <p onClick={useChange}>{state.msg}</p>
32
- <ul>
33
- {state.arr.map((item) => (
34
- <li key={item}>{item}</li>
35
- ))}
36
- </ul>
35
+ <p onClick={useChange}>{msg}</p>
36
+ <ul>{list}</ul>
37
37
  </fragment>
38
38
  );
39
39
  }
@@ -10,10 +10,11 @@
10
10
  "devDependencies": {
11
11
  "typescript": "~5.7.2",
12
12
  "vite": "^6.1.0",
13
- "vite-plugin-mettle": "^1.0.0"
13
+ "vite-plugin-mettle": "^1.5.0",
14
+ "mettle-jsx-runtime": "^1.0.0"
14
15
  },
15
16
  "dependencies": {
16
- "mettle": "^1.1.2",
17
+ "mettle": "^1.5.0",
17
18
  "mettle-router": "^0.6.0"
18
19
  }
19
20
  }
@@ -2,7 +2,7 @@ import { createApp } from 'mettle';
2
2
  import Router from './router/index';
3
3
 
4
4
  function App() {
5
- return () => <Router></Router>;
5
+ return <Router></Router>;
6
6
  }
7
7
 
8
- createApp(<App />, '#app');
8
+ createApp(<App />, '#app');
@@ -11,7 +11,7 @@ export default function About() {
11
11
  console.log(toParse());
12
12
  }
13
13
 
14
- return () => (
14
+ return (
15
15
  <fragment>
16
16
  <button onClick={goHome}>goHome</button>
17
17
  <h1 onClick={getOption}>About</h1>
@@ -1,11 +1,19 @@
1
+ import {
2
+ signal as signalUntyped,
3
+ produce as produceUntyped,
4
+ batch,
5
+ computed as computedUntyped,
6
+ } from 'mettle';
1
7
  import { linkTo } from 'mettle-router';
2
8
 
3
- export default function Home({ setData }: any) {
4
- const state = {
5
- msg: 'hello',
6
- arr: [1, 2],
7
- count: 3,
8
- };
9
+ const signal = signalUntyped as any;
10
+ const produce = produceUntyped as any;
11
+ const computed = computedUntyped as any;
12
+
13
+ export default function Home() {
14
+ const msg = signal('hello');
15
+ const arr = signal([1, 2]);
16
+ const count = signal(3);
9
17
 
10
18
  function goAbout() {
11
19
  linkTo({
@@ -18,22 +26,23 @@ export default function Home({ setData }: any) {
18
26
  }
19
27
 
20
28
  function useChange() {
21
- state.msg = 'world';
22
- state.count++;
23
- state.arr.unshift(state.count);
24
- setData();
29
+ batch(() => {
30
+ msg.value = 'world';
31
+ count.value++;
32
+ arr.value = produce(arr.value, (draft: any) => {
33
+ draft.unshift(count.value);
34
+ });
35
+ });
25
36
  }
26
37
 
27
- return () => (
38
+ const list = computed(() => arr.value.map((item: any) => <li key={item}>{item}</li>));
39
+
40
+ return (
28
41
  <fragment>
29
42
  <button onClick={goAbout}>goAbout</button>
30
43
  <h1>Home</h1>
31
- <p onClick={useChange}>{state.msg}</p>
32
- <ul>
33
- {state.arr.map((item) => (
34
- <li key={item}>{item}</li>
35
- ))}
36
- </ul>
44
+ <p onClick={useChange}>{msg}</p>
45
+ <ul>{list}</ul>
37
46
  </fragment>
38
47
  );
39
48
  }
@@ -10,9 +10,10 @@
10
10
  "devDependencies": {
11
11
  "typescript": "~5.7.2",
12
12
  "vite": "^6.1.0",
13
- "vite-plugin-mettle": "^1.0.0"
13
+ "vite-plugin-mettle": "^1.5.0",
14
+ "mettle-jsx-runtime": "^1.0.0"
14
15
  },
15
16
  "dependencies": {
16
- "mettle": "^1.1.2"
17
+ "mettle": "^1.5.0"
17
18
  }
18
19
  }
@@ -1,27 +1,32 @@
1
+ import { signal as signalUntyped, produce as produceUntyped } from 'mettle';
1
2
  import style from '../style/list.module.css';
2
3
 
3
- export default function List({ setData }: any) {
4
- const listState = {
5
- arr: [1, 2],
6
- };
7
- let count = 3;
4
+ const signal = signalUntyped as any;
5
+ const produce = produceUntyped as any;
6
+
7
+ export default function List() {
8
+ const arr = signal([1, 2]);
9
+ const count = signal(3);
8
10
 
9
11
  function usePush() {
10
- listState.arr.push(count++);
11
- setData();
12
+ arr.value = produce(arr.value, (draft: any) => {
13
+ draft.push(count.value++);
14
+ });
12
15
  }
13
16
 
14
17
  function useUnshift() {
15
- listState.arr.unshift(count++);
16
- setData();
18
+ arr.value = produce(arr.value, (draft: any) => {
19
+ draft.unshift(count.value++);
20
+ });
17
21
  }
18
22
 
19
23
  function useDel() {
20
- listState.arr.splice(1, 1);
21
- setData();
24
+ arr.value = produce(arr.value, (draft: any) => {
25
+ draft.splice(1, 1);
26
+ });
22
27
  }
23
28
 
24
- return () => (
29
+ return (
25
30
  <fragment>
26
31
  <div class={style.listInner}>
27
32
  <button onClick={useUnshift}>Unshift</button>
@@ -29,7 +34,7 @@ export default function List({ setData }: any) {
29
34
  <button onClick={useDel}>Del</button>
30
35
  </div>
31
36
  <ul class={style.listInner}>
32
- {listState.arr.map((item) => (
37
+ {arr.value.map((item: any) => (
33
38
  <li key={item}>{item}</li>
34
39
  ))}
35
40
  </ul>
@@ -4,15 +4,15 @@ import List from './components/list';
4
4
  import './style/app.css';
5
5
 
6
6
  function App() {
7
- return () => (
7
+ return (
8
8
  <div class='inner'>
9
9
  <h1>Hello mettle.js</h1>
10
10
  <div class='app-tool'>
11
- <Home/>
12
- <List/>
11
+ <Home />
12
+ <List />
13
13
  </div>
14
14
  </div>
15
15
  );
16
16
  }
17
17
 
18
- createApp(<App />, '#app');
18
+ createApp(<App />, '#app');
@@ -1,11 +1,14 @@
1
- export default function Home({ setData }: any) {
2
- let count = 0;
1
+ import { signal as signalUntyped } from 'mettle';
2
+
3
+ const signal = signalUntyped as any;
4
+
5
+ export default function Home() {
6
+ const count = signal(0);
3
7
 
4
8
  function add() {
5
- count++;
6
- setData();
9
+ count.value++;
7
10
  }
8
- return () => (
11
+ return (
9
12
  <fragment>
10
13
  <button onClick={add}>Add</button>
11
14
  <h1>{count}</h1>