@real-router/vue 0.2.1 → 0.2.2

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.
@@ -1,269 +1,283 @@
1
- import * as vue from 'vue';
2
- import { VNode, PropType, Directive, ShallowRef, Plugin, InjectionKey } from 'vue';
3
- import { Params, NavigationOptions, RouterError, State, Router, Navigator } from '@real-router/core';
4
- export { Navigator } from '@real-router/core';
5
- import { RouteUtils } from '@real-router/route-utils';
6
- import { RouterTransitionSnapshot } from '@real-router/sources';
7
- export { RouterTransitionSnapshot } from '@real-router/sources';
1
+ import * as _$vue from "vue";
2
+ import { Directive, InjectionKey, Plugin, PropType, ShallowRef, VNode } from "vue";
3
+ import { NavigationOptions, Navigator, Navigator as Navigator$1, Params, Router, RouterError, State } from "@real-router/core";
4
+ import { RouteUtils } from "@real-router/route-utils";
5
+ import { RouterTransitionSnapshot, RouterTransitionSnapshot as RouterTransitionSnapshot$1 } from "@real-router/sources";
8
6
 
7
+ //#region src/components/RouteView/types.d.ts
9
8
  interface RouteViewProps {
10
- readonly nodeName: string;
11
- readonly keepAlive?: boolean;
9
+ readonly nodeName: string;
10
+ readonly keepAlive?: boolean;
12
11
  }
13
12
  interface MatchProps {
14
- readonly segment: string;
15
- readonly exact?: boolean;
16
- readonly fallback?: VNode | (() => VNode);
13
+ readonly segment: string;
14
+ readonly exact?: boolean;
15
+ readonly fallback?: VNode | (() => VNode);
17
16
  }
18
17
  type NotFoundProps = Record<string, never>;
