nativescript-vue 3.0.0-beta.5 → 3.0.0-beta.7
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 +3 -4
- package/dist/compiler.d.ts +1 -1
- package/dist/compiler.js +1 -1
- package/dist/compiler.js.map +1 -1
- package/dist/components/ActionBar.d.ts +1 -1
- package/dist/components/ActionBar.js +5 -5
- package/dist/components/ListView.d.ts +2 -2
- package/dist/components/ListView.js +10 -12
- package/dist/components/ListView.js.map +1 -1
- package/dist/components/index.d.ts +6 -2
- package/dist/components/index.js +3 -2
- package/dist/components/index.js.map +1 -1
- package/dist/directives/vModel.d.ts +8 -0
- package/dist/directives/vModel.js +38 -0
- package/dist/directives/vModel.js.map +1 -0
- package/dist/directives/vShow.d.ts +2 -2
- package/dist/directives/vShow.js +4 -4
- package/dist/dom/index.d.ts +1 -1
- package/dist/dom/index.js +7 -6
- package/dist/dom/index.js.map +1 -1
- package/dist/index.d.ts +13 -12
- package/dist/index.js +22 -31
- package/dist/index.js.map +1 -1
- package/dist/nativescript/elements.js +54 -54
- package/dist/nativescript/index.d.ts +3 -3
- package/dist/nativescript/index.js +3 -3
- package/dist/plugins/modals.d.ts +9 -5
- package/dist/plugins/modals.js +50 -32
- package/dist/plugins/modals.js.map +1 -1
- package/dist/plugins/navigation.d.ts +7 -7
- package/dist/plugins/navigation.js +59 -78
- package/dist/plugins/navigation.js.map +1 -1
- package/dist/plugins/templates.d.ts +10 -0
- package/dist/plugins/templates.js +12 -0
- package/dist/plugins/templates.js.map +1 -0
- package/dist/registry/index.d.ts +3 -3
- package/dist/registry/index.js +2 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/renderer/index.js +3 -3
- package/dist/renderer/modules/attrs.d.ts +1 -1
- package/dist/renderer/modules/attrs.js +3 -3
- package/dist/renderer/modules/class.d.ts +1 -1
- package/dist/renderer/modules/class.js +2 -2
- package/dist/renderer/modules/events.d.ts +3 -3
- package/dist/renderer/modules/events.js +3 -3
- package/dist/renderer/modules/events.js.map +1 -1
- package/dist/renderer/modules/style.d.ts +2 -2
- package/dist/renderer/modules/style.js +28 -8
- package/dist/renderer/modules/style.js.map +1 -1
- package/dist/renderer/nodeOps.d.ts +3 -2
- package/dist/renderer/nodeOps.js +7 -4
- package/dist/renderer/nodeOps.js.map +1 -1
- package/dist/renderer/patchProp.d.ts +1 -1
- package/dist/renderer/patchProp.js +27 -10
- package/dist/renderer/patchProp.js.map +1 -1
- package/dist/runtimeHelpers.d.ts +14 -0
- package/dist/runtimeHelpers.js +41 -3
- package/dist/runtimeHelpers.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/withCompiler.js +1 -1
- package/dist/withCompiler.js.map +1 -1
- package/nativescript.webpack.js +24 -12
- package/package.json +26 -11
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { Page as NSCPage } from
|
|
2
|
-
import { warn } from
|
|
3
|
-
import { registerElement } from
|
|
1
|
+
import { Page as NSCPage } from '@nativescript/core';
|
|
2
|
+
import { warn } from '@vue/runtime-core';
|
|
3
|
+
import { registerElement } from '../registry';
|
|
4
4
|
export function registerCoreElements() {
|
|
5
5
|
// layouts
|
|
6
|
-
registerElement(
|
|
7
|
-
registerElement(
|
|
6
|
+
registerElement('AbsoluteLayout', () => require('@nativescript/core').AbsoluteLayout, { viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */ });
|
|
7
|
+
registerElement('DockLayout', () => require('@nativescript/core').DockLayout, {
|
|
8
8
|
viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */,
|
|
9
9
|
});
|
|
10
|
-
registerElement(
|
|
11
|
-
registerElement(
|
|
10
|
+
registerElement('FlexboxLayout', () => require('@nativescript/core').FlexboxLayout, { viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */ });
|
|
11
|
+
registerElement('GridLayout', () => require('@nativescript/core').GridLayout, {
|
|
12
12
|
viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */,
|
|
13
13
|
});
|
|
14
|
-
registerElement(
|
|
14
|
+
registerElement('RootLayout', () => require('@nativescript/core').RootLayout, {
|
|
15
15
|
viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */,
|
|
16
16
|
});
|
|
17
|
-
registerElement(
|
|
18
|
-
registerElement(
|
|
17
|
+
registerElement('StackLayout', () => require('@nativescript/core').StackLayout, { viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */ });
|
|
18
|
+
registerElement('WrapLayout', () => require('@nativescript/core').WrapLayout, {
|
|
19
19
|
viewFlags: 4 /* NSVViewFlags.LAYOUT_VIEW */,
|
|
20
20
|
});
|
|
21
21
|
// ContentViews
|
|
22
|
-
registerElement(
|
|
23
|
-
registerElement(
|
|
22
|
+
registerElement('ContentView', () => require('@nativescript/core').ContentView, { viewFlags: 2 /* NSVViewFlags.CONTENT_VIEW */ });
|
|
23
|
+
registerElement('ScrollView', () => require('@nativescript/core').ScrollView, {
|
|
24
24
|
viewFlags: 2 /* NSVViewFlags.CONTENT_VIEW */,
|
|
25
25
|
});
|
|
26
26
|
// ActionBar
|
|
27
|
-
registerElement(
|
|
28
|
-
registerElement(
|
|
27
|
+
registerElement('ActionItem', () => require('@nativescript/core').ActionItem);
|
|
28
|
+
registerElement('NavigationButton', () => require('@nativescript/core').NavigationButton);
|
|
29
29
|
// navigation
|
|
30
|
-
registerElement(
|
|
30
|
+
registerElement('Frame', () => require('@nativescript/core').Frame, {
|
|
31
31
|
// todo: move into Frame.ts when we end up creating a component for Frame
|
|
32
32
|
nodeOps: {
|
|
33
33
|
insert(child, parent, atIndex) {
|
|
@@ -52,22 +52,22 @@ export function registerCoreElements() {
|
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
54
|
});
|
|
55
|
-
registerElement(
|
|
55
|
+
registerElement('Page', () => require('@nativescript/core').Page, {
|
|
56
56
|
viewFlags: 2 /* NSVViewFlags.CONTENT_VIEW */,
|
|
57
57
|
});
|
|
58
58
|
// html
|
|
59
|
-
registerElement(
|
|
60
|
-
registerElement(
|
|
59
|
+
registerElement('HtmlView', () => require('@nativescript/core').HtmlView);
|
|
60
|
+
registerElement('WebView', () => require('@nativescript/core').WebView);
|
|
61
61
|
// components
|
|
62
|
-
registerElement(
|
|
63
|
-
registerElement(
|
|
64
|
-
registerElement(
|
|
62
|
+
registerElement('ActivityIndicator', () => require('@nativescript/core').ActivityIndicator);
|
|
63
|
+
registerElement('Button', () => require('@nativescript/core').Button);
|
|
64
|
+
registerElement('DatePicker', () => require('@nativescript/core').DatePicker, {
|
|
65
65
|
model: {
|
|
66
|
-
prop:
|
|
67
|
-
event:
|
|
66
|
+
prop: 'date',
|
|
67
|
+
event: 'dateChange',
|
|
68
68
|
},
|
|
69
69
|
});
|
|
70
|
-
registerElement(
|
|
70
|
+
registerElement('FormattedString', () => require('@nativescript/core').FormattedString, {
|
|
71
71
|
nodeOps: {
|
|
72
72
|
insert(child, parent, atIndex) {
|
|
73
73
|
if (atIndex) {
|
|
@@ -84,58 +84,58 @@ export function registerCoreElements() {
|
|
|
84
84
|
},
|
|
85
85
|
},
|
|
86
86
|
});
|
|
87
|
-
registerElement(
|
|
88
|
-
registerElement(
|
|
89
|
-
registerElement(
|
|
87
|
+
registerElement('Image', () => require('@nativescript/core').Image);
|
|
88
|
+
registerElement('Label', () => require('@nativescript/core').Label);
|
|
89
|
+
registerElement('ListPicker', () => require('@nativescript/core').ListPicker, {
|
|
90
90
|
model: {
|
|
91
|
-
prop:
|
|
92
|
-
event:
|
|
91
|
+
prop: 'selectedIndex',
|
|
92
|
+
event: 'selectedIndexChange',
|
|
93
93
|
},
|
|
94
94
|
});
|
|
95
|
-
registerElement(
|
|
96
|
-
registerElement(
|
|
97
|
-
registerElement(
|
|
95
|
+
registerElement('Placeholder', () => require('@nativescript/core').Placeholder);
|
|
96
|
+
registerElement('Progress', () => require('@nativescript/core').Progress);
|
|
97
|
+
registerElement('SearchBar', () => require('@nativescript/core').SearchBar, {
|
|
98
98
|
model: {
|
|
99
|
-
prop:
|
|
100
|
-
event:
|
|
99
|
+
prop: 'text',
|
|
100
|
+
event: 'textChange',
|
|
101
101
|
},
|
|
102
102
|
});
|
|
103
|
-
registerElement(
|
|
103
|
+
registerElement('SegmentedBar', () => require('@nativescript/core').SegmentedBar, {
|
|
104
104
|
model: {
|
|
105
|
-
prop:
|
|
106
|
-
event:
|
|
105
|
+
prop: 'selectedIndex',
|
|
106
|
+
event: 'selectedIndexChange',
|
|
107
107
|
},
|
|
108
108
|
});
|
|
109
|
-
registerElement(
|
|
110
|
-
registerElement(
|
|
109
|
+
registerElement('SegmentedBarItem', () => require('@nativescript/core').SegmentedBarItem);
|
|
110
|
+
registerElement('Slider', () => require('@nativescript/core').Slider, {
|
|
111
111
|
model: {
|
|
112
|
-
prop:
|
|
113
|
-
event:
|
|
112
|
+
prop: 'value',
|
|
113
|
+
event: 'valueChange',
|
|
114
114
|
},
|
|
115
115
|
});
|
|
116
|
-
registerElement(
|
|
117
|
-
registerElement(
|
|
116
|
+
registerElement('Span', () => require('@nativescript/core').Span);
|
|
117
|
+
registerElement('Switch', () => require('@nativescript/core').Switch, {
|
|
118
118
|
model: {
|
|
119
|
-
prop:
|
|
120
|
-
event:
|
|
119
|
+
prop: 'checked',
|
|
120
|
+
event: 'checkedChange',
|
|
121
121
|
},
|
|
122
122
|
});
|
|
123
|
-
registerElement(
|
|
123
|
+
registerElement('TextField', () => require('@nativescript/core').TextField, {
|
|
124
124
|
model: {
|
|
125
|
-
prop:
|
|
126
|
-
event:
|
|
125
|
+
prop: 'text',
|
|
126
|
+
event: 'textChange',
|
|
127
127
|
},
|
|
128
128
|
});
|
|
129
|
-
registerElement(
|
|
129
|
+
registerElement('TextView', () => require('@nativescript/core').TextView, {
|
|
130
130
|
model: {
|
|
131
|
-
prop:
|
|
132
|
-
event:
|
|
131
|
+
prop: 'text',
|
|
132
|
+
event: 'textChange',
|
|
133
133
|
},
|
|
134
134
|
});
|
|
135
|
-
registerElement(
|
|
135
|
+
registerElement('TimePicker', () => require('@nativescript/core').TimePicker, {
|
|
136
136
|
model: {
|
|
137
|
-
prop:
|
|
138
|
-
event:
|
|
137
|
+
prop: 'time',
|
|
138
|
+
event: 'timeChange',
|
|
139
139
|
},
|
|
140
140
|
});
|
|
141
141
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { View } from
|
|
2
|
-
import { ComponentPublicInstance } from
|
|
1
|
+
import { View } from '@nativescript/core';
|
|
2
|
+
import { ComponentPublicInstance } from '@vue/runtime-core';
|
|
3
3
|
export declare function init(): void;
|
|
4
4
|
export declare function startApp(rootComponent: ComponentPublicInstance): void;
|
|
5
5
|
export declare function resetRoot(view: View): void;
|
|
6
|
-
export { isAndroid, isIOS } from
|
|
6
|
+
export { isAndroid, isIOS } from '@nativescript/core';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Application } from
|
|
2
|
-
import { registerCoreElements } from
|
|
1
|
+
import { Application } from '@nativescript/core';
|
|
2
|
+
import { registerCoreElements } from './elements';
|
|
3
3
|
// export all ns stuff in a single file to allow easy mocking for testing...
|
|
4
4
|
export function init() {
|
|
5
5
|
registerCoreElements();
|
|
@@ -21,7 +21,7 @@ export function resetRoot(view) {
|
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
export { isAndroid, isIOS } from
|
|
24
|
+
export { isAndroid, isIOS } from '@nativescript/core';
|
|
25
25
|
// export const isAndroid = false;
|
|
26
26
|
// export const isIOS = false;
|
|
27
27
|
//# sourceMappingURL=index.js.map
|
package/dist/plugins/modals.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { NSVElement } from
|
|
4
|
-
declare module
|
|
1
|
+
import { ShowModalOptions, View } from '@nativescript/core';
|
|
2
|
+
import { App, Component, ComponentPublicInstance } from '@vue/runtime-core';
|
|
3
|
+
import { NSVElement } from '../dom';
|
|
4
|
+
declare module '@vue/runtime-core' {
|
|
5
5
|
interface ComponentCustomProperties {
|
|
6
6
|
/**
|
|
7
7
|
* todo: update docblock
|
|
8
8
|
*/
|
|
9
9
|
$showModal: <T = any>(component: Component, options?: ModalOptions) => Promise<T | false | undefined>;
|
|
10
|
+
$closeModal: (arg: any) => void;
|
|
11
|
+
$modal: {
|
|
12
|
+
close: (arg: any) => void;
|
|
13
|
+
};
|
|
10
14
|
}
|
|
11
15
|
}
|
|
12
|
-
|
|
16
|
+
type ResolvableModalTarget = ComponentPublicInstance | NSVElement | View;
|
|
13
17
|
export interface ModalOptions extends Partial<ShowModalOptions> {
|
|
14
18
|
props?: Record<string, any>;
|
|
15
19
|
target?: ResolvableModalTarget;
|
package/dist/plugins/modals.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { Application, View } from '@nativescript/core';
|
|
2
|
+
import { unref, warn, } from '@vue/runtime-core';
|
|
3
|
+
import { NSVElement, NSVRoot } from '../dom';
|
|
4
|
+
import { createNativeView } from '../runtimeHelpers';
|
|
5
|
+
import { isObject } from '@vue/shared';
|
|
5
6
|
/**
|
|
6
7
|
* @internal
|
|
7
8
|
*/
|
|
@@ -9,53 +10,70 @@ export function install(app) {
|
|
|
9
10
|
app.config.globalProperties.$showModal = $showModal;
|
|
10
11
|
}
|
|
11
12
|
function resolveModalTarget(target) {
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
const ob = unref(target);
|
|
14
|
+
if (ob instanceof NSVElement) {
|
|
15
|
+
return ob.nativeView;
|
|
14
16
|
}
|
|
15
|
-
else if (
|
|
16
|
-
return
|
|
17
|
+
else if (ob instanceof View) {
|
|
18
|
+
return ob;
|
|
17
19
|
}
|
|
18
|
-
else if (
|
|
19
|
-
return
|
|
20
|
+
else if (isObject(ob) && isObject(ob.$el)) {
|
|
21
|
+
return ob.$el.nativeView;
|
|
20
22
|
}
|
|
21
23
|
return false;
|
|
22
24
|
}
|
|
23
|
-
export async function $showModal(component, options) {
|
|
24
|
-
|
|
25
|
-
target: Application.getRootView(),
|
|
26
|
-
}, options);
|
|
27
|
-
const modalTarget = resolveModalTarget(options.target);
|
|
25
|
+
export async function $showModal(component, options = {}) {
|
|
26
|
+
const modalTarget = resolveModalTarget(options.target ?? Application.getRootView());
|
|
28
27
|
if (!modalTarget) {
|
|
29
28
|
if (__DEV__) {
|
|
30
29
|
warn(`could not open modal because the target does not exist`);
|
|
31
30
|
}
|
|
32
|
-
return
|
|
31
|
+
return;
|
|
33
32
|
}
|
|
34
33
|
return new Promise((resolve) => {
|
|
35
|
-
const modalApp = createApp(component, options ? options.props : null);
|
|
36
34
|
let isResolved = false;
|
|
35
|
+
let isReloading = false;
|
|
36
|
+
let root = new NSVRoot();
|
|
37
|
+
const reloadModal = () => {
|
|
38
|
+
isReloading = true;
|
|
39
|
+
closeModal();
|
|
40
|
+
// reopening is done in `closeCallback`
|
|
41
|
+
};
|
|
42
|
+
let view = createNativeView(component, options.props, {
|
|
43
|
+
reload: reloadModal,
|
|
44
|
+
});
|
|
37
45
|
const closeCallback = (data) => {
|
|
38
46
|
if (isResolved)
|
|
39
47
|
return;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
//
|
|
48
|
+
if (isReloading) {
|
|
49
|
+
view.unmount();
|
|
50
|
+
view.mount(root);
|
|
51
|
+
openModal({
|
|
52
|
+
// todo: for this to work nicely, we'd need to add `animated: false` to `closeModal` as well
|
|
53
|
+
// but not currently possible without a core change.
|
|
54
|
+
// animated: false,
|
|
55
|
+
});
|
|
56
|
+
isReloading = false;
|
|
57
|
+
return;
|
|
46
58
|
}
|
|
47
|
-
|
|
59
|
+
isResolved = true;
|
|
60
|
+
view.unmount();
|
|
61
|
+
view = null;
|
|
48
62
|
resolve(data);
|
|
49
63
|
};
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
const openModal = (additionalOptions) => {
|
|
65
|
+
modalTarget.showModal(view.nativeView, {
|
|
66
|
+
...options,
|
|
67
|
+
context: null,
|
|
68
|
+
closeCallback,
|
|
69
|
+
...additionalOptions,
|
|
70
|
+
});
|
|
52
71
|
};
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
});
|
|
72
|
+
const closeModal = (...args) => view.nativeView?.closeModal(...args);
|
|
73
|
+
view.context.config.globalProperties.$closeModal = closeModal;
|
|
74
|
+
view.context.config.globalProperties.$modal = { close: closeModal };
|
|
75
|
+
view.mount(root);
|
|
76
|
+
openModal();
|
|
59
77
|
});
|
|
60
78
|
}
|
|
61
79
|
//# sourceMappingURL=modals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modals.js","sourceRoot":"","sources":["../../src/plugins/modals.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"modals.js","sourceRoot":"","sources":["../../src/plugins/modals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { NSVElement } from
|
|
4
|
-
declare module
|
|
1
|
+
import { Frame, NavigationEntry, Page } from '@nativescript/core';
|
|
2
|
+
import { App, Component, Ref } from '@vue/runtime-core';
|
|
3
|
+
import { NSVElement } from '../dom';
|
|
4
|
+
declare module '@vue/runtime-core' {
|
|
5
5
|
interface ComponentCustomProperties {
|
|
6
6
|
/**
|
|
7
7
|
* todo: update docblock
|
|
@@ -11,11 +11,11 @@ declare module "@vue/runtime-core" {
|
|
|
11
11
|
* @param target
|
|
12
12
|
* @param options
|
|
13
13
|
*/
|
|
14
|
-
$navigateTo: (target: Component, options?: NavigationOptions) =>
|
|
14
|
+
$navigateTo: (target: Component, options?: NavigationOptions) => Page;
|
|
15
15
|
$navigateBack: (options?: NavigationOptions) => void;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
type ResolvableFrame = string | Ref | NSVElement | Frame | undefined;
|
|
19
19
|
export interface NavigationOptions extends NavigationEntry {
|
|
20
20
|
props?: Record<string, any>;
|
|
21
21
|
frame?: ResolvableFrame;
|
|
@@ -27,6 +27,6 @@ export interface BackNavigationOptions {
|
|
|
27
27
|
* @internal
|
|
28
28
|
*/
|
|
29
29
|
export declare function install(app: App): void;
|
|
30
|
-
export declare function $navigateTo(target: Component, options?: NavigationOptions):
|
|
30
|
+
export declare function $navigateTo(target: Component, options?: NavigationOptions): Page;
|
|
31
31
|
export declare function $navigateBack(options?: BackNavigationOptions): Promise<void>;
|
|
32
32
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Frame } from '@nativescript/core';
|
|
2
|
+
import { nextTick, unref } from '@vue/runtime-core';
|
|
3
|
+
import { NSVElement, NSVRoot } from '../dom';
|
|
4
|
+
import { createNativeView } from '../runtimeHelpers';
|
|
4
5
|
/**
|
|
5
6
|
* @internal
|
|
6
7
|
*/
|
|
@@ -12,114 +13,94 @@ function resolveFrame(frame) {
|
|
|
12
13
|
if (!frame) {
|
|
13
14
|
return Frame.topmost();
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
const ob = unref(frame);
|
|
17
|
+
if (ob instanceof Frame) {
|
|
18
|
+
return ob;
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return frame.value;
|
|
21
|
-
}
|
|
22
|
-
if (frame instanceof NSVElement) {
|
|
23
|
-
return frame.nativeView;
|
|
20
|
+
if (ob instanceof NSVElement) {
|
|
21
|
+
return ob.nativeView;
|
|
24
22
|
}
|
|
25
23
|
// todo: either change core Frame to add frames to the stack when they are created
|
|
26
24
|
// or do as we did in 2.x - handle a Map of frames.
|
|
27
25
|
// right now, empty frames can't be navigated as they are not recognized by `getFrameById`
|
|
28
|
-
return Frame.getFrameById(
|
|
29
|
-
}
|
|
30
|
-
function createNavigationRoot(cb) {
|
|
31
|
-
const defaultRoot = new NSVRoot();
|
|
32
|
-
// flag to indicate when we need to call resetRoot
|
|
33
|
-
// usually happens when the root component is re-mounted (HMR)
|
|
34
|
-
let shouldResetRoot = false;
|
|
35
|
-
const appendChild = defaultRoot.appendChild.bind(defaultRoot);
|
|
36
|
-
const removeChild = defaultRoot.removeChild.bind(defaultRoot);
|
|
37
|
-
defaultRoot.removeChild = (el) => {
|
|
38
|
-
removeChild(el);
|
|
39
|
-
shouldResetRoot = true;
|
|
40
|
-
// console.log("remove child", (el as NSVElement).tagName);
|
|
41
|
-
};
|
|
42
|
-
defaultRoot.appendChild = (el) => {
|
|
43
|
-
appendChild(el);
|
|
44
|
-
if (shouldResetRoot) {
|
|
45
|
-
shouldResetRoot = false;
|
|
46
|
-
// console.log("append child", (el as NSVElement).tagName);
|
|
47
|
-
cb(el.nativeView);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
return defaultRoot;
|
|
51
|
-
}
|
|
52
|
-
function attachDisposeCallbacks(targetPage, disposeCallback) {
|
|
53
|
-
// const handler = (args: NavigatedData) => {
|
|
54
|
-
// if (args.isBackNavigation) {
|
|
55
|
-
// console.log("navigatedFrom called.");
|
|
56
|
-
// targetPage.off("navigatedFrom", handler as any);
|
|
57
|
-
// disposeCallback();
|
|
58
|
-
// }
|
|
59
|
-
// };
|
|
60
|
-
// targetPage.on("navigatedFrom", handler);
|
|
61
|
-
const dispose = targetPage.disposeNativeView;
|
|
62
|
-
targetPage.disposeNativeView = () => {
|
|
63
|
-
// console.log("dispose native view called.");
|
|
64
|
-
disposeCallback(targetPage);
|
|
65
|
-
dispose.call(targetPage);
|
|
66
|
-
};
|
|
26
|
+
return Frame.getFrameById(ob);
|
|
67
27
|
}
|
|
68
|
-
export
|
|
69
|
-
options = Object.assign({}, options);
|
|
70
|
-
// console.log("$navigateTo");
|
|
28
|
+
export function $navigateTo(target, options) {
|
|
71
29
|
try {
|
|
72
|
-
const frame = resolveFrame(options
|
|
30
|
+
const frame = resolveFrame(options?.frame);
|
|
73
31
|
if (!frame) {
|
|
74
|
-
throw new Error(
|
|
32
|
+
throw new Error('Failed to resolve frame. Make sure your frame exists.');
|
|
75
33
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
34
|
+
const root = new NSVRoot();
|
|
35
|
+
let isReloading = false;
|
|
36
|
+
const attachDisposeCallback = (page) => {
|
|
37
|
+
const dispose = page.disposeNativeView;
|
|
38
|
+
page.disposeNativeView = () => {
|
|
39
|
+
dispose.call(page);
|
|
40
|
+
// if we are reloading, don't unmount the view, as the reload will unmount/remount it.
|
|
41
|
+
if (!isReloading) {
|
|
42
|
+
view.unmount();
|
|
43
|
+
view = null;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const reloadPage = () => {
|
|
48
|
+
if (isReloading) {
|
|
49
|
+
return;
|
|
80
50
|
}
|
|
81
|
-
|
|
82
|
-
|
|
51
|
+
// if the page we are reloading is not the current page, wait for it to be navigated to
|
|
52
|
+
if (frame.currentPage !== view.nativeView) {
|
|
53
|
+
view.nativeView.once('navigatedTo', () => {
|
|
54
|
+
nextTick(() => {
|
|
55
|
+
reloadPage();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
return;
|
|
83
59
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
attachDisposeCallbacks(newPage, cleanup);
|
|
89
|
-
// cache the original transition of the current page
|
|
60
|
+
isReloading = true;
|
|
61
|
+
view.unmount();
|
|
62
|
+
view.mount(root);
|
|
63
|
+
attachDisposeCallback(view.nativeView);
|
|
90
64
|
const originalTransition = frame.currentEntry.transition;
|
|
91
65
|
// replace current page
|
|
92
66
|
frame.replacePage({
|
|
93
67
|
...options,
|
|
94
68
|
transition: {
|
|
95
|
-
name:
|
|
69
|
+
name: 'fade',
|
|
96
70
|
duration: 10,
|
|
97
71
|
},
|
|
98
|
-
create: () =>
|
|
72
|
+
create: () => view.nativeView,
|
|
99
73
|
});
|
|
100
74
|
// reset the transition to the original one
|
|
101
|
-
frame.once(
|
|
75
|
+
frame.once('navigatedTo', () => {
|
|
102
76
|
frame.currentEntry.transition = originalTransition;
|
|
77
|
+
isReloading = false;
|
|
103
78
|
});
|
|
104
|
-
}
|
|
105
|
-
let
|
|
106
|
-
|
|
79
|
+
};
|
|
80
|
+
let view = createNativeView(target, options?.props, {
|
|
81
|
+
/**
|
|
82
|
+
* Called by @vue/runtime-core when the component is reloaded during HMR.
|
|
83
|
+
*/
|
|
84
|
+
reload: reloadPage,
|
|
85
|
+
});
|
|
86
|
+
view.mount(root);
|
|
87
|
+
attachDisposeCallback(view.nativeView);
|
|
107
88
|
frame.navigate({
|
|
108
89
|
...options,
|
|
109
|
-
create: () =>
|
|
90
|
+
create: () => view.nativeView,
|
|
110
91
|
});
|
|
111
|
-
return
|
|
92
|
+
return view.nativeView;
|
|
112
93
|
}
|
|
113
94
|
catch (e) {
|
|
114
|
-
console.error(
|
|
95
|
+
console.error('[$navigateTo] Failed to navigate:\n\n');
|
|
115
96
|
console.error(e, e.stack);
|
|
116
97
|
throw e;
|
|
117
98
|
}
|
|
118
99
|
}
|
|
119
100
|
export async function $navigateBack(options) {
|
|
120
|
-
const frame = resolveFrame(options
|
|
101
|
+
const frame = resolveFrame(options?.frame);
|
|
121
102
|
if (!frame) {
|
|
122
|
-
throw new Error(
|
|
103
|
+
throw new Error('Failed to resolve frame. Make sure your frame exists.');
|
|
123
104
|
}
|
|
124
105
|
if (!frame.canGoBack()) {
|
|
125
106
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/plugins/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/plugins/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export function install(app) {
|
|
5
|
+
app.config.globalProperties.$templates = {
|
|
6
|
+
getKeyedTemplates() { },
|
|
7
|
+
selectorFn() { },
|
|
8
|
+
patchTemplate(name, context, oldVnode) { },
|
|
9
|
+
registerTemplate() { }
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/plugins/templates.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC9B,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,GAAG;QACvC,iBAAiB,KAAI,CAAC;QACtB,UAAU,KAAI,CAAC;QACf,aAAa,CAAC,IAAY,EAAE,OAAY,EAAE,QAAe,IAAG,CAAC;QAC7D,gBAAgB,KAAI,CAAC;KACtB,CAAC;AACJ,CAAC"}
|