@wcstack/state 2.3.0 â 2.5.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/README.ja.md +177 -52
- package/README.md +176 -51
- package/dist/auto.min.js +1 -1
- package/dist/auto.min.js.map +1 -1
- package/dist/index.d.ts +186 -5
- package/dist/index.esm.js +6347 -3619
- package/dist/index.esm.js.map +1 -1
- package/dist/manifest.esm.js +2 -0
- package/dist/wcs-manifest.json +1 -0
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> ð€ **AI coding agents**: This README is a package-level reference, not the primary entry point for building a wcstack application. If you have not already done so, first read the repository [README](https://github.com/wcstack/wcstack#readme) and [AGENTS.md](https://github.com/wcstack/wcstack/blob/main/AGENTS.md), then use the [wcstack-app skill](https://github.com/wcstack/wcstack-skill).
|
|
4
4
|
|
|
5
|
-
**ããã¯äŸ¿å©ãªæ¢åFW
|
|
5
|
+
**ããã¯äŸ¿å©ãªæ¢åFWã®å¥å®è£
ã§ã¯ãããŸããããã¹ããã¥ãŒãšã¢ãã«ã®å¥çŽã«ãªãââããã³ããšã³ãã®å€ã§ç¢ºç«ããç³»èããWebæšæºã®äžã«æã¡èŸŒã詊ã¿ã§ãã**
|
|
6
6
|
|
|
7
7
|
å€ãã®ã©ã€ãã©ãªã¯ãUIã»ç¶æ
ã»ã³ã³ããŒãã³ãã®çµåç¹ã JavaScript ã®äžã«çœ®ããŸãã`@wcstack/state` ã¯ãããéžã³ãŸãããä»®æ³DOMããã³ã³ãã€ã«ããhook ããselector ãåæã«ãããHTML ãšãã¹æååã ããå¥çŽãšã㊠UI ãšç¶æ
ãçµã³ã€ããŸãã
|
|
8
8
|
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
| JavaScript ãæç»ã®äžå¿ | HTML ãš DOM ãäžå¿ |
|
|
33
33
|
| state ãåãåºã㊠component ãžæµã蟌ã | path ã宣èšã㊠DOM ãç¶æ
ãžæ¥ç¶ãã |
|
|
34
34
|
| hook / selector / signal ã§è³Œèªãã | 屿§ãšãã¹ã§æçžãã |
|
|
35
|
-
| ãã¬ãŒã ã¯ãŒã¯ã®å®è¡ã¢ãã«ã«ã¢ããªå
šäœãèŒãã |
|
|
35
|
+
| ãã¬ãŒã ã¯ãŒã¯ã®å®è¡ã¢ãã«ã«ã¢ããªå
šäœãèŒãã | ãã©ãŠã¶æšæºã®äžã« reactive layer ãè¶³ããããŒãžã¯ããŒãžã®ãŸãŸ |
|
|
36
36
|
|
|
37
37
|
ããè¿ã芪æã¯ **屿§ãã£ã¬ã¯ãã£ãåã»ãã«ãäžèŠã®ã©ã€ãã©ãª** â Alpine.js ã petite-vue ã®ç³»çµ±ã§ããåæïŒçŽ ã® HTML ãžã®å±æ§ã»ã³ã³ãã€ã©äžèŠïŒã¯å
±æãã€ã€ãéžæãåããéãã 2 ã€ãããŸãã
|
|
38
38
|
|
|
@@ -45,6 +45,23 @@
|
|
|
45
45
|
|
|
46
46
|
ãã®è»žã«ä¹ããã°æ¯èŒã¯å
·äœçã«ãªããŸããäžã®[ããã©ãŒãã³ã¹](#ããã©ãŒãã³ã¹)ç¯ããã®äžäŸã§ã`e2e/bench/` ã®ãã©ã€ãã§æå
ã®ããŒããŠã§ã¢ã§ãåçŸã§ããŸãã
|
|
47
47
|
|
|
48
|
+
### JavaScript ã®å€ã«ããç³»è
|
|
49
|
+
|
|
50
|
+
ã*ãã¹æååã ãããã¥ãŒãšã¢ãã«ã®å¥çŽã§ãã*ããšããåæã¯ããã¬ãŒã ã¯ãŒã¯ã®æä»£ããå€ãããã®å€§å㯠JavaScript ã®å€ã§äœãããŸãããJavaScript ã®å
åŽã§ã®çŽç³»ã¯ãKnockout ã® `data-bind="text: user.name"`ïŒãã€ã³ãã£ã³ã°ã屿§ã«èŒããããã ãåŒãè©äŸ¡ãã`ko.observable` ã®ã©ãããèŠãïŒãšãPolymer ã®ãã¹äœç³»ïŒããããã¹ã`items.*` ãªãã¶ãŒãã`this.set("users.0.name", v)`ïŒã§ããåŸè
ã `set()` / `notifyPath()` ãå¿
é ã«ããã®ã¯ãåœæã®ãã©ãããã©ãŒã ã§ã¯çŽ ã®ä»£å
¥ã芳枬ã§ããªãã£ãããã§ãããæ°èŠæ§ã䞻匵ãããããå
è¡ç³»èãåæãããã»ããæçã§ãã
|
|
51
|
+
|
|
52
|
+
| ç³»è | ãã§ã«æã£ãŠãããã® | ããã§ç°ãªãç¹ |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| **衚èšç®**ïŒVisiCalc, 1979ïŒ | ã¢ãã¬ã¹ãã»ã«ã**äœã§ããã**ã宣èšããæ°åŒãäŸåã°ã©ããé
å»¶åèšç® â æŽæ°ã³ãŒãã¯ã©ãã«ããªã | æ Œå座æšã§ã¯ãªãååã䜿ããæ°åŒãã»ã«åäœã§ã¯ãªã*圢*åäœã§æžãã`get "cart.items.*.subtotal"()` ã¯åè¡ãžãã£ã«ããŠã³ãããã®ã§ã¯ãªããã¯ã€ã«ãã«ãŒããã®ãã®ãå®çŸ© |
|
|
55
|
+
| **Cocoa Bindings / KVCâKVO**ïŒNeXT ã® EOF, 1994ïŒMac OS X 10.3, 2003ïŒ | ããŒãã¹ïŒ`person.address.street`ïŒãã察象 + ããŒãã¹ + value transformerãã®äžã€çµããã¹ã«æ²¿ã£ãŠéèšããã³ã¬ã¯ã·ã§ã³æŒç®åïŒ`@sum.items.price`ïŒ | ãã®äžã€çµã nib ã `bind:toObject:withKeyPath:` ã®åŒã³åºãã§ã¯ãªãããŒã¯ã¢ããã«ããã®ã§ãgrepã»lintã»diff ã§ããã倿޿€ç¥ã¯ KVC æºæ ã§ã¯ãªãçŽ ã®ãªããžã§ã¯ããžã® ES Proxy |
|
|
56
|
+
| **XForms**ïŒW3C å§å, 2003ïŒ | model / instance / view ã®åé¢ãinstance ãæã `ref` ãã¹ããã㊠`<bind calculate="âŠ">` â **ãã¹ã®äœçœ®ã«**宣èšãããç®åºå€ã§ããããã¹ getter ã®çŽç³»ã®ç¥å
| ãã¹ã¯ã¢ãã¬ã¹ã«åŸ¹ããèšç®ã¯å±æ§å
ã® XPath ã§ã¯ãªã state äžã® JavaScript getterãXForms ããã»ããµãªãã§çŽ ã®ãã©ãŠã¶ã§åã |
|
|
57
|
+
| **WPF / XAML**ïŒ2006ïŒ | `{Binding Path=User.Name, Mode=TwoWay}`ãéšåæšããšåºç¹ãåŒµãæ¿ãã `DataContext`ããœãŒã¹ãžã®æžãæ»ãæç¹ãéžã¶ `UpdateSourceTrigger`ã䞡端ã倿ãã `IValueConverter` | ããžã¥ã¢ã«ããªãŒãç¶æ¿ããã³ã³ããã¹ããš `RelativeSource` / `ElementName` ã®è±åºå£ã§ã¯ãªããã«ãŒãããšã« 1 æ¬ã® state ããªãŒã`state: user` ããã®åºç¹åŒµãæ¿ãã§ãããããã¹ãã® HTML ã«æžãããã倿åšã¯ç»é²ããã¯ã©ã¹ã§ã¯ãªã 46 åã®éãããã£ã«ã¿ã§ãã³ã³ãã€ã«ãäžèŠ |
|
|
58
|
+
| **Android Data Binding**ïŒ2015ïŒ | ã¬ã€ã¢ãŠããã¡ã€ã«èªäœã«æžããã¹ â `android:text="@{user.name}"`ãåæ¹å㯠`@={}` | ãã«ãæé ãçæããããã€ã³ãã£ã³ã°ã¯ã©ã¹ããªãã屿§ã®äžã«åŒãæžããªã |
|
|
59
|
+
| **SCADA / HMI ã®ã¿ã°ãã€ã³ã**ïŒç£æ¥çšã»æ°åå¹ŽïŒ | èšå®ã ãã§ãŠã£ãžã§ããã®ããããã£ãã¿ã°ãã¹ïŒ`Line1/Tank/Level`ïŒãžé
ç·ããããã¹ãåªä»å€æ°åãã*鿥*ãã€ã³ãïŒ`Folder/Tag_{1}`ïŒã§ 1 ç»é¢ã倿°ã®æ©åšãé§åãã | ããªãŒãæã€ã®ã¯ã¹ã«ã©ãŒã®ãã©ãããªåå空éã§ã¯ãªããæŽŸçå€ã»ãªã¹ãã»ããŠã³ããããã³ã³ããŒãã³ããåªä»å€æ°ã¯ããããããŠã³ããäžãããã®ã§ã¯ãªãããã€ã³ãã£ã³ã°ã眮ãããè¡ã解決ããã«ãŒãã®ã¯ã€ã«ãã«ãŒã |
|
|
60
|
+
|
|
61
|
+
ã¯ã€ã«ãã«ãŒã㯠MQTT ã®ãããã¯ãã£ã«ã¿ïŒ`sensor/+/temperature`ïŒã OSC ã®ã¢ãã¬ã¹ãã¿ãŒã³ïŒ`/synth/*/freq`ïŒã«ã䌌ãŠããŸããããã¡ããéžã¶ã®ã¯**æµããŠããã¡ãã»ãŒãž**ã§ãã`items.*.price` ãåæãã®ã¯ state ã®ã¢ãã¬ã¹ã§ãåã 1 æ¬ã®æååã賌èªå
ã§ããæžã蟌ã¿å
ã§ããããŸãã
|
|
62
|
+
|
|
63
|
+
ãã®æ¯èŒãçµãŠæ¬åœã«æ°ãããšèšããã®ã¯çãç¯å²ã§ãã**ã¯ã€ã«ãã«ãŒããã¹ getter** â *ããŒ*ããã¹ãã¿ãŒã³ã§ãã getter ãªã®ã§ãå®çŸ© 1 æ¬ãå
šè¡ã«å¹ããäŸåãšããžã¯ã»ã«åäœã§ã¯ãªããã¿ãŒã³åäœã§ä¿æãããŸãããã以å€ã¯ãäžã®ç³»èãããããããåæã«ã§ããªãã£ã 3 ã€ã®ãã®ïŒCustom Elementsã»ES Proxyã»Import MapsïŒã®äžãžçµã¿çŽãããã®ã§ãã
|
|
64
|
+
|
|
48
65
|
## 第äžåç: ãã¹ãå¯äžã®å¥çŽ
|
|
49
66
|
|
|
50
67
|
æ¢åã®å€ãã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ã**ã³ã³ããŒãã³ã**ãUIãšç¶æ
ã®çµåç¹ã«ãªã£ãŠããŸããç¶æ
ã¹ãã¢ãå€éšã«åãåºããŠããã³ã³ããŒãã³ãå
ã«ããã¯ãã»ã¬ã¯ã¿ããªã¢ã¯ãã£ãããªããã£ããšãã£ã**ç¶æ
ãåŒã蟌ãããã®ã³ãŒã**ãå¿
ãå¿
èŠã«ãªããŸããã€ãŸããUIãšç¶æ
ã¯åžžã«JavaScriptã®äžã§çµã³ã€ããŠããã®ã§ãã
|
|
@@ -55,23 +72,23 @@
|
|
|
55
72
|
|----------|----------------|--------------|
|
|
56
73
|
| **ç¶æ
** (`<wcs-state>`) | ããŒã¿æ§é ãšããžãã¹ããžã㯠| ã©ã®DOMèŠçŽ ããã€ã³ããããŠããã |
|
|
57
74
|
| **UI** (`data-wcs`) | ãã¹æååãšè¡šç€ºæå³ | ç¶æ
ãã©ãä¿åã»ç®åºãããŠããã |
|
|
58
|
-
| **ã³ã³ããŒãã³ã** (`state: path`) | ãã¹ããæžãããŠã³ã衚 |
|
|
75
|
+
| **ã³ã³ããŒãã³ã** (`state: path`) | ãã¹ããæžãããŠã³ã衚 | 誰ãããŠã³ãããã®ããããªãŒã®ä»ã®éšåã«äœãããã®ã |
|
|
59
76
|
|
|
60
77
|
3ã€ã®ã¬ãã«ã®ãã¹å¥çŽãççµåãå®çŸããŠããŸã:
|
|
61
78
|
|
|
62
|
-
1. **UI â ç¶æ
** â `data-wcs="textContent: user.name"`
|
|
79
|
+
1. **UI â ç¶æ
** â `data-wcs="textContent: user.name"` ãšãã屿§ããã€ã³ãã£ã³ã°ã®ãã¹ãŠã§ããããã¯ãã»ã¬ã¯ã¿ããªã¢ã¯ãã£ãããªããã£ãããããŸãããã³ã³ããŒãã³ãåŽã®ã³ãŒãããªã¢ã¯ãã£ãããªããã£ãã import ããããšãã賌èªãç»é²ããããšããããŸããã`bind-component` ããã¯ã©ã¹ã¯çŽ ã® `state` ãªããžã§ã¯ããèªåã§å®£èšããçŽ ã®ãªããžã§ã¯ããšããŠèªã¿æžãããŸããååšããªãã®ã¯ãç¶æ
ãã³ã³ããŒãã³ããžåŒã蟌ã glue ã³ãŒãã®ã»ãã§ãã
|
|
63
80
|
|
|
64
|
-
2. **ã³ã³ããŒãã³ã â ã³ã³ããŒãã³ã** â ãã¹ããåã³ã³ããŒãã³ããžéšåæšãããŠã³ããïŒ`<my-card data-wcs="state: user">`ïŒãããªã¥ãŒã ã远å ã¢ãžã¥ãŒã«ãããªãŒã«æ¥ãæšããŸãïŒ`<wcs-state mount="i18n"
|
|
81
|
+
2. **ã³ã³ããŒãã³ã â ã³ã³ããŒãã³ã** â ãã¹ããåã³ã³ããŒãã³ããžéšåæšãããŠã³ããïŒ`<my-card data-wcs="state: user">`ïŒãããªã¥ãŒã ã远å ã¢ãžã¥ãŒã«ãããªãŒã«æ¥ãæšããŸãïŒ`<wcs-state mount="i18n">`ïŒãã³ã³ããŒãã³ãå士ããäºãã import ããããšã¯ãªããäžžããšããŠã³ãã¯åäžããªãŒäžã®ãã¹æ¥é èŸãã®ãã®ã§ããããããèžã¿èŸŒã宣èšåœ¢åŒã 2 ã€ãããããããå®çŸ©ç®æã«æèšããŠããŸãã[åå¥å¯Ÿå¿ä»ã](#ãã¹ãåŽã®äœ¿ç𿹿³)ïŒ`state.message: user.name`ïŒã¯ãã¹ããã³ã³ããŒãã³ãèªèº«ã®ããŒåãæžãããšã«ãªãã[å
¬é getter](#å
¬é-getterã³ã³ããŒãã³ãã®-getter-ãå€ããèªã) ã¯ã³ã³ããŒãã³ããèšç®ããå€ããã¹ããèªãã®ã§ããã®ãã€ã³ãã£ã³ã°ã¯ããã«ã³ã³ããŒãã³ããããŠã³ããããŠããããšã«äŸåããŸãã
|
|
65
82
|
|
|
66
83
|
3. **ã«ãŒãã³ã³ããã¹ã** â `for` ã«ãŒãå
ã§ã¯ `*` ãæœè±¡ã€ã³ããã¯ã¹ãšããŠæ©èœããŸãã`items.*.price` ã®ãããªãã€ã³ãã£ã³ã°ã¯èªåçã«çŸåšã®èŠçŽ ãžãšè§£æ±ºãããŸãããã³ãã¬ãŒãã¯èªèº«ã®å
·äœçãªäœçœ®ïŒã€ã³ããã¯ã¹ïŒãç¥ãå¿
èŠããªããã¯ã€ã«ãã«ãŒãããã®å¥çŽãšãªããŸãã
|
|
67
84
|
|
|
68
85
|
### ãªããããéèŠãªã®ã
|
|
69
86
|
|
|
70
|
-
ããã¯UI
|
|
87
|
+
ããã¯UIãšç¶æ
ã®åé¢ãã**JavaScriptã®ã³ãŒããä»ããããšãªã**å®çŸããŠããããšãæå³ããŸããã€ãŸã:
|
|
71
88
|
|
|
72
|
-
- UI
|
|
89
|
+
- UIãäœãçŽããŠããç¶æ
ã®ããžãã¯ã«è§Šããå¿
èŠããããŸãã â ãã ãããžãã¯ãæç»å
容ã«ã¶ãäžãã£ãŠããªãç¯å²ã§ãlive binding 㯠3 ã€ãã[è©äŸ¡ã®ãã£ãã](#è©äŸ¡ã®ãã£ããdemand-root)ã® 1 ã€ãªã®ã§ã衚瀺å°çšã®ã€ããã®èŠçŽ ãããŒãžå¯äžã®è³Œèªã«ãªãããŸãã
|
|
73
90
|
- ç¶æ
ã®ããŒã¿æ§é ããªãã¡ã¯ã¿ãªã³ã°ããŠãããã¹æååã®æŽæ°ã ãã§æžã¿ãŸãã
|
|
74
|
-
- HTML
|
|
91
|
+
- HTMLãèªãã°ããã¹ãŠã®ãã€ã³ãã£ã³ã°ãææ¡ã§ããŸããHTMLã«çŸããªãäŸåïŒ`$watch`ã»`$streams`ã»`$scan`ïŒã¯ããã¹ãŠ state ãšãã 1 ç®æã«å®£èšãããŠããŸãã
|
|
75
92
|
|
|
76
93
|
ãã®ãã¹ã«ããå¥çŽã¯ãREST APIã®URLãšåãçºæ³ã§ã â äž¡è
ãåæããã·ã³ãã«ãªæååã ããååšããããã«å
±æããã³ãŒãã¯ãããŸãããããã¯JavaScriptã®äžã«ç¬èªã®ãã³ãã¬ãŒãèšèªãçºæããã®ã§ã¯ãªããHTMLæ¬æ¥ã®å®£èšçãªæ§è³ªããã«ã«æŽ»ãããçµæãšããŠçãŸããèšèšã§ãã
|
|
77
94
|
|
|
@@ -101,29 +118,46 @@
|
|
|
101
118
|
|
|
102
119
|
## ãã®åçããå°ãããæ©èœ
|
|
103
120
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
121
|
+
åè¡ã¯ãã® README ã® 1 ç¯ã«å¯Ÿå¿ããŸãã[åšèŸºããã±ãŒãžã®åœ¹å²](#åšèŸºããã±ãŒãžã®åœ¹å²)ã«æãããã®ä»¥å€ã¯ããã¹ãŠãã®ããã±ãŒãžåäœã®æ©èœã§ãã
|
|
122
|
+
|
|
123
|
+
| é å | äžè¡ã§èšããš | åç
§ |
|
|
124
|
+
|---|---|---|
|
|
125
|
+
| **ãã¹ã¢ãã«** | ããããã¹ã state ãæãã`*` ã¯æœè±¡æ·»åã`**` ã¯æ·±ãã`$1` / `$2` ã¯è»žã®åå | [第äžåç](#第äžåç-ãã¹ãå¯äžã®å¥çŽ) · [ã«ãŒãã€ã³ããã¯ã¹å€æ°](#ã«ãŒãã€ã³ããã¯ã¹å€æ°1-2) |
|
|
126
|
+
| **ãã€ã³ãã£ã³ã°æ§æ** | 1 ã€ã® `data-wcs` 屿§ã«ãããã㣠/ ããã¹ã / class / style / 屿§ / ã€ãã³ããèŒãããããã¹ãããŒãã§ã¯ `{{ }}`ã`<svg>` ã®å
åŽã§ãåã | [ãã€ã³ãã£ã³ã°æ§æ](#ãã€ã³ãã£ã³ã°æ§æ) · [Mustache](#mustache-æ§æ) · [SVG](#svg-ãµããŒã) |
|
|
127
|
+
| **æ§é ãã£ã¬ã¯ãã£ã** | `<template>` äžã® `for` ãš `if` / `elseif` / `else` | [æ§é ãã£ã¬ã¯ãã£ã](#æ§é ãã£ã¬ã¯ãã£ã) |
|
|
128
|
+
| **è¡ã®åäžæ§** | è¡ã¯åç
§ã§å·®åãåãã®ã§ãäžŠã¹æ¿ããçµã蟌ã¿ã§ DOM ãåå©çšããã`$listKeys` ã¯åååŸããé
åã§ãè¡ DOM ãšè¡ãªããžã§ã¯ããä¿ã€ | [`$listKeys`](#listkeys--åååŸãããè¡ã®åäžæ§) |
|
|
129
|
+
| **ãã©ãŒã ** | `input` / `select` / `textarea` ã®åæ¹åãã€ã³ãã£ã³ã°ãã©ãžãªã°ã«ãŒããšåäžå€ããã§ãã¯ããã¯ã¹ã°ã«ãŒããšé
åã`#ro` / `#onchange` / `#prevent` / `#stop` | [åæ¹åãã€ã³ãã£ã³ã°](#åæ¹åãã€ã³ãã£ã³ã°) · [修食å](#修食å) |
|
|
130
|
+
| **ãã£ã«ã¿** | 46 çš®é¡ã®çµã¿èŸŒã¿ããã§ãŒã³å¯èœã`<html lang>` ãèŠããã±ãŒã«äŸåãã©ãŒããã | [ãã£ã«ã¿](#ãã£ã«ã¿) · [ãã±ãŒã«](#ãã±ãŒã«) |
|
|
131
|
+
| **掟çç¶æ
** | ãã¹ getter ãããŒã¿ããªãŒã®ä»»æã®æ·±ãã®ä»®æ³ããããã£ã 1 ç®æã«ãã©ããã«å®£èšããããã§ãŒã³ã§ããsetter ãæžãã | [ãã¹ getter](#ãã¹-getterç®åºããããã£) |
|
|
132
|
+
| **éèšãšäžæ¬æžã蟌ã¿** | `$getAll` / `$setAll` / `$resolve` ã `items.*.price` ãæšªæããŠèªã¿æžããããé
åã¯äœãçŽããªã | [Proxy API](#proxy-api) |
|
|
133
|
+
| **ååž°ãã¹** | `$recursion` ãæšã®åœ¢ã®ç¹°ãè¿ãå°ç¹ã宣èšãã1 æ¬ã® `**` getter ãå
šæ·±ããèŠã | [ååž°ãã¹](#ååž°ãã¹recursion) |
|
|
134
|
+
| **ãªã¢ã¯ãã£ããã£** | ES Proxy ãã¢ãã¬ã¹åäœã§èªã¿åãã远跡ã»ãã£ãã·ã¥ããäŸåé ã«ç¡å¹åããDOM æžã蟌ã¿ããã€ã¯ãã¿ã¹ã¯ã§ãŸãšãã | [ç¶æ
ã®æŽæ°](#ç¶æ
ã®æŽæ°) · [äŸå远跡ã®å¢ç](#äŸå远跡ã®å¢ç) |
|
|
135
|
+
| **getter ãåãæ¡ä»¶** | getter ã¯é
å»¶è©äŸ¡ãè©äŸ¡éèŠã¯ live bindingã»`$watch`ã»`$streams` ã® `args` ã® 3 ç®æããããçãŸããªã | [è©äŸ¡ã®ãã£ãã](#è©äŸ¡ã®ãã£ããdemand-root) |
|
|
136
|
+
| **ã¢ãžã¥ãŒã«å** | `mount=` ãã¢ãžã¥ãŒã«ã 1 æ¬ã®ããªãŒã«æ¥ãæšãã`state: path` ãéšåæšãã³ã³ããŒãã³ãã«ããŠã³ããããåå¥å¯Ÿå¿ä»ãã¯åäžããŒãç¹ããããŠã³ããããã³ã³ããŒãã³ãã® getter ã¯ããŠã³ãç¹ã§å
¬éããã | [ããªã¥ãŒã ](#远å ã®ç¶æ
ãããŠã³ãããmount) · [äžžããšããŠã³ã](#äžžããšããŠã³ãstate-path) |
|
|
137
|
+
| **ã³ã³ããŒãã³ã** | æä»ç㪠2 æ¹åŒ â JavaScript ã¯ã©ã¹ïŒ`bind-component` ããHTML ã ãã® DCC ã | [æ©æ§ã®éžã³æ¹](#ã³ã³ããŒãã³ãæ©æ§ã®éžã³æ¹) |
|
|
138
|
+
| **ä»èŠçŽ ãšã®é
ç·** | wc-bindable ãããã³ã«ãspreadïŒ`...: obj`ïŒã`#init=` / `#sync=` ã® authorityãããããã£â屿§ãã©ãŒ | [ãã€ã³ãã£ã³ã° authority](#ãã€ã³ãã£ã³ã°-authority-init--sync) · [Spread](#spread-ãã€ã³ãã£ã³ã°) · [Inputs](#inputs-ãšå±æ§ãã©ãŒ) |
|
|
139
|
+
| **ããŒã¯ã³** | command token ã state ããèŠçŽ ã®ã¡ãœãããåŒã³ãevent token ãèŠçŽ ã®ã€ãã³ãã state ãžæ»ã | [Command token](#command-tokenã¡ãœãããã€ã³ãã£ã³ã°) · [Event token](#event-tokenã€ãã³ããã€ã³ãã£ã³ã°) |
|
|
140
|
+
| **æé** | `$streams` ãéåæãœãŒã¹ã fold ãã`$watch` ã headless ã«åå¿ãã`$scan` ãäž¡è
ãè¶ããŠæ®ã环ç©å€ãæã€ | [æéãæ±ãæ©æ§ã®éžã³æ¹](#æéãæ±ãæ©æ§ã®éžã³æ¹) |
|
|
141
|
+
| **åæåãšã©ã€ããµã€ã¯ã«** | state ã®äŸçµŠã¯ 6 éãã`$connectedCallback` ã `$stateReadyCallback`ã`bootstrapState()` / `createState()` | [ç¶æ
ã®åæå](#ç¶æ
ã®åæå) · [ã©ã€ããµã€ã¯ã«ããã¯](#ã©ã€ããµã€ã¯ã«ããã¯) · [API ãªãã¡ã¬ã³ã¹](#api-ãªãã¡ã¬ã³ã¹) |
|
|
142
|
+
| **蚺æ** | 解決ããªããã¹ã»æ·»åã®æ¬æ°ã»éæ°ã»getter ã®åŸªç°ãå ±åããã倱æã¯ãã®ãã€ã³ãã£ã³ã° 1 æ¬ã«éããå€ã DOM ãå·»ãæ»ããªã | [蚺æãšå€±æã®æ±ã](#蚺æãšå€±æã®æ±ã) |
|
|
143
|
+
| **é
åž** | ã©ã³ã¿ã€ã äŸåãŒãããã«ãäžèŠãESMãCDN ã® `/auto` 1 ã¿ã°ã`unsafe-eval` äžèŠã§ Trusted Types å¯Ÿå¿ | [ã€ã³ã¹ããŒã«](#ã€ã³ã¹ããŒã«) · [docs/csp.ja.md](../../docs/csp.ja.md) |
|
|
144
|
+
|
|
145
|
+
### åšèŸºããã±ãŒãžã®åœ¹å²
|
|
146
|
+
|
|
147
|
+
`@wcstack/state` ã¯ãªã¢ã¯ãã£ãã³ã¢ã ããæ
ããŸããããŒã«ã»I/Oã»ã«ãŒãã£ã³ã°ã¯å¥ããã±ãŒãžã§ãåæ
ã¯ãã€ãåã圢ã§ã ââ ãã®ããã±ãŒãžãæ¥ç¶ç¹ãšå¥çŽãçšæããåšèŸºããã±ãŒãžãæ©æ§ãæã¡èŸŒã¿ãŸãã
|
|
148
|
+
|
|
149
|
+
| ããã±ãŒãž | å ãããã® | ãã®ããã±ãŒãžåŽã«ãããã® |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| [`@wcstack/server`](../server/) | ãµãŒããŒåŽã§ã®æç»ãšãã¯ã©ã€ã¢ã³ãã«å±ãã markup ã®ãã€ãã¬ãŒã·ã§ã³ | `enable-ssr` 屿§ãšãã€ãã¬ãŒã·ã§ã³å¥çŽ â [SSR](#ãµãŒããŒãµã€ãã¬ã³ããªã³ã°) |
|
|
152
|
+
| [`@wcstack/lint`](../lint/) | `npx @wcstack/lint <file>` ã HTML äžã® `data-wcs` ãå®è¡åã«æ€æ»ãã | 蚺æ code ãš `getWcsManifest()`ïŒã©ã¡ãããã®å®è£
ããå°åºïŒâ [蚺æ](#蚺æãšå€±æã®æ±ã) |
|
|
153
|
+
| VS Code æ¡åŒµïŒ`wcstack-intellisense`ïŒ | åã蚺æãšè£å®ããšãã£ã¿å
ã§ | åã manifest ãšèšºæ code |
|
|
154
|
+
| [`@wcstack/typescript`](../typescript/) | `wcs-schema` ãåã HTML æ€èšŒåšãžéã³ã`wcs-tsc` ãã€ã³ã©ã€ã³ state ã¹ã¯ãªããã忀æ»ãã | `defineState()`ã`WcsPaths<T>` / `WcsPathValue<T, P>` â [TypeScript ãµããŒã](#typescript-ãµããŒã) |
|
|
155
|
+
| [`@wcstack/devtools`](../devtools/) | stateã»é
ç·ã»æŽæ°å±¥æŽãèŠããã©ãŠã¶ããã« | ããã«ãèªãèšè£
|
|
|
156
|
+
| [`@wcstack/testing`](../testing/) | `mount()` / `settle()` / `fire()` ã 1 import ã§ | 远å ããã±ãŒãžãªãã§æžããçŽ ã®ã¬ã·ã â [ããŒãžããã¹ããã](#ããŒãžããã¹ããã) |
|
|
157
|
+
| [`@wcstack/view-transition`](../view-transition/) | ãªã¹ãã®ç§»åã»åé€ãåå²ã®å
¥ãæ¿ãã View Transition API ã§ã¢ãã¡ãŒã·ã§ã³ããã | transition-runner ã®åãæž¡ããããŒãžã« arbiter ããªããã°å€æŽã¯ãã®ãŸãŸé©çšããã â [é·ç§»ã¢ãã¡ãŒã·ã§ã³](#é·ç§»ã¢ãã¡ãŒã·ã§ã³) |
|
|
158
|
+
| [`@wcstack/router`](../router/) · [`@wcstack/autoloader`](../autoloader/) | 宣èšçã«ãŒãã£ã³ã°ãæªå®çŸ©ã«ã¹ã¿ã èŠçŽ ã®èªåèªã¿èŸŒã¿ | ã«ãŒããæžã蟌ãããã¹ãšãé
å»¶å®çŸ©ãåŸ
ã€ãã€ã³ãã£ã³ã° |
|
|
159
|
+
| [I/O ããŒã矀](../../README.ja.md#远å ããã±ãŒãž) â `fetch`, `storage`, `ws`, `midi`, ⊠| ãã©ãããã©ãŒã API ãèŠçŽ ãšã㊠| ããããç¹ã wc-bindable é
ç·ã»spreadã»ããŒã¯ã³ãããã³ã« â [Spread](#spread-ãã€ã³ãã£ã³ã°) |
|
|
160
|
+
| [`@wcstack/signals`](../signals/) | ãã 1 ã€ã®ãªã¢ã¯ãã£ãã³ã¢ã巚倧㪠keyed ãªã¹ãã®çæã»è¿œå ã 2.5ã3.5 åéã | çžäºéçš ââ ã©ã¡ãã wc-bindable ã話ãã®ã§ I/O ããŒããš DCC ã¯å
±æã§ãã â [ããã©ãŒãã³ã¹](#ããã©ãŒãã³ã¹) |
|
|
127
161
|
|
|
128
162
|
## ã€ã³ã¹ããŒã«
|
|
129
163
|
|
|
@@ -248,7 +282,7 @@
|
|
|
248
282
|
<div data-wcs="textContent: cart.total"></div>
|
|
249
283
|
```
|
|
250
284
|
|
|
251
|
-
ããªã¥ãŒã 㯠getterã»`$watch`ã»`$listKeys`ã»`$updatedCallback`ã»`$connectedCallback`/`$disconnectedCallback` ã宣èšã§ããŸãïŒãã¹ãŠããŠã³ããã¹çžå¯ŸïŒã`$errorCallback` ã¯ã«ãŒãå°çšã§ãïŒãã€ã³ãã£ã³ã°ã®å€±æã¯ããªãŒã®ææè
ãž 1
|
|
285
|
+
ããªã¥ãŒã 㯠getterã»`$watch`ã»`$listKeys`ã»`$updatedCallback`ã»`$connectedCallback`/`$disconnectedCallback` ã宣èšã§ããŸãïŒãã¹ãŠããŠã³ããã¹çžå¯ŸïŒã`$errorCallback` ã¯ã«ãŒãå°çšã§ãïŒãã€ã³ãã£ã³ã°ã®å€±æã¯ããªãŒã®ææè
ãž 1 åã ãå ±åãããŸãïŒãèªã¿èŸŒã¿é ã¯èªç±ã§ãïŒã«ãŒãããå
ã«æ¥ç¶ãããããªã¥ãŒã ã¯ãã«ãŒãã®ç»é²æã«æ¥ãæšãããŸãïŒãã«ãŒãã® `<wcs-state>` ãåæåã«å€±æããå Žåããã®æç¹ã§åŸ
æ©ããŠããããªã¥ãŒã ã¯æ°žä¹
ã«åŸ
ããã«èªåã®å ±åãåºããŠæ±ºçããŸãããã®å ±åãçµç¹ã§ã ââ å€å
ãšããŠå ±åãããããªã¥ãŒã ã¯åŸããèªåã§æ¥ãæšãçŽããªãã®ã§ãããšããä¿®æ£çã®ã«ãŒããæ¥ç¶ããŠã埩垰ããŸãããæ¥ãæšããªããŸãŸæ±ºçããããªã¥ãŒã ïŒå€å
ã»ããŒã倱æã»æ¥ãæšå€±æïŒã¯ããŠã³ãã®æ ãè¿ããŸããããŒãäžãã«ãŒãåŸ
ã¡ã®ããã ã«å€ããããªã¥ãŒã ãæ ãè¿ããŸããããããããªã¥ãŒã ã¯ãåã root ãžä»ãçŽãããšãã¯ãã®å Žã§ããã以å€ã¯æ¥ãæšã®çŽåã«æ ãåãçŽããæ ã空ããŠããã°åŸæ¥ã©ããïŒå€ãããŸãŸã§ãïŒæ¥ãæšããŸããå€ããŠããéã«å¥ã®ããªã¥ãŒã ãæ ãåã£ãŠããå Žåã¯ããããå ±åããŠæ¥ãæšããŸãããããªã¥ãŒã ã® `$connectedCallback` ãåæã§æããå Žåãéåæã®å€±æãšåããå ±åã«çãŸããæ¥ãæšã¯æžãã ãã®ãšããŠæ±ããŸããããŒãžãèªã¿çŽããã«åŸ©æ§ããã«ã¯ãå£ããã«ãŒããšå€å
ã®ããªã¥ãŒã ãåãé€ããŠæ°ããèŠçŽ ã远å ããŠãã ãããæ¥ãæšæžã¿ã®ããªã¥ãŒã ã¯ãå€ããŠãããŒã¿ãããªãŒã«æ®ãã®ã§æ ãæ¡ã£ããŸãŸã§ããããŠã³ããã¹ã¯éçãã¹ã®ã¿ã§ãïŒ`*`ã»`$`ã»`#`ã»`@` ã¯äžå¯ïŒãåæååŸã« `mount` 屿§ã倿Žããããšã¯ã§ããŸãã â 倿Žã¯ console èŠåä»ãã§ç¡èŠãããŸããèŠçŽ ãåãé€ããæããã¹ã§æ°ããèŠçŽ ã远å ããŠãã ããã
|
|
252
286
|
|
|
253
287
|
> **v1 ã®ååä»ãç¶æ
ããã®ç§»è¡:** `<wcs-state name="cart">` + `total@cart` 㯠`<wcs-state mount="cart">` + `cart.total` ã«ãªããŸããv2 ã§ã¯ `name` 屿§ã¯ fail-fast ãããã¹äžã® `@` 㯠parse error ã§ãïŒã©ã¡ãããã®èªå°æä»ãïŒãç§»è¡ã®å¯Ÿå¿è¡š: [docs/state-mount-design.md](../../docs/state-mount-design.md) §9ã
|
|
254
288
|
|
|
@@ -1103,6 +1137,8 @@ export default {
|
|
|
1103
1137
|
};
|
|
1104
1138
|
```
|
|
1105
1139
|
|
|
1140
|
+
ãã®æžãæ¹ã§è¡ãå
¥ãæ¿ãããšãå
¥ãæ¿ããæã£ãæç¹ã§ãæç»æžã¿ã®è¡ãå€ãšäžç·ã«äžŠã¹æ¿ãããŸãïŒãã®å Žã§äžèº«ãæžãæããã®ã§ã¯ãããŸããïŒãè¡ã® `$1` ãšããã€ã³ãã®å€ã«ããè¡ã®ç¶æ
ïŒãã€ã³ãããŠããªã input ã«å
¥åäžã®ããã¹ããªã©ïŒãå€ã«ä»ããŠããŸãããªã¹ãã«ç¡ãã£ãå€ãæžã蟌ããšããã®è¡ã¯ãã®å Žã§çœ®ãæãããŸãããããã¯ã¯åããããã€ã³ããæ°ããå€ãæ ãã®ã§ãè¡ã«ãã€ã³ããã input ã¯å
¥åäžããã©ãŒã«ã¹ãä¿ã¡ãŸããããªããã£ãã®ãªã¹ãã§ã¯çããå€ãåºå¥ã§ããªããããæžã蟌ã¿ã®çµæãåãå€ã®äžŠã¹æ¿ãã«ãªãã°å
¥ãæ¿ããšããŠæ±ããŸãã
|
|
1141
|
+
|
|
1106
1142
|
## ååž°ãã¹ïŒ`$recursion`ïŒ
|
|
1107
1143
|
|
|
1108
1144
|
ãã¹ã¯æ·±ããæååã«çŒãä»ããŸãã`nodes.*.children.*.total` ã¯ã¯ã€ã«ãã«ãŒãã¡ããã© 2 段ã®ãã¹ã§ãããæšã 1 段深ããªã£ãŠã 3 段ã«ã¯äŒžã³ãŸããããããæšã®æ·±ãã¯ã³ãŒãã§ã¯ãªã**ããŒã¿ã®æ§è³ª**ã§ãã`$recursion` ã¯ãã®éãããåããŸãã圢ãç¹°ãè¿ãå Žæã宣èšããããšã¯ãããŸäœæ®µç®ã§ãããã `**` ãšæžããŸãã
|
|
@@ -1252,7 +1288,7 @@ this.$setAll("nodes.**.selected", [], false); // å
šæ·±ãã®å
šããŒã
|
|
|
1252
1288
|
|
|
1253
1289
|
èµ°æ»ã¯æ·±ãæ¹åã«éããªãããå¿
èŠãªåœ¢ããã®å Žã§æ€æ»ããŸãã**åãé
åã€ã³ã¹ã¿ã³ã¹**ã« 2 床å°éãããæåŠããŸãããã®é
åãçŸåšã®ããŒãã®ç¥å
ã®ãã®ãªã埪ç°ïŒ`wcs/recursion-cycle`ïŒãããã§ãªããã° 2 ã€ã®ããŒãã 1 æ¬ã®åãªã¹ããå
±æããŠããŸãïŒ`wcs/recursion-shared-list`ïŒãåããŒãã«èªåã® `children` é
åãæãããŠãã ãã ââ **空**é
åã®äœ¿ãåãã¯è¡ãæããå¥ååã®ãããããªãã®ã§ã远跡ãããæ£åœã§ãã
|
|
1254
1290
|
|
|
1255
|
-
|
|
1291
|
+
è¡ãªããžã§ã¯ããäœãçŽã㊠`children` é
åãåŒãç¶ã眮æ ââ `this.nodes = this.nodes.map(n => ({ ...n }))` ââ ã¯ãµã€ãã®æŽæ°ã§ãéèšããã®ãŸãŸè¿œåŸããŸããåãªã¹ãã®è¡ãªããžã§ã¯ãã¯ãã®ãŸãŸçãæ®ãïŒè¡ã® identity ã§æã£ãŠãããã® ââ `bind-component` ã®åã¹ã³ãŒããæç»ããè¡ããããã«ãã€ã³ãããŠããªãç¶æ
ââ ã¯ä¿ãããŸãïŒãè¡ãã¶ãäžãã£ãŠãã**é圹ãã芪**ã ããçããŠããè¡ã«å·®ãæ¿ããã®ã§ã次ã®èã®æŽæ°ã¯ç»é¢ã«åºãŠããè¡ã dirty ã«ããŸãïŒ[#256](https://github.com/wcstack/wcstack/issues/256)ïŒã2 ã€ã®è¡ã 1 æ¬ã® `children` é
åã**å
±æ**ãã圢ã¯ãããšã¯å¥ã§ãã2 è¡ãšãé
åã«å±
ãéã¯åŸæ¥ã©ããã§ã1 æ¬ã®é
åã«ã¯ 1 çµã®è¡ãããªãã®ã§ 2 è¡ã¯å¿
ãåãå€ã§äžèŽãã芪ãèªãè¡ getterïŒ`this["nodes.*.value"]`ïŒã¯ãã®è¡éåã®**æã¡äž»**ïŒæåã«ãã®é
åãå±éããè¡ïŒã®æèã§è©äŸ¡ãããŸããå€ãã£ãã®ã¯**æã¡äž»ããªã¹ãããå€ãããšã**ã§ãè¡éåã¯ç»é¢ã«æ®ã£ãŠããè¡ã®ã©ãã 1 è¡ãžç§»ããŸã ââ ãã®è¡ã®éèšããå€ããè¡ã®æ°åã§åã代ããã«å
±æããŒã¿ã远åŸããŸãïŒè¡éå㯠1 çµãããªãã®ã§ã3 è¡ã§å
±æããŠããã°æ®ã£ã 1 è¡ã ãã远åŸããä»ã¯åã£ããŸãŸã§ãïŒãå€ããè¡**ãã®ãã®ã®ãªããžã§ã¯ã**ãæ»ã£ãŠããã°æã¡äž»ãæ»ããŸã ââ åãé
åã€ã³ã¹ã¿ã³ã¹ã§ããåãè¡ã䞊ã¹ãæ°ããé
åã§ããéãäœçœ®ã«æ»ããŠãè¿ããŸããäžæ¹ã**å
šãŠã®è¡ãäœãçŽã**ç¶ŽãïŒ`this.nodes = this.nodes.map(n => ({ ...n }))` ââ ãã®é
ã®åé ã®æŽæ°ïŒã§ã¯ã©ã®è¡ãäžèŽããªãã®ã§ãè¡éåã¯**æã¡äž»ãå±
ãäœçœ®ãå ããè¡**ã«ä»ããŸãã2.3.0 ã§ãã®éãã«æ»ãã®ã¯åãé
åã€ã³ã¹ã¿ã³ã¹ã®ç¶Žãã ãã§ãæ°ããé
åã§æ»ããš 2.3.0 ã§ã¯äž¡æ¹ã®è¡ãåããŸããåã® getter ãäžãèªããªããããŒãããšã«èªåã®é
åãæãããŠãã ããã
|
|
1256
1292
|
|
|
1257
1293
|
äžéã¯å±éåŸã®ãã¹ã®**ã¯ã€ã«ãã«ãŒã 128 段**ã§ããäžã®éèš getter ã¯è©äŸ¡äžã®ããŒããã 1 段äžãèªãã®ã§ã127 段ã®éãŸã§ã¯ç³ããŠã128 段㧠`wcs/recursion-depth-exceeded` ã«ãªããŸãïŒã¢ã³ã«ãŒã»å°éããæ·±ãã»çµã¿ç«ãŠãããšãããã¹ã»äžéãåæãããŸãïŒããã®æ€æ»ã¯ getter è©äŸ¡ã¹ã¿ãã¯èªèº«ã® 128 段ã®äžéïŒ`wcs/getter-depth-exceeded`ïŒããå
ã«å¹ãã®ã§ãæ·±ãæšã¯ãæ·±ãããšå ±åããã埪ç°ã®çããæããããããšã¯ãããŸãããéäžã§æã¡åãããšãããŸãã ââ éšåçãªéèšã¯ã誀ã£ãå€ãæ£ããå€ãšããŠè¿ãããšã ããã§ãã
|
|
1258
1294
|
|
|
@@ -1435,10 +1471,10 @@ export default {
|
|
|
1435
1471
|
|
|
1436
1472
|
1. åã³ã³ããŒãã³ãã¯ãèªèº«ã®ç¶æ
ãããã·ãéããŠèŠªã®ç¶æ
ãåç
§ã»æŽæ°ããŸããprops ã®åãæž¡ããã€ãã³ãçºè¡ãªã©ã芪ã®ååšãæèããã³ãŒãã£ã³ã°ã¯å¿
èŠãããŸããã
|
|
1437
1473
|
2. 芪ã®ç¶æ
ã倿ŽããããšãProxy ã® `set` ãã©ããã圱é¿ãããã¹ãåç
§ããŠããåã®ãã€ã³ãã£ã³ã°ãžèªåçã«éç¥ããŸãã
|
|
1438
|
-
3.
|
|
1439
|
-
4. å®è¡ã³ã¹ãã¯ããã¹ã®è§£æ±ºïŒååã¢ã¯ã»ã¹åŸã¯ãã£ãã·ã¥ããããã O(1)
|
|
1474
|
+
3. çµåç¹ã¯**ãã¹åã®ã¿**ã§ããããã芪ãšåã¯ççµåã«ä¿ãããŸããShadow DOM ã®ã³ã³ããŒãã³ãã¯åäœã§ãåäœããŸããïŒ[ç¬ç«ãã Web Component ãžã®ç¶æ
泚å
¥](#ç¬ç«ãã-web-component-ãžã®ç¶æ
泚å
¥e2esingle-component)ïŒãLight DOM ã¯ãã¹ãããã®é
ç·ãå¿
é ã§ãã
|
|
1475
|
+
4. å®è¡ã³ã¹ãã¯ããã¹ã®è§£æ±ºïŒååã¢ã¯ã»ã¹åŸã¯ãã£ãã·ã¥ããããã O(1) ã§åäœããŸãïŒãäŸåã°ã©ããéãã倿Žã®äŒæããããŠæç»ããè¡ããšã«æ§ç¯ããããã€ã³ãã£ã³ã°å°åž³ã§ãã
|
|
1440
1476
|
|
|
1441
|
-
|
|
1477
|
+
ããã¯ãã³ã³ããŒãã³ãã¬ãã«ã®æœè±¡åã§ã¯ãªãããã¹ã®è§£æ±ºãã«åºã¥ãã³ã³ããŒãã³ãéã®ç¶æ
管çã§ããæç»ãæãå®ãæ¹åŒãšããæå³ã§ã¯ãããŸããã[ããã©ãŒãã³ã¹](#ããã©ãŒãã³ã¹)ã®ãšããçæã»è¿œå 㯠[`@wcstack/signals`](../signals/) ã® 2.5ã3.5 åã§ããããè¡ããšã®å°åž³ã®ä»£äŸ¡ã§ããåŸãããã®ã¯ãé
ç·ã宣èšçã§æ€æ»å¯èœã§ããããšã§ãã
|
|
1442
1478
|
|
|
1443
1479
|
### ã³ã³ããŒãã³ãå®çŸ©ïŒShadow DOMïŒ
|
|
1444
1480
|
|
|
@@ -1608,6 +1644,7 @@ customElements.define("my-component", MyComponent);
|
|
|
1608
1644
|
- `bind-component` ä»ãã® `<wcs-state>` ã¯ã³ã³ããŒãã³ãèŠçŽ ã®**çŽäž**ïŒãããã¬ãã«ïŒã«é
眮ããããš
|
|
1609
1645
|
- 芪èŠçŽ ã¯**ã«ã¹ã¿ã èŠçŽ **ïŒãã€ãã³ãå«ãã¿ã°åïŒã§ããããš
|
|
1610
1646
|
- Light DOM ã³ã³ããŒãã³ãã¯ãã¹ãããã®é
ç·ãå¿
é ïŒplain 圢㯠v2 ã§å»æ¢ïŒ
|
|
1647
|
+
- **ããŠã³ãããã**ã¹ã³ãŒãã¯å®£èšé¢ãå®è¡ããªãã`$watch`ã»`$streams`ã»`$scan` ã¯äžåºŠã ãèŠåãåºããŠç¡èŠããã`$recursion` / `**` getter ã¯æåŠããããã«ãŒã state ã«å®£èšããããšïŒããªã¥ãŒã `<wcs-state mount>` 㯠`$watch` ãæãŠããã`$scan` ãš `$recursion` ã¯ã«ãŒãå°çšïŒãé
ç·ãããŠããªã Shadow DOM ã®åã¯ç¬ç«ããããªãŒãæã€ããããããã宣èšã§ãã
|
|
1611
1648
|
|
|
1612
1649
|
### ã«ãŒãå
ã§ã®ã³ã³ããŒãã³ã䜿çš
|
|
1613
1650
|
|
|
@@ -1778,7 +1815,7 @@ interface CommandToken {
|
|
|
1778
1815
|
|
|
1779
1816
|
- 賌èªè
ã¯èŠçŽ ã `WeakRef` ã§ä¿æãããããtoken ã®è³Œèªè
ã»ããã«æ®ã£ãŠããŠããåãå€ãããèŠçŽ ã¯ã¬ããŒãžã³ã¬ã¯ãå¯èœ
|
|
1780
1817
|
- `emit` æãWeakRef ãååæžã¿ãèŠçŽ ãæ¥ç¶ãããŠããªãïŒ`isConnected === false`ïŒå Žåã賌èªã¯èªåçã«ç Žæ£ãããïŒlazy purgeïŒ
|
|
1781
|
-
- ææãã `<wcs-state>` ã disconnect
|
|
1818
|
+
- ææãã `<wcs-state>` ã disconnect ãããŠã token ã¬ãžã¹ããªã¯ä¿æãããã®ã§ãã«ãŒã `<wcs-state>` ãä»ãçŽããåŸïŒãã¹ãã DOM äžã§ç§»åãããšããªã©ïŒã賌èªã«åœä»€ãå±ããåæäžã¯ state ãäœããªãã®ã§ã`$command` çµç±ã® emit ã¯èµ·ããªã
|
|
1782
1819
|
|
|
1783
1820
|
èŠçŽ ã®ã¡ãœãã㯠`emit` ã®åŒæ°ã§åŒã³åºãããŸãïŒ
|
|
1784
1821
|
|
|
@@ -1955,13 +1992,29 @@ $on: {
|
|
|
1955
1992
|
|
|
1956
1993
|
### Token API
|
|
1957
1994
|
|
|
1958
|
-
event token 㯠command token ãšåã `Token` pub/sub ããªããã£ããå
±æããŸã ââ `name` / `size` / `subscribe` / `unsubscribe` / `emit`ãsubscribe é ã®ä¿æã€ãïŒ[Token API](#token-api) åç
§ïŒãtoken ã¯ã€ãã³ãããšã« registry ãã解決ãããããã`setInitialState()` ã«ããåæ§ç¯åŸãææ°ã® `$on` 賌èªè
ã«å±ããŸããææãã `<wcs-state>` ã disconnect
|
|
1995
|
+
event token 㯠command token ãšåã `Token` pub/sub ããªããã£ããå
±æããŸã ââ `name` / `size` / `subscribe` / `unsubscribe` / `emit`ãsubscribe é ã®ä¿æã€ãïŒ[Token API](#token-api) åç
§ïŒãtoken ã¯ã€ãã³ãããšã« registry ãã解決ãããããã`setInitialState()` ã«ããåæ§ç¯åŸãææ°ã® `$on` 賌èªè
ã«å±ããŸããææãã `<wcs-state>` ã disconnect ãããŠã event-token registry ã¯ä¿æãããã®ã§ãã«ãŒã `<wcs-state>` ãä»ãçŽãã° `$on` ãã³ãã©ïŒãš `on` ã® scanïŒã¯åã³ã€ãã³ããåããŸããåæäžã« dispatch ãããã€ãã³ã㯠state ããªãŒãèŠã€ããããå±ããŸããã
|
|
1996
|
+
|
|
1997
|
+
## æéãæ±ãæ©æ§ã®éžã³æ¹
|
|
1998
|
+
|
|
1999
|
+
ç¶ã 4 ç¯ã¯ãããããå¥ã®åãã«çãããã®ã§ããåãéããèµ·ããããã®ã§ãããŒã¿ã®åºã©ããã§ã¯ãªã**äœã宣èšããŠããã**ã§éžãã§ãã ããã
|
|
2000
|
+
|
|
2001
|
+
| å®£èš | 宣èšãããã® | å€ãæã€ã | çºç« | äž»ãªçšé |
|
|
2002
|
+
|---|---|---|---|---|
|
|
2003
|
+
| [ãã¹ getter](#ãã¹-getterç®åºããããã£) | ãã®å€ãçŸåšã® state ããèŠãŠ**äœã§ããã** | æããªãïŒã¢ãã¬ã¹åäœã§åèšç®ã»ãã£ãã·ã¥ïŒ | è©äŸ¡éèŠãèªãã ãšãã«é
å»¶è©äŸ¡ | å°èšãåé¡ãéèš |
|
|
2004
|
+
| [`$streams`](#streamstreams) | éåæã®äŸçµŠå
ãšã**1 åã®å®è¡ã®äžã§** fold ãããå€ | æã€ïŒåºå㯠runtime ã®ææïŒ | chunk ããšã`args` ãå€ããã° `initial` ã«æ»ã㊠restart | ãã£ãŒãããœã±ãããç¶ç¶çãªèŠ³æž¬ |
|
|
2005
|
+
| [`$watch`](#watchwatch) | 倿Žãžã®åå¿ | æããªã | å€åããã¢ãã¬ã¹ããšã«ããã 1 åãscan ã®æžã蟌ã¿ã®åŸ | å¯äœçšããæ¡ä»¶ãæç«ãããšãã |
|
|
2006
|
+
| [`$scan`](#scanscan) | æéããŸãã环ç©å€ãšããããæ»ãæ¡ä»¶ | æã€ïŒåºå㯠runtime ã®ææïŒ | çå°ããšïŒ`from`ïŒãŸãã¯ã€ãã³ãããšïŒ`on`ïŒ | ããŒãžèç©ãå±¥æŽãä»¶æ° |
|
|
2007
|
+
|
|
2008
|
+
æ··ä¹±ã®ã»ãšãã©ã¯ã次㮠2 ç¹ã§è§£ããŸãã
|
|
2009
|
+
|
|
2010
|
+
- **`$updatedCallback` ã¯ãã®è¡šã«å
¥ããŸããã** é©çšããããã€ã³ãã£ã³ã°ãå ±åãããã®ãªã®ã§ãããã«åŠçãã¶ãäžãããšæç»å
å®¹ã«æé»ã«äŸåããŸãã[è©äŸ¡ã®ãã£ãã](#è©äŸ¡ã®ãã£ããdemand-root)ãåç
§ããŠãã ããã
|
|
2011
|
+
- **`$streams` ã® fold 㯠restart ã®ãã³ã«æ»ãã`$scan` ã¯æ»ããŸããã** restart ãè¶ããŠå€ãä¿ã¡ãããšãããããã¯ç¶æ
ã§ã¯ãªãåºæ¥äºãæ°ããããšã㯠`$scan` ã®é åã§ãã
|
|
1959
2012
|
|
|
1960
2013
|
## StreamïŒ`$streams`ïŒ
|
|
1961
2014
|
|
|
1962
2015
|
command token / event token ãéã¶ã®ã¯é¢æ£çãªããåãã§ãã**`$streams`** ã¯æ®ã圢 ââ é£ç¶çãªãããŒãã«ããŒããŸããéåæ producerïŒasync iterable / async generator / `ReadableStream`ïŒã宣èšãããšããã¬ãŒã ã¯ãŒã¯ãããã **fold ããŠåäžã® reactive ããããã£ã«ç³ã¿èŸŒã¿ãŸã** ââ åãã£ã³ã¯ã¯éåžžã®ãã¹ä»£å
¥ãéãããããã€ã³ãã£ã³ã°ã»ãã¹ getterã»`$updatedCallback` ã¯èªåã§å€ã代å
¥ããå ŽåãšãŸã£ããåãããã«åå¿ããŸãã`args` 颿°ãèªãã state ãã¹ãå€åãããšãå®è¡äžã® producer 㯠abort ãããæ°ããåŒæ°ã§ source ã匵ãçŽãããŸãïŒswitchMap åã®äŸåé§å restartïŒãstream 㯠`$connectedCallback` å®äºåŸã« eager ã«èµ·åããèŠçŽ ã® disconnect ã§ abort ãããŸãã
|
|
1963
2016
|
|
|
1964
|
-
`$updatedCallback` ã¯åŒãç¶ã binding é§åã§ããstream 宣èšã ãã§ã¯ headless ãªè³Œèªã«ãªããããã® value/status/error ã® live DOM binding ãå®éã«é©çšããããšãã ã callback ã® path ã«çŸããŸããæç»ããã« stream ã®å€ãžåå¿ãããå Žåã¯ããã®ãã¹ã« [`$watch`](#
|
|
2017
|
+
`$updatedCallback` ã¯åŒãç¶ã binding é§åã§ããstream 宣èšã ãã§ã¯ headless ãªè³Œèªã«ãªããããã® value/status/error ã® live DOM binding ãå®éã«é©çšããããšãã ã callback ã® path ã«çŸããŸããæç»ããã« stream ã®å€ãžåå¿ãããå Žåã¯ããã®ãã¹ã« [`$watch`](#watchwatch) ã宣èšããŠãã ããã芳枬å¥çŽã¯ [stream ãªãã¡ã¬ã³ã¹](docs/streams.md) ãåç
§ããŠãã ããã
|
|
1965
2018
|
|
|
1966
2019
|
```html
|
|
1967
2020
|
<wcs-state>
|
|
@@ -2070,9 +2123,9 @@ $updatedCallback(paths) {
|
|
|
2070
2123
|
}
|
|
2071
2124
|
```
|
|
2072
2125
|
|
|
2073
|
-
**èŠå:** æç»ã«äŸåãããããªãããžãã¯ã¯ã`$watch
|
|
2126
|
+
**èŠå:** æç»ã«äŸåãããããªãããžãã¯ã¯ã`$watch`ã»`$scan`ã»`$streams` ã® `args` ã®ã©ããã«æ ¹ã眮ããŠãã ããã`$updatedCallback` ã¯ãæããããã®ã«è¿œéãããçšéã«éããŸãã
|
|
2074
2127
|
|
|
2075
|
-
|
|
2128
|
+
äžã®äŸã¯ããŸã¯ `$scan` ã§ feed ãç©ã¿ïŒsentinel ã®åæŠè£
㯠`$watch`ïŒã`<b>` ã¯è¡šç€ºå°çšã«æ»ã£ãŠããŸãããã®åœ¢ïŒ`$updatedCallback` ããã©ã®ãã€ã³ãã£ã³ã°ã«ãçŸããªããã¹ãå€å®ã«äœ¿ã£ãŠããïŒã¯ **`wcs/updated-callback-unbound`** ãšããŠéçã«æ€åºãããŸãã
|
|
2076
2129
|
|
|
2077
2130
|
### æ®ãå¶çŽ
|
|
2078
2131
|
|
|
@@ -2114,10 +2167,10 @@ $updatedCallback(paths) {
|
|
|
2114
2167
|
| åŒæ° | å¥çŽ |
|
|
2115
2168
|
|---|---|
|
|
2116
2169
|
| `cur` | drain æç¹ã®å€ïŒãã®ãããã®ç¢ºå®å€ïŒ |
|
|
2117
|
-
| `prev` | **ãããéå§æç¹**ã®å€ïŒfirst-write-wins
|
|
2170
|
+
| `prev` | **ãããéå§æç¹**ã®å€ïŒfirst-write-winsïŒãèšé²ãããã®ã¯**ããªããã£ããæžãããšãã ã**ïŒæžãåã®å€ã¯ãªããžã§ã¯ãã§ããããäžèšïŒ |
|
|
2118
2171
|
| `...indexes` | ã¯ã€ã«ãã«ãŒããã¹ã®ãšãã®ã¿ããã®ã¹ã³ãŒãèªèº«ã®ã«ãŒãæ·»åïŒ`$1` / `$2` ãšåãèŠçŽïŒ |
|
|
2119
2172
|
|
|
2120
|
-
**`prev`
|
|
2173
|
+
**`prev` ã¯ããªããã£ãã®æžã蟌ã¿ã«ã ãä»ããŸãã** same-value guard ãããªããã£ããæžãåã«èªãæ§å€ãåå©çšãããã watch ã®ããã®è¿œå èªã¿ã¯çºçããããã®åž°çµãšããŠæžãå€ãåç
§åïŒin-place å€ç°ã§ã¯åãåç
§ã«ãªãããïŒã»`$postUpdate` çµç±ã»`config.sameValueGuard` ãªãã®ãšã㯠`undefined` ã«ãªããŸãããªããžã§ã¯ãã®äžã«ããªããã£ããæžãããšãã¯ããã®ãªããžã§ã¯ãã `prev` ã«æž¡ããŸãã
|
|
2121
2174
|
|
|
2122
2175
|
**`$watch` ã¯ç¬èªã®çºç«æ¡ä»¶ãæã¡ãŸããã** æŽæ°ãããã«èŒã£ããã®ããã®ãŸãŸçºç«ããŸããããã¯ããŸãåã¿åã£ãŠããŠãåå€ã® primitive æžã蟌ã¿ã¯ enqueue åã«èœã¡ãŠããïŒïŒå®è³ªçã«å€åæã®ã¿çºç«ïŒäžæ¹ãoccurrenceïŒ`semantics: "event"` ã® propertyïŒã¯**æå³çã«**èœãšãããªãã®ã§ `cur === prev` ã§çºç«ããŸãããšããžæ€åºãèŠããªããã³ãã©å
ã§ `cur` ãš `prev` ãæ¯èŒããŠãã ããã
|
|
2123
2176
|
|
|
@@ -2127,16 +2180,17 @@ $updatedCallback(paths) {
|
|
|
2127
2180
|
|
|
2128
2181
|
| å±€ | é åº | å¶åŸ¡ |
|
|
2129
2182
|
|---|---|---|
|
|
2130
|
-
| æ©æ§é | `$updatedCallback` â `$watch` â `$streams` restart | åºå® |
|
|
2183
|
+
| æ©æ§é | `$updatedCallback` â `$scan` â `$watch` â `$streams` restart | åºå® |
|
|
2131
2184
|
| ãã³ãã©é | `$watch` ã®å®£èšé | **宣èšãäžŠã¹æ¿ãã** |
|
|
2132
2185
|
| åäžãã¹ã®è¡é | `indexes` æé | åºå® |
|
|
2133
2186
|
|
|
2134
|
-
**æ©æ§éã®å±€ãåããå¯äžã®ãã®**ãã`state` åå è
ãåãä»ãã `<wcs-view-transition>` ã§ãããã€ã³ãã£ã³ã°é©çš ââ ãããã£ãŠ `$updatedCallback` ââ ããã¬ãŒã ã§çå°ããäžæ¹ã`$watch
|
|
2187
|
+
**æ©æ§éã®å±€ãåããå¯äžã®ãã®**ãã`state` åå è
ãåãä»ãã `<wcs-view-transition>` ã§ãããã€ã³ãã£ã³ã°é©çš ââ ãããã£ãŠ `$updatedCallback` ââ ããã¬ãŒã ã§çå°ããäžæ¹ã`$scan`ã»`$watch`ã»`$streams` restart 㯠state ã¢ãã¬ã¹ãæ¶è²»ã DOM ãèŠãªãã®ã§ãdrain ããã¥ãŒããã microtask ã«çãŸããŸããã¿ã°ãããéã®é åºã¯ `$scan` â `$watch` â `$streams` restart â `$updatedCallback` ã§ãããã®å±€ãäžŠã¹æ¿ãããã®ã¯ããŒãžäžã§ãã 1 ã€ã ãã§ãã[docs/timing-and-firing-contract.ja.md](https://github.com/wcstack/wcstack/blob/main/docs/timing-and-firing-contract.ja.md) §4.3 ãåç
§ããŠãã ããã
|
|
2135
2188
|
|
|
2136
2189
|
äž»ãªã«ãŒã«:
|
|
2137
2190
|
|
|
2138
2191
|
- **ããªãŒã®ãã¹ã®ã¿** ââ ãã¹ã« `@`ïŒv1 ã®ååã»ã¬ã¯ã¿ïŒã¯æžããŸãããå«ã宣èšã¯ loud ã«æåŠãããŸãã
|
|
2139
2192
|
- **äžéå€ã¯èŠ³æž¬ã§ããŸãã** ââ 1 ãããå
ã® `a â b â c` 㯠`cur = c` / `prev = a` ã§ 1 åã ãçºç«ããŸãïŒbinding æŽæ°ãšåãå¥çŽïŒã
|
|
2193
|
+
- **è¡ã¯ drain ã®æç¹ã®ãªã¹ãã«åŸããŸã** ââ åã job ã§è¡ãæžããŠããåãé€ããã»çœ®ãæããã»ãªã¹ããçãããè¡ã¯çºç«ãããäœçœ®ã ããç§»ã£ãè¡ãçºç«ããŸããã1 ã€ã®äœçœ®ãçºç«ããã®ã¯å€ããŠã 1 åã§ããå
¥ãåã®ãªã¹ãã眮ãæãããšãæ°ããé
åã®è¡ããã¹ãŠçºç«ããŸãã
|
|
2140
2194
|
- **è¡åäœã®å·®åãèŠãããªã `$listKeys`** ââ æªå®£èšã®ãŸãŸé
åå
šäœã代å
¥ãããšãè¡ watch ã¯**å
šè¡**ã«ã€ã㊠`prev === undefined` ã§çºç«ããŸãïŒã©ã®è¡ããã¹æžã蟌ã¿ãéã£ãŠããªãããïŒã`$listKeys` ã宣èšããã°ããŒçªåã per-field æžã蟌ã¿ã«åè§£ããã®ã§ãå€åããè¡ã ããçºç«ã `prev` ãã¹ã«ã©ã§åããŸãã
|
|
2141
2195
|
- **headless ãªè¡ watch ã«ã¯ `$listKeys` ãå¿
èŠ** ââ `$watch` ãåç¬ã§ã¯ headless ã«ãªããªãå¯äžã®ç®æã§ãã`items` ãã `items.*.price` ãžã®å±éã¯ãªã¹ãã® `for` ãã€ã³ãã£ã³ã°ãé§åããŠãããwatch ã宣èšããŠããã®ãã¹ããªã¹ããšããŠã¯ç»é²ããŸããïŒæå³çïŒããããã£ãŠ `for` ãã€ã³ãã `$listKeys` ãç¡ãç¶æ
ã§é
åã代å
¥ãããšãè¡ watch ã¯**äžåºŠã**çºç«ããŸããã`$listKeys` ã宣èšããïŒããŒçªåããã£ãŒã«ãããšã«ãã¹æžã蟌ã¿ããã®ã§å±éãçµç±ããªãïŒãããªã¹ããæç»ããŠãã ãããã¹ã«ã©ãŒãã¹ã¯ `user.name` ã®ãããªãã¹ããããã®ãå«ãããã®æ¡ä»¶ãªãã« headless ã§çºç«ããŸãã
|
|
2142
2196
|
- **ãã³ãã©ã®äŸå€ã¯éé¢ãããŸã** ââ throw ã¯ã³ã³ãœãŒã«ã«å ±åãããæ®ãã® watchïŒãš stream ã® restartïŒã¯ç¶è¡ããŸããloud fail ãã `$connectedCallback` / `$updatedCallback` ãšã¯ç°ãªãæ±ãã§ãã
|
|
@@ -2144,6 +2198,76 @@ $updatedCallback(paths) {
|
|
|
2144
2198
|
- **ããŠã³ãããã `bind-component` ã¹ã³ãŒãã§ã¯å®è¡ãããŸãã** ââ ããŠã³ããããã³ã³ããŒãã³ãã¯å®£èšé¢ãå®è¡ããã`$watch` ã®å®£èšããããš 1 åã ã console.warn ã§ã«ãŒã stateïŒãŸãã¯ããªã¥ãŒã ââ `<wcs-state mount>` 㯠`$watch` / `$listKeys` / `$updatedCallback` ãæãŠãŸãïŒãžèªå°ããŸãïŒ`$streams` ãåæ§ïŒãplain ãªïŒé
ç·ãªã Shadow ã®ïŒåã¯ç¬ç«ããªãŒãæã€ã®ã§å®£èšã§ããŸãã
|
|
2145
2199
|
- **SSR ã§ã¯å®è¡ãããŸãã** ââ ãã³ãã©ã®å¯äœçšããµãŒããŒãšã¯ã©ã€ã¢ã³ãã§äºéã«èµ°ãããã§ãã
|
|
2146
2200
|
|
|
2201
|
+
## ScanïŒ`$scan`ïŒ
|
|
2202
|
+
|
|
2203
|
+
`$streams` ãç³ãã®ã¯ 1 åã® run ã®**å
åŽ**ã§ãrestart ã®ãã³ã«å€ã¯ `initial` ãžæ»ããŸãã`$watch` ã¯å€ãææããŸããã**`$scan`** ã¯ãã®äž¡æ¹ãè·šãã§æ®ãå€ ââ æé軞æ¹åã®çŽ¯ç© ââ ããæã¡äž»ã»çºç«åäœã»reset æ¡ä»¶ã€ãã§å®£èšããŸãã
|
|
2204
|
+
|
|
2205
|
+
```html
|
|
2206
|
+
<wcs-state>
|
|
2207
|
+
<script type="module">
|
|
2208
|
+
export default {
|
|
2209
|
+
page: 1,
|
|
2210
|
+
host: "a",
|
|
2211
|
+
$eventTokens: ["message"],
|
|
2212
|
+
$streams: {
|
|
2213
|
+
pageResult: { args: (s) => s.page, source: loadPage },
|
|
2214
|
+
},
|
|
2215
|
+
$scan: {
|
|
2216
|
+
// from: state ãã¹ã®çå°ããšã«ç³ãïŒããã§ã¯ stream ã®å€ïŒ
|
|
2217
|
+
feed: {
|
|
2218
|
+
from: "pageResult",
|
|
2219
|
+
initial: { items: [], pages: [] },
|
|
2220
|
+
fold: (feed, chunk) =>
|
|
2221
|
+
chunk?.kind === "success" && !feed.pages.includes(chunk.page)
|
|
2222
|
+
? { items: feed.items.concat(chunk.items), pages: [...feed.pages, chunk.page] }
|
|
2223
|
+
: feed,
|
|
2224
|
+
},
|
|
2225
|
+
// on: å®£èšæžã¿ã€ãã³ãããŒã¯ã³ã®åºæ¥äºããšã«ç³ã
|
|
2226
|
+
log: {
|
|
2227
|
+
on: "message",
|
|
2228
|
+
initial: [],
|
|
2229
|
+
fold: (log, event) => [...log.slice(-49), event.detail],
|
|
2230
|
+
resetOn: ["host"], // host ãå€ãããã³ã« [] ãžæ»ã
|
|
2231
|
+
},
|
|
2232
|
+
},
|
|
2233
|
+
};
|
|
2234
|
+
</script>
|
|
2235
|
+
</wcs-state>
|
|
2236
|
+
|
|
2237
|
+
<template data-wcs="for: feed.items">âŠ</template>
|
|
2238
|
+
```
|
|
2239
|
+
|
|
2240
|
+
| ãã£ãŒã«ã | å¥çŽ |
|
|
2241
|
+
|---|---|
|
|
2242
|
+
| `from` | state ãã¹ãã¯ã€ã«ãã«ãŒãå¯ã`$` å§ãŸãã»getterã»getter ã®é
äžã¯äžå¯ã`from` ãš `on` ã¯ã©ã¡ãã 1 ã€ã ãã |
|
|
2243
|
+
| `on` | `$eventTokens` ã«å®£èšããã€ãã³ãããŒã¯ã³åã |
|
|
2244
|
+
| `initial` | å¿
é ã环ç©ã®çš®ã§ããã`resetOn` ã®æ»ãå
ã |
|
|
2245
|
+
| `fold` | å¿
é ã`from` 㯠`(acc, cur, prev, ...indexes) => next`ã`on` 㯠`(acc, event, ...indexes) => next`ãåæã§ã`this` ç¡ãã§åŒã°ããæ°ããå€ãè¿ãã`acc` ãã®ãã®ãè¿ããšæžã蟌ãŸãªãã |
|
|
2246
|
+
| `resetOn` | ä»»æãçŽ ã® state ãã¹ã®é
åãã©ãããæžããããåºåã `initial` ã«æ»ãã`from` ã® scan ã¯ãã®ãããã® fold ãè¡ããã`on` ã® scan ã¯æžã蟌ã¿ããåŸã«æ¥ãã€ãã³ãã `initial` ããç³ãã`from` ã®é
äžã¯ raiseã`from` ã®ç¥å
ã¯å¯ïŒèŠªã®å·®ãæ¿ãã§äœãçŽãïŒããªããžã§ã¯ãã®ãã¹ã¯ãã®ãªããžã§ã¯ãèªèº«ãæžããããšãã ã reset ããåãžã®æžã蟌ã¿ã§ã¯ reset ããªãïŒèã®ãã¹ã䞊ã¹ãã nonce ã䜿ãïŒã |
|
|
2247
|
+
|
|
2248
|
+
**åºåã¯ã©ã³ã¿ã€ã ãææããŸã**ïŒ`$streams` ã®å€ãšåãïŒãstate ã«ãã®ããããã£ãç¡ããã° `initial` ã§å®äœåããïŒplain ãªããŒã¿ã¯è€è£œããã®ã§ãåºåã® plain ãªéšåã®åãã¹ãžæžããŠã宣èšã® `initial` ã¯å€ãããŸãããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãåçµãããå€ãªã© plain ã§ãªãå€ã¯å®£èšãšå
±æãããŸãŸã§ãïŒãä»ã®ãã¹ãšåãããã«ãã€ã³ãã§ããŸããstream ã® restartã»åæãšåæ¥ç¶ã»åããªããžã§ã¯ãã®åã»ãããè·šãã§æ®ããæ°ãã宣èšã§ã®åã»ããã§ã¯äœãçŽãããŸããåºååã getterã»setterã»ã¡ãœããã»`$streams` ã®ãšã³ããªãšè¡çªãããš raise ããŸãã
|
|
2249
|
+
|
|
2250
|
+
2 ã€ã® source ã®çºç«:
|
|
2251
|
+
|
|
2252
|
+
| | `from`ïŒãã¹ïŒ | `on`ïŒã€ãã³ãããŒã¯ã³ïŒ |
|
|
2253
|
+
|---|---|---|
|
|
2254
|
+
| åäœ | æŽæ°ãããã«èŒã£ãã¢ãã¬ã¹ 1 ã€ã«ã€ã 1 åãåã job å
ã®è€æ°ã®æžã蟌ã¿ã¯ 1 åã«ç³ãŸããã | ã€ãã³ã 1 åã«ã€ã 1 åãåã task ã® 2 å㯠2 åç³ãã |
|
|
2255
|
+
| ã〠| drain ã®çµããã`$watch` ããå
ã | ã€ãã³ãã®äžããã®ããŒã¯ã³ã® `$on` ãã³ãã©ããå
ã |
|
|
2256
|
+
| åºåãèŠããã®ã¯ | 次ã®ããããããåºåãèŠã `$watch` ã¯ããã§çºç«ãã`prev` ã¯ãµã€ã `undefined`ïŒäžã®æ³šèšïŒã | ãããåãã€ãã³ãã® `$on` ãã³ãã©ã¯ç³ãã åŸã®å€ãèŠãã |
|
|
2257
|
+
|
|
2258
|
+
äž»ãªã«ãŒã«:
|
|
2259
|
+
|
|
2260
|
+
- **getter ãç³ãŸãªãã** getter ã¯å
¥åãå€ãããã³ã«åè©äŸ¡ãããã®ã§ãç³ããšåºæ¥äºã§ã¯ãªãåè©äŸ¡ã®åæ°ãæ°ããŸãã`from` ã `resetOn` ã« getter ãæžãïŒ`from` ã« `$recursion` ã® `**` getter ã®å±é圢 `nodes.*.total` ãæžãã®ãåãïŒãšãå®£èšæã« raise ããŸãïŒ`wcs/scan-source-computed`ïŒã
|
|
2261
|
+
- **1 åã® fold ã¯çå°ããšã§ãããŒãžããšã§ã¯ãªãã** `done` åŸã®å詊è¡ããããŒãžã®åæ¥ç¶ã¯åãããŒãžãããäžåºŠçå°ãããŸããåé¡ã«ãªããªã fold ã«åªçããŒãæãããŠãã ããïŒäžã® `pages`ïŒã
|
|
2262
|
+
- **stream ã® `args` ãèªåã® scan åºåããå°åºããªãã** `feed` ããå°åºãã getterïŒ`feed` ãç³ãå¥ã® scan ã®åºåããå°åºãããã®ãå«ãïŒã `pageResult` ã® `args` ãèªããšãstream ãèªåã®çµæã§ restart ãç¶ããã®ã§ãã©ã³ã¿ã€ã 㯠`wcs/scan-feedback-loop` ã raise ããŸããã«ãŒãœã«ã¯ã€ãã³ãããé²ããŠãã ãããstream ã® restart ãšåããããã«çå°ãã chunk 㯠abort ããã run ã®ãã®ãªã®ã§ç³ã¿ãŸããã
|
|
2263
|
+
- **èŠçŽ ã®åºæ¥äºã¯ `on` ã§åããã** `from` ã¯ãã®ãã¹ãžã®æžã蟌ã¿ããã¹ãŠèŠãŸãããã€ã³ãããèŠçŽ ã®åæåæãã芪ãªããžã§ã¯ãã®äžžããšæžãïŒ`prev` 㯠`undefined`ïŒã 1 åãšããŠç³ã¿ãŸãã`prev` 㯠`$watch` ãšåãå°åž³ãªã®ã§ã`$scan` / `$watch` ã®ãªã¹ããŒã®äžã®æžã蟌ã¿ïŒ`$watch` ãã³ãã©ãã`from` ã«ããå¥ã® scan ã®åºåïŒã§ã `undefined` ã§ããå°åž³ã¯ãã®ãªã¹ããŒã®çµããã«æ¶ããã®ã§ãåã drain ã§ãã®åŸã«èµ°ã `$streams` ã® restart ã®æžã蟌ã¿ã¯ `prev` ãæã¡ãŸãã
|
|
2264
|
+
- **fold ã¯æçã«ã** ç¡éã® source ã¯æçãªå€ïŒçŽè¿ N ä»¶ã»ä»¶æ°ïŒã«ç³ãã§ãã ããïŒ`$streams` ãšåãïŒã
|
|
2265
|
+
- **äŸå€ã¯éé¢ãããã** throwã»Promise ã®æ»ãå€ã»èªããªãå€ã¯ã³ã³ãœãŒã«ãš DevTools ã«å ±åãããæžã蟌ã¿ãŸããïŒã¯ã€ã«ãã«ãŒãã® `from` ã§èªããªãè¡ã¯ãã®è¡ã ããé£ã°ããè¡ã®çå°ã¯ãªã¹ãã®äœçœ® 1 ã€ã«ã€ã 1 åã«çµããŸãïŒãä»ã® scanã»watchã»stream ã® restart ã¯ç¶è¡ããŸãã
|
|
2266
|
+
- **`$watch` 㯠scan ã®æžã蟌ã¿ã®åŸã«èµ°ãã** åã drain ã® `$watch` ãã³ãã©ã¯ç³ãã åŸã®åºåãèªã¿ããã³ãã©ãåºåãžæžããå€ã¯ãã®ãŸãŸæ®ããŸããåºåã®çå°ã drain ãããåã« `from` ã® source ãããäžåºŠæžãããïŒãã® drain ã® `$watch` ãã³ãã©ãæžããªã©ïŒãšãäž¡æ¹ãåããããã«èŒããŸãããã®ãšãåºåãèŠã `$watch` 㯠`prev` ã«çå°ããå€ãåãã`cur` ã« 1 段å
ã®å€ãèŠãŠã次ã®ãããã§åãå€ã§ããäžåºŠçºç«ããããšãããã®ã§ãåãå€ã®éè€ã«èãã圢ã«ããŠãã ããããŠãŒã¶ãŒæäœã§çޝç©ãæ¶ããªãã`resetOn` ã« nonce ãèªãŸããŠãã ããã
|
|
2267
|
+
- **ã«ãŒãã®ã¿ã** ããªã¥ãŒã ïŒ`mount=`ïŒã¯ `$scan` ãæåŠããããŠã³ãããã `bind-component` ã¹ã³ãŒã㯠1 åã® warn ã§ç¡èŠããŸããSSR ã§ã¯ `from` ã¯ç³ã¿ãŸããïŒåºåã®å®äœåã¯è¡ããŸãïŒã
|
|
2268
|
+
|
|
2269
|
+
ãªãã¡ã¬ã³ã¹: [docs/scan.ja.md](https://github.com/wcstack/wcstack/blob/main/packages/state/docs/scan.ja.md)ãèšèšã®æ±ºå®ã¬ã³ãŒã: [docs/state-scan-design.md](https://github.com/wcstack/wcstack/blob/main/docs/state-scan-design.md)ã
|
|
2270
|
+
|
|
2147
2271
|
## Inputs ãšå±æ§ãã©ãŒ
|
|
2148
2272
|
|
|
2149
2273
|
`wcBindable.inputs` ã¯äžæ¹åã®ããããã£å
¥åïŒstate â èŠçŽ ïŒã宣èšããŸãããšã³ããªã« `attribute` ãèšå®ãããšããã¬ãŒã ã¯ãŒã¯ã¯ããããã£ãæžã蟌ããã³ã«ãã®å€ãåœè©² HTML 屿§ãžãæžã蟌ãããã`attributeChangedCallback`ã»CSS ã®å±æ§ã»ã¬ã¯ã¿ã»DevTools ããã¹ãŠããããã£å€ãšåæãç¶ããŸãã
|
|
@@ -2429,7 +2553,7 @@ li {
|
|
|
2429
2553
|
ãã®ã¿ã°ã `state` åå è
ãåãä»ããŠããéãç¥ã£ãŠããã¹ãåž°çµã 2 ã€ããã
|
|
2430
2554
|
|
|
2431
2555
|
- drain 㯠microtask ã§ã¯ãªããã¬ãŒã ã§çå°ãããstate ã«æžããŠãã `await Promise.resolve()` ã§ DOM ãèªãã³ãŒãã¯é·ç§»ãåŸ
ã€å¿
èŠãããã`$updatedCallback` ã¯ãã€ã³ãã£ã³ã°é©çšã®çŽåŸãšãã*äœçœ®*ããå€ãããªããããã®é©çšããš 1 ãã¬ãŒã åŸããžãããã
|
|
2432
|
-
- `$watch
|
|
2556
|
+
- `$scan`ã»`$watch`ã»`$streams` restart ã¯å
ã® microtask ã«çãŸãããã`$updatedCallback` ã®**å**ã«èµ°ãããã«ãªãã
|
|
2433
2557
|
|
|
2434
2558
|
é©çšãã¹ããã€ã³ãã£ã³ã°ãå®éã«ãããããã ããã¿ã°ãžæž¡ãããã®ã§ãheadless ãªãã¹ãžã®æžã蟌ã¿ãé·ç§»ãèµ·ããããšã¯ãªããã¿ã°ãç¡ããã° drain ã¯åŸæ¥ã©ããã[docs/timing-and-firing-contract.ja.md](https://github.com/wcstack/wcstack/blob/main/docs/timing-and-firing-contract.ja.md) §4.3 åç
§ã
|
|
2435
2559
|
|
|
@@ -2437,7 +2561,7 @@ li {
|
|
|
2437
2561
|
|
|
2438
2562
|
### ååšããªããã¹ãžã®é
ç·ã¯å ±åãããŸã
|
|
2439
2563
|
|
|
2440
|
-
é
ç·ãããã¹ã state äžã§è§£æ±ºããªãããšã**確å®**ãªãšãããã€ã³ãç¢ºç«æïŒ`$watch` ã¯å®£èšæïŒã« 1 åã ãèŠåããŸãã蚺æ code ã¯ã³ã³ãœãŒã«ã»`@wcstack/lint`ã»VS Code æ¡åŒµã§å
±éã§ãïŒ
|
|
2564
|
+
é
ç·ãããã¹ã state äžã§è§£æ±ºããªãããšã**確å®**ãªãšãããã€ã³ãç¢ºç«æïŒ`$watch` ãš `$scan` ã¯å®£èšæïŒã« 1 åã ãèŠåããŸãã蚺æ code ã¯ã³ã³ãœãŒã«ã»`@wcstack/lint`ã»VS Code æ¡åŒµã§å
±éã§ãïŒ
|
|
2441
2565
|
|
|
2442
2566
|
```
|
|
2443
2567
|
[@wcstack/state] [wcs/binding-path-missing] Bound path "user.nmae" does not resolve on the state tree:
|
|
@@ -2450,6 +2574,7 @@ dropped. Validate statically: npx @wcstack/lint <file>.
|
|
|
2450
2574
|
| ãã¹ããããã¹ã®æã¡ééãïŒ`user.nmae`ïŒ | `console.warn`ïŒ`wcs/binding-path-missing`ïŒãæŽæ°ã¯å±ããªããŸãŸãªã®ã§ãçŽãã®ã¯æžãæ |
|
|
2451
2575
|
| ãããã¬ãã«ã®ãã¹ã®æã¡ééãïŒ`cout`ïŒ | èªã¿åãæã« throwãæé¢ã¯äžãšåãèªåœïŒdid-you-mean ä»ãïŒ |
|
|
2452
2576
|
| `$watch` ã®ããŒã®æã¡ééã | `console.warn`ïŒ`wcs/watch-path-missing`ïŒãåäžã»ã°ã¡ã³ãã§ãå ±åãã |
|
|
2577
|
+
| `$scan` ã® `from` / `resetOn` ã®ãã¹ã®æã¡ééã | `console.warn`ïŒ`wcs/scan-path-missing`ïŒãåäžã»ã°ã¡ã³ãã§ãå ±åããããã® scan ã¯äžåºŠãç³ãŸããªãïŒreset ãããªãïŒ |
|
|
2453
2578
|
|
|
2454
2579
|
å€å®ã¯**éå°è¿äŒŒ**ã§ããéçã«æ±ºããããªã圢ã§ã¯é»ããŸã ââ 誀æ€ç¥ã§ããŒãžãéšãããªãããšãåªå
ããŠããããã§ã以äžã¯ãã¹ãŠèŠåããŸããïŒ
|
|
2455
2580
|
|
|
@@ -2672,7 +2797,7 @@ it("æç»ã»åæç»ã»ãã³ãã©å®è¡", async () => {
|
|
|
2672
2797
|
|
|
2673
2798
|
ãŠãŒã¶ãŒæäœãšåãçµè·¯ã§åãããªããstate ã¯ã€ã³ã©ã€ã³ïŒã¡ãœãã蟌ã¿ïŒã®ãŸãŸ DOM ã€ãã³ããçºç«ããŸãã`data-wcs="onclick: up"` ã®ãã³ãã©ã¯ `button.click()` ã§èµ°ãã`settle()` 1 åã®åŸã« DOM ãžåæ ãããŸãã
|
|
2674
2799
|
|
|
2675
|
-
- `getBindingsReady(root)` 㯠`root`ïŒ`document` ã shadow rootïŒé
äžã®å
šãã€ã³ãæ§ç¯ãçµãããš resolve ãããã€ã³ãåæåã«å€±æãããš reject ããŸãïŒv1.26
|
|
2800
|
+
- `getBindingsReady(root)` 㯠`root`ïŒ`document` ã shadow rootïŒé
äžã®å
šãã€ã³ãæ§ç¯ãçµãããš resolve ãããã€ã³ãåæåã«å€±æãããš reject ããŸãïŒv1.26+ïŒããã® root ã®ã«ãŒã `<wcs-state>` ãåæåã«å€±æããå Žåã reject ããŸã ââ ããŒããããªãã£ãã«ãŒãããreadyããšå ±åããŸããã
|
|
2676
2801
|
- æŽæ°ã¯ãã€ã¯ãã¿ã¹ã¯å¢çã§åæããŸããæžã蟌ã¿åŸã® `setTimeout(0)` 1 åã§ååã§ãã
|
|
2677
2802
|
- `state.items = [...state.items, "cherry"]` ããªã¢ã¯ãã£ããªæžãæ¹ã§ã â `state.items.push()` ã¯èŠ³æž¬ãããŸããïŒãã³ãã©å
ãšåãèŠåïŒã
|
|
2678
2803
|
- happy-dom 㯠`customElements.define` æã«æ¢åããŒãã**å·®ãæ¿ããŠ**ã¢ããã°ã¬ãŒãããŸãããé
ã㊠define ãããåäžããŒãã«å€ãå±ããã¯ãããã¬ã¹ã§ã¯æ€èšŒã§ããŸãããhappy-dom ãšå®ãã©ãŠã¶ã®ã€ãã³ãã¿ã€ãã³ã°å·®ããã 1 ã€ã®æ»è§ãªã®ã§ãããã¯å®ãã©ãŠã¶ e2eïŒPlaywrightïŒã 1 æ¬æ®ããŠãã ããã
|
|
@@ -2759,7 +2884,7 @@ bootstrapState();
|
|
|
2759
2884
|
|
|
2760
2885
|
| ãšã¯ã¹ããŒã | 説æ |
|
|
2761
2886
|
|---|---|
|
|
2762
|
-
| `getBindingsReady(root)` | `root`ïŒ`document` ãŸã㯠shadow root
|
|
2887
|
+
| `getBindingsReady(root)` | `root`ïŒ`document` ãŸã㯠shadow rootïŒé
äžã®å
šãã€ã³ãã£ã³ã°ãæ§ç¯ãããã解決ããã€ã³ãã£ã³ã°åæåã倱æããå Žåãããã³ãã® root ã®ã«ãŒã state èŠçŽ ãåæåã«å€±æããå Žå㯠reject |
|
|
2763
2888
|
| `buildBindings(root)` | `document` / `ShadowRoot` é
äžã®ãã€ã³ãã£ã³ã°ãæç€ºçã«æ§ç¯ãã â ãã® root ã«æåã«ç»é²ããã `<wcs-state>` ãã¹ã±ãžã¥ãŒã«ãããã® |
|
|
2764
2889
|
| `getConfig()` | çŸåšã®èšå®ïŒèªã¿åãå°çšãã¥ãŒïŒ |
|
|
2765
2890
|
| `defineState(obj)` | ã¡ãœãããš getter å
ã® `this` ã«åãä»ããã¢ã€ãã³ãã£ãã£é¢æ° â [TypeScript ãµããŒã](#typescript-ãµããŒã) åç
§ |
|
|
@@ -2785,14 +2910,14 @@ bootstrapState();
|
|
|
2785
2910
|
|
|
2786
2911
|
| ãããã㣠/ ã¡ãœãã | 説æ |
|
|
2787
2912
|
|---|---|
|
|
2788
|
-
| `initializePromise` | ç¶æ
ã®å®å
šãªåæåæã«è§£æ±ºããã Promise |
|
|
2789
|
-
| `connectedCallbackPromise` | `connectedCallback` ã®å®äºïŒstate ã®ããŒããš `$connectedCallback` ã®å®è¡ïŒã§è§£æ±ºããã Promise â ãã¹ãã®ã¬ã·ãã await
|
|
2913
|
+
| `initializePromise` | ç¶æ
ã®å®å
šãªåæåæã«è§£æ±ºããã Promise ââ **åæåã«å€±æãããšãã解決**ããŸãïŒ1 èŠçŽ ã®å€±æãããŒãžã®ä»ã®ãã€ã³ãã£ã³ã°ãæ¢ããªãããïŒããšã©ãŒã¯ `connectedCallbackPromise` ã«å±ããŸã |
|
|
2914
|
+
| `connectedCallbackPromise` | `connectedCallback` ã®å®äºïŒstate ã®ããŒããš `$connectedCallback` ã®å®è¡ïŒã§è§£æ±ºããã Promise â ãã¹ãã®ã¬ã·ãã await ãããã®ã**ã«ãŒã**èŠçŽ ãåæåã«å€±æãããšã**å
ã®ãšã©ãŒã®ãŸãŸ reject** ãã`console.error` ã«ã 1 ä»¶å ±åããŸãïŒ`$` 宣èšã®äžæ£ã»ãœãŒã¹ã®ããŒã倱æã»SSR ããŒã¿ã® merge 倱æã»DCC ã `bind-component` ã®èšå®ãšã©ãŒã»åã root node ã« 2 æ¬ç®ã®ã«ãŒã `<wcs-state>`ã2 æ¬ç®ã¯ç»é²ãããªããŸãŸèªã¿èŸŒãã state ãä¿æããã®ã§åãé€ããŠãã ãããå¥å
šãªèŠçŽ ã® DOM ç§»åã¯äºéç»é²ã§ã¯ãªããæåŠããŸããïŒã**ããªã¥ãŒã **ïŒ`<wcs-state mount="âŠ">`ïŒã¯ãã® Promise ã**æåŠããŸãã** ââ ããªã¥ãŒã ã®å€±æã¯è§£æ±ºããçš®é¡ã«ãã£ãŠã¯èªåã§ã¯äœãå ±åããŸããããã®å Žåãšã©ãŒã¯ã«ã¹ã¿ã èŠçŽ ãªã¢ã¯ã·ã§ã³ãæšãŠã `connectedCallback` ã®æ»ã Promise ãšããŠåºãŠããããã©ãŠã¶ã®ã³ã³ãœãŒã«ã«ã¯ "Uncaught (in promise)" ãšåºãŸãããpromise ãåŸ
ã€åŽïŒãã¹ãã®ã¬ã·ãã `renderToString()`ïŒã«ã¯å±ããŸãããããŒãäžã«åæãããèŠçŽ ã¯ reject ããŸãã ââ ãã®æ¥ç¶ãé»ã£ãŠçµããã ãã§ãä»ãçŽãã°ïŒè¡ããŒã«ïŒéåžžã©ããåæåããŠè§£æ±ºããŸããåã
ã®å€±æç®æã®æ£ç¢ºãªæå㯠`__tests__/integration.initFailureDiagnostics.test.ts` ãåºå®ããŠããŸã |
|
|
2790
2915
|
| `listPaths` | `for` ã«ãŒãã§äœ¿çšããããã¹ã® Set |
|
|
2791
2916
|
| `getterPaths` | getter ãšããŠå®çŸ©ããããã¹ã® Set |
|
|
2792
2917
|
| `setterPaths` | setter ãšããŠå®çŸ©ããããã¹ã® Set |
|
|
2793
2918
|
| `createState(mutability, callback)` | ç¶æ
ãããã·ãäœæïŒ`"readonly"` ãŸã㯠`"writable"`ïŒ |
|
|
2794
2919
|
| `createStateAsync(mutability, callback)` | `createState` ã®éåæç |
|
|
2795
|
-
| `setInitialState(state)` |
|
|
2920
|
+
| `setInitialState(state)` | ããã°ã©ã ããç¶æ
ãèšå®ãåæååã¯åæ state ãæž¡ããŸããåæåæžã¿ã®èŠçŽ ã§ã¯ state å
šäœãå
¥ãæ¿ããç¢ºç«æžã¿ã®ãã€ã³ããæ»ãåã«æ°ãã state ã§é©çšãçŽããŸãïŒåæäžã®èŠçŽ ã¯åæ¥ç¶ãããšãã«é©çšãçŽããŸãïŒãæ°ãã state ã«ç¡ããã¹ã®ãã€ã³ãã¯ãå€ã衚瀺ã®ãŸãŸæ®ããé©çšã®å€±æãšããŠå ±åããŸããåã»ããã¯æžã蟌ã¿ã§ã¯ãªãã®ã§ã`$watch` ã®ãã³ãã©ã `$updatedCallback` ãåŒã³ãŸããããªã¹ãã¯é
åã®åäžæ§ã§çªãåãããã®ã§ãé·ããå€ãã£ããªã¹ãã¯æ°ããé
åã§æž¡ããŠãã ããïŒpush ã splice ã§ãã®å Žã§é·ããå€ããåãé
åã€ã³ã¹ã¿ã³ã¹ã§ã®åã»ããã¯é察å¿ã§ãïŒãèªã¿èŸŒã¿æžã¿ã®ããªã¥ãŒã ïŒ`<wcs-state mount="âŠ">` ââ ããŒã¿ã¯ã«ãŒãã®æšãžè€è£œæžã¿ãªã®ã§ãã«ãŒãã®ããŠã³ããã¹ã®äžãžæžããŠãã ããïŒãããªã¥ãŒã ãããŠã³ãæžã¿ã³ã³ããŒãã³ãã®ããããªãŒãåæåã«å€±æããèŠçŽ ã§ã¯ throw ããŸã ââ 倱æããèŠçŽ ã¯åæŠè£
ã§ããªãã®ã§ãåãé€ããŠäœãçŽããŠãã ãã |
|
|
2796
2921
|
| `nextVersion()` | ããŒãžã§ã³çªå·ãã€ã³ã¯ãªã¡ã³ãããŠè¿ã |
|
|
2797
2922
|
|
|
2798
2923
|
## ã¢ãŒããã¯ãã£
|