@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.mts.map
@@ -1 +1,2 @@
1
- import{defineComponent as e,h as t,Fragment as r,KeepAlive as o,computed as n,ref as u,watch as a,onMounted as s,onUnmounted as i,shallowRef as l,onScopeDispose as c,provide as p,Suspense as f,markRaw as v,inject as d,isVNode as m}from"vue";import{getNavigator as y,UNKNOWN_ROUTE as g}from"@real-router/core";import{startsWithSegment as h,getRouteUtils as b}from"@real-router/route-utils";import{createRouteSource as k,createRouteNodeSource as R,createActiveRouteSource as w,createErrorSource as S,createTransitionSource as N}from"@real-router/sources";import{buildHref as P,buildActiveClassName as E,createRouteAnnouncer as M,shouldNavigate as O,applyLinkA11y as j}from"dom-utils";import{getPluginApi as A}from"@real-router/core/api";function B(){return null}var q=e({name:"RouteView.Match",props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0}},render:B}),C=e({name:"RouteView.NotFound",render:B});function F(e,t,r){return r?e===t:h(e,t)}function L(e){if(Array.isArray(e)){const t=[];for(const r of e)Array.isArray(r)?t.push(...L(r)):m(r)&&t.push(r);return t}return m(e)?[e]:[]}function _(e,t){const o=L(e);for(const e of o)e.type===q||e.type===C?t.push(e):e.type===r&&_(e.children,t)}function K(e){const t=l(e.getSnapshot()),r=e.subscribe(()=>{t.value=e.getSnapshot()});return c(r),t}var x=Symbol("RouterKey"),Q=Symbol("NavigatorKey"),V=Symbol("RouteKey"),W=()=>{const e=d(x);if(!e)throw new Error("useRouter must be used within a RouterProvider");return e};function $(e){const t=W(),r=K(R(t,e)),o=y(t),n=l(r.value.route),u=l(r.value.previousRoute);return a(r,e=>{n.value=e.route,u.value=e.previousRoute},{flush:"sync"}),{navigator:o,route:n,previousRoute:u}}function z(e){const t=e.children;return t?.default?.()??null}function D(e,r){if(void 0===r)return e;const o="function"==typeof r?r():r;return t(f,{},{default:()=>e,fallback:()=>o})}var T=e({name:"RouteView",props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(n,{slots:u}){const a=$(n.nodeName),s=new Map;return()=>{const i=a.route.value;if(!i)return null;const l=[];_(u.default?.(),l);const{rendered:c,fallback:p}=function(e,t,r){let o,n=null,u=!1;const a=[];for(const s of e){if(s.type===C){n=s.children;continue}const e=s.props,i=e?.segment??"";!u&&F(t,r?`${r}.${i}`:i,e?.exact??!1)&&(u=!0,o=e?.fallback,a.push(s))}if(!u&&t===g&&null!==n){const t=e.filter(e=>e.type===C).at(-1);t&&a.push(t)}return{rendered:a,activeMatchFound:u,fallback:o}}(l,i.name,n.nodeName);if(0===c.length)return null;const f=c[0];if(!n.keepAlive){if(f.type===q||f.type===C){const e=z(f);return e?D(t(r,e),p):null}return null}const d=f.props,m=d?.segment??"__not-found__",y=function(t,r){const o=t.get(r);if(o)return o;const n=v(e({name:`KeepAlive-${r}`,setup:(e,t)=>()=>t.slots.default?.()}));return t.set(r,n),n}(s,m),h=z(f)??[];return D(t(o,null,{default:()=>t(y,{key:m},{default:()=>h})}),p)}}}),H=Object.assign(T,{Match:q,NotFound:C}),U=Object.freeze({}),G=Object.freeze({}),I=e({name:"Link",props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>U},routeOptions:{type:Object,default:()=>G},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(e,{slots:r,attrs:o}){const u=W(),a=function(e,t,r=!1,o=!0){const n=W();return K(w(n,e,t,{strict:r,ignoreQueryParams:o}))}(e.routeName,e.routeParams,e.activeStrict,e.ignoreQueryParams),s=n(()=>P(u,e.routeName,e.routeParams)),i=n(()=>E(a.value,e.activeClassName,e.class)),l=t=>{o.onClick&&"function"==typeof o.onClick&&(o.onClick(t),t.defaultPrevented)||O(t)&&"_blank"!==e.target&&(t.preventDefault(),u.navigate(e.routeName,e.routeParams,e.routeOptions).catch(()=>{}))};return()=>t("a",{...o,href:s.value,class:i.value,target:e.target,onClick:l},r.default?.())}}),J=new WeakMap,X=e({name:"RouterErrorBoundary",props:{fallback:{type:Function,required:!0},onError:{type:Function,default:void 0}},setup(e,{slots:o}){const s=function(){const e=W();let t=J.get(e);return t||(t=S(e),J.set(e,t)),K(t)}(),i=u(-1);a(()=>s.value.version,()=>{s.value.error&&e.onError?.(s.value.error,s.value.toRoute,s.value.fromRoute)},{immediate:!0});const l=n(()=>s.value.version>i.value?s.value.error:null),c=()=>{i.value=s.value.version};return()=>{const n=o.default?.()??[],u=l.value?e.fallback(l.value,c):null;return t(r,null,[...n,u])}}}),Y=null;function Z(e){Y=e}function ee(){if(!Y)throw new Error("v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.");return Y}var te=new WeakMap,re=new WeakMap;function oe(e,t,r){const o=function(e,t){return r=>{O(r)&&(r.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}(t,r),n=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",n),te.set(e,o),re.set(e,n)}function ne(e){const t=te.get(e),r=re.get(e);t&&e.removeEventListener("click",t),r&&e.removeEventListener("keydown",r),te.delete(e),re.delete(e)}var ue={mounted(e,t){const r=ee();j(e),e.style.cursor="pointer",oe(e,r,t.value)},updated(e,t){const r=ee();ne(e),oe(e,r,t.value)},beforeUnmount(e){ne(e)}},ae=()=>{const e=d(Q);if(!e)throw new Error("useNavigator must be used within a RouterProvider");return e},se=()=>{const e=W();return b(A(e).getTree())},ie=()=>{const e=d(V);if(!e)throw new Error("useRoute must be used within a RouterProvider");return e};function le(){const e=W();return K(N(e))}function ce(e){return{install(t){const r=y(e);Z(e);const o=k(e),n=o.getSnapshot(),u=l(n.route),a=l(n.previousRoute);o.subscribe(()=>{const e=o.getSnapshot();u.value=e.route,a.value=e.previousRoute}),t.provide(x,e),t.provide(Q,r),t.provide(V,{navigator:r,route:u,previousRoute:a})}}}var pe=e({name:"RouterProvider",props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1}},setup(e,{slots:t}){s(()=>{if(!e.announceNavigation)return;const t=M(e.router);i(()=>{t.destroy()})});const r=y(e.router);Z(e.router);const o=k(e.router),n=o.getSnapshot(),u=l(n.route),a=l(n.previousRoute),f=o.subscribe(()=>{const e=o.getSnapshot();u.value=e.route,a.value=e.previousRoute});return c(f),p(x,e.router),p(Q,r),p(V,{navigator:r,route:u,previousRoute:a}),()=>t.default?.()}});export{I as Link,Q as NavigatorKey,V as RouteKey,H as RouteView,X as RouterErrorBoundary,x as RouterKey,pe as RouterProvider,ce as createRouterPlugin,ae as useNavigator,ie as useRoute,$ as useRouteNode,se as useRouteUtils,W as useRouter,le as useRouterTransition,ue as vLink};//# sourceMappingURL=index.mjs.map
1
+ import{Fragment as e,KeepAlive as t,Suspense as n,computed as r,defineComponent as i,h as a,inject as o,isVNode as s,markRaw as c,onMounted as l,onScopeDispose as u,onUnmounted as d,provide as f,ref as p,shallowRef as m,watch as h}from"vue";import{UNKNOWN_ROUTE as ee,getNavigator as g}from"@real-router/core";import{getRouteUtils as te,startsWithSegment as ne}from"@real-router/route-utils";import{createActiveRouteSource as re,createErrorSource as _,createRouteNodeSource as v,createRouteSource as y,createTransitionSource as ie}from"@real-router/sources";import{applyLinkA11y as ae,buildActiveClassName as oe,buildHref as b,createRouteAnnouncer as x,shouldNavigate as S}from"dom-utils";import{getPluginApi as C}from"@real-router/core/api";function w(){return null}const T=i({name:`RouteView.Match`,props:{segment:{type:String,required:!0},exact:{type:Boolean,default:!1},fallback:{type:[Object,Function],default:void 0}},render:w}),E=i({name:`RouteView.NotFound`,render:w});function D(e,t,n){return n?e===t:ne(e,t)}function O(e){if(Array.isArray(e)){let t=[];for(let n of e)Array.isArray(n)?t.push(...O(n)):s(n)&&t.push(n);return t}return s(e)?[e]:[]}function k(t,n){let r=O(t);for(let t of r)t.type===T||t.type===E?n.push(t):t.type===e&&k(t.children,n)}function se(e,t,n){let r=null,i=!1,a,o=[];for(let s of e){if(s.type===E){r=s.children;continue}let e=s.props,c=e?.segment??``,l=e?.exact??!1,u=n?`${n}.${c}`:c;!i&&D(t,u,l)&&(i=!0,a=e?.fallback,o.push(s))}if(!i&&t===ee&&r!==null){let t=e.filter(e=>e.type===E).at(-1);t&&o.push(t)}return{rendered:o,activeMatchFound:i,fallback:a}}function A(e){let t=m(e.getSnapshot());return u(e.subscribe(()=>{t.value=e.getSnapshot()})),t}const j=Symbol(`RouterKey`),M=Symbol(`NavigatorKey`),N=Symbol(`RouteKey`),P=()=>{let e=o(j);if(!e)throw Error(`useRouter must be used within a RouterProvider`);return e};function F(e){let t=P(),n=A(v(t,e)),r=g(t),i=m(n.value.route),a=m(n.value.previousRoute);return h(n,e=>{i.value=e.route,a.value=e.previousRoute},{flush:`sync`}),{navigator:r,route:i,previousRoute:a}}function I(e){return e.children?.default?.()??null}function L(e,t){let n=e.get(t);if(n)return n;let r=c(i({name:`KeepAlive-${t}`,setup(e,t){return()=>t.slots.default?.()}}));return e.set(t,r),r}function R(e,t){if(t===void 0)return e;let r=typeof t==`function`?t():t;return a(n,{},{default:()=>e,fallback:()=>r})}const z=i({name:`RouteView`,props:{nodeName:{type:String,required:!0},keepAlive:{type:Boolean,default:!1}},setup(n,{slots:r}){let i=F(n.nodeName),o=new Map;return()=>{let s=i.route.value;if(!s)return null;let c=[];k(r.default?.(),c);let{rendered:l,fallback:u}=se(c,s.name,n.nodeName);if(l.length===0)return null;let d=l[0];if(!n.keepAlive){if(d.type===T||d.type===E){let t=I(d);return t?R(a(e,t),u):null}return null}let f=d.props?.segment??`__not-found__`,p=L(o,f),m=I(d)??[];return R(a(t,null,{default:()=>a(p,{key:f},{default:()=>m})}),u)}}}),B=Object.assign(z,{Match:T,NotFound:E});function V(e,t,n=!1,r=!0){return A(re(P(),e,t,{strict:n,ignoreQueryParams:r}))}const H=Object.freeze({}),U=Object.freeze({}),W=i({name:`Link`,props:{routeName:{type:String,required:!0},routeParams:{type:Object,default:()=>H},routeOptions:{type:Object,default:()=>U},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(e,{slots:t,attrs:n}){let i=P(),o=V(e.routeName,e.routeParams,e.activeStrict,e.ignoreQueryParams),s=r(()=>b(i,e.routeName,e.routeParams)),c=r(()=>oe(o.value,e.activeClassName,e.class)),l=t=>{n.onClick&&typeof n.onClick==`function`&&(n.onClick(t),t.defaultPrevented)||!S(t)||e.target===`_blank`||(t.preventDefault(),i.navigate(e.routeName,e.routeParams,e.routeOptions).catch(()=>{}))};return()=>a(`a`,{...n,href:s.value,class:c.value,target:e.target,onClick:l},t.default?.())}}),G=new WeakMap;function ce(){let e=P(),t=G.get(e);return t||(t=_(e),G.set(e,t)),A(t)}const le=i({name:`RouterErrorBoundary`,props:{fallback:{type:Function,required:!0},onError:{type:Function,default:void 0}},setup(t,{slots:n}){let i=ce(),o=p(-1);h(()=>i.value.version,()=>{i.value.error&&t.onError?.(i.value.error,i.value.toRoute,i.value.fromRoute)},{immediate:!0});let s=r(()=>i.value.version>o.value?i.value.error:null),c=()=>{o.value=i.value.version};return()=>{let r=n.default?.()??[],i=s.value?t.fallback(s.value,c):null;return a(e,null,[...r,i])}}});let K=null;function q(e){K=e}function J(){if(!K)throw Error(`v-link directive requires a RouterProvider ancestor. Make sure RouterProvider is mounted.`);return K}const Y=new WeakMap,X=new WeakMap;function Z(e,t){return n=>{S(n)&&(n.preventDefault(),e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{}))}}function ue(e,t,n){return r=>{r.key===`Enter`&&!(n instanceof HTMLButtonElement)&&e.navigate(t.name,t.params??{},t.options??{}).catch(()=>{})}}function Q(e,t,n){let r=Z(t,n),i=ue(t,n,e);e.addEventListener(`click`,r),e.addEventListener(`keydown`,i),Y.set(e,r),X.set(e,i)}function $(e){let t=Y.get(e),n=X.get(e);t&&e.removeEventListener(`click`,t),n&&e.removeEventListener(`keydown`,n),Y.delete(e),X.delete(e)}const de={mounted(e,t){let n=J();ae(e),e.style.cursor=`pointer`,Q(e,n,t.value)},updated(e,t){let n=J();$(e),Q(e,n,t.value)},beforeUnmount(e){$(e)}},fe=()=>{let e=o(M);if(!e)throw Error(`useNavigator must be used within a RouterProvider`);return e},pe=()=>te(C(P()).getTree()),me=()=>{let e=o(N);if(!e)throw Error(`useRoute must be used within a RouterProvider`);return e};function he(){return A(ie(P()))}function ge(e){return{install(t){let n=g(e);q(e);let r=y(e),i=r.getSnapshot(),a=m(i.route),o=m(i.previousRoute);r.subscribe(()=>{let e=r.getSnapshot();a.value=e.route,o.value=e.previousRoute}),t.provide(j,e),t.provide(M,n),t.provide(N,{navigator:n,route:a,previousRoute:o})}}}const _e=i({name:`RouterProvider`,props:{router:{type:Object,required:!0},announceNavigation:{type:Boolean,default:!1}},setup(e,{slots:t}){l(()=>{if(!e.announceNavigation)return;let t=x(e.router);d(()=>{t.destroy()})});let n=g(e.router);q(e.router);let r=y(e.router),i=r.getSnapshot(),a=m(i.route),o=m(i.previousRoute);return u(r.subscribe(()=>{let e=r.getSnapshot();a.value=e.route,o.value=e.previousRoute})),f(j,e.router),f(M,n),f(N,{navigator:n,route:a,previousRoute:o}),()=>t.default?.()}});export{W as Link,M as NavigatorKey,N as RouteKey,B as RouteView,le as RouterErrorBoundary,j as RouterKey,_e as RouterProvider,ge as createRouterPlugin,fe as useNavigator,me as useRoute,F as useRouteNode,pe as useRouteUtils,P as useRouter,he as useRouterTransition,de as vLink};
2
+ //# sourceMappingURL=index.mjs.map