aico-cli 2.1.7 → 2.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli/README.md +1 -1
- package/bin/cli/cli.js +8672 -3345
- package/bin/cli/package.json +1 -1
- package/bin/cli/sdk-tools.d.ts +41 -5
- package/dist/chunks/simple-config.mjs +1 -1
- package/package.json +2 -2
- package/templates/skills/antfu/SKILL.md +222 -0
- package/templates/skills/antfu/references/antfu-eslint-config.md +328 -0
- package/templates/skills/antfu/references/app-development.md +60 -0
- package/templates/skills/antfu/references/github-actions.md +68 -0
- package/templates/skills/antfu/references/gitignore.md +29 -0
- package/templates/skills/antfu/references/library-development.md +85 -0
- package/templates/skills/antfu/references/monorepo.md +126 -0
- package/templates/skills/antfu/references/vscode-extensions.md +34 -0
- package/templates/skills/nuxt/GENERATION.md +5 -0
- package/templates/skills/nuxt/SKILL.md +55 -0
- package/templates/skills/nuxt/references/advanced-hooks.md +289 -0
- package/templates/skills/nuxt/references/advanced-layers.md +299 -0
- package/templates/skills/nuxt/references/advanced-module-authoring.md +554 -0
- package/templates/skills/nuxt/references/best-practices-data-fetching.md +357 -0
- package/templates/skills/nuxt/references/best-practices-ssr.md +355 -0
- package/templates/skills/nuxt/references/core-cli.md +263 -0
- package/templates/skills/nuxt/references/core-config.md +162 -0
- package/templates/skills/nuxt/references/core-data-fetching.md +236 -0
- package/templates/skills/nuxt/references/core-deployment.md +224 -0
- package/templates/skills/nuxt/references/core-directory-structure.md +269 -0
- package/templates/skills/nuxt/references/core-modules.md +292 -0
- package/templates/skills/nuxt/references/core-routing.md +226 -0
- package/templates/skills/nuxt/references/features-components-autoimport.md +328 -0
- package/templates/skills/nuxt/references/features-components.md +264 -0
- package/templates/skills/nuxt/references/features-composables.md +276 -0
- package/templates/skills/nuxt/references/features-server.md +265 -0
- package/templates/skills/nuxt/references/features-state.md +194 -0
- package/templates/skills/nuxt/references/rendering-modes.md +237 -0
- package/templates/skills/pinia/GENERATION.md +5 -0
- package/templates/skills/pinia/SKILL.md +59 -0
- package/templates/skills/pinia/references/advanced-hmr.md +61 -0
- package/templates/skills/pinia/references/advanced-nuxt.md +119 -0
- package/templates/skills/pinia/references/advanced-ssr.md +121 -0
- package/templates/skills/pinia/references/best-practices-outside-component.md +115 -0
- package/templates/skills/pinia/references/best-practices-testing.md +212 -0
- package/templates/skills/pinia/references/core-stores.md +389 -0
- package/templates/skills/pinia/references/features-composables.md +114 -0
- package/templates/skills/pinia/references/features-composing-stores.md +134 -0
- package/templates/skills/pinia/references/features-plugins.md +203 -0
- package/templates/skills/pnpm/GENERATION.md +5 -0
- package/templates/skills/pnpm/SKILL.md +42 -0
- package/templates/skills/pnpm/references/best-practices-ci.md +285 -0
- package/templates/skills/pnpm/references/best-practices-migration.md +291 -0
- package/templates/skills/pnpm/references/best-practices-performance.md +284 -0
- package/templates/skills/pnpm/references/core-cli.md +229 -0
- package/templates/skills/pnpm/references/core-config.md +188 -0
- package/templates/skills/pnpm/references/core-store.md +179 -0
- package/templates/skills/pnpm/references/core-workspaces.md +205 -0
- package/templates/skills/pnpm/references/features-aliases.md +168 -0
- package/templates/skills/pnpm/references/features-catalogs.md +159 -0
- package/templates/skills/pnpm/references/features-hooks.md +233 -0
- package/templates/skills/pnpm/references/features-overrides.md +184 -0
- package/templates/skills/pnpm/references/features-patches.md +201 -0
- package/templates/skills/pnpm/references/features-peer-deps.md +250 -0
- package/templates/skills/slidev/LICENSE.md +21 -0
- package/templates/skills/slidev/README.md +61 -0
- package/templates/skills/slidev/SKILL.md +183 -0
- package/templates/skills/slidev/SYNC.md +5 -0
- package/templates/skills/slidev/references/animation-click-marker.md +37 -0
- package/templates/skills/slidev/references/animation-drawing.md +68 -0
- package/templates/skills/slidev/references/animation-rough-marker.md +53 -0
- package/templates/skills/slidev/references/api-slide-hooks.md +37 -0
- package/templates/skills/slidev/references/build-og-image.md +36 -0
- package/templates/skills/slidev/references/build-pdf.md +40 -0
- package/templates/skills/slidev/references/build-remote-assets.md +34 -0
- package/templates/skills/slidev/references/build-seo-meta.md +43 -0
- package/templates/skills/slidev/references/code-groups.md +64 -0
- package/templates/skills/slidev/references/code-import-snippet.md +55 -0
- package/templates/skills/slidev/references/code-line-highlighting.md +50 -0
- package/templates/skills/slidev/references/code-line-numbers.md +46 -0
- package/templates/skills/slidev/references/code-magic-move.md +57 -0
- package/templates/skills/slidev/references/code-max-height.md +37 -0
- package/templates/skills/slidev/references/code-twoslash.md +42 -0
- package/templates/skills/slidev/references/core-animations.md +196 -0
- package/templates/skills/slidev/references/core-cli.md +140 -0
- package/templates/skills/slidev/references/core-components.md +197 -0
- package/templates/skills/slidev/references/core-exporting.md +148 -0
- package/templates/skills/slidev/references/core-frontmatter.md +195 -0
- package/templates/skills/slidev/references/core-global-context.md +155 -0
- package/templates/skills/slidev/references/core-headmatter.md +188 -0
- package/templates/skills/slidev/references/core-hosting.md +152 -0
- package/templates/skills/slidev/references/core-layouts.md +286 -0
- package/templates/skills/slidev/references/core-syntax.md +155 -0
- package/templates/skills/slidev/references/diagram-latex.md +55 -0
- package/templates/skills/slidev/references/diagram-mermaid.md +44 -0
- package/templates/skills/slidev/references/diagram-plantuml.md +45 -0
- package/templates/skills/slidev/references/editor-monaco-run.md +44 -0
- package/templates/skills/slidev/references/editor-monaco-write.md +24 -0
- package/templates/skills/slidev/references/editor-monaco.md +50 -0
- package/templates/skills/slidev/references/editor-prettier.md +40 -0
- package/templates/skills/slidev/references/editor-side.md +23 -0
- package/templates/skills/slidev/references/editor-vscode.md +55 -0
- package/templates/skills/slidev/references/layout-canvas-size.md +25 -0
- package/templates/skills/slidev/references/layout-draggable.md +57 -0
- package/templates/skills/slidev/references/layout-global-layers.md +50 -0
- package/templates/skills/slidev/references/layout-slots.md +75 -0
- package/templates/skills/slidev/references/layout-transform.md +33 -0
- package/templates/skills/slidev/references/layout-zoom.md +39 -0
- package/templates/skills/slidev/references/presenter-notes-ruby.md +35 -0
- package/templates/skills/slidev/references/presenter-recording.md +30 -0
- package/templates/skills/slidev/references/presenter-remote.md +40 -0
- package/templates/skills/slidev/references/presenter-timer.md +34 -0
- package/templates/skills/slidev/references/style-direction.md +34 -0
- package/templates/skills/slidev/references/style-icons.md +46 -0
- package/templates/skills/slidev/references/style-scoped.md +50 -0
- package/templates/skills/slidev/references/syntax-block-frontmatter.md +39 -0
- package/templates/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
- package/templates/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/templates/skills/slidev/references/syntax-mdc.md +51 -0
- package/templates/skills/slidev/references/tool-eject-theme.md +27 -0
- package/templates/skills/tech-whitepaper/SKILL.md +102 -15
- package/templates/skills/tsdown/GENERATION.md +5 -0
- package/templates/skills/tsdown/SKILL.md +59 -0
- package/templates/skills/tsdown/references/advanced-hooks.md +87 -0
- package/templates/skills/tsdown/references/advanced-plugins.md +97 -0
- package/templates/skills/tsdown/references/advanced-programmatic.md +78 -0
- package/templates/skills/tsdown/references/advanced-rolldown-options.md +114 -0
- package/templates/skills/tsdown/references/core-cli.md +116 -0
- package/templates/skills/tsdown/references/core-config.md +86 -0
- package/templates/skills/tsdown/references/core-entry.md +74 -0
- package/templates/skills/tsdown/references/features-optimization.md +83 -0
- package/templates/skills/tsdown/references/features-shims.md +92 -0
- package/templates/skills/tsdown/references/features-unbundle.md +63 -0
- package/templates/skills/tsdown/references/features-watch.md +60 -0
- package/templates/skills/tsdown/references/options-dependencies.md +88 -0
- package/templates/skills/tsdown/references/options-dts.md +104 -0
- package/templates/skills/tsdown/references/options-output.md +124 -0
- package/templates/skills/tsdown/references/options-package-exports.md +114 -0
- package/templates/skills/tsdown/references/recipes-frameworks.md +109 -0
- package/templates/skills/tsdown/references/recipes-migration.md +84 -0
- package/templates/skills/turborepo/LICENSE.md +7 -0
- package/templates/skills/turborepo/SKILL.md +914 -0
- package/templates/skills/turborepo/SYNC.md +5 -0
- package/templates/skills/turborepo/command/turborepo.md +70 -0
- package/templates/skills/turborepo/references/best-practices/README.md +241 -0
- package/templates/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/templates/skills/turborepo/references/best-practices/packages.md +335 -0
- package/templates/skills/turborepo/references/best-practices/structure.md +269 -0
- package/templates/skills/turborepo/references/boundaries/README.md +126 -0
- package/templates/skills/turborepo/references/caching/README.md +107 -0
- package/templates/skills/turborepo/references/caching/gotchas.md +169 -0
- package/templates/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/templates/skills/turborepo/references/ci/README.md +79 -0
- package/templates/skills/turborepo/references/ci/github-actions.md +162 -0
- package/templates/skills/turborepo/references/ci/patterns.md +145 -0
- package/templates/skills/turborepo/references/ci/vercel.md +103 -0
- package/templates/skills/turborepo/references/cli/README.md +100 -0
- package/templates/skills/turborepo/references/cli/commands.md +297 -0
- package/templates/skills/turborepo/references/configuration/README.md +211 -0
- package/templates/skills/turborepo/references/configuration/global-options.md +195 -0
- package/templates/skills/turborepo/references/configuration/gotchas.md +348 -0
- package/templates/skills/turborepo/references/configuration/tasks.md +285 -0
- package/templates/skills/turborepo/references/environment/README.md +96 -0
- package/templates/skills/turborepo/references/environment/gotchas.md +145 -0
- package/templates/skills/turborepo/references/environment/modes.md +101 -0
- package/templates/skills/turborepo/references/filtering/README.md +148 -0
- package/templates/skills/turborepo/references/filtering/patterns.md +152 -0
- package/templates/skills/turborepo/references/watch/README.md +99 -0
- package/templates/skills/unocss/GENERATION.md +5 -0
- package/templates/skills/unocss/SKILL.md +64 -0
- package/templates/skills/unocss/references/core-config.md +187 -0
- package/templates/skills/unocss/references/core-extracting.md +137 -0
- package/templates/skills/unocss/references/core-layers.md +104 -0
- package/templates/skills/unocss/references/core-rules.md +166 -0
- package/templates/skills/unocss/references/core-safelist.md +105 -0
- package/templates/skills/unocss/references/core-shortcuts.md +89 -0
- package/templates/skills/unocss/references/core-theme.md +172 -0
- package/templates/skills/unocss/references/core-variants.md +175 -0
- package/templates/skills/unocss/references/integrations-nuxt.md +199 -0
- package/templates/skills/unocss/references/integrations-vite.md +283 -0
- package/templates/skills/unocss/references/preset-attributify.md +142 -0
- package/templates/skills/unocss/references/preset-icons.md +184 -0
- package/templates/skills/unocss/references/preset-mini.md +158 -0
- package/templates/skills/unocss/references/preset-rem-to-px.md +97 -0
- package/templates/skills/unocss/references/preset-tagify.md +134 -0
- package/templates/skills/unocss/references/preset-typography.md +95 -0
- package/templates/skills/unocss/references/preset-web-fonts.md +91 -0
- package/templates/skills/unocss/references/preset-wind3.md +194 -0
- package/templates/skills/unocss/references/preset-wind4.md +247 -0
- package/templates/skills/unocss/references/transformer-attributify-jsx.md +156 -0
- package/templates/skills/unocss/references/transformer-compile-class.md +128 -0
- package/templates/skills/unocss/references/transformer-directives.md +157 -0
- package/templates/skills/unocss/references/transformer-variant-group.md +97 -0
- package/templates/skills/vite/GENERATION.md +5 -0
- package/templates/skills/vite/SKILL.md +50 -0
- package/templates/skills/vite/references/advanced-api.md +218 -0
- package/templates/skills/vite/references/advanced-backend.md +164 -0
- package/templates/skills/vite/references/advanced-performance.md +168 -0
- package/templates/skills/vite/references/advanced-plugin-api.md +258 -0
- package/templates/skills/vite/references/build-library.md +172 -0
- package/templates/skills/vite/references/build-production.md +220 -0
- package/templates/skills/vite/references/build-ssr.md +194 -0
- package/templates/skills/vite/references/core-cli.md +137 -0
- package/templates/skills/vite/references/core-config.md +176 -0
- package/templates/skills/vite/references/core-features.md +170 -0
- package/templates/skills/vite/references/core-plugins.md +154 -0
- package/templates/skills/vite/references/features-assets.md +138 -0
- package/templates/skills/vite/references/features-css.md +215 -0
- package/templates/skills/vite/references/features-dep-bundling.md +148 -0
- package/templates/skills/vite/references/features-env.md +161 -0
- package/templates/skills/vite/references/features-glob-import.md +161 -0
- package/templates/skills/vite/references/features-hmr.md +200 -0
- package/templates/skills/vite/references/features-workers.md +115 -0
- package/templates/skills/vitepress/GENERATION.md +5 -0
- package/templates/skills/vitepress/SKILL.md +65 -0
- package/templates/skills/vitepress/references/advanced-i18n.md +299 -0
- package/templates/skills/vitepress/references/advanced-ssr.md +228 -0
- package/templates/skills/vitepress/references/core-cli.md +119 -0
- package/templates/skills/vitepress/references/core-config.md +189 -0
- package/templates/skills/vitepress/references/core-markdown.md +277 -0
- package/templates/skills/vitepress/references/core-routing.md +169 -0
- package/templates/skills/vitepress/references/features-code-blocks.md +243 -0
- package/templates/skills/vitepress/references/features-data-loading.md +220 -0
- package/templates/skills/vitepress/references/features-dynamic-routes.md +235 -0
- package/templates/skills/vitepress/references/features-vue.md +224 -0
- package/templates/skills/vitepress/references/recipes-deploy.md +240 -0
- package/templates/skills/vitepress/references/theme-config.md +315 -0
- package/templates/skills/vitepress/references/theme-custom.md +269 -0
- package/templates/skills/vitepress/references/theme-customization.md +290 -0
- package/templates/skills/vitest/GENERATION.md +5 -0
- package/templates/skills/vitest/SKILL.md +52 -0
- package/templates/skills/vitest/references/advanced-environments.md +264 -0
- package/templates/skills/vitest/references/advanced-projects.md +300 -0
- package/templates/skills/vitest/references/advanced-type-testing.md +237 -0
- package/templates/skills/vitest/references/advanced-vi.md +249 -0
- package/templates/skills/vitest/references/core-cli.md +166 -0
- package/templates/skills/vitest/references/core-config.md +174 -0
- package/templates/skills/vitest/references/core-describe.md +193 -0
- package/templates/skills/vitest/references/core-expect.md +219 -0
- package/templates/skills/vitest/references/core-hooks.md +244 -0
- package/templates/skills/vitest/references/core-test-api.md +233 -0
- package/templates/skills/vitest/references/features-concurrency.md +250 -0
- package/templates/skills/vitest/references/features-context.md +238 -0
- package/templates/skills/vitest/references/features-coverage.md +207 -0
- package/templates/skills/vitest/references/features-filtering.md +211 -0
- package/templates/skills/vitest/references/features-mocking.md +265 -0
- package/templates/skills/vitest/references/features-snapshots.md +207 -0
- package/templates/skills/vue/GENERATION.md +5 -0
- package/templates/skills/vue/SKILL.md +63 -0
- package/templates/skills/vue/references/advanced-async-suspense.md +246 -0
- package/templates/skills/vue/references/advanced-provide-inject.md +174 -0
- package/templates/skills/vue/references/components-emits.md +139 -0
- package/templates/skills/vue/references/components-lifecycle.md +192 -0
- package/templates/skills/vue/references/components-props.md +211 -0
- package/templates/skills/vue/references/components-slots.md +201 -0
- package/templates/skills/vue/references/components-v-model.md +183 -0
- package/templates/skills/vue/references/core-reactivity.md +289 -0
- package/templates/skills/vue/references/features-composables.md +262 -0
- package/templates/skills/vue/references/features-directives.md +224 -0
- package/templates/skills/vue/references/features-script-setup.md +247 -0
- package/templates/skills/vue/references/features-template-refs.md +212 -0
- package/templates/skills/vue/references/features-typescript.md +274 -0
- package/templates/skills/vue-best-practices/LICENSE.md +21 -0
- package/templates/skills/vue-best-practices/SKILL.md +38 -0
- package/templates/skills/vue-best-practices/SYNC.md +5 -0
- package/templates/skills/vue-best-practices/rules/codeactions-save-performance.md +79 -0
- package/templates/skills/vue-best-practices/rules/data-attributes-config.md +74 -0
- package/templates/skills/vue-best-practices/rules/deep-watch-numeric.md +97 -0
- package/templates/skills/vue-best-practices/rules/define-model-update-event.md +79 -0
- package/templates/skills/vue-best-practices/rules/duplicate-plugin-detection.md +102 -0
- package/templates/skills/vue-best-practices/rules/extract-component-props.md +57 -0
- package/templates/skills/vue-best-practices/rules/fallthrough-attributes.md +63 -0
- package/templates/skills/vue-best-practices/rules/hmr-vue-ssr.md +124 -0
- package/templates/skills/vue-best-practices/rules/module-resolution-bundler.md +81 -0
- package/templates/skills/vue-best-practices/rules/pinia-store-mocking.md +159 -0
- package/templates/skills/vue-best-practices/rules/script-setup-jsdoc.md +85 -0
- package/templates/skills/vue-best-practices/rules/strict-css-modules.md +68 -0
- package/templates/skills/vue-best-practices/rules/volar-3-breaking-changes.md +65 -0
- package/templates/skills/vue-best-practices/rules/vue-directive-comments.md +73 -0
- package/templates/skills/vue-best-practices/rules/vue-router-typed-params.md +81 -0
- package/templates/skills/vue-best-practices/rules/vue-tsc-strict-templates.md +69 -0
- package/templates/skills/vue-best-practices/rules/with-defaults-union-types.md +102 -0
- package/templates/skills/vueuse-functions/LICENSE.md +21 -0
- package/templates/skills/vueuse-functions/SKILL.md +418 -0
- package/templates/skills/vueuse-functions/SYNC.md +5 -0
- package/templates/skills/vueuse-functions/references/computedAsync.md +159 -0
- package/templates/skills/vueuse-functions/references/computedEager.md +62 -0
- package/templates/skills/vueuse-functions/references/computedInject.md +86 -0
- package/templates/skills/vueuse-functions/references/computedWithControl.md +100 -0
- package/templates/skills/vueuse-functions/references/createEventHook.md +86 -0
- package/templates/skills/vueuse-functions/references/createGenericProjection.md +25 -0
- package/templates/skills/vueuse-functions/references/createGlobalState.md +95 -0
- package/templates/skills/vueuse-functions/references/createInjectionState.md +215 -0
- package/templates/skills/vueuse-functions/references/createProjection.md +31 -0
- package/templates/skills/vueuse-functions/references/createRef.md +54 -0
- package/templates/skills/vueuse-functions/references/createReusableTemplate.md +357 -0
- package/templates/skills/vueuse-functions/references/createSharedComposable.md +42 -0
- package/templates/skills/vueuse-functions/references/createTemplatePromise.md +259 -0
- package/templates/skills/vueuse-functions/references/createUnrefFn.md +51 -0
- package/templates/skills/vueuse-functions/references/extendRef.md +76 -0
- package/templates/skills/vueuse-functions/references/from.md +48 -0
- package/templates/skills/vueuse-functions/references/get.md +30 -0
- package/templates/skills/vueuse-functions/references/injectLocal.md +35 -0
- package/templates/skills/vueuse-functions/references/isDefined.md +31 -0
- package/templates/skills/vueuse-functions/references/logicAnd.md +40 -0
- package/templates/skills/vueuse-functions/references/logicNot.md +36 -0
- package/templates/skills/vueuse-functions/references/logicOr.md +40 -0
- package/templates/skills/vueuse-functions/references/makeDestructurable.md +41 -0
- package/templates/skills/vueuse-functions/references/onClickOutside.md +187 -0
- package/templates/skills/vueuse-functions/references/onElementRemoval.md +64 -0
- package/templates/skills/vueuse-functions/references/onKeyStroke.md +176 -0
- package/templates/skills/vueuse-functions/references/onLongPress.md +170 -0
- package/templates/skills/vueuse-functions/references/onStartTyping.md +43 -0
- package/templates/skills/vueuse-functions/references/provideLocal.md +37 -0
- package/templates/skills/vueuse-functions/references/reactify.md +144 -0
- package/templates/skills/vueuse-functions/references/reactifyObject.md +61 -0
- package/templates/skills/vueuse-functions/references/reactiveComputed.md +34 -0
- package/templates/skills/vueuse-functions/references/reactiveOmit.md +86 -0
- package/templates/skills/vueuse-functions/references/reactivePick.md +106 -0
- package/templates/skills/vueuse-functions/references/refAutoReset.md +44 -0
- package/templates/skills/vueuse-functions/references/refDebounced.md +81 -0
- package/templates/skills/vueuse-functions/references/refDefault.md +36 -0
- package/templates/skills/vueuse-functions/references/refManualReset.md +44 -0
- package/templates/skills/vueuse-functions/references/refThrottled.md +99 -0
- package/templates/skills/vueuse-functions/references/refWithControl.md +146 -0
- package/templates/skills/vueuse-functions/references/set.md +30 -0
- package/templates/skills/vueuse-functions/references/syncRef.md +195 -0
- package/templates/skills/vueuse-functions/references/syncRefs.md +128 -0
- package/templates/skills/vueuse-functions/references/templateRef.md +86 -0
- package/templates/skills/vueuse-functions/references/toObserver.md +38 -0
- package/templates/skills/vueuse-functions/references/toReactive.md +41 -0
- package/templates/skills/vueuse-functions/references/toRef.md +75 -0
- package/templates/skills/vueuse-functions/references/toRefs.md +81 -0
- package/templates/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
- package/templates/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
- package/templates/skills/vueuse-functions/references/tryOnMounted.md +34 -0
- package/templates/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
- package/templates/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
- package/templates/skills/vueuse-functions/references/unrefElement.md +54 -0
- package/templates/skills/vueuse-functions/references/until.md +165 -0
- package/templates/skills/vueuse-functions/references/useAbs.md +31 -0
- package/templates/skills/vueuse-functions/references/useActiveElement.md +65 -0
- package/templates/skills/vueuse-functions/references/useAnimate.md +140 -0
- package/templates/skills/vueuse-functions/references/useArrayDifference.md +84 -0
- package/templates/skills/vueuse-functions/references/useArrayEvery.md +59 -0
- package/templates/skills/vueuse-functions/references/useArrayFilter.md +63 -0
- package/templates/skills/vueuse-functions/references/useArrayFind.md +50 -0
- package/templates/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
- package/templates/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
- package/templates/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
- package/templates/skills/vueuse-functions/references/useArrayJoin.md +74 -0
- package/templates/skills/vueuse-functions/references/useArrayMap.md +59 -0
- package/templates/skills/vueuse-functions/references/useArrayReduce.md +81 -0
- package/templates/skills/vueuse-functions/references/useArraySome.md +59 -0
- package/templates/skills/vueuse-functions/references/useArrayUnique.md +76 -0
- package/templates/skills/vueuse-functions/references/useAsyncQueue.md +87 -0
- package/templates/skills/vueuse-functions/references/useAsyncState.md +140 -0
- package/templates/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
- package/templates/skills/vueuse-functions/references/useAuth.md +114 -0
- package/templates/skills/vueuse-functions/references/useAverage.md +36 -0
- package/templates/skills/vueuse-functions/references/useAxios.md +292 -0
- package/templates/skills/vueuse-functions/references/useBase64.md +88 -0
- package/templates/skills/vueuse-functions/references/useBattery.md +67 -0
- package/templates/skills/vueuse-functions/references/useBluetooth.md +161 -0
- package/templates/skills/vueuse-functions/references/useBreakpoints.md +128 -0
- package/templates/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
- package/templates/skills/vueuse-functions/references/useBrowserLocation.md +83 -0
- package/templates/skills/vueuse-functions/references/useCached.md +53 -0
- package/templates/skills/vueuse-functions/references/useCeil.md +31 -0
- package/templates/skills/vueuse-functions/references/useChangeCase.md +79 -0
- package/templates/skills/vueuse-functions/references/useClamp.md +51 -0
- package/templates/skills/vueuse-functions/references/useClipboard.md +99 -0
- package/templates/skills/vueuse-functions/references/useClipboardItems.md +93 -0
- package/templates/skills/vueuse-functions/references/useCloned.md +91 -0
- package/templates/skills/vueuse-functions/references/useColorMode.md +171 -0
- package/templates/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
- package/templates/skills/vueuse-functions/references/useCookies.md +162 -0
- package/templates/skills/vueuse-functions/references/useCountdown.md +102 -0
- package/templates/skills/vueuse-functions/references/useCounter.md +86 -0
- package/templates/skills/vueuse-functions/references/useCssVar.md +50 -0
- package/templates/skills/vueuse-functions/references/useCurrentElement.md +61 -0
- package/templates/skills/vueuse-functions/references/useCycleList.md +75 -0
- package/templates/skills/vueuse-functions/references/useDark.md +142 -0
- package/templates/skills/vueuse-functions/references/useDateFormat.md +145 -0
- package/templates/skills/vueuse-functions/references/useDebounceFn.md +100 -0
- package/templates/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
- package/templates/skills/vueuse-functions/references/useDeviceMotion.md +87 -0
- package/templates/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
- package/templates/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
- package/templates/skills/vueuse-functions/references/useDevicesList.md +90 -0
- package/templates/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
- package/templates/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
- package/templates/skills/vueuse-functions/references/useDraggable.md +210 -0
- package/templates/skills/vueuse-functions/references/useDrauu.md +65 -0
- package/templates/skills/vueuse-functions/references/useDropZone.md +83 -0
- package/templates/skills/vueuse-functions/references/useElementBounding.md +131 -0
- package/templates/skills/vueuse-functions/references/useElementByPoint.md +45 -0
- package/templates/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/templates/skills/vueuse-functions/references/useElementSize.md +78 -0
- package/templates/skills/vueuse-functions/references/useElementVisibility.md +126 -0
- package/templates/skills/vueuse-functions/references/useEventBus.md +101 -0
- package/templates/skills/vueuse-functions/references/useEventListener.md +184 -0
- package/templates/skills/vueuse-functions/references/useEventSource.md +204 -0
- package/templates/skills/vueuse-functions/references/useExtractedObservable.md +185 -0
- package/templates/skills/vueuse-functions/references/useEyeDropper.md +71 -0
- package/templates/skills/vueuse-functions/references/useFavicon.md +67 -0
- package/templates/skills/vueuse-functions/references/useFetch.md +546 -0
- package/templates/skills/vueuse-functions/references/useFileDialog.md +91 -0
- package/templates/skills/vueuse-functions/references/useFileSystemAccess.md +162 -0
- package/templates/skills/vueuse-functions/references/useFirestore.md +104 -0
- package/templates/skills/vueuse-functions/references/useFloor.md +31 -0
- package/templates/skills/vueuse-functions/references/useFocus.md +99 -0
- package/templates/skills/vueuse-functions/references/useFocusTrap.md +245 -0
- package/templates/skills/vueuse-functions/references/useFocusWithin.md +57 -0
- package/templates/skills/vueuse-functions/references/useFps.md +28 -0
- package/templates/skills/vueuse-functions/references/useFullscreen.md +75 -0
- package/templates/skills/vueuse-functions/references/useFuse.md +107 -0
- package/templates/skills/vueuse-functions/references/useGamepad.md +223 -0
- package/templates/skills/vueuse-functions/references/useGeolocation.md +86 -0
- package/templates/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
- package/templates/skills/vueuse-functions/references/useIdle.md +89 -0
- package/templates/skills/vueuse-functions/references/useImage.md +86 -0
- package/templates/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
- package/templates/skills/vueuse-functions/references/useIntersectionObserver.md +118 -0
- package/templates/skills/vueuse-functions/references/useInterval.md +69 -0
- package/templates/skills/vueuse-functions/references/useIntervalFn.md +50 -0
- package/templates/skills/vueuse-functions/references/useIpcRenderer.md +118 -0
- package/templates/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
- package/templates/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
- package/templates/skills/vueuse-functions/references/useJwt.md +57 -0
- package/templates/skills/vueuse-functions/references/useKeyModifier.md +87 -0
- package/templates/skills/vueuse-functions/references/useLastChanged.md +63 -0
- package/templates/skills/vueuse-functions/references/useLocalStorage.md +41 -0
- package/templates/skills/vueuse-functions/references/useMagicKeys.md +217 -0
- package/templates/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
- package/templates/skills/vueuse-functions/references/useMath.md +47 -0
- package/templates/skills/vueuse-functions/references/useMax.md +36 -0
- package/templates/skills/vueuse-functions/references/useMediaControls.md +571 -0
- package/templates/skills/vueuse-functions/references/useMediaQuery.md +53 -0
- package/templates/skills/vueuse-functions/references/useMemoize.md +175 -0
- package/templates/skills/vueuse-functions/references/useMemory.md +56 -0
- package/templates/skills/vueuse-functions/references/useMin.md +36 -0
- package/templates/skills/vueuse-functions/references/useMounted.md +38 -0
- package/templates/skills/vueuse-functions/references/useMouse.md +114 -0
- package/templates/skills/vueuse-functions/references/useMouseInElement.md +123 -0
- package/templates/skills/vueuse-functions/references/useMousePressed.md +112 -0
- package/templates/skills/vueuse-functions/references/useMutationObserver.md +62 -0
- package/templates/skills/vueuse-functions/references/useNProgress.md +78 -0
- package/templates/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
- package/templates/skills/vueuse-functions/references/useNetwork.md +106 -0
- package/templates/skills/vueuse-functions/references/useNow.md +75 -0
- package/templates/skills/vueuse-functions/references/useObjectUrl.md +55 -0
- package/templates/skills/vueuse-functions/references/useObservable.md +67 -0
- package/templates/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
- package/templates/skills/vueuse-functions/references/useOnline.md +41 -0
- package/templates/skills/vueuse-functions/references/usePageLeave.md +42 -0
- package/templates/skills/vueuse-functions/references/useParallax.md +58 -0
- package/templates/skills/vueuse-functions/references/useParentElement.md +54 -0
- package/templates/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
- package/templates/skills/vueuse-functions/references/usePermission.md +78 -0
- package/templates/skills/vueuse-functions/references/usePointer.md +89 -0
- package/templates/skills/vueuse-functions/references/usePointerLock.md +60 -0
- package/templates/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
- package/templates/skills/vueuse-functions/references/usePrecision.md +49 -0
- package/templates/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
- package/templates/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
- package/templates/skills/vueuse-functions/references/usePreferredDark.md +41 -0
- package/templates/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
- package/templates/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
- package/templates/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
- package/templates/skills/vueuse-functions/references/usePrevious.md +40 -0
- package/templates/skills/vueuse-functions/references/useProjection.md +38 -0
- package/templates/skills/vueuse-functions/references/useQRCode.md +53 -0
- package/templates/skills/vueuse-functions/references/useRTDB.md +70 -0
- package/templates/skills/vueuse-functions/references/useRafFn.md +68 -0
- package/templates/skills/vueuse-functions/references/useRefHistory.md +292 -0
- package/templates/skills/vueuse-functions/references/useResizeObserver.md +110 -0
- package/templates/skills/vueuse-functions/references/useRound.md +31 -0
- package/templates/skills/vueuse-functions/references/useRouteHash.md +27 -0
- package/templates/skills/vueuse-functions/references/useRouteParams.md +38 -0
- package/templates/skills/vueuse-functions/references/useRouteQuery.md +38 -0
- package/templates/skills/vueuse-functions/references/useSSRWidth.md +47 -0
- package/templates/skills/vueuse-functions/references/useScreenOrientation.md +96 -0
- package/templates/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
- package/templates/skills/vueuse-functions/references/useScriptTag.md +116 -0
- package/templates/skills/vueuse-functions/references/useScroll.md +238 -0
- package/templates/skills/vueuse-functions/references/useScrollLock.md +66 -0
- package/templates/skills/vueuse-functions/references/useSessionStorage.md +41 -0
- package/templates/skills/vueuse-functions/references/useShare.md +68 -0
- package/templates/skills/vueuse-functions/references/useSortable.md +177 -0
- package/templates/skills/vueuse-functions/references/useSorted.md +90 -0
- package/templates/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
- package/templates/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -0
- package/templates/skills/vueuse-functions/references/useStepper.md +137 -0
- package/templates/skills/vueuse-functions/references/useStorage.md +219 -0
- package/templates/skills/vueuse-functions/references/useStorageAsync.md +134 -0
- package/templates/skills/vueuse-functions/references/useStyleTag.md +131 -0
- package/templates/skills/vueuse-functions/references/useSubject.md +52 -0
- package/templates/skills/vueuse-functions/references/useSubscription.md +33 -0
- package/templates/skills/vueuse-functions/references/useSum.md +36 -0
- package/templates/skills/vueuse-functions/references/useSupported.md +29 -0
- package/templates/skills/vueuse-functions/references/useSwipe.md +75 -0
- package/templates/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
- package/templates/skills/vueuse-functions/references/useTextDirection.md +75 -0
- package/templates/skills/vueuse-functions/references/useTextSelection.md +40 -0
- package/templates/skills/vueuse-functions/references/useTextareaAutosize.md +97 -0
- package/templates/skills/vueuse-functions/references/useThrottleFn.md +57 -0
- package/templates/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
- package/templates/skills/vueuse-functions/references/useTimeAgo.md +152 -0
- package/templates/skills/vueuse-functions/references/useTimeAgoIntl.md +116 -0
- package/templates/skills/vueuse-functions/references/useTimeout.md +75 -0
- package/templates/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
- package/templates/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
- package/templates/skills/vueuse-functions/references/useTimestamp.md +85 -0
- package/templates/skills/vueuse-functions/references/useTitle.md +113 -0
- package/templates/skills/vueuse-functions/references/useToNumber.md +54 -0
- package/templates/skills/vueuse-functions/references/useToString.md +34 -0
- package/templates/skills/vueuse-functions/references/useToggle.md +56 -0
- package/templates/skills/vueuse-functions/references/useTransition.md +265 -0
- package/templates/skills/vueuse-functions/references/useTrunc.md +33 -0
- package/templates/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
- package/templates/skills/vueuse-functions/references/useUserMedia.md +1138 -0
- package/templates/skills/vueuse-functions/references/useVModel.md +116 -0
- package/templates/skills/vueuse-functions/references/useVModels.md +67 -0
- package/templates/skills/vueuse-functions/references/useVibrate.md +83 -0
- package/templates/skills/vueuse-functions/references/useVirtualList.md +184 -0
- package/templates/skills/vueuse-functions/references/useWakeLock.md +50 -0
- package/templates/skills/vueuse-functions/references/useWebNotification.md +177 -0
- package/templates/skills/vueuse-functions/references/useWebSocket.md +268 -0
- package/templates/skills/vueuse-functions/references/useWebWorker.md +60 -0
- package/templates/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
- package/templates/skills/vueuse-functions/references/useWindowFocus.md +46 -0
- package/templates/skills/vueuse-functions/references/useWindowScroll.md +62 -0
- package/templates/skills/vueuse-functions/references/useWindowSize.md +76 -0
- package/templates/skills/vueuse-functions/references/useZoomFactor.md +53 -0
- package/templates/skills/vueuse-functions/references/useZoomLevel.md +53 -0
- package/templates/skills/vueuse-functions/references/watchArray.md +53 -0
- package/templates/skills/vueuse-functions/references/watchAtMost.md +54 -0
- package/templates/skills/vueuse-functions/references/watchDebounced.md +72 -0
- package/templates/skills/vueuse-functions/references/watchDeep.md +54 -0
- package/templates/skills/vueuse-functions/references/watchExtractedObservable.md +167 -0
- package/templates/skills/vueuse-functions/references/watchIgnorable.md +120 -0
- package/templates/skills/vueuse-functions/references/watchImmediate.md +44 -0
- package/templates/skills/vueuse-functions/references/watchOnce.md +41 -0
- package/templates/skills/vueuse-functions/references/watchPausable.md +86 -0
- package/templates/skills/vueuse-functions/references/watchThrottled.md +73 -0
- package/templates/skills/vueuse-functions/references/watchTriggerable.md +97 -0
- package/templates/skills/vueuse-functions/references/watchWithFilter.md +55 -0
- package/templates/skills/vueuse-functions/references/whenever.md +100 -0
- package/templates/skills/web-design-guidelines/SKILL.md +39 -0
- package/templates/skills/web-design-guidelines/SYNC.md +5 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Browser
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# useEventListener
|
|
6
|
+
|
|
7
|
+
Use EventListener with ease. Register using [addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener) on mounted, and [removeEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener) automatically on unmounted.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { useEventListener } from '@vueuse/core'
|
|
13
|
+
|
|
14
|
+
useEventListener(document, 'visibilitychange', (evt) => {
|
|
15
|
+
console.log(evt)
|
|
16
|
+
})
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
You can also pass a ref as the event target, `useEventListener` will unregister the previous event and register the new one when you change the target.
|
|
20
|
+
|
|
21
|
+
```vue
|
|
22
|
+
<script setup lang="ts">
|
|
23
|
+
import { useEventListener } from '@vueuse/core'
|
|
24
|
+
import { useTemplateRef } from 'vue'
|
|
25
|
+
|
|
26
|
+
const element = useTemplateRef('element')
|
|
27
|
+
useEventListener(element, 'keydown', (e) => {
|
|
28
|
+
console.log(e.key)
|
|
29
|
+
})
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<template>
|
|
33
|
+
<div v-if="cond" ref="element">
|
|
34
|
+
Div1
|
|
35
|
+
</div>
|
|
36
|
+
<div v-else ref="element">
|
|
37
|
+
Div2
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
You can also call the returned to unregister the listener.
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { useEventListener } from '@vueuse/core'
|
|
46
|
+
|
|
47
|
+
const cleanup = useEventListener(document, 'keydown', (e) => {
|
|
48
|
+
console.log(e.key)
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
cleanup() // This will unregister the listener.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Note if your components also run in SSR (Server Side Rendering), you might get errors (like `document is not defined`) because DOM APIs like `document` and `window` are not available in Node.js. To avoid that you can put the logic inside `onMounted` hook.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import { useEventListener } from '@vueuse/core'
|
|
58
|
+
// ---cut---
|
|
59
|
+
// onMounted will only be called in the client side
|
|
60
|
+
// so it guarantees the DOM APIs are available.
|
|
61
|
+
onMounted(() => {
|
|
62
|
+
useEventListener(document, 'keydown', (e) => {
|
|
63
|
+
console.log(e.key)
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Type Declarations
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
interface InferEventTarget<Events> {
|
|
72
|
+
addEventListener: (event: Events, fn?: any, options?: any) => any
|
|
73
|
+
removeEventListener: (event: Events, fn?: any, options?: any) => any
|
|
74
|
+
}
|
|
75
|
+
export type WindowEventName = keyof WindowEventMap
|
|
76
|
+
export type DocumentEventName = keyof DocumentEventMap
|
|
77
|
+
export type ShadowRootEventName = keyof ShadowRootEventMap
|
|
78
|
+
export interface GeneralEventListener<E = Event> {
|
|
79
|
+
(evt: E): void
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
83
|
+
*
|
|
84
|
+
* Overload 1: Omitted Window target
|
|
85
|
+
*
|
|
86
|
+
* @see https://vueuse.org/useEventListener
|
|
87
|
+
*/
|
|
88
|
+
export declare function useEventListener<E extends keyof WindowEventMap>(
|
|
89
|
+
event: MaybeRefOrGetter<Arrayable<E>>,
|
|
90
|
+
listener: MaybeRef<Arrayable<(this: Window, ev: WindowEventMap[E]) => any>>,
|
|
91
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
92
|
+
): Fn
|
|
93
|
+
/**
|
|
94
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
95
|
+
*
|
|
96
|
+
* Overload 2: Explicitly Window target
|
|
97
|
+
*
|
|
98
|
+
* @see https://vueuse.org/useEventListener
|
|
99
|
+
* @param target
|
|
100
|
+
* @param event
|
|
101
|
+
* @param listener
|
|
102
|
+
* @param options
|
|
103
|
+
*/
|
|
104
|
+
export declare function useEventListener<E extends keyof WindowEventMap>(
|
|
105
|
+
target: Window,
|
|
106
|
+
event: MaybeRefOrGetter<Arrayable<E>>,
|
|
107
|
+
listener: MaybeRef<Arrayable<(this: Window, ev: WindowEventMap[E]) => any>>,
|
|
108
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
109
|
+
): Fn
|
|
110
|
+
/**
|
|
111
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
112
|
+
*
|
|
113
|
+
* Overload 3: Explicitly Document target
|
|
114
|
+
*
|
|
115
|
+
* @see https://vueuse.org/useEventListener
|
|
116
|
+
*/
|
|
117
|
+
export declare function useEventListener<E extends keyof DocumentEventMap>(
|
|
118
|
+
target: Document,
|
|
119
|
+
event: MaybeRefOrGetter<Arrayable<E>>,
|
|
120
|
+
listener: MaybeRef<
|
|
121
|
+
Arrayable<(this: Document, ev: DocumentEventMap[E]) => any>
|
|
122
|
+
>,
|
|
123
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
124
|
+
): Fn
|
|
125
|
+
/**
|
|
126
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
127
|
+
*
|
|
128
|
+
* Overload 4: Explicitly ShadowRoot target
|
|
129
|
+
*
|
|
130
|
+
* @see https://vueuse.org/useEventListener
|
|
131
|
+
*/
|
|
132
|
+
export declare function useEventListener<E extends keyof ShadowRootEventMap>(
|
|
133
|
+
target: MaybeRefOrGetter<Arrayable<ShadowRoot> | null | undefined>,
|
|
134
|
+
event: MaybeRefOrGetter<Arrayable<E>>,
|
|
135
|
+
listener: MaybeRef<
|
|
136
|
+
Arrayable<(this: ShadowRoot, ev: ShadowRootEventMap[E]) => any>
|
|
137
|
+
>,
|
|
138
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
139
|
+
): Fn
|
|
140
|
+
/**
|
|
141
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
142
|
+
*
|
|
143
|
+
* Overload 5: Explicitly HTMLElement target
|
|
144
|
+
*
|
|
145
|
+
* @see https://vueuse.org/useEventListener
|
|
146
|
+
*/
|
|
147
|
+
export declare function useEventListener<E extends keyof HTMLElementEventMap>(
|
|
148
|
+
target: MaybeRefOrGetter<Arrayable<HTMLElement> | null | undefined>,
|
|
149
|
+
event: MaybeRefOrGetter<Arrayable<E>>,
|
|
150
|
+
listener: MaybeRef<(this: HTMLElement, ev: HTMLElementEventMap[E]) => any>,
|
|
151
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
152
|
+
): Fn
|
|
153
|
+
/**
|
|
154
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
155
|
+
*
|
|
156
|
+
* Overload 6: Custom event target with event type infer
|
|
157
|
+
*
|
|
158
|
+
* @see https://vueuse.org/useEventListener
|
|
159
|
+
*/
|
|
160
|
+
export declare function useEventListener<
|
|
161
|
+
Names extends string,
|
|
162
|
+
EventType = Event,
|
|
163
|
+
>(
|
|
164
|
+
target: MaybeRefOrGetter<
|
|
165
|
+
Arrayable<InferEventTarget<Names>> | null | undefined
|
|
166
|
+
>,
|
|
167
|
+
event: MaybeRefOrGetter<Arrayable<Names>>,
|
|
168
|
+
listener: MaybeRef<Arrayable<GeneralEventListener<EventType>>>,
|
|
169
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
170
|
+
): Fn
|
|
171
|
+
/**
|
|
172
|
+
* Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
|
|
173
|
+
*
|
|
174
|
+
* Overload 7: Custom event target fallback
|
|
175
|
+
*
|
|
176
|
+
* @see https://vueuse.org/useEventListener
|
|
177
|
+
*/
|
|
178
|
+
export declare function useEventListener<EventType = Event>(
|
|
179
|
+
target: MaybeRefOrGetter<Arrayable<EventTarget> | null | undefined>,
|
|
180
|
+
event: MaybeRefOrGetter<Arrayable<string>>,
|
|
181
|
+
listener: MaybeRef<Arrayable<GeneralEventListener<EventType>>>,
|
|
182
|
+
options?: MaybeRefOrGetter<boolean | AddEventListenerOptions>,
|
|
183
|
+
): Fn
|
|
184
|
+
```
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Network
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# useEventSource
|
|
6
|
+
|
|
7
|
+
An [EventSource](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) or [Server-Sent-Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) instance opens a persistent connection to an HTTP server, which sends events in text/event-stream format.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { useEventSource } from '@vueuse/core'
|
|
13
|
+
|
|
14
|
+
const { status, data, error, close } = useEventSource('https://event-source-url')
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
See the [Type Declarations](#type-declarations) for more options.
|
|
18
|
+
|
|
19
|
+
### Named Events
|
|
20
|
+
|
|
21
|
+
You can define named events with the second parameter
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { useEventSource } from '@vueuse/core'
|
|
25
|
+
// ---cut---
|
|
26
|
+
const { event, data } = useEventSource(
|
|
27
|
+
'https://event-source-url',
|
|
28
|
+
['notice', 'update']
|
|
29
|
+
)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### immediate
|
|
33
|
+
|
|
34
|
+
Enable by default.
|
|
35
|
+
|
|
36
|
+
Establish the connection immediately when the composable is called.
|
|
37
|
+
|
|
38
|
+
### autoConnect
|
|
39
|
+
|
|
40
|
+
Enable by default.
|
|
41
|
+
|
|
42
|
+
If url is provided as a ref, when the url changes, it will automatically reconnect to the new url.
|
|
43
|
+
|
|
44
|
+
### Auto Reconnection on Errors
|
|
45
|
+
|
|
46
|
+
Reconnect on errors automatically (disabled by default).
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import { useEventSource } from '@vueuse/core'
|
|
50
|
+
// ---cut---
|
|
51
|
+
const { status, data, close } = useEventSource(
|
|
52
|
+
'https://event-source-url',
|
|
53
|
+
[],
|
|
54
|
+
{
|
|
55
|
+
autoReconnect: true,
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Or with more controls over its behavior:
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import { useEventSource } from '@vueuse/core'
|
|
64
|
+
// ---cut---
|
|
65
|
+
const { status, data, close } = useEventSource(
|
|
66
|
+
'https://event-source-url',
|
|
67
|
+
[],
|
|
68
|
+
{
|
|
69
|
+
autoReconnect: {
|
|
70
|
+
retries: 3,
|
|
71
|
+
delay: 1000,
|
|
72
|
+
onFailed() {
|
|
73
|
+
alert('Failed to connect EventSource after 3 retries')
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Data Serialization
|
|
81
|
+
|
|
82
|
+
Apply custom transformations to incoming data using a serialization function.
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
import { useEventSource } from '@vueuse/core'
|
|
86
|
+
// ---cut---
|
|
87
|
+
const { data } = useEventSource(
|
|
88
|
+
'https://event-source-url',
|
|
89
|
+
[],
|
|
90
|
+
{
|
|
91
|
+
serializer: {
|
|
92
|
+
read: rawData => JSON.parse(rawData),
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
// If server sends: '{"name":"John","age":30}'
|
|
98
|
+
// data.value will be: { name: 'John', age: 30 }
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Type Declarations
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
export type EventSourceStatus = "CONNECTING" | "OPEN" | "CLOSED"
|
|
105
|
+
export interface UseEventSourceOptions<Data> extends EventSourceInit {
|
|
106
|
+
/**
|
|
107
|
+
* Enabled auto reconnect
|
|
108
|
+
*
|
|
109
|
+
* @default false
|
|
110
|
+
*/
|
|
111
|
+
autoReconnect?:
|
|
112
|
+
| boolean
|
|
113
|
+
| {
|
|
114
|
+
/**
|
|
115
|
+
* Maximum retry times.
|
|
116
|
+
*
|
|
117
|
+
* Or you can pass a predicate function (which returns true if you want to retry).
|
|
118
|
+
*
|
|
119
|
+
* @default -1
|
|
120
|
+
*/
|
|
121
|
+
retries?: number | (() => boolean)
|
|
122
|
+
/**
|
|
123
|
+
* Delay for reconnect, in milliseconds
|
|
124
|
+
*
|
|
125
|
+
* @default 1000
|
|
126
|
+
*/
|
|
127
|
+
delay?: number
|
|
128
|
+
/**
|
|
129
|
+
* On maximum retry times reached.
|
|
130
|
+
*/
|
|
131
|
+
onFailed?: Fn
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Immediately open the connection when calling this composable
|
|
135
|
+
*
|
|
136
|
+
* @default true
|
|
137
|
+
*/
|
|
138
|
+
immediate?: boolean
|
|
139
|
+
/**
|
|
140
|
+
* Automatically connect to the websocket when URL changes
|
|
141
|
+
*
|
|
142
|
+
* @default true
|
|
143
|
+
*/
|
|
144
|
+
autoConnect?: boolean
|
|
145
|
+
/**
|
|
146
|
+
* Custom data serialization
|
|
147
|
+
*/
|
|
148
|
+
serializer?: {
|
|
149
|
+
read: (v?: string) => Data
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export interface UseEventSourceReturn<Events extends string[], Data = any> {
|
|
153
|
+
/**
|
|
154
|
+
* Reference to the latest data received via the EventSource,
|
|
155
|
+
* can be watched to respond to incoming messages
|
|
156
|
+
*/
|
|
157
|
+
data: ShallowRef<Data | null>
|
|
158
|
+
/**
|
|
159
|
+
* The current state of the connection, can be only one of:
|
|
160
|
+
* 'CONNECTING', 'OPEN' 'CLOSED'
|
|
161
|
+
*/
|
|
162
|
+
status: ShallowRef<EventSourceStatus>
|
|
163
|
+
/**
|
|
164
|
+
* The latest named event
|
|
165
|
+
*/
|
|
166
|
+
event: ShallowRef<Events[number] | null>
|
|
167
|
+
/**
|
|
168
|
+
* The current error
|
|
169
|
+
*/
|
|
170
|
+
error: ShallowRef<Event | null>
|
|
171
|
+
/**
|
|
172
|
+
* Closes the EventSource connection gracefully.
|
|
173
|
+
*/
|
|
174
|
+
close: EventSource["close"]
|
|
175
|
+
/**
|
|
176
|
+
* Reopen the EventSource connection.
|
|
177
|
+
* If there the current one is active, will close it before opening a new one.
|
|
178
|
+
*/
|
|
179
|
+
open: Fn
|
|
180
|
+
/**
|
|
181
|
+
* Reference to the current EventSource instance.
|
|
182
|
+
*/
|
|
183
|
+
eventSource: Ref<EventSource | null>
|
|
184
|
+
/**
|
|
185
|
+
* The last event ID string, for server-sent events.
|
|
186
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent/lastEventId
|
|
187
|
+
*/
|
|
188
|
+
lastEventId: ShallowRef<string | null>
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Reactive wrapper for EventSource.
|
|
192
|
+
*
|
|
193
|
+
* @see https://vueuse.org/useEventSource
|
|
194
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource EventSource
|
|
195
|
+
* @param url
|
|
196
|
+
* @param events
|
|
197
|
+
* @param options
|
|
198
|
+
*/
|
|
199
|
+
export declare function useEventSource<Events extends string[], Data = any>(
|
|
200
|
+
url: MaybeRefOrGetter<string | URL | undefined>,
|
|
201
|
+
events?: Events,
|
|
202
|
+
options?: UseEventSourceOptions<Data>,
|
|
203
|
+
): UseEventSourceReturn<Events, Data>
|
|
204
|
+
```
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: '@RxJS'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# useExtractedObservable
|
|
6
|
+
|
|
7
|
+
Use an RxJS [`Observable`](https://rxjs.dev/guide/observable) as extracted from one or more composables, return a `ref`,
|
|
8
|
+
and automatically unsubscribe from it when the component is unmounted.
|
|
9
|
+
|
|
10
|
+
Automatically unsubscribe on observable change, and automatically unsubscribe from it when the component is unmounted.
|
|
11
|
+
|
|
12
|
+
Supports signatures that match all overloads
|
|
13
|
+
of [`watch`](https://vuejs.org/guide/essentials/watchers.html#basic-example).
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
<!-- TODO: import rxjs error if enable twoslash -->
|
|
18
|
+
|
|
19
|
+
```ts no-twoslash
|
|
20
|
+
import { useExtractedObservable } from '@vueuse/rxjs'
|
|
21
|
+
import ObservableSocket from 'observable-socket'
|
|
22
|
+
import { computed } from 'vue'
|
|
23
|
+
import { makeSocket, useUser } from '../some/lib/func'
|
|
24
|
+
|
|
25
|
+
// setup()
|
|
26
|
+
const user = useUser()
|
|
27
|
+
const lastMessage = useExtractedObservable(user, u => ObservableSocket.create(makeSocket(u.id)).down)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If you want to add custom error handling to an `Observable` that might error, you can supply an optional `onError`
|
|
31
|
+
configuration. Without this, RxJS will treat any error in the supplied `Observable` as an "unhandled error" and it will
|
|
32
|
+
be thrown in a new call stack and reported to `window.onerror` (or `process.on('error')` if you happen to be in Node).
|
|
33
|
+
|
|
34
|
+
```ts no-twoslash
|
|
35
|
+
import { useExtractedObservable } from '@vueuse/rxjs'
|
|
36
|
+
import { interval } from 'rxjs'
|
|
37
|
+
import { mapTo, scan, startWith, tap } from 'rxjs/operators'
|
|
38
|
+
import { shallowRef } from 'vue'
|
|
39
|
+
|
|
40
|
+
// setup()
|
|
41
|
+
const start = shallowRef(0)
|
|
42
|
+
|
|
43
|
+
const count = useExtractedObservable(
|
|
44
|
+
start,
|
|
45
|
+
(start) => {
|
|
46
|
+
return interval(1000).pipe(
|
|
47
|
+
mapTo(1),
|
|
48
|
+
startWith(start),
|
|
49
|
+
scan((total, next) => next + total),
|
|
50
|
+
tap((n) => {
|
|
51
|
+
if (n === 10)
|
|
52
|
+
throw new Error('oops')
|
|
53
|
+
})
|
|
54
|
+
)
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
onError: (err) => {
|
|
58
|
+
console.log(err.message) // "oops"
|
|
59
|
+
},
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
You can also supply an optional `onComplete` configuration if you need to attach special behavior when the watched
|
|
65
|
+
observable completes.
|
|
66
|
+
|
|
67
|
+
```ts no-twoslash
|
|
68
|
+
import { useExtractedObservable } from '@vueuse/rxjs'
|
|
69
|
+
import { interval } from 'rxjs'
|
|
70
|
+
import { mapTo, scan, startWith, takeWhile } from 'rxjs/operators'
|
|
71
|
+
import { shallowRef } from 'vue'
|
|
72
|
+
|
|
73
|
+
// setup()
|
|
74
|
+
const start = shallowRef(0)
|
|
75
|
+
|
|
76
|
+
const count = useExtractedObservable(
|
|
77
|
+
start,
|
|
78
|
+
(start) => {
|
|
79
|
+
return interval(1000).pipe(
|
|
80
|
+
mapTo(1),
|
|
81
|
+
startWith(start),
|
|
82
|
+
scan((total, next) => next + total),
|
|
83
|
+
takeWhile(num => num < 10)
|
|
84
|
+
)
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
onComplete: () => {
|
|
88
|
+
console.log('Done!')
|
|
89
|
+
},
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If you want, you can also pass `watch` options as the last argument:
|
|
95
|
+
|
|
96
|
+
```ts no-twoslash
|
|
97
|
+
import { useExtractedObservable } from '@vueuse/rxjs'
|
|
98
|
+
import { interval } from 'rxjs'
|
|
99
|
+
import { mapTo, scan, startWith, takeWhile } from 'rxjs/operators'
|
|
100
|
+
import { shallowRef } from 'vue'
|
|
101
|
+
|
|
102
|
+
// setup()
|
|
103
|
+
const start = shallowRef<number>()
|
|
104
|
+
|
|
105
|
+
const count = useExtractedObservable(
|
|
106
|
+
start,
|
|
107
|
+
(start) => {
|
|
108
|
+
return interval(1000).pipe(
|
|
109
|
+
mapTo(1),
|
|
110
|
+
startWith(start),
|
|
111
|
+
scan((total, next) => next + total),
|
|
112
|
+
takeWhile(num => num < 10)
|
|
113
|
+
)
|
|
114
|
+
},
|
|
115
|
+
{},
|
|
116
|
+
{
|
|
117
|
+
immediate: false
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Type Declarations
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
export interface UseExtractedObservableOptions<E>
|
|
126
|
+
extends UseObservableOptions<E> {
|
|
127
|
+
onComplete?: () => void
|
|
128
|
+
}
|
|
129
|
+
export declare function useExtractedObservable<
|
|
130
|
+
T extends MultiWatchSources,
|
|
131
|
+
E,
|
|
132
|
+
Immediate extends Readonly<boolean> = false,
|
|
133
|
+
>(
|
|
134
|
+
sources: [...T],
|
|
135
|
+
extractor: WatchExtractedObservableCallback<
|
|
136
|
+
MapSources<T>,
|
|
137
|
+
MapOldSources<T, Immediate>,
|
|
138
|
+
E
|
|
139
|
+
>,
|
|
140
|
+
options?: UseExtractedObservableOptions<E>,
|
|
141
|
+
watchOptions?: WatchOptions<Immediate>,
|
|
142
|
+
): Readonly<ShallowRef<E>>
|
|
143
|
+
export declare function useExtractedObservable<
|
|
144
|
+
T extends Readonly<MultiWatchSources>,
|
|
145
|
+
E,
|
|
146
|
+
Immediate extends Readonly<boolean> = false,
|
|
147
|
+
>(
|
|
148
|
+
sources: T,
|
|
149
|
+
extractor: WatchExtractedObservableCallback<
|
|
150
|
+
MapSources<T>,
|
|
151
|
+
MapOldSources<T, Immediate>,
|
|
152
|
+
E
|
|
153
|
+
>,
|
|
154
|
+
options?: UseExtractedObservableOptions<E>,
|
|
155
|
+
watchOptions?: WatchOptions<Immediate>,
|
|
156
|
+
): Readonly<ShallowRef<E>>
|
|
157
|
+
export declare function useExtractedObservable<
|
|
158
|
+
T,
|
|
159
|
+
E,
|
|
160
|
+
Immediate extends Readonly<boolean> = false,
|
|
161
|
+
>(
|
|
162
|
+
sources: WatchSource<T>,
|
|
163
|
+
extractor: WatchExtractedObservableCallback<
|
|
164
|
+
T,
|
|
165
|
+
Immediate extends true ? T | undefined : T,
|
|
166
|
+
E
|
|
167
|
+
>,
|
|
168
|
+
options?: UseExtractedObservableOptions<E>,
|
|
169
|
+
watchOptions?: WatchOptions<Immediate>,
|
|
170
|
+
): Readonly<ShallowRef<E>>
|
|
171
|
+
export declare function useExtractedObservable<
|
|
172
|
+
T extends object,
|
|
173
|
+
E,
|
|
174
|
+
Immediate extends Readonly<boolean> = false,
|
|
175
|
+
>(
|
|
176
|
+
sources: T,
|
|
177
|
+
extractor: WatchExtractedObservableCallback<
|
|
178
|
+
T,
|
|
179
|
+
Immediate extends true ? T | undefined : T,
|
|
180
|
+
E
|
|
181
|
+
>,
|
|
182
|
+
options?: UseExtractedObservableOptions<E>,
|
|
183
|
+
watchOptions?: WatchOptions<Immediate>,
|
|
184
|
+
): Readonly<ShallowRef<E>>
|
|
185
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Browser
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# useEyeDropper
|
|
6
|
+
|
|
7
|
+
Reactive [EyeDropper API](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper_API)
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { useEyeDropper } from '@vueuse/core'
|
|
13
|
+
|
|
14
|
+
const { isSupported, open, sRGBHex } = useEyeDropper()
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Component Usage
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<template>
|
|
21
|
+
<UseEyeDropper v-slot="{ isSupported, sRGBHex, open }">
|
|
22
|
+
<button :disabled="!isSupported" @click="() => open()">
|
|
23
|
+
sRGBHex: {{ sRGBHex }}
|
|
24
|
+
</button>
|
|
25
|
+
</UseEyeDropper>
|
|
26
|
+
</template>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Type Declarations
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
export interface EyeDropperOpenOptions {
|
|
33
|
+
/**
|
|
34
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
|
|
35
|
+
*/
|
|
36
|
+
signal?: AbortSignal
|
|
37
|
+
}
|
|
38
|
+
export interface EyeDropper {
|
|
39
|
+
new (): EyeDropper
|
|
40
|
+
open: (options?: EyeDropperOpenOptions) => Promise<{
|
|
41
|
+
sRGBHex: string
|
|
42
|
+
}>
|
|
43
|
+
[Symbol.toStringTag]: "EyeDropper"
|
|
44
|
+
}
|
|
45
|
+
export interface UseEyeDropperOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Initial sRGBHex.
|
|
48
|
+
*
|
|
49
|
+
* @default ''
|
|
50
|
+
*/
|
|
51
|
+
initialValue?: string
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reactive [EyeDropper API](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper_API)
|
|
55
|
+
*
|
|
56
|
+
* @see https://vueuse.org/useEyeDropper
|
|
57
|
+
*
|
|
58
|
+
* @__NO_SIDE_EFFECTS__
|
|
59
|
+
*/
|
|
60
|
+
export declare function useEyeDropper(options?: UseEyeDropperOptions): {
|
|
61
|
+
isSupported: ComputedRef<boolean>
|
|
62
|
+
sRGBHex: ShallowRef<string, string>
|
|
63
|
+
open: (openOptions?: EyeDropperOpenOptions) => Promise<
|
|
64
|
+
| {
|
|
65
|
+
sRGBHex: string
|
|
66
|
+
}
|
|
67
|
+
| undefined
|
|
68
|
+
>
|
|
69
|
+
}
|
|
70
|
+
export type UseEyeDropperReturn = ReturnType<typeof useEyeDropper>
|
|
71
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Browser
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# useFavicon
|
|
6
|
+
|
|
7
|
+
Reactive favicon
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```ts {3}
|
|
12
|
+
import { useFavicon } from '@vueuse/core'
|
|
13
|
+
|
|
14
|
+
const icon = useFavicon()
|
|
15
|
+
|
|
16
|
+
icon.value = 'dark.png' // change current icon
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Passing a source ref
|
|
20
|
+
|
|
21
|
+
You can pass a `ref` to it, changes from of the source ref will be reflected to your favicon automatically.
|
|
22
|
+
|
|
23
|
+
```ts {7}
|
|
24
|
+
import { useFavicon, usePreferredDark } from '@vueuse/core'
|
|
25
|
+
import { computed } from 'vue'
|
|
26
|
+
|
|
27
|
+
const isDark = usePreferredDark()
|
|
28
|
+
const favicon = computed(() => isDark.value ? 'dark.png' : 'light.png')
|
|
29
|
+
|
|
30
|
+
useFavicon(favicon)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
When a source ref is passed, the return ref will be identical to the source ref
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { useFavicon } from '@vueuse/core'
|
|
37
|
+
// ---cut---
|
|
38
|
+
const source = shallowRef('icon.png')
|
|
39
|
+
const icon = useFavicon(source)
|
|
40
|
+
|
|
41
|
+
console.log(icon === source) // true
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Type Declarations
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
export interface UseFaviconOptions extends ConfigurableDocument {
|
|
48
|
+
baseUrl?: string
|
|
49
|
+
rel?: string
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Reactive favicon.
|
|
53
|
+
*
|
|
54
|
+
* @see https://vueuse.org/useFavicon
|
|
55
|
+
* @param newIcon
|
|
56
|
+
* @param options
|
|
57
|
+
*/
|
|
58
|
+
export declare function useFavicon(
|
|
59
|
+
newIcon: ReadonlyRefOrGetter<string | null | undefined>,
|
|
60
|
+
options?: UseFaviconOptions,
|
|
61
|
+
): ComputedRef<string | null | undefined>
|
|
62
|
+
export declare function useFavicon(
|
|
63
|
+
newIcon?: MaybeRef<string | null | undefined>,
|
|
64
|
+
options?: UseFaviconOptions,
|
|
65
|
+
): Ref<string | null | undefined>
|
|
66
|
+
export type UseFaviconReturn = ReturnType<typeof useFavicon>
|
|
67
|
+
```
|