19
-
18
+ //#endregion
19
+ //#region src/components/RouteView/RouteView.d.ts
20
20
  declare const RouteView: {
21
- new (...args: any[]): vue.CreateComponentPublicInstanceWithMixins<Readonly<vue.ExtractPropTypes<{
22
- nodeName: {
23
- type: StringConstructor;
24
- required: true;
25
- };
26
- keepAlive: {
27
- type: BooleanConstructor;
28
- default: boolean;
29
- };
30
- }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, vue.PublicProps, {
31
- keepAlive: boolean;
32
- }, true, {}, {}, vue.GlobalComponents, vue.GlobalDirectives, string, {}, any, vue.ComponentProvideOptions, {
33
- P: {};
34
- B: {};
35
- D: {};
36
- C: {};
37
- M: {};
38
- Defaults: {};
39
- }, Readonly<vue.ExtractPropTypes<{
40
- nodeName: {
41
- type: StringConstructor;
42
- required: true;
43
- };
44
- keepAlive: {
45
- type: BooleanConstructor;
46
- default: boolean;
47
- };
48
- }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, {
49
- keepAlive: boolean;
50
- }>;
51
- __isFragment?: never;
52
- __isTeleport?: never;
53
- __isSuspense?: never;
54
- } & vue.ComponentOptionsBase<Readonly<vue.ExtractPropTypes<{
21
+ new (...args: any[]): _$vue.CreateComponentPublicInstanceWithMixins<Readonly<_$vue.ExtractPropTypes<{
55
22
  nodeName: {
56
- type: StringConstructor;
57
- required: true;
23
+ type: StringConstructor;
24
+ required: true;
58
25
  };
59
26
  keepAlive: {
60
- type: BooleanConstructor;
61
- default: boolean;
27
+ type: BooleanConstructor;
28
+ default: boolean;
62
29
  };
63
- }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, {
30
+ }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, _$vue.PublicProps, {
64
31
  keepAlive: boolean;
65
- }, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
66
- Match: vue.DefineComponent<vue.ExtractPropTypes<{
67
- segment: {
68
- type: vue.PropType<string>;
69
- required: true;
70
- };
71
- exact: {
72
- type: BooleanConstructor;
73
- default: boolean;
74
- };
75
- fallback: {
76
- type: vue.PropType<VNode | (() => VNode)>;
77
- default: undefined;
78
- };
79
- }>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
80
- segment: {
81
- type: vue.PropType<string>;
82
- required: true;
83
- };
84
- exact: {
85
- type: BooleanConstructor;
86
- default: boolean;
87
- };
88
- fallback: {
89
- type: vue.PropType<VNode | (() => VNode)>;
90
- default: undefined;
91
- };
92
- }>> & Readonly<{}>, {
93
- exact: boolean;
94
- fallback: VNode<vue.RendererNode, vue.RendererElement, {
95
- [key: string]: any;
96
- }> | (() => VNode);
97
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
98
- NotFound: vue.DefineComponent<{}, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
99
- };
100
-
101
- declare const Link: vue.DefineComponent<vue.ExtractPropTypes<{
102
- routeName: {
103
- type: StringConstructor;
104
- required: true;
105
- };
106
- routeParams: {
107
- type: PropType<Params>;
108
- default: () => Readonly<{}>;
109
- };
110
- routeOptions: {
111
- type: PropType<NavigationOptions>;
112
- default: () => Readonly<{}>;
113
- };
114
- class: {
115
- type: StringConstructor;
116
- default: undefined;
117
- };
118
- activeClassName: {
119
- type: StringConstructor;
120
- default: string;
121
- };
122
- activeStrict: {
123
- type: BooleanConstructor;
124
- default: boolean;
125
- };
126
- ignoreQueryParams: {
127
- type: BooleanConstructor;
128
- default: boolean;
129
- };
130
- target: {
131
- type: StringConstructor;
132
- default: undefined;
133
- };
134
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
135
- [key: string]: any;
136
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
137
- routeName: {
138
- type: StringConstructor;
139
- required: true;
140
- };
141
- routeParams: {
142
- type: PropType<Params>;
143
- default: () => Readonly<{}>;
144
- };
145
- routeOptions: {
146
- type: PropType<NavigationOptions>;
147
- default: () => Readonly<{}>;
148
- };
149
- class: {
150
- type: StringConstructor;
151
- default: undefined;
152
- };
153
- activeClassName: {
154
- type: StringConstructor;
155
- default: string;
32
+ }, true, {}, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, {}, any, _$vue.ComponentProvideOptions, {
33
+ P: {};
34
+ B: {};
35
+ D: {};
36
+ C: {};
37
+ M: {};
38
+ Defaults: {};
39
+ }, Readonly<_$vue.ExtractPropTypes<{
40
+ nodeName: {
41
+ type: StringConstructor;
42
+ required: true;
156
43
  };
157
- activeStrict: {
158
- type: BooleanConstructor;
159
- default: boolean;
44
+ keepAlive: {
45
+ type: BooleanConstructor;
46
+ default: boolean;
160
47
  };
161
- ignoreQueryParams: {
162
- type: BooleanConstructor;
163
- default: boolean;
48
+ }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, {
49
+ keepAlive: boolean;
50
+ }>;
51
+ __isFragment?: never;
52
+ __isTeleport?: never;
53
+ __isSuspense?: never;
54
+ } & _$vue.ComponentOptionsBase<Readonly<_$vue.ExtractPropTypes<{
55
+ nodeName: {
56
+ type: StringConstructor;
57
+ required: true;
58
+ };
59
+ keepAlive: {
60
+ type: BooleanConstructor;
61
+ default: boolean;
62
+ };
63
+ }>> & Readonly<{}>, () => VNode | null, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, {
64
+ keepAlive: boolean;
65
+ }, {}, string, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, _$vue.ComponentProvideOptions> & _$vue.VNodeProps & _$vue.AllowedComponentProps & _$vue.ComponentCustomProps & {
66
+ Match: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
67
+ segment: {
68
+ type: _$vue.PropType<string>;
69
+ required: true;
164
70
  };
165
- target: {
166
- type: StringConstructor;
167
- default: undefined;
71
+ exact: {
72
+ type: BooleanConstructor;
73
+ default: boolean;
168
74
  };
169
- }>> & Readonly<{}>, {
170
- class: string;
171
- ignoreQueryParams: boolean;
172
- routeParams: Params;
173
- routeOptions: NavigationOptions;
174
- activeClassName: string;
175
- activeStrict: boolean;
176
- target: string;
177
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
178
-
179
- declare const RouterErrorBoundary: vue.DefineComponent<vue.ExtractPropTypes<{
180
75
  fallback: {
181
- type: PropType<(error: RouterError, resetError: () => void) => VNode>;
182
- required: true;
76
+ type: _$vue.PropType<VNode | (() => VNode)>;
77
+ default: undefined;
183
78
  };
184
- onError: {
185
- type: PropType<(error: RouterError, toRoute: State | null, fromRoute: State | null) => void>;
186
- default: undefined;
79
+ }>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
80
+ segment: {
81
+ type: _$vue.PropType<string>;
82
+ required: true;
187
83
  };
188
- }>, () => VNode<vue.RendererNode, vue.RendererElement, {
189
- [key: string]: any;
190
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
191
- fallback: {
192
- type: PropType<(error: RouterError, resetError: () => void) => VNode>;
193
- required: true;
84
+ exact: {
85
+ type: BooleanConstructor;
86
+ default: boolean;
194
87
  };
195
- onError: {
196
- type: PropType<(error: RouterError, toRoute: State | null, fromRoute: State | null) => void>;
197
- default: undefined;
88
+ fallback: {
89
+ type: _$vue.PropType<VNode | (() => VNode)>;
90
+ default: undefined;
198
91
  };
92
+ }>> & Readonly<{}>, {
93
+ fallback: VNode<_$vue.RendererNode, _$vue.RendererElement, {
94
+ [key: string]: any;
95
+ }> | (() => VNode);
96
+ exact: boolean;
97
+ }, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
98
+ NotFound: _$vue.DefineComponent<{}, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
99
+ };
100
+ //#endregion
101
+ //#region src/components/Link.d.ts
102
+ declare const Link: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
103
+ routeName: {
104
+ type: StringConstructor;
105
+ required: true;
106
+ };
107
+ routeParams: {
108
+ type: PropType<Params>;
109
+ default: () => Readonly<{}>;
110
+ };
111
+ routeOptions: {
112
+ type: PropType<NavigationOptions>;
113
+ default: () => Readonly<{}>;
114
+ };
115
+ class: {
116
+ type: StringConstructor;
117
+ default: undefined;
118
+ };
119
+ activeClassName: {
120
+ type: StringConstructor;
121
+ default: string;
122
+ };
123
+ activeStrict: {
124
+ type: BooleanConstructor;
125
+ default: boolean;
126
+ };
127
+ ignoreQueryParams: {
128
+ type: BooleanConstructor;
129
+ default: boolean;
130
+ };
131
+ target: {
132
+ type: StringConstructor;
133
+ default: undefined;
134
+ };
135
+ }>, () => _$vue.VNode<_$vue.RendererNode, _$vue.RendererElement, {
136
+ [key: string]: any;
137
+ }>, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
138
+ routeName: {
139
+ type: StringConstructor;
140
+ required: true;
141
+ };
142
+ routeParams: {
143
+ type: PropType<Params>;
144
+ default: () => Readonly<{}>;
145
+ };
146
+ routeOptions: {
147
+ type: PropType<NavigationOptions>;
148
+ default: () => Readonly<{}>;
149
+ };
150
+ class: {
151
+ type: StringConstructor;
152
+ default: undefined;
153
+ };
154
+ activeClassName: {
155
+ type: StringConstructor;
156
+ default: string;
157
+ };
158
+ activeStrict: {
159
+ type: BooleanConstructor;
160
+ default: boolean;
161
+ };
162
+ ignoreQueryParams: {
163
+ type: BooleanConstructor;
164
+ default: boolean;
165
+ };
166
+ target: {
167
+ type: StringConstructor;
168
+ default: undefined;
169
+ };
199
170
  }>> & Readonly<{}>, {
200
- onError: (error: RouterError, toRoute: State | null, fromRoute: State | null) => void;
201
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
171
+ routeParams: Params;
172
+ routeOptions: NavigationOptions;
173
+ class: string;
174
+ activeClassName: string;
175
+ activeStrict: boolean;
176
+ ignoreQueryParams: boolean;
177
+ target: string;
178
+ }, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
179
+ //#endregion
180
+ //#region src/components/RouterErrorBoundary.d.ts
181
+ declare const RouterErrorBoundary: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
182
+ fallback: {
183
+ type: PropType<(error: RouterError, resetError: () => void) => VNode>;
184
+ required: true;
185
+ };
186
+ onError: {
187
+ type: PropType<(error: RouterError, toRoute: State | null, fromRoute: State | null) => void>;
188
+ default: undefined;
189
+ };
190
+ }>, () => VNode<_$vue.RendererNode, _$vue.RendererElement, {
191
+ [key: string]: any;
192
+ }>, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
193
+ fallback: {
194
+ type: PropType<(error: RouterError, resetError: () => void) => VNode>;
195
+ required: true;
196
+ };
197
+ onError: {
198
+ type: PropType<(error: RouterError, toRoute: State | null, fromRoute: State | null) => void>;
199
+ default: undefined;
200
+ };
201
+ }>> & Readonly<{}>, {
202
+ onError: (error: RouterError, toRoute: State | null, fromRoute: State | null) => void;
203
+ }, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
202
204
  type RouterErrorBoundaryProps = InstanceType<typeof RouterErrorBoundary>["$props"];
203
-
205
+ //#endregion
206
+ //#region src/directives/vLink.d.ts
204
207
  interface LinkDirectiveValue {
205
- name: string;
206
- params?: Params;
207
- options?: NavigationOptions;
208
+ name: string;
209
+ params?: Params;
210
+ options?: NavigationOptions;
208
211
  }
209
212
  declare const vLink: Directive<HTMLElement, LinkDirectiveValue>;
210
-
213
+ //#endregion
214
+ //#region src/composables/useRouter.d.ts
211
215
  declare const useRouter: () => Router;
212
-
213
- declare const useNavigator: () => Navigator;
214
-
216
+ //#endregion
217
+ //#region src/composables/useNavigator.d.ts
218
+ declare const useNavigator: () => Navigator$1;
219
+ //#endregion
220
+ //#region src/composables/useRouteUtils.d.ts
215
221
  declare const useRouteUtils: () => RouteUtils;
216
-
222
+ //#endregion
223
+ //#region src/types.d.ts
217
224
  interface RouteContext {
218
- navigator: Navigator;
219
- route: ShallowRef<State | undefined>;
220
- previousRoute: ShallowRef<State | undefined>;
225
+ navigator: Navigator$1;
226
+ route: ShallowRef<State | undefined>;
227
+ previousRoute: ShallowRef<State | undefined>;
221
228
  }
222
229
  interface LinkProps<P extends Params = Params> {
223
- routeName: string;
224
- routeParams?: P;
225
- routeOptions?: NavigationOptions;
226
- class?: string;
227
- activeClassName?: string;
228
- activeStrict?: boolean;
229
- ignoreQueryParams?: boolean;
230
- target?: string;
230
+ routeName: string;
231
+ routeParams?: P;
232
+ routeOptions?: NavigationOptions;
233
+ class?: string;
234
+ activeClassName?: string;
235
+ activeStrict?: boolean;
236
+ ignoreQueryParams?: boolean;
237
+ target?: string;
231
238
  }
232
-
239
+ //#endregion
240
+ //#region src/composables/useRoute.d.ts
233
241
  declare const useRoute: () => RouteContext;
234
-
242
+ //#endregion
243
+ //#region src/composables/useRouteNode.d.ts
235
244
  declare function useRouteNode(nodeName: string): RouteContext;
236
-
237
- declare function useRouterTransition(): ShallowRef<RouterTransitionSnapshot>;
238
-
245
+ //#endregion
246
+ //#region src/composables/useRouterTransition.d.ts
247
+ declare function useRouterTransition(): ShallowRef<RouterTransitionSnapshot$1>;
248
+ //#endregion
249
+ //#region src/createRouterPlugin.d.ts
239
250
  declare function createRouterPlugin(router: Router): Plugin<[]>;
240
-
241
- declare const RouterProvider: vue.DefineComponent<vue.ExtractPropTypes<{
242
- router: {
243
- type: PropType<Router>;
244
- required: true;
245
- };
246
- announceNavigation: {
247
- type: BooleanConstructor;
248
- default: boolean;
249
- };
250
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
251
- [key: string]: any;
252
- }>[] | undefined, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
253
- router: {
254
- type: PropType<Router>;
255
- required: true;
256
- };
257
- announceNavigation: {
258
- type: BooleanConstructor;
259
- default: boolean;
260
- };
251
+ //#endregion
252
+ //#region src/RouterProvider.d.ts
253
+ declare const RouterProvider: _$vue.DefineComponent<_$vue.ExtractPropTypes<{
254
+ router: {
255
+ type: PropType<Router>;
256
+ required: true;
257
+ };
258
+ announceNavigation: {
259
+ type: BooleanConstructor;
260
+ default: boolean;
261
+ };
262
+ }>, () => _$vue.VNode<_$vue.RendererNode, _$vue.RendererElement, {
263
+ [key: string]: any;
264
+ }>[] | undefined, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_$vue.ExtractPropTypes<{
265
+ router: {
266
+ type: PropType<Router>;
267
+ required: true;
268
+ };
269
+ announceNavigation: {
270
+ type: BooleanConstructor;
271
+ default: boolean;
272
+ };
261
273
  }>> & Readonly<{}>, {
262
- announceNavigation: boolean;
263
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
264
-
274
+ announceNavigation: boolean;
275
+ }, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
276
+ //#endregion
277
+ //#region src/context.d.ts
265
278
  declare const RouterKey: InjectionKey<Router>;
266
- declare const NavigatorKey: InjectionKey<Navigator>;
279
+ declare const NavigatorKey: InjectionKey<Navigator$1>;
267
280
  declare const RouteKey: InjectionKey<RouteContext>;
268
-
269
- export { Link, type LinkDirectiveValue, type LinkProps, NavigatorKey, RouteKey, RouteView, type MatchProps as RouteViewMatchProps, type NotFoundProps as RouteViewNotFoundProps, type RouteViewProps, RouterErrorBoundary, type RouterErrorBoundaryProps, RouterKey, RouterProvider, createRouterPlugin, useNavigator, useRoute, useRouteNode, useRouteUtils, useRouter, useRouterTransition, vLink };
281
+ //#endregion
282
+ export { Link, type LinkDirectiveValue, type LinkProps, type Navigator, NavigatorKey, RouteKey, RouteView, type MatchProps as RouteViewMatchProps, type NotFoundProps as RouteViewNotFoundProps, type RouteViewProps, RouterErrorBoundary, type RouterErrorBoundaryProps, RouterKey, RouterProvider, type RouterTransitionSnapshot, createRouterPlugin, useNavigator, useRoute, useRouteNode, useRouteUtils, useRouter, useRouterTransition, vLink };
283
+ //# sourceMappingURL=index.d.ts.map
package/dist/cjs/index.js CHANGED
@@ -1 +1,2 @@
1
- var e=require("vue"),t=require("@real-router/core"),r=require("@real-router/route-utils"),o=require("@real-router/sources"),n=require("dom-utils"),u=require("@real-router/core/api");function a(){return null}var s=e.defineComponent({name:"RouteView.Match",props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0}},render:a}),i=e.defineComponent({name:"RouteView.NotFound",render:a});function l(e,t,o){return o?e===t:r.startsWithSegment(e,t)}function c(t){if(Array.isArray(t)){const r=[];for(const o of t)Array.isArray(o)?r.push(...c(o)):e.isVNode(o)&&r.push(o);return r}return e.isVNode(t)?[t]:[]}function p(t,r){const o=c(t);for(const t of o)t.type===s||t.type===i?r.push(t):t.type===e.Fragment&&p(t.children,r)}function v(t){const r=e.shallowRef(t.getSnapshot()),o=t.subscribe(()=>{r.value=t.getSnapshot()});return e.onScopeDispose(o),r}var d=Symbol("RouterKey"),f=Symbol("NavigatorKey"),m=Symbol("RouteKey"),g=()=>{const t=e.inject(d);if(!t)throw new Error("useRouter must be used within a RouterProvider");return t};function y(r){const n=g(),u=v(o.createRouteNodeSource(n,r)),a=t.getNavigator(n),s=e.shallowRef(u.value.route),i=e.shallowRef(u.value.previousRoute);return e.watch(u,e=>{s.value=e.route,i.value=e.previousRoute},{flush:"sync"}),{navigator:a,route:s,previousRoute:i}}function R(e){const t=e.children;return t?.default?.()??null}function h(t,r){if(void 0===r)return t;const o="function"==typeof r?r():r;return e.h(e.Suspense,{},{default:()=>t,fallback:()=>o})}var w=e.defineComponent({name:"RouteView",props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(r,{slots:o}){const n=y(r.nodeName),u=new Map;return()=>{const a=n.route.value;if(!a)return null;const c=[];p(o.default?.(),c);const{rendered:v,fallback:d}=function(e,r,o){let n,u=null,a=!1;const s=[];for(const t of e){if(t.type===i){u=t.children;continue}const e=t.props,c=e?.segment??"";!a&&l(r,o?`${o}.${c}`:c,e?.exact??!1)&&(a=!0,n=e?.fallback,s.push(t))}if(!a&&r===t.UNKNOWN_ROUTE&&null!==u){const t=e.filter(e=>e.type===i).at(-1);t&&s.push(t)}return{rendered:s,activeMatchFound:a,fallback:n}}(c,a.name,r.nodeName);if(0===v.length)return null;const f=v[0];if(!r.keepAlive){if(f.type===s||f.type===i){const t=R(f);return t?h(e.h(e.Fragment,t),d):null}return null}const m=f.props,g=m?.segment??"__not-found__",y=function(t,r){const o=t.get(r);if(o)return o;const n=e.markRaw(e.defineComponent({name:`KeepAlive-${r}`,setup:(e,t)=>()=>t.slots.default?.()}));return t.set(r,n),n}(u,g),w=R(f)??[];return h(e.h(e.KeepAlive,null,{default:()=>e.h(y,{key:g},{default:()=>w})}),d)}}}),b=Object.assign(w,{Match:s,NotFound:i}),k=Object.freeze({}),N=Object.freeze({}),S=e.defineComponent({name:"Link",props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>k},routeOptions:{type:Object,default:()=>N},class:{type:String,default:void 0},activeClassName:{type:String,default:"active"},activeStrict:{type:Boolean,default:!1},ignoreQueryParams:{type:Boolean,default:!0},target:{type:String,default:void 0}},setup(t,{slots:r,attrs:u}){const a=g(),s=function(e,t,r=!1,n=!0){const u=g();return v(o.createActiveRouteSource(u,e,t,{strict:r,ignoreQueryParams:n}))}(t.routeName,t.routeParams,t.activeStrict,t.ignoreQueryParams),i=e.computed(()=>n.buildHref(a,t.routeName,t.routeParams)),l=e.computed(()=>n.buildActiveClassName(s.value,t.activeClassName,t.class)),c=e=>{u.onClick&&"function"==typeof u.onClick&&(u.onClick(e),e.defaultPrevented)||n.shouldNavigate(e)&&"_blank"!==t.target&&(e.preventDefault(),a.navigate(t.routeName,t.routeParams,t.routeOptions).catch(()=>{}))};return()=>e.h("a",{...u,href:i.value,class:l.value,target:t.target,onClick:c},r.default?.())}}),x=new WeakMap,P=e.defineComponent({name:"RouterErrorBoundary",props:{fallback:{type:Function,required:!0},onError:{type:Function,default:void 0}},setup(t,{slots:r}){const n=function(){const e=g();let t=x.get(e);return t||(t=o.createErrorSource(e),x.set(e,t)),v(t)}(),u=e.ref(-1);e.watch(()=>n.value.version,()=>{n.value.error&&t.onError?.(n.value.error,n.value.toRoute,n.value.fromRoute)},{immediate:!0});const a=e.computed(()=>n.value.version>u.value?n.value.error:null),s=()=>{u.value=n.value.version};return()=>{const o=r.default?.()??[],n=a.value?t.fallback(a.value,s):null;return e.h(e.Fragment,null,[...o,n])}}}),E=null;function C(e){E=e}function A(){if(!E)throw new Error("v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.");return E}var q=new WeakMap,O=new WeakMap;function j(e,t,r){const o=function(e,t){return r=>{n.shouldNavigate(r)&&(r.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}(t,r),u=function(e,t,r){return o=>{"Enter"!==o.key||r instanceof HTMLButtonElement||e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{})}}(t,r,e);e.addEventListener("click",o),e.addEventListener("keydown",u),q.set(e,o),O.set(e,u)}function M(e){const t=q.get(e),r=O.get(e);t&&e.removeEventListener("click",t),r&&e.removeEventListener("keydown",r),q.delete(e),O.delete(e)}var F={mounted(e,t){const r=A();n.applyLinkA11y(e),e.style.cursor="pointer",j(e,r,t.value)},updated(e,t){const r=A();M(e),j(e,r,t.value)},beforeUnmount(e){M(e)}},K=e.defineComponent({name:"RouterProvider",props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1}},setup(r,{slots:u}){e.onMounted(()=>{if(!r.announceNavigation)return;const t=n.createRouteAnnouncer(r.router);e.onUnmounted(()=>{t.destroy()})});const a=t.getNavigator(r.router);C(r.router);const s=o.createRouteSource(r.router),i=s.getSnapshot(),l=e.shallowRef(i.route),c=e.shallowRef(i.previousRoute),p=s.subscribe(()=>{const e=s.getSnapshot();l.value=e.route,c.value=e.previousRoute});return e.onScopeDispose(p),e.provide(d,r.router),e.provide(f,a),e.provide(m,{navigator:a,route:l,previousRoute:c}),()=>u.default?.()}});exports.Link=S,exports.NavigatorKey=f,exports.RouteKey=m,exports.RouteView=b,exports.RouterErrorBoundary=P,exports.RouterKey=d,exports.RouterProvider=K,exports.createRouterPlugin=function(r){return{install(n){const u=t.getNavigator(r);C(r);const a=o.createRouteSource(r),s=a.getSnapshot(),i=e.shallowRef(s.route),l=e.shallowRef(s.previousRoute);a.subscribe(()=>{const e=a.getSnapshot();i.value=e.route,l.value=e.previousRoute}),n.provide(d,r),n.provide(f,u),n.provide(m,{navigator:u,route:i,previousRoute:l})}}},exports.useNavigator=()=>{const t=e.inject(f);if(!t)throw new Error("useNavigator must be used within a RouterProvider");return t},exports.useRoute=()=>{const t=e.inject(m);if(!t)throw new Error("useRoute must be used within a RouterProvider");return t},exports.useRouteNode=y,exports.useRouteUtils=()=>{const e=g();return r.getRouteUtils(u.getPluginApi(e).getTree())},exports.useRouter=g,exports.useRouterTransition=function(){const e=g();return v(o.createTransitionSource(e))},exports.vLink=F;//# sourceMappingURL=index.js.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`),t=require(`@real-router/core`),n=require(`@real-router/route-utils`),r=require(`@real-router/sources`),i=require(`dom-utils`),a=require(`@real-router/core/api`);function o(){return null}const s=(0,e.defineComponent)({name:`RouteView.Match`,props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0}},render:o}),c=(0,e.defineComponent)({name:`RouteView.NotFound`,render:o});function l(e,t,r){return r?e===t:(0,n.startsWithSegment)(e,t)}function u(t){if(Array.isArray(t)){let n=[];for(let r of t)Array.isArray(r)?n.push(...u(r)):(0,e.isVNode)(r)&&n.push(r);return n}return(0,e.isVNode)(t)?[t]:[]}function d(t,n){let r=u(t);for(let t of r)t.type===s||t.type===c?n.push(t):t.type===e.Fragment&&d(t.children,n)}function f(e,n,r){let i=null,a=!1,o,s=[];for(let t of e){if(t.type===c){i=t.children;continue}let e=t.props,u=e?.segment??``,d=e?.exact??!1,f=r?`${r}.${u}`:u;!a&&l(n,f,d)&&(a=!0,o=e?.fallback,s.push(t))}if(!a&&n===t.UNKNOWN_ROUTE&&i!==null){let t=e.filter(e=>e.type===c).at(-1);t&&s.push(t)}return{rendered:s,activeMatchFound:a,fallback:o}}function p(t){let n=(0,e.shallowRef)(t.getSnapshot());return(0,e.onScopeDispose)(t.subscribe(()=>{n.value=t.getSnapshot()})),n}const m=Symbol(`RouterKey`),h=Symbol(`NavigatorKey`),g=Symbol(`RouteKey`),_=()=>{let t=(0,e.inject)(m);if(!t)throw Error(`useRouter must be used within a RouterProvider`);return t};function v(n){let i=_(),a=p((0,r.createRouteNodeSource)(i,n)),o=(0,t.getNavigator)(i),s=(0,e.shallowRef)(a.value.route),c=(0,e.shallowRef)(a.value.previousRoute);return(0,e.watch)(a,e=>{s.value=e.route,c.value=e.previousRoute},{flush:`sync`}),{navigator:o,route:s,previousRoute:c}}function y(e){return e.children?.default?.()??null}function b(t,n){let r=t.get(n);if(r)return r;let i=(0,e.markRaw)((0,e.defineComponent)({name:`KeepAlive-${n}`,setup(e,t){return()=>t.slots.default?.()}}));return t.set(n,i),i}function x(t,n){if(n===void 0)return t;let r=typeof n==`function`?n():n;return(0,e.h)(e.Suspense,{},{default:()=>t,fallback:()=>r})}const S=(0,e.defineComponent)({name:`RouteView`,props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(t,{slots:n}){let r=v(t.nodeName),i=new Map;return()=>{let a=r.route.value;if(!a)return null;let o=[];d(n.default?.(),o);let{rendered:l,fallback:u}=f(o,a.name,t.nodeName);if(l.length===0)return null;let p=l[0];if(!t.keepAlive){if(p.type===s||p.type===c){let t=y(p);return t?x((0,e.h)(e.Fragment,t),u):null}return null}let m=p.props?.segment??`__not-found__`,h=b(i,m),g=y(p)??[];return x((0,e.h)(e.KeepAlive,null,{default:()=>(0,e.h)(h,{key:m},{default:()=>g})}),u)}}}),C=Object.assign(S,{Match:s,NotFound:c});function w(e,t,n=!1,i=!0){return p((0,r.createActiveRouteSource)(_(),e,t,{strict:n,ignoreQueryParams:i}))}const T=Object.freeze({}),E=Object.freeze({}),D=(0,e.defineComponent)({name:`Link`,props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>T},routeOptions:{type:Object,default:()=>E},class:{type:String,default:void 0},activeClassName:{type:String,default:`active`},activeStrict:{type:Boolean,default:!1},ignoreQueryParams:{type:Boolean,default:!0},target:{type:String,default:void 0}},setup(t,{slots:n,attrs:r}){let a=_(),o=w(t.routeName,t.routeParams,t.activeStrict,t.ignoreQueryParams),s=(0,e.computed)(()=>(0,i.buildHref)(a,t.routeName,t.routeParams)),c=(0,e.computed)(()=>(0,i.buildActiveClassName)(o.value,t.activeClassName,t.class)),l=e=>{r.onClick&&typeof r.onClick==`function`&&(r.onClick(e),e.defaultPrevented)||!(0,i.shouldNavigate)(e)||t.target===`_blank`||(e.preventDefault(),a.navigate(t.routeName,t.routeParams,t.routeOptions).catch(()=>{}))};return()=>(0,e.h)(`a`,{...r,href:s.value,class:c.value,target:t.target,onClick:l},n.default?.())}}),O=new WeakMap;function k(){let e=_(),t=O.get(e);return t||(t=(0,r.createErrorSource)(e),O.set(e,t)),p(t)}const A=(0,e.defineComponent)({name:`RouterErrorBoundary`,props:{fallback:{type:Function,required:!0},onError:{type:Function,default:void 0}},setup(t,{slots:n}){let r=k(),i=(0,e.ref)(-1);(0,e.watch)(()=>r.value.version,()=>{r.value.error&&t.onError?.(r.value.error,r.value.toRoute,r.value.fromRoute)},{immediate:!0});let a=(0,e.computed)(()=>r.value.version>i.value?r.value.error:null),o=()=>{i.value=r.value.version};return()=>{let r=n.default?.()??[],i=a.value?t.fallback(a.value,o):null;return(0,e.h)(e.Fragment,null,[...r,i])}}});let j=null;function M(e){j=e}function N(){if(!j)throw Error(`v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.`);return j}const P=new WeakMap,F=new WeakMap;function I(e,t){return n=>{(0,i.shouldNavigate)(n)&&(n.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}function L(e,t,n){return r=>{r.key===`Enter`&&!(n instanceof HTMLButtonElement)&&e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{})}}function R(e,t,n){let r=I(t,n),i=L(t,n,e);e.addEventListener(`click`,r),e.addEventListener(`keydown`,i),P.set(e,r),F.set(e,i)}function z(e){let t=P.get(e),n=F.get(e);t&&e.removeEventListener(`click`,t),n&&e.removeEventListener(`keydown`,n),P.delete(e),F.delete(e)}const B={mounted(e,t){let n=N();(0,i.applyLinkA11y)(e),e.style.cursor=`pointer`,R(e,n,t.value)},updated(e,t){let n=N();z(e),R(e,n,t.value)},beforeUnmount(e){z(e)}},V=()=>{let t=(0,e.inject)(h);if(!t)throw Error(`useNavigator must be used within a RouterProvider`);return t},H=()=>(0,n.getRouteUtils)((0,a.getPluginApi)(_()).getTree()),U=()=>{let t=(0,e.inject)(g);if(!t)throw Error(`useRoute must be used within a RouterProvider`);return t};function W(){return p((0,r.createTransitionSource)(_()))}function G(n){return{install(i){let a=(0,t.getNavigator)(n);M(n);let o=(0,r.createRouteSource)(n),s=o.getSnapshot(),c=(0,e.shallowRef)(s.route),l=(0,e.shallowRef)(s.previousRoute);o.subscribe(()=>{let e=o.getSnapshot();c.value=e.route,l.value=e.previousRoute}),i.provide(m,n),i.provide(h,a),i.provide(g,{navigator:a,route:c,previousRoute:l})}}}const K=(0,e.defineComponent)({name:`RouterProvider`,props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1}},setup(n,{slots:a}){(0,e.onMounted)(()=>{if(!n.announceNavigation)return;let t=(0,i.createRouteAnnouncer)(n.router);(0,e.onUnmounted)(()=>{t.destroy()})});let o=(0,t.getNavigator)(n.router);M(n.router);let s=(0,r.createRouteSource)(n.router),c=s.getSnapshot(),l=(0,e.shallowRef)(c.route),u=(0,e.shallowRef)(c.previousRoute);return(0,e.onScopeDispose)(s.subscribe(()=>{let e=s.getSnapshot();l.value=e.route,u.value=e.previousRoute})),(0,e.provide)(m,n.router),(0,e.provide)(h,o),(0,e.provide)(g,{navigator:o,route:l,previousRoute:u}),()=>a.default?.()}});exports.Link=D,exports.NavigatorKey=h,exports.RouteKey=g,exports.RouteView=C,exports.RouterErrorBoundary=A,exports.RouterKey=m,exports.RouterProvider=K,exports.createRouterPlugin=G,exports.useNavigator=V,exports.useRoute=U,exports.useRouteNode=v,exports.useRouteUtils=H,exports.useRouter=_,exports.useRouterTransition=W,exports.vLink=B;
2
+ //# sourceMappingURL=index.js.map