ads-fe 0.0.1

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 (608) hide show
  1. package/README.md +99 -0
  2. package/dist/cli.js +545 -0
  3. package/dist/meta.js +93 -0
  4. package/package.json +43 -0
  5. package/skill.md +66 -0
  6. package/skills/core/SKILL.md +66 -0
  7. package/skills/core/references/app-development.md +45 -0
  8. package/skills/core/references/git.md +66 -0
  9. package/skills/core/references/monorepo.md +124 -0
  10. package/skills/element-plus-vue3/LICENSE.md +405 -0
  11. package/skills/element-plus-vue3/LICENSE.txt +202 -0
  12. package/skills/element-plus-vue3/SKILL.md +218 -0
  13. package/skills/element-plus-vue3/SYNC.md +5 -0
  14. package/skills/element-plus-vue3/api/component-api.md +94 -0
  15. package/skills/element-plus-vue3/api/global-config.md +89 -0
  16. package/skills/element-plus-vue3/api/props-and-events.md +101 -0
  17. package/skills/element-plus-vue3/examples/components/button.md +99 -0
  18. package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
  19. package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
  20. package/skills/element-plus-vue3/examples/components/form.md +127 -0
  21. package/skills/element-plus-vue3/examples/components/input.md +123 -0
  22. package/skills/element-plus-vue3/examples/components/message.md +93 -0
  23. package/skills/element-plus-vue3/examples/components/overview.md +59 -0
  24. package/skills/element-plus-vue3/examples/components/select.md +133 -0
  25. package/skills/element-plus-vue3/examples/components/table.md +166 -0
  26. package/skills/element-plus-vue3/examples/guide/design.md +68 -0
  27. package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
  28. package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
  29. package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
  30. package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
  31. package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
  32. package/skills/element-plus-vue3/templates/component-usage.md +92 -0
  33. package/skills/element-plus-vue3/templates/installation.md +82 -0
  34. package/skills/element-plus-vue3/templates/project-setup.md +83 -0
  35. package/skills/node/LICENSE.md +21 -0
  36. package/skills/node/SKILL.md +94 -0
  37. package/skills/node/SYNC.md +5 -0
  38. package/skills/node/rules/assets/graceful-server.test.ts +88 -0
  39. package/skills/node/rules/assets/graceful-server.ts +80 -0
  40. package/skills/node/rules/async-patterns.md +136 -0
  41. package/skills/node/rules/caching.md +198 -0
  42. package/skills/node/rules/environment.md +253 -0
  43. package/skills/node/rules/error-handling.md +164 -0
  44. package/skills/node/rules/flaky-tests.md +439 -0
  45. package/skills/node/rules/graceful-shutdown.md +204 -0
  46. package/skills/node/rules/logging.md +205 -0
  47. package/skills/node/rules/modules.md +105 -0
  48. package/skills/node/rules/node-modules-exploration.md +172 -0
  49. package/skills/node/rules/performance.md +130 -0
  50. package/skills/node/rules/profiling.md +183 -0
  51. package/skills/node/rules/streams.md +213 -0
  52. package/skills/node/rules/stuck-processes-and-tests.md +124 -0
  53. package/skills/node/rules/testing.md +218 -0
  54. package/skills/node/rules/typescript.md +262 -0
  55. package/skills/node/tile.json +11 -0
  56. package/skills/nuxt/GENERATION.md +5 -0
  57. package/skills/nuxt/LICENSE.md +21 -0
  58. package/skills/nuxt/SKILL.md +55 -0
  59. package/skills/nuxt/SYNC.md +5 -0
  60. package/skills/nuxt/references/advanced-hooks.md +289 -0
  61. package/skills/nuxt/references/advanced-layers.md +299 -0
  62. package/skills/nuxt/references/advanced-module-authoring.md +554 -0
  63. package/skills/nuxt/references/best-practices-data-fetching.md +357 -0
  64. package/skills/nuxt/references/best-practices-ssr.md +355 -0
  65. package/skills/nuxt/references/core-cli.md +263 -0
  66. package/skills/nuxt/references/core-config.md +162 -0
  67. package/skills/nuxt/references/core-data-fetching.md +236 -0
  68. package/skills/nuxt/references/core-deployment.md +224 -0
  69. package/skills/nuxt/references/core-directory-structure.md +269 -0
  70. package/skills/nuxt/references/core-modules.md +292 -0
  71. package/skills/nuxt/references/core-routing.md +226 -0
  72. package/skills/nuxt/references/features-components-autoimport.md +328 -0
  73. package/skills/nuxt/references/features-components.md +264 -0
  74. package/skills/nuxt/references/features-composables.md +276 -0
  75. package/skills/nuxt/references/features-server.md +265 -0
  76. package/skills/nuxt/references/features-state.md +194 -0
  77. package/skills/nuxt/references/rendering-modes.md +237 -0
  78. package/skills/pinia/GENERATION.md +5 -0
  79. package/skills/pinia/LICENSE.md +21 -0
  80. package/skills/pinia/SKILL.md +59 -0
  81. package/skills/pinia/SYNC.md +5 -0
  82. package/skills/pinia/references/advanced-hmr.md +61 -0
  83. package/skills/pinia/references/advanced-nuxt.md +119 -0
  84. package/skills/pinia/references/advanced-ssr.md +121 -0
  85. package/skills/pinia/references/best-practices-outside-component.md +115 -0
  86. package/skills/pinia/references/best-practices-testing.md +212 -0
  87. package/skills/pinia/references/core-stores.md +389 -0
  88. package/skills/pinia/references/features-composables.md +114 -0
  89. package/skills/pinia/references/features-composing-stores.md +134 -0
  90. package/skills/pinia/references/features-plugins.md +203 -0
  91. package/skills/pnpm/GENERATION.md +5 -0
  92. package/skills/pnpm/LICENSE.md +21 -0
  93. package/skills/pnpm/SKILL.md +42 -0
  94. package/skills/pnpm/SYNC.md +5 -0
  95. package/skills/pnpm/references/best-practices-ci.md +285 -0
  96. package/skills/pnpm/references/best-practices-migration.md +291 -0
  97. package/skills/pnpm/references/best-practices-performance.md +284 -0
  98. package/skills/pnpm/references/core-cli.md +229 -0
  99. package/skills/pnpm/references/core-config.md +188 -0
  100. package/skills/pnpm/references/core-store.md +179 -0
  101. package/skills/pnpm/references/core-workspaces.md +205 -0
  102. package/skills/pnpm/references/features-aliases.md +168 -0
  103. package/skills/pnpm/references/features-catalogs.md +159 -0
  104. package/skills/pnpm/references/features-hooks.md +233 -0
  105. package/skills/pnpm/references/features-overrides.md +184 -0
  106. package/skills/pnpm/references/features-patches.md +201 -0
  107. package/skills/pnpm/references/features-peer-deps.md +250 -0
  108. package/skills/slidev/LICENSE.md +21 -0
  109. package/skills/slidev/README.md +61 -0
  110. package/skills/slidev/SKILL.md +189 -0
  111. package/skills/slidev/SYNC.md +5 -0
  112. package/skills/slidev/references/animation-click-marker.md +37 -0
  113. package/skills/slidev/references/animation-drawing.md +68 -0
  114. package/skills/slidev/references/animation-rough-marker.md +53 -0
  115. package/skills/slidev/references/api-slide-hooks.md +37 -0
  116. package/skills/slidev/references/build-og-image.md +36 -0
  117. package/skills/slidev/references/build-pdf.md +40 -0
  118. package/skills/slidev/references/build-remote-assets.md +34 -0
  119. package/skills/slidev/references/build-seo-meta.md +43 -0
  120. package/skills/slidev/references/code-groups.md +64 -0
  121. package/skills/slidev/references/code-import-snippet.md +55 -0
  122. package/skills/slidev/references/code-line-highlighting.md +50 -0
  123. package/skills/slidev/references/code-line-numbers.md +46 -0
  124. package/skills/slidev/references/code-magic-move.md +57 -0
  125. package/skills/slidev/references/code-max-height.md +37 -0
  126. package/skills/slidev/references/code-twoslash.md +42 -0
  127. package/skills/slidev/references/core-animations.md +196 -0
  128. package/skills/slidev/references/core-cli.md +140 -0
  129. package/skills/slidev/references/core-components.md +197 -0
  130. package/skills/slidev/references/core-exporting.md +148 -0
  131. package/skills/slidev/references/core-frontmatter.md +195 -0
  132. package/skills/slidev/references/core-global-context.md +155 -0
  133. package/skills/slidev/references/core-headmatter.md +188 -0
  134. package/skills/slidev/references/core-hosting.md +152 -0
  135. package/skills/slidev/references/core-layouts.md +286 -0
  136. package/skills/slidev/references/core-syntax.md +155 -0
  137. package/skills/slidev/references/diagram-latex.md +55 -0
  138. package/skills/slidev/references/diagram-mermaid.md +44 -0
  139. package/skills/slidev/references/diagram-plantuml.md +45 -0
  140. package/skills/slidev/references/editor-monaco-run.md +44 -0
  141. package/skills/slidev/references/editor-monaco-write.md +24 -0
  142. package/skills/slidev/references/editor-monaco.md +50 -0
  143. package/skills/slidev/references/editor-prettier.md +40 -0
  144. package/skills/slidev/references/editor-side.md +23 -0
  145. package/skills/slidev/references/editor-vscode.md +55 -0
  146. package/skills/slidev/references/layout-canvas-size.md +25 -0
  147. package/skills/slidev/references/layout-draggable.md +57 -0
  148. package/skills/slidev/references/layout-global-layers.md +50 -0
  149. package/skills/slidev/references/layout-slots.md +75 -0
  150. package/skills/slidev/references/layout-transform.md +33 -0
  151. package/skills/slidev/references/layout-zoom.md +39 -0
  152. package/skills/slidev/references/presenter-notes-ruby.md +35 -0
  153. package/skills/slidev/references/presenter-recording.md +30 -0
  154. package/skills/slidev/references/presenter-remote.md +40 -0
  155. package/skills/slidev/references/presenter-timer.md +34 -0
  156. package/skills/slidev/references/style-direction.md +34 -0
  157. package/skills/slidev/references/style-icons.md +46 -0
  158. package/skills/slidev/references/style-scoped.md +50 -0
  159. package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
  160. package/skills/slidev/references/syntax-comark.md +51 -0
  161. package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
  162. package/skills/slidev/references/syntax-importing-slides.md +60 -0
  163. package/skills/slidev/references/tool-eject-theme.md +27 -0
  164. package/skills/tsdown/LICENSE.md +22 -0
  165. package/skills/tsdown/README.md +77 -0
  166. package/skills/tsdown/SKILL.md +416 -0
  167. package/skills/tsdown/SYNC.md +5 -0
  168. package/skills/tsdown/references/README.md +139 -0
  169. package/skills/tsdown/references/advanced-benchmark.md +8 -0
  170. package/skills/tsdown/references/advanced-ci.md +89 -0
  171. package/skills/tsdown/references/advanced-hooks.md +363 -0
  172. package/skills/tsdown/references/advanced-plugins.md +381 -0
  173. package/skills/tsdown/references/advanced-programmatic.md +378 -0
  174. package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
  175. package/skills/tsdown/references/guide-getting-started.md +183 -0
  176. package/skills/tsdown/references/guide-introduction.md +42 -0
  177. package/skills/tsdown/references/guide-migrate-from-tsup.md +199 -0
  178. package/skills/tsdown/references/option-cjs-default.md +98 -0
  179. package/skills/tsdown/references/option-cleaning.md +275 -0
  180. package/skills/tsdown/references/option-config-file.md +291 -0
  181. package/skills/tsdown/references/option-css.md +301 -0
  182. package/skills/tsdown/references/option-dependencies.md +385 -0
  183. package/skills/tsdown/references/option-dts.md +251 -0
  184. package/skills/tsdown/references/option-entry.md +211 -0
  185. package/skills/tsdown/references/option-exe.md +120 -0
  186. package/skills/tsdown/references/option-lint.md +127 -0
  187. package/skills/tsdown/references/option-log-level.md +91 -0
  188. package/skills/tsdown/references/option-minification.md +177 -0
  189. package/skills/tsdown/references/option-output-directory.md +272 -0
  190. package/skills/tsdown/references/option-output-format.md +183 -0
  191. package/skills/tsdown/references/option-package-exports.md +320 -0
  192. package/skills/tsdown/references/option-platform.md +256 -0
  193. package/skills/tsdown/references/option-root.md +88 -0
  194. package/skills/tsdown/references/option-shims.md +299 -0
  195. package/skills/tsdown/references/option-sourcemap.md +301 -0
  196. package/skills/tsdown/references/option-target.md +222 -0
  197. package/skills/tsdown/references/option-tree-shaking.md +335 -0
  198. package/skills/tsdown/references/option-unbundle.md +310 -0
  199. package/skills/tsdown/references/option-watch-mode.md +261 -0
  200. package/skills/tsdown/references/recipe-react.md +338 -0
  201. package/skills/tsdown/references/recipe-solid.md +42 -0
  202. package/skills/tsdown/references/recipe-svelte.md +54 -0
  203. package/skills/tsdown/references/recipe-vue.md +387 -0
  204. package/skills/tsdown/references/recipe-wasm.md +125 -0
  205. package/skills/tsdown/references/reference-cli.md +472 -0
  206. package/skills/turborepo/LICENSE.md +7 -0
  207. package/skills/turborepo/SKILL.md +951 -0
  208. package/skills/turborepo/SYNC.md +5 -0
  209. package/skills/turborepo/command/turborepo.md +70 -0
  210. package/skills/turborepo/references/best-practices/RULE.md +241 -0
  211. package/skills/turborepo/references/best-practices/dependencies.md +246 -0
  212. package/skills/turborepo/references/best-practices/packages.md +335 -0
  213. package/skills/turborepo/references/best-practices/structure.md +297 -0
  214. package/skills/turborepo/references/boundaries/RULE.md +126 -0
  215. package/skills/turborepo/references/caching/RULE.md +153 -0
  216. package/skills/turborepo/references/caching/gotchas.md +190 -0
  217. package/skills/turborepo/references/caching/remote-cache.md +127 -0
  218. package/skills/turborepo/references/ci/RULE.md +79 -0
  219. package/skills/turborepo/references/ci/github-actions.md +162 -0
  220. package/skills/turborepo/references/ci/patterns.md +145 -0
  221. package/skills/turborepo/references/ci/vercel.md +103 -0
  222. package/skills/turborepo/references/cli/RULE.md +100 -0
  223. package/skills/turborepo/references/cli/commands.md +297 -0
  224. package/skills/turborepo/references/configuration/RULE.md +235 -0
  225. package/skills/turborepo/references/configuration/global-options.md +239 -0
  226. package/skills/turborepo/references/configuration/gotchas.md +368 -0
  227. package/skills/turborepo/references/configuration/tasks.md +325 -0
  228. package/skills/turborepo/references/environment/RULE.md +123 -0
  229. package/skills/turborepo/references/environment/gotchas.md +175 -0
  230. package/skills/turborepo/references/environment/modes.md +101 -0
  231. package/skills/turborepo/references/filtering/RULE.md +148 -0
  232. package/skills/turborepo/references/filtering/patterns.md +152 -0
  233. package/skills/turborepo/references/watch/RULE.md +99 -0
  234. package/skills/vite/GENERATION.md +5 -0
  235. package/skills/vite/LICENSE.md +21 -0
  236. package/skills/vite/SKILL.md +72 -0
  237. package/skills/vite/SYNC.md +5 -0
  238. package/skills/vite/references/build-and-ssr.md +164 -0
  239. package/skills/vite/references/core-config.md +162 -0
  240. package/skills/vite/references/core-features.md +205 -0
  241. package/skills/vite/references/core-plugin-api.md +235 -0
  242. package/skills/vite/references/environment-api.md +108 -0
  243. package/skills/vite/references/rolldown-migration.md +157 -0
  244. package/skills/vitepress/GENERATION.md +5 -0
  245. package/skills/vitepress/LICENSE.md +21 -0
  246. package/skills/vitepress/SKILL.md +65 -0
  247. package/skills/vitepress/SYNC.md +5 -0
  248. package/skills/vitepress/references/advanced-i18n.md +299 -0
  249. package/skills/vitepress/references/advanced-ssr.md +228 -0
  250. package/skills/vitepress/references/core-cli.md +119 -0
  251. package/skills/vitepress/references/core-config.md +189 -0
  252. package/skills/vitepress/references/core-markdown.md +277 -0
  253. package/skills/vitepress/references/core-routing.md +169 -0
  254. package/skills/vitepress/references/features-code-blocks.md +243 -0
  255. package/skills/vitepress/references/features-data-loading.md +220 -0
  256. package/skills/vitepress/references/features-dynamic-routes.md +235 -0
  257. package/skills/vitepress/references/features-vue.md +224 -0
  258. package/skills/vitepress/references/recipes-deploy.md +240 -0
  259. package/skills/vitepress/references/theme-config.md +315 -0
  260. package/skills/vitepress/references/theme-custom.md +269 -0
  261. package/skills/vitepress/references/theme-customization.md +290 -0
  262. package/skills/vitest/GENERATION.md +5 -0
  263. package/skills/vitest/LICENSE.md +21 -0
  264. package/skills/vitest/SKILL.md +52 -0
  265. package/skills/vitest/SYNC.md +5 -0
  266. package/skills/vitest/references/advanced-environments.md +264 -0
  267. package/skills/vitest/references/advanced-projects.md +300 -0
  268. package/skills/vitest/references/advanced-type-testing.md +237 -0
  269. package/skills/vitest/references/advanced-vi.md +249 -0
  270. package/skills/vitest/references/core-cli.md +166 -0
  271. package/skills/vitest/references/core-config.md +174 -0
  272. package/skills/vitest/references/core-describe.md +193 -0
  273. package/skills/vitest/references/core-expect.md +219 -0
  274. package/skills/vitest/references/core-hooks.md +244 -0
  275. package/skills/vitest/references/core-test-api.md +233 -0
  276. package/skills/vitest/references/features-concurrency.md +250 -0
  277. package/skills/vitest/references/features-context.md +238 -0
  278. package/skills/vitest/references/features-coverage.md +207 -0
  279. package/skills/vitest/references/features-filtering.md +211 -0
  280. package/skills/vitest/references/features-mocking.md +265 -0
  281. package/skills/vitest/references/features-snapshots.md +207 -0
  282. package/skills/vue/GENERATION.md +5 -0
  283. package/skills/vue/LICENSE.md +21 -0
  284. package/skills/vue/SKILL.md +84 -0
  285. package/skills/vue/SYNC.md +5 -0
  286. package/skills/vue/references/advanced-patterns.md +314 -0
  287. package/skills/vue/references/core-new-apis.md +264 -0
  288. package/skills/vue/references/script-setup-macros.md +204 -0
  289. package/skills/vue-best-practices/LICENSE.md +21 -0
  290. package/skills/vue-best-practices/SKILL.md +154 -0
  291. package/skills/vue-best-practices/SYNC.md +5 -0
  292. package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
  293. package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
  294. package/skills/vue-best-practices/references/component-async.md +97 -0
  295. package/skills/vue-best-practices/references/component-data-flow.md +307 -0
  296. package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
  297. package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
  298. package/skills/vue-best-practices/references/component-slots.md +216 -0
  299. package/skills/vue-best-practices/references/component-suspense.md +228 -0
  300. package/skills/vue-best-practices/references/component-teleport.md +108 -0
  301. package/skills/vue-best-practices/references/component-transition-group.md +128 -0
  302. package/skills/vue-best-practices/references/component-transition.md +125 -0
  303. package/skills/vue-best-practices/references/composables.md +290 -0
  304. package/skills/vue-best-practices/references/directives.md +162 -0
  305. package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
  306. package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
  307. package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
  308. package/skills/vue-best-practices/references/plugins.md +166 -0
  309. package/skills/vue-best-practices/references/reactivity.md +344 -0
  310. package/skills/vue-best-practices/references/render-functions.md +201 -0
  311. package/skills/vue-best-practices/references/sfc.md +310 -0
  312. package/skills/vue-best-practices/references/state-management.md +135 -0
  313. package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
  314. package/skills/vue-router-best-practices/LICENSE.md +21 -0
  315. package/skills/vue-router-best-practices/SKILL.md +23 -0
  316. package/skills/vue-router-best-practices/SYNC.md +5 -0
  317. package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
  318. package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
  319. package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
  320. package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
  321. package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
  322. package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
  323. package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
  324. package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
  325. package/skills/vue-testing-best-practices/LICENSE.md +21 -0
  326. package/skills/vue-testing-best-practices/SKILL.md +29 -0
  327. package/skills/vue-testing-best-practices/SYNC.md +5 -0
  328. package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
  329. package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
  330. package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
  331. package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
  332. package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
  333. package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
  334. package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
  335. package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
  336. package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
  337. package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
  338. package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
  339. package/skills/vueuse-functions/LICENSE.md +21 -0
  340. package/skills/vueuse-functions/SKILL.md +419 -0
  341. package/skills/vueuse-functions/SYNC.md +5 -0
  342. package/skills/vueuse-functions/references/computedAsync.md +195 -0
  343. package/skills/vueuse-functions/references/computedEager.md +62 -0
  344. package/skills/vueuse-functions/references/computedInject.md +137 -0
  345. package/skills/vueuse-functions/references/computedWithControl.md +98 -0
  346. package/skills/vueuse-functions/references/createEventHook.md +86 -0
  347. package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
  348. package/skills/vueuse-functions/references/createGlobalState.md +95 -0
  349. package/skills/vueuse-functions/references/createInjectionState.md +226 -0
  350. package/skills/vueuse-functions/references/createProjection.md +31 -0
  351. package/skills/vueuse-functions/references/createRef.md +54 -0
  352. package/skills/vueuse-functions/references/createReusableTemplate.md +361 -0
  353. package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
  354. package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
  355. package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
  356. package/skills/vueuse-functions/references/extendRef.md +76 -0
  357. package/skills/vueuse-functions/references/from.md +80 -0
  358. package/skills/vueuse-functions/references/get.md +30 -0
  359. package/skills/vueuse-functions/references/injectLocal.md +35 -0
  360. package/skills/vueuse-functions/references/isDefined.md +31 -0
  361. package/skills/vueuse-functions/references/logicAnd.md +40 -0
  362. package/skills/vueuse-functions/references/logicNot.md +36 -0
  363. package/skills/vueuse-functions/references/logicOr.md +40 -0
  364. package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
  365. package/skills/vueuse-functions/references/onClickOutside.md +228 -0
  366. package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
  367. package/skills/vueuse-functions/references/onKeyStroke.md +212 -0
  368. package/skills/vueuse-functions/references/onLongPress.md +235 -0
  369. package/skills/vueuse-functions/references/onStartTyping.md +53 -0
  370. package/skills/vueuse-functions/references/provideLocal.md +37 -0
  371. package/skills/vueuse-functions/references/reactify.md +144 -0
  372. package/skills/vueuse-functions/references/reactifyObject.md +62 -0
  373. package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
  374. package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
  375. package/skills/vueuse-functions/references/reactivePick.md +106 -0
  376. package/skills/vueuse-functions/references/refAutoReset.md +46 -0
  377. package/skills/vueuse-functions/references/refDebounced.md +81 -0
  378. package/skills/vueuse-functions/references/refDefault.md +36 -0
  379. package/skills/vueuse-functions/references/refManualReset.md +48 -0
  380. package/skills/vueuse-functions/references/refThrottled.md +99 -0
  381. package/skills/vueuse-functions/references/refWithControl.md +146 -0
  382. package/skills/vueuse-functions/references/set.md +30 -0
  383. package/skills/vueuse-functions/references/syncRef.md +195 -0
  384. package/skills/vueuse-functions/references/syncRefs.md +128 -0
  385. package/skills/vueuse-functions/references/templateRef.md +86 -0
  386. package/skills/vueuse-functions/references/toObserver.md +38 -0
  387. package/skills/vueuse-functions/references/toReactive.md +41 -0
  388. package/skills/vueuse-functions/references/toRef.md +74 -0
  389. package/skills/vueuse-functions/references/toRefs.md +78 -0
  390. package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
  391. package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
  392. package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
  393. package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
  394. package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
  395. package/skills/vueuse-functions/references/unrefElement.md +54 -0
  396. package/skills/vueuse-functions/references/until.md +161 -0
  397. package/skills/vueuse-functions/references/useAbs.md +31 -0
  398. package/skills/vueuse-functions/references/useActiveElement.md +86 -0
  399. package/skills/vueuse-functions/references/useAnimate.md +180 -0
  400. package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
  401. package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
  402. package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
  403. package/skills/vueuse-functions/references/useArrayFind.md +50 -0
  404. package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
  405. package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
  406. package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
  407. package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
  408. package/skills/vueuse-functions/references/useArrayMap.md +59 -0
  409. package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
  410. package/skills/vueuse-functions/references/useArraySome.md +59 -0
  411. package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
  412. package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
  413. package/skills/vueuse-functions/references/useAsyncState.md +185 -0
  414. package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
  415. package/skills/vueuse-functions/references/useAuth.md +123 -0
  416. package/skills/vueuse-functions/references/useAverage.md +36 -0
  417. package/skills/vueuse-functions/references/useAxios.md +325 -0
  418. package/skills/vueuse-functions/references/useBase64.md +136 -0
  419. package/skills/vueuse-functions/references/useBattery.md +80 -0
  420. package/skills/vueuse-functions/references/useBluetooth.md +174 -0
  421. package/skills/vueuse-functions/references/useBreakpoints.md +176 -0
  422. package/skills/vueuse-functions/references/useBroadcastChannel.md +73 -0
  423. package/skills/vueuse-functions/references/useBrowserLocation.md +56 -0
  424. package/skills/vueuse-functions/references/useCached.md +52 -0
  425. package/skills/vueuse-functions/references/useCeil.md +31 -0
  426. package/skills/vueuse-functions/references/useChangeCase.md +79 -0
  427. package/skills/vueuse-functions/references/useClamp.md +85 -0
  428. package/skills/vueuse-functions/references/useClipboard.md +122 -0
  429. package/skills/vueuse-functions/references/useClipboardItems.md +93 -0
  430. package/skills/vueuse-functions/references/useCloned.md +91 -0
  431. package/skills/vueuse-functions/references/useColorMode.md +172 -0
  432. package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
  433. package/skills/vueuse-functions/references/useCookies.md +162 -0
  434. package/skills/vueuse-functions/references/useCountdown.md +105 -0
  435. package/skills/vueuse-functions/references/useCounter.md +86 -0
  436. package/skills/vueuse-functions/references/useCssSupports.md +33 -0
  437. package/skills/vueuse-functions/references/useCssVar.md +50 -0
  438. package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
  439. package/skills/vueuse-functions/references/useCycleList.md +75 -0
  440. package/skills/vueuse-functions/references/useDark.md +142 -0
  441. package/skills/vueuse-functions/references/useDateFormat.md +145 -0
  442. package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
  443. package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
  444. package/skills/vueuse-functions/references/useDeviceMotion.md +80 -0
  445. package/skills/vueuse-functions/references/useDeviceOrientation.md +64 -0
  446. package/skills/vueuse-functions/references/useDevicePixelRatio.md +47 -0
  447. package/skills/vueuse-functions/references/useDevicesList.md +89 -0
  448. package/skills/vueuse-functions/references/useDisplayMedia.md +67 -0
  449. package/skills/vueuse-functions/references/useDocumentVisibility.md +44 -0
  450. package/skills/vueuse-functions/references/useDraggable.md +289 -0
  451. package/skills/vueuse-functions/references/useDrauu.md +65 -0
  452. package/skills/vueuse-functions/references/useDropZone.md +83 -0
  453. package/skills/vueuse-functions/references/useElementBounding.md +131 -0
  454. package/skills/vueuse-functions/references/useElementByPoint.md +46 -0
  455. package/skills/vueuse-functions/references/useElementHover.md +79 -0
  456. package/skills/vueuse-functions/references/useElementSize.md +79 -0
  457. package/skills/vueuse-functions/references/useElementVisibility.md +163 -0
  458. package/skills/vueuse-functions/references/useEventBus.md +101 -0
  459. package/skills/vueuse-functions/references/useEventListener.md +226 -0
  460. package/skills/vueuse-functions/references/useEventSource.md +204 -0
  461. package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
  462. package/skills/vueuse-functions/references/useEyeDropper.md +72 -0
  463. package/skills/vueuse-functions/references/useFavicon.md +69 -0
  464. package/skills/vueuse-functions/references/useFetch.md +546 -0
  465. package/skills/vueuse-functions/references/useFileDialog.md +91 -0
  466. package/skills/vueuse-functions/references/useFileSystemAccess.md +161 -0
  467. package/skills/vueuse-functions/references/useFirestore.md +129 -0
  468. package/skills/vueuse-functions/references/useFloor.md +31 -0
  469. package/skills/vueuse-functions/references/useFocus.md +99 -0
  470. package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
  471. package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
  472. package/skills/vueuse-functions/references/useFps.md +28 -0
  473. package/skills/vueuse-functions/references/useFullscreen.md +74 -0
  474. package/skills/vueuse-functions/references/useFuse.md +75 -0
  475. package/skills/vueuse-functions/references/useGamepad.md +176 -0
  476. package/skills/vueuse-functions/references/useGeolocation.md +63 -0
  477. package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
  478. package/skills/vueuse-functions/references/useIdle.md +88 -0
  479. package/skills/vueuse-functions/references/useImage.md +90 -0
  480. package/skills/vueuse-functions/references/useInfiniteScroll.md +156 -0
  481. package/skills/vueuse-functions/references/useIntersectionObserver.md +117 -0
  482. package/skills/vueuse-functions/references/useInterval.md +112 -0
  483. package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
  484. package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
  485. package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
  486. package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
  487. package/skills/vueuse-functions/references/useJwt.md +57 -0
  488. package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
  489. package/skills/vueuse-functions/references/useLastChanged.md +63 -0
  490. package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
  491. package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
  492. package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
  493. package/skills/vueuse-functions/references/useMath.md +47 -0
  494. package/skills/vueuse-functions/references/useMax.md +36 -0
  495. package/skills/vueuse-functions/references/useMediaControls.md +201 -0
  496. package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
  497. package/skills/vueuse-functions/references/useMemoize.md +175 -0
  498. package/skills/vueuse-functions/references/useMemory.md +70 -0
  499. package/skills/vueuse-functions/references/useMin.md +36 -0
  500. package/skills/vueuse-functions/references/useMounted.md +38 -0
  501. package/skills/vueuse-functions/references/useMouse.md +113 -0
  502. package/skills/vueuse-functions/references/useMouseInElement.md +132 -0
  503. package/skills/vueuse-functions/references/useMousePressed.md +116 -0
  504. package/skills/vueuse-functions/references/useMutationObserver.md +60 -0
  505. package/skills/vueuse-functions/references/useNProgress.md +78 -0
  506. package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
  507. package/skills/vueuse-functions/references/useNetwork.md +106 -0
  508. package/skills/vueuse-functions/references/useNow.md +83 -0
  509. package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
  510. package/skills/vueuse-functions/references/useObservable.md +91 -0
  511. package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
  512. package/skills/vueuse-functions/references/useOnline.md +41 -0
  513. package/skills/vueuse-functions/references/usePageLeave.md +43 -0
  514. package/skills/vueuse-functions/references/useParallax.md +58 -0
  515. package/skills/vueuse-functions/references/useParentElement.md +54 -0
  516. package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
  517. package/skills/vueuse-functions/references/usePermission.md +78 -0
  518. package/skills/vueuse-functions/references/usePointer.md +91 -0
  519. package/skills/vueuse-functions/references/usePointerLock.md +59 -0
  520. package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
  521. package/skills/vueuse-functions/references/usePrecision.md +49 -0
  522. package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
  523. package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
  524. package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
  525. package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
  526. package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
  527. package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
  528. package/skills/vueuse-functions/references/usePrevious.md +40 -0
  529. package/skills/vueuse-functions/references/useProjection.md +38 -0
  530. package/skills/vueuse-functions/references/useQRCode.md +53 -0
  531. package/skills/vueuse-functions/references/useRTDB.md +83 -0
  532. package/skills/vueuse-functions/references/useRafFn.md +68 -0
  533. package/skills/vueuse-functions/references/useRefHistory.md +285 -0
  534. package/skills/vueuse-functions/references/useResizeObserver.md +108 -0
  535. package/skills/vueuse-functions/references/useRound.md +31 -0
  536. package/skills/vueuse-functions/references/useRouteHash.md +27 -0
  537. package/skills/vueuse-functions/references/useRouteParams.md +38 -0
  538. package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
  539. package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
  540. package/skills/vueuse-functions/references/useScreenOrientation.md +98 -0
  541. package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
  542. package/skills/vueuse-functions/references/useScriptTag.md +116 -0
  543. package/skills/vueuse-functions/references/useScroll.md +238 -0
  544. package/skills/vueuse-functions/references/useScrollLock.md +66 -0
  545. package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
  546. package/skills/vueuse-functions/references/useShare.md +67 -0
  547. package/skills/vueuse-functions/references/useSortable.md +276 -0
  548. package/skills/vueuse-functions/references/useSorted.md +90 -0
  549. package/skills/vueuse-functions/references/useSpeechRecognition.md +90 -0
  550. package/skills/vueuse-functions/references/useSpeechSynthesis.md +101 -0
  551. package/skills/vueuse-functions/references/useStepper.md +137 -0
  552. package/skills/vueuse-functions/references/useStorage.md +278 -0
  553. package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
  554. package/skills/vueuse-functions/references/useStyleTag.md +131 -0
  555. package/skills/vueuse-functions/references/useSubject.md +77 -0
  556. package/skills/vueuse-functions/references/useSubscription.md +33 -0
  557. package/skills/vueuse-functions/references/useSum.md +36 -0
  558. package/skills/vueuse-functions/references/useSupported.md +29 -0
  559. package/skills/vueuse-functions/references/useSwipe.md +75 -0
  560. package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
  561. package/skills/vueuse-functions/references/useTextDirection.md +75 -0
  562. package/skills/vueuse-functions/references/useTextSelection.md +43 -0
  563. package/skills/vueuse-functions/references/useTextareaAutosize.md +94 -0
  564. package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
  565. package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
  566. package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
  567. package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
  568. package/skills/vueuse-functions/references/useTimeout.md +113 -0
  569. package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
  570. package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
  571. package/skills/vueuse-functions/references/useTimestamp.md +93 -0
  572. package/skills/vueuse-functions/references/useTitle.md +115 -0
  573. package/skills/vueuse-functions/references/useToNumber.md +54 -0
  574. package/skills/vueuse-functions/references/useToString.md +34 -0
  575. package/skills/vueuse-functions/references/useToggle.md +103 -0
  576. package/skills/vueuse-functions/references/useTransition.md +265 -0
  577. package/skills/vueuse-functions/references/useTrunc.md +33 -0
  578. package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
  579. package/skills/vueuse-functions/references/useUserMedia.md +96 -0
  580. package/skills/vueuse-functions/references/useVModel.md +182 -0
  581. package/skills/vueuse-functions/references/useVModels.md +67 -0
  582. package/skills/vueuse-functions/references/useVibrate.md +86 -0
  583. package/skills/vueuse-functions/references/useVirtualList.md +182 -0
  584. package/skills/vueuse-functions/references/useWakeLock.md +51 -0
  585. package/skills/vueuse-functions/references/useWebNotification.md +175 -0
  586. package/skills/vueuse-functions/references/useWebSocket.md +299 -0
  587. package/skills/vueuse-functions/references/useWebWorker.md +60 -0
  588. package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
  589. package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
  590. package/skills/vueuse-functions/references/useWindowScroll.md +46 -0
  591. package/skills/vueuse-functions/references/useWindowSize.md +78 -0
  592. package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
  593. package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
  594. package/skills/vueuse-functions/references/watchArray.md +53 -0
  595. package/skills/vueuse-functions/references/watchAtMost.md +63 -0
  596. package/skills/vueuse-functions/references/watchDebounced.md +101 -0
  597. package/skills/vueuse-functions/references/watchDeep.md +54 -0
  598. package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
  599. package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
  600. package/skills/vueuse-functions/references/watchImmediate.md +44 -0
  601. package/skills/vueuse-functions/references/watchOnce.md +41 -0
  602. package/skills/vueuse-functions/references/watchPausable.md +86 -0
  603. package/skills/vueuse-functions/references/watchThrottled.md +108 -0
  604. package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
  605. package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
  606. package/skills/vueuse-functions/references/whenever.md +108 -0
  607. package/skills/web-design-guidelines/SKILL.md +39 -0
  608. package/skills/web-design-guidelines/SYNC.md +5 -0
