@tsparticles/vue3 3.0.1 → 4.0.0-beta.12

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 CHANGED
@@ -2,153 +2,72 @@
2
2
 
3
3
  # @tsparticles/vue3
4
4
 
5
- [![npm](https://img.shields.io/npm/v/@tsparticles/vue3)](https://www.npmjs.com/package/@tsparticles/vue3) [![npm](https://img.shields.io/npm/dm/@tsparticles/vue3)](https://www.npmjs.com/package/@tsparticles/vue3) [![GitHub Sponsors](https://img.shields.io/github/sponsors/matteobruni)](https://github.com/sponsors/matteobruni)
5
+ [![npm](https://img.shields.io/npm/v/@tsparticles/vue3)](https://www.npmjs.com/package/@tsparticles/vue3)
6
+ [![npm](https://img.shields.io/npm/dm/@tsparticles/vue3)](https://www.npmjs.com/package/@tsparticles/vue3)
6
7
 
7
- Official [tsParticles](https://github.com/matteobruni/tsparticles) VueJS 3.x component
8
-
9
- [![Slack](https://particles.js.org/images/slack.png)](https://join.slack.com/t/tsparticles/shared_invite/enQtOTcxNTQxNjQ4NzkxLWE2MTZhZWExMWRmOWI5MTMxNjczOGE1Yjk0MjViYjdkYTUzODM3OTc5MGQ5MjFlODc4MzE0N2Q1OWQxZDc1YzI) [![Discord](https://particles.js.org/images/discord.png)](https://discord.gg/hACwv45Hme) [![Telegram](https://particles.js.org/images/telegram.png)](https://t.me/tsparticles)
10
-
11
- [![tsParticles Product Hunt](https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=186113&theme=light)](https://www.producthunt.com/posts/tsparticles?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-tsparticles") <a href="https://www.buymeacoffee.com/matteobruni"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a beer&emoji=🍺&slug=matteobruni&button_colour=5F7FFF&font_colour=ffffff&font_family=Arial&outline_colour=000000&coffee_colour=FFDD00"></a>
8
+ Official Vue 3 component wrapper for [tsParticles](https://github.com/matteobruni/tsparticles).
12
9
 
13
10
  ## Installation
14
11
 
15
- ```shell script
16
- yarn add @tsparticles/vue3
12
+ ```bash
13
+ pnpm add @tsparticles/vue3 @tsparticles/engine
17
14
  ```
18
15
 
19
16
  ## Usage
20
17
 
21
- ```javascript
22
- import Particles from "@tsparticles/vue3";
23
- //import { loadFull } from "tsparticles"; // if you are going to use `loadFull`, install the "tsparticles" package too.
24
- import { loadSlim } from "tsparticles-slim"; // if you are going to use `loadSlim`, install the "tsparticles-slim" package too.
25
-
26
- createApp(App).use(Particles, {
27
- init: async engine => {
28
- // await loadFull(engine); // you can load the full tsParticles library from "tsparticles" if you need it
29
- await loadSlim(engine); // or you can load the slim version from "tsparticles-slim" if don't need Shapes or Animations
30
- },
31
- });
32
- ```
18
+ Register the plugin once in your app and provide your own async `init` function.
33
19
 
34
- ### Demo config
20
+ ```ts
21
+ import { createApp } from "vue";
22
+ import Particles from "@tsparticles/vue3";
23
+ import type { Engine } from "@tsparticles/engine";
24
+ import App from "./App.vue";
35
25
 
36
- ```html
37
- <template>
38
- <div id="app">
39
- <vue-particles id="tsparticles" :particlesLoaded="particlesLoaded" url="http://foo.bar/particles.json" />
40
-
41
- <vue-particles
42
- id="tsparticles"
43
- :particlesLoaded="particlesLoaded"
44
- :options="{
45
- background: {
46
- color: {
47
- value: '#0d47a1'
48
- }
49
- },
50
- fpsLimit: 120,
51
- interactivity: {
52
- events: {
53
- onClick: {
54
- enable: true,
55
- mode: 'push'
56
- },
57
- onHover: {
58
- enable: true,
59
- mode: 'repulse'
60
- },
61
- },
62
- modes: {
63
- bubble: {
64
- distance: 400,
65
- duration: 2,
66
- opacity: 0.8,
67
- size: 40
68
- },
69
- push: {
70
- quantity: 4
71
- },
72
- repulse: {
73
- distance: 200,
74
- duration: 0.4
75
- }
76
- }
77
- },
78
- particles: {
79
- color: {
80
- value: '#ffffff'
81
- },
82
- links: {
83
- color: '#ffffff',
84
- distance: 150,
85
- enable: true,
86
- opacity: 0.5,
87
- width: 1
88
- },
89
- move: {
90
- direction: 'none',
91
- enable: true,
92
- outModes: 'bounce',
93
- random: false,
94
- speed: 6,
95
- straight: false
96
- },
97
- number: {
98
- density: {
99
- enable: true,
100
- },
101
- value: 80
102
- },
103
- opacity: {
104
- value: 0.5
105
- },
106
- shape: {
107
- type: 'circle'
108
- },
109
- size: {
110
- value: { min: 1, max: 5 }
111
- }
112
- },
113
- detectRetina: true
114
- }"
115
- />
116
- </div>
117
- </template>
118
- ```
26
+ async function registerParticles(engine: Engine): Promise<void> {
27
+ const [{ loadSlim }] = await Promise.all([import("@tsparticles/slim")]);
119
28
 
120
- ```javascript
121
- const particlesLoaded = async container => {
122
- console.log("Particles container loaded", container);
123
- };
124
- ```
29
+ await loadSlim(engine);
30
+ }
125
31
 
126
- ### TypeScript errors
32
+ const app = createApp(App);
127
33
 
128
- If TypeScript returns error while importing/using Particles plugin try adding the following import before the previous
129
- code:
34
+ app.use(Particles, {
35
+ init: registerParticles,
36
+ });
130
37
 
131
- ```typescript
132
- declare module "@tsparticles/vue3";
38
+ app.mount("#app");
133
39
  ```
134
40
 
135
- ## Demos
41
+ Then use the component anywhere in the app:
136
42
 
137
- The demo website is [here](https://particles.js.org)
43
+ ```vue
44
+ <template>
45
+ <vue-particles id="tsparticles" :options="options" @particles-loaded="particlesLoaded" />
46
+ </template>
138
47
 
139
- <https://particles.js.org>
48
+ <script setup lang="ts">
49
+ import type { Container, ISourceOptions } from "@tsparticles/engine";
140
50
 
141
- There's also a CodePen collection actively maintained and updated [here](https://codepen.io/collection/DPOage)
51
+ const options: ISourceOptions = {
52
+ particles: {
53
+ number: { value: 80 },
54
+ links: { enable: true },
55
+ move: { enable: true },
56
+ },
57
+ };
142
58
 
143
- <https://codepen.io/collection/DPOage>
59
+ function particlesLoaded(container?: Container): void {
60
+ console.log("Particles loaded", container);
61
+ }
62
+ </script>
63
+ ```
144
64
 
145
- ## Migrating from Vue 2.x to Vue 3.x
65
+ ## How init works
146
66
 
147
- If you are migrating your project from Vue 2.x to 3.x you need to these steps:
67
+ - `init` is called once per Vue app instance.
68
+ - Components wait for `init` completion before loading.
69
+ - You choose what to import inside `init` (`@tsparticles/slim`, `tsparticles`, custom plugins, etc.).
148
70
 
149
- - Change the dependency from `@tsparticles/vue2` to `@tsparticles/vue3`
150
- - Update the `node_modules` folder executing `npm install` or `yarn`
151
- - Change the `use` function from `Vue.use(Particles, { init: /* omissis */ })`
152
- to `createApp(App).use(Particles, { init: /* omissis */ })`.
71
+ ## Nuxt support
153
72
 
154
- The `<vue-particles />` tag syntax remains the same, so you don't need to do any additional action.
73
+ For Nuxt projects use [`@tsparticles/nuxt3`](../nuxt3/README.md) or [`@tsparticles/nuxt4`](../nuxt4/README.md), which wrap this package in a Nuxt module.
@@ -1,39 +1,65 @@
1
- import { defineComponent as l, onMounted as p, nextTick as u, onUnmounted as m, openBlock as f, createElementBlock as v } from "vue";
2
- import { tsParticles as o } from "@tsparticles/engine";
3
- const _ = ["id"], w = /* @__PURE__ */ l({
4
- __name: "vue-particles",
5
- props: {
6
- id: {},
7
- options: {},
8
- url: {}
9
- },
10
- emits: ["particlesLoaded"],
11
- setup(r, { emit: e }) {
12
- let t, i;
13
- const n = r, c = e;
14
- addEventListener("particlesInit", (s) => {
15
- i = s.detail, a();
16
- });
17
- const a = async () => {
18
- i || (i = o), t = await i.load({
19
- id: n.id,
20
- url: n.url,
21
- options: n.options
22
- }), c("particlesLoaded", t);
23
- };
24
- return p(() => {
25
- u(() => {
26
- if (!n.id)
27
- throw new Error("Prop 'id' is required!");
28
- a();
29
- });
30
- }), m(() => {
31
- t && (t.destroy(), t = void 0);
32
- }), (s, d) => (f(), v("div", { id: s.id }, null, 8, _));
33
- }
34
- }), P = (r, e) => {
35
- r.component("vue-particles", w), (async () => (o.init(), e.init && await e.init(o), dispatchEvent(new CustomEvent("particlesInit", { detail: o }))))();
36
- };
37
- export {
38
- P as default
1
+ import { createElementBlock as e, defineComponent as t, inject as n, nextTick as r, onMounted as i, onUnmounted as a, openBlock as o, reactive as s, ref as c, watch as l } from "vue";
2
+ import { tsParticles as u } from "@tsparticles/engine";
3
+ //#region src/components/particles-provider.ts
4
+ var d = Symbol("particles-provider"), f = "__tsparticles_vue3_init_state__";
5
+ function p() {
6
+ let e = globalThis;
7
+ return e[f] ??= { loaded: !1 }, e[f];
8
+ }
9
+ function m() {
10
+ return s({ loaded: !1 });
11
+ }
12
+ function h(e, t, n) {
13
+ let r = p();
14
+ if (r.promise && r.callback !== n && !r.loaded) throw Error("@tsparticles/vue3 init callback must be stable across the app lifecycle.");
15
+ return r.loaded ? (t.loaded = !0, Promise.resolve()) : r.promise ? r.promise.then(() => {
16
+ t.loaded = !0;
17
+ }) : (r.callback = n, r.promise = (async () => {
18
+ n && await n(u), await u.init(), r.loaded = !0, t.loaded = !0;
19
+ })().catch((e) => {
20
+ throw r.promise = void 0, r.callback = void 0, r.loaded = !1, e;
21
+ }), r.promise);
22
+ }
23
+ function g() {
24
+ let e = n(d, void 0);
25
+ if (!e) throw Error("@tsparticles/vue3 plugin is required. Register it with app.use(Particles, { init }).");
26
+ return e;
27
+ }
28
+ //#endregion
29
+ //#region src/components/vue-particles.vue?vue&type=script&setup=true&lang.ts
30
+ var _ = ["id"], v = /* @__PURE__ */ t({
31
+ __name: "vue-particles",
32
+ props: {
33
+ id: {},
34
+ options: {},
35
+ url: {},
36
+ theme: {}
37
+ },
38
+ emits: ["particlesLoaded"],
39
+ setup(t, { emit: n }) {
40
+ let s, d = t, f = n, p = g(), m = c(!1), h = async () => {
41
+ s?.destroy(), s = await u.load({
42
+ id: d.id,
43
+ url: d.url,
44
+ options: d.options
45
+ }), f("particlesLoaded", s);
46
+ };
47
+ return i(() => {
48
+ r(() => {
49
+ if (!d.id) throw Error("Prop 'id' is required!");
50
+ m.value = !0;
51
+ });
52
+ }), a(() => {
53
+ s?.destroy(), s = void 0;
54
+ }), l(() => p.loaded, (e) => {
55
+ e && m.value && h();
56
+ }, { immediate: !0 }), l(() => m.value, (e) => {
57
+ e && p.loaded && h();
58
+ }, { immediate: !0 }), (n, r) => (o(), e("div", { id: t.id }, null, 8, _));
59
+ }
60
+ }), y = (e, t) => {
61
+ let n = m();
62
+ e.provide(d, n), e.component("VueParticles", v), h(e, n, t?.init);
39
63
  };
64
+ //#endregion
65
+ export { y as default };
@@ -1 +1 @@
1
- (function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t(require("vue"),require("@tsparticles/engine")):typeof define=="function"&&define.amd?define(["vue","@tsparticles/engine"],t):(e=typeof globalThis<"u"?globalThis:e||self,e["@tsparticles/vue3"]=t(e.Vue,e.tsParticles))})(this,function(e,t){"use strict";const a=["id"],l=e.defineComponent({__name:"vue-particles",props:{id:{},options:{},url:{}},emits:["particlesLoaded"],setup(o,{emit:n}){let i,s;const r=o,p=n;addEventListener("particlesInit",c=>{s=c.detail,d()});const d=async()=>{s||(s=t.tsParticles),i=await s.load({id:r.id,url:r.url,options:r.options}),p("particlesLoaded",i)};return e.onMounted(()=>{e.nextTick(()=>{if(!r.id)throw new Error("Prop 'id' is required!");d()})}),e.onUnmounted(()=>{i&&(i.destroy(),i=void 0)}),(c,u)=>(e.openBlock(),e.createElementBlock("div",{id:c.id},null,8,a))}});return(o,n)=>{o.component("vue-particles",l),(async()=>(t.tsParticles.init(),n.init&&await n.init(t.tsParticles),dispatchEvent(new CustomEvent("particlesInit",{detail:t.tsParticles}))))()}});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require(`vue`),require(`@tsparticles/engine`)):typeof define==`function`&&define.amd?define([`vue`,`@tsparticles/engine`],t):(e=typeof globalThis<`u`?globalThis:e||self,e[`@tsparticles/vue3`]=t(e.Vue,e.tsParticles))})(this,function(e,t){var n=Symbol(`particles-provider`),r=`__tsparticles_vue3_init_state__`;function i(){let e=globalThis;return e[r]??={loaded:!1},e[r]}function a(){return(0,e.reactive)({loaded:!1})}function o(e,n,r){let a=i();if(a.promise&&a.callback!==r&&!a.loaded)throw Error(`@tsparticles/vue3 init callback must be stable across the app lifecycle.`);return a.loaded?(n.loaded=!0,Promise.resolve()):a.promise?a.promise.then(()=>{n.loaded=!0}):(a.callback=r,a.promise=(async()=>{r&&await r(t.tsParticles),await t.tsParticles.init(),a.loaded=!0,n.loaded=!0})().catch(e=>{throw a.promise=void 0,a.callback=void 0,a.loaded=!1,e}),a.promise)}function s(){let t=(0,e.inject)(n,void 0);if(!t)throw Error(`@tsparticles/vue3 plugin is required. Register it with app.use(Particles, { init }).`);return t}var c=[`id`],l=(0,e.defineComponent)({__name:`vue-particles`,props:{id:{},options:{},url:{},theme:{}},emits:[`particlesLoaded`],setup(n,{emit:r}){let i,a=n,o=r,l=s(),u=(0,e.ref)(!1),d=async()=>{i?.destroy(),i=await t.tsParticles.load({id:a.id,url:a.url,options:a.options}),o(`particlesLoaded`,i)};return(0,e.onMounted)(()=>{(0,e.nextTick)(()=>{if(!a.id)throw Error(`Prop 'id' is required!`);u.value=!0})}),(0,e.onUnmounted)(()=>{i?.destroy(),i=void 0}),(0,e.watch)(()=>l.loaded,e=>{e&&u.value&&d()},{immediate:!0}),(0,e.watch)(()=>u.value,e=>{e&&l.loaded&&d()},{immediate:!0}),(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{id:n.id},null,8,c))}});return(e,t)=>{let r=a();e.provide(n,r),e.component(`VueParticles`,l),o(e,r,t?.init)}});
@@ -0,0 +1,5 @@
1
+ import { App } from 'vue';
2
+ import { IParticlesProviderOptions } from './particles-provider';
3
+ declare const VueParticles: (app: App, options?: IParticlesProviderOptions) => void;
4
+ export default VueParticles;
5
+ export type { IParticlesProviderContext, IParticlesProviderOptions, ParticlesPluginRegistrar, } from './particles-provider';
@@ -0,0 +1,13 @@
1
+ import { Engine } from '@tsparticles/engine';
2
+ import { App, InjectionKey } from 'vue';
3
+ export type ParticlesPluginRegistrar = (engine: Engine) => Promise<void> | void;
4
+ export interface IParticlesProviderOptions {
5
+ init?: ParticlesPluginRegistrar;
6
+ }
7
+ export interface IParticlesProviderContext {
8
+ loaded: boolean;
9
+ }
10
+ export declare const particlesProviderKey: InjectionKey<IParticlesProviderContext>;
11
+ export declare function createParticlesProviderContext(): IParticlesProviderContext;
12
+ export declare function initParticlesProvider(_app: App, context: IParticlesProviderContext, init?: ParticlesPluginRegistrar): Promise<void>;
13
+ export declare function useParticlesProvider(): IParticlesProviderContext;
@@ -0,0 +1,14 @@
1
+ import { Container, ISourceOptions } from '@tsparticles/engine';
2
+ export type IParticlesProps = ISourceOptions;
3
+ type __VLS_Props = {
4
+ id: string;
5
+ options?: IParticlesProps;
6
+ url?: string;
7
+ theme?: string;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
10
+ particlesLoaded: (container?: Container | undefined) => any;
11
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onParticlesLoaded?: ((container?: Container | undefined) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
14
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "name": "@tsparticles/vue3",
3
- "version": "3.0.1",
3
+ "version": "4.0.0-beta.12",
4
+ "type": "module",
5
+ "main": "dist/particles.es.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/particles.es.js"
11
+ }
12
+ },
4
13
  "description": "Official tsParticles Vue.js 3.x Component - Easily create highly customizable particle, confetti and fireworks animations and use them as animated backgrounds for your website. Ready to use components available also for Web Components, React, Vue.js 2.x, Angular, Svelte, jQuery, Preact, Riot.js, Solid.js, Inferno.",
5
14
  "keywords": [
6
15
  "front-end",
@@ -65,16 +74,16 @@
65
74
  "prettify:readme": "prettier --write ./README.md",
66
75
  "preview": "vite preview --port 5050",
67
76
  "typecheck": "vue-tsc --noEmit",
68
- "lint": "echo eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
77
+ "lint": "eslint . --fix"
69
78
  },
70
79
  "files": [
71
80
  "dist",
72
81
  "README.md"
73
82
  ],
74
83
  "repository": {
75
- "url": "https://github.com/tsparticles/vue3",
84
+ "url": "https://github.com/tsparticles/tsparticles.git",
76
85
  "type": "git",
77
- "directory": "components/vue3"
86
+ "directory": "wrappers/vue3"
78
87
  },
79
88
  "author": "Matteo Bruni <matteo.bruni@me.com>",
80
89
  "license": "MIT",
@@ -101,31 +110,31 @@
101
110
  "access": "public"
102
111
  },
103
112
  "dependencies": {
104
- "@tsparticles/engine": "^3.0.3",
105
- "vue": "^3.3.13"
113
+ "@tsparticles/engine": "^4.0.0-beta.12",
114
+ "vue": "^3.5.32"
106
115
  },
107
116
  "devDependencies": {
108
- "@rushstack/eslint-patch": "^1.6.1",
109
- "@tsconfig/node18": "^18.2.2",
110
- "@tsparticles/prettier-config": "^2.0.1",
111
- "@types/node": "^20.10.5",
112
- "@vitejs/plugin-vue": "^5.0.0",
113
- "@vitejs/plugin-vue-jsx": "^3.1.0",
114
- "@vue/eslint-config-prettier": "^8.0.0",
115
- "@vue/eslint-config-typescript": "^12.0.0",
116
- "@vue/tsconfig": "^0.4.0",
117
- "eslint": "^8.56.0",
118
- "eslint-plugin-vue": "^9.19.2",
119
- "prettier": "^3.1.1",
120
- "typescript": "^5.3.3",
121
- "vite": "^5.0.10",
122
- "vite-plugin-dts": "^3.7.0",
123
- "vue-tsc": "^1.8.27"
117
+ "@eslint/js": "^10.0.1",
118
+ "@rushstack/eslint-patch": "^1.16.1",
119
+ "@tsconfig/node18": "^18.2.6",
120
+ "@tsparticles/prettier-config": "^3.4.6",
121
+ "@types/node": "^25.6.0",
122
+ "@typescript-eslint/parser": "^8.58.1",
123
+ "@vitejs/plugin-vue": "^6.0.5",
124
+ "@vitejs/plugin-vue-jsx": "^5.1.5",
125
+ "@vue/eslint-config-prettier": "^10.2.0",
126
+ "@vue/eslint-config-typescript": "^14.7.0",
127
+ "@vue/tsconfig": "^0.9.1",
128
+ "eslint": "^10.2.0",
129
+ "eslint-plugin-vue": "^10.8.0",
130
+ "globals": "^17.5.0",
131
+ "prettier": "^3.8.2",
132
+ "typescript": "^6.0.2",
133
+ "vite": "^8.0.8",
134
+ "vite-plugin-dts": "^4.5.4",
135
+ "vue-eslint-parser": "^10.4.0",
136
+ "vue-tsc": "^3.2.6"
124
137
  },
125
- "main": "dist/particles.umd.js",
126
138
  "module": "dist/particles.es.js",
127
- "types": "dist/index.d.ts",
128
- "unpkg": "dist/particles.umd.min.js",
129
- "jsdelivr": "dist/particles.umd.min.js",
130
- "gitHead": "27afa842175cd217b4ab2f3941d34c4985ee8cc8"
139
+ "gitHead": "bdbc95716ce44665fbecfaca8757445e248b562d"
131
140
  }
package/dist/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { App } from "vue";
2
- import { type Engine } from "@tsparticles/engine";
3
- declare const VueParticles: (app: App, options: {
4
- init: (engine: Engine) => Promise<void>;
5
- }) => void;
6
- export default VueParticles;
@@ -1,25 +0,0 @@
1
- import { type Container, type ISourceOptions } from "@tsparticles/engine";
2
- export type IParticlesProps = ISourceOptions;
3
- declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
4
- id: string;
5
- options?: import("@tsparticles/engine").RecursivePartial<import("@tsparticles/engine").IOptions> | undefined;
6
- url?: string | undefined;
7
- }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
- particlesLoaded: (container?: Container | undefined) => void;
9
- }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
10
- id: string;
11
- options?: import("@tsparticles/engine").RecursivePartial<import("@tsparticles/engine").IOptions> | undefined;
12
- url?: string | undefined;
13
- }>>> & {
14
- onParticlesLoaded?: ((container?: Container | undefined) => any) | undefined;
15
- }, {}, {}>;
16
- export default _default;
17
- type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
18
- type __VLS_TypePropsToRuntimeProps<T> = {
19
- [K in keyof T]-?: {} extends Pick<T, K> ? {
20
- type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
21
- } : {
22
- type: import('vue').PropType<T[K]>;
23
- required: true;
24
- };
25
- };