@wcstack/state 3.3.0 â 3.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 +94 -27
- package/README.md +94 -27
- package/dist/auto.min.js +1 -1
- package/dist/auto.min.js.map +1 -1
- package/dist/index.d.ts +52 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/split/chunks/binder.js +1 -1
- package/dist/split/chunks/binder.js.map +1 -1
- package/dist/split/chunks/checkDependency.js +1 -1
- package/dist/split/chunks/checkDependency.js.map +1 -1
- package/dist/split/chunks/declarationAliases.js.map +1 -1
- package/dist/split/chunks/diagnosticsHooks.js.map +1 -1
- package/dist/split/chunks/featureBridge.js +1 -1
- package/dist/split/chunks/filterRegistry.js +1 -1
- package/dist/split/chunks/filterRegistry.js.map +1 -1
- package/dist/split/chunks/getAllPropertyDescriptors.js +1 -1
- package/dist/split/chunks/lifecycleHooks.js +1 -1
- package/dist/split/chunks/lifecycleHooks.js.map +1 -1
- package/dist/split/chunks/pathDiagnostics.js +1 -1
- package/dist/split/chunks/pathDiagnostics.js.map +1 -1
- package/dist/split/chunks/registerComponents.js +1 -1
- package/dist/split/chunks/registerComponents.js.map +1 -1
- package/dist/split/chunks/setAll.js +1 -1
- package/dist/split/chunks/setAll.js.map +1 -1
- package/dist/split/chunks/version.js +1 -1
- package/dist/split/core.d.ts +77 -1
- package/dist/split/core.js +1 -1
- package/dist/split/features/devtools.js +1 -1
- package/dist/split/features/devtools.js.map +1 -1
- package/dist/split/features/diagnostics.js +1 -1
- package/dist/split/features/diagnostics.js.map +1 -1
- package/dist/split/features/formats.js +1 -1
- package/dist/split/features/formats.js.map +1 -1
- package/dist/split/features/recursion.js +1 -1
- package/dist/split/features/recursion.js.map +1 -1
- package/dist/split/features/scopes.js +1 -1
- package/dist/split/features/scopes.js.map +1 -1
- package/dist/split/features/ssr.js +1 -1
- package/dist/split/features/ssr.js.map +1 -1
- package/dist/split/features/temporal.js +1 -1
- package/dist/split/features/temporal.js.map +1 -1
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
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
|
+
> **4.0 ãžã®æºå**: 4.0 ã¯ãŸã ãªãªãŒã¹ãããŠããŸãããäœãå€ããã3.x ã®ãã¡ã«äœãã§ããã㯠[3.x â 4.0 ç§»è¡ã¬ã€ãïŒãã¬ãã¥ãŒïŒ](https://github.com/wcstack/wcstack/blob/main/docs/migration-v4.ja.md) ã«ãŸãšããŠããŸãã
|
|
6
|
+
|
|
5
7
|
**ããã¯äŸ¿å©ãªæ¢åFWã®å¥å®è£
ã§ã¯ãããŸããããã¹ããã¥ãŒãšã¢ãã«ã®å¥çŽã«ãªãââããã³ããšã³ãã®å€ã§ç¢ºç«ããç³»èããWebæšæºã®äžã«æã¡èŸŒã詊ã¿ã§ãã**
|
|
6
8
|
|
|
7
9
|
å€ãã®ã©ã€ãã©ãªã¯ãUIã»ç¶æ
ã»ã³ã³ããŒãã³ãã®çµåç¹ã JavaScript ã®äžã«çœ®ããŸãã`@wcstack/state` ã¯ãããéžã³ãŸãããä»®æ³DOMããã³ã³ãã€ã«ããhook ããselector ãåæã«ãããHTML ãšãã¹æååã ããå¥çŽãšã㊠UI ãšç¶æ
ãçµã³ã€ããŸãã
|
|
@@ -137,7 +139,7 @@
|
|
|
137
139
|
| **ã³ã³ããŒãã³ã** | æä»ç㪠2 æ¹åŒ â JavaScript ã¯ã©ã¹ïŒ`bind-component` ããHTML ã ãã® DCC ã | [æ©æ§ã®éžã³æ¹](#ã³ã³ããŒãã³ãæ©æ§ã®éžã³æ¹) |
|
|
138
140
|
| **ä»èŠçŽ ãšã®é
ç·** | wc-bindable ãããã³ã«ãspreadïŒ`...: obj`ïŒã`#init=` / `#sync=` ã® authorityãããããã£â屿§ãã©ãŒ | [ãã€ã³ãã£ã³ã° authority](#ãã€ã³ãã£ã³ã°-authority-init--sync) · [Spread](#spread-ãã€ã³ãã£ã³ã°) · [Inputs](#inputs-ãšå±æ§ãã©ãŒ) |
|
|
139
141
|
| **ããŒã¯ã³** | command token ã state ããèŠçŽ ã®ã¡ãœãããåŒã³ãevent token ãèŠçŽ ã®ã€ãã³ãã state ãžæ»ã | [Command token](#command-tokenã¡ãœãããã€ã³ãã£ã³ã°) · [Event token](#event-tokenã€ãã³ããã€ã³ãã£ã³ã°) |
|
|
140
|
-
| **æé** | `$stream` ãéåæãœãŒã¹ã fold ãã`$watch` ã headless ã«åå¿ãã`$scan`
|
|
142
|
+
| **æé** | `$stream` ãéåæãœãŒã¹ã fold ãã`$watch` ã headless ã«åå¿ãã`$scan` ãäž¡è
ãè¶ããŠæ®ã环ç©å€ãæã€ïŒ`$scan` 㯠3.5 ã§èŠåãåºãŠ 4.0 ã§å€ãã â [4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration)ïŒ | [æéãæ±ãæ©æ§ã®éžã³æ¹](#æéãæ±ãæ©æ§ã®éžã³æ¹) |
|
|
141
143
|
| **åæåãšã©ã€ããµã€ã¯ã«** | state ã®äŸçµŠã¯ 6 éãã`$connectedCallback` ã `$stateReadyCallback`ã`bootstrapState()` / `createState()` | [ç¶æ
ã®åæå](#ç¶æ
ã®åæå) · [ã©ã€ããµã€ã¯ã«ããã¯](#ã©ã€ããµã€ã¯ã«ããã¯) · [API ãªãã¡ã¬ã³ã¹](#api-ãªãã¡ã¬ã³ã¹) |
|
|
142
144
|
| **蚺æ** | 解決ããªããã¹ã»æ·»åã®æ¬æ°ã»éæ°ã»getter ã®åŸªç°ãå ±åããã倱æã¯ãã®ãã€ã³ãã£ã³ã° 1 æ¬ã«éããå€ã DOM ãå·»ãæ»ããªã | [蚺æãšå€±æã®æ±ã](#蚺æãšå€±æã®æ±ã) |
|
|
143
145
|
| **é
åž** | ã©ã³ã¿ã€ã äŸåãŒãããã«ãäžèŠãESMãCDN ã® `/auto` 1 ã¿ã°ã`unsafe-eval` äžèŠã§ Trusted Types å¯Ÿå¿ | [ã€ã³ã¹ããŒã«](#ã€ã³ã¹ããŒã«) · [docs/csp.ja.md](../../docs/csp.ja.md) |
|
|
@@ -186,15 +188,15 @@
|
|
|
186
188
|
<script type="importmap">
|
|
187
189
|
{
|
|
188
190
|
"imports": {
|
|
189
|
-
"@wcstack/state/core": "https://cdn.jsdelivr.net/npm/@wcstack/state@3.
|
|
190
|
-
"@wcstack/state/features/temporal": "https://cdn.jsdelivr.net/npm/@wcstack/state@3.
|
|
191
|
-
"@wcstack/state/features/scopes": "https://cdn.jsdelivr.net/npm/@wcstack/state@3.
|
|
191
|
+
"@wcstack/state/core": "https://cdn.jsdelivr.net/npm/@wcstack/state@3.5.0/dist/split/core.js",
|
|
192
|
+
"@wcstack/state/features/temporal": "https://cdn.jsdelivr.net/npm/@wcstack/state@3.5.0/dist/split/features/temporal.js",
|
|
193
|
+
"@wcstack/state/features/scopes": "https://cdn.jsdelivr.net/npm/@wcstack/state@3.5.0/dist/split/features/scopes.js"
|
|
192
194
|
}
|
|
193
195
|
}
|
|
194
196
|
</script>
|
|
195
197
|
<script type="module">
|
|
196
198
|
import { bootstrapState, installFeatures } from '@wcstack/state/core';
|
|
197
|
-
import temporal from '@wcstack/state/features/temporal'; // $watch / $scan
|
|
199
|
+
import temporal from '@wcstack/state/features/temporal'; // $watch / $streamïŒ$scan 㯠3.5 ã§èŠåã4.0 ã§å€ããïŒ
|
|
198
200
|
import scopes from '@wcstack/state/features/scopes'; // bind-componentã»mount=ã»DCC
|
|
199
201
|
|
|
200
202
|
installFeatures([temporal, scopes]);
|
|
@@ -218,7 +220,7 @@
|
|
|
218
220
|
| ãšã³ã㪠| è¶³ããããã® |
|
|
219
221
|
|---|---|
|
|
220
222
|
| `@wcstack/state/core` | ãã€ã³ãã£ã³ã°ã®æ¬äœ: `data-wcs`ã»`for` / `if`ã»ãã¹ getterã»ãã£ã«ã¿ã»ã€ãã³ãã»`$command` / `$on`ã»`bootstrapState`ã»`installFeatures` |
|
|
221
|
-
| `@wcstack/state/features/temporal` | `$watch`ã»`$scan
|
|
223
|
+
| `@wcstack/state/features/temporal` | `$watch`ã»`$scan`ïŒ3.5 ã§èŠåã4.0 ã§å€ãã â [4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration)ïŒã»`$stream` |
|
|
222
224
|
| `@wcstack/state/features/scopes` | `bind-component`ã»`mount=` ã®ããªã¥ãŒã ã»ãªãŒããŒã¬ã€ã®å
¬é getterã»DCCïŒ`data-wc-definition`ïŒ |
|
|
223
225
|
| `@wcstack/state/features/recursion` | `$recursion` ãš `**` ãã¹ |
|
|
224
226
|
| `@wcstack/state/features/ssr` | `enable-ssr`: ãµãŒããŒæç»ãšãã€ãã¬ãŒã·ã§ã³ |
|
|
@@ -328,7 +330,9 @@ install æã«åããåãå£ãéããŸãïŒã
|
|
|
328
330
|
|
|
329
331
|
解決é åº: `state` â `src` (.json / .js) â `json` â å
å
`<script>` â `setInitialState()` åŸ
æ©ã
|
|
330
332
|
|
|
331
|
-
|
|
333
|
+
5 çªã® `<script type="module">` ã¯ãã©ãŠã¶èªèº«ãè©äŸ¡ããŸãïŒ`<wcs-state>` ã®äžã«ãã£ãŠãæ¢ãŸããŸããïŒãexport ã¯ã©ãã«ãå±ããªãã®ã§ state ã«ã¯åœ±é¿ããŸãããããããã¬ãã«ã®ã³ãŒã㯠2 åèµ°ããŸãïŒãã©ãŠã¶ã 1 åãstate ã 1 åïŒããããã¬ãã«ã«å¯äœçšïŒãªã¯ãšã¹ãã»ãã°åºåã»ã°ããŒãã«ãžã®ä»£å
¥ïŒã眮ããªãã§ãã ãããCSP äžã§ã¯äžã®æ³šèšãåç
§ããŠãã ããã
|
|
334
|
+
|
|
335
|
+
> **Content-Security-Policy äžã§ã¯:** 5 çªïŒå
å
`<script type="module">`ïŒã¯ `blob:` URL çµç±ã§è©äŸ¡ããããããstate ãèªã¿èŸŒã `<script>` ã«ããŒãžã® nonce ãä»ãããïŒblob: ã® import ããã® nonce ãåŒãç¶ããŸãïŒã`script-src blob:` ãå¿
èŠã§ãã峿 Œãª CSP ãæ·ãå Žå㯠4 çªïŒ`src="./state.js"`ïŒã䜿ã£ãŠãã ããã远å ãã£ã¬ã¯ãã£ãã¯äžèŠã§ãããªã 5 çªã® `<script>` ã¯ãã©ãŠã¶èªèº«ãè©äŸ¡ããŸããCSP äžã§ã¯ããã® `<script>` ã«ã nonce ãä»ããªãéãã³ã³ãœãŒã«ã«éåã 1 ä»¶åºãŸããnonce ãä»ããå Žåã CSP ãç¡ãå Žåã¯ããããã¬ãã«ã®ã³ãŒãã 2 åèµ°ããŸãïŒå¯äœçšã眮ããªãããšïŒã詳现㯠[docs/csp.ja.md](../../docs/csp.ja.md)ã
|
|
332
336
|
|
|
333
337
|
### 远å ã®ç¶æ
ãããŠã³ãããïŒ`mount=`ïŒ
|
|
334
338
|
|
|
@@ -669,7 +673,7 @@ export default {
|
|
|
669
673
|
- spread å³èŸºãžã®ãã£ã«ã¿ïŒ`...: target|filter`ïŒã¯ãšã©ãŒ
|
|
670
674
|
- å³èŸºãã¹ã®éäžã« `*` ãå«ããŠã OKïŒäŸïŒ`...: stores.*.fetch`ïŒ
|
|
671
675
|
- å³èŸºã¯çŽ ã®ããªãŒãã¹ïŒ`...: fetchX`ãéäžã® `*` ãå¯ïŒ
|
|
672
|
-
- ã«ã¹ã¿ã èŠçŽ ã¯ã©ã¹ãæªç»é²ã®å Žåã`customElements.whenDefined(tag)` 解決æã«é
å»¶å±éãããïŒautoloader
|
|
676
|
+
- ã«ã¹ã¿ã èŠçŽ ã¯ã©ã¹ãæªç»é²ã®å Žåã`customElements.whenDefined(tag)` 解決æã«é
å»¶å±éãããïŒautoloader ã«ããé
å»¶ããŒãã«å¯Ÿå¿ïŒã`for:` / `if:` ã®ãã³ãã¬ãŒãã®äžã§ãåã â è¡ãæã¯ããã«æãããã¯ã©ã¹ãå®çŸ©ããããããããã®è¡ã®èŠçŽ ããã®è¡ã®å€ã§å±éãããå®çŸ©åã«æ¶ããè¡ã»éããæã¯å±éããªããåŸ
ã€éã«ææžããå€ããèŠçŽ ïŒã¿ããããã«ã® DOM éé¿ïŒã¯ãå€ããŠããéã¯ã¬ãžã¹ããªã«äœãæ®ãããæ»ã£ããæ»ã£ãå
ã®ããªãŒã®ã¬ãžã¹ããªã§åŸ
ã¡çŽããã¯ã©ã¹ãå®çŸ©ããããïŒå®çŸ©æžã¿ãªãããã«ïŒå±éããïŒè¡ã®èŠçŽ ã¯ããã®è¡ããŸã äžèЧã«å±
ãéã ãïŒ
|
|
673
677
|
- `wcBindable` 宣èš**ã®ãªã**èŠçŽ ã¯ãšã©ãŒïŒæç€ºé
ç·ã§æžããŠãã ããïŒãspread ã¯äœãå±éãã¹ãããå¥çŽããèªã¿åããã
|
|
674
678
|
|
|
675
679
|
**Composite shell**ïŒwc-bindable Composition ProfileïŒã¯ãã®ãŸãŸãµããŒããããŸãïŒcomposite shell ã¯æšæºã® `target.constructor.wcBindable` ãéã㊠synthesized declaration ãé²åºããããã`"s3.progress"` ã®ãã㪠composed name ã¯ãã©ãããªèŠçŽ ã¡ã³ããŒããŒãšããŠæ±ãããŸããstate ã composed æ§é ã«åãã㊠(`{ s3: { progress: 0 } }`) æãŠã°ã`...: pipeline` ãèªåçã« nested state path ãžå±éãããŸãã
|
|
@@ -1052,7 +1056,7 @@ export default {
|
|
|
1052
1056
|
|
|
1053
1057
|
3. **ãã£ãã·ã¥** â getter ã®çµæã¯å
·äœçãªã¢ãã¬ã¹ïŒãã¹ + ã«ãŒãã€ã³ããã¯ã¹ïŒããšã«ãã£ãã·ã¥ãããŸãã`users.*.fullName` ã®ã€ã³ããã¯ã¹ 0 ãšã€ã³ããã¯ã¹ 1 ã¯å¥ã
ã®ãã£ãã·ã¥ãšã³ããªãæã¡ãŸããäŸåå
ã倿Žãããå Žåã®ã¿ãã£ãã·ã¥ãç¡å¹åãããŸãã
|
|
1054
1058
|
|
|
1055
|
-
4. **çŽæ¥ã€ã³ããã¯ã¹ã¢ã¯ã»ã¹** â æ°å€ã€ã³ããã¯ã¹ã§ç¹å®ã®èŠçŽ ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãïŒ`this["users.0.name"]` ã¯ã«ãŒãã³ã³ããã¹ããªãã§ `users[0].name`
|
|
1059
|
+
4. **çŽæ¥ã€ã³ããã¯ã¹ã¢ã¯ã»ã¹** â æ°å€ã€ã³ããã¯ã¹ã§ç¹å®ã®èŠçŽ ã«ã¢ã¯ã»ã¹ããããšãã§ããŸãïŒ`this["users.0.name"]` ã¯ã«ãŒãã³ã³ããã¹ããªãã§ `users[0].name` ã«è§£æ±ºãããŸããèŠçŽ ã®ãã¹ãžå¥ã®ãªããžã§ã¯ãã代å
¥ããïŒ`this["users.0"] = { ...this["users.0"], name: "z" }`ïŒãšã`for:` ã§ãªã¹ããæããŠãããã©ããã«é¢ãããããã®äœçœ®ã¯æ°ããè¡ã«ãªããŸãããã®äžã®ãã¹ïŒ`users.0.name`ã»`$getAll("users.*.name")`ã»è¡ getterïŒã¯ãå·®ãæ¿ããåã®è¡ã®ãã£ãã·ã¥ã§ã¯ãªãæ°ãããªããžã§ã¯ãããèªã¿ãŸãããã®å Žã§æžãæããåããªããžã§ã¯ããæžãæ»ãïŒ`const u = this["users.0"]; u.name = "z"; this["users.0"] = u;`ïŒãã`$postUpdate("users.0")` / `$postUpdate("users")` ã§ç¥ããããšãè¡ã¯æ®ã眮ãããŸãŸããã®äžã®ãã¹ãšãããèªã getter ãèªã¿çŽããŸã â è¡ã®äžã§ããããæã `for:` ãç¡ããŠãåãã§ãããã®ä¿®æ£ã®åã¯ã`for:` ãæããŠããªãéããã®äžã®ãã¹ã¯ãã£ãã·ã¥ã®å€ã®ãŸãŸã§ãåããªã¹ãã `$getAll` ã§éãã getter ãå
ã«è©äŸ¡ãããŠãããšã`users.0.name` ãèªã getter ãèŠçŽ ã®å·®ãæ¿ããåãããŒãããšããããŸãããæ°å€ã®æ·»åã 1 ã€ã®ãã¹ãªãããã€ã³ãã£ã³ã°ã«ãåãç¶ŽããæžããŠãæå³ãåãã*ã㟠0 çªç®ã«ããè¡*ãã§ãïŒ`textContent: users.0.name`ã`{{ users.1.name }}`ãè¡ getter ãªã `{{ users.0.fullName }}`ãæ·»åã®ãã¹ãžã®æžã蟌ã¿ïŒ`this["users.0.name"] = âŠ`ïŒããã®è¡ãæã `for:` ã®è¡ããã®è¡ã«æçžããå
¥åæ¬ããã®æžã蟌ã¿ãèŠçŽ ã®å·®ãæ¿ãïŒ`this["users.0"] = {âŠ}`ïŒãäžŠã¹æ¿ãã»è¡ã®åé€ã»ãªã¹ãã®äžžããšçœ®æã«è¿œåŸããè¡ getter ã¯ãã®å
¥åã®å€åã«è¿œåŸããŸã â ãªã¹ãã `for:` ã§æããŠããŠãããªããŠãåãã§ãããã®ãã€ã³ãã£ã³ã°ã¯ state ãªããžã§ã¯ãã«è¶³ãåæãããªãã¢ã¯ã»ãµãéã㊠getter ãšåãããã«èªãŸããgetter ãšåããããªã¹ãã®ã©ã®è¡ãžã®æžã蟌ã¿ã§ãè©äŸ¡ãçŽãããŸãããã®ãã `$watch` ã®ããŒïŒ`"users.0.name"` ãªã©ïŒã¯å€ãå€ãããªããŸãŸçºç«ããããšããããŸãããã®äœçœ®ã«è¡ãç¡ãïŒç©ºã®ãªã¹ãïŒãšãã¯ç©ºã§ãé
åã§ãªããªããžã§ã¯ãã®äžã®ããŒïŒ`sales.2024.total`ïŒã¯çŽ ã®ããŒãšããŠèªã¿ãŸãã3.3.0 ãŸã§ã¯ããã®æžãæ¹ã®ãã€ã³ãã£ã³ã°ã¯æåã®å€ã®ãŸãŸæ¢ãŸã£ãŠãªã¹ãã®äžžããšçœ®æã«ãã远åŸãããè¡ getter ããã®ç¶Žãã§æžããšç©ºã®ãŸãŸ `wcs/binding-path-missing` ã®èŠåãåºãŠããŸãããæ°å€ã®æ·»åã 2 ã€ä»¥äžã®ãã¹ïŒ`groups.0.items.1.v`ïŒãšãæ¡åŒµã§ããªã state ãªããžã§ã¯ãïŒ`Object.freeze`ã»`Object.seal`ã»`Object.preventExtensions`ïŒã®äžã®æ°å€æ·»åã®ãã€ã³ãã£ã³ã°ã¯ãããŸããã®ãŸãŸã§ãã
|
|
1056
1060
|
|
|
1057
1061
|
### getter 㯠state ã«å¯ŸããŠçŽç²ã§ããããš
|
|
1058
1062
|
|
|
@@ -1129,6 +1133,7 @@ export default {
|
|
|
1129
1133
|
- **`path` ãžã®æžã蟌ã¿** â ãªããžã§ã¯ããå«ãã©ããªå€ã§ãïŒ`$eq("selected", this["items.*"])` ã«å¯Ÿãã `this.selected = row`ïŒ: éžã°ããŠããè¡ãšãæ°ãã«éžã°ããè¡ã
|
|
1130
1134
|
- **`path` ããäžã®ãªããžã§ã¯ããžã®æžã蟌ã¿** â `$eq("sel.id", âŠ)` ã«å¯Ÿãã `this.sel = { id: 2 }`: åãã 2 è¡ãæ§ããªããžã§ã¯ãã®äžãšæ°ãããªããžã§ã¯ãã®äžã§ `path` ãæã€å€ãéµã«ããŸãã
|
|
1131
1135
|
- **`path` ã getter ã getter ã®é
äž**ïŒ`get current()` ã«å¯Ÿãã `$eq("current.id", âŠ)`ïŒ: å€ãæžã蟌ã¿ãªãã«å€ããã®ã§ãäŸåãåŒµãæ®éã®èªã¿åãã«æ»ããŸããéžæã¯æ£ããä¿ãããŸãããå€åã®ãã³ã«å
šè¡ãåè©äŸ¡ãããŸãïŒéµä»ãã®åœ¢ã䜿ããªãã®ãšåãïŒã2 è¡ã§æžãŸããã«ã¯ã`path` ãæžã蟌ãŸãã stateïŒ`selectedId`ïŒã«åããŠãã ããã`@wcstack/devtools` ã® State ãã€ã³ã¯ãpath ããšã®è³Œèªã®æ°ã **Keyed selection** ã«åºãããã®åœ¢ã«èœã¡ã path ã«ã¯ `tracked` ãããžãä»ããŸãïŒ3.0ïŒã
|
|
1136
|
+
- **æ°å€ã®æ·»åãå«ã `path`**ïŒ`$eq("items.0.v", âŠ)`ïŒ: æžã蟌ã¿ã¯æ·»åãã¯ã€ã«ãã«ãŒãã«ããç¶ŽãïŒ`items.*.v`ã»`items.*`ïŒã§ç¥ãããã®ã§ãç¶Žãã®ãŸãŸã®è³Œèªã«ã¯å±ããŸããããã®åœ¢ãäŸåãåŒµãæ®éã®èªã¿åãã«æ»ãããã®è¡ã® `v` ãžã®æžã蟌ã¿ã»èŠçŽ ã®å·®ãæ¿ãã»ãªã¹ãã®å·®ãæ¿ãã«è¿œåŸããŸãïŒgetter ãšåãããå¥ã®è¡ã® `v` ãžã®æžã蟌ã¿ã§ãåè©äŸ¡ãããŸãïŒããã®ä¿®æ£ã®åã¯ãåãæ°å€ã®ãã¹ã®ãã€ã³ãã£ã³ã°ãç¡ãéãæåã®å€ã®ãŸãŸæ¢ãŸã£ãŠããŸããã
|
|
1132
1137
|
- **å倿ã¯ããŸãã:** `"2"` 㯠id `2` ã«äžèŽããŸããã`<input>` ã `<select>` ã¯æååãæžãã®ã§ãå
¥å£ã§å€æããïŒ`value|number: selectedId`ïŒããid ãæååã§æã£ãŠãã ããã
|
|
1133
1138
|
- **ã¹ã³ãŒãã®äžã§ã¯ `path` ã¯çžå¯Ÿ**ã§ã â ãã¹ãåãä»ã® `$` API ãšåãã§ããããŠã³ããããã³ã³ããŒãã³ãïŒ`bind-component`ïŒãšããªã¥ãŒã ïŒ`<wcs-state mount="cart">`ïŒã§ã¯ã`$eq("selectedId", âŠ)`ã»`$eqPath` ã® 2 ã€ã®ãã¹ã»`$eqIndex`ã»`$dependOn` ã¯ã©ãããã®ã¹ã³ãŒãïŒ`cart.selectedId`ïŒã«è§£æ±ºãããã«ãŒãã«ã¯åããŸããã`$untracked` ã¯ã³ãŒã«ããã¯ãåãã®ã§ç¿»èš³ã®å¯Ÿè±¡å€ã§ãã
|
|
1134
1139
|
|
|
@@ -1277,6 +1282,12 @@ export default {
|
|
|
1277
1282
|
|
|
1278
1283
|
ãã®æžãæ¹ã§è¡ãå
¥ãæ¿ãããšãå
¥ãæ¿ããæã£ãæç¹ã§ãæç»æžã¿ã®è¡ãå€ãšäžç·ã«äžŠã¹æ¿ãããŸãïŒãã®å Žã§äžèº«ãæžãæããã®ã§ã¯ãããŸããïŒãè¡ã® `$1` ãšããã€ã³ãã®å€ã«ããè¡ã®ç¶æ
ïŒãã€ã³ãããŠããªã input ã«å
¥åäžã®ããã¹ããªã©ïŒãå€ã«ä»ããŠããŸãããªã¹ãã«ç¡ãã£ãå€ãæžã蟌ããšããã®è¡ã¯ãã®å Žã§çœ®ãæãããŸãããããã¯ã¯åããããã€ã³ããæ°ããå€ãæ ãã®ã§ãè¡ã«ãã€ã³ããã input ã¯å
¥åäžããã©ãŒã«ã¹ãä¿ã¡ãŸããããªããã£ãã®ãªã¹ãã§ã¯çããå€ãåºå¥ã§ããªããããæžã蟌ã¿ã®çµæãåãå€ã®äžŠã¹æ¿ãã«ãªãã°å
¥ãæ¿ããšããŠæ±ããŸãã
|
|
1279
1284
|
|
|
1285
|
+
å
¥ãæ¿ããæãã®ã¯ãåãããå€ãã©ããå
ã®äœçœ®ãé¢ãããšãã§ãããããŸã§ïŒ2 åã®æžã蟌ã¿ã®éãåãããå€ãäž¡æ¹ã®äœçœ®ã«ããéïŒã¯ãè¡ã¯ãããã¯ãä¿ã£ããŸãŸäœçœ®ã©ããã®å€ãæ ããæ·»åã®ãã¹ïŒ`this["items.0"]`ïŒã¯ãã®äœçœ®ãèªã¿æžãããŸãã2 åã®æžã蟌ã¿ã¯å¥ã
ã®æŽæ°ïŒ2 åã®ã¯ãªãã¯ãªã©ïŒã«åãããŠããŠãæ§ããŸãããå
¥ãæ¿ããæããæŽæ°ã `items.*` ã® `$watch` ã«ç¥ãããã®ã¯ããã®æŽæ°ã§æžããäœçœ®ã ãã§ãïŒ`prev` ããã®äœçœ®ã®å€ã§ãïŒãæãåã«é
åã代å
¥ãããšãåã«ãã®ãã¹ãæã£ãŠããé
åã§ãã代å
¥ããé
åã®å€ãæãããŸããå¥ã
ã®è¡ã«åãå€ãæã€ãªã¹ããã»ããšåããå
¥ãæ¿ãããŸãããå¥ã®è¡ãæã¡ç¶ããå€ãåãæžã蟌ã¿ã¯ãå
¥ãæ¿ãã®çåŽãšåºå¥ã§ããŸããããã®ãããã³ãŒããåãå€ãæã¡ç¶ããè¡ãäœããšãé
åã眮ãæãããŸã§ããã®é
åãžã®æ·»åã®æžã蟌ã¿ã¯äœçœ®ã©ããã«æãããŸããå€ãš `$1` ã¯æ£ããããããã¯ãå€ã«ä»ããŠåããªããªãã ãã§ãã
|
|
1286
|
+
|
|
1287
|
+
è¡ã®äžã®èŠçŽ ãèªåã®è¡ãžæžãå€ã«ã¯ããããŸã§ã®è©±ã¯åœãŠã¯ãŸããŸããïŒ`value: .` ã§ãã€ã³ããã inputã`status: .` ã§ãã€ã³ããã wc-bindable ã®åºåïŒããã®æžã蟌ã¿ã¯è¡ã®å€ã®æŽæ°ã§ãå
¥ãæ¿ãã®äžéšã«ã¯æ°ããŸãããè¡ã¯ãããã¯ãš `$1` ãä¿ã¡ãããã€ãã®è¡ãåãå€ãè¿ããŠããããè¡ã®èŠçŽ ãå¥ã®è¡ã®æã€å€ãæžããŠãããã®èŠçŽ ã®ä»¥åŸã®æžã蟌ã¿ã¯èªåã®è¡ã«å±ããŸãã
|
|
1288
|
+
|
|
1289
|
+
**åããªããžã§ã¯ãã 2 ã€ã®äœçœ®ã«ãããšãã** ãªã¹ãã® 2 ã€ã®äœçœ®ã«åããªããžã§ã¯ãããããšïŒ`items: [o, o, âŠ]`ïŒãçæ¹ã®è¡ã®äžã®ããŒãžã®æžã蟌ã¿ïŒ`this["items.0.name"] = "z"`ïŒã§ãªããžã§ã¯ãã¯å€ãããŸãããããçæ¹ã®è¡ã¯å€ãå€ã衚瀺ããèªã¿ãå€ãå€ãè¿ããŸããè¡ã®äžã®å€ã¯è¡ããšã«ãã£ãã·ã¥ãããæžã蟌ã¿ã¯ãããéããè¡ã«ããå±ããªãããã§ããããããæžã蟌ã¿ã®åŸã« `$postUpdate("items")` ãåŒã¶ãšã`for:` ã®è¡ã»`$getAll("items.*.name")`ã»`items.1.name` ã®ãããªæ·»åã®ãã¹ã®ãã¹ãŠããªããžã§ã¯ããèªã¿çŽããŸãã
|
|
1290
|
+
|
|
1280
1291
|
## ååž°ãã¹ïŒ`$recursion`ïŒ
|
|
1281
1292
|
|
|
1282
1293
|
ãã¹ã¯æ·±ããæååã«çŒãä»ããŸãã`nodes.*.children.*.total` ã¯ã¯ã€ã«ãã«ãŒãã¡ããã© 2 段ã®ãã¹ã§ãããæšã 1 段深ããªã£ãŠã 3 段ã«ã¯äŒžã³ãŸããããããæšã®æ·±ãã¯ã³ãŒãã§ã¯ãªã**ããŒã¿ã®æ§è³ª**ã§ãã`$recursion` ã¯ãã®éãããåããŸãã圢ãç¹°ãè¿ãå Žæã宣èšããããšã¯ãããŸäœæ®µç®ã§ãããã `**` ãšæžããŸãã
|
|
@@ -1426,7 +1437,9 @@ this.$setAll("nodes.**.selected", [], false); // å
šæ·±ãã®å
šããŒã
|
|
|
1426
1437
|
|
|
1427
1438
|
èµ°æ»ã¯æ·±ãæ¹åã«éããªãããå¿
èŠãªåœ¢ããã®å Žã§æ€æ»ããŸãã**åãé
åã€ã³ã¹ã¿ã³ã¹**ã« 2 床å°éãããæåŠããŸãããã®é
åãçŸåšã®ããŒãã®ç¥å
ã®ãã®ãªã埪ç°ïŒ`wcs/recursion-cycle`ïŒãããã§ãªããã° 2 ã€ã®ããŒãã 1 æ¬ã®åãªã¹ããå
±æããŠããŸãïŒ`wcs/recursion-shared-list`ïŒãåããŒãã«èªåã® `children` é
åãæãããŠãã ãã ââ **空**é
åã®äœ¿ãåãã¯è¡ãæããå¥ååã®ãããããªãã®ã§ã远跡ãããæ£åœã§ãã
|
|
1428
1439
|
|
|
1429
|
-
è¡ãªããžã§ã¯ããäœãçŽã㊠`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"]
|
|
1440
|
+
è¡ãªããžã§ã¯ããäœãçŽã㊠`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 è¡ãžç§»ããŸãïŒ`if:` ã§é ããŠããè¡ã®ããšããããŸãïŒ ââ ãã®è¡ã®éèšããå€ããè¡ã®æ°åã§åã代ããã«å
±æããŒã¿ã远åŸããŸãïŒè¡éå㯠1 çµãããªãã®ã§ã3 è¡ã§å
±æããŠããã°æ®ã£ã 1 è¡ã ãã远åŸããä»ã¯åã£ããŸãŸã§ãïŒã3.4.0 ããã¯ãæã¡äž»ããªã¹ãã«æ®ã£ããŸãŸé
åãææŸãããšãïŒ`this["nodes.0.children"] = [ ⊠]`ïŒãåãã§ãè¡éåã¯åãããŒã§ãã®é
åãæã€å¥ã®è¡ãžç§»ãããã®è¡ã®éèšãå
±æããŒã¿ã远åŸããŸãïŒ3.3.0 ã§ã¯åã£ããŸãŸã§ããïŒãå€ããè¡**ãã®ãã®ã®ãªããžã§ã¯ã**ãæ»ã£ãŠããã°æã¡äž»ãæ»ããŸã ââ åãé
åã€ã³ã¹ã¿ã³ã¹ã§ããåãè¡ã䞊ã¹ãæ°ããé
åã§ããéãäœçœ®ã«æ»ããŠãè¿ããŸããäžæ¹ã**å
šãŠã®è¡ãäœãçŽã**ç¶ŽãïŒ`this.nodes = this.nodes.map(n => ({ ...n }))` ââ ãã®é
ã®åé ã®æŽæ°ïŒã§ã¯ã©ã®è¡ãäžèŽããªãã®ã§ãè¡éåã¯**æã¡äž»ãå±
ãäœçœ®ãå ããè¡**ã«ä»ããŸãã2.3.0 ã§ãã®éãã«æ»ãã®ã¯åãé
åã€ã³ã¹ã¿ã³ã¹ã®ç¶Žãã ãã§ãæ°ããé
åã§æ»ããš 2.3.0 ã§ã¯äž¡æ¹ã®è¡ãåããŸããåã® getter ãäžãèªããªããããŒãããšã«èªåã®é
åãæãããŠãã ãã ââ æã¡äž»ãé
åãææŸããåŸããããã getter ã¯ãèªãå€ãå€ãããŸã§åã®æã¡äž»ã®æèã§æ±ããå€ãè¿ãç¶ããããšããããŸãã
|
|
1441
|
+
|
|
1442
|
+
å
±æã®åœ¢ã®ãã¡æ¬¡ã® 3 ã€ã¯æ¢ç¥ã®å¶çŽã§ããå¥ã®å€åŽã®è¡ãåãé
åã**å¥ã®ããŒ**ã«æã€ãšïŒããè¡ã¯ `items` ã«ãå¥ã®è¡ã¯ `alt` ã«ïŒãçæ¹ã®ããŒãéããæžã蟌ã¿ãå¥ã®èŠçŽ ã«çå°ããããšããããŸãïŒ[#396](https://github.com/wcstack/wcstack/issues/396)ïŒãåãé
åã 2 ã€ã® `<wcs-state>`ïŒã«ãŒããšãã®ããªã¥ãŒã ãå«ãïŒã§å
±æããªãã§ãã ãã ââ çæ¹ã§åããäœãçŽããããåŸãããçæ¹ãéããæžã蟌ã¿ãå¥ã®é
åã«çå°ããããæããŠå€±ããããããŸãïŒ[#397](https://github.com/wcstack/wcstack/issues/397)ïŒããŸããå
±æããé
åã®åãã»ç§»åã»äœãçŽãã 1 åã®æŽæ°ã«éãããšãstate ã¯æ£ããã®ã«äžéšã® `for:` ã®æç»ãå€ããŸãŸæ®ãããšããããŸãïŒ[#398](https://github.com/wcstack/wcstack/issues/398)ïŒã
|
|
1430
1443
|
|
|
1431
1444
|
äžéã¯å±éåŸã®ãã¹ã®**ã¯ã€ã«ãã«ãŒã 128 段**ã§ããäžã®éèš getter ã¯è©äŸ¡äžã®ããŒããã 1 段äžãèªãã®ã§ã127 段ã®éãŸã§ã¯ç³ããŠã128 段㧠`wcs/recursion-depth-exceeded` ã«ãªããŸãïŒã¢ã³ã«ãŒã»å°éããæ·±ãã»çµã¿ç«ãŠãããšãããã¹ã»äžéãåæãããŸãïŒããã®æ€æ»ã¯ getter è©äŸ¡ã¹ã¿ãã¯èªèº«ã® 128 段ã®äžéïŒ`wcs/getter-depth-exceeded`ïŒããå
ã«å¹ãã®ã§ãæ·±ãæšã¯ãæ·±ãããšå ±åããã埪ç°ã®çããæããããããšã¯ãããŸãããéäžã§æã¡åãããšãããŸãã ââ éšåçãªéèšã¯ã誀ã£ãå€ãæ£ããå€ãšããŠè¿ãããšã ããã§ãã
|
|
1432
1445
|
|
|
@@ -1559,7 +1572,7 @@ export default {
|
|
|
1559
1572
|
| `capitalize`ïŒ`cap`ïŒ | å
é 倧æå | `name\|capitalize` |
|
|
1560
1573
|
| `trim` | 空çœé€å» | `text\|trim` |
|
|
1561
1574
|
| `slice(n)` | æååã¹ã©ã€ã¹ | `text\|slice(5)` |
|
|
1562
|
-
| `substr(start, length)` | éšåæååïŒåŒæ°ã¯ 2
|
|
1575
|
+
| `substr(start, length)` | éšåæååïŒåŒæ°ã¯ 2 ã€ãšãå¿
é ïŒã3.5 ã§èŠåãåºãŠ 4.0 ã§å€ãã: `slice(start, start + length)` ãšæžã â [4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration) | `text\|substr(0,10)` |
|
|
1563
1576
|
| `padStart(n, char?)`ïŒ`pad`ïŒ | å
é ãåããïŒæ¢å® `0`ïŒ | `id\|padStart(5,0)` â `"00001"` |
|
|
1564
1577
|
| `padEnd(n, char?)` | æ«å°ŸãåããïŒæ¢å®ã¯ç©ºçœã3.2ïŒ | `code\|padEnd(8)` |
|
|
1565
1578
|
| `repeat(n)`ïŒ`rep`ïŒ | ç¹°ãè¿ã | `text\|repeat(3)` |
|
|
@@ -1733,6 +1746,7 @@ customElements.define("user-card", UserCard);
|
|
|
1733
1746
|
- éšåããŠã³ãã䜵çšã§ããŸã: `state: user; state.theme: theme` 㯠`theme` ã 2 ã€ç®ã®å
¥å£ãšããŠããŠã³ãããŸãïŒæé·æ¥é èŸãåã€ã®ã§ãäžã® `theme.mode` ã¯ããªãŒã® `theme.mode` ãèªã¿ãŸãïŒ
|
|
1734
1747
|
- ã«ãŒãã§ã¯**è¡ãã®ãã®**ãããŠã³ãããŸã: `<template data-wcs="for: users"><user-row data-wcs="state: ."></user-row></template>`ãè¡ã³ã³ããŒãã³ãã®äžã® `name` 㯠`users.*.name`ãäžã® `for: tags` 㯠`users.*.tags.*` ãåããŸã
|
|
1735
1748
|
- **èªåã®ããŒã¯ç§æ**ã§ãïŒ[docs/state-mount-design.md](../../docs/state-mount-design.md) §4-3 ã® R1ïŒ: ã³ã³ããŒãã³ããèªåã§å®£èšããããŒã¿ããŒïŒ`state = { mode: "view" }`ïŒã¯ãã®èŠçŽ ã®ãã®ã§ãããªãŒã«ã¯æžãããŸãããããŠã³ãå
ã«ååã®ããŒããã£ãŠãããé ã圢ïŒ`user.name` ã®äžã« `state = { name: "" }`ïŒã§ã¯ãã©ã³ã¿ã€ã ã 1 åã ã warn ããŸãïŒ`wcs/mount-own-key-shadow`ïŒâ ããªãŒãèªã¿ãããã°æ¢å®å€ãæ¶ããç§æã®ãŸãŸã«ããããã°ååãå€ããŠãã ãã
|
|
1749
|
+
- `element.state` ããåãåºããã¡ãœããïŒ`card.state.toggle()`ïŒã¯ãã€ãã³ãã®ãã€ã³ãã£ã³ã°ïŒ`onclick: toggle`ïŒããåŒãã ãšããšåãã«åããŸããèªåã®ããŒãžã®æžã蟌ã¿ãããªãŒã®ããŒãžã®æžã蟌ã¿ãæãçŽãããè¡ããŠã³ãã§ã¯ãã®è¡ã«çå°ããåæã¡ãœããã¯å€ããasync ã¡ãœãã㯠Promise ãè¿ããŸã
|
|
1736
1750
|
- é
åãã®ãã®ãã«ãŒãã«ããŠã³ããã圢ïŒ`state: rows` ïŒ äžã§ `for`ïŒã¯é察å¿ã§ããè¡ãããŠã³ãããïŒ`state: .`ïŒããé
åãæã€ãªããžã§ã¯ããããŠã³ãããŠäžã§ `for` ãåããŠãã ããïŒ`state: group` ïŒ `for: children`ïŒãã©ã¡ããå¥çŽãã¹ãã§åºå®ãããŠãããããŠã³ããããªãŒæ¡åŒµã®å¯äžã®ææ®µã§ã
|
|
1737
1751
|
|
|
1738
1752
|
> ããããã£åäœã®åœ¢ïŒ`state.message: user.name`ïŒã¯ãã®ãŸãŸåããŸã â åãæ©æ§ã®äžã®éšåããŠã³ãã§ãã
|
|
@@ -1826,6 +1840,8 @@ customElements.define("my-component", MyComponent);
|
|
|
1826
1840
|
</template>
|
|
1827
1841
|
```
|
|
1828
1842
|
|
|
1843
|
+
è¡ã®äžã®ã³ã³ããŒãã³ãã¯èªåã®è¡ãèªã¿æžãããŸãã`$connectedCallback` / `$disconnectedCallback` ã® `this`ïŒãšãããããã¿ã€ããŒã `await` ã®å
ãžåã£ãŠããã `this`ïŒã¯èŠçŽ ã®è¡ã«ä»ããŠãããŸã â `if:` ãèŠçŽ ãé ããŠããéããã®è¡ã«æžããèŠçŽ ã®æžã蟌ã¿ïŒ`users[1] = âŠ`ïŒã§è¡ããã®å Žã§å·®ãæ¿ãã£ããæ°ããè¡ã«æžããŸããèŠçŽ ããã£ããå€ãããŠå¥ã®è¡ã«äœ¿ãåãããåŸã¯ãåã£ãŠããã `this` ã¯ã©ã¡ãã®è¡ã«ãæžããã« `The host row of <user-row> was removed.` ã§æããŸããè¡ãã®ãã®ãæ¶ãããšãã® `$disconnectedCallback` ã¯ãã³ã³ããŒãã³ãèªèº«ã®ããŒãèªã¿æžãã§ãïŒ`this.tid` ã«åã£ãŠãããã¿ã€ããŒã® id ãè§£é€ããïŒãè¡ã®ããŒïŒ`this.name`ïŒãèªããšåããšã©ãŒã§æããŸããéšåããŠã³ãïŒ`state.name: .name`ïŒã®èªèº«ã®ããŒã¯è¡ããšã§ã¯ãªãèŠçŽ ããšã« 1 çµãªã®ã§ã`$disconnectedCallback` ããããžæžããå€ã¯ãèŠçŽ ãå¥ã®è¡ã«äœ¿ãåãããåŸãæ®ããŸãã
|
|
1844
|
+
|
|
1829
1845
|
### ã³ã³ããŒãã³ãåŽã§ãªã¹ããæç»ãã
|
|
1830
1846
|
|
|
1831
1847
|
é
åãã³ã³ããŒãã³ãã«æãã`for:` ãã³ã³ããŒãã³ãã®å
åŽã§åãããšãã§ããŸãã
|
|
@@ -2173,7 +2189,7 @@ event token 㯠command token ãšåã `Token` pub/sub ããªããã£ããå
±
|
|
|
2173
2189
|
| [ãã¹ getter](#ãã¹-getterç®åºããããã£) | ãã®å€ãçŸåšã® state ããèŠãŠ**äœã§ããã** | æããªãïŒã¢ãã¬ã¹åäœã§åèšç®ã»ãã£ãã·ã¥ïŒ | è©äŸ¡éèŠãèªãã ãšãã«é
å»¶è©äŸ¡ | å°èšãåé¡ãéèš |
|
|
2174
2190
|
| [`$stream`](#streamstream) | éåæã®äŸçµŠå
ãšã**1 åã®å®è¡ã®äžã§** fold ãããå€ | æã€ïŒåºå㯠runtime ã®ææïŒ | chunk ããšã`args` ãå€ããã° `initial` ã«æ»ã㊠restart | ãã£ãŒãããœã±ãããç¶ç¶çãªèŠ³æž¬ |
|
|
2175
2191
|
| [`$watch`](#watchwatch) | 倿Žãžã®åå¿ | æããªã | å€åããã¢ãã¬ã¹ããšã«ããã 1 åãscan ã®æžã蟌ã¿ã®åŸ | å¯äœçšããæ¡ä»¶ãæç«ãããšãã |
|
|
2176
|
-
| [`$scan`](#scanscan) | æéããŸãã环ç©å€ãšããããæ»ãæ¡ä»¶ | æã€ïŒåºå㯠runtime ã®ææïŒ | çå°ããšïŒ`from`ïŒãŸãã¯ã€ãã³ãããšïŒ`on`ïŒ |
|
|
2192
|
+
| [`$scan`](#scanscan) | æéããŸãã环ç©å€ãšããããæ»ãæ¡ä»¶ | æã€ïŒåºå㯠runtime ã®ææïŒ | çå°ããšïŒ`from`ïŒãŸãã¯ã€ãã³ãããšïŒ`on`ïŒ | ããŒãžèç©ãå±¥æŽãä»¶æ°ã3.5 ã§èŠåãåºãŠ 4.0 ã§å€ãã: `$watch`ïŒstate ã®ãã¹ïŒã `$on`ïŒã€ãã³ãããŒã¯ã³ïŒã§ç³ã â [4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration) |
|
|
2177
2193
|
|
|
2178
2194
|
æ··ä¹±ã®ã»ãšãã©ã¯ã次㮠2 ç¹ã§è§£ããŸãã
|
|
2179
2195
|
|
|
@@ -2296,9 +2312,9 @@ $renderedCallback(paths) {
|
|
|
2296
2312
|
}
|
|
2297
2313
|
```
|
|
2298
2314
|
|
|
2299
|
-
**èŠå:** æç»ã«äŸåãããããªãããžãã¯ã¯ã`$watch`ã»`$scan`ã»`$stream` ã® `args` ã®ã©ããã«æ ¹ã眮ããŠãã ããã`$renderedCallback`
|
|
2315
|
+
**èŠå:** æç»ã«äŸåãããããªãããžãã¯ã¯ã`$watch`ã»`$scan`ã»`$stream` ã® `args` ã®ã©ããã«æ ¹ã眮ããŠãã ããã`$renderedCallback` ã¯ãæããããã®ã«è¿œéãããçšéã«éããŸããïŒ`$scan` 㯠3.5 ã§èŠåãåºãŠ 4.0 ã§å€ããŸããåãããšã¯ `$watch` ã `$on` ã®ãã³ãã©ã§æžããŸã â [4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration)ãïŒ
|
|
2300
2316
|
|
|
2301
|
-
äžã®äŸã¯ããŸã¯ `$
|
|
2317
|
+
äžã®äŸã¯ããŸã¯ stream ã®å€ã«ä»ãã `$watch` ã§çå°ããããŒãžã feed ãžç³ã¿ïŒsentinel ã®åæŠè£
㯠feed ã® `$watch`ïŒã`<b>` ã¯è¡šç€ºå°çšã«æ»ã£ãŠããŸãããã®åœ¢ïŒ`$renderedCallback` ããã©ã®ãã€ã³ãã£ã³ã°ã«ãçŸããªããã¹ãå€å®ã«äœ¿ã£ãŠããïŒã¯ **`wcs/updated-callback-unbound`** ãšããŠéçã«æ€åºãããŸãã
|
|
2302
2318
|
|
|
2303
2319
|
### æ®ãå¶çŽ
|
|
2304
2320
|
|
|
@@ -2365,14 +2381,16 @@ $renderedCallback(paths) {
|
|
|
2365
2381
|
- **äžéå€ã¯èŠ³æž¬ã§ããŸãã** ââ 1 ãããå
ã® `a â b â c` 㯠`cur = c` / `prev = a` ã§ 1 åã ãçºç«ããŸãïŒbinding æŽæ°ãšåãå¥çŽïŒã
|
|
2366
2382
|
- **è¡ã¯ drain ã®æç¹ã®ãªã¹ãã«åŸããŸã** ââ åã job ã§è¡ãæžããŠããåãé€ããã»çœ®ãæããã»ãªã¹ããçãããè¡ã¯çºç«ãããäœçœ®ã ããç§»ã£ãè¡ãçºç«ããŸããã1 ã€ã®äœçœ®ãçºç«ããã®ã¯å€ããŠã 1 åã§ããå
¥ãåã®ãªã¹ãã眮ãæãããšãæ°ããé
åã®è¡ããã¹ãŠçºç«ããŸãã
|
|
2367
2383
|
- **è¡åäœã®å·®åãèŠãããªã `$listKeys`** ââ æªå®£èšã®ãŸãŸé
åå
šäœã代å
¥ãããšãè¡ watch ã¯**å
šè¡**ã«ã€ã㊠`prev === undefined` ã§çºç«ããŸãïŒã©ã®è¡ããã¹æžã蟌ã¿ãéã£ãŠããªãããïŒã`$listKeys` ã宣èšããã°ããŒçªåã per-field æžã蟌ã¿ã«åè§£ããã®ã§ãå€åããè¡ã ããçºç«ã `prev` ãã¹ã«ã©ã§åããŸãã
|
|
2368
|
-
- **headless ãªè¡ watch ã«ã¯ `$listKeys` ãå¿
èŠ** ââ `$watch` ãåç¬ã§ã¯ headless ã«ãªããªãå¯äžã®ç®æã§ãã`items` ãã `items.*.price` ãžã®å±éã¯ãªã¹ãã® `for` ãã€ã³ãã£ã³ã°ãé§åããŠãããwatch ã宣èšããŠããã®ãã¹ããªã¹ããšããŠã¯ç»é²ããŸããïŒæå³çïŒããããã£ãŠ `for` ãã€ã³ãã `$listKeys` ãç¡ãç¶æ
ã§é
åã代å
¥ãããšãè¡ watch ã¯**äžåºŠã**çºç«ããŸããã`$listKeys` ã宣èšããïŒããŒçªåããã£ãŒã«ãããšã«ãã¹æžã蟌ã¿ããã®ã§å±éãçµç±ããªãïŒãããªã¹ããæç»ããŠãã ãããã¹ã«ã©ãŒãã¹ã¯ `user.name` ã®ãããªãã¹ããããã®ãå«ãããã®æ¡ä»¶ãªãã« headless
|
|
2384
|
+
- **headless ãªè¡ watch ã«ã¯ `$listKeys` ãå¿
èŠ** ââ `$watch` ãåç¬ã§ã¯ headless ã«ãªããªãå¯äžã®ç®æã§ãã`items` ãã `items.*.price` ãžã®å±éã¯ãªã¹ãã® `for` ãã€ã³ãã£ã³ã°ãé§åããŠãããwatch ã宣èšããŠããã®ãã¹ããªã¹ããšããŠã¯ç»é²ããŸããïŒæå³çïŒããããã£ãŠ `for` ãã€ã³ãã `$listKeys` ãç¡ãç¶æ
ã§é
åã代å
¥ãããšãè¡ watch ã¯**äžåºŠã**çºç«ããŸããã`$listKeys` ã宣èšããïŒããŒçªåããã£ãŒã«ãããšã«ãã¹æžã蟌ã¿ããã®ã§å±éãçµç±ããªãïŒãããªã¹ããæç»ããŠãã ãããã¹ã«ã©ãŒãã¹ã¯ `user.name` ã®ãããªãã¹ããããã®ãå«ãããã®æ¡ä»¶ãªãã« headless ã§çºç«ããŸãã`for` ãç¡ããã°ãåãé
åããã®åãã®ä»£å
¥ãš `$postUpdate("items")` ã§ãçºç«ããŸãããè¡ã®å€ãèªã¿çŽãããã ããªã®ã§ããããèªã getterïŒ`$getAll("items.*.price", [])`ïŒã¯ãã®å Žã§å€ããå€ãèªã¿ãŸãã
|
|
2369
2385
|
- **ãã³ãã©ã®äŸå€ã¯éé¢ãããŸã** ââ throw ã¯ã³ã³ãœãŒã«ã«å ±åãããæ®ãã® watchïŒãš stream ã® restartïŒã¯ç¶è¡ããŸããloud fail ãã `$connectedCallback` / `$renderedCallback` ãšã¯ç°ãªãæ±ãã§ãã
|
|
2370
|
-
- **æžã蟌ã¿ã®é£éã«ã¯äžéããããŸã** ââ ãã³ãã©ã®æžã蟌ã¿ã¯æ°ããããããäœããããçžäºã«æžãåã watch ã¯ç¡éã«ãŒãã«ãªãåŸãŸãã32 æ®µã§æã¡åããã³ã³ãœãŒã«ã«å ±åããŸãïŒå€ãš DOM
|
|
2386
|
+
- **æžã蟌ã¿ã®é£éã«ã¯äžéããããŸã** ââ ãã³ãã©ã®æžã蟌ã¿ã¯æ°ããããããäœããããçžäºã«æžãåã watch ã¯ç¡éã«ãŒãã«ãªãåŸãŸãã32 æ®µã§æã¡åããã³ã³ãœãŒã«ã«å ±åããŸãïŒå€ãš DOM ã¯å·»ãæ»ããŸããïŒãæ®µã¯æžã蟌ã¿ããšã«æ°ããŸãããã³ãã©ïŒãš `$scan` ã®ç³ã¿ïŒã¯èªåãèµ·ãããæžã蟌ã¿ã®æ·±ãããå§ãŸãã®ã§ãé£éã䌞ã°ãã®ã¯ããã³ãã©ã®æžã蟌ã¿ãå¥ã®ãã³ãã©ãèµ·ããããšãã ãã§ããé·ãæéã®æç»ã®é£éïŒ`$renderedCallback` ãæç»ããšã«èŠåºãã 1 段ãã€è©°ããïŒãèŠããã³ãã©ã¯ãèªåã®æžã蟌ã¿ãåããããã«èŒã£ãŠãæã¡åãããŸããã`$stream` ã®åéããã³ãã©ãšåããæ°ããŸããåéã®æžã蟌ã¿ïŒ`initial` ãžã®æ»ãã»statusïŒã¯åéãèµ·ãããæžã蟌ã¿ã®é£éã®ç¶ãã§ãäžéãè¶ããæžã蟌ã¿ãèµ·ããåéã¯è¡ããŸããããã®ãããstream ã® `args` ãžæžããåéã§ãŸãèµ·ãããã `$watch` ãã`args` ã§äºãã®å€ãèªã stream ã©ãããæã¡åãããŸã ââ äžéãè¶ãããããã¯ã`$watch` ã宣èšããŠããªããŠãå ±åãããŸãã
|
|
2371
2387
|
- **ããŠã³ãããã `bind-component` ã¹ã³ãŒãã§ã¯å®è¡ãããŸãã** ââ ããŠã³ããããã³ã³ããŒãã³ãã¯å®£èšé¢ãå®è¡ããã`$watch` ã®å®£èšããããš 1 åã ã console.warn ã§ã«ãŒã stateïŒãŸãã¯ããªã¥ãŒã ââ `<wcs-state mount>` 㯠`$watch` / `$listKeys` / `$renderedCallback` ãæãŠãŸãïŒãžèªå°ããŸãïŒ`$stream` ãåæ§ïŒãplain ãªïŒé
ç·ãªã Shadow ã®ïŒåã¯ç¬ç«ããªãŒãæã€ã®ã§å®£èšã§ããŸãã
|
|
2372
2388
|
- **SSR ã§ã¯å®è¡ãããŸãã** ââ ãã³ãã©ã®å¯äœçšããµãŒããŒãšã¯ã©ã€ã¢ã³ãã§äºéã«èµ°ãããã§ãã
|
|
2373
2389
|
|
|
2374
2390
|
## ScanïŒ`$scan`ïŒ
|
|
2375
2391
|
|
|
2392
|
+
> **`$scan` 㯠3.5 ã§èŠåãåºãŠã4.0 ã§å€ããŸãã** state ã®ãã¹ã¯çޝç©å€ãæžã `$watch` ã®ãã³ãã©ã§ãã€ãã³ãããŒã¯ã³ã¯ `$on` ã®ãã³ãã©ã§ç³ã¿ãreset ã®æ¡ä»¶ããã³ãã©ã«æžããŠãã ããã[4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration)ãåç
§ã
|
|
2393
|
+
|
|
2376
2394
|
`$stream` ãç³ãã®ã¯ 1 åã® run ã®**å
åŽ**ã§ãrestart ã®ãã³ã«å€ã¯ `initial` ãžæ»ããŸãã`$watch` ã¯å€ãææããŸããã**`$scan`** ã¯ãã®äž¡æ¹ãè·šãã§æ®ãå€ ââ æé軞æ¹åã®çŽ¯ç© ââ ããæã¡äž»ã»çºç«åäœã»reset æ¡ä»¶ã€ãã§å®£èšããŸãã
|
|
2377
2395
|
|
|
2378
2396
|
```html
|
|
@@ -2806,6 +2824,20 @@ this.$getAll("matrix.*.*", [row]);
|
|
|
2806
2824
|
|
|
2807
2825
|
éé¢ããªãå Žåã1 æ¬ã® throw ããå€ã¯æ°ããã®ã« DOM ã¯éäžãŸã§ããšããå端ãªç¶æ
ãäœããããã `$watch` ãš stream ã® restart ãäžžããšæ¶ããŠããŸããïŒREADME ã®ãã®äžã«ããçºç«é ã®å¥çŽãé»ã£ãŠç ŽããïŒã
|
|
2808
2826
|
|
|
2827
|
+
### æç»äžã®æžã蟌ã¿ã¯ç¡éã«ãŒãã«ãªããŸãã
|
|
2828
|
+
|
|
2829
|
+
ãã€ã³ãã£ã³ã°ã®é©çšã®æäžã«èµ·ããæžã蟌ã¿ããããŸãã`for:` ã®æ°ããè¡ã®äžã® wc-bindable èŠçŽ ãåæå€ã state ãžæž¡ãïŒåºåå°çšã¡ã³ããŒã»`#init=element`ïŒãšããã`$renderedCallback` ãæžããšãã§ããããããæžã蟌ã¿ã¯ããããæ°ããããããäœãããã®ãããããŸãæç»ãããŸããæç»ãæ¯åæ°ããå€ãæžã圢 ââ ããšãã°è¡ã®èŠçŽ ã®åºåãããã®äžèŠ§ã® getter ãèªãããŒãã®ãã®ãžæããèŠçŽ ãã€ã³ã¹ã¿ã³ã¹ããšã«éãå€ãè¿ã ââ ã§ã¯ãmicrotask ãåãç¶ããŠããŒãžãåºãŸããŸãããã®é£é㯠100 æ®µã§æã¡åããŸãã101 段ç®ã«ãªããããã¯æç»ããïŒå€ã¯ state ã«æ®ããŸãïŒããã®ãããã«èŒã£ãŠãããã¹ã 1 åã ãå ±åããŸãïŒ
|
|
2830
|
+
|
|
2831
|
+
```
|
|
2832
|
+
[@wcstack/state] render chain depth limit exceeded; bindings for this batch were not applied. { maxDepth: 100, paths: ["mode", "view", "view.*", "view.*.m"] }
|
|
2833
|
+
```
|
|
2834
|
+
|
|
2835
|
+
äžéãã»ãã® 2 ã€ïŒ32ïŒãã倧ããã®ã¯ãããã® 1 段ã 1 åã®æç»ã ããã§ããæããŠæž¬ã£ãŠçŽãé£éã¯ã32 段ãè¶
ããŠãæ£åœã«åãŸããŸã ââ èŠåºãã®æåãµã€ãºã 64px ãã 18px ãŸã§ 1px ãã€è©°ãããšæç»ã¯ 47 åã400 è¡ã 10 è¡ãã€æããš 40 段ã§ãã
|
|
2836
|
+
|
|
2837
|
+
é£éã䌞ã°ãã®ã¯ããã€ã³ãã£ã³ã°ã®é©çšäžã«**åæã§**èµ·ããæžã蟌ã¿ã ãã§ãããã€ã³ãã£ã³ã°ãèŠçŽ ã®ããããã£ãèšå®ãããšããèŠçŽ ããã®å Žã§åæã«åºããã€ãã³ããããã«å«ãŸããŸããdrain ã®å€ããå±ãæžã蟌㿠ââ å©çšè
ã®æäœã»éåæã«å±ã I/O ããŒãã®ã€ãã³ãã»`$stream` ã®å€ã»`await` ã®ç¶ã ââ 㯠0 ããæ°ãçŽãããŸãã`$scan`ã»`$watch`ã»`$stream` ã® restart ã®æžã蟌ã¿ã¯ã䌞ã°ããæ°ãçŽããããããé£éããã®ãŸãŸæ¬¡ã®ããããžåŒãç¶ããŸãããã®ãã `$watch` ã `$scan` ãæã埪ç°ïŒèŠçŽ ã `x` ãžæžãã`$watch: { x(v) { this.mode = v } }`ãäžèЧã `mode` ãèªãïŒããæç» 1 åã§ 1 段ãã€äŒžã³ãŠæã¡åãããŸãããã㯠`$watch` ã®äžéã«ã¯æãããŸãã ââ ãã³ãã©ã®æžã蟌ã¿ã¯ãçŽæ¥å¥ã®ãã³ãã©ãèµ·ããã®ã§ã¯ãªããæç»ãæãã§æ»ã£ãŠããããã§ããæ®éã®äžèЧã®è¡ã®åæåæã®ããã«åãŸãæžãæ»ã㯠1 æ®µã§æ¢ãŸããŸããé£éãåŒãç¶ãã®ã§ã`$watch` ã `$scan` ã§ã€ãªãã æéã®é£é㯠100 段ãåãåããŸãã47 段ã§åãŸãèŠåºãã®è©°ãããçµãã£ãã `$watch` ãæ¬¡ã®è©°ããå§ãã圢㧠2 æ¬ã€ãªããšåãŸããŸãïŒæç» 94 åïŒããåãããã« 3 æ¬ã€ãªããš 3 æ¬ç®ã®éäžã§æã¡åãããŸããå ±åã¯é£éããšã« 1 åã§ããæç»ããªãã£ããããã `$watch` ã `$scan` ãéããŠé£éãããã«åŒãç¶ãã§ããç¶ããããã¯å ±åããã«æç»ããŸãããæã¡åã£ãåŸããæ¬¡ã®å€ããã®æžã蟌ã¿ã¯æ®éã«æç»ãããŸããDevTools ã«ã¯ `state:render-chain-limit` ãå±ããŸãã
|
|
2838
|
+
|
|
2839
|
+
埪ç°ãéããæžã蟌ã¿ã microtask ããå±ã圢ã¯ããã®äžéã®å¯Ÿè±¡å€ã§ãïŒäžéãç¡ãã£ããšããšåãã§ãïŒïŒå€ã microtask ã§åºãèŠçŽ ïŒLit ã® `updated()` ãªã©ïŒãšã`await` ã®åŸã§æžã async ã® `$renderedCallback` ã§ããããããæžã蟌ã¿ã¯ãæéã®éåæã®ã«ãŒããšèŠåããããŸãã ââ 解決æžã¿ã® Promise ã `await` ããªãã 1 äžåæžã `async` 颿°ãããã¯ãã¿ã¹ã¯ã 1 åãæãŸãã« 1 äžåæç»ããŸããç¶ããæç»ã®æ°ã«äžéãèšãããšãæ£åœãªã³ãŒããŸã§æ¢ããŠããŸããŸãã
|
|
2840
|
+
|
|
2809
2841
|
### å€ãš DOM ã¯å·»ãæ»ããŸãã
|
|
2810
2842
|
|
|
2811
2843
|
ç°åžžç³»ã¯ãã¹ãŠãå ±åããŠç¶è¡ãã§ãé©çšæžã¿ã®å€ãæ»ãããšã¯ãããŸãããããã¯ä»¥äžã§å
±éã®å§¿å¢ã§ãïŒ
|
|
@@ -2813,9 +2845,43 @@ this.$getAll("matrix.*.*", [row]);
|
|
|
2813
2845
|
| æ©æ§ | äžé | è¶
éæ |
|
|
2814
2846
|
|---|---|---|
|
|
2815
2847
|
| å æäŒæã® hop | 32 | ãã® transaction ã®æªåŠçã¬ã³ãŒãã®ã¿ quarantine |
|
|
2816
|
-
| `$watch` ã®æžã蟌ã¿é£é | 32 | ãã®ãããã® watch
|
|
2848
|
+
| `$watch` ã®æžã蟌ã¿é£é | 32 | ãã®ãããã® `$scan` / `$watch` ã®çºç«ãšãäžéãè¶ããæžã蟌ã¿ãèµ·ãã `$stream` ã®åéãã¹ããã |
|
|
2849
|
+
| æç»äžã®æžã蟌ã¿ã®é£é | 100 | ãã®ãããã®ãã€ã³ãã£ã³ã°é©çšãã¹ããã |
|
|
2817
2850
|
| ãã€ã³ãã£ã³ã°ã®é©çšå€±æ | â | ãã® 1 æ¬ã®ã¿ã¹ããã |
|
|
2818
2851
|
|
|
2852
|
+
### 4.0 ãžã®æºåïŒ`wcs/v4-migration`ïŒ
|
|
2853
|
+
|
|
2854
|
+
3.5 㯠3.x ã®æåŸã® minor ã§ãã4.0 ãå€ãã»ç§»ãååãšèšå®ãåæãã§ç¥ãããåã㯠3.x ã®ãŸãŸã«ããŸããèŠåã¯ã³ãŒã `wcs/v4-migration` ã® `console.warn` ã§ãååããšã«ããŒãžã§ 1 åã ãåºãŸãã4.0 ã§ã®æ±ããšæžãæãå
ã瀺ããŸãïŒ
|
|
2855
|
+
|
|
2856
|
+
```
|
|
2857
|
+
[@wcstack/state] [wcs/v4-migration] filter "uc" is removed in 4.0: write "upper" (its name since 3.2).
|
|
2858
|
+
See "Preparing for 4.0" in the @wcstack/state README.
|
|
2859
|
+
```
|
|
2860
|
+
|
|
2861
|
+
| æžãæ¹ | 3.x | 4.0 | æžãæãå
|
|
|
2862
|
+
|---|---|---|---|
|
|
2863
|
+
| 3.2 ã§æ¹åãããã£ã«ã¿ã®æ§å: `inc` `dec` `fix` `uc` `lc` `cap` `rep` `rev` `pad` `null` | ãšã€ãªã¢ã¹ | `[wcs/filter-unknown]` | `add` `sub` `toFixed` `upper` `lower` `capitalize` `repeat` `reverse` `padStart` `nullIfEmpty` |
|
|
2864
|
+
| `$trackDependency` / `$untrackDependency` | ãšã€ãªã¢ã¹ | `[wcs/name-alias]` ãæãã | `$dependOn` / `$untracked` |
|
|
2865
|
+
| `$updatedCallback` / `$streams` | ãšã€ãªã¢ã¹ | `[wcs/declaration-alias]` ãæãã | `$renderedCallback` / `$stream` |
|
|
2866
|
+
| `substr(start, length)` | åã | `[wcs/filter-unknown]` | `slice(start, start + length)`ïŒç¬¬ 2 åŒæ°ã¯é·ãã§ã¯ãªãçµããã®äœçœ®ïŒ |
|
|
2867
|
+
| `$scan` | åã | æãã | state ã®ãã¹ã¯ `$watch`ãã€ãã³ãããŒã¯ã³ã¯ `$on` |
|
|
2868
|
+
| `bootstrapState({ debug })`ã»`commentTextPrefix`ã»`enablePropagationContext` | åã | æãã | æ¶ãã4.0 ã®ã³ã¡ã³ãæçžã¯ `<!--@@: path-->` ãš `<!--@@wcs-text: path-->` ã ã |
|
|
2869
|
+
| `bootstrapState({ enableMustache })`ã»`sameValueGuard`ã»`enableDirectionalInitialSync` | ããŒãžå
šäœã®èšå® | æãããstate ã®æšããšã« `$behavior` ã§å®£èšãã | 3.x ã®éã¯ãã®ãŸãŸãäžãããšãã«ãã«ãŒããšã³ã³ããŒãã³ãã®å state ã® `$behavior` ãžç§»ãïŒã³ã³ããŒãã³ãã¯ãã¹ãã®ãã®ãç¶ããªããããªã¥ãŒã ã«ã¯æžããªãïŒ |
|
|
2870
|
+
| `bootstrapState` ã®ç¥ããªãããŒã»åã®éãå€ïŒ`null`ãé
åãæååã§ãªãã¿ã°åã`state` / `ssr` 以å€ã® `tagNames` ã®ããŒïŒ | ç¡èŠ | æãã | æ¶ããçŽã |
|
|
2871
|
+
| state ã®ã㌠`$behavior` | ãã ã®ããŒã¿ïŒ3.x ã¯èªãŸãªãïŒ | ãã® state ã®æ¯ãèãã®èšå® | 3.x ãåãããŠããèšå®ãšå€ãéããšãã4.0 ãæãã圢ã®ãšãã ãèŠå |
|
|
2872
|
+
| state ã®ã㌠`$features` | ãã ã®ããŒã¿ | ãã® state ãèŠãåŸä»ã | 4.0 ãæãã圢ïŒåŸä»ãã®ååã®é
åã§ãªãïŒã®ãšãã ãèŠå |
|
|
2873
|
+
| `$watch`ã»`$listKeys`ã»`$renderedCallback`ïŒ`$updatedCallback`ïŒã宣èšããããªã¥ãŒã ïŒ`<wcs-state mount>`ïŒ | ããŠã³ããã¹ã«çžå¯Ÿã§åã | æ¥ãæšããªãïŒ`console.error`ïŒ | ã«ãŒãã® state ãžç§»ãããã¹ã絶察ã«ãã |
|
|
2874
|
+
| ã«ãŒãã®ãã¹ã泚å
¥ããããªã¥ãŒã ïŒ`data-wcs="state.<key>: âŠ"`ïŒ | åãïŒ3.1ïŒ | æ¥ãæšããªãïŒ`console.error`ïŒ | ã«ãŒãã® getter ã§ã«ãŒãã®ãã¹ãèªã |
|
|
2875
|
+
| `$behavior` / `$features` ã宣èšããããªã¥ãŒã | ãã ã®ããŒã¿ãšããŠæ¥ãæš | æ¥ãæšããªãïŒ`console.error`ïŒ | ã«ãŒãã® state ã«æžã |
|
|
2876
|
+
|
|
2877
|
+
åºãæç¹: 宣èšããŒã®æ§åã»`$scan`ã»`$behavior`ã»`$features` 㯠state ãªããžã§ã¯ããèªã¿èŸŒãã ãšãïŒããªã¥ãŒã ã¯æ¥ãæšãããšãïŒããã£ã«ã¿ã®æ§åãš `substr` ã¯ããã䜿ããã€ã³ãã£ã³ã°ãçµã¿ç«ãŠããšãã`bootstrapState` ã®èšå®ã¯ `bootstrapState()` ãåŒãã ãšãã`$trackDependency` / `$untrackDependency` ã¯ãããèªãã ãšããæ€æ»ã¯æ§ãæžãæ¹ã解決ããç®æã«ããã®ã§ãæ£åŒåã§æžããããŒãžã®åãã¯äœãå€ãããŸãããå®è¡ãããã®ã®å·®ã¯ããã£ã«ã¿ãçµã¿ç«ãŠããšããš `$dependOn` / `$untracked` ãèªããšãã®æ¯èŒ 1 ã€ãã€ã§ãèšæž¬ã§ããå·®ã¯ãããŸããã
|
|
2878
|
+
|
|
2879
|
+
èŠåã¯å
šéšå
¥ãã®å
¥å£ïŒ`@wcstack/state` ãš `/auto`ïŒã ããæã¡ãŸããåå²ã®å
¥å£ïŒ`@wcstack/state/core` ãš `features/*`ïŒã®ããŒãžã«ã¯åºãŸããããã以å€ã®åãæ¿ãã¯ãããŸããïŒ2.6 ãšåãïŒãèŠåã¯æ§ãæžãæ¹ã«å®éã«å±ããçµè·¯ã§ã ãåºãã®ã§ãã³ã³ãœãŒã«ãéãã§ããããŒãžãéããªãã£ãçµè·¯ã«ã€ããŠã¯äœãåãããŸããã`npx @wcstack/lint <file>` ãš VS Code æ¡åŒµã¯æ§åãéçã«å ±åããŸãïŒ`wcs/name-alias`ãinfoã3.2 ããïŒã
|
|
2880
|
+
|
|
2881
|
+
`$behavior` ãžç§»ã 3 ã€ã®èšå®ã¯ãããŒãžãæž¡ããŠããéã¯èŠåãåºç¶ããŸãã3.x ã¯ãã®èšå®ã `bootstrapState` ããããèªãŸãªãã®ã§ãäžããåã«å€ãããšããã¯ãããŸããã`$behavior` ãå
ã«æžããŠã害ã¯ãªãã3.x ãåãããŠããèšå®ãšç
§ããåãããŠæ€æ»ãããŸãã4.0 ã®èŠåã®ãã¡ 1 ã€ã¯ 3.5 ã§èŠåããŸãã: åã»ããïŒåæåæžã¿ã®èŠçŽ ãžã® `setInitialState()`ïŒã§ `$behavior` ãå€ããããšã¯ã§ããã4.0 ã¯æããŸãïŒ#45ïŒãèŠçŽ ãäœãçŽããŠãã ããã
|
|
2882
|
+
|
|
2883
|
+
`on*#direct:` 㯠3.x ã§ããæžããŸãã4.0 㯠`on*:` ãã«ãŒããžå§è²ããèŠçŽ ã«çŽæ¥ä»ãã修食å `#direct` ãè¶³ããŸãã3.x ã¯ã©ã® `on*:` ãèŠçŽ ã«ä»ãã`#direct` ã¯äœãèšããã«åãåããŸããèŠçŽ ã«ä»ãããšãèŠãæçžã«ã¯ä»ããæžããŠãããŸã: `onclick#direct,stop:` ã¯ç¥å
ã«ä»ããèªåã®ãªã¹ããŒãæ¢ããç¥å
ã `stopPropagation()` ããŠããã³ãã©ã¯åŒã°ããŸãã
|
|
2884
|
+
|
|
2819
2885
|
## èšå®
|
|
2820
2886
|
|
|
2821
2887
|
`bootstrapState()` ã«éšåçãªèšå®ãªããžã§ã¯ããæž¡ããŸãïŒ
|
|
@@ -2825,8 +2891,7 @@ import { bootstrapState } from '@wcstack/state';
|
|
|
2825
2891
|
|
|
2826
2892
|
bootstrapState({
|
|
2827
2893
|
locale: 'ja-JP',
|
|
2828
|
-
|
|
2829
|
-
enableMustache: false,
|
|
2894
|
+
bindAttributeName: 'data-wcs',
|
|
2830
2895
|
tagNames: { state: 'my-state' },
|
|
2831
2896
|
});
|
|
2832
2897
|
```
|
|
@@ -2839,12 +2904,14 @@ bootstrapState({
|
|
|
2839
2904
|
| `tagNames.state` | `'wcs-state'` | ç¶æ
èŠçŽ ã®ã¿ã°å |
|
|
2840
2905
|
| `tagNames.ssr` | `'wcs-ssr'` | SSR ãã€ãã¬ãŒã·ã§ã³ããŒã¿èŠçŽ ã®ã¿ã°å |
|
|
2841
2906
|
| `locale` | `<html lang>`ãç¡ããã° `'en'` | ãã±ãŒã«äŸåãã£ã«ã¿ïŒ`locale` / `date` / `time` / `datetime`ïŒã®ãã±ãŒã« â [ãã±ãŒã«](#ãã±ãŒã«)ãåç
§ |
|
|
2842
|
-
| `debug` | `false` |
|
|
2843
|
-
| `enableMustache` | `true` | `{{ }}`
|
|
2844
|
-
| `enableDirectionalInitialSync` | `true` | æ¹åèªèã®ãã€ã³ãã£ã³ã° authorityïŒ`#init=` / `#sync=` ãã€ã³ã modifierïŒâ [ãã€ã³ãã£ã³ã° authority](#ãã€ã³ãã£ã³ã°-authority-init--sync) åç
§ãæ¢å® onã`false` ã§ opt-out |
|
|
2845
|
-
| `enablePropagationContext` | `true` | ãã€ã³ãéã®å æäŒæãã©ããã³ã°ïŒecho/diamond ã®ã«ãŒã鲿¢ïŒãæ¢å® onã`false` ã§ opt-out |
|
|
2907
|
+
| `debug` | `false` | ãããã°ã¢ãŒãã4.0 ã§å€ããïŒ3.5 ã¯èŠåïŒ |
|
|
2908
|
+
| `enableMustache` | `true` | `{{ }}` æ§æã®æå¹åã4.0 ã§ state ã® `$behavior` ãžç§»ãïŒ3.5 ã¯èŠåïŒ |
|
|
2909
|
+
| `enableDirectionalInitialSync` | `true` | æ¹åèªèã®ãã€ã³ãã£ã³ã° authorityïŒ`#init=` / `#sync=` ãã€ã³ã modifierïŒâ [ãã€ã³ãã£ã³ã° authority](#ãã€ã³ãã£ã³ã°-authority-init--sync) åç
§ãæ¢å® onã`false` ã§ opt-outã4.0 ã§ state ã® `$behavior` ãžç§»ãïŒ3.5 ã¯èŠåïŒ |
|
|
2910
|
+
| `enablePropagationContext` | `true` | ãã€ã³ãéã®å æäŒæãã©ããã³ã°ïŒecho/diamond ã®ã«ãŒã鲿¢ïŒãæ¢å® onã`false` ã§ opt-outã4.0 ã§å€ããïŒ3.5 ã¯èŠåïŒ |
|
|
2846
2911
|
| `enableContractAnalyzer` | `false` | opt-in ã®éçºæ contract analyzerïŒ`analyzeContract` ãå
¬éïŒ |
|
|
2847
|
-
| `sameValueGuard` | `true` | çŸåšå€ãš `Object.is` ã§åå€ãªããªããã£ãæžã蟌ã¿ã enqueue åã«èœãšã â ãã€ã³ãã£ã³ã°ãš `$watch` ã¯å®è³ªãå€åæã®ã¿ãçºç«ããïŒåç
§åã¯åžžã«éãïŒã`false` ã§å倿žã蟌ã¿ãéãã`$watch` ã® `prev` 㯠`undefined`
|
|
2912
|
+
| `sameValueGuard` | `true` | çŸåšå€ãš `Object.is` ã§åå€ãªããªããã£ãæžã蟌ã¿ã enqueue åã«èœãšã â ãã€ã³ãã£ã³ã°ãš `$watch` ã¯å®è³ªãå€åæã®ã¿ãçºç«ããïŒåç
§åã¯åžžã«éãïŒã`false` ã§å倿žã蟌ã¿ãéãã`$watch` ã® `prev` 㯠`undefined` ã«ãªãã4.0 ã§ state ã® `$behavior` ãžç§»ãïŒ3.5 ã¯èŠåïŒ |
|
|
2913
|
+
|
|
2914
|
+
4.0 㯠`debug`ã»`commentTextPrefix`ã»`enablePropagationContext` ãå€ãã`enableMustache`ã»`enableDirectionalInitialSync`ã»`sameValueGuard` ã state ã® `$behavior` ãžç§»ããŸãã3.5 ã¯ããŒãžãããããæž¡ããšèŠåããŸã â [4.0 ãžã®æºå](#40-ãžã®æºåwcsv4-migration)ãåç
§ã
|
|
2848
2915
|
|
|
2849
2916
|
### ãã±ãŒã«
|
|
2850
2917
|
|
|
@@ -3075,7 +3142,7 @@ bootstrapState();
|
|
|
3075
3142
|
| 屿§ | 説æ |
|
|
3076
3143
|
|---|---|
|
|
3077
3144
|
| `mount` | ãã® state ãã«ãŒãããªãŒãž**ããªã¥ãŒã **ãšããŠæ¥ãæšããéçããªãŒãã¹ïŒv2 â æ€å»ããã `name` 屿§ã®åŸç¶ãããªãŒã¯ 1 root ã« 1 æ¬ïŒ |
|
|
3078
|
-
| `state` | `<script type="application/json">` èŠçŽ ã® ID |
|
|
3145
|
+
| `state` | document å
ã® `<script type="application/json">` èŠçŽ ã® IDïŒ`document.getElementById` ã§æ¢ãã®ã§ãshadow root ã®äžã® script ã¯èŠã€ãããŸããïŒ |
|
|
3079
3146
|
| `src` | `.json` ãŸã㯠`.js` ãã¡ã€ã«ã® URL |
|
|
3080
3147
|
| `json` | ã€ã³ã©ã€ã³ JSON æåå |
|
|
3081
3148
|
| `bind-component` | Web Component ãã€ã³ãã£ã³ã°ã®ããããã£å |
|
|
@@ -3086,7 +3153,7 @@ bootstrapState();
|
|
|
3086
3153
|
| ãããã㣠/ ã¡ãœãã | 説æ |
|
|
3087
3154
|
|---|---|
|
|
3088
3155
|
| `initializePromise` | ç¶æ
ã®å®å
šãªåæåæã«è§£æ±ºããã Promise ââ **åæåã«å€±æãããšãã解決**ããŸãïŒ1 èŠçŽ ã®å€±æãããŒãžã®ä»ã®ãã€ã³ãã£ã³ã°ãæ¢ããªãããïŒããšã©ãŒã¯ `connectedCallbackPromise` ã«å±ããŸã |
|
|
3089
|
-
| `connectedCallbackPromise` | `connectedCallback` ã®å®äºïŒstate ã®ããŒããš `$connectedCallback` ã®å®è¡ïŒã§è§£æ±ºããã Promise â ãã¹ãã®ã¬ã·ãã await ãããã®ã**ã«ãŒã**èŠçŽ ãåæåã«å€±æãããšã**å
ã®ãšã©ãŒã®ãŸãŸ reject** ãã`console.error` ã«ã 1 ä»¶å ±åããŸãïŒ`$` 宣èšã®äžæ£ã»ãœãŒã¹ã®ããŒã倱æã»SSR ããŒã¿ã® merge 倱æã»DCC ã `bind-component` ã®èšå®ãšã©ãŒã»åã root node ã« 2 æ¬ç®ã®ã«ãŒã `<wcs-state>`ã2 æ¬ç®ã¯ç»é²ãããªããŸãŸèªã¿èŸŒãã state ãä¿æããã®ã§åãé€ããŠãã ãããå¥å
šãªèŠçŽ ã® DOM
|
|
3156
|
+
| `connectedCallbackPromise` | `connectedCallback` ã®å®äºïŒstate ã®ããŒããš `$connectedCallback` ã®å®è¡ïŒã§è§£æ±ºããã Promise â ãã¹ãã®ã¬ã·ãã await ãããã®ã**ã«ãŒã**èŠçŽ ãåæåã«å€±æãããšã**å
ã®ãšã©ãŒã®ãŸãŸ reject** ãã`console.error` ã«ã 1 ä»¶å ±åããŸãïŒ`$` 宣èšã®äžæ£ã»ãœãŒã¹ã®ããŒã倱æã»SSR ããŒã¿ã® merge 倱æã»DCC ã `bind-component` ã®èšå®ãšã©ãŒã»åã root node ã« 2 æ¬ç®ã®ã«ãŒã `<wcs-state>`ã2 æ¬ç®ã¯ç»é²ãããªããŸãŸèªã¿èŸŒãã state ãä¿æããã®ã§åãé€ããŠãã ãããå¥å
šãªèŠçŽ ã® DOM ç§»åã¯äºéç»é²ã§ã¯ãªããæåŠããŸããïŒããã ã 3.x ã§ã¯æ¬¡ã® 2 ã€ã®ãœãŒã¹ã倱æãšããŠæ±ããããã® Promise ã解決ããŸã: ååŸãŸãã¯ããŒã¹ã§ããªã `src="*.json"`ïŒURL ãšãHTTP ã¹ããŒã¿ã¹ãŸãã¯ãšã©ãŒã `console.error` ã«èšé²ãã空㮠state ã§å§ãŸããŸããããªã¥ãŒã ãªã `{}` ãæ¥ãæšããŸãïŒãšããã® id ã® `<script type="application/json">` ã document ã«ç¡ã `state="<id>"`ïŒ`console.warn` ã 1 ååºãã空㮠state ã§å§ãŸããŸããæ¢ãã®ã¯ `document.getElementById` ãªã®ã§ãshadow root ã®äžã® script ã¯èŠã€ãããŸããïŒã4.0 ã¯ã©ã¡ãã®å Žåã reject ããŸãã`state=` ã«ã€ããŠã¯èŠçŽ èªèº«ã®ã«ãŒããå
ã«ã次㫠document ãæ¢ããã©ã¡ãã«ãç¡ããšãã ã reject ããŸãã**ããªã¥ãŒã **ïŒ`<wcs-state mount="âŠ">`ïŒã¯ãã® Promise ã**æåŠããŸãã** ââ ããªã¥ãŒã ã®å€±æã¯è§£æ±ºããçš®é¡ã«ãã£ãŠã¯èªåã§ã¯äœãå ±åããŸããããã®å Žåãšã©ãŒã¯ã«ã¹ã¿ã èŠçŽ ãªã¢ã¯ã·ã§ã³ãæšãŠã `connectedCallback` ã®æ»ã Promise ãšããŠåºãŠããããã©ãŠã¶ã®ã³ã³ãœãŒã«ã«ã¯ "Uncaught (in promise)" ãšåºãŸãããpromise ãåŸ
ã€åŽïŒãã¹ãã®ã¬ã·ãã `renderToString()`ïŒã«ã¯å±ããŸãããããŒãäžã«åæãããèŠçŽ ã¯ reject ããŸãã ââ ãã®æ¥ç¶ãé»ã£ãŠçµããã ãã§ãä»ãçŽãã°ïŒè¡ããŒã«ïŒéåžžã©ããåæåããŠè§£æ±ºããŸããåã
ã®å€±æç®æã®æ£ç¢ºãªæå㯠`__tests__/integration.initFailureDiagnostics.test.ts` ãåºå®ããŠããŸã |
|
|
3090
3157
|
| `listPaths` | `for` ã«ãŒãã§äœ¿çšããããã¹ã® Set |
|
|
3091
3158
|
| `getterPaths` | getter ãšããŠå®çŸ©ããããã¹ã® Set |
|
|
3092
3159
|
| `setterPaths` | setter ãšããŠå®çŸ©ããããã¹ã® Set |
|
|
@@ -3222,7 +3289,7 @@ const html = await renderToString(template, {
|
|
|
3222
3289
|
|---------|------|
|
|
3223
3290
|
| **ãµãŒããŒ** | `renderToString()` ã happy-dom ã§ãã³ãã¬ãŒããå®è¡ã`$connectedCallback`ïŒ`fetch()` å«ãïŒãå®è¡ããå
šãã€ã³ãã£ã³ã°ãé©çšããã€ãã¬ãŒã·ã§ã³ããŒã¿ãå«ã `<wcs-ssr>` èŠçŽ ä»ãã®ã¬ã³ããªã³ã°æžã¿ HTML ãåºå |
|
|
3224
3291
|
| **ã¯ã©ã€ã¢ã³ã** | `<wcs-state enable-ssr>` ã `<wcs-ssr>` ã® JSON ããç¶æ
ãããŒãã`$connectedCallback` ãã¹ãããã`hydrateBindings()` ãæ¢åã® DOM ã«ãªã¢ã¯ãã£ããã£ãæ¥ç¶ |
|
|
3225
|
-
| **ãã©ãŒã«ããã¯** |
|
|
3292
|
+
| **ãã©ãŒã«ããã¯** | ãµãŒããŒ/ã¯ã©ã€ã¢ã³ãã®ããŒãžã§ã³äžäžèŽæããŸãã¯ãµãŒããŒãæãã `for:` ã®è¡ãå¥ã® `for:` / `if:` / `elseif:` / `else:` ãããã¯ã®äžã«ãããšãïŒãã®ãã€ãã¬ãŒã·ã§ã³ã¯æ¢ç¥ã®å¶éïŒãSSR DOM ãã¯ãªãŒã³ã¢ããã㊠`buildBindings()` ã§ãã«ã¯ã©ã€ã¢ã³ããµã€ãã¬ã³ããªã³ã°ãå®è¡ãã©ã¡ããçç±ã `console.warn` ã§ 1 åç¥ããã |
|
|
3226
3293
|
|
|
3227
3294
|
### `enable-ssr` ã®åäœ
|
|
3228
3295
|
|