@@ -0,0 +1,204 @@
1
+ ---
2
+ category: State
3
+ related: useRefHistory
4
+ ---
5
+
6
+ # useManualRefHistory
7
+
8
+ Manually track the change history of a ref when the user calls `commit()`, also provides undo and redo functionality
9
+
10
+ ## Usage
11
+
12
+ ```ts {5} twoslash include usage
13
+ import { useManualRefHistory } from '@vueuse/core'
14
+ import { shallowRef } from 'vue'
15
+
16
+ const counter = shallowRef(0)
17
+ const { history, commit, undo, redo } = useManualRefHistory(counter)
18
+
19
+ counter.value += 1
20
+ commit()
21
+
22
+ console.log(history.value)
23
+ /* [
24
+ { snapshot: 1, timestamp: 1601912898062 },
25
+ { snapshot: 0, timestamp: 1601912898061 }
26
+ ] */
27
+ ```
28
+
29
+ You can use `undo` to reset the ref value to the last history point.
30
+
31
+ ```ts
32
+ // @include: usage
33
+ // ---cut---
34
+ console.log(counter.value) // 1
35
+ undo()
36
+ console.log(counter.value) // 0
37
+ ```
38
+
39
+ #### History of mutable objects
40
+
41
+ If you are going to mutate the source, you need to pass a custom clone function or use `clone` `true` as a param, that is a shortcut for a minimal clone function `x => JSON.parse(JSON.stringify(x))` that will be used in both `dump` and `parse`.
42
+
43
+ ```ts {5}
44
+ import { useManualRefHistory } from '@vueuse/core'
45
+ import { ref } from 'vue'
46
+
47
+ const counter = ref({ foo: 1, bar: 2 })
48
+ const { history, commit, undo, redo } = useManualRefHistory(counter, { clone: true })
49
+
50
+ counter.value.foo += 1
51
+ commit()
52
+ ```
53
+
54
+ #### Custom Clone Function
55
+
56
+ To use a full featured or custom clone function, you can set up via the `clone` options.
57
+
58
+ For example, using [structuredClone](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone):
59
+
60
+ ```ts
61
+ import { useManualRefHistory } from '@vueuse/core'
62
+
63
+ const refHistory = useManualRefHistory(target, { clone: structuredClone })
64
+ ```
65
+
66
+ Or by using [lodash's `cloneDeep`](https://lodash.com/docs/4.17.15#cloneDeep):
67
+
68
+ ```ts
69
+ import { useManualRefHistory } from '@vueuse/core'
70
+ import { cloneDeep } from 'lodash-es'
71
+
72
+ const refHistory = useManualRefHistory(target, { clone: cloneDeep })
73
+ ```
74
+
75
+ Or a more lightweight [`klona`](https://github.com/lukeed/klona):
76
+
77
+ ```ts
78
+ import { useManualRefHistory } from '@vueuse/core'
79
+ import { klona } from 'klona'
80
+
81
+ const refHistory = useManualRefHistory(target, { clone: klona })
82
+ ```
83
+
84
+ #### Custom Dump and Parse Function
85
+
86
+ Instead of using the `clone` options, you can pass custom functions to control the serialization and parsing. In case you do not need history values to be objects, this can save an extra clone when undoing. It is also useful in case you want to have the snapshots already stringified to be saved to local storage for example.
87
+
88
+ ```ts
89
+ import { useManualRefHistory } from '@vueuse/core'
90
+
91
+ const refHistory = useManualRefHistory(target, {
92
+ dump: JSON.stringify,
93
+ parse: JSON.parse,
94
+ })
95
+ ```
96
+
97
+ ### History Capacity
98
+
99
+ We will keep all the history by default (unlimited) until you explicitly clear them up, you can set the maximal amount of history to be kept by `capacity` options.
100
+
101
+ ```ts
102
+ import { useManualRefHistory } from '@vueuse/core'
103
+
104
+ const refHistory = useManualRefHistory(target, {
105
+ capacity: 15, // limit to 15 history records
106
+ })
107
+
108
+ refHistory.clear() // explicitly clear all the history
109
+ ```
110
+
111
+ ## Type Declarations
112
+
113
+ ```ts
114
+ export interface UseRefHistoryRecord<T> {
115
+ snapshot: T
116
+ timestamp: number
117
+ }
118
+ export interface UseManualRefHistoryOptions<Raw, Serialized = Raw> {
119
+ /**
120
+ * Maximum number of history to be kept. Default to unlimited.
121
+ */
122
+ capacity?: number
123
+ /**
124
+ * Clone when taking a snapshot, shortcut for dump: JSON.parse(JSON.stringify(value)).
125
+ * Default to false
126
+ *
127
+ * @default false
128
+ */
129
+ clone?: boolean | CloneFn<Raw>
130
+ /**
131
+ * Serialize data into the history
132
+ */
133
+ dump?: (v: Raw) => Serialized
134
+ /**
135
+ * Deserialize data from the history
136
+ */
137
+ parse?: (v: Serialized) => Raw
138
+ /**
139
+ * set data source
140
+ */
141
+ setSource?: (source: Ref<Raw>, v: Raw) => void
142
+ }
143
+ export interface UseManualRefHistoryReturn<Raw, Serialized> {
144
+ /**
145
+ * Bypassed tracking ref from the argument
146
+ */
147
+ source: Ref<Raw>
148
+ /**
149
+ * An array of history records for undo, newest comes to first
150
+ */
151
+ history: ComputedRef<UseRefHistoryRecord<Serialized>[]>
152
+ /**
153
+ * Last history point, source can be different if paused
154
+ */
155
+ last: Ref<UseRefHistoryRecord<Serialized>>
156
+ /**
157
+ * Same as {@link UseManualRefHistoryReturn.history | history}
158
+ */
159
+ undoStack: Ref<UseRefHistoryRecord<Serialized>[]>
160
+ /**
161
+ * Records array for redo
162
+ */
163
+ redoStack: Ref<UseRefHistoryRecord<Serialized>[]>
164
+ /**
165
+ * A ref representing if undo is possible (non empty undoStack)
166
+ */
167
+ canUndo: ComputedRef<boolean>
168
+ /**
169
+ * A ref representing if redo is possible (non empty redoStack)
170
+ */
171
+ canRedo: ComputedRef<boolean>
172
+ /**
173
+ * Undo changes
174
+ */
175
+ undo: () => void
176
+ /**
177
+ * Redo changes
178
+ */
179
+ redo: () => void
180
+ /**
181
+ * Clear all the history
182
+ */
183
+ clear: () => void
184
+ /**
185
+ * Create a new history record
186
+ */
187
+ commit: () => void
188
+ /**
189
+ * Reset ref's value with latest history
190
+ */
191
+ reset: () => void
192
+ }
193
+ /**
194
+ * Track the change history of a ref, also provides undo and redo functionality.
195
+ *
196
+ * @see https://vueuse.org/useManualRefHistory
197
+ * @param source
198
+ * @param options
199
+ */
200
+ export declare function useManualRefHistory<Raw, Serialized = Raw>(
201
+ source: Ref<Raw>,
202
+ options?: UseManualRefHistoryOptions<Raw, Serialized>,
203
+ ): UseManualRefHistoryReturn<Raw, Serialized>
204
+ ```
@@ -0,0 +1,47 @@
1
+ ---
2
+ category: '@Math'
3
+ ---
4
+
5
+ # useMath
6
+
7
+ Reactive `Math` methods.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useMath } from '@vueuse/math'
13
+
14
+ const base = ref(2)
15
+ const exponent = ref(3)
16
+ const result = useMath('pow', base, exponent) // Ref<8>
17
+
18
+ const num = ref(2)
19
+ const root = useMath('sqrt', num) // Ref<1.4142135623730951>
20
+
21
+ num.value = 4
22
+ console.log(root.value) // 2
23
+ ```
24
+
25
+ ## Type Declarations
26
+
27
+ ```ts
28
+ export type UseMathKeys = keyof {
29
+ [K in keyof Math as Math[K] extends (...args: any) => any
30
+ ? K
31
+ : never]: unknown
32
+ }
33
+ export type UseMathReturn<K extends keyof Math> = ReturnType<
34
+ Reactified<Math[K], true>
35
+ >
36
+ /**
37
+ * Reactive `Math` methods.
38
+ *
39
+ * @see https://vueuse.org/useMath
40
+ *
41
+ * @__NO_SIDE_EFFECTS__
42
+ */
43
+ export declare function useMath<K extends keyof Math>(
44
+ key: K,
45
+ ...args: ArgumentsType<Reactified<Math[K], true>>
46
+ ): UseMathReturn<K>
47
+ ```
@@ -0,0 +1,36 @@
1
+ ---
2
+ category: '@Math'
3
+ ---
4
+
5
+ # useMax
6
+
7
+ Reactive `Math.max`.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useMax } from '@vueuse/math'
13
+
14
+ const array = ref([1, 2, 3, 4])
15
+ const max = useMax(array) // Ref<4>
16
+ ```
17
+
18
+ ```ts
19
+ import { useMax } from '@vueuse/math'
20
+
21
+ const a = ref(1)
22
+ const b = ref(3)
23
+
24
+ const max = useMax(a, b, 2) // Ref<3>
25
+ ```
26
+
27
+ ## Type Declarations
28
+
29
+ ```ts
30
+ export declare function useMax(
31
+ array: MaybeRefOrGetter<MaybeRefOrGetter<number>[]>,
32
+ ): ComputedRef<number>
33
+ export declare function useMax(
34
+ ...args: MaybeRefOrGetter<number>[]
35
+ ): ComputedRef<number>
36
+ ```
@@ -0,0 +1,201 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useMediaControls
6
+
7
+ Reactive media controls for both `audio` and `video` elements
8
+
9
+ ## Usage
10
+
11
+ ### Basic Usage
12
+
13
+ ```vue
14
+ <script setup lang="ts">
15
+ import { useMediaControls } from '@vueuse/core'
16
+ import { onMounted, useTemplateRef } from 'vue'
17
+
18
+ const video = useTemplateRef('video')
19
+ const { playing, currentTime, duration, volume } = useMediaControls(video, {
20
+ src: 'video.mp4',
21
+ })
22
+
23
+ // Change initial media properties
24
+ onMounted(() => {
25
+ volume.value = 0.5
26
+ currentTime.value = 60
27
+ })
28
+ </script>
29
+
30
+ <template>
31
+ <video ref="video" />
32
+ <button @click="playing = !playing">
33
+ Play / Pause
34
+ </button>
35
+ <span>{{ currentTime }} / {{ duration }}</span>
36
+ </template>
37
+ ```
38
+
39
+ ### Providing Captions, Subtitles, etc...
40
+
41
+ You can provide captions, subtitles, etc in the `tracks` options of the
42
+ `useMediaControls` function. The function will return an array of tracks
43
+ along with two functions for controlling them, `enableTrack`, `disableTrack`, and `selectedTrack`.
44
+ Using these you can manage the currently selected track. `selectedTrack` will
45
+ be `-1` if there is no selected track.
46
+
47
+ ```vue
48
+ <script setup lang="ts">
49
+ import { useMediaControls } from '@vueuse/core'
50
+ import { useTemplateRef } from 'vue'
51
+
52
+ const video = useTemplateRef('video')
53
+ const {
54
+ tracks,
55
+ enableTrack
56
+ } = useMediaControls(video, {
57
+ src: 'video.mp4',
58
+ tracks: [
59
+ {
60
+ default: true,
61
+ src: './subtitles.vtt',
62
+ kind: 'subtitles',
63
+ label: 'English',
64
+ srcLang: 'en',
65
+ },
66
+ ]
67
+ })
68
+ </script>
69
+
70
+ <template>
71
+ <video ref="video" />
72
+ <button v-for="track in tracks" :key="track.id" @click="enableTrack(track)">
73
+ {{ track.label }}
74
+ </button>
75
+ </template>
76
+ ```
77
+
78
+ ## Type Declarations
79
+
80
+ ```ts
81
+ /**
82
+ * Many of the jsdoc definitions here are modified version of the
83
+ * documentation from MDN(https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement)
84
+ */
85
+ export interface UseMediaSource {
86
+ /**
87
+ * The source url for the media
88
+ */
89
+ src: string
90
+ /**
91
+ * The media codec type
92
+ */
93
+ type?: string
94
+ /**
95
+ * Specifies the media query for the resource's intended media.
96
+ */
97
+ media?: string
98
+ }
99
+ export interface UseMediaTextTrackSource {
100
+ /**
101
+ * Indicates that the track should be enabled unless the user's preferences indicate
102
+ * that another track is more appropriate
103
+ */
104
+ default?: boolean
105
+ /**
106
+ * How the text track is meant to be used. If omitted the default kind is subtitles.
107
+ */
108
+ kind: TextTrackKind
109
+ /**
110
+ * A user-readable title of the text track which is used by the browser
111
+ * when listing available text tracks.
112
+ */
113
+ label: string
114
+ /**
115
+ * Address of the track (.vtt file). Must be a valid URL. This attribute
116
+ * must be specified and its URL value must have the same origin as the document
117
+ */
118
+ src: string
119
+ /**
120
+ * Language of the track text data. It must be a valid BCP 47 language tag.
121
+ * If the kind attribute is set to subtitles, then srclang must be defined.
122
+ */
123
+ srcLang: string
124
+ }
125
+ interface UseMediaControlsOptions extends ConfigurableDocument {
126
+ /**
127
+ * The source for the media, may either be a string, a `UseMediaSource` object, or a list
128
+ * of `UseMediaSource` objects.
129
+ */
130
+ src?: MaybeRefOrGetter<string | UseMediaSource | UseMediaSource[]>
131
+ /**
132
+ * A list of text tracks for the media
133
+ */
134
+ tracks?: MaybeRefOrGetter<UseMediaTextTrackSource[]>
135
+ }
136
+ export interface UseMediaTextTrack {
137
+ /**
138
+ * The index of the text track
139
+ */
140
+ id: number
141
+ /**
142
+ * The text track label
143
+ */
144
+ label: string
145
+ /**
146
+ * Language of the track text data. It must be a valid BCP 47 language tag.
147
+ * If the kind attribute is set to subtitles, then srclang must be defined.
148
+ */
149
+ language: string
150
+ /**
151
+ * Specifies the display mode of the text track, either `disabled`,
152
+ * `hidden`, or `showing`
153
+ */
154
+ mode: TextTrackMode
155
+ /**
156
+ * How the text track is meant to be used. If omitted the default kind is subtitles.
157
+ */
158
+ kind: TextTrackKind
159
+ /**
160
+ * Indicates the track's in-band metadata track dispatch type.
161
+ */
162
+ inBandMetadataTrackDispatchType: string
163
+ /**
164
+ * A list of text track cues
165
+ */
166
+ cues: TextTrackCueList | null
167
+ /**
168
+ * A list of active text track cues
169
+ */
170
+ activeCues: TextTrackCueList | null
171
+ }
172
+ export interface UseMediaControlsReturn {
173
+ currentTime: ShallowRef<number>
174
+ duration: ShallowRef<number>
175
+ waiting: ShallowRef<boolean>
176
+ seeking: ShallowRef<boolean>
177
+ ended: ShallowRef<boolean>
178
+ stalled: ShallowRef<boolean>
179
+ buffered: ShallowRef<[number, number][]>
180
+ playing: ShallowRef<boolean>
181
+ rate: ShallowRef<number>
182
+ volume: ShallowRef<number>
183
+ muted: ShallowRef<boolean>
184
+ tracks: ShallowRef<UseMediaTextTrack[]>
185
+ selectedTrack: ShallowRef<number>
186
+ enableTrack: (
187
+ track: number | UseMediaTextTrack,
188
+ disableTracks?: boolean,
189
+ ) => void
190
+ disableTrack: (track?: number | UseMediaTextTrack) => void
191
+ supportsPictureInPicture: boolean
192
+ togglePictureInPicture: () => Promise<PictureInPictureWindow | void>
193
+ isPictureInPicture: ShallowRef<boolean>
194
+ onSourceError: EventHookOn<Event>
195
+ onPlaybackError: EventHookOn<Event>
196
+ }
197
+ export declare function useMediaControls(
198
+ target: MaybeRef<HTMLMediaElement | null | undefined>,
199
+ options?: UseMediaControlsOptions,
200
+ ): UseMediaControlsReturn
201
+ ```
@@ -0,0 +1,53 @@
1
+ ---
2
+ category: Browser
3
+ ---
4
+
5
+ # useMediaQuery
6
+
7
+ Reactive [Media Query](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Testing_media_queries). Once you've created a MediaQueryList object, you can check the result of the query or receive notifications when the result changes.
8
+
9
+ ## Usage
10
+
11
+ ```ts
12
+ import { useMediaQuery } from '@vueuse/core'
13
+
14
+ const isLargeScreen = useMediaQuery('(min-width: 1024px)')
15
+ const isPreferredDark = useMediaQuery('(prefers-color-scheme: dark)')
16
+ ```
17
+
18
+ #### Server Side Rendering and Nuxt
19
+
20
+ If you are using `useMediaQuery` with SSR enabled, then you need to specify which screen size you would like to render on the server and before hydration to avoid an hydration mismatch
21
+
22
+ ```ts
23
+ import { useMediaQuery } from '@vueuse/core'
24
+
25
+ const isLarge = useMediaQuery('(min-width: 1024px)', {
26
+ ssrWidth: 768 // Will enable SSR mode and render like if the screen was 768px wide
27
+ })
28
+
29
+ console.log(isLarge.value) // always false because ssrWidth of 768px is smaller than 1024px
30
+ onMounted(() => {
31
+ console.log(isLarge.value) // false if screen is smaller than 1024px, true if larger than 1024px
32
+ })
33
+ ```
34
+
35
+ Alternatively you can set this up globally for your app using [`provideSSRWidth`](../useSSRWidth/index.md)
36
+
37
+ ## Type Declarations
38
+
39
+ ```ts
40
+ /**
41
+ * Reactive Media Query.
42
+ *
43
+ * @see https://vueuse.org/useMediaQuery
44
+ * @param query
45
+ * @param options
46
+ */
47
+ export declare function useMediaQuery(
48
+ query: MaybeRefOrGetter<string>,
49
+ options?: ConfigurableWindow & {
50
+ ssrWidth?: number
51
+ },
52
+ ): ComputedRef<boolean>
53
+ ```
@@ -0,0 +1,175 @@
1
+ ---
2
+ category: Utilities
3
+ ---
4
+
5
+ # useMemoize
6
+
7
+ Cache results of functions depending on arguments and keep it reactive. It can also be used for asynchronous functions and will reuse existing promises to avoid fetching the same data at the same time.
8
+
9
+ ::: tip
10
+ The results are not cleared automatically. Call `clear()` in case you no longer need the results or use own caching mechanism to avoid memory leaks.
11
+ :::
12
+
13
+ ## Usage
14
+
15
+ ```ts
16
+ import { useMemoize } from '@vueuse/core'
17
+
18
+ const getUser = useMemoize(
19
+ async (userId: number): Promise<UserData> =>
20
+ axios.get(`users/${userId}`).then(({ data }) => data),
21
+ )
22
+
23
+ const user1 = await getUser(1) // Request users/1
24
+ const user2 = await getUser(2) // Request users/2
25
+ // ...
26
+ const user1 = await getUser(1) // Retrieve from cache
27
+
28
+ // ...
29
+ const user1 = await getUser.load(1) // Request users/1
30
+
31
+ // ...
32
+ getUser.delete(1) // Delete cache from user 1
33
+ getUser.clear() // Clear full cache
34
+ ```
35
+
36
+ Combine with `computed` or `computedAsync` to achieve reactivity:
37
+
38
+ ```ts
39
+ import { computedAsync, useMemoize } from '@vueuse/core'
40
+
41
+ const getUser = useMemoize(
42
+ async (userId: number): Promise<UserData> =>
43
+ axios.get(`users/${userId}`).then(({ data }) => data),
44
+ )
45
+ // ---cut---
46
+ const user1 = computedAsync(() => getUser(1))
47
+ // ...
48
+ await getUser.load(1) // Will also update user1
49
+ ```
50
+
51
+ ### Resolving cache key
52
+
53
+ The key for caching is determined by the arguments given to the function and will be serialized by default with `JSON.stringify`.
54
+ This will allow equal objects to receive the same cache key. In case you want to customize the key you can pass `getKey`
55
+
56
+ ::: warning Performance Consideration
57
+ Using `JSON.stringify` as the default key generator can be **slow for large or complex objects**. For better performance with complex arguments, it's highly recommended to provide a custom `getKey` function that generates keys based on primitive values or unique identifiers.
58
+ :::
59
+
60
+ #### Basic Example
61
+
62
+ ```ts
63
+ import { useMemoize } from '@vueuse/core'
64
+ // ---cut---
65
+ const getUser = useMemoize(
66
+ async (userId: number, headers: AxiosRequestHeaders): Promise<UserData> =>
67
+ axios.get(`users/${userId}`, { headers }).then(({ data }) => data),
68
+ {
69
+ // Use only userId to get/set cache and ignore headers
70
+ getKey: (userId, headers) => userId,
71
+ },
72
+ )
73
+ ```
74
+
75
+ ### Customize cache mechanism
76
+
77
+ By default, the results are cached within a `Map`. You can implement your own mechanism by passing `cache` as options with following structure:
78
+
79
+ ```ts
80
+ export interface MemoizeCache<Key, Value> {
81
+ /**
82
+ * Get value for key
83
+ */
84
+ get: (key: Key) => Value | undefined
85
+ /**
86
+ * Set value for key
87
+ */
88
+ set: (key: Key, value: Value) => void
89
+ /**
90
+ * Return flag if key exists
91
+ */
92
+ has: (key: Key) => boolean
93
+ /**
94
+ * Delete value for key
95
+ */
96
+ delete: (key: Key) => void
97
+ /**
98
+ * Clear cache
99
+ */
100
+ clear: () => void
101
+ }
102
+ ```
103
+
104
+ ## Type Declarations
105
+
106
+ ```ts
107
+ type CacheKey = any
108
+ /**
109
+ * Custom memoize cache handler
110
+ */
111
+ export interface UseMemoizeCache<Key, Value> {
112
+ /**
113
+ * Get value for key
114
+ */
115
+ get: (key: Key) => Value | undefined
116
+ /**
117
+ * Set value for key
118
+ */
119
+ set: (key: Key, value: Value) => void
120
+ /**
121
+ * Return flag if key exists
122
+ */
123
+ has: (key: Key) => boolean
124
+ /**
125
+ * Delete value for key
126
+ */
127
+ delete: (key: Key) => void
128
+ /**
129
+ * Clear cache
130
+ */
131
+ clear: () => void
132
+ }
133
+ /**
134
+ * Memoized function
135
+ */
136
+ export interface UseMemoizeReturn<Result, Args extends unknown[]> {
137
+ /**
138
+ * Get result from cache or call memoized function
139
+ */
140
+ (...args: Args): Result
141
+ /**
142
+ * Call memoized function and update cache
143
+ */
144
+ load: (...args: Args) => Result
145
+ /**
146
+ * Delete cache of given arguments
147
+ */
148
+ delete: (...args: Args) => void
149
+ /**
150
+ * Clear cache
151
+ */
152
+ clear: () => void
153
+ /**
154
+ * Generate cache key for given arguments
155
+ */
156
+ generateKey: (...args: Args) => CacheKey
157
+ /**
158
+ * Cache container
159
+ */
160
+ cache: UseMemoizeCache<CacheKey, Result>
161
+ }
162
+ export interface UseMemoizeOptions<Result, Args extends unknown[]> {
163
+ getKey?: (...args: Args) => string | number
164
+ cache?: UseMemoizeCache<CacheKey, Result>
165
+ }
166
+ /**
167
+ * Reactive function result cache based on arguments
168
+ *
169
+ * @__NO_SIDE_EFFECTS__
170
+ */
171
+ export declare function useMemoize<Result, Args extends unknown[]>(
172
+ resolver: (...args: Args) => Result,
173
+ options?: UseMemoizeOptions<Result, Args>,
174
+ ): UseMemoizeReturn<Result, Args>
175
+ ```