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.
- package/README.md +99 -0
- package/dist/cli.js +545 -0
- package/dist/meta.js +93 -0
- package/package.json +43 -0
- package/skill.md +66 -0
- package/skills/core/SKILL.md +66 -0
- package/skills/core/references/app-development.md +45 -0
- package/skills/core/references/git.md +66 -0
- package/skills/core/references/monorepo.md +124 -0
- package/skills/element-plus-vue3/LICENSE.md +405 -0
- package/skills/element-plus-vue3/LICENSE.txt +202 -0
- package/skills/element-plus-vue3/SKILL.md +218 -0
- package/skills/element-plus-vue3/SYNC.md +5 -0
- package/skills/element-plus-vue3/api/component-api.md +94 -0
- package/skills/element-plus-vue3/api/global-config.md +89 -0
- package/skills/element-plus-vue3/api/props-and-events.md +101 -0
- package/skills/element-plus-vue3/examples/components/button.md +99 -0
- package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
- package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
- package/skills/element-plus-vue3/examples/components/form.md +127 -0
- package/skills/element-plus-vue3/examples/components/input.md +123 -0
- package/skills/element-plus-vue3/examples/components/message.md +93 -0
- package/skills/element-plus-vue3/examples/components/overview.md +59 -0
- package/skills/element-plus-vue3/examples/components/select.md +133 -0
- package/skills/element-plus-vue3/examples/components/table.md +166 -0
- package/skills/element-plus-vue3/examples/guide/design.md +68 -0
- package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
- package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
- package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
- package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
- package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
- package/skills/element-plus-vue3/templates/component-usage.md +92 -0
- package/skills/element-plus-vue3/templates/installation.md +82 -0
- package/skills/element-plus-vue3/templates/project-setup.md +83 -0
- package/skills/node/LICENSE.md +21 -0
- package/skills/node/SKILL.md +94 -0
- package/skills/node/SYNC.md +5 -0
- package/skills/node/rules/assets/graceful-server.test.ts +88 -0
- package/skills/node/rules/assets/graceful-server.ts +80 -0
- package/skills/node/rules/async-patterns.md +136 -0
- package/skills/node/rules/caching.md +198 -0
- package/skills/node/rules/environment.md +253 -0
- package/skills/node/rules/error-handling.md +164 -0
- package/skills/node/rules/flaky-tests.md +439 -0
- package/skills/node/rules/graceful-shutdown.md +204 -0
- package/skills/node/rules/logging.md +205 -0
- package/skills/node/rules/modules.md +105 -0
- package/skills/node/rules/node-modules-exploration.md +172 -0
- package/skills/node/rules/performance.md +130 -0
- package/skills/node/rules/profiling.md +183 -0
- package/skills/node/rules/streams.md +213 -0
- package/skills/node/rules/stuck-processes-and-tests.md +124 -0
- package/skills/node/rules/testing.md +218 -0
- package/skills/node/rules/typescript.md +262 -0
- package/skills/node/tile.json +11 -0
- package/skills/nuxt/GENERATION.md +5 -0
- package/skills/nuxt/LICENSE.md +21 -0
- package/skills/nuxt/SKILL.md +55 -0
- package/skills/nuxt/SYNC.md +5 -0
- package/skills/nuxt/references/advanced-hooks.md +289 -0
- package/skills/nuxt/references/advanced-layers.md +299 -0
- package/skills/nuxt/references/advanced-module-authoring.md +554 -0
- package/skills/nuxt/references/best-practices-data-fetching.md +357 -0
- package/skills/nuxt/references/best-practices-ssr.md +355 -0
- package/skills/nuxt/references/core-cli.md +263 -0
- package/skills/nuxt/references/core-config.md +162 -0
- package/skills/nuxt/references/core-data-fetching.md +236 -0
- package/skills/nuxt/references/core-deployment.md +224 -0
- package/skills/nuxt/references/core-directory-structure.md +269 -0
- package/skills/nuxt/references/core-modules.md +292 -0
- package/skills/nuxt/references/core-routing.md +226 -0
- package/skills/nuxt/references/features-components-autoimport.md +328 -0
- package/skills/nuxt/references/features-components.md +264 -0
- package/skills/nuxt/references/features-composables.md +276 -0
- package/skills/nuxt/references/features-server.md +265 -0
- package/skills/nuxt/references/features-state.md +194 -0
- package/skills/nuxt/references/rendering-modes.md +237 -0
- package/skills/pinia/GENERATION.md +5 -0
- package/skills/pinia/LICENSE.md +21 -0
- package/skills/pinia/SKILL.md +59 -0
- package/skills/pinia/SYNC.md +5 -0
- package/skills/pinia/references/advanced-hmr.md +61 -0
- package/skills/pinia/references/advanced-nuxt.md +119 -0
- package/skills/pinia/references/advanced-ssr.md +121 -0
- package/skills/pinia/references/best-practices-outside-component.md +115 -0
- package/skills/pinia/references/best-practices-testing.md +212 -0
- package/skills/pinia/references/core-stores.md +389 -0
- package/skills/pinia/references/features-composables.md +114 -0
- package/skills/pinia/references/features-composing-stores.md +134 -0
- package/skills/pinia/references/features-plugins.md +203 -0
- package/skills/pnpm/GENERATION.md +5 -0
- package/skills/pnpm/LICENSE.md +21 -0
- package/skills/pnpm/SKILL.md +42 -0
- package/skills/pnpm/SYNC.md +5 -0
- package/skills/pnpm/references/best-practices-ci.md +285 -0
- package/skills/pnpm/references/best-practices-migration.md +291 -0
- package/skills/pnpm/references/best-practices-performance.md +284 -0
- package/skills/pnpm/references/core-cli.md +229 -0
- package/skills/pnpm/references/core-config.md +188 -0
- package/skills/pnpm/references/core-store.md +179 -0
- package/skills/pnpm/references/core-workspaces.md +205 -0
- package/skills/pnpm/references/features-aliases.md +168 -0
- package/skills/pnpm/references/features-catalogs.md +159 -0
- package/skills/pnpm/references/features-hooks.md +233 -0
- package/skills/pnpm/references/features-overrides.md +184 -0
- package/skills/pnpm/references/features-patches.md +201 -0
- package/skills/pnpm/references/features-peer-deps.md +250 -0
- package/skills/slidev/LICENSE.md +21 -0
- package/skills/slidev/README.md +61 -0
- package/skills/slidev/SKILL.md +189 -0
- package/skills/slidev/SYNC.md +5 -0
- package/skills/slidev/references/animation-click-marker.md +37 -0
- package/skills/slidev/references/animation-drawing.md +68 -0
- package/skills/slidev/references/animation-rough-marker.md +53 -0
- package/skills/slidev/references/api-slide-hooks.md +37 -0
- package/skills/slidev/references/build-og-image.md +36 -0
- package/skills/slidev/references/build-pdf.md +40 -0
- package/skills/slidev/references/build-remote-assets.md +34 -0
- package/skills/slidev/references/build-seo-meta.md +43 -0
- package/skills/slidev/references/code-groups.md +64 -0
- package/skills/slidev/references/code-import-snippet.md +55 -0
- package/skills/slidev/references/code-line-highlighting.md +50 -0
- package/skills/slidev/references/code-line-numbers.md +46 -0
- package/skills/slidev/references/code-magic-move.md +57 -0
- package/skills/slidev/references/code-max-height.md +37 -0
- package/skills/slidev/references/code-twoslash.md +42 -0
- package/skills/slidev/references/core-animations.md +196 -0
- package/skills/slidev/references/core-cli.md +140 -0
- package/skills/slidev/references/core-components.md +197 -0
- package/skills/slidev/references/core-exporting.md +148 -0
- package/skills/slidev/references/core-frontmatter.md +195 -0
- package/skills/slidev/references/core-global-context.md +155 -0
- package/skills/slidev/references/core-headmatter.md +188 -0
- package/skills/slidev/references/core-hosting.md +152 -0
- package/skills/slidev/references/core-layouts.md +286 -0
- package/skills/slidev/references/core-syntax.md +155 -0
- package/skills/slidev/references/diagram-latex.md +55 -0
- package/skills/slidev/references/diagram-mermaid.md +44 -0
- package/skills/slidev/references/diagram-plantuml.md +45 -0
- package/skills/slidev/references/editor-monaco-run.md +44 -0
- package/skills/slidev/references/editor-monaco-write.md +24 -0
- package/skills/slidev/references/editor-monaco.md +50 -0
- package/skills/slidev/references/editor-prettier.md +40 -0
- package/skills/slidev/references/editor-side.md +23 -0
- package/skills/slidev/references/editor-vscode.md +55 -0
- package/skills/slidev/references/layout-canvas-size.md +25 -0
- package/skills/slidev/references/layout-draggable.md +57 -0
- package/skills/slidev/references/layout-global-layers.md +50 -0
- package/skills/slidev/references/layout-slots.md +75 -0
- package/skills/slidev/references/layout-transform.md +33 -0
- package/skills/slidev/references/layout-zoom.md +39 -0
- package/skills/slidev/references/presenter-notes-ruby.md +35 -0
- package/skills/slidev/references/presenter-recording.md +30 -0
- package/skills/slidev/references/presenter-remote.md +40 -0
- package/skills/slidev/references/presenter-timer.md +34 -0
- package/skills/slidev/references/style-direction.md +34 -0
- package/skills/slidev/references/style-icons.md +46 -0
- package/skills/slidev/references/style-scoped.md +50 -0
- package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
- package/skills/slidev/references/syntax-comark.md +51 -0
- package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/tool-eject-theme.md +27 -0
- package/skills/tsdown/LICENSE.md +22 -0
- package/skills/tsdown/README.md +77 -0
- package/skills/tsdown/SKILL.md +416 -0
- package/skills/tsdown/SYNC.md +5 -0
- package/skills/tsdown/references/README.md +139 -0
- package/skills/tsdown/references/advanced-benchmark.md +8 -0
- package/skills/tsdown/references/advanced-ci.md +89 -0
- package/skills/tsdown/references/advanced-hooks.md +363 -0
- package/skills/tsdown/references/advanced-plugins.md +381 -0
- package/skills/tsdown/references/advanced-programmatic.md +378 -0
- package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
- package/skills/tsdown/references/guide-getting-started.md +183 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +199 -0
- package/skills/tsdown/references/option-cjs-default.md +98 -0
- package/skills/tsdown/references/option-cleaning.md +275 -0
- package/skills/tsdown/references/option-config-file.md +291 -0
- package/skills/tsdown/references/option-css.md +301 -0
- package/skills/tsdown/references/option-dependencies.md +385 -0
- package/skills/tsdown/references/option-dts.md +251 -0
- package/skills/tsdown/references/option-entry.md +211 -0
- package/skills/tsdown/references/option-exe.md +120 -0
- package/skills/tsdown/references/option-lint.md +127 -0
- package/skills/tsdown/references/option-log-level.md +91 -0
- package/skills/tsdown/references/option-minification.md +177 -0
- package/skills/tsdown/references/option-output-directory.md +272 -0
- package/skills/tsdown/references/option-output-format.md +183 -0
- package/skills/tsdown/references/option-package-exports.md +320 -0
- package/skills/tsdown/references/option-platform.md +256 -0
- package/skills/tsdown/references/option-root.md +88 -0
- package/skills/tsdown/references/option-shims.md +299 -0
- package/skills/tsdown/references/option-sourcemap.md +301 -0
- package/skills/tsdown/references/option-target.md +222 -0
- package/skills/tsdown/references/option-tree-shaking.md +335 -0
- package/skills/tsdown/references/option-unbundle.md +310 -0
- package/skills/tsdown/references/option-watch-mode.md +261 -0
- package/skills/tsdown/references/recipe-react.md +338 -0
- package/skills/tsdown/references/recipe-solid.md +42 -0
- package/skills/tsdown/references/recipe-svelte.md +54 -0
- package/skills/tsdown/references/recipe-vue.md +387 -0
- package/skills/tsdown/references/recipe-wasm.md +125 -0
- package/skills/tsdown/references/reference-cli.md +472 -0
- package/skills/turborepo/LICENSE.md +7 -0
- package/skills/turborepo/SKILL.md +951 -0
- package/skills/turborepo/SYNC.md +5 -0
- package/skills/turborepo/command/turborepo.md +70 -0
- package/skills/turborepo/references/best-practices/RULE.md +241 -0
- package/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/skills/turborepo/references/best-practices/packages.md +335 -0
- package/skills/turborepo/references/best-practices/structure.md +297 -0
- package/skills/turborepo/references/boundaries/RULE.md +126 -0
- package/skills/turborepo/references/caching/RULE.md +153 -0
- package/skills/turborepo/references/caching/gotchas.md +190 -0
- package/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/skills/turborepo/references/ci/RULE.md +79 -0
- package/skills/turborepo/references/ci/github-actions.md +162 -0
- package/skills/turborepo/references/ci/patterns.md +145 -0
- package/skills/turborepo/references/ci/vercel.md +103 -0
- package/skills/turborepo/references/cli/RULE.md +100 -0
- package/skills/turborepo/references/cli/commands.md +297 -0
- package/skills/turborepo/references/configuration/RULE.md +235 -0
- package/skills/turborepo/references/configuration/global-options.md +239 -0
- package/skills/turborepo/references/configuration/gotchas.md +368 -0
- package/skills/turborepo/references/configuration/tasks.md +325 -0
- package/skills/turborepo/references/environment/RULE.md +123 -0
- package/skills/turborepo/references/environment/gotchas.md +175 -0
- package/skills/turborepo/references/environment/modes.md +101 -0
- package/skills/turborepo/references/filtering/RULE.md +148 -0
- package/skills/turborepo/references/filtering/patterns.md +152 -0
- package/skills/turborepo/references/watch/RULE.md +99 -0
- package/skills/vite/GENERATION.md +5 -0
- package/skills/vite/LICENSE.md +21 -0
- package/skills/vite/SKILL.md +72 -0
- package/skills/vite/SYNC.md +5 -0
- package/skills/vite/references/build-and-ssr.md +164 -0
- package/skills/vite/references/core-config.md +162 -0
- package/skills/vite/references/core-features.md +205 -0
- package/skills/vite/references/core-plugin-api.md +235 -0
- package/skills/vite/references/environment-api.md +108 -0
- package/skills/vite/references/rolldown-migration.md +157 -0
- package/skills/vitepress/GENERATION.md +5 -0
- package/skills/vitepress/LICENSE.md +21 -0
- package/skills/vitepress/SKILL.md +65 -0
- package/skills/vitepress/SYNC.md +5 -0
- package/skills/vitepress/references/advanced-i18n.md +299 -0
- package/skills/vitepress/references/advanced-ssr.md +228 -0
- package/skills/vitepress/references/core-cli.md +119 -0
- package/skills/vitepress/references/core-config.md +189 -0
- package/skills/vitepress/references/core-markdown.md +277 -0
- package/skills/vitepress/references/core-routing.md +169 -0
- package/skills/vitepress/references/features-code-blocks.md +243 -0
- package/skills/vitepress/references/features-data-loading.md +220 -0
- package/skills/vitepress/references/features-dynamic-routes.md +235 -0
- package/skills/vitepress/references/features-vue.md +224 -0
- package/skills/vitepress/references/recipes-deploy.md +240 -0
- package/skills/vitepress/references/theme-config.md +315 -0
- package/skills/vitepress/references/theme-custom.md +269 -0
- package/skills/vitepress/references/theme-customization.md +290 -0
- package/skills/vitest/GENERATION.md +5 -0
- package/skills/vitest/LICENSE.md +21 -0
- package/skills/vitest/SKILL.md +52 -0
- package/skills/vitest/SYNC.md +5 -0
- package/skills/vitest/references/advanced-environments.md +264 -0
- package/skills/vitest/references/advanced-projects.md +300 -0
- package/skills/vitest/references/advanced-type-testing.md +237 -0
- package/skills/vitest/references/advanced-vi.md +249 -0
- package/skills/vitest/references/core-cli.md +166 -0
- package/skills/vitest/references/core-config.md +174 -0
- package/skills/vitest/references/core-describe.md +193 -0
- package/skills/vitest/references/core-expect.md +219 -0
- package/skills/vitest/references/core-hooks.md +244 -0
- package/skills/vitest/references/core-test-api.md +233 -0
- package/skills/vitest/references/features-concurrency.md +250 -0
- package/skills/vitest/references/features-context.md +238 -0
- package/skills/vitest/references/features-coverage.md +207 -0
- package/skills/vitest/references/features-filtering.md +211 -0
- package/skills/vitest/references/features-mocking.md +265 -0
- package/skills/vitest/references/features-snapshots.md +207 -0
- package/skills/vue/GENERATION.md +5 -0
- package/skills/vue/LICENSE.md +21 -0
- package/skills/vue/SKILL.md +84 -0
- package/skills/vue/SYNC.md +5 -0
- package/skills/vue/references/advanced-patterns.md +314 -0
- package/skills/vue/references/core-new-apis.md +264 -0
- package/skills/vue/references/script-setup-macros.md +204 -0
- package/skills/vue-best-practices/LICENSE.md +21 -0
- package/skills/vue-best-practices/SKILL.md +154 -0
- package/skills/vue-best-practices/SYNC.md +5 -0
- package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
- package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
- package/skills/vue-best-practices/references/component-async.md +97 -0
- package/skills/vue-best-practices/references/component-data-flow.md +307 -0
- package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
- package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
- package/skills/vue-best-practices/references/component-slots.md +216 -0
- package/skills/vue-best-practices/references/component-suspense.md +228 -0
- package/skills/vue-best-practices/references/component-teleport.md +108 -0
- package/skills/vue-best-practices/references/component-transition-group.md +128 -0
- package/skills/vue-best-practices/references/component-transition.md +125 -0
- package/skills/vue-best-practices/references/composables.md +290 -0
- package/skills/vue-best-practices/references/directives.md +162 -0
- package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
- package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
- package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
- package/skills/vue-best-practices/references/plugins.md +166 -0
- package/skills/vue-best-practices/references/reactivity.md +344 -0
- package/skills/vue-best-practices/references/render-functions.md +201 -0
- package/skills/vue-best-practices/references/sfc.md +310 -0
- package/skills/vue-best-practices/references/state-management.md +135 -0
- package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
- package/skills/vue-router-best-practices/LICENSE.md +21 -0
- package/skills/vue-router-best-practices/SKILL.md +23 -0
- package/skills/vue-router-best-practices/SYNC.md +5 -0
- package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
- package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
- package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
- package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
- package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
- package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
- package/skills/vue-testing-best-practices/LICENSE.md +21 -0
- package/skills/vue-testing-best-practices/SKILL.md +29 -0
- package/skills/vue-testing-best-practices/SYNC.md +5 -0
- package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
- package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
- package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
- package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
- package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
- package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
- package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
- package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
- package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
- package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
- package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
- package/skills/vueuse-functions/LICENSE.md +21 -0
- package/skills/vueuse-functions/SKILL.md +419 -0
- package/skills/vueuse-functions/SYNC.md +5 -0
- package/skills/vueuse-functions/references/computedAsync.md +195 -0
- package/skills/vueuse-functions/references/computedEager.md +62 -0
- package/skills/vueuse-functions/references/computedInject.md +137 -0
- package/skills/vueuse-functions/references/computedWithControl.md +98 -0
- package/skills/vueuse-functions/references/createEventHook.md +86 -0
- package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
- package/skills/vueuse-functions/references/createGlobalState.md +95 -0
- package/skills/vueuse-functions/references/createInjectionState.md +226 -0
- package/skills/vueuse-functions/references/createProjection.md +31 -0
- package/skills/vueuse-functions/references/createRef.md +54 -0
- package/skills/vueuse-functions/references/createReusableTemplate.md +361 -0
- package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
- package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
- package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
- package/skills/vueuse-functions/references/extendRef.md +76 -0
- package/skills/vueuse-functions/references/from.md +80 -0
- package/skills/vueuse-functions/references/get.md +30 -0
- package/skills/vueuse-functions/references/injectLocal.md +35 -0
- package/skills/vueuse-functions/references/isDefined.md +31 -0
- package/skills/vueuse-functions/references/logicAnd.md +40 -0
- package/skills/vueuse-functions/references/logicNot.md +36 -0
- package/skills/vueuse-functions/references/logicOr.md +40 -0
- package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
- package/skills/vueuse-functions/references/onClickOutside.md +228 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +212 -0
- package/skills/vueuse-functions/references/onLongPress.md +235 -0
- package/skills/vueuse-functions/references/onStartTyping.md +53 -0
- package/skills/vueuse-functions/references/provideLocal.md +37 -0
- package/skills/vueuse-functions/references/reactify.md +144 -0
- package/skills/vueuse-functions/references/reactifyObject.md +62 -0
- package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
- package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
- package/skills/vueuse-functions/references/reactivePick.md +106 -0
- package/skills/vueuse-functions/references/refAutoReset.md +46 -0
- package/skills/vueuse-functions/references/refDebounced.md +81 -0
- package/skills/vueuse-functions/references/refDefault.md +36 -0
- package/skills/vueuse-functions/references/refManualReset.md +48 -0
- package/skills/vueuse-functions/references/refThrottled.md +99 -0
- package/skills/vueuse-functions/references/refWithControl.md +146 -0
- package/skills/vueuse-functions/references/set.md +30 -0
- package/skills/vueuse-functions/references/syncRef.md +195 -0
- package/skills/vueuse-functions/references/syncRefs.md +128 -0
- package/skills/vueuse-functions/references/templateRef.md +86 -0
- package/skills/vueuse-functions/references/toObserver.md +38 -0
- package/skills/vueuse-functions/references/toReactive.md +41 -0
- package/skills/vueuse-functions/references/toRef.md +74 -0
- package/skills/vueuse-functions/references/toRefs.md +78 -0
- package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
- package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
- package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
- package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
- package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
- package/skills/vueuse-functions/references/unrefElement.md +54 -0
- package/skills/vueuse-functions/references/until.md +161 -0
- package/skills/vueuse-functions/references/useAbs.md +31 -0
- package/skills/vueuse-functions/references/useActiveElement.md +86 -0
- package/skills/vueuse-functions/references/useAnimate.md +180 -0
- package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
- package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
- package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
- package/skills/vueuse-functions/references/useArrayFind.md +50 -0
- package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
- package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
- package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
- package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
- package/skills/vueuse-functions/references/useArrayMap.md +59 -0
- package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
- package/skills/vueuse-functions/references/useArraySome.md +59 -0
- package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
- package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
- package/skills/vueuse-functions/references/useAsyncState.md +185 -0
- package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
- package/skills/vueuse-functions/references/useAuth.md +123 -0
- package/skills/vueuse-functions/references/useAverage.md +36 -0
- package/skills/vueuse-functions/references/useAxios.md +325 -0
- package/skills/vueuse-functions/references/useBase64.md +136 -0
- package/skills/vueuse-functions/references/useBattery.md +80 -0
- package/skills/vueuse-functions/references/useBluetooth.md +174 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +176 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +73 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +56 -0
- package/skills/vueuse-functions/references/useCached.md +52 -0
- package/skills/vueuse-functions/references/useCeil.md +31 -0
- package/skills/vueuse-functions/references/useChangeCase.md +79 -0
- package/skills/vueuse-functions/references/useClamp.md +85 -0
- package/skills/vueuse-functions/references/useClipboard.md +122 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +93 -0
- package/skills/vueuse-functions/references/useCloned.md +91 -0
- package/skills/vueuse-functions/references/useColorMode.md +172 -0
- package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
- package/skills/vueuse-functions/references/useCookies.md +162 -0
- package/skills/vueuse-functions/references/useCountdown.md +105 -0
- package/skills/vueuse-functions/references/useCounter.md +86 -0
- package/skills/vueuse-functions/references/useCssSupports.md +33 -0
- package/skills/vueuse-functions/references/useCssVar.md +50 -0
- package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
- package/skills/vueuse-functions/references/useCycleList.md +75 -0
- package/skills/vueuse-functions/references/useDark.md +142 -0
- package/skills/vueuse-functions/references/useDateFormat.md +145 -0
- package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
- package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
- package/skills/vueuse-functions/references/useDeviceMotion.md +80 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +64 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +47 -0
- package/skills/vueuse-functions/references/useDevicesList.md +89 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +67 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +44 -0
- package/skills/vueuse-functions/references/useDraggable.md +289 -0
- package/skills/vueuse-functions/references/useDrauu.md +65 -0
- package/skills/vueuse-functions/references/useDropZone.md +83 -0
- package/skills/vueuse-functions/references/useElementBounding.md +131 -0
- package/skills/vueuse-functions/references/useElementByPoint.md +46 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +79 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +163 -0
- package/skills/vueuse-functions/references/useEventBus.md +101 -0
- package/skills/vueuse-functions/references/useEventListener.md +226 -0
- package/skills/vueuse-functions/references/useEventSource.md +204 -0
- package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
- package/skills/vueuse-functions/references/useEyeDropper.md +72 -0
- package/skills/vueuse-functions/references/useFavicon.md +69 -0
- package/skills/vueuse-functions/references/useFetch.md +546 -0
- package/skills/vueuse-functions/references/useFileDialog.md +91 -0
- package/skills/vueuse-functions/references/useFileSystemAccess.md +161 -0
- package/skills/vueuse-functions/references/useFirestore.md +129 -0
- package/skills/vueuse-functions/references/useFloor.md +31 -0
- package/skills/vueuse-functions/references/useFocus.md +99 -0
- package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
- package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
- package/skills/vueuse-functions/references/useFps.md +28 -0
- package/skills/vueuse-functions/references/useFullscreen.md +74 -0
- package/skills/vueuse-functions/references/useFuse.md +75 -0
- package/skills/vueuse-functions/references/useGamepad.md +176 -0
- package/skills/vueuse-functions/references/useGeolocation.md +63 -0
- package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
- package/skills/vueuse-functions/references/useIdle.md +88 -0
- package/skills/vueuse-functions/references/useImage.md +90 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +156 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +117 -0
- package/skills/vueuse-functions/references/useInterval.md +112 -0
- package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
- package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
- package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
- package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
- package/skills/vueuse-functions/references/useJwt.md +57 -0
- package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
- package/skills/vueuse-functions/references/useLastChanged.md +63 -0
- package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
- package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
- package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
- package/skills/vueuse-functions/references/useMath.md +47 -0
- package/skills/vueuse-functions/references/useMax.md +36 -0
- package/skills/vueuse-functions/references/useMediaControls.md +201 -0
- package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
- package/skills/vueuse-functions/references/useMemoize.md +175 -0
- package/skills/vueuse-functions/references/useMemory.md +70 -0
- package/skills/vueuse-functions/references/useMin.md +36 -0
- package/skills/vueuse-functions/references/useMounted.md +38 -0
- package/skills/vueuse-functions/references/useMouse.md +113 -0
- package/skills/vueuse-functions/references/useMouseInElement.md +132 -0
- package/skills/vueuse-functions/references/useMousePressed.md +116 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +60 -0
- package/skills/vueuse-functions/references/useNProgress.md +78 -0
- package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
- package/skills/vueuse-functions/references/useNetwork.md +106 -0
- package/skills/vueuse-functions/references/useNow.md +83 -0
- package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
- package/skills/vueuse-functions/references/useObservable.md +91 -0
- package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
- package/skills/vueuse-functions/references/useOnline.md +41 -0
- package/skills/vueuse-functions/references/usePageLeave.md +43 -0
- package/skills/vueuse-functions/references/useParallax.md +58 -0
- package/skills/vueuse-functions/references/useParentElement.md +54 -0
- package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
- package/skills/vueuse-functions/references/usePermission.md +78 -0
- package/skills/vueuse-functions/references/usePointer.md +91 -0
- package/skills/vueuse-functions/references/usePointerLock.md +59 -0
- package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
- package/skills/vueuse-functions/references/usePrecision.md +49 -0
- package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
- package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
- package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
- package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
- package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
- package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
- package/skills/vueuse-functions/references/usePrevious.md +40 -0
- package/skills/vueuse-functions/references/useProjection.md +38 -0
- package/skills/vueuse-functions/references/useQRCode.md +53 -0
- package/skills/vueuse-functions/references/useRTDB.md +83 -0
- package/skills/vueuse-functions/references/useRafFn.md +68 -0
- package/skills/vueuse-functions/references/useRefHistory.md +285 -0
- package/skills/vueuse-functions/references/useResizeObserver.md +108 -0
- package/skills/vueuse-functions/references/useRound.md +31 -0
- package/skills/vueuse-functions/references/useRouteHash.md +27 -0
- package/skills/vueuse-functions/references/useRouteParams.md +38 -0
- package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
- package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
- package/skills/vueuse-functions/references/useScreenOrientation.md +98 -0
- package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
- package/skills/vueuse-functions/references/useScriptTag.md +116 -0
- package/skills/vueuse-functions/references/useScroll.md +238 -0
- package/skills/vueuse-functions/references/useScrollLock.md +66 -0
- package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
- package/skills/vueuse-functions/references/useShare.md +67 -0
- package/skills/vueuse-functions/references/useSortable.md +276 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +90 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +101 -0
- package/skills/vueuse-functions/references/useStepper.md +137 -0
- package/skills/vueuse-functions/references/useStorage.md +278 -0
- package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
- package/skills/vueuse-functions/references/useStyleTag.md +131 -0
- package/skills/vueuse-functions/references/useSubject.md +77 -0
- package/skills/vueuse-functions/references/useSubscription.md +33 -0
- package/skills/vueuse-functions/references/useSum.md +36 -0
- package/skills/vueuse-functions/references/useSupported.md +29 -0
- package/skills/vueuse-functions/references/useSwipe.md +75 -0
- package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
- package/skills/vueuse-functions/references/useTextDirection.md +75 -0
- package/skills/vueuse-functions/references/useTextSelection.md +43 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +94 -0
- package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
- package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
- package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
- package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
- package/skills/vueuse-functions/references/useTimeout.md +113 -0
- package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
- package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
- package/skills/vueuse-functions/references/useTimestamp.md +93 -0
- package/skills/vueuse-functions/references/useTitle.md +115 -0
- package/skills/vueuse-functions/references/useToNumber.md +54 -0
- package/skills/vueuse-functions/references/useToString.md +34 -0
- package/skills/vueuse-functions/references/useToggle.md +103 -0
- package/skills/vueuse-functions/references/useTransition.md +265 -0
- package/skills/vueuse-functions/references/useTrunc.md +33 -0
- package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
- package/skills/vueuse-functions/references/useUserMedia.md +96 -0
- package/skills/vueuse-functions/references/useVModel.md +182 -0
- package/skills/vueuse-functions/references/useVModels.md +67 -0
- package/skills/vueuse-functions/references/useVibrate.md +86 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +51 -0
- package/skills/vueuse-functions/references/useWebNotification.md +175 -0
- package/skills/vueuse-functions/references/useWebSocket.md +299 -0
- package/skills/vueuse-functions/references/useWebWorker.md +60 -0
- package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
- package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
- package/skills/vueuse-functions/references/useWindowScroll.md +46 -0
- package/skills/vueuse-functions/references/useWindowSize.md +78 -0
- package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
- package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
- package/skills/vueuse-functions/references/watchArray.md +53 -0
- package/skills/vueuse-functions/references/watchAtMost.md +63 -0
- package/skills/vueuse-functions/references/watchDebounced.md +101 -0
- package/skills/vueuse-functions/references/watchDeep.md +54 -0
- package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
- package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
- package/skills/vueuse-functions/references/watchImmediate.md +44 -0
- package/skills/vueuse-functions/references/watchOnce.md +41 -0
- package/skills/vueuse-functions/references/watchPausable.md +86 -0
- package/skills/vueuse-functions/references/watchThrottled.md +108 -0
- package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
- package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
- package/skills/vueuse-functions/references/whenever.md +108 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Component
|
|
3
|
+
outline: deep
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# createTemplatePromise
|
|
7
|
+
|
|
8
|
+
Template as Promise. Useful for constructing custom Dialogs, Modals, Toasts, etc.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<script setup lang="ts">
|
|
14
|
+
import { createTemplatePromise } from '@vueuse/core'
|
|
15
|
+
|
|
16
|
+
const TemplatePromise = createTemplatePromise<ReturnType>()
|
|
17
|
+
|
|
18
|
+
async function open() {
|
|
19
|
+
const result = await TemplatePromise.start()
|
|
20
|
+
// button is clicked, result is 'ok'
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<TemplatePromise v-slot="{ promise, resolve, reject, args }">
|
|
26
|
+
<!-- your UI -->
|
|
27
|
+
<button @click="resolve('ok')">
|
|
28
|
+
OK
|
|
29
|
+
</button>
|
|
30
|
+
</TemplatePromise>
|
|
31
|
+
</template>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Features
|
|
35
|
+
|
|
36
|
+
- **Programmatic** - call your UI as a promise
|
|
37
|
+
- **Template** - use Vue template to render, not a new DSL
|
|
38
|
+
- **TypeScript** - full type safety via generic type
|
|
39
|
+
- **Renderless** - you take full control of the UI
|
|
40
|
+
- **Transition** - use support Vue transition
|
|
41
|
+
|
|
42
|
+
This function is migrated from [vue-template-promise](https://github.com/antfu/vue-template-promise)
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
`createTemplatePromise` returns a **Vue Component** that you can directly use in your template with `<script setup>`
|
|
47
|
+
|
|
48
|
+
```ts twoslash include main
|
|
49
|
+
import { createTemplatePromise } from '@vueuse/core'
|
|
50
|
+
|
|
51
|
+
const TemplatePromise = createTemplatePromise()
|
|
52
|
+
const MyPromise = createTemplatePromise<boolean>() // with generic type
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
In template, use `v-slot` to access the promise and resolve functions.
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<template>
|
|
59
|
+
<TemplatePromise v-slot="{ promise, resolve, reject, args }">
|
|
60
|
+
<!-- you can have anything -->
|
|
61
|
+
<button @click="resolve('ok')">
|
|
62
|
+
OK
|
|
63
|
+
</button>
|
|
64
|
+
</TemplatePromise>
|
|
65
|
+
<MyPromise v-slot="{ promise, resolve, reject, args }">
|
|
66
|
+
<!-- another one -->
|
|
67
|
+
</MyPromise>
|
|
68
|
+
</template>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The slot will not be rendered initially (similar to `v-if="false"`), until you call the `start` method from the component.
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
// @include: main
|
|
75
|
+
// ---cut---
|
|
76
|
+
const result = await TemplatePromise.start()
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Once `resolve` or `reject` is called in the template, the promise will be resolved or rejected, returning the value you passed in. Once resolved, the slot will be removed automatically.
|
|
80
|
+
|
|
81
|
+
### Passing Arguments
|
|
82
|
+
|
|
83
|
+
You can pass arguments to the `start` with arguments.
|
|
84
|
+
|
|
85
|
+
```ts twoslash include passing-arguments
|
|
86
|
+
import { createTemplatePromise } from '@vueuse/core'
|
|
87
|
+
|
|
88
|
+
const TemplatePromise = createTemplatePromise<boolean, [string, number]>()
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
// @include: passing-arguments
|
|
93
|
+
// ---cut---
|
|
94
|
+
const result = await TemplatePromise.start('hello', 123) // Pr
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
And in the template slot, you can access the arguments via `args` property.
|
|
98
|
+
|
|
99
|
+
```vue
|
|
100
|
+
<template>
|
|
101
|
+
<TemplatePromise v-slot="{ args, resolve }">
|
|
102
|
+
<div>{{ args[0] }}</div>
|
|
103
|
+
<!-- hello -->
|
|
104
|
+
<div>{{ args[1] }}</div>
|
|
105
|
+
<!-- 123 -->
|
|
106
|
+
<button @click="resolve(true)">
|
|
107
|
+
OK
|
|
108
|
+
</button>
|
|
109
|
+
</TemplatePromise>
|
|
110
|
+
</template>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Singleton Mode
|
|
114
|
+
|
|
115
|
+
Use the `singleton` option to ensure only one instance of the promise can be active at a time. If `start` is called while a promise is already active, it will return the existing promise instead of creating a new one.
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import { createTemplatePromise } from '@vueuse/core'
|
|
119
|
+
|
|
120
|
+
const TemplatePromise = createTemplatePromise<boolean>({
|
|
121
|
+
singleton: true,
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
// These will return the same promise if called in quick succession
|
|
125
|
+
const result1 = TemplatePromise.start()
|
|
126
|
+
const result2 = TemplatePromise.start() // returns the same promise as result1
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Transition
|
|
130
|
+
|
|
131
|
+
You can use transition to animate the slot.
|
|
132
|
+
|
|
133
|
+
```vue
|
|
134
|
+
<script setup lang="ts">
|
|
135
|
+
const TemplatePromise = createTemplatePromise<ReturnType>({
|
|
136
|
+
transition: {
|
|
137
|
+
name: 'fade',
|
|
138
|
+
appear: true,
|
|
139
|
+
},
|
|
140
|
+
})
|
|
141
|
+
</script>
|
|
142
|
+
|
|
143
|
+
<template>
|
|
144
|
+
<TemplatePromise v-slot="{ resolve }">
|
|
145
|
+
<!-- your UI -->
|
|
146
|
+
<button @click="resolve('ok')">
|
|
147
|
+
OK
|
|
148
|
+
</button>
|
|
149
|
+
</TemplatePromise>
|
|
150
|
+
</template>
|
|
151
|
+
|
|
152
|
+
<style scoped>
|
|
153
|
+
.fade-enter-active,
|
|
154
|
+
.fade-leave-active {
|
|
155
|
+
transition: opacity 0.5s;
|
|
156
|
+
}
|
|
157
|
+
.fade-enter,
|
|
158
|
+
.fade-leave-to {
|
|
159
|
+
opacity: 0;
|
|
160
|
+
}
|
|
161
|
+
</style>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Learn more about [Vue Transition](https://vuejs.org/guide/built-ins/transition.html).
|
|
165
|
+
|
|
166
|
+
### Slot Props
|
|
167
|
+
|
|
168
|
+
The slot provides the following props:
|
|
169
|
+
|
|
170
|
+
| Prop | Type | Description |
|
|
171
|
+
| ------------- | ---------------------------------------- | --------------------------------------------------------- |
|
|
172
|
+
| `promise` | `Promise<Return> \| undefined` | The current promise instance |
|
|
173
|
+
| `resolve` | `(v: Return \| Promise<Return>) => void` | Resolve the promise with a value |
|
|
174
|
+
| `reject` | `(v: any) => void` | Reject the promise |
|
|
175
|
+
| `args` | `Args` | Arguments passed to `start()` |
|
|
176
|
+
| `isResolving` | `boolean` | `true` when resolving another promise passed to `resolve` |
|
|
177
|
+
| `key` | `number` | Unique key for list rendering |
|
|
178
|
+
|
|
179
|
+
```vue
|
|
180
|
+
<template>
|
|
181
|
+
<TemplatePromise v-slot="{ promise, resolve, reject, args, isResolving }">
|
|
182
|
+
<div v-if="isResolving">
|
|
183
|
+
Loading...
|
|
184
|
+
</div>
|
|
185
|
+
<div v-else>
|
|
186
|
+
<button @click="resolve('ok')">
|
|
187
|
+
OK
|
|
188
|
+
</button>
|
|
189
|
+
<button @click="reject('cancelled')">
|
|
190
|
+
Cancel
|
|
191
|
+
</button>
|
|
192
|
+
</div>
|
|
193
|
+
</TemplatePromise>
|
|
194
|
+
</template>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Motivation
|
|
198
|
+
|
|
199
|
+
The common approach to call a dialog or a modal programmatically would be like this:
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
const dialog = useDialog()
|
|
203
|
+
const result = await dialog.open({
|
|
204
|
+
title: 'Hello',
|
|
205
|
+
content: 'World',
|
|
206
|
+
})
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
This would work by sending these information to the top-level component and let it render the dialog. However, it limits the flexibility you could express in the UI. For example, you could want the title to be red, or have extra buttons, etc. You would end up with a lot of options like:
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
const result = await dialog.open({
|
|
213
|
+
title: 'Hello',
|
|
214
|
+
titleClass: 'text-red',
|
|
215
|
+
content: 'World',
|
|
216
|
+
contentClass: 'text-blue text-sm',
|
|
217
|
+
buttons: [
|
|
218
|
+
{ text: 'OK', class: 'bg-red', onClick: () => {} },
|
|
219
|
+
{ text: 'Cancel', class: 'bg-blue', onClick: () => {} },
|
|
220
|
+
],
|
|
221
|
+
// ...
|
|
222
|
+
})
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Even this is not flexible enough. If you want more, you might end up with manual render function.
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
const result = await dialog.open({
|
|
229
|
+
title: 'Hello',
|
|
230
|
+
contentSlot: () => h(MyComponent, { content }),
|
|
231
|
+
})
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
This is like reinventing a new DSL in the script to express the UI template.
|
|
235
|
+
|
|
236
|
+
So this function allows **expressing the UI in templates instead of scripts**, where it is supposed to be, while still being able to be manipulated programmatically.
|
|
237
|
+
|
|
238
|
+
## Type Declarations
|
|
239
|
+
|
|
240
|
+
```ts
|
|
241
|
+
export interface TemplatePromiseProps<Return, Args extends any[] = []> {
|
|
242
|
+
/**
|
|
243
|
+
* The promise instance.
|
|
244
|
+
*/
|
|
245
|
+
promise: Promise<Return> | undefined
|
|
246
|
+
/**
|
|
247
|
+
* Resolve the promise.
|
|
248
|
+
*/
|
|
249
|
+
resolve: (v: Return | Promise<Return>) => void
|
|
250
|
+
/**
|
|
251
|
+
* Reject the promise.
|
|
252
|
+
*/
|
|
253
|
+
reject: (v: any) => void
|
|
254
|
+
/**
|
|
255
|
+
* Arguments passed to TemplatePromise.start()
|
|
256
|
+
*/
|
|
257
|
+
args: Args
|
|
258
|
+
/**
|
|
259
|
+
* Indicates if the promise is resolving.
|
|
260
|
+
* When passing another promise to `resolve`, this will be set to `true` until the promise is resolved.
|
|
261
|
+
*/
|
|
262
|
+
isResolving: boolean
|
|
263
|
+
/**
|
|
264
|
+
* Options passed to createTemplatePromise()
|
|
265
|
+
*/
|
|
266
|
+
options: TemplatePromiseOptions
|
|
267
|
+
/**
|
|
268
|
+
* Unique key for list rendering.
|
|
269
|
+
*/
|
|
270
|
+
key: number
|
|
271
|
+
}
|
|
272
|
+
export interface TemplatePromiseOptions {
|
|
273
|
+
/**
|
|
274
|
+
* Determines if the promise can be called only once at a time.
|
|
275
|
+
*
|
|
276
|
+
* @default false
|
|
277
|
+
*/
|
|
278
|
+
singleton?: boolean
|
|
279
|
+
/**
|
|
280
|
+
* Transition props for the promise.
|
|
281
|
+
*/
|
|
282
|
+
transition?: TransitionGroupProps
|
|
283
|
+
}
|
|
284
|
+
export type TemplatePromise<
|
|
285
|
+
Return,
|
|
286
|
+
Args extends any[] = [],
|
|
287
|
+
> = DefineComponent<object> & {
|
|
288
|
+
new (): {
|
|
289
|
+
$slots: {
|
|
290
|
+
default: (_: TemplatePromiseProps<Return, Args>) => any
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
} & {
|
|
294
|
+
start: (...args: Args) => Promise<Return>
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Creates a template promise component.
|
|
298
|
+
*
|
|
299
|
+
* @see https://vueuse.org/createTemplatePromise
|
|
300
|
+
*
|
|
301
|
+
* @__NO_SIDE_EFFECTS__
|
|
302
|
+
*/
|
|
303
|
+
export declare function createTemplatePromise<Return, Args extends any[] = []>(
|
|
304
|
+
options?: TemplatePromiseOptions,
|
|
305
|
+
): TemplatePromise<Return, Args>
|
|
306
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Utilities
|
|
3
|
+
related: reactify
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# createUnrefFn
|
|
7
|
+
|
|
8
|
+
Make a plain function accepting ref and raw values as arguments.
|
|
9
|
+
Returns the same value the unconverted function returns, with proper typing.
|
|
10
|
+
|
|
11
|
+
::: tip
|
|
12
|
+
Make sure you're using the right tool for the job. Using `reactify`
|
|
13
|
+
might be more pertinent in some cases where you want to evaluate the function on each changes of it's arguments.
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { createUnrefFn } from '@vueuse/core'
|
|
20
|
+
import { shallowRef } from 'vue'
|
|
21
|
+
|
|
22
|
+
const url = shallowRef('https://httpbin.org/post')
|
|
23
|
+
const data = shallowRef({ foo: 'bar' })
|
|
24
|
+
|
|
25
|
+
function post(url, data) {
|
|
26
|
+
return fetch(url, { data })
|
|
27
|
+
}
|
|
28
|
+
const unrefPost = createUnrefFn(post)
|
|
29
|
+
|
|
30
|
+
post(url, data) /* ❌ Will throw an error because the arguments are refs */
|
|
31
|
+
unrefPost(url, data) /* ✔️ Will Work because the arguments will be auto unref */
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Type Declarations
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export type UnrefFn<T> = T extends (...args: infer A) => infer R
|
|
38
|
+
? (
|
|
39
|
+
...args: {
|
|
40
|
+
[K in keyof A]: MaybeRef<A[K]>
|
|
41
|
+
}
|
|
42
|
+
) => R
|
|
43
|
+
: never
|
|
44
|
+
/**
|
|
45
|
+
* Make a plain function accepting ref and raw values as arguments.
|
|
46
|
+
* Returns the same value the unconverted function returns, with proper typing.
|
|
47
|
+
*
|
|
48
|
+
* @__NO_SIDE_EFFECTS__
|
|
49
|
+
*/
|
|
50
|
+
export declare function createUnrefFn<T extends Function>(fn: T): UnrefFn<T>
|
|
51
|
+
```
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Reactivity
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# extendRef
|
|
6
|
+
|
|
7
|
+
Add extra attributes to Ref.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
> Please note the extra attribute will not be accessible in Vue's template.
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { extendRef } from '@vueuse/core'
|
|
15
|
+
import { shallowRef } from 'vue'
|
|
16
|
+
|
|
17
|
+
const myRef = shallowRef('content')
|
|
18
|
+
|
|
19
|
+
const extended = extendRef(myRef, { foo: 'extra data' })
|
|
20
|
+
|
|
21
|
+
extended.value === 'content'
|
|
22
|
+
extended.foo === 'extra data'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Refs will be unwrapped and be reactive
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
import { extendRef } from '@vueuse/core'
|
|
29
|
+
// ---cut---
|
|
30
|
+
const myRef = shallowRef('content')
|
|
31
|
+
const extraRef = shallowRef('extra')
|
|
32
|
+
|
|
33
|
+
const extended = extendRef(myRef, { extra: extraRef })
|
|
34
|
+
|
|
35
|
+
extended.value === 'content'
|
|
36
|
+
extended.extra === 'extra'
|
|
37
|
+
|
|
38
|
+
extended.extra = 'new data' // will trigger update
|
|
39
|
+
extraRef.value === 'new data'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Type Declarations
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
export type ExtendRefReturn<T = any> = Ref<T>
|
|
46
|
+
export interface ExtendRefOptions<Unwrap extends boolean = boolean> {
|
|
47
|
+
/**
|
|
48
|
+
* Is the extends properties enumerable
|
|
49
|
+
*
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
enumerable?: boolean
|
|
53
|
+
/**
|
|
54
|
+
* Unwrap for Ref properties
|
|
55
|
+
*
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
58
|
+
unwrap?: Unwrap
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Overload 1: Unwrap set to false
|
|
62
|
+
*/
|
|
63
|
+
export declare function extendRef<
|
|
64
|
+
R extends Ref<any>,
|
|
65
|
+
Extend extends object,
|
|
66
|
+
Options extends ExtendRefOptions<false>,
|
|
67
|
+
>(ref: R, extend: Extend, options?: Options): ShallowUnwrapRef<Extend> & R
|
|
68
|
+
/**
|
|
69
|
+
* Overload 2: Unwrap unset or set to true
|
|
70
|
+
*/
|
|
71
|
+
export declare function extendRef<
|
|
72
|
+
R extends Ref<any>,
|
|
73
|
+
Extend extends object,
|
|
74
|
+
Options extends ExtendRefOptions,
|
|
75
|
+
>(ref: R, extend: Extend, options?: Options): Extend & R
|
|
76
|
+
```
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: '@RxJS'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# from / fromEvent
|
|
6
|
+
|
|
7
|
+
Wrappers around RxJS's [`from()`](https://rxjs.dev/api/index/function/from) and [`fromEvent()`](https://rxjs.dev/api/index/function/fromEvent) to allow them to accept `ref`s.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
<!-- TODO: import rxjs error if enable twoslash -->
|
|
12
|
+
|
|
13
|
+
```ts no-twoslash
|
|
14
|
+
import { from, fromEvent, toObserver, useSubscription } from '@vueuse/rxjs'
|
|
15
|
+
import { interval } from 'rxjs'
|
|
16
|
+
import { map, mapTo, takeUntil, withLatestFrom } from 'rxjs/operators'
|
|
17
|
+
import { shallowRef, useTemplateRef } from 'vue'
|
|
18
|
+
|
|
19
|
+
const count = shallowRef(0)
|
|
20
|
+
const button = useTemplateRef('buttonRef')
|
|
21
|
+
|
|
22
|
+
useSubscription(
|
|
23
|
+
interval(1000)
|
|
24
|
+
.pipe(
|
|
25
|
+
mapTo(1),
|
|
26
|
+
takeUntil(fromEvent(button, 'click')),
|
|
27
|
+
withLatestFrom(from(count, {
|
|
28
|
+
immediate: true,
|
|
29
|
+
deep: false,
|
|
30
|
+
})),
|
|
31
|
+
map(([curr, total]) => curr + total),
|
|
32
|
+
)
|
|
33
|
+
.subscribe(toObserver(count)), // same as ).subscribe(val => (count.value = val))
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## from
|
|
38
|
+
|
|
39
|
+
The `from` function can accept either a standard RxJS `ObservableInput` or a Vue `ref`. When passed a ref, it creates an Observable that emits whenever the ref's value changes.
|
|
40
|
+
|
|
41
|
+
### Watch Options
|
|
42
|
+
|
|
43
|
+
When using `from` with a ref, you can pass Vue's `WatchOptions`:
|
|
44
|
+
|
|
45
|
+
| Option | Type | Description |
|
|
46
|
+
| ----------- | --------------------------- | ---------------------------------- |
|
|
47
|
+
| `immediate` | `boolean` | Emit the current value immediately |
|
|
48
|
+
| `deep` | `boolean` | Deeply watch nested objects |
|
|
49
|
+
| `flush` | `'pre' \| 'post' \| 'sync'` | Timing of the callback flush |
|
|
50
|
+
|
|
51
|
+
## fromEvent
|
|
52
|
+
|
|
53
|
+
The `fromEvent` function extends RxJS's `fromEvent` to accept a ref to an element. When the ref's value changes (e.g., after the component mounts), it automatically subscribes to the new element.
|
|
54
|
+
|
|
55
|
+
```ts no-twoslash
|
|
56
|
+
import { fromEvent, useSubscription } from '@vueuse/rxjs'
|
|
57
|
+
import { useTemplateRef } from 'vue'
|
|
58
|
+
|
|
59
|
+
const button = useTemplateRef('buttonRef')
|
|
60
|
+
|
|
61
|
+
// Will automatically subscribe when the button element becomes available
|
|
62
|
+
useSubscription(
|
|
63
|
+
fromEvent(button, 'click').subscribe(() => {
|
|
64
|
+
console.log('clicked!')
|
|
65
|
+
})
|
|
66
|
+
)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Type Declarations
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
export declare function from<T>(
|
|
73
|
+
value: ObservableInput<T> | Ref<T>,
|
|
74
|
+
watchOptions?: WatchOptions,
|
|
75
|
+
): Observable<T>
|
|
76
|
+
export declare function fromEvent<T extends HTMLElement | null>(
|
|
77
|
+
value: MaybeRef<T>,
|
|
78
|
+
event: string,
|
|
79
|
+
): Observable<Event>
|
|
80
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Utilities
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# get
|
|
6
|
+
|
|
7
|
+
Shorthand for accessing `ref.value`
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { get } from '@vueuse/core'
|
|
13
|
+
|
|
14
|
+
const a = ref(42)
|
|
15
|
+
|
|
16
|
+
console.log(get(a)) // 42
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Type Declarations
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
/**
|
|
23
|
+
* Shorthand for accessing `ref.value`
|
|
24
|
+
*/
|
|
25
|
+
export declare function get<T>(ref: MaybeRef<T>): T
|
|
26
|
+
export declare function get<T, K extends keyof T>(
|
|
27
|
+
ref: MaybeRef<T>,
|
|
28
|
+
key: K,
|
|
29
|
+
): T[K]
|
|
30
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: State
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# injectLocal
|
|
6
|
+
|
|
7
|
+
Extended `inject` with ability to call `provideLocal` to provide the value in the same component.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<script setup>
|
|
13
|
+
import { injectLocal, provideLocal } from '@vueuse/core'
|
|
14
|
+
|
|
15
|
+
provideLocal('MyInjectionKey', 1)
|
|
16
|
+
const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1
|
|
17
|
+
</script>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Type Declarations
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
/**
|
|
24
|
+
* On the basis of `inject`, it is allowed to directly call inject to obtain the value after call provide in the same component.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* injectLocal('MyInjectionKey', 1)
|
|
29
|
+
* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @__NO_SIDE_EFFECTS__
|
|
33
|
+
*/
|
|
34
|
+
export declare const injectLocal: typeof inject
|
|
35
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: Utilities
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# isDefined
|
|
6
|
+
|
|
7
|
+
Non-nullish checking type guard for Ref.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { isDefined } from '@vueuse/core'
|
|
13
|
+
|
|
14
|
+
const example = ref(Math.random() ? 'example' : undefined) // Ref<string | undefined>
|
|
15
|
+
|
|
16
|
+
if (isDefined(example))
|
|
17
|
+
example // Ref<string>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Type Declarations
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
export type IsDefinedReturn = boolean
|
|
24
|
+
export declare function isDefined<T>(
|
|
25
|
+
v: ComputedRef<T>,
|
|
26
|
+
): v is ComputedRef<Exclude<T, null | undefined>>
|
|
27
|
+
export declare function isDefined<T>(
|
|
28
|
+
v: Ref<T>,
|
|
29
|
+
): v is Ref<Exclude<T, null | undefined>>
|
|
30
|
+
export declare function isDefined<T>(v: T): v is Exclude<T, null | undefined>
|
|
31
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: '@Math'
|
|
3
|
+
alias: and
|
|
4
|
+
related: logicNot, logicOr
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# logicAnd
|
|
8
|
+
|
|
9
|
+
`AND` condition for refs.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { whenever } from '@vueuse/core'
|
|
15
|
+
import { logicAnd } from '@vueuse/math'
|
|
16
|
+
|
|
17
|
+
const a = ref(true)
|
|
18
|
+
const b = ref(false)
|
|
19
|
+
|
|
20
|
+
whenever(logicAnd(a, b), () => {
|
|
21
|
+
console.log('both a and b are now truthy!')
|
|
22
|
+
})
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Type Declarations
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
/**
|
|
29
|
+
* `AND` conditions for refs.
|
|
30
|
+
*
|
|
31
|
+
* @see https://vueuse.org/logicAnd
|
|
32
|
+
*
|
|
33
|
+
* @__NO_SIDE_EFFECTS__
|
|
34
|
+
*/
|
|
35
|
+
export declare function logicAnd(
|
|
36
|
+
...args: MaybeRefOrGetter<any>[]
|
|
37
|
+
): ComputedRef<boolean>
|
|
38
|
+
/** @deprecated use `logicAnd` instead */
|
|
39
|
+
export declare const and: typeof logicAnd
|
|
40
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
category: '@Math'
|
|
3
|
+
alias: not
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# logicNot
|
|
7
|
+
|
|
8
|
+
`NOT` condition for ref.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { whenever } from '@vueuse/core'
|
|
14
|
+
import { logicNot } from '@vueuse/math'
|
|
15
|
+
|
|
16
|
+
const a = ref(true)
|
|
17
|
+
|
|
18
|
+
whenever(logicNot(a), () => {
|
|
19
|
+
console.log('a is now falsy!')
|
|
20
|
+
})
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Type Declarations
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
/**
|
|
27
|
+
* `NOT` conditions for refs.
|
|
28
|
+
*
|
|
29
|
+
* @see https://vueuse.org/logicNot
|
|
30
|
+
*
|
|
31
|
+
* @__NO_SIDE_EFFECTS__
|
|
32
|
+
*/
|
|
33
|
+
export declare function logicNot(v: MaybeRefOrGetter<any>): ComputedRef<boolean>
|
|
34
|
+
/** @deprecated use `logicNot` instead */
|
|
35
|
+
export declare const not: typeof logicNot
|
|
36
|
+
```
|