eslint-plugin-effector 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/package.json +4 -4
  2. package/rules/enforce-effect-naming-convention/enforce-effect-naming-convention.js +9 -2
  3. package/rules/enforce-gate-naming-convention/enforce-gate-naming-convention.js +10 -2
  4. package/rules/enforce-store-naming-convention/enforce-store-naming-convention.js +9 -2
  5. package/rules/mandatory-scope-binding/mandatory-scope-binding.js +9 -2
  6. package/rules/no-watch/no-watch.js +10 -2
  7. package/utils/is.js +10 -1
  8. package/utils/node-type-is.js +39 -8
  9. package/docs/.vitepress/cache/deps/_metadata.json +0 -13
  10. package/docs/.vitepress/cache/deps/package.json +0 -1
  11. package/docs/.vitepress/cache/deps/vue.js +0 -11590
  12. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  13. package/docs/.vitepress/config.js +0 -58
  14. package/docs/.vitepress/dist/404.html +0 -23
  15. package/docs/.vitepress/dist/apple-touch-icon.png +0 -0
  16. package/docs/.vitepress/dist/assets/app.bd59d2fd.js +0 -1
  17. package/docs/.vitepress/dist/assets/changelog.md.772a432f.js +0 -1
  18. package/docs/.vitepress/dist/assets/changelog.md.772a432f.lean.js +0 -1
  19. package/docs/.vitepress/dist/assets/chunks/VPAlgoliaSearchBox.e15d81bd.js +0 -14
  20. package/docs/.vitepress/dist/assets/chunks/framework.02595b67.js +0 -2
  21. package/docs/.vitepress/dist/assets/chunks/theme.23495dab.js +0 -7
  22. package/docs/.vitepress/dist/assets/index.md.22c1dc01.js +0 -1
  23. package/docs/.vitepress/dist/assets/index.md.22c1dc01.lean.js +0 -1
  24. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 +0 -0
  25. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.ea42a392.woff2 +0 -0
  26. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.4fbe9427.woff2 +0 -0
  27. package/docs/.vitepress/dist/assets/inter-italic-greek.8f4463c4.woff2 +0 -0
  28. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.bd8920cc.woff2 +0 -0
  29. package/docs/.vitepress/dist/assets/inter-italic-latin.bd3b6f56.woff2 +0 -0
  30. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.6ce511fb.woff2 +0 -0
  31. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.e75737ce.woff2 +0 -0
  32. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.5f2c6c8c.woff2 +0 -0
  33. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.ab0619bc.woff2 +0 -0
  34. package/docs/.vitepress/dist/assets/inter-roman-greek.d5a6d92a.woff2 +0 -0
  35. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.0030eebd.woff2 +0 -0
  36. package/docs/.vitepress/dist/assets/inter-roman-latin.2ed14f66.woff2 +0 -0
  37. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.14ce25a6.woff2 +0 -0
  38. package/docs/.vitepress/dist/assets/presets___future.md.e9103b27.js +0 -1
  39. package/docs/.vitepress/dist/assets/presets___future.md.e9103b27.lean.js +0 -1
  40. package/docs/.vitepress/dist/assets/presets___index.md.036348a2.js +0 -1
  41. package/docs/.vitepress/dist/assets/presets___index.md.036348a2.lean.js +0 -1
  42. package/docs/.vitepress/dist/assets/presets___list.md.c59d692a.js +0 -1
  43. package/docs/.vitepress/dist/assets/presets___list.md.c59d692a.lean.js +0 -1
  44. package/docs/.vitepress/dist/assets/presets___patronum.md.378cac9e.js +0 -1
  45. package/docs/.vitepress/dist/assets/presets___patronum.md.378cac9e.lean.js +0 -1
  46. package/docs/.vitepress/dist/assets/presets___react.md.032da791.js +0 -1
  47. package/docs/.vitepress/dist/assets/presets___react.md.032da791.lean.js +0 -1
  48. package/docs/.vitepress/dist/assets/presets___recommended.md.8e0219bf.js +0 -1
  49. package/docs/.vitepress/dist/assets/presets___recommended.md.8e0219bf.lean.js +0 -1
  50. package/docs/.vitepress/dist/assets/presets___scope.md.a16b0476.js +0 -1
  51. package/docs/.vitepress/dist/assets/presets___scope.md.a16b0476.lean.js +0 -1
  52. package/docs/.vitepress/dist/assets/presets_future.md.cb2d4750.js +0 -4
  53. package/docs/.vitepress/dist/assets/presets_future.md.cb2d4750.lean.js +0 -1
  54. package/docs/.vitepress/dist/assets/presets_index.md.4607f021.js +0 -1
  55. package/docs/.vitepress/dist/assets/presets_index.md.4607f021.lean.js +0 -1
  56. package/docs/.vitepress/dist/assets/presets_patronum.md.ac63c75e.js +0 -4
  57. package/docs/.vitepress/dist/assets/presets_patronum.md.ac63c75e.lean.js +0 -1
  58. package/docs/.vitepress/dist/assets/presets_react.md.91f097f9.js +0 -4
  59. package/docs/.vitepress/dist/assets/presets_react.md.91f097f9.lean.js +0 -1
  60. package/docs/.vitepress/dist/assets/presets_recommended.md.98643b5c.js +0 -4
  61. package/docs/.vitepress/dist/assets/presets_recommended.md.98643b5c.lean.js +0 -1
  62. package/docs/.vitepress/dist/assets/presets_scope.md.e1b77236.js +0 -4
  63. package/docs/.vitepress/dist/assets/presets_scope.md.e1b77236.lean.js +0 -1
  64. package/docs/.vitepress/dist/assets/rules___index.md.4cf71d5e.js +0 -1
  65. package/docs/.vitepress/dist/assets/rules___index.md.4cf71d5e.lean.js +0 -1
  66. package/docs/.vitepress/dist/assets/rules___list.md.3d2508ab.js +0 -1
  67. package/docs/.vitepress/dist/assets/rules___list.md.3d2508ab.lean.js +0 -1
  68. package/docs/.vitepress/dist/assets/rules_enforce-effect-naming-convention.md.ad7462af.js +0 -9
  69. package/docs/.vitepress/dist/assets/rules_enforce-effect-naming-convention.md.ad7462af.lean.js +0 -1
  70. package/docs/.vitepress/dist/assets/rules_enforce-gate-naming-convention.md.f7ab1c32.js +0 -9
  71. package/docs/.vitepress/dist/assets/rules_enforce-gate-naming-convention.md.f7ab1c32.lean.js +0 -1
  72. package/docs/.vitepress/dist/assets/rules_enforce-store-naming-convention.md.0d2ed508.js +0 -22
  73. package/docs/.vitepress/dist/assets/rules_enforce-store-naming-convention.md.0d2ed508.lean.js +0 -1
  74. package/docs/.vitepress/dist/assets/rules_index.md.5ef5b917.js +0 -1
  75. package/docs/.vitepress/dist/assets/rules_index.md.5ef5b917.lean.js +0 -1
  76. package/docs/.vitepress/dist/assets/rules_keep-options-order.md.58bfbca2.js +0 -15
  77. package/docs/.vitepress/dist/assets/rules_keep-options-order.md.58bfbca2.lean.js +0 -1
  78. package/docs/.vitepress/dist/assets/rules_mandatory-scope-binding.md.9c380ecb.js +0 -13
  79. package/docs/.vitepress/dist/assets/rules_mandatory-scope-binding.md.9c380ecb.lean.js +0 -1
  80. package/docs/.vitepress/dist/assets/rules_no-ambiguity-target.md.94231682.js +0 -6
  81. package/docs/.vitepress/dist/assets/rules_no-ambiguity-target.md.94231682.lean.js +0 -1
  82. package/docs/.vitepress/dist/assets/rules_no-duplicate-on.md.d01d60d6.js +0 -10
  83. package/docs/.vitepress/dist/assets/rules_no-duplicate-on.md.d01d60d6.lean.js +0 -1
  84. package/docs/.vitepress/dist/assets/rules_no-forward.md.f83457f0.js +0 -9
  85. package/docs/.vitepress/dist/assets/rules_no-forward.md.f83457f0.lean.js +0 -1
  86. package/docs/.vitepress/dist/assets/rules_no-getState.md.4a019d9c.js +0 -14
  87. package/docs/.vitepress/dist/assets/rules_no-getState.md.4a019d9c.lean.js +0 -1
  88. package/docs/.vitepress/dist/assets/rules_no-guard.md.ce7893c6.js +0 -20
  89. package/docs/.vitepress/dist/assets/rules_no-guard.md.ce7893c6.lean.js +0 -1
  90. package/docs/.vitepress/dist/assets/rules_no-patronum-debug.md.e1506172.js +0 -12
  91. package/docs/.vitepress/dist/assets/rules_no-patronum-debug.md.e1506172.lean.js +0 -1
  92. package/docs/.vitepress/dist/assets/rules_no-unnecessary-combination.md.c493c675.js +0 -19
  93. package/docs/.vitepress/dist/assets/rules_no-unnecessary-combination.md.c493c675.lean.js +0 -1
  94. package/docs/.vitepress/dist/assets/rules_no-unnecessary-duplication.md.73a858d8.js +0 -26
  95. package/docs/.vitepress/dist/assets/rules_no-unnecessary-duplication.md.73a858d8.lean.js +0 -1
  96. package/docs/.vitepress/dist/assets/rules_no-useless-methods.md.8043425b.js +0 -8
  97. package/docs/.vitepress/dist/assets/rules_no-useless-methods.md.8043425b.lean.js +0 -1
  98. package/docs/.vitepress/dist/assets/rules_no-watch.md.c78d9c95.js +0 -34
  99. package/docs/.vitepress/dist/assets/rules_no-watch.md.c78d9c95.lean.js +0 -1
  100. package/docs/.vitepress/dist/assets/rules_prefer-sample-over-forward-with-mapping.md.b5f139ea.js +0 -21
  101. package/docs/.vitepress/dist/assets/rules_prefer-sample-over-forward-with-mapping.md.b5f139ea.lean.js +0 -1
  102. package/docs/.vitepress/dist/assets/rules_prefer-useUnit.md.e6b1721b.js +0 -27
  103. package/docs/.vitepress/dist/assets/rules_prefer-useUnit.md.e6b1721b.lean.js +0 -1
  104. package/docs/.vitepress/dist/assets/rules_strict-effect-handlers.md.142370fb.js +0 -20
  105. package/docs/.vitepress/dist/assets/rules_strict-effect-handlers.md.142370fb.lean.js +0 -1
  106. package/docs/.vitepress/dist/assets/shared_install.md.71ecb8f5.js +0 -1
  107. package/docs/.vitepress/dist/assets/shared_install.md.71ecb8f5.lean.js +0 -1
  108. package/docs/.vitepress/dist/assets/style.d567007a.css +0 -1
  109. package/docs/.vitepress/dist/changelog.html +0 -26
  110. package/docs/.vitepress/dist/comet-192.png +0 -0
  111. package/docs/.vitepress/dist/comet-512.png +0 -0
  112. package/docs/.vitepress/dist/comet.svg +0 -228
  113. package/docs/.vitepress/dist/favicon.ico +0 -0
  114. package/docs/.vitepress/dist/hashmap.json +0 -1
  115. package/docs/.vitepress/dist/index.html +0 -26
  116. package/docs/.vitepress/dist/manifest.webmanifest +0 -6
  117. package/docs/.vitepress/dist/presets/__future.html +0 -26
  118. package/docs/.vitepress/dist/presets/__index.html +0 -26
  119. package/docs/.vitepress/dist/presets/__list.html +0 -26
  120. package/docs/.vitepress/dist/presets/__patronum.html +0 -26
  121. package/docs/.vitepress/dist/presets/__react.html +0 -26
  122. package/docs/.vitepress/dist/presets/__recommended.html +0 -26
  123. package/docs/.vitepress/dist/presets/__scope.html +0 -26
  124. package/docs/.vitepress/dist/presets/future.html +0 -29
  125. package/docs/.vitepress/dist/presets/index.html +0 -26
  126. package/docs/.vitepress/dist/presets/patronum.html +0 -29
  127. package/docs/.vitepress/dist/presets/react.html +0 -29
  128. package/docs/.vitepress/dist/presets/recommended.html +0 -29
  129. package/docs/.vitepress/dist/presets/scope.html +0 -29
  130. package/docs/.vitepress/dist/rules/__index.html +0 -26
  131. package/docs/.vitepress/dist/rules/__list.html +0 -26
  132. package/docs/.vitepress/dist/rules/enforce-effect-naming-convention.html +0 -34
  133. package/docs/.vitepress/dist/rules/enforce-gate-naming-convention.html +0 -34
  134. package/docs/.vitepress/dist/rules/enforce-store-naming-convention.html +0 -47
  135. package/docs/.vitepress/dist/rules/index.html +0 -26
  136. package/docs/.vitepress/dist/rules/keep-options-order.html +0 -40
  137. package/docs/.vitepress/dist/rules/mandatory-scope-binding.html +0 -38
  138. package/docs/.vitepress/dist/rules/no-ambiguity-target.html +0 -31
  139. package/docs/.vitepress/dist/rules/no-duplicate-on.html +0 -35
  140. package/docs/.vitepress/dist/rules/no-forward.html +0 -34
  141. package/docs/.vitepress/dist/rules/no-getState.html +0 -39
  142. package/docs/.vitepress/dist/rules/no-guard.html +0 -45
  143. package/docs/.vitepress/dist/rules/no-patronum-debug.html +0 -37
  144. package/docs/.vitepress/dist/rules/no-unnecessary-combination.html +0 -44
  145. package/docs/.vitepress/dist/rules/no-unnecessary-duplication.html +0 -51
  146. package/docs/.vitepress/dist/rules/no-useless-methods.html +0 -33
  147. package/docs/.vitepress/dist/rules/no-watch.html +0 -59
  148. package/docs/.vitepress/dist/rules/prefer-sample-over-forward-with-mapping.html +0 -46
  149. package/docs/.vitepress/dist/rules/prefer-useUnit.html +0 -52
  150. package/docs/.vitepress/dist/rules/strict-effect-handlers.html +0 -45
  151. package/docs/.vitepress/dist/shared/install.html +0 -26
  152. package/docs/.vitepress/theme/custom.css +0 -10
  153. package/docs/.vitepress/theme/index.js +0 -4
  154. package/docs/public/apple-touch-icon.png +0 -0
  155. package/docs/public/comet-192.png +0 -0
  156. package/docs/public/comet-512.png +0 -0
  157. package/docs/public/comet.svg +0 -228
  158. package/docs/public/favicon.ico +0 -0
  159. package/docs/public/manifest.webmanifest +0 -6
