eslint-plugin-effector 0.10.3 → 0.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +2 -55
  2. package/docs/.vitepress/config.js +58 -0
  3. package/docs/.vitepress/dist/404.html +19 -0
  4. package/docs/.vitepress/dist/assets/app.c5be1f68.js +7 -0
  5. package/docs/.vitepress/dist/assets/index.md.79361962.js +1 -0
  6. package/docs/.vitepress/dist/assets/index.md.79361962.lean.js +1 -0
  7. package/docs/.vitepress/dist/assets/inter-cyrillic-ext.0877b0d9.woff2 +0 -0
  8. package/docs/.vitepress/dist/assets/inter-cyrillic.f8750142.woff2 +0 -0
  9. package/docs/.vitepress/dist/assets/inter-greek-ext.3e6f6728.woff2 +0 -0
  10. package/docs/.vitepress/dist/assets/inter-greek.117e1956.woff2 +0 -0
  11. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 +0 -0
  12. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.ea42a392.woff2 +0 -0
  13. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.4fbe9427.woff2 +0 -0
  14. package/docs/.vitepress/dist/assets/inter-italic-greek.8f4463c4.woff2 +0 -0
  15. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.bd8920cc.woff2 +0 -0
  16. package/docs/.vitepress/dist/assets/inter-italic-latin.bd3b6f56.woff2 +0 -0
  17. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.6ce511fb.woff2 +0 -0
  18. package/docs/.vitepress/dist/assets/inter-latin-ext.7cc429bc.woff2 +0 -0
  19. package/docs/.vitepress/dist/assets/inter-latin.4fe6132f.woff2 +0 -0
  20. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.e75737ce.woff2 +0 -0
  21. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.5f2c6c8c.woff2 +0 -0
  22. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.ab0619bc.woff2 +0 -0
  23. package/docs/.vitepress/dist/assets/inter-roman-greek.d5a6d92a.woff2 +0 -0
  24. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.0030eebd.woff2 +0 -0
  25. package/docs/.vitepress/dist/assets/inter-roman-latin.2ed14f66.woff2 +0 -0
  26. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.14ce25a6.woff2 +0 -0
  27. package/docs/.vitepress/dist/assets/inter-vietnamese.2c644a25.woff2 +0 -0
  28. package/docs/.vitepress/dist/assets/presets___future.md.6542932d.js +1 -0
  29. package/docs/.vitepress/dist/assets/presets___future.md.6542932d.lean.js +1 -0
  30. package/docs/.vitepress/dist/assets/presets___index.md.af77aa24.js +1 -0
  31. package/docs/.vitepress/dist/assets/presets___index.md.af77aa24.lean.js +1 -0
  32. package/docs/.vitepress/dist/assets/presets___list.md.86dea8af.js +1 -0
  33. package/docs/.vitepress/dist/assets/presets___list.md.86dea8af.lean.js +1 -0
  34. package/docs/.vitepress/dist/assets/presets___patronum.md.9f3ad5fe.js +1 -0
  35. package/docs/.vitepress/dist/assets/presets___patronum.md.9f3ad5fe.lean.js +1 -0
  36. package/docs/.vitepress/dist/assets/presets___react.md.dc2cc31a.js +1 -0
  37. package/docs/.vitepress/dist/assets/presets___react.md.dc2cc31a.lean.js +1 -0
  38. package/docs/.vitepress/dist/assets/presets___recommended.md.af826424.js +1 -0
  39. package/docs/.vitepress/dist/assets/presets___recommended.md.af826424.lean.js +1 -0
  40. package/docs/.vitepress/dist/assets/presets___scope.md.e5dd9837.js +1 -0
  41. package/docs/.vitepress/dist/assets/presets___scope.md.e5dd9837.lean.js +1 -0
  42. package/docs/.vitepress/dist/assets/presets_future.md.2962dd38.js +1 -0
  43. package/docs/.vitepress/dist/assets/presets_future.md.2962dd38.lean.js +1 -0
  44. package/docs/.vitepress/dist/assets/presets_index.md.c3c40451.js +1 -0
  45. package/docs/.vitepress/dist/assets/presets_index.md.c3c40451.lean.js +1 -0
  46. package/docs/.vitepress/dist/assets/presets_patronum.md.58445698.js +1 -0
  47. package/docs/.vitepress/dist/assets/presets_patronum.md.58445698.lean.js +1 -0
  48. package/docs/.vitepress/dist/assets/presets_react.md.fda31c90.js +1 -0
  49. package/docs/.vitepress/dist/assets/presets_react.md.fda31c90.lean.js +1 -0
  50. package/docs/.vitepress/dist/assets/presets_recommended.md.396d0c01.js +1 -0
  51. package/docs/.vitepress/dist/assets/presets_recommended.md.396d0c01.lean.js +1 -0
  52. package/docs/.vitepress/dist/assets/presets_scope.md.55da3541.js +1 -0
  53. package/docs/.vitepress/dist/assets/presets_scope.md.55da3541.lean.js +1 -0
  54. package/docs/.vitepress/dist/assets/rules___index.md.c943fc87.js +1 -0
  55. package/docs/.vitepress/dist/assets/rules___index.md.c943fc87.lean.js +1 -0
  56. package/docs/.vitepress/dist/assets/rules___list.md.ba316f20.js +1 -0
  57. package/docs/.vitepress/dist/assets/rules___list.md.ba316f20.lean.js +1 -0
  58. package/docs/.vitepress/dist/assets/rules_enforce-effect-naming-convention.md.09e5af2c.js +6 -0
  59. package/docs/.vitepress/dist/assets/rules_enforce-effect-naming-convention.md.09e5af2c.lean.js +1 -0
  60. package/docs/.vitepress/dist/assets/rules_enforce-gate-naming-convention.md.5f3af41a.js +6 -0
  61. package/docs/.vitepress/dist/assets/rules_enforce-gate-naming-convention.md.5f3af41a.lean.js +1 -0
  62. package/docs/.vitepress/dist/assets/rules_enforce-store-naming-convention.md.db33b9cb.js +26 -0
  63. package/docs/.vitepress/dist/assets/rules_enforce-store-naming-convention.md.db33b9cb.lean.js +1 -0
  64. package/docs/.vitepress/dist/assets/rules_index.md.3e915bb2.js +1 -0
  65. package/docs/.vitepress/dist/assets/rules_index.md.3e915bb2.lean.js +1 -0
  66. package/docs/.vitepress/dist/assets/rules_keep-options-order.md.5345093b.js +16 -0
  67. package/docs/.vitepress/dist/assets/rules_keep-options-order.md.5345093b.lean.js +1 -0
  68. package/docs/.vitepress/dist/assets/rules_mandatory-scope-binding.md.aff04a66.js +14 -0
  69. package/docs/.vitepress/dist/assets/rules_mandatory-scope-binding.md.aff04a66.lean.js +1 -0
  70. package/docs/.vitepress/dist/assets/rules_no-ambiguity-target.md.7fde769b.js +7 -0
  71. package/docs/.vitepress/dist/assets/rules_no-ambiguity-target.md.7fde769b.lean.js +1 -0
  72. package/docs/.vitepress/dist/assets/rules_no-duplicate-on.md.09525e1d.js +11 -0
  73. package/docs/.vitepress/dist/assets/rules_no-duplicate-on.md.09525e1d.lean.js +1 -0
  74. package/docs/.vitepress/dist/assets/rules_no-forward.md.2becbf92.js +11 -0
  75. package/docs/.vitepress/dist/assets/rules_no-forward.md.2becbf92.lean.js +1 -0
  76. package/docs/.vitepress/dist/assets/rules_no-getState.md.665d0467.js +15 -0
  77. package/docs/.vitepress/dist/assets/rules_no-getState.md.665d0467.lean.js +1 -0
  78. package/docs/.vitepress/dist/assets/rules_no-guard.md.5056c7b6.js +22 -0
  79. package/docs/.vitepress/dist/assets/rules_no-guard.md.5056c7b6.lean.js +1 -0
  80. package/docs/.vitepress/dist/assets/rules_no-patronum-debug.md.19f444fb.js +14 -0
  81. package/docs/.vitepress/dist/assets/rules_no-patronum-debug.md.19f444fb.lean.js +1 -0
  82. package/docs/.vitepress/dist/assets/rules_no-unnecessary-combination.md.e7221074.js +20 -0
  83. package/docs/.vitepress/dist/assets/rules_no-unnecessary-combination.md.e7221074.lean.js +1 -0
  84. package/docs/.vitepress/dist/assets/rules_no-unnecessary-duplication.md.3a99556b.js +27 -0
  85. package/docs/.vitepress/dist/assets/rules_no-unnecessary-duplication.md.3a99556b.lean.js +1 -0
  86. package/docs/.vitepress/dist/assets/rules_no-useless-methods.md.e13dc29f.js +9 -0
  87. package/docs/.vitepress/dist/assets/rules_no-useless-methods.md.e13dc29f.lean.js +1 -0
  88. package/docs/.vitepress/dist/assets/rules_no-watch.md.72ac4d86.js +35 -0
  89. package/docs/.vitepress/dist/assets/rules_no-watch.md.72ac4d86.lean.js +1 -0
  90. package/docs/.vitepress/dist/assets/rules_prefer-sample-over-forward-with-mapping.md.e5a7f363.js +22 -0
  91. package/docs/.vitepress/dist/assets/rules_prefer-sample-over-forward-with-mapping.md.e5a7f363.lean.js +1 -0
  92. package/docs/.vitepress/dist/assets/rules_prefer-useUnit.md.2d27cecd.js +28 -0
  93. package/docs/.vitepress/dist/assets/rules_prefer-useUnit.md.2d27cecd.lean.js +1 -0
  94. package/docs/.vitepress/dist/assets/rules_strict-effect-handlers.md.2f8965e2.js +23 -0
  95. package/docs/.vitepress/dist/assets/rules_strict-effect-handlers.md.2f8965e2.lean.js +1 -0
  96. package/docs/.vitepress/dist/assets/style.9e7714f0.css +1 -0
  97. package/docs/.vitepress/dist/hashmap.json +1 -0
  98. package/docs/.vitepress/dist/index.html +20 -0
  99. package/docs/.vitepress/dist/presets/__future.html +20 -0
  100. package/docs/.vitepress/dist/presets/__index.html +20 -0
  101. package/docs/.vitepress/dist/presets/__list.html +20 -0
  102. package/docs/.vitepress/dist/presets/__patronum.html +20 -0
  103. package/docs/.vitepress/dist/presets/__react.html +20 -0
  104. package/docs/.vitepress/dist/presets/__recommended.html +20 -0
  105. package/docs/.vitepress/dist/presets/__scope.html +20 -0
  106. package/docs/.vitepress/dist/presets/future.html +20 -0
  107. package/docs/.vitepress/dist/presets/index.html +20 -0
  108. package/docs/.vitepress/dist/presets/patronum.html +20 -0
  109. package/docs/.vitepress/dist/presets/react.html +20 -0
  110. package/docs/.vitepress/dist/presets/recommended.html +20 -0
  111. package/docs/.vitepress/dist/presets/scope.html +20 -0
  112. package/docs/.vitepress/dist/rules/__index.html +20 -0
  113. package/docs/.vitepress/dist/rules/__list.html +20 -0
  114. package/docs/.vitepress/dist/rules/enforce-effect-naming-convention.html +25 -0
  115. package/docs/.vitepress/dist/rules/enforce-gate-naming-convention.html +25 -0
  116. package/docs/.vitepress/dist/rules/enforce-store-naming-convention.html +45 -0
  117. package/docs/.vitepress/dist/rules/index.html +20 -0
  118. package/docs/.vitepress/dist/rules/keep-options-order.html +35 -0
  119. package/docs/.vitepress/dist/rules/mandatory-scope-binding.html +33 -0
  120. package/docs/.vitepress/dist/rules/no-ambiguity-target.html +26 -0
  121. package/docs/.vitepress/dist/rules/no-duplicate-on.html +30 -0
  122. package/docs/.vitepress/dist/rules/no-forward.html +30 -0
  123. package/docs/.vitepress/dist/rules/no-getState.html +34 -0
  124. package/docs/.vitepress/dist/rules/no-guard.html +41 -0
  125. package/docs/.vitepress/dist/rules/no-patronum-debug.html +33 -0
  126. package/docs/.vitepress/dist/rules/no-unnecessary-combination.html +39 -0
  127. package/docs/.vitepress/dist/rules/no-unnecessary-duplication.html +46 -0
  128. package/docs/.vitepress/dist/rules/no-useless-methods.html +28 -0
  129. package/docs/.vitepress/dist/rules/no-watch.html +54 -0
  130. package/docs/.vitepress/dist/rules/prefer-sample-over-forward-with-mapping.html +41 -0
  131. package/docs/.vitepress/dist/rules/prefer-useUnit.html +47 -0
  132. package/docs/.vitepress/dist/rules/strict-effect-handlers.html +42 -0
  133. package/docs/.vitepress/theme/custom.css +8 -0
  134. package/docs/.vitepress/theme/index.js +4 -0
  135. package/docs/public/apple-touch-icon.png +0 -0
  136. package/docs/public/comet-192.png +0 -0
  137. package/docs/public/comet-512.png +0 -0
  138. package/docs/public/comet.svg +228 -0
  139. package/docs/public/favicon.ico +0 -0
  140. package/docs/public/manifest.webmanifest +6 -0
  141. package/package.json +1 -1
  142. package/rules/enforce-store-naming-convention/enforce-store-naming-convention.js +6 -6
  143. package/utils/create-link-to-rule.js +1 -1
