reactive-route 0.0.1-alpha.8 → 0.0.1-alpha.9

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.
@@ -28,102 +28,74 @@ module.exports = __toCommonJS(solid_exports);
28
28
  var import_web = require("solid-js/web");
29
29
  var import_web2 = require("solid-js/web");
30
30
  var import_reactive_route = require("reactive-route");
31
- var import_solid_js2 = require("solid-js");
32
- var import_web3 = require("solid-js/web");
33
-
34
- // packages/solid/useStore.ts
35
31
  var import_solid_js = require("solid-js");
36
- function useStore(ViewModel, props) {
37
- const vm = new ViewModel(props);
38
- vm.beforeMount?.();
39
- (0, import_solid_js.onMount)(() => {
40
- vm.afterMount?.();
32
+ var import_web3 = require("solid-js/web");
33
+ function Router(props) {
34
+ const config = props.routerStore.adapters.makeObservable({
35
+ loadedComponentName: void 0,
36
+ loadedComponentPage: void 0,
37
+ currentProps: {}
41
38
  });
42
- return vm;
43
- }
44
-
45
- // packages/solid/Router.tsx
46
- var VM = class {
47
- constructor(props) {
48
- this.props = props;
49
- return this.adapters.makeAutoObservable(this);
50
- }
51
- loadedComponentName = void 0;
52
- loadedComponentPage = void 0;
53
- currentProps = {};
54
- get adapters() {
55
- return this.props.routerStore.adapters;
56
- }
57
- beforeMount() {
58
- this.props.beforeMount?.();
59
- this.redirectOnHistoryPop();
60
- this.adapters.autorun(() => this.setLoadedComponent());
61
- }
62
- redirectOnHistoryPop() {
39
+ function redirectOnHistoryPop() {
63
40
  if (!import_reactive_route.history) return;
64
41
  import_reactive_route.history.listen((params) => {
65
42
  if (params.action !== "POP") return;
66
- const previousRoutePathname = this.props.routerStore.routesHistory[this.props.routerStore.routesHistory.length - 2];
43
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
67
44
  if (previousRoutePathname === params.location.pathname) {
68
- this.props.routerStore.routesHistory.pop();
45
+ props.routerStore.routesHistory.pop();
69
46
  }
70
- void this.props.routerStore.redirectTo({
47
+ void props.routerStore.redirectTo({
71
48
  noHistoryPush: true,
72
49
  ...(0, import_reactive_route.getInitialRoute)({
73
- routes: this.props.routes,
50
+ routes: props.routes,
74
51
  pathname: import_reactive_route.history.location.pathname,
75
52
  fallback: "error404"
76
53
  })
77
54
  });
78
55
  });
79
56
  }
80
- setLoadedComponent() {
81
- const currentRouteName = this.props.routerStore.currentRoute.name;
82
- const currentRoutePage = this.props.routerStore.currentRoute.pageName;
57
+ function setLoadedComponent() {
58
+ const currentRouteName = props.routerStore.currentRoute.name;
59
+ const currentRoutePage = props.routerStore.currentRoute.pageName;
60
+ const componentConfig = props.routes[currentRouteName];
83
61
  let preventRedirect = false;
84
- if (this.props.routerStore.isRedirecting) preventRedirect = true;
85
- else if (this.loadedComponentName === currentRouteName) {
62
+ if (props.routerStore.isRedirecting) preventRedirect = true;
63
+ else if (config.loadedComponentName === currentRouteName) {
86
64
  preventRedirect = true;
87
- } else if (this.loadedComponentPage != null && currentRouteName != null) {
88
- if (this.loadedComponentPage === currentRoutePage) {
89
- const componentConfig = this.props.routes[currentRouteName];
90
- this.adapters.replaceObject(this.currentProps, "props" in componentConfig ? componentConfig.props : {});
65
+ } else if (config.loadedComponentPage != null && currentRouteName != null) {
66
+ if (config.loadedComponentPage === currentRoutePage) {
67
+ props.routerStore.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
91
68
  preventRedirect = true;
92
69
  }
93
70
  }
94
71
  if (preventRedirect) return;
95
- this.adapters.batch(() => {
96
- if (!this.loadedComponentName) {
97
- this.setComponent();
98
- } else {
99
- this.props.beforeUpdatePageComponent?.();
100
- this.setComponent();
72
+ props.routerStore.adapters.batch(() => {
73
+ if (config.loadedComponentName) {
74
+ props.beforeUpdatePageComponent?.();
101
75
  }
76
+ props.beforeSetPageComponent?.(componentConfig);
77
+ props.routerStore.adapters.batch(() => {
78
+ props.routerStore.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
79
+ config.loadedComponentName = currentRouteName;
80
+ config.loadedComponentPage = componentConfig.pageName;
81
+ config[Symbol.for("$adm")]?.batch();
82
+ });
102
83
  });
103
84
  }
104
- setComponent() {
105
- const currentRouteName = this.props.routerStore.currentRoute.name;
106
- const componentConfig = this.props.routes[currentRouteName];
107
- this.props.beforeSetPageComponent?.(componentConfig);
108
- this.adapters.batch(() => {
109
- this.adapters.replaceObject(this.currentProps, "props" in componentConfig ? componentConfig.props : {});
110
- this.loadedComponentName = currentRouteName;
111
- this.loadedComponentPage = componentConfig.pageName;
112
- });
113
- }
114
- };
115
- function Router(props) {
116
- const vm = useStore(VM, props);
117
- return (0, import_web.createComponent)(import_solid_js2.Show, {
85
+ props.beforeMount?.();
86
+ redirectOnHistoryPop();
87
+ setLoadedComponent();
88
+ props.routerStore.adapters.autorun(() => setLoadedComponent());
89
+ return (0, import_web.createComponent)(import_solid_js.Show, {
118
90
  get when() {
119
- return vm.loadedComponentName;
91
+ return config.loadedComponentName;
120
92
  },
121
93
  get children() {
122
94
  return (0, import_web.createComponent)(import_web3.Dynamic, (0, import_web2.mergeProps)({
123
95
  get component() {
124
- return props.routes[vm.loadedComponentName]?.component || void 0;
96
+ return props.routes[config.loadedComponentName]?.component || void 0;
125
97
  }
126
- }, () => vm.currentProps));
98
+ }, () => config.currentProps));
127
99
  }
128
100
  });
129
101
  }
@@ -4,100 +4,72 @@ import { mergeProps as _$mergeProps } from "solid-js/web";
4
4
  import { getInitialRoute, history } from "reactive-route";
5
5
  import { Show } from "solid-js";
6
6
  import { Dynamic } from "solid-js/web";
7
-
8
- // packages/solid/useStore.ts
9
- import { onMount } from "solid-js";
10
- function useStore(ViewModel, props) {
11
- const vm = new ViewModel(props);
12
- vm.beforeMount?.();
13
- onMount(() => {
14
- vm.afterMount?.();
7
+ function Router(props) {
8
+ const config = props.routerStore.adapters.makeObservable({
9
+ loadedComponentName: void 0,
10
+ loadedComponentPage: void 0,
11
+ currentProps: {}
15
12
  });
16
- return vm;
17
- }
18
-
19
- // packages/solid/Router.tsx
20
- var VM = class {
21
- constructor(props) {
22
- this.props = props;
23
- return this.adapters.makeAutoObservable(this);
24
- }
25
- loadedComponentName = void 0;
26
- loadedComponentPage = void 0;
27
- currentProps = {};
28
- get adapters() {
29
- return this.props.routerStore.adapters;
30
- }
31
- beforeMount() {
32
- this.props.beforeMount?.();
33
- this.redirectOnHistoryPop();
34
- this.adapters.autorun(() => this.setLoadedComponent());
35
- }
36
- redirectOnHistoryPop() {
13
+ function redirectOnHistoryPop() {
37
14
  if (!history) return;
38
15
  history.listen((params) => {
39
16
  if (params.action !== "POP") return;
40
- const previousRoutePathname = this.props.routerStore.routesHistory[this.props.routerStore.routesHistory.length - 2];
17
+ const previousRoutePathname = props.routerStore.routesHistory[props.routerStore.routesHistory.length - 2];
41
18
  if (previousRoutePathname === params.location.pathname) {
42
- this.props.routerStore.routesHistory.pop();
19
+ props.routerStore.routesHistory.pop();
43
20
  }
44
- void this.props.routerStore.redirectTo({
21
+ void props.routerStore.redirectTo({
45
22
  noHistoryPush: true,
46
23
  ...getInitialRoute({
47
- routes: this.props.routes,
24
+ routes: props.routes,
48
25
  pathname: history.location.pathname,
49
26
  fallback: "error404"
50
27
  })
51
28
  });
52
29
  });
53
30
  }
54
- setLoadedComponent() {
55
- const currentRouteName = this.props.routerStore.currentRoute.name;
56
- const currentRoutePage = this.props.routerStore.currentRoute.pageName;
31
+ function setLoadedComponent() {
32
+ const currentRouteName = props.routerStore.currentRoute.name;
33
+ const currentRoutePage = props.routerStore.currentRoute.pageName;
34
+ const componentConfig = props.routes[currentRouteName];
57
35
  let preventRedirect = false;
58
- if (this.props.routerStore.isRedirecting) preventRedirect = true;
59
- else if (this.loadedComponentName === currentRouteName) {
36
+ if (props.routerStore.isRedirecting) preventRedirect = true;
37
+ else if (config.loadedComponentName === currentRouteName) {
60
38
  preventRedirect = true;
61
- } else if (this.loadedComponentPage != null && currentRouteName != null) {
62
- if (this.loadedComponentPage === currentRoutePage) {
63
- const componentConfig = this.props.routes[currentRouteName];
64
- this.adapters.replaceObject(this.currentProps, "props" in componentConfig ? componentConfig.props : {});
39
+ } else if (config.loadedComponentPage != null && currentRouteName != null) {
40
+ if (config.loadedComponentPage === currentRoutePage) {
41
+ props.routerStore.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
65
42
  preventRedirect = true;
66
43
  }
67
44
  }
68
45
  if (preventRedirect) return;
69
- this.adapters.batch(() => {
70
- if (!this.loadedComponentName) {
71
- this.setComponent();
72
- } else {
73
- this.props.beforeUpdatePageComponent?.();
74
- this.setComponent();
46
+ props.routerStore.adapters.batch(() => {
47
+ if (config.loadedComponentName) {
48
+ props.beforeUpdatePageComponent?.();
75
49
  }
50
+ props.beforeSetPageComponent?.(componentConfig);
51
+ props.routerStore.adapters.batch(() => {
52
+ props.routerStore.adapters.replaceObject(config.currentProps, "props" in componentConfig ? componentConfig.props : {});
53
+ config.loadedComponentName = currentRouteName;
54
+ config.loadedComponentPage = componentConfig.pageName;
55
+ config[Symbol.for("$adm")]?.batch();
56
+ });
76
57
  });
77
58
  }
78
- setComponent() {
79
- const currentRouteName = this.props.routerStore.currentRoute.name;
80
- const componentConfig = this.props.routes[currentRouteName];
81
- this.props.beforeSetPageComponent?.(componentConfig);
82
- this.adapters.batch(() => {
83
- this.adapters.replaceObject(this.currentProps, "props" in componentConfig ? componentConfig.props : {});
84
- this.loadedComponentName = currentRouteName;
85
- this.loadedComponentPage = componentConfig.pageName;
86
- });
87
- }
88
- };
89
- function Router(props) {
90
- const vm = useStore(VM, props);
59
+ props.beforeMount?.();
60
+ redirectOnHistoryPop();
61
+ setLoadedComponent();
62
+ props.routerStore.adapters.autorun(() => setLoadedComponent());
91
63
  return _$createComponent(Show, {
92
64
  get when() {
93
- return vm.loadedComponentName;
65
+ return config.loadedComponentName;
94
66
  },
95
67
  get children() {
96
68
  return _$createComponent(Dynamic, _$mergeProps({
97
69
  get component() {
98
- return props.routes[vm.loadedComponentName]?.component || void 0;
70
+ return props.routes[config.loadedComponentName]?.component || void 0;
99
71
  }
100
- }, () => vm.currentProps));
72
+ }, () => config.currentProps));
101
73
  }
102
74
  });
103
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../packages/solid/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAmGtF,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,kCAWhG"}
1
+ {"version":3,"file":"Router.d.ts","sourceRoot":"","sources":["../../../packages/solid/Router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAItF,wBAAgB,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,kCA6FhG"}
@@ -1 +1 @@
1
- {"root":["../../packages/solid/Router.tsx","../../packages/solid/index.ts","../../packages/solid/useStore.ts"],"version":"5.9.2"}
1
+ {"root":["../../packages/solid/Router.tsx","../../packages/solid/index.ts"],"version":"5.9.2"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "reactive-route",
3
3
  "author": "Dmitry Kazakov",
4
4
  "license": "MIT",
5
- "version": "0.0.1-alpha.8",
5
+ "version": "0.0.1-alpha.9",
6
6
  "description": "Reactive Router for different frameworks",
7
7
  "repository": {
8
8
  "type": "git",
@@ -1,7 +0,0 @@
1
- export interface ViewModelConstructor {
2
- props?: Record<string, any>;
3
- beforeMount?: () => void;
4
- afterMount?: () => void;
5
- }
6
- export declare function useStore<TViewModel extends new (props: ConstructorParameters<TViewModel>[0]) => ViewModelConstructor>(ViewModel: TViewModel, props: ConstructorParameters<TViewModel>[0]): InstanceType<TViewModel>;
7
- //# sourceMappingURL=useStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStore.d.ts","sourceRoot":"","sources":["../../../packages/solid/useStore.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,QAAQ,CACtB,UAAU,SAAS,KACjB,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KACxC,oBAAoB,EACzB,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAU9F"}