@@ -1,26 +0,0 @@
1
- import{_ as s,c as n,o as a,Q as l}from"./chunks/framework.02595b67.js";const C=JSON.parse('{"title":"effector/no-unnecessary-duplication","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-unnecessary-duplication.md","lastUpdated":1668424187000}'),o={name:"rules/no-unnecessary-duplication.md"},p=l(`<h1 id="effector-no-unnecessary-duplication" tabindex="-1">effector/no-unnecessary-duplication <a class="header-anchor" href="#effector-no-unnecessary-duplication" aria-label="Permalink to &quot;effector/no-unnecessary-duplication&quot;">​</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 material-theme-palenight"><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;font-style:italic;">// 👎 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;font-style:italic;">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;font-style:italic;">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;font-style:italic;">// 👍 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;font-style:italic;">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;font-style:italic;">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;font-style:italic;">// 👍 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;font-style:italic;">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;font-style:italic;">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></code></pre></div>`,3),e=[p];function t(c,r,y,D,F,i){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{C as __pageData,d as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as n,o as a,Q as l}from"./chunks/framework.02595b67.js";const C=JSON.parse('{"title":"effector/no-unnecessary-duplication","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-unnecessary-duplication.md","lastUpdated":1668424187000}'),o={name:"rules/no-unnecessary-duplication.md"},p=l("",3),e=[p];function t(c,r,y,D,F,i){return a(),n("div",null,e)}const d=s(o,[["render",t]]);export{C as __pageData,d as default};
@@ -1,8 +0,0 @@
1
- import{_ as s,c as a,o,Q as n}from"./chunks/framework.02595b67.js";const i=JSON.parse('{"title":"effector/no-useless-methods","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-useless-methods.md","lastUpdated":1668424187000}'),e={name:"rules/no-useless-methods.md"},l=n(`<h1 id="effector-no-useless-methods" tabindex="-1">effector/no-useless-methods <a class="header-anchor" href="#effector-no-useless-methods" aria-label="Permalink to &quot;effector/no-useless-methods&quot;">​</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 material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 👎 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;font-style:italic;">// 👍 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;font-style:italic;">// 👍 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></code></pre></div>`,3),p=[l];function t(c,r,D,y,F,A){return o(),a("div",null,p)}const d=s(e,[["render",t]]);export{i as __pageData,d as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as a,o,Q as n}from"./chunks/framework.02595b67.js";const i=JSON.parse('{"title":"effector/no-useless-methods","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-useless-methods.md","lastUpdated":1668424187000}'),e={name:"rules/no-useless-methods.md"},l=n("",3),p=[l];function t(c,r,D,y,F,A){return o(),a("div",null,p)}const d=s(e,[["render",t]]);export{i as __pageData,d as default};
@@ -1,34 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as l}from"./chunks/framework.02595b67.js";const i=JSON.parse('{"title":"effector/no-watch","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-watch.md","lastUpdated":1668424187000}'),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-label="Permalink to &quot;effector/no-watch&quot;">​</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 material-theme-palenight"><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;font-style:italic;">// 👍 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 style="color:#89DDFF;">;</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 style="color:#89DDFF;">;</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;font-style:italic;">// 👎 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;font-style:italic;">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;font-style:italic;">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;font-style:italic;">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></code></pre></div>`,4),e=[o];function t(c,r,y,D,F,A){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as l}from"./chunks/framework.02595b67.js";const i=JSON.parse('{"title":"effector/no-watch","description":"","frontmatter":{},"headers":[],"relativePath":"rules/no-watch.md","lastUpdated":1668424187000}'),p={name:"rules/no-watch.md"},o=l("",4),e=[o];function t(c,r,y,D,F,A){return n(),a("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default};
@@ -1,21 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as p}from"./chunks/framework.02595b67.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":1668424187000}'),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-label="Permalink to &quot;effector/prefer-sample-over-forward-with-mapping&quot;">​</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 material-theme-palenight"><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;font-style:italic;">// 👎 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;font-style:italic;">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;font-style:italic;">// 👎 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;font-style:italic;">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;font-style:italic;">// 👍 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;font-style:italic;">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></code></pre></div><p>💡 Tip: It could be superseded by <a href="/rules/no-forward.html">no-forward</a>.</p>`,4),e=[o];function t(r,c,D,y,A,F){return n(),a("div",null,e)}const d=s(l,[["render",t]]);export{i as __pageData,d as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as p}from"./chunks/framework.02595b67.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":1668424187000}'),l={name:"rules/prefer-sample-over-forward-with-mapping.md"},o=p("",4),e=[o];function t(r,c,D,y,A,F){return n(),a("div",null,e)}const d=s(l,[["render",t]]);export{i as __pageData,d as default};
@@ -1,27 +0,0 @@
1
- import{_ as s,c as n,o as a,Q as l}from"./chunks/framework.02595b67.js";const C=JSON.parse('{"title":"effector/prefer-useUnit","description":"","frontmatter":{},"headers":[],"relativePath":"rules/prefer-useUnit.md","lastUpdated":1668424187000}'),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-label="Permalink to &quot;effector/prefer-useUnit&quot;">​</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 material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 👎 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;font-style:italic;">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;font-style:italic;">// 👍 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;font-style:italic;">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></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};
@@ -1 +0,0 @@
1
- import{_ as s,c as n,o as a,Q as l}from"./chunks/framework.02595b67.js";const C=JSON.parse('{"title":"effector/prefer-useUnit","description":"","frontmatter":{},"headers":[],"relativePath":"rules/prefer-useUnit.md","lastUpdated":1668424187000}'),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};
@@ -1,20 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as l}from"./chunks/framework.02595b67.js";const f=JSON.parse('{"title":"effector/strict-effect-handlers","description":"","frontmatter":{},"headers":[],"relativePath":"rules/strict-effect-handlers.md","lastUpdated":1668424187000}'),o={name:"rules/strict-effect-handlers.md"},e=l(`<h1 id="effector-strict-effect-handlers" tabindex="-1">effector/strict-effect-handlers <a class="header-anchor" href="#effector-strict-effect-handlers" aria-label="Permalink to &quot;effector/strict-effect-handlers&quot;">​</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 material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 👍 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;font-style:italic;">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;font-style:italic;">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></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki material-theme-palenight"><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>
5
- <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>
6
- <span class="line"></span>
7
- <span class="line"><span style="color:#676E95;font-style:italic;">// 👍 effect with inner effects</span></span>
8
- <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>
9
- <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">authUserFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
10
- <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">delayFx</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;font-style:italic;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">sendMessageFx</span><span style="color:#F07178;">()</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></code></pre></div><div class="language-ts"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 👎 effect with inner effects and common async functions</span></span>
13
- <span class="line"></span>
14
- <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>
15
- <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">authUserFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
16
- <span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">//WRONG! wrap that in effect</span></span>
17
- <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">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;font-style:italic;">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>
18
- <span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">//context lost</span></span>
19
- <span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">await</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">sendMessageFx</span><span style="color:#F07178;">()</span><span style="color:#89DDFF;">;</span></span>
20
- <span class="line"><span style="color:#89DDFF;">}</span><span style="color:#A6ACCD;">)</span><span style="color:#89DDFF;">;</span></span></code></pre></div><p>So, any effect might either call another effects or perform some asynchronous computations but not both.</p>`,7),p=[e];function t(c,r,y,F,i,D){return n(),a("div",null,p)}const C=s(o,[["render",t]]);export{f as __pageData,C as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as l}from"./chunks/framework.02595b67.js";const f=JSON.parse('{"title":"effector/strict-effect-handlers","description":"","frontmatter":{},"headers":[],"relativePath":"rules/strict-effect-handlers.md","lastUpdated":1668424187000}'),o={name:"rules/strict-effect-handlers.md"},e=l("",7),p=[e];function t(c,r,y,F,i,D){return n(),a("div",null,p)}const C=s(o,[["render",t]]);export{f as __pageData,C as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as l}from"./chunks/framework.02595b67.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"shared/install.md","lastUpdated":1668497371000}'),e={name:"shared/install.md"},t=l('<h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to &quot;Installation&quot;">​</a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This plugin uses TypeScript for more precise results, but JavaScript is supported too.</p></div><p>First, you need to install ESLint and plugin:</p><p>with <code>pnpm</code></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">pnpm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dev</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eslint-plugin-effector</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eslint</span></span></code></pre></div><p>with <code>yarn</code></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">yarn</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">add</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dev</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eslint-plugin-effector</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eslint</span></span></code></pre></div><p>with <code>npm</code></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">npm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dev</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eslint-plugin-effector</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eslint</span></span></code></pre></div>',9),o=[t];function p(c,i,r,d,C,y){return n(),a("div",null,o)}const A=s(e,[["render",p]]);export{u as __pageData,A as default};
@@ -1 +0,0 @@
1
- import{_ as s,c as a,o as n,Q as l}from"./chunks/framework.02595b67.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"shared/install.md","lastUpdated":1668497371000}'),e={name:"shared/install.md"},t=l("",9),o=[t];function p(c,i,r,d,C,y){return n(),a("div",null,o)}const A=s(e,[["render",p]]);export{u as __pageData,A as default};
@@ -1 +0,0 @@
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:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-gray: #8e8e93;--vp-c-text-light-1: rgba(60, 60, 67);--vp-c-text-light-2: rgba(60, 60, 67, .75);--vp-c-text-light-3: rgba(60, 60, 67, .33);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38);--vp-c-green: #10b981;--vp-c-green-light: #34d399;--vp-c-green-lighter: #6ee7b7;--vp-c-green-dark: #059669;--vp-c-green-darker: #047857;--vp-c-green-dimm-1: rgba(16, 185, 129, .05);--vp-c-green-dimm-2: rgba(16, 185, 129, .2);--vp-c-green-dimm-3: rgba(16, 185, 129, .5);--vp-c-yellow: #d97706;--vp-c-yellow-light: #f59e0b;--vp-c-yellow-lighter: #fbbf24;--vp-c-yellow-dark: #b45309;--vp-c-yellow-darker: #92400e;--vp-c-yellow-dimm-1: rgba(234, 179, 8, .05);--vp-c-yellow-dimm-2: rgba(234, 179, 8, .2);--vp-c-yellow-dimm-3: rgba(234, 179, 8, .5);--vp-c-red: #f43f5e;--vp-c-red-light: #fb7185;--vp-c-red-lighter: #fda4af;--vp-c-red-dark: #e11d48;--vp-c-red-darker: #be123c;--vp-c-red-dimm-1: rgba(244, 63, 94, .05);--vp-c-red-dimm-2: rgba(244, 63, 94, .2);--vp-c-red-dimm-3: rgba(244, 63, 94, .5);--vp-c-sponsor: #db2777}:root{--vp-c-bg: #ffffff;--vp-c-bg-elv: #ffffff;--vp-c-bg-elv-up: #ffffff;--vp-c-bg-elv-down: #f6f6f7;--vp-c-bg-elv-mute: #f6f6f7;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-soft-up: #f9f9fa;--vp-c-bg-soft-down: #e3e3e5;--vp-c-bg-soft-mute: #e3e3e5;--vp-c-bg-alt: #f6f6f7;--vp-c-border: rgba(60, 60, 67, .29);--vp-c-divider: rgba(60, 60, 67, .12);--vp-c-gutter: rgba(60, 60, 67, .12);--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white);--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-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-code: #476582;--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-mute: #f6f6f7;--vp-c-mute-light: #f9f9fc;--vp-c-mute-lighter: #ffffff;--vp-c-mute-dark: #e3e3e5;--vp-c-mute-darker: #d7d7d9}.dark{--vp-c-bg: #1e1e20;--vp-c-bg-elv: #252529;--vp-c-bg-elv-up: #313136;--vp-c-bg-elv-down: #1e1e20;--vp-c-bg-elv-mute: #313136;--vp-c-bg-soft: #252529;--vp-c-bg-soft-up: #313136;--vp-c-bg-soft-down: #1e1e20;--vp-c-bg-soft-mute: #313136;--vp-c-bg-alt: #161618;--vp-c-border: rgba(82, 82, 89, .68);--vp-c-divider: rgba(82, 82, 89, .32);--vp-c-gutter: #000000;--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black);--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-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-code: #c9def1;--vp-c-mute: #313136;--vp-c-mute-light: #3a3a3c;--vp-c-mute-lighter: #505053;--vp-c-mute-dark: #2c2c30;--vp-c-mute-darker: #252529}:root{--vp-font-family-base: "Chinese Quotes", "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-header-anchor-symbol: "#"}: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: #292b30;--vp-code-block-bg-light: #1e1e20;--vp-code-block-divider-color: #000000;--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: var(--vp-c-green-dimm-2);--vp-code-line-diff-add-symbol-color: var(--vp-c-green);--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-copy-code-border-color: transparent;--vp-code-copy-code-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-dark-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-bar-color: var(--vp-c-brand)}.dark{--vp-code-block-bg: #161618}:root{--vp-button-brand-border: var(--vp-c-brand-lighter);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-dark);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-darker);--vp-button-alt-border: var(--vp-c-border);--vp-button-alt-text: var(--vp-c-neutral);--vp-button-alt-bg: var(--vp-c-mute);--vp-button-alt-hover-border: var(--vp-c-border);--vp-button-alt-hover-text: var(--vp-c-neutral);--vp-button-alt-hover-bg: var(--vp-c-mute-dark);--vp-button-alt-active-border: var(--vp-c-border);--vp-button-alt-active-text: var(--vp-c-neutral);--vp-button-alt-active-bg: var(--vp-c-mute-darker);--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-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-border);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-bg-soft-up);--vp-custom-block-info-code-bg: var(--vp-c-bg-soft);--vp-custom-block-tip-border: var(--vp-c-green);--vp-custom-block-tip-text: var(--vp-c-green-dark);--vp-custom-block-tip-bg: var(--vp-c-bg-soft-up);--vp-custom-block-tip-code-bg: var(--vp-c-bg-soft);--vp-custom-block-warning-border: var(--vp-c-yellow);--vp-custom-block-warning-text: var(--vp-c-yellow);--vp-custom-block-warning-bg: var(--vp-c-bg-soft-up);--vp-custom-block-warning-code-bg: var(--vp-c-bg-soft);--vp-custom-block-danger-border: var(--vp-c-red);--vp-custom-block-danger-text: var(--vp-c-red);--vp-custom-block-danger-bg: var(--vp-c-bg-soft-up);--vp-custom-block-danger-code-bg: var(--vp-c-bg-soft);--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)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-hover-border-color: var(--vp-c-gray);--vp-input-switch-bg-color: var(--vp-c-mute)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg)}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}: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-border);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-bg-soft-up);--vp-badge-tip-border: var(--vp-c-green-dark);--vp-badge-tip-text: var(--vp-c-green);--vp-badge-tip-bg: var(--vp-c-green-dimm-1);--vp-badge-warning-border: var(--vp-c-yellow-dark);--vp-badge-warning-text: var(--vp-c-yellow);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);--vp-badge-danger-border: var(--vp-c-red-dark);--vp-badge-danger-text: var(--vp-c-red);--vp-badge-danger-bg: var(--vp-c-red-dimm-1)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}*,: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:style;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,li,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:var(--vp-custom-block-font-size);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 th{color:var(--vp-custom-block-info-text)}.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 th{color:var(--vp-custom-block-tip-text)}.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 th{color:var(--vp-custom-block-warning-text)}.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 th{color:var(--vp-custom-block-danger-text)}.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 th{color:var(--vp-custom-block-details-text)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600}.custom-block a:hover{text-decoration:underline}.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-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden}.vp-code-group .tabs:after{position:absolute;right:0;bottom:0;left:0;height:1px;background-color:var(--vp-code-tab-divider);content:""}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:absolute;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:10;height:1px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-]{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active{display:block}.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);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;user-select:none;opacity:0;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.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{text-decoration:underline}.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:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.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}.vp-doc .custom-block a:hover{text-decoration:underline}.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-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{direction:ltr;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:20px 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:10px}.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-code-block-divider-color);padding-top:20px;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{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);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;top:-1px;left:-65px;display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;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:2px;right:8px;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-soft-down)}.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)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.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-626dedb3]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:12px;font-weight:600;transform:translateY(-2px)}h1 .VPBadge[data-v-626dedb3],h2 .VPBadge[data-v-626dedb3],h3 .VPBadge[data-v-626dedb3],h4 .VPBadge[data-v-626dedb3],h5 .VPBadge[data-v-626dedb3],h6 .VPBadge[data-v-626dedb3]{vertical-align:top}h2 .VPBadge[data-v-626dedb3]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-626dedb3]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-626dedb3]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-626dedb3]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-626dedb3]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-6ae001e4]{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-6ae001e4]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-6ae001e4]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-6ae001e4]{top:14px;left:16px}}.VPBackdrop[data-v-2ced57be]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-2ced57be],.VPBackdrop.fade-leave-to[data-v-2ced57be]{opacity:0}.VPBackdrop.fade-leave-active[data-v-2ced57be]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-2ced57be]{display:none}}html:not(.dark) .VPImage.dark[data-v-ee23cc4a]{display:none}.dark .VPImage.light[data-v-ee23cc4a]{display:none}.title[data-v-99b006a8]{display:flex;align-items:center;border-bottom:1px solid transparent;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-99b006a8]:hover{opacity:.6}@media (min-width: 960px){.title[data-v-99b006a8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-99b006a8]{border-bottom-color:var(--vp-c-divider)}}[data-v-99b006a8] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.3.3 | 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: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-soft-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{direction:ltr;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(--5aec6b7e);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-soft-mute)}.DocSearch-Screen-Icon>svg{margin:auto}.icon[data-v-733bcbad]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s;flex-shrink:0}.VPNavBarMenuLink[data-v-b37b8ed3]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-b37b8ed3],.VPNavBarMenuLink[data-v-b37b8ed3]:hover{color:var(--vp-c-brand)}.VPMenuGroup+.VPMenuLink[data-v-4419b5df]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-4419b5df]{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-4419b5df]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-elv-mute)}.link.active[data-v-4419b5df]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-041e6720]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-041e6720]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-041e6720]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-041e6720]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-0f540d3c]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-0f540d3c] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-0f540d3c] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-0f540d3c] .group:last-child{padding-bottom:0}.VPMenu[data-v-0f540d3c] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-0f540d3c] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-0f540d3c] .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-0f540d3c] .action{padding-left:24px}.VPFlyout[data-v-fbe87e17]{position:relative}.VPFlyout[data-v-fbe87e17]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-fbe87e17]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-fbe87e17]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-fbe87e17]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-fbe87e17]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-fbe87e17],.button[aria-expanded=true]+.menu[data-v-fbe87e17]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-fbe87e17]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-fbe87e17]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-fbe87e17]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-fbe87e17]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-fbe87e17]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-fbe87e17]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPNavBarMenu[data-v-50fd6da7]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-50fd6da7]{display:flex}}.VPNavBarTranslations[data-v-5b27204f]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-5b27204f]{display:flex;align-items:center}}.title[data-v-5b27204f]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-d82da5a3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s}.VPSwitch[data-v-d82da5a3]:hover{border-color:var(--vp-input-hover-border-color)}.check[data-v-d82da5a3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s}.icon[data-v-d82da5a3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-d82da5a3] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-d82da5a3] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-b609e79a]{opacity:1}.moon[data-v-b609e79a],.dark .sun[data-v-b609e79a]{opacity:0}.dark .moon[data-v-b609e79a]{opacity:1}.dark .VPSwitchAppearance[data-v-b609e79a] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-f7e4af36]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-f7e4af36]{display:flex;align-items:center}}.VPSocialLink[data-v-29f2b9fe]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-29f2b9fe]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-29f2b9fe]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e9e5c533]{display:flex;flex-wrap:wrap;justify-content:center}.VPNavBarSocialLinks[data-v-bb81c9f8]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-bb81c9f8]{display:flex;align-items:center}}.VPNavBarExtra[data-v-2024a20c]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-2024a20c]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-2024a20c]{display:none}}.trans-title[data-v-2024a20c]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-2024a20c],.item.social-links[data-v-2024a20c]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-2024a20c]{min-width:176px}.appearance-action[data-v-2024a20c]{margin-right:-2px}.social-links-list[data-v-2024a20c]{margin:-4px -8px}.VPNavBarHamburger[data-v-540bcc63]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-540bcc63]{display:none}}.container[data-v-540bcc63]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-540bcc63]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-540bcc63]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-540bcc63]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-540bcc63]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-540bcc63]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-540bcc63]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-540bcc63],.VPNavBarHamburger.active:hover .middle[data-v-540bcc63],.VPNavBarHamburger.active:hover .bottom[data-v-540bcc63]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-540bcc63],.middle[data-v-540bcc63],.bottom[data-v-540bcc63]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-540bcc63]{top:0;left:0;transform:translate(0)}.middle[data-v-540bcc63]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-540bcc63]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-841ab9f3]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);transition:border-color .5s,background-color .5s;pointer-events:none}.VPNavBar.has-sidebar[data-v-841ab9f3]{border-bottom-color:var(--vp-c-gutter)}@media (min-width: 768px){.VPNavBar[data-v-841ab9f3]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-841ab9f3]{border-bottom-color:transparent;padding:0}.VPNavBar.fill[data-v-841ab9f3]:not(.has-sidebar){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-841ab9f3]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container[data-v-841ab9f3] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-841ab9f3]{max-width:100%}}.title[data-v-841ab9f3]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-841ab9f3]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-841ab9f3]{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)}}.content[data-v-841ab9f3]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-841ab9f3]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-841ab9f3]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-841ab9f3]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .content-body[data-v-841ab9f3],.VPNavBar.fill .content-body[data-v-841ab9f3]{position:relative;background-color:var(--vp-nav-bg-color)}}.menu+.translations[data-v-841ab9f3]:before,.menu+.appearance[data-v-841ab9f3]:before,.menu+.social-links[data-v-841ab9f3]:before,.translations+.appearance[data-v-841ab9f3]:before,.appearance+.social-links[data-v-841ab9f3]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-841ab9f3]:before,.translations+.appearance[data-v-841ab9f3]:before{margin-right:16px}.appearance+.social-links[data-v-841ab9f3]:before{margin-left:16px}.social-links[data-v-841ab9f3]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-841ab9f3]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-841ab9f3]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-841ab9f3]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenMenuLink[data-v-5a9f8596]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-5a9f8596]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-e85abaa6]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-e85abaa6]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-8f129575]{display:block}.title[data-v-8f129575]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-c595c7eb]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-c595c7eb]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-c595c7eb]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-c595c7eb]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-c595c7eb]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-c595c7eb]{transform:rotate(45deg)}.button[data-v-c595c7eb]{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-c595c7eb]:hover{color:var(--vp-c-brand)}.button-icon[data-v-c595c7eb]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-c595c7eb]:first-child{padding-top:0}.group+.group[data-v-c595c7eb],.group+.item[data-v-c595c7eb]{padding-top:4px}.VPNavScreenAppearance[data-v-080bf579]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-080bf579]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenTranslations[data-v-49b1303a]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-49b1303a]{height:auto}.title[data-v-49b1303a]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-49b1303a]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-49b1303a]{margin-right:8px}.icon.chevron[data-v-49b1303a]{margin-left:4px}.list[data-v-49b1303a]{padding:4px 0 0 24px}.link[data-v-49b1303a]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-a50ceb12]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-a50ceb12],.VPNavScreen.fade-leave-active[data-v-a50ceb12]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-a50ceb12],.VPNavScreen.fade-leave-active .container[data-v-a50ceb12]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-a50ceb12],.VPNavScreen.fade-leave-to[data-v-a50ceb12]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-a50ceb12],.VPNavScreen.fade-leave-to .container[data-v-a50ceb12]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-a50ceb12]{display:none}}.container[data-v-a50ceb12]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-a50ceb12],.menu+.appearance[data-v-a50ceb12],.translations+.appearance[data-v-a50ceb12]{margin-top:24px}.menu+.social-links[data-v-a50ceb12]{margin-top:16px}.appearance+.social-links[data-v-a50ceb12]{margin-top:16px}.VPNav[data-v-da627261]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-da627261]{position:fixed}}.root[data-v-0c23fd6b]{position:relative;z-index:1}.nested[data-v-0c23fd6b]{padding-left:13px}.outline-link[data-v-0c23fd6b]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:500}.outline-link[data-v-0c23fd6b]:hover,.outline-link.active[data-v-0c23fd6b]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-0c23fd6b]{padding-left:13px}.VPLocalNavOutlineDropdown[data-v-11846b03]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-11846b03]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-11846b03]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-11846b03]{color:var(--vp-c-text-1)}.icon[data-v-11846b03]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-11846b03] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-11846b03]{transform:rotate(90deg)}.items[data-v-11846b03]{position:absolute;left:20px;right:20px;top:64px;background-color:var(--vp-local-nav-bg-color);padding:4px 10px 16px;border:1px solid var(--vp-c-divider);border-radius:8px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.top-link[data-v-11846b03]{display:block;color:var(--vp-c-brand);font-size:13px;font-weight:500;padding:6px 0;margin:0 13px 10px;border-bottom:1px solid var(--vp-c-divider)}.flyout-enter-active[data-v-11846b03]{transition:all .2s ease-out}.flyout-leave-active[data-v-11846b03]{transition:all .15s ease-in}.flyout-enter-from[data-v-11846b03],.flyout-leave-to[data-v-11846b03]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-e9abc69f]{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-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color);transition:border-color .5s,background-color .5s}@media (min-width: 960px){.VPLocalNav[data-v-e9abc69f]{display:none}}.menu[data-v-e9abc69f]{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-e9abc69f]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-e9abc69f]{padding:0 32px}}.menu-icon[data-v-e9abc69f]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-e9abc69f]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-e9abc69f]{padding:12px 32px 11px}}.VPSidebarItem.level-0[data-v-e0f15347]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e0f15347]{padding-bottom:10px}.item[data-v-e0f15347]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e0f15347]{cursor:pointer}.indicator[data-v-e0f15347]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-e0f15347],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e0f15347],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e0f15347],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e0f15347]{background-color:var(--vp-c-brand)}.link[data-v-e0f15347]{display:flex;align-items:center;flex-grow:1}.text[data-v-e0f15347]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e0f15347]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e0f15347],.VPSidebarItem.level-2 .text[data-v-e0f15347],.VPSidebarItem.level-3 .text[data-v-e0f15347],.VPSidebarItem.level-4 .text[data-v-e0f15347],.VPSidebarItem.level-5 .text[data-v-e0f15347]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e0f15347],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e0f15347],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e0f15347],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e0f15347],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e0f15347],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e0f15347]{color:var(--vp-c-brand)}.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e0f15347],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e0f15347],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e0f15347],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e0f15347],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e0f15347],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e0f15347]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e0f15347],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e0f15347],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e0f15347],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e0f15347],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e0f15347],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e0f15347]{color:var(--vp-c-brand)}.caret[data-v-e0f15347]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s}.item:hover .caret[data-v-e0f15347]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e0f15347]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e0f15347]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e0f15347]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e0f15347],.VPSidebarItem.level-2 .items[data-v-e0f15347],.VPSidebarItem.level-3 .items[data-v-e0f15347],.VPSidebarItem.level-4 .items[data-v-e0f15347],.VPSidebarItem.level-5 .items[data-v-e0f15347]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e0f15347]{display:none}.VPSidebar[data-v-92a33b7d]{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-sidebar-bg-color);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-92a33b7d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-92a33b7d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-92a33b7d]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-92a33b7d]{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)}}@media (min-width: 960px){.curtain[data-v-92a33b7d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-92a33b7d]{outline:0}.group+.group[data-v-92a33b7d]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-92a33b7d]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPButton[data-v-8683c6b6]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-8683c6b6]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-8683c6b6]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-8683c6b6]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-8683c6b6]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-8683c6b6]: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-8683c6b6]: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-8683c6b6]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-8683c6b6]: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-8683c6b6]: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-8683c6b6]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-8683c6b6]: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-8683c6b6]: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-a2851604]{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-a2851604]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-a2851604]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-a2851604]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-a2851604]{flex-direction:row}}.main[data-v-a2851604]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-a2851604]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-a2851604]{text-align:left}}@media (min-width: 960px){.main[data-v-a2851604]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-a2851604]{max-width:592px}}.name[data-v-a2851604],.text[data-v-a2851604]{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-a2851604],.VPHero.has-image .text[data-v-a2851604]{margin:0 auto}.name[data-v-a2851604]{color:var(--vp-home-hero-name-color)}.clip[data-v-a2851604]{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-a2851604],.text[data-v-a2851604]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-a2851604],.text[data-v-a2851604]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-a2851604],.VPHero.has-image .text[data-v-a2851604]{margin:0}}.tagline[data-v-a2851604]{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-a2851604]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-a2851604]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-a2851604]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-a2851604]{margin:0}}.actions[data-v-a2851604]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-a2851604]{justify-content:center}@media (min-width: 640px){.actions[data-v-a2851604]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-a2851604]{justify-content:flex-start}}.action[data-v-a2851604]{flex-shrink:0;padding:6px}.image[data-v-a2851604]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-a2851604]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-a2851604]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-a2851604]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-a2851604]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-a2851604]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-a2851604]{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-a2851604]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-a2851604]{width:320px;height:320px}}[data-v-a2851604] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-a2851604] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-a2851604] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-1089aa16]{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-1089aa16]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg-soft-up)}.box[data-v-1089aa16]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-1089aa16] .VPImage{width:48px;height:48px;margin-bottom:20px}.icon[data-v-1089aa16]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-bg-soft-down);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-1089aa16]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-1089aa16]{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-1089aa16]{padding-top:8px}.link-text-value[data-v-1089aa16]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand)}.link-text-icon[data-v-1089aa16]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-44699a48]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-44699a48]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-44699a48]{padding:0 64px}}.container[data-v-44699a48]{margin:0 auto;max-width:1152px}.items[data-v-44699a48]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-44699a48]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-44699a48],.item.grid-4[data-v-44699a48],.item.grid-6[data-v-44699a48]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-44699a48],.item.grid-4[data-v-44699a48]{width:50%}.item.grid-3[data-v-44699a48],.item.grid-6[data-v-44699a48]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-44699a48]{width:25%}}.VPHome[data-v-00da053c]{padding-bottom:96px}.VPHome[data-v-00da053c] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-00da053c]{padding-bottom:128px}}.VPDocAsideOutline[data-v-5832db09]{display:none}.VPDocAsideOutline.has-outline[data-v-5832db09]{display:block}.content[data-v-5832db09]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-5832db09]{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-5832db09]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-32e521bb]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-32e521bb]{flex-grow:1}.VPDocAside[data-v-32e521bb] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-32e521bb] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-32e521bb] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-2a44ab51]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-2a44ab51]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-79852a81]{margin-top:64px}.edit-info[data-v-79852a81]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-79852a81]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-79852a81]{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-79852a81]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-79852a81]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-79852a81]{border-top:1px solid var(--vp-c-divider);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-79852a81]{display:flex}}.pager.has-prev[data-v-79852a81]{padding-top:8px}@media (min-width: 640px){.pager[data-v-79852a81]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-79852a81]{padding-top:0;padding-left:16px}}.pager-link[data-v-79852a81]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-79852a81]:hover{border-color:var(--vp-c-brand)}.pager-link.next[data-v-79852a81]{margin-left:auto;text-align:right}.desc[data-v-79852a81]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-79852a81]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDocOutlineDropdown[data-v-ad05624d]{margin-bottom:42px}.VPDocOutlineDropdown button[data-v-ad05624d]{display:block;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;border:1px solid var(--vp-c-border);padding:4px 12px;border-radius:8px}.VPDocOutlineDropdown button[data-v-ad05624d]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-ad05624d]{color:var(--vp-c-text-1)}.icon[data-v-ad05624d]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-ad05624d] .outline-link{font-size:13px}.open>.icon[data-v-ad05624d]{transform:rotate(90deg)}.items[data-v-ad05624d]{margin-top:10px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-75b2a91b]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-75b2a91b]{display:none}@media (min-width: 960px) and (max-width: 1280px){.VPDoc .VPDocOutlineDropdown[data-v-75b2a91b]{display:block}}@media (min-width: 768px){.VPDoc[data-v-75b2a91b]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-75b2a91b]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-75b2a91b]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-75b2a91b]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-75b2a91b]{display:flex;justify-content:center}.VPDoc .aside[data-v-75b2a91b]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-75b2a91b]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-75b2a91b]{max-width:1104px}}.container[data-v-75b2a91b]{margin:0 auto;width:100%}.aside[data-v-75b2a91b]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-75b2a91b]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-75b2a91b]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-75b2a91b]::-webkit-scrollbar{display:none}.aside-curtain[data-v-75b2a91b]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-75b2a91b]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-75b2a91b]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-75b2a91b]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-75b2a91b]{order:1;margin:0;min-width:640px}}.content-container[data-v-75b2a91b]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-75b2a91b]{max-width:688px}.NotFound[data-v-2bff0cdd]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-2bff0cdd]{padding:96px 32px 168px}}.code[data-v-2bff0cdd]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-2bff0cdd]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-2bff0cdd]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-2bff0cdd]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-2bff0cdd]{padding-top:20px}.link[data-v-2bff0cdd]{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-2bff0cdd]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPContent[data-v-e544e331]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-e544e331]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-e544e331]{margin:0}@media (min-width: 960px){.VPContent[data-v-e544e331]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-e544e331]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-e544e331]{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-b61c28e3]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-b61c28e3]{display:none}@media (min-width: 768px){.VPFooter[data-v-b61c28e3]{padding:32px}}.container[data-v-b61c28e3]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-b61c28e3],.copyright[data-v-b61c28e3]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-b61c28e3]{order:2}.copyright[data-v-b61c28e3]{order:1}.Layout[data-v-aef2e1d7]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3c7d1aeb]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-3c7d1aeb]{margin:0 auto;max-width:1152px}.love[data-v-3c7d1aeb]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-3c7d1aeb]{width:28px;height:28px;fill:currentColor}.message[data-v-3c7d1aeb]{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-3c7d1aeb]{padding-top:32px}.action[data-v-3c7d1aeb]{padding-top:40px;text-align:center}.VPTeamPage[data-v-0ca3a4f8]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-0ca3a4f8]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-0ca3a4f8-s],.VPTeamMembers+.VPTeamPageSection[data-v-0ca3a4f8-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-0ca3a4f8-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-0ca3a4f8-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-0ca3a4f8-s],.VPTeamMembers+.VPTeamPageSection[data-v-0ca3a4f8-s]{margin-top:96px}}.VPTeamMembers[data-v-0ca3a4f8-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-0ca3a4f8-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-0ca3a4f8-s]{padding:0 64px}}.VPTeamPageTitle[data-v-f80afad4]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-f80afad4]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-f80afad4]{padding:80px 64px 48px}}.title[data-v-f80afad4]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-f80afad4]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-f80afad4]{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-f80afad4]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-8fd62daa]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-8fd62daa]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-8fd62daa]{padding:0 64px}}.title[data-v-8fd62daa]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-8fd62daa]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-8fd62daa]{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-8fd62daa]{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-8fd62daa]{padding-top:40px}.VPTeamMembersItem[data-v-b80b3434]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-b80b3434]{padding:32px}.VPTeamMembersItem.small .data[data-v-b80b3434]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-b80b3434]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-b80b3434]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-b80b3434]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-b80b3434]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-b80b3434]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-b80b3434]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-b80b3434]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-b80b3434]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-b80b3434]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-b80b3434]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-b80b3434]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-b80b3434]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-b80b3434]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-b80b3434]{text-align:center}.avatar[data-v-b80b3434]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-b80b3434]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-b80b3434]{margin:0;font-weight:600}.affiliation[data-v-b80b3434]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-b80b3434]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-b80b3434]:hover{color:var(--vp-c-brand)}.desc[data-v-b80b3434]{margin:0 auto}.links[data-v-b80b3434]{display:flex;justify-content:center;height:56px}.sp-link[data-v-b80b3434]{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 .sp-link.link[data-v-b80b3434]:hover,.sp .sp-link.link[data-v-b80b3434]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-b80b3434]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6d6e593a]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6d6e593a]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6d6e593a]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6d6e593a]{max-width:876px}.VPTeamMembers.medium .container[data-v-6d6e593a]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6d6e593a]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6d6e593a]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6d6e593a]{max-width:760px}.container[data-v-6d6e593a]{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;--vp-button-brand-active-border: #a65200;--vp-button-brand-border: #be5e00;--vp-button-brand-active-bg: #a65200}