@@ -0,0 +1,20 @@
1
+ import{_ as s,c as n,o as a,b as o}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/no-unnecessary-combination","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-unnecessary-combination.md","lastUpdated":null}'),l={name:"rules/no-unnecessary-combination.md"},p=o(`<h1 id="effector-no-unnecessary-combination" tabindex="-1">effector/no-unnecessary-combination <a class="header-anchor" href="#effector-no-unnecessary-combination" aria-hidden="true">#</a></h1><p>Call of <code>combine</code>/<code>merge</code> in <code>clock</code>/<code>source</code> is unnecessary. It can be omitted from source code.</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#676E95;">// \u{1F44E} can be simplified</span></span>
2
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> badEventOne </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
3
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">combine</span><span style="color:#A6ACCD;">($store1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> $store2)</span><span style="color:#89DDFF;">,</span></span>
4
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $filter</span><span style="color:#89DDFF;">,</span></span>
5
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
6
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> badEventOne </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
7
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">combine</span><span style="color:#A6ACCD;">($store1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> $store2</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">store1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#A6ACCD;">store2</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> (</span><span style="color:#89DDFF;">{</span></span>
8
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">x</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> store1</span><span style="color:#89DDFF;">,</span></span>
9
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">y</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> store2</span><span style="color:#89DDFF;">,</span></span>
10
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">))</span><span style="color:#89DDFF;">,</span></span>
11
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $filter</span><span style="color:#89DDFF;">,</span></span>
12
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
13
+ <span class="line"></span>
14
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} better</span></span>
15
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> goodEventOne </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> [$store1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> $store2]</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $filter </span><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
16
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> goodEventTwo </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
17
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">x</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $store1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">x</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $store2 </span><span style="color:#89DDFF;">},</span></span>
18
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $filter</span><span style="color:#89DDFF;">,</span></span>
19
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
20
+ <span class="line"></span></code></pre></div>`,3),e=[p];function c(t,r,D,y,A,F){return a(),n("div",null,e)}const d=s(l,[["render",c]]);export{i as __pageData,d as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as n,o as a,b as o}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/no-unnecessary-combination","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-unnecessary-combination.md","lastUpdated":null}'),l={name:"rules/no-unnecessary-combination.md"},p=o("",3),e=[p];function c(t,r,D,y,A,F){return a(),n("div",null,e)}const d=s(l,[["render",c]]);export{i as __pageData,d as default};
@@ -0,0 +1,27 @@
1
+ import{_ as s,c as n,o as a,b as l}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/no-unnecessary-duplication","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-unnecessary-duplication.md","lastUpdated":null}'),p={name:"rules/no-unnecessary-duplication.md"},o=l(`<h1 id="effector-no-unnecessary-duplication" tabindex="-1">effector/no-unnecessary-duplication <a class="header-anchor" href="#effector-no-unnecessary-duplication" aria-hidden="true">#</a></h1><p>Same <code>clock</code>/<code>source</code> in <code>sample</code> and <code>guard</code> don&#39;t make sense, any of these fields can be omitted in this case.</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> $data </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createStore</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">null</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
2
+ <span class="line"></span>
3
+ <span class="line"><span style="color:#676E95;">// \u{1F44E} can be simplified</span></span>
4
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> target1 </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
5
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">source</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $data</span><span style="color:#89DDFF;">,</span></span>
6
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $data</span><span style="color:#89DDFF;">,</span></span>
7
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">fn</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
8
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length</span><span style="color:#89DDFF;">;</span></span>
9
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">},</span></span>
10
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
11
+ <span class="line"></span>
12
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} better</span></span>
13
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> target2 </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
14
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">source</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $data</span><span style="color:#89DDFF;">,</span></span>
15
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">fn</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
16
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length</span><span style="color:#89DDFF;">;</span></span>
17
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">},</span></span>
18
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
19
+ <span class="line"></span>
20
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} also nice solution</span></span>
21
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> target3 </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
22
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $data</span><span style="color:#89DDFF;">,</span></span>
23
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">fn</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
24
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length</span><span style="color:#89DDFF;">;</span></span>
25
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">},</span></span>
26
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
27
+ <span class="line"></span></code></pre></div>`,3),e=[o];function c(t,r,D,y,F,A){return a(),n("div",null,e)}const d=s(p,[["render",c]]);export{i as __pageData,d as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as n,o as a,b as l}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/no-unnecessary-duplication","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-unnecessary-duplication.md","lastUpdated":null}'),p={name:"rules/no-unnecessary-duplication.md"},o=l("",3),e=[o];function c(t,r,D,y,F,A){return a(),n("div",null,e)}const d=s(p,[["render",c]]);export{i as __pageData,d as default};
@@ -0,0 +1,9 @@
1
+ import{_ as s,c as a,o as n,b as o}from"./app.c5be1f68.js";const d=JSON.parse('{"title":"effector/no-useless-methods","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-useless-methods.md","lastUpdated":null}'),e={name:"rules/no-useless-methods.md"},l=o(`<h1 id="effector-no-useless-methods" tabindex="-1">effector/no-useless-methods <a class="header-anchor" href="#effector-no-useless-methods" aria-hidden="true">#</a></h1><p>Call of <code>gaurd</code>/<code>sample</code> without <code>target</code> or variable assignment is useless. It can be omitted from source code.</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#676E95;">// \u{1F44E} can be omitted</span></span>
2
+ <span class="line"><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> trigger</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> Boolean </span><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
3
+ <span class="line"></span>
4
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} makes sense</span></span>
5
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> target1 </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> trigger</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> Boolean </span><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
6
+ <span class="line"></span>
7
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} make sense too</span></span>
8
+ <span class="line"><span style="color:#82AAFF;">guard</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> trigger</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> Boolean</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">target</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> target2 </span><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
9
+ <span class="line"></span></code></pre></div>`,3),p=[l];function t(c,r,D,y,F,A){return n(),a("div",null,p)}const i=s(e,[["render",t]]);export{d as __pageData,i as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as a,o as n,b as o}from"./app.c5be1f68.js";const d=JSON.parse('{"title":"effector/no-useless-methods","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-useless-methods.md","lastUpdated":null}'),e={name:"rules/no-useless-methods.md"},l=o("",3),p=[l];function t(c,r,D,y,F,A){return n(),a("div",null,p)}const i=s(e,[["render",t]]);export{d as __pageData,i as default};
@@ -0,0 +1,35 @@
1
+ import{_ as s,c as n,o as a,b as l}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/no-watch","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-watch.md","lastUpdated":null}'),p={name:"rules/no-watch.md"},o=l(`<h1 id="effector-no-watch" tabindex="-1">effector/no-watch <a class="header-anchor" href="#effector-no-watch" aria-hidden="true">#</a></h1><p>Method <code>.watch</code> leads to imperative code. Try replacing it with operator (<code>sample</code>) or use the <code>target</code> parameter of the operator.</p><blockquote><p>Caution! This rule only works on projects using TypeScript.</p></blockquote><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> myFx </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEffect</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
2
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> myEvent </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEvent</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
3
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> $awesome </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createStore</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
4
+ <span class="line"></span>
5
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} good solutions</span></span>
6
+ <span class="line"><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
7
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> myFx</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">finally</span><span style="color:#89DDFF;">,</span></span>
8
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">target</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> myEvent</span><span style="color:#89DDFF;">,</span></span>
9
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span></span>
10
+ <span class="line"></span>
11
+ <span class="line"><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
12
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> myEvent</span><span style="color:#89DDFF;">,</span></span>
13
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">filter</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> Boolean</span><span style="color:#89DDFF;">,</span></span>
14
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">target</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> myFx</span><span style="color:#89DDFF;">,</span></span>
15
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span></span>
16
+ <span class="line"></span>
17
+ <span class="line"><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
18
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">clock</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> $awesome</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">updates</span><span style="color:#89DDFF;">,</span></span>
19
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">fn</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> identity</span><span style="color:#89DDFF;">,</span></span>
20
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">target</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> myEvent</span><span style="color:#89DDFF;">,</span></span>
21
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
22
+ <span class="line"></span>
23
+ <span class="line"><span style="color:#676E95;">// \u{1F44E} bad solutions</span></span>
24
+ <span class="line"><span style="color:#A6ACCD;">myFx</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">finally</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">watch</span><span style="color:#A6ACCD;">(myEvent)</span><span style="color:#89DDFF;">;</span></span>
25
+ <span class="line"></span>
26
+ <span class="line"><span style="color:#A6ACCD;">myEvent</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">watch</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">payload</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
27
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">if</span><span style="color:#F07178;"> (</span><span style="color:#82AAFF;">Boolean</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">payload</span><span style="color:#F07178;">)) </span><span style="color:#89DDFF;">{</span></span>
28
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#82AAFF;">myFx</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">payload</span><span style="color:#F07178;">)</span><span style="color:#89DDFF;">;</span></span>
29
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
30
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
31
+ <span class="line"></span>
32
+ <span class="line"><span style="color:#A6ACCD;">$awesome</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">updates</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">watch</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">data</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
33
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#82AAFF;">myEvent</span><span style="color:#F07178;">(</span><span style="color:#82AAFF;">identity</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">data</span><span style="color:#F07178;">))</span><span style="color:#89DDFF;">;</span></span>
34
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
35
+ <span class="line"></span></code></pre></div>`,4),e=[o];function t(c,r,y,D,F,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as n,o as a,b as l}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/no-watch","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-watch.md","lastUpdated":null}'),p={name:"rules/no-watch.md"},o=l("",4),e=[o];function t(c,r,y,D,F,A){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
@@ -0,0 +1,22 @@
1
+ import{_ as s,c as n,o as a,b as p}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/prefer-sample-over-forward-with-mapping","description":"","frontmatter":{},"headers":[],"relativePath":"rules/prefer-sample-over-forward-with-mapping.md","lastUpdated":null}'),l={name:"rules/prefer-sample-over-forward-with-mapping.md"},o=p(`<h1 id="effector-prefer-sample-over-forward-with-mapping" tabindex="-1">effector/prefer-sample-over-forward-with-mapping <a class="header-anchor" href="#effector-prefer-sample-over-forward-with-mapping" aria-hidden="true">#</a></h1><p>Prefer <code>sample</code> over <code>forward</code> with <code>.map</code>/<code>.prepend</code>.</p><div class="language-js"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki"><code><span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> eventOne </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEvent</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
2
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> eventTwo </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEvent</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
3
+ <span class="line"></span>
4
+ <span class="line"><span style="color:#676E95;">// \u{1F44E} looks weird</span></span>
5
+ <span class="line"><span style="color:#82AAFF;">forward</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
6
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">from</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> eventOne</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">map</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">items</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> items</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length)</span><span style="color:#89DDFF;">,</span></span>
7
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">to</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> eventTwo</span><span style="color:#89DDFF;">,</span></span>
8
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
9
+ <span class="line"></span>
10
+ <span class="line"><span style="color:#676E95;">// \u{1F44E} weird too</span></span>
11
+ <span class="line"><span style="color:#82AAFF;">forward</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
12
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">from</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> eventOne</span><span style="color:#89DDFF;">,</span></span>
13
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">to</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> eventTwo</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">prepend</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">items</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> items</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length)</span><span style="color:#89DDFF;">,</span></span>
14
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
15
+ <span class="line"></span>
16
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} better</span></span>
17
+ <span class="line"><span style="color:#82AAFF;">sample</span><span style="color:#A6ACCD;">(</span><span style="color:#89DDFF;">{</span></span>
18
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">source</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> eventOne</span><span style="color:#89DDFF;">,</span></span>
19
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">fn</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">items</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> items</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length</span><span style="color:#89DDFF;">,</span></span>
20
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">target</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> eventTwo</span><span style="color:#89DDFF;">,</span></span>
21
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
22
+ <span class="line"></span></code></pre></div><p>\u{1F4A1} Tip: It could be superseded by <a href="/rules/no-forward.html">no-forward</a>.</p>`,4),e=[o];function r(t,c,D,A,y,F){return a(),n("div",null,e)}const d=s(l,[["render",r]]);export{i as __pageData,d as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as n,o as a,b as p}from"./app.c5be1f68.js";const i=JSON.parse('{"title":"effector/prefer-sample-over-forward-with-mapping","description":"","frontmatter":{},"headers":[],"relativePath":"rules/prefer-sample-over-forward-with-mapping.md","lastUpdated":null}'),l={name:"rules/prefer-sample-over-forward-with-mapping.md"},o=p("",4),e=[o];function r(t,c,D,A,y,F){return a(),n("div",null,e)}const d=s(l,[["render",r]]);export{i as __pageData,d as default};
@@ -0,0 +1,28 @@
1
+ import{_ as s,c as n,o as a,b as l}from"./app.c5be1f68.js";const C=JSON.parse('{"title":"effector/prefer-useUnit","description":"","frontmatter":{},"headers":[],"relativePath":"rules/prefer-useUnit.md","lastUpdated":null}'),o={name:"rules/prefer-useUnit.md"},p=l(`<h1 id="effector-prefer-useunit" tabindex="-1">effector/prefer-useUnit <a class="header-anchor" href="#effector-prefer-useunit" aria-hidden="true">#</a></h1><p><code>useUnit</code> is a brand-new hook which allows you to bind stores, events, and effects to React render cycle.</p><p>It is preferable than <code>useStore</code>/<code>useEvents</code>:</p><ul><li>it enables store updates batching, which can significantly increase React performance</li><li>it does not have name collision with future React <code>useEvent</code> internal hook</li><li>it has more explicit naming, old <code>useEvent</code> accepts events and effect, so its name is a bit implicit, new <code>useUnit</code> accepts any unit</li></ul><p>You can replace <code>useStore</code>/<code>useEvent</code> by <code>useUnit</code> as is or replace all old hooks with only one <code>useUnit</code></p><div class="language-tsx"><button title="Copy Code" class="copy"></button><span class="lang">tsx</span><pre class="shiki"><code><span class="line"><span style="color:#676E95;">// \u{1F44E} old approach</span></span>
2
+ <span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">OldComponent</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
3
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">const</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">value</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">useStore</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">$value</span><span style="color:#F07178;">)</span><span style="color:#89DDFF;">;</span></span>
4
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">const</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">eventFn</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">useEvent</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">event</span><span style="color:#F07178;">)</span><span style="color:#89DDFF;">;</span></span>
5
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">const</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">effectFn</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">useEvent</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">effectFx</span><span style="color:#F07178;">)</span><span style="color:#89DDFF;">;</span></span>
6
+ <span class="line"></span>
7
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">return</span><span style="color:#F07178;"> (</span></span>
8
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;&gt;</span></span>
9
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">h1</span><span style="color:#89DDFF;">&gt;{</span><span style="color:#A6ACCD;">value</span><span style="color:#89DDFF;">}&lt;/</span><span style="color:#F07178;">h1</span><span style="color:#89DDFF;">&gt;</span></span>
10
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">onClick</span><span style="color:#89DDFF;">={</span><span style="color:#A6ACCD;">eventFn</span><span style="color:#89DDFF;">}&gt;</span><span style="color:#A6ACCD;">Call event</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;">&gt;</span></span>
11
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">onClick</span><span style="color:#89DDFF;">={</span><span style="color:#A6ACCD;">effectFn</span><span style="color:#89DDFF;">}&gt;</span><span style="color:#A6ACCD;">Call effect</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;">&gt;</span></span>
12
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;/&gt;</span></span>
13
+ <span class="line"><span style="color:#F07178;"> )</span><span style="color:#89DDFF;">;</span></span>
14
+ <span class="line"><span style="color:#89DDFF;">}</span></span>
15
+ <span class="line"></span>
16
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} new approach</span></span>
17
+ <span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">NewComponent</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
18
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">const</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">value</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">eventFn</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">effectFn</span><span style="color:#89DDFF;">]</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">useUnit</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">$value</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">event</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">effectFx</span><span style="color:#F07178;">)</span><span style="color:#89DDFF;">;</span></span>
19
+ <span class="line"></span>
20
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">return</span><span style="color:#F07178;"> (</span></span>
21
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;&gt;</span></span>
22
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">h1</span><span style="color:#89DDFF;">&gt;{</span><span style="color:#A6ACCD;">value</span><span style="color:#89DDFF;">}&lt;/</span><span style="color:#F07178;">h1</span><span style="color:#89DDFF;">&gt;</span></span>
23
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">onClick</span><span style="color:#89DDFF;">={</span><span style="color:#A6ACCD;">eventFn</span><span style="color:#89DDFF;">}&gt;</span><span style="color:#A6ACCD;">Call event</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;">&gt;</span></span>
24
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">onClick</span><span style="color:#89DDFF;">={</span><span style="color:#A6ACCD;">effectFn</span><span style="color:#89DDFF;">}&gt;</span><span style="color:#A6ACCD;">Call effect</span><span style="color:#89DDFF;">&lt;/</span><span style="color:#F07178;">button</span><span style="color:#89DDFF;">&gt;</span></span>
25
+ <span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;/&gt;</span></span>
26
+ <span class="line"><span style="color:#F07178;"> )</span><span style="color:#89DDFF;">;</span></span>
27
+ <span class="line"><span style="color:#89DDFF;">}</span></span>
28
+ <span class="line"></span></code></pre></div>`,6),e=[p];function t(c,r,F,y,D,i){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{C as __pageData,u as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as n,o as a,b as l}from"./app.c5be1f68.js";const C=JSON.parse('{"title":"effector/prefer-useUnit","description":"","frontmatter":{},"headers":[],"relativePath":"rules/prefer-useUnit.md","lastUpdated":null}'),o={name:"rules/prefer-useUnit.md"},p=l("",6),e=[p];function t(c,r,F,y,D,i){return a(),n("div",null,e)}const u=s(o,[["render",t]]);export{C as __pageData,u as default};
@@ -0,0 +1,23 @@
1
+ import{_ as s,c as a,o as n,b as l}from"./app.c5be1f68.js";const C=JSON.parse('{"title":"effector/strict-effect-handlers","description":"","frontmatter":{},"headers":[],"relativePath":"rules/strict-effect-handlers.md","lastUpdated":null}'),o={name:"rules/strict-effect-handlers.md"},p=l(`<h1 id="effector-strict-effect-handlers" tabindex="-1">effector/strict-effect-handlers <a class="header-anchor" href="#effector-strict-effect-handlers" aria-hidden="true">#</a></h1><p><a href="https://effector.dev/docs/api/effector/scope#imperative-effects-calls-with-scope" target="_blank" rel="noreferrer">Related documentation</a></p><p>When effect calls another effects then it should call only effects, not common asynchronous functions and effect calls should have <code>await</code>:</p><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#676E95;">// \u{1F44D} effect without inner effects:</span></span>
2
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> delayFx </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEffect</span><span style="color:#A6ACCD;">(</span><span style="color:#C792EA;">async</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
3
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">new</span><span style="color:#F07178;"> </span><span style="color:#FFCB6B;">Promise</span><span style="color:#F07178;">(</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">rs</span><span style="color:#89DDFF;">)</span><span style="color:#F07178;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">setTimeout</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">rs</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">80</span><span style="color:#F07178;">))</span><span style="color:#89DDFF;">;</span></span>
4
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
5
+ <span class="line"></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> authUserFx </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEffect</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
6
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> sendMessageFx </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEffect</span><span style="color:#A6ACCD;">()</span><span style="color:#89DDFF;">;</span></span>
7
+ <span class="line"></span>
8
+ <span class="line"><span style="color:#676E95;">// \u{1F44D} effect with inner effects</span></span>
9
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> sendWithAuthFx </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEffect</span><span style="color:#A6ACCD;">(</span><span style="color:#C792EA;">async</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
10
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">authUserFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
11
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">delayFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
12
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">sendMessageFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
13
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
14
+ <span class="line"></span></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki"><code><span class="line"><span style="color:#676E95;">// \u{1F44E} effect with inner effects and common async functions</span></span>
15
+ <span class="line"></span>
16
+ <span class="line"><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> sendWithAuthFx </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">createEffect</span><span style="color:#A6ACCD;">(</span><span style="color:#C792EA;">async</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
17
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">authUserFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
18
+ <span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;">//WRONG! wrap that in effect</span></span>
19
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">new</span><span style="color:#F07178;"> </span><span style="color:#FFCB6B;">Promise</span><span style="color:#F07178;">(</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">rs</span><span style="color:#89DDFF;">)</span><span style="color:#F07178;"> </span><span style="color:#C792EA;">=&gt;</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">setTimeout</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">rs</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">80</span><span style="color:#F07178;">))</span><span style="color:#89DDFF;">;</span></span>
20
+ <span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;">//context lost</span></span>
21
+ <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">sendMessageFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
22
+ <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span>
23
+ <span class="line"></span></code></pre></div><p>So, any effect might either call another effects or perform some asynchronous computations but not both.</p>`,7),e=[p];function t(c,r,F,y,D,A){return n(),a("div",null,e)}const f=s(o,[["render",t]]);export{C as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as a,o as n,b as l}from"./app.c5be1f68.js";const C=JSON.parse('{"title":"effector/strict-effect-handlers","description":"","frontmatter":{},"headers":[],"relativePath":"rules/strict-effect-handlers.md","lastUpdated":null}'),o={name:"rules/strict-effect-handlers.md"},p=l("",7),e=[p];function t(c,r,F,y,D,A){return n(),a("div",null,e)}const f=s(o,[["render",t]]);export{C as __pageData,f as default};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-cyrillic.f8750142.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-cyrillic-ext.0877b0d9.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-greek.117e1956.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-greek-ext.3e6f6728.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-latin.4fe6132f.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-latin-ext.7cc429bc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var experimental;font-weight:100 900;font-display:swap;font-style:oblique 0deg 10deg;src:url(/assets/inter-vietnamese.2c644a25.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}:root{--vp-c-white: #ffffff;--vp-c-white-soft: #f9f9f9;--vp-c-white-mute: #f1f1f1;--vp-c-black: #1a1a1a;--vp-c-black-pure: #000000;--vp-c-black-soft: #242424;--vp-c-black-mute: #2f2f2f;--vp-c-gray: #8e8e8e;--vp-c-gray-light-1: #aeaeae;--vp-c-gray-light-2: #c7c7c7;--vp-c-gray-light-3: #d1d1d1;--vp-c-gray-light-4: #e5e5e5;--vp-c-gray-light-5: #f2f2f2;--vp-c-gray-dark-1: #636363;--vp-c-gray-dark-2: #484848;--vp-c-gray-dark-3: #3a3a3a;--vp-c-gray-dark-4: #282828;--vp-c-gray-dark-5: #202020;--vp-c-divider-light-1: rgba(60, 60, 60, .29);--vp-c-divider-light-2: rgba(60, 60, 60, .12);--vp-c-divider-dark-1: rgba(84, 84, 84, .65);--vp-c-divider-dark-2: rgba(84, 84, 84, .48);--vp-c-text-light-1: var(--vp-c-indigo);--vp-c-text-light-2: rgba(60, 60, 60, .7);--vp-c-text-light-3: rgba(60, 60, 60, .33);--vp-c-text-light-4: rgba(60, 60, 60, .18);--vp-c-text-dark-1: rgba(255, 255, 255, .87);--vp-c-text-dark-2: rgba(235, 235, 235, .6);--vp-c-text-dark-3: rgba(235, 235, 235, .38);--vp-c-text-dark-4: rgba(235, 235, 235, .18);--vp-c-indigo: #213547;--vp-c-indigo-soft: #476582;--vp-c-indigo-light: #aac8e4;--vp-c-indigo-lighter: #c9def1;--vp-c-indigo-dark: #1d2f3f;--vp-c-indigo-darker: #14212e;--vp-c-green: #42b883;--vp-c-green-light: #42d392;--vp-c-green-lighter: #35eb9a;--vp-c-green-dark: #33a06f;--vp-c-green-darker: #155f3e;--vp-c-green-dimm-1: rgba(66, 184, 131, .5);--vp-c-green-dimm-2: rgba(66, 184, 131, .25);--vp-c-green-dimm-3: rgba(66, 184, 131, .05);--vp-c-yellow: #ffc517;--vp-c-yellow-light: #fcd253;--vp-c-yellow-lighter: #fcfc7c;--vp-c-yellow-dark: #e0ad15;--vp-c-yellow-darker: #ad850e;--vp-c-yellow-dimm-1: rgba(255, 197, 23, .5);--vp-c-yellow-dimm-2: rgba(255, 197, 23, .25);--vp-c-yellow-dimm-3: rgba(255, 197, 23, .05);--vp-c-red: #ed3c50;--vp-c-red-light: #f54e82;--vp-c-red-lighter: #fd1d7c;--vp-c-red-dark: #cd2d3f;--vp-c-red-darker: #ab2131;--vp-c-red-dimm-1: rgba(237, 60, 80, .5);--vp-c-red-dimm-2: rgba(237, 60, 80, .25);--vp-c-red-dimm-3: rgba(237, 60, 80, .05)}:root{--vp-c-bg: var(--vp-c-white);--vp-c-bg-soft: var(--vp-c-white-soft);--vp-c-bg-mute: var(--vp-c-white-mute);--vp-c-bg-alt: var(--vp-c-white-soft);--vp-c-divider: var(--vp-c-divider-light-1);--vp-c-divider-light: var(--vp-c-divider-light-2);--vp-c-divider-inverse: var(--vp-c-divider-dark-1);--vp-c-divider-inverse-light: var(--vp-c-divider-dark-2);--vp-c-text-1: var(--vp-c-text-light-1);--vp-c-text-2: var(--vp-c-text-light-2);--vp-c-text-3: var(--vp-c-text-light-3);--vp-c-text-4: var(--vp-c-text-light-4);--vp-c-text-inverse-1: var(--vp-c-text-dark-1);--vp-c-text-inverse-2: var(--vp-c-text-dark-2);--vp-c-text-inverse-3: var(--vp-c-text-dark-3);--vp-c-text-inverse-4: var(--vp-c-text-dark-4);--vp-c-text-code: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-green);--vp-c-brand-light: var(--vp-c-green-light);--vp-c-brand-lighter: var(--vp-c-green-lighter);--vp-c-brand-dark: var(--vp-c-green-dark);--vp-c-brand-darker: var(--vp-c-green-darker);--vp-c-sponsor: #fd1d7c}.dark{--vp-c-bg: var(--vp-c-black-soft);--vp-c-bg-soft: var(--vp-c-black-mute);--vp-c-bg-mute: var(--vp-c-gray-dark-3);--vp-c-bg-alt: var(--vp-c-black);--vp-c-divider: var(--vp-c-divider-dark-1);--vp-c-divider-light: var(--vp-c-divider-dark-2);--vp-c-divider-inverse: var(--vp-c-divider-light-1);--vp-c-divider-inverse-light: var(--vp-c-divider-light-2);--vp-c-text-1: var(--vp-c-text-dark-1);--vp-c-text-2: var(--vp-c-text-dark-2);--vp-c-text-3: var(--vp-c-text-dark-3);--vp-c-text-4: var(--vp-c-text-dark-4);--vp-c-text-inverse-1: var(--vp-c-text-light-1);--vp-c-text-inverse-2: var(--vp-c-text-light-2);--vp-c-text-inverse-3: var(--vp-c-text-light-3);--vp-c-text-inverse-4: var(--vp-c-text-light-4);--vp-c-text-code: var(--vp-c-indigo-lighter)}:root{--vp-font-family-base: "Inter var experimental", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-block-color: var(--vp-c-text-dark-1);--vp-code-block-bg: #292d3e;--vp-code-line-highlight-color: rgba(0, 0, 0, .5);--vp-code-line-number-color: var(--vp-c-text-dark-3);--vp-code-line-diff-add-color: rgba(125, 191, 123, .1);--vp-code-line-diff-add-symbol-color: rgba(125, 191, 123, .5);--vp-code-line-diff-remove-color: rgba(255, 128, 128, .05);--vp-code-line-diff-remove-symbol-color: rgba(255, 128, 128, .5);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-copy-code-hover-bg: rgba(255, 255, 255, .05);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2)}.dark{--vp-code-block-bg: var(--vp-c-bg-alt)}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-text-dark-1);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-text-dark-1);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-text-dark-1);--vp-button-brand-active-bg: var(--vp-button-brand-bg);--vp-button-alt-border: var(--vp-c-gray-light-3);--vp-button-alt-text: var(--vp-c-text-light-1);--vp-button-alt-bg: var(--vp-c-gray-light-5);--vp-button-alt-hover-border: var(--vp-c-gray-light-3);--vp-button-alt-hover-text: var(--vp-c-text-light-1);--vp-button-alt-hover-bg: var(--vp-c-gray-light-4);--vp-button-alt-active-border: var(--vp-c-gray-light-3);--vp-button-alt-active-text: var(--vp-c-text-light-1);--vp-button-alt-active-bg: var(--vp-c-gray-light-3);--vp-button-sponsor-border: var(--vp-c-gray-light-3);--vp-button-sponsor-text: var(--vp-c-text-light-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}.dark{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-text-dark-1);--vp-button-brand-bg: var(--vp-c-brand-dark);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-text-dark-1);--vp-button-brand-hover-bg: var(--vp-c-brand);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-text-dark-1);--vp-button-brand-active-bg: var(--vp-button-brand-bg);--vp-button-alt-border: var(--vp-c-gray-dark-2);--vp-button-alt-text: var(--vp-c-text-dark-1);--vp-button-alt-bg: var(--vp-c-bg-mute);--vp-button-alt-hover-border: var(--vp-c-gray-dark-2);--vp-button-alt-hover-text: var(--vp-c-text-dark-1);--vp-button-alt-hover-bg: var(--vp-c-gray-dark-2);--vp-button-alt-active-border: var(--vp-c-gray-dark-2);--vp-button-alt-active-text: var(--vp-c-text-dark-1);--vp-button-alt-active-bg: var(--vp-button-alt-bg);--vp-button-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-divider-light);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-white-soft);--vp-custom-block-info-code-bg: var(--vp-c-gray-light-4);--vp-custom-block-tip-border: var(--vp-c-green-dimm-1);--vp-custom-block-tip-text: var(--vp-c-green-darker);--vp-custom-block-tip-bg: var(--vp-c-green-dimm-3);--vp-custom-block-tip-code-bg: var(--vp-custom-block-tip-bg);--vp-custom-block-warning-border: var(--vp-c-yellow-dimm-1);--vp-custom-block-warning-text: var(--vp-c-yellow-darker);--vp-custom-block-warning-bg: var(--vp-c-yellow-dimm-3);--vp-custom-block-warning-code-bg: var(--vp-custom-block-warning-bg);--vp-custom-block-danger-border: var(--vp-c-red-dimm-1);--vp-custom-block-danger-text: var(--vp-c-red-darker);--vp-custom-block-danger-bg: var(--vp-c-red-dimm-3);--vp-custom-block-danger-code-bg: var(--vp-custom-block-danger-bg);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-details-bg)}.dark{--vp-custom-block-info-border: var(--vp-c-divider-light);--vp-custom-block-info-bg: var(--vp-c-black-mute);--vp-custom-block-info-code-bg: var(--vp-c-gray-dark-4);--vp-custom-block-tip-border: var(--vp-c-green-dimm-2);--vp-custom-block-tip-text: var(--vp-c-green-light);--vp-custom-block-warning-border: var(--vp-c-yellow-dimm-2);--vp-custom-block-warning-text: var(--vp-c-yellow-light);--vp-custom-block-danger-border: var(--vp-c-red-dimm-2);--vp-custom-block-danger-text: var(--vp-c-red-light)}:root{--vp-nav-height: var(--vp-nav-height-mobile);--vp-nav-height-mobile: 56px;--vp-nav-height-desktop: 72px}@media (min-width: 960px){:root{--vp-nav-height: var(--vp-nav-height-desktop)}}:root{--vp-sidebar-width: 272px}:root{--vp-home-hero-name-color: var(--vp-c-brand);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: var(--vp-c-divider-light);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-white-soft);--vp-badge-tip-border: var(--vp-c-green-dimm-1);--vp-badge-tip-text: var(--vp-c-green-darker);--vp-badge-tip-bg: var(--vp-c-green-dimm-3);--vp-badge-warning-border: var(--vp-c-yellow-dimm-1);--vp-badge-warning-text: var(--vp-c-yellow-darker);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-3);--vp-badge-danger-border: var(--vp-c-red-dimm-1);--vp-badge-danger-text: var(--vp-c-red-darker);--vp-badge-danger-bg: var(--vp-c-red-dimm-3)}.dark{--vp-badge-info-border: var(--vp-c-divider-light);--vp-badge-info-bg: var(--vp-c-black-mute);--vp-badge-tip-border: var(--vp-c-green-dimm-2);--vp-badge-tip-text: var(--vp-c-green-light);--vp-badge-warning-border: var(--vp-c-yellow-dimm-2);--vp-badge-warning-text: var(--vp-c-yellow-light);--vp-badge-danger-border: var(--vp-c-red-dimm-2);--vp-badge-danger-text: var(--vp-c-red-light)}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:14px;color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:700}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;transition:opacity .25s}.custom-block a:hover{opacity:.6}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider-light);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;opacity:0;transition:color .25s,opacity .25s}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.vp-doc a:hover{color:var(--vp-c-brand-dark)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:12px 16px}.vp-doc th{font-size:16px;font-weight:600;background-color:var(--vp-c-white-soft)}.dark .vp-doc th{background-color:var(--vp-c-black)}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider-light)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block a{color:inherit;font-weight:600;text-decoration:underline;transition:opacity .25s}.vp-doc .custom-block a:hover{opacity:.6}.vp-doc .custom-block code{font-size:var(--vp-custom-block-code-font-size);font-weight:700;color:inherit}.vp-doc .custom-block div[class*=language-]{margin:8px 0}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;color:var(--vp-c-text-code);background-color:var(--vp-c-bg-mute);transition:color .5s,background-color .5s}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc a>code{color:var(--vp-c-brand);transition:color .25s}.vp-doc a:hover>code{color:var(--vp-c-brand-dark)}.vp-doc div[class*=language-]{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-]{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:16px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:1rem}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-c-divider-dark-2);padding-top:16px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{position:absolute;top:8px;right:8px;z-index:3;display:block;justify-content:center;align-items:center;border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-block-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:opacity .4s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover{background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;left:-65px;display:block;border-radius:4px 0 0 4px;padding-top:8px;width:64px;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:"Copied"}.vp-doc [class*=language-]>span.lang{position:absolute;top:6px;right:12px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-c-text-dark-3);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-bg-mute)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white-soft)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-black-mute)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-3b957cc9]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:13px;font-weight:600;transform:translateY(-2px)}h2 .VPBadge[data-v-3b957cc9]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-3b957cc9]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-3b957cc9]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-3b957cc9]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-3b957cc9]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-ba282093]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-ba282093]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-ba282093]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-ba282093]{top:14px;left:16px}}.VPBackdrop[data-v-d26592b2]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:rgba(0,0,0,.6);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-d26592b2],.VPBackdrop.fade-leave-to[data-v-d26592b2]{opacity:0}.VPBackdrop.fade-leave-active[data-v-d26592b2]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-d26592b2]{display:none}}html:not(.dark) .VPImage.dark[data-v-33d31137]{display:none}.dark .VPImage.light[data-v-33d31137]{display:none}.VPNavBarTitle[data-v-de342594]{flex-shrink:0;border-bottom:1px solid transparent}@media (min-width: 960px){.VPNavBarTitle.has-sidebar[data-v-de342594]{margin-right:32px;width:calc(var(--vp-sidebar-width) - 64px);border-bottom-color:var(--vp-c-divider-light);background-color:var(--vp-c-bg-alt)}}.title[data-v-de342594]{display:flex;align-items:center;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}.title[data-v-de342594]:hover{opacity:.6}@media (min-width: 960px){.title[data-v-de342594]{flex-shrink:0}}[data-v-de342594] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.3.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:focus{outline:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"\bb "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-bg-mute);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:32px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--05e0aaee);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-mute)}.icon[data-v-43d5b194]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s}.VPNavBarMenuLink[data-v-f2e87c9b]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height-mobile);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-f2e87c9b],.VPNavBarMenuLink[data-v-f2e87c9b]:hover{color:var(--vp-c-brand)}@media (min-width: 1280px){.VPNavBarMenuLink[data-v-f2e87c9b]{line-height:var(--vp-nav-height-desktop)}}.VPMenuGroup+.VPMenuLink[data-v-186eea87]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider-light);padding:12px 12px 0}.link[data-v-186eea87]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-186eea87]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-mute)}.dark .link[data-v-186eea87]:hover{background-color:var(--vp-c-bg-soft)}.link.active[data-v-186eea87]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-19912a3f]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider-light);padding:12px 12px 0}.VPMenuGroup[data-v-19912a3f]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-19912a3f]{margin-top:12px;border-top:1px solid var(--vp-c-divider-light)}.title[data-v-19912a3f]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);transition:color .25s}.VPMenu[data-v-54f41434]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider-light);background-color:var(--vp-c-bg);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height-mobile));overflow-y:auto}@media (min-width: 960px){.VPMenu[data-v-54f41434]{max-height:calc(100vh - var(--vp-nav-height-desktop))}}.dark .VPMenu[data-v-54f41434]{box-shadow:var(--vp-shadow-2)}.VPMenu[data-v-54f41434] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-54f41434] .group+.group{border-top:1px solid var(--vp-c-divider-light);padding:11px 12px 12px}.VPMenu[data-v-54f41434] .group:last-child{padding-bottom:0}.VPMenu[data-v-54f41434] .group+.item{border-top:1px solid var(--vp-c-divider-light);padding:11px 16px 0}.VPMenu[data-v-54f41434] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-54f41434] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-54f41434] .action{padding-left:24px}.VPFlyout[data-v-1da9cf42]{position:relative}.VPFlyout[data-v-1da9cf42]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-1da9cf42]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-1da9cf42]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-1da9cf42]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-1da9cf42]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-1da9cf42],.button[aria-expanded=true]+.menu[data-v-1da9cf42]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-1da9cf42]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height-mobile);color:var(--vp-c-text-1);transition:color .5s}@media (min-width: 960px){.button[data-v-1da9cf42]{height:var(--vp-nav-height-desktop)}}.text[data-v-1da9cf42]{display:flex;align-items:center;line-height:var(--vp-nav-height-mobile);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 960px){.text[data-v-1da9cf42]{line-height:var(--vp-nav-height-desktop)}}.option-icon[data-v-1da9cf42]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-1da9cf42]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-1da9cf42]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-1da9cf42]{position:absolute;top:calc(var(--vp-nav-height-mobile) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}@media (min-width: 960px){.menu[data-v-1da9cf42]{top:calc(var(--vp-nav-height-desktop) / 2 + 20px)}}.VPNavBarMenu[data-v-bbd7bba4]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-bbd7bba4]{display:flex}}.VPNavBarTranslations[data-v-d2ecee03]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-d2ecee03]{display:flex;align-items:center}}.title[data-v-d2ecee03]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-6fb6d0ff]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-mute);transition:border-color .25s}.VPSwitch[data-v-6fb6d0ff]:hover{border-color:var(--vp-c-gray)}.check[data-v-6fb6d0ff]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-white);box-shadow:var(--vp-shadow-1);transition:transform .25s}.dark .check[data-v-6fb6d0ff]{background-color:var(--vp-c-black)}.icon[data-v-6fb6d0ff]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-6fb6d0ff] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-6fb6d0ff] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-910d4043]{opacity:1}.moon[data-v-910d4043],.dark .sun[data-v-910d4043]{opacity:0}.dark .moon[data-v-910d4043]{opacity:1}.dark .VPSwitchAppearance[data-v-910d4043] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-b18b5f44]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-b18b5f44]{display:flex;align-items:center}}.VPSocialLink[data-v-9dcd5acc]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-9dcd5acc]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-9dcd5acc]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-bb87c15e]{display:flex;flex-wrap:wrap;justify-content:center}.VPNavBarSocialLinks[data-v-ec2bb10b]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ec2bb10b]{display:flex;align-items:center}}.VPNavBarExtra[data-v-231001ce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-231001ce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-231001ce]{display:none}}.trans-title[data-v-231001ce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-231001ce],.item.social-links[data-v-231001ce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-231001ce]{min-width:176px}.appearance-action[data-v-231001ce]{margin-right:-2px}.social-links-list[data-v-231001ce]{margin:-4px -8px}.VPNavBarHamburger[data-v-8494978f]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-8494978f]{display:none}}.container[data-v-8494978f]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-8494978f]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-8494978f]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-8494978f]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-8494978f]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-8494978f]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-8494978f]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-8494978f],.VPNavBarHamburger.active:hover .middle[data-v-8494978f],.VPNavBarHamburger.active:hover .bottom[data-v-8494978f]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-8494978f],.middle[data-v-8494978f],.bottom[data-v-8494978f]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-8494978f]{top:0;left:0;transform:translate(0)}.middle[data-v-8494978f]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-8494978f]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-5c544ded]{position:relative;border-bottom:1px solid var(--vp-c-divider-light);padding:0 8px 0 24px;height:var(--vp-nav-height-mobile);transition:border-color .5s,background-color .5s;pointer-events:none}@media (min-width: 768px){.VPNavBar[data-v-5c544ded]{padding:0 32px}}@media (min-width: 960px){.VPNavBar[data-v-5c544ded]{height:var(--vp-nav-height-desktop);border-bottom:0}.VPNavBar.has-sidebar .content[data-v-5c544ded]{margin-right:-32px;padding-right:32px;-webkit-backdrop-filter:saturate(50%) blur(8px);backdrop-filter:saturate(50%) blur(8px);background:rgba(255,255,255,.7)}.dark .VPNavBar.has-sidebar .content[data-v-5c544ded]{background:rgba(36,36,36,.7)}@supports not (backdrop-filter: saturate(50%) blur(8px)){.VPNavBar.has-sidebar .content[data-v-5c544ded]{background:rgba(255,255,255,.95)}.dark .VPNavBar.has-sidebar .content[data-v-5c544ded]{background:rgba(36,36,36,.95)}}}.container[data-v-5c544ded]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);pointer-events:none}.container[data-v-5c544ded] *{pointer-events:auto}.content[data-v-5c544ded]{display:flex;justify-content:flex-end;align-items:center;flex-grow:1}.menu+.translations[data-v-5c544ded]:before,.menu+.appearance[data-v-5c544ded]:before,.menu+.social-links[data-v-5c544ded]:before,.translations+.appearance[data-v-5c544ded]:before,.appearance+.social-links[data-v-5c544ded]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider-light);content:""}.menu+.appearance[data-v-5c544ded]:before,.translations+.appearance[data-v-5c544ded]:before{margin-right:16px}.appearance+.social-links[data-v-5c544ded]:before{margin-left:16px}.social-links[data-v-5c544ded]{margin-right:-8px}.VPNavScreenMenuLink[data-v-7e715647]{display:block;border-bottom:1px solid var(--vp-c-divider-light);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .5s,color .25s}.VPNavScreenMenuLink[data-v-7e715647]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-6b264ac0]{display:block;line-height:32px;font-size:13px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s;margin-left:12px}.VPNavScreenMenuGroupLink[data-v-6b264ac0]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-6e2a581f]{display:block}.title[data-v-6e2a581f]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-bf98a9a4]{border-bottom:1px solid var(--vp-c-divider-light);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-bf98a9a4]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-bf98a9a4]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-bf98a9a4]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-bf98a9a4]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-bf98a9a4]{transform:rotate(45deg)}.button[data-v-bf98a9a4]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-bf98a9a4]:hover{color:var(--vp-c-brand)}.button-icon[data-v-bf98a9a4]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-bf98a9a4]:first-child{padding-top:0}.group+.group[data-v-bf98a9a4],.group+.item[data-v-bf98a9a4]{padding-top:4px}.VPNavScreenAppearance[data-v-8c40d2e7]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft);transition:background-color .5s}.text[data-v-8c40d2e7]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPNavScreenTranslations[data-v-a6d6abdd]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-a6d6abdd]{height:auto}.title[data-v-a6d6abdd]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-a6d6abdd]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-a6d6abdd]{margin-right:8px}.icon.chevron[data-v-a6d6abdd]{margin-left:4px}.list[data-v-a6d6abdd]{padding:4px 0 0 24px}.link[data-v-a6d6abdd]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-7aad8a44]{position:fixed;top:calc(var(--vp-nav-height-mobile) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-c-bg);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-7aad8a44],.VPNavScreen.fade-leave-active[data-v-7aad8a44]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-7aad8a44],.VPNavScreen.fade-leave-active .container[data-v-7aad8a44]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-7aad8a44],.VPNavScreen.fade-leave-to[data-v-7aad8a44]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-7aad8a44],.VPNavScreen.fade-leave-to .container[data-v-7aad8a44]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-7aad8a44]{display:none}}.container[data-v-7aad8a44]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-7aad8a44],.menu+.appearance[data-v-7aad8a44],.translations+.appearance[data-v-7aad8a44]{margin-top:24px}.menu+.social-links[data-v-7aad8a44]{margin-top:16px}.appearance+.social-links[data-v-7aad8a44]{margin-top:16px}.VPNav[data-v-ad1d1a51]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none}@media (min-width: 960px){.VPNav[data-v-ad1d1a51]{position:fixed}.VPNav.no-sidebar[data-v-ad1d1a51]{-webkit-backdrop-filter:saturate(50%) blur(8px);backdrop-filter:saturate(50%) blur(8px);background:rgba(255,255,255,.7)}.dark .VPNav.no-sidebar[data-v-ad1d1a51]{background:rgba(36,36,36,.7)}@supports not (backdrop-filter: saturate(50%) blur(8px)){.VPNav.no-sidebar[data-v-ad1d1a51]{background:rgba(255,255,255,.95)}.dark .VPNav.no-sidebar[data-v-ad1d1a51]{background:rgba(36,36,36,.95)}}}.VPLocalNav[data-v-f976dfe1]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--vp-c-divider-light);width:100%;background-color:var(--vp-c-bg);transition:border-color .5s,background-color .5s;padding-top:var(--vp-layout-top-height, 0px)}@media (min-width: 960px){.VPLocalNav[data-v-f976dfe1]{display:none}}.menu[data-v-f976dfe1]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-f976dfe1]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f976dfe1]{padding:0 32px}}.menu-icon[data-v-f976dfe1]{margin-right:8px;width:16px;height:16px;fill:currentColor}.top-link[data-v-f976dfe1]{display:block;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.top-link[data-v-f976dfe1]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.top-link[data-v-f976dfe1]{padding:12px 32px 11px}}.link[data-v-a8ffe7ce]{display:block;margin:4px 0;color:var(--vp-c-text-2);transition:color .5s}.link[data-v-a8ffe7ce]:hover{color:var(--vp-c-text-1)}.link.active[data-v-a8ffe7ce]{color:var(--vp-c-brand)}.link[data-v-a8ffe7ce] .icon{width:12px;height:12px;fill:currentColor}.link-text[data-v-a8ffe7ce]{line-height:20px;font-size:14px;font-weight:500}.link-text.light[data-v-a8ffe7ce]{font-size:13px;font-weight:400}.title[data-v-8ccc6e73]{display:flex;justify-content:space-between;align-items:flex-start;z-index:2}.title-text[data-v-8ccc6e73]{padding-top:6px;padding-bottom:6px;line-height:20px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.action[data-v-8ccc6e73]{display:none;position:relative;margin-right:-8px;border-radius:4px;width:32px;height:32px;color:var(--vp-c-text-3);transition:color .25s}.VPSidebarGroup.collapsible .action[data-v-8ccc6e73]{display:block}.VPSidebarGroup.collapsible .title[data-v-8ccc6e73]{cursor:pointer}.title:hover .action[data-v-8ccc6e73]{color:var(--vp-c-text-2)}.icon[data-v-8ccc6e73]{position:absolute;top:8px;left:8px;width:16px;height:16px;fill:currentColor}.icon.minus[data-v-8ccc6e73]{opacity:1}.icon.plus[data-v-8ccc6e73],.VPSidebarGroup.collapsed .icon.minus[data-v-8ccc6e73]{opacity:0}.VPSidebarGroup.collapsed .icon.plus[data-v-8ccc6e73]{opacity:1}.items[data-v-8ccc6e73]{overflow:hidden}.VPSidebarGroup.collapsed .items[data-v-8ccc6e73]{margin-bottom:-22px;max-height:0}@media (min-width: 960px){.VPSidebarGroup.collapsed .items[data-v-8ccc6e73]{margin-bottom:-14px}}.VPSidebar[data-v-3f018281]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-c-bg);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease}.VPSidebar.open[data-v-3f018281]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-3f018281]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-3f018281]{z-index:1;padding-top:var(--vp-nav-height-desktop);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-c-bg-alt);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-3f018281]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.nav[data-v-3f018281]{outline:0}.group+.group[data-v-3f018281]{margin-top:32px;border-top:1px solid var(--vp-c-divider-light);padding-top:10px}@media (min-width: 960px){.group[data-v-3f018281]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}.group+.group[data-v-3f018281]{margin-top:24px}}.VPButton[data-v-460939a7]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:500;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-460939a7]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-460939a7]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-460939a7]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-460939a7]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-460939a7]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-460939a7]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-460939a7]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-460939a7]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-460939a7]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-460939a7]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-460939a7]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-460939a7]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}.VPHero[data-v-bae08102]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-bae08102]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-bae08102]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-bae08102]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-bae08102]{flex-direction:row}}.main[data-v-bae08102]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-bae08102]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-bae08102]{text-align:left}}@media (min-width: 960px){.main[data-v-bae08102]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-bae08102]{max-width:592px}}.name[data-v-bae08102],.text[data-v-bae08102]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-bae08102],.VPHero.has-image .text[data-v-bae08102]{margin:0 auto}.name[data-v-bae08102]{color:var(--vp-home-hero-name-color)}.clip[data-v-bae08102]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-bae08102],.text[data-v-bae08102]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-bae08102],.text[data-v-bae08102]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-bae08102],.VPHero.has-image .text[data-v-bae08102]{margin:0}}.tagline[data-v-bae08102]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-bae08102]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-bae08102]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-bae08102]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-bae08102]{margin:0}}.actions[data-v-bae08102]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-bae08102]{justify-content:center}@media (min-width: 640px){.actions[data-v-bae08102]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-bae08102]{justify-content:flex-start}}.action[data-v-bae08102]{flex-shrink:0;padding:6px}.image[data-v-bae08102]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-bae08102]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-bae08102]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-bae08102]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-bae08102]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-bae08102]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-bae08102]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-bae08102]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-bae08102]{width:320px;height:320px}}[data-v-bae08102] .image-src{position:absolute;top:50%;left:50%;max-width:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-bae08102] .image-src{max-width:256px}}@media (min-width: 960px){[data-v-bae08102] .image-src{max-width:320px}}.VPFeature[data-v-37b74f90]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-37b74f90]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg)}.dark .VPFeature.link[data-v-37b74f90]:hover{background-color:var(--vp-c-bg-mute)}.box[data-v-37b74f90]{display:flex;flex-direction:column;padding:24px;height:100%}.icon[data-v-37b74f90]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-gray-light-4);width:48px;height:48px;font-size:24px;transition:background-color .25s}.dark .icon[data-v-37b74f90]{background-color:var(--vp-c-gray-dark-5)}.title[data-v-37b74f90]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-37b74f90]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-37b74f90]{padding-top:8px}.link-text-value[data-v-37b74f90]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPFeature.link:hover .link-text-value[data-v-37b74f90]{color:var(--vp-c-brand-dark)}.link-text-icon[data-v-37b74f90]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-3c06c0e7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-3c06c0e7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-3c06c0e7]{padding:0 64px}}.container[data-v-3c06c0e7]{margin:0 auto;max-width:1152px}.items[data-v-3c06c0e7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-3c06c0e7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-3c06c0e7],.item.grid-4[data-v-3c06c0e7],.item.grid-6[data-v-3c06c0e7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-3c06c0e7],.item.grid-4[data-v-3c06c0e7]{width:50%}.item.grid-3[data-v-3c06c0e7],.item.grid-6[data-v-3c06c0e7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-3c06c0e7]{width:25%}}.VPHome[data-v-208eef39]{padding-bottom:96px}.VPHome[data-v-208eef39] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-208eef39]{padding-bottom:128px}}.root[data-v-71cd9c96]{position:relative;z-index:1}.nested[data-v-71cd9c96]{padding-left:13px}.outline-link[data-v-71cd9c96]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-71cd9c96]:hover,.outline-link.active[data-v-71cd9c96]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-71cd9c96]{padding-left:13px}.VPDocAsideOutline[data-v-d8c9f9a3]{display:none}.VPDocAsideOutline.has-outline[data-v-d8c9f9a3]{display:block}.content[data-v-d8c9f9a3]{position:relative;border-left:1px solid var(--vp-c-divider-light);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d8c9f9a3]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:1px;height:18px;background-color:var(--vp-c-brand);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-d8c9f9a3]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-e2950fc2]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-e2950fc2]{flex-grow:1}.VPDocAside[data-v-e2950fc2] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-e2950fc2] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-e2950fc2] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e831736a]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e831736a]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-8d4e89ab]{margin-top:64px}.edit-info[data-v-8d4e89ab]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-8d4e89ab]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-8d4e89ab]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.edit-link-button[data-v-8d4e89ab]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-8d4e89ab]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-8d4e89ab]{border-top:1px solid var(--vp-c-divider-light);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-8d4e89ab]{display:flex}}.pager.has-prev[data-v-8d4e89ab]{padding-top:8px}@media (min-width: 640px){.pager[data-v-8d4e89ab]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-8d4e89ab]{padding-top:0;padding-left:16px}}.pager-link[data-v-8d4e89ab]{display:block;border:1px solid var(--vp-c-divider-light);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-8d4e89ab]:hover{border-color:var(--vp-c-brand)}.pager-link:hover .title[data-v-8d4e89ab]{color:var(--vp-c-brand-dark)}.pager-link.next[data-v-8d4e89ab]{margin-left:auto;text-align:right}.desc[data-v-8d4e89ab]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-8d4e89ab]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDoc[data-v-392d9ceb]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-392d9ceb]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-392d9ceb]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-392d9ceb]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-392d9ceb]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-392d9ceb]{display:flex;justify-content:center}.VPDoc .aside[data-v-392d9ceb]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-392d9ceb]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-392d9ceb]{max-width:1104px}}.container[data-v-392d9ceb]{margin:0 auto;width:100%}.aside[data-v-392d9ceb]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.aside-container[data-v-392d9ceb]{position:sticky;top:0;margin-top:calc((var(--vp-nav-height-desktop) + var(--vp-layout-top-height, 0px)) * -1 - 32px);padding-top:calc(var(--vp-nav-height-desktop) + var(--vp-layout-top-height, 0px) + 32px);height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-392d9ceb]::-webkit-scrollbar{display:none}.aside-curtain[data-v-392d9ceb]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-392d9ceb]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height-desktop) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-392d9ceb]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-392d9ceb]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-392d9ceb]{order:1;margin:0;min-width:640px}}.content-container[data-v-392d9ceb]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-392d9ceb]{max-width:688px}.VPContent[data-v-1853a4d3]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1853a4d3]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1853a4d3]{margin:0}@media (min-width: 960px){.VPContent[data-v-1853a4d3]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1853a4d3]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1853a4d3]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-ae90d55f]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-divider-light);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-ae90d55f]{display:none}@media (min-width: 768px){.VPFooter[data-v-ae90d55f]{padding:32px}}.container[data-v-ae90d55f]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-ae90d55f],.copyright[data-v-ae90d55f]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-ae90d55f]{order:2}.copyright[data-v-ae90d55f]{order:1}.Layout[data-v-5236d721]{display:flex;flex-direction:column;min-height:100vh}.NotFound[data-v-b74f7232]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-b74f7232]{padding:96px 32px 168px}}.code[data-v-b74f7232]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-b74f7232]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-b74f7232]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-b74f7232]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-b74f7232]{padding-top:20px}.link[data-v-b74f7232]{display:inline-block;border:1px solid var(--vp-c-brand);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:border-color .25s,color .25s}.link[data-v-b74f7232]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPHomeSponsors[data-v-f227e387]{border-top:1px solid var(--vp-c-divider-light);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-f227e387]{margin:0 auto;max-width:1152px}.love[data-v-f227e387]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-f227e387]{width:28px;height:28px;fill:currentColor}.message[data-v-f227e387]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-f227e387]{padding-top:32px}.action[data-v-f227e387]{padding-top:40px;text-align:center}.VPTeamPage[data-v-6185903f]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-6185903f]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-6185903f-s],.VPTeamMembers+.VPTeamPageSection[data-v-6185903f-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-6185903f-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-6185903f-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-6185903f-s],.VPTeamMembers+.VPTeamPageSection[data-v-6185903f-s]{margin-top:96px}}.VPTeamMembers[data-v-6185903f-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-6185903f-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-6185903f-s]{padding:0 64px}}.VPTeamPageTitle[data-v-a8a51a8d]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-a8a51a8d]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-a8a51a8d]{padding:80px 64px 48px}}.title[data-v-a8a51a8d]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-a8a51a8d]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-a8a51a8d]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-a8a51a8d]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-1e0a6ef3]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-1e0a6ef3]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-1e0a6ef3]{padding:0 64px}}.title[data-v-1e0a6ef3]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-1e0a6ef3]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider-light)}.title-text[data-v-1e0a6ef3]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-1e0a6ef3]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-1e0a6ef3]{padding-top:40px}.VPTeamMembersItem[data-v-017d6c3d]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-017d6c3d]{padding:32px}.VPTeamMembersItem.small .data[data-v-017d6c3d]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-017d6c3d]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-017d6c3d]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-017d6c3d]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-017d6c3d]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-017d6c3d]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-017d6c3d]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-017d6c3d]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-017d6c3d]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-017d6c3d]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-017d6c3d]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-017d6c3d]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-017d6c3d]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-017d6c3d]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-017d6c3d]{text-align:center}.avatar[data-v-017d6c3d]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-017d6c3d]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-017d6c3d]{margin:0;font-weight:600}.affiliation[data-v-017d6c3d]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-017d6c3d]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-017d6c3d]:hover{color:var(--vp-c-brand)}.desc[data-v-017d6c3d]{margin:0 auto}.links[data-v-017d6c3d]{display:flex;justify-content:center;height:56px}.sp-link[data-v-017d6c3d]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp-link[data-v-017d6c3d]:hover,.sp-link[data-v-017d6c3d]:focus{outline:none;color:var(--vp-c-text-dark-1);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-017d6c3d]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-25371bab]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-25371bab]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-25371bab]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-25371bab]{max-width:876px}.VPTeamMembers.medium .container[data-v-25371bab]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-25371bab]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-25371bab]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-25371bab]{max-width:760px}.container[data-v-25371bab]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-c-brand: darkorange;--vp-c-brand-light: #ef8319;--vp-c-brand-dark: #d66a00;--vp-button-brand-bg: darkorange;--vp-button-brand-hover-border: #be5e00}
@@ -0,0 +1 @@
1
+ {"index.md":"79361962","presets___future.md":"6542932d","presets___index.md":"af77aa24","presets___list.md":"86dea8af","presets___patronum.md":"9f3ad5fe","presets___react.md":"dc2cc31a","presets___recommended.md":"af826424","presets___scope.md":"e5dd9837","presets_future.md":"2962dd38","presets_index.md":"c3c40451","presets_patronum.md":"58445698","presets_react.md":"fda31c90","presets_recommended.md":"396d0c01","presets_scope.md":"55da3541","rules___index.md":"c943fc87","rules___list.md":"ba316f20","rules_enforce-effect-naming-convention.md":"09e5af2c","rules_enforce-gate-naming-convention.md":"5f3af41a","rules_enforce-store-naming-convention.md":"db33b9cb","rules_index.md":"3e915bb2","rules_keep-options-order.md":"5345093b","rules_mandatory-scope-binding.md":"aff04a66","rules_no-ambiguity-target.md":"7fde769b","rules_no-duplicate-on.md":"09525e1d","rules_no-forward.md":"2becbf92","rules_no-getstate.md":"665d0467","rules_no-guard.md":"5056c7b6","rules_no-patronum-debug.md":"19f444fb","rules_no-unnecessary-combination.md":"e7221074","rules_no-unnecessary-duplication.md":"3a99556b","rules_no-useless-methods.md":"e13dc29f","rules_no-watch.md":"72ac4d86","rules_prefer-sample-over-forward-with-mapping.md":"e5a7f363","rules_prefer-useunit.md":"2d27cecd","rules_strict-effect-handlers.md":"2f8965e2"}