nativescript-vue 3.0.0-dev.4 → 3.0.0-rc.1
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/LICENSE +21 -0
- package/README.md +59 -1
- package/devtools.js +33 -0
- package/dist/compiler-sfc/index.d.ts +1 -0
- package/dist/compiler-sfc/index.js +2 -0
- package/dist/compiler-sfc/index.js.map +1 -0
- package/dist/compiler.d.ts +4 -0
- package/dist/compiler.js +32 -0
- package/dist/compiler.js.map +1 -0
- package/dist/components/ActionBar.d.ts +3 -0
- package/dist/components/ActionBar.js +70 -0
- package/dist/components/ActionBar.js.map +1 -0
- package/dist/components/ListView.d.ts +20 -0
- package/dist/components/ListView.js +110 -0
- package/dist/components/ListView.js.map +1 -0
- package/dist/components/index.d.ts +22 -0
- package/dist/components/index.js +8 -0
- package/dist/components/index.js.map +1 -0
- 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 +7 -0
- package/dist/directives/vShow.js +45 -0
- package/dist/directives/vShow.js.map +1 -0
- package/dist/dom/index.d.ts +66 -0
- package/dist/dom/index.js +303 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +101 -0
- package/dist/index.js.map +1 -0
- package/dist/nativescript/elements.d.ts +1 -0
- package/dist/nativescript/elements.js +164 -0
- package/dist/nativescript/elements.js.map +1 -0
- package/dist/nativescript/index.d.ts +6 -0
- package/dist/nativescript/index.js +26 -0
- package/dist/nativescript/index.js.map +1 -0
- package/dist/plugins/modals.d.ts +26 -0
- package/dist/plugins/modals.js +79 -0
- package/dist/plugins/modals.js.map +1 -0
- package/dist/plugins/navigation.d.ts +32 -0
- package/dist/plugins/navigation.js +110 -0
- package/dist/plugins/navigation.js.map +1 -0
- 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 +26 -0
- package/dist/registry/index.js +55 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/renderer/index.d.ts +1 -0
- package/dist/renderer/index.js +8 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/modules/attrs.d.ts +2 -0
- package/dist/renderer/modules/attrs.js +31 -0
- package/dist/renderer/modules/attrs.js.map +1 -0
- package/dist/renderer/modules/class.d.ts +2 -0
- package/dist/renderer/modules/class.js +9 -0
- package/dist/renderer/modules/class.js.map +1 -0
- package/dist/renderer/modules/events.d.ts +12 -0
- package/dist/renderer/modules/events.js +59 -0
- package/dist/renderer/modules/events.js.map +1 -0
- package/dist/renderer/modules/style.d.ts +5 -0
- package/dist/renderer/modules/style.js +80 -0
- package/dist/renderer/modules/style.js.map +1 -0
- package/dist/renderer/nodeOps.d.ts +17 -0
- package/dist/renderer/nodeOps.js +70 -0
- package/dist/renderer/nodeOps.js.map +1 -0
- package/dist/renderer/patchProp.d.ts +2 -0
- package/dist/renderer/patchProp.js +47 -0
- package/dist/renderer/patchProp.js.map +1 -0
- package/dist/runtimeHelpers.d.ts +31 -0
- package/dist/runtimeHelpers.js +51 -0
- package/dist/runtimeHelpers.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/withCompiler.d.ts +3 -0
- package/dist/withCompiler.js +6 -0
- package/dist/withCompiler.js.map +1 -0
- package/nativescript.webpack.js +162 -0
- package/package.json +43 -22
- package/dist/nativescript-vue.cjs.js +0 -56
- package/dist/nativescript-vue.cjs.prod.js +0 -55
- package/dist/nativescript-vue.esm-bundler.js +0 -36
- package/index.js +0 -7
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 NativeScript-Vue
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1 +1,59 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://user-images.githubusercontent.com/879060/205505950-70769439-ff3e-4ecc-b0cd-1385483a847c.jpg">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">NativeScript-Vue3 Beta</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/nativescript-vue">
|
|
9
|
+
<img src="https://img.shields.io/npm/v/nativescript-vue/beta.svg" alt="npm">
|
|
10
|
+
</a>
|
|
11
|
+
<a href="https://github.com/nativescript-vue/nativescript-vue/blob/master/LICENSE">
|
|
12
|
+
<img src="https://img.shields.io/github/license/nativescript-vue/nativescript-vue.svg" alt="license">
|
|
13
|
+
</a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
NativeScript-Vue with Vue3 support now in beta!
|
|
17
|
+
|
|
18
|
+
## Quick start
|
|
19
|
+
|
|
20
|
+
<!-- To get started, you can use the [StackBlitz Template](https://stackblitz.com/fork/nativescript-vue3-beta) -->
|
|
21
|
+
|
|
22
|
+
To get started, you can use the [StackBlitz Template](https://stackblitz.com/fork/github/nativescript-vue/nativescript-vue/tree/main/packages/stackblitz-template?file=src%2Fcomponents%2FHome.vue&title=NativeScript%20Starter%20Vue3%20Beta)
|
|
23
|
+
|
|
24
|
+
...or locally:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ns create myAwesomeApp --template @nativescript-vue/template-blank@beta
|
|
28
|
+
|
|
29
|
+
cd myAwesomeApp
|
|
30
|
+
ns run ios|android
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Vue Devtools
|
|
34
|
+
|
|
35
|
+
To use VueDevtools, run:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
ns run ios|android --env.vueDevtools
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This will launch the standalone VueDevtools, and connect to it once the app launches. Right now, devtools are only supported on iOS Simulators and Android Emulators, but physical device support should come soon (requires configuring a host/port that the device can connect to.).
|
|
42
|
+
|
|
43
|
+
On android, you must enable cleartext http traffic, otherwise any connections are silently dropped by the system. In the `App_Resources/Android/src/main/AndroidManifext.xml` add the following to your existing `<application>` tag:
|
|
44
|
+
|
|
45
|
+
```diff
|
|
46
|
+
<application ...
|
|
47
|
+
+ android:usesCleartextTraffic="true"
|
|
48
|
+
.../>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Issues
|
|
52
|
+
|
|
53
|
+
If you encounter any issues, please open a new issue with as much detail as possible. This is **beta** software, so there might be bugs.
|
|
54
|
+
|
|
55
|
+
- [Join Discord](https://nativescript.org/discord)
|
|
56
|
+
|
|
57
|
+
## Looking for V2?
|
|
58
|
+
|
|
59
|
+
The V2 version has been moved to the [v2 branch](https://github.com/nativescript-vue/nativescript-vue/tree/v2)
|
package/devtools.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
if (__DEV__) {
|
|
2
|
+
try {
|
|
3
|
+
const _global = globalThis.global;
|
|
4
|
+
|
|
5
|
+
const host = (_global.__VUE_DEVTOOLS_HOST__ ??= __NS_VUE_DEVTOOLS_HOST__);
|
|
6
|
+
const port = (_global.__VUE_DEVTOOLS_PORT__ ??= __NS_VUE_DEVTOOLS_PORT__);
|
|
7
|
+
_global.__VUE_DEVTOOLS_TOAST__ ??= (message) => {
|
|
8
|
+
console.warn('[VueDevtools]', message);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const platform = global.isAndroid ? 'Android' : 'iOS';
|
|
12
|
+
|
|
13
|
+
const documentShim = {
|
|
14
|
+
// this shows as the title in VueDevtools
|
|
15
|
+
title: `${platform} :: ${host}:${port} :: NativeScript`,
|
|
16
|
+
querySelector: () => null,
|
|
17
|
+
querySelectorAll: () => [],
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
_global.document = Object.assign({}, documentShim, _global.document);
|
|
21
|
+
_global.addEventListener ??= () => {};
|
|
22
|
+
_global.removeEventListener ??= () => {};
|
|
23
|
+
_global.window ??= _global;
|
|
24
|
+
|
|
25
|
+
console.warn(
|
|
26
|
+
`[VueDevtools] Connecting to ${global.__VUE_DEVTOOLS_HOST__}:${global.__VUE_DEVTOOLS_PORT__}...`,
|
|
27
|
+
);
|
|
28
|
+
require('@vue/devtools/build/hook.js');
|
|
29
|
+
require('@vue/devtools/build/backend.js');
|
|
30
|
+
} catch (e) {
|
|
31
|
+
console.warn('[VueDevtools] Failed to init:', e);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "@vue/compiler-sfc";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler-sfc/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
package/dist/compiler.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { compile } from "@vue/compiler-dom";
|
|
2
|
+
import { warn } from "@vue/runtime-core";
|
|
3
|
+
import * as runtime from "./index";
|
|
4
|
+
const NOOP = () => { };
|
|
5
|
+
const compileCache = Object.create(null);
|
|
6
|
+
export function compileToFunction(template, options) {
|
|
7
|
+
if (typeof template !== "string") {
|
|
8
|
+
warn("invalid template option: ", template);
|
|
9
|
+
return NOOP;
|
|
10
|
+
}
|
|
11
|
+
const key = template;
|
|
12
|
+
const cached = compileCache[key];
|
|
13
|
+
if (cached) {
|
|
14
|
+
return cached;
|
|
15
|
+
}
|
|
16
|
+
const { code } = compile(template, {
|
|
17
|
+
isNativeTag: (tag) => true,
|
|
18
|
+
hoistStatic: true,
|
|
19
|
+
prefixIdentifiers: true,
|
|
20
|
+
onWarn(warn) {
|
|
21
|
+
console.warn("Template Compile Warning", warn);
|
|
22
|
+
},
|
|
23
|
+
onError(err) {
|
|
24
|
+
console.error("Template Compile Error", err);
|
|
25
|
+
},
|
|
26
|
+
...options,
|
|
27
|
+
});
|
|
28
|
+
const render = new Function("Vue", code)(runtime);
|
|
29
|
+
return (compileCache[key] = render);
|
|
30
|
+
}
|
|
31
|
+
export { compileToFunction as compile };
|
|
32
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkC,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAkB,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AACtB,MAAM,YAAY,GAAmC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEzE,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,OAAyB;IAEzB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAChC,IAAI,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC;IACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,CAAC;KACf;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE;QACjC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI;QAC1B,WAAW,EAAE,IAAI;QACjB,iBAAiB,EAAE,IAAI;QACvB,MAAM,CAAC,IAAmB;YACxB,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,GAAkB;YACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAmB,CAAC;IAEpE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,OAAO,EACL,iBAAiB,IAAI,OAAO,EAC7B,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const ActionBar: import("@vue/runtime-core").DefineComponent<{}, () => import("@vue/runtime-core").VNode<import("@vue/runtime-core").RendererNode, import("@vue/runtime-core").RendererElement, {
|
|
2
|
+
[key: string]: any;
|
|
3
|
+
}>, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{}>>, {}, {}>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Page as NSCPage, ActionBar as NSCActionBar, NavigationButton as NSCNavigationButton, ActionItem as NSCActionItem, } from '@nativescript/core';
|
|
2
|
+
import { defineComponent, h, warn } from '@vue/runtime-core';
|
|
3
|
+
import { registerElement } from '../registry';
|
|
4
|
+
registerElement('NSCActionBar', () => NSCActionBar, {
|
|
5
|
+
viewFlags: 1 /* NSVViewFlags.SKIP_ADD_TO_DOM */,
|
|
6
|
+
nodeOps: {
|
|
7
|
+
insert(child, parent, atIndex) {
|
|
8
|
+
const actionBar = parent.nativeView;
|
|
9
|
+
const childView = child.nativeView;
|
|
10
|
+
if (childView instanceof NSCNavigationButton) {
|
|
11
|
+
actionBar.navigationButton = childView;
|
|
12
|
+
}
|
|
13
|
+
else if (childView instanceof NSCActionItem) {
|
|
14
|
+
if (atIndex) {
|
|
15
|
+
const ai = actionBar.actionItems.getItems();
|
|
16
|
+
ai.splice(atIndex, 0, childView);
|
|
17
|
+
actionBar.actionItems.setItems(ai);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
actionBar.actionItems.addItem(childView);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
actionBar.titleView = childView;
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
remove(child, parent) {
|
|
28
|
+
const actionBar = parent.nativeView;
|
|
29
|
+
const childView = child.nativeView;
|
|
30
|
+
if (childView instanceof NSCNavigationButton) {
|
|
31
|
+
if (actionBar.navigationButton === childView) {
|
|
32
|
+
actionBar.navigationButton = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (childView instanceof NSCActionItem) {
|
|
36
|
+
actionBar.actionItems.removeItem(childView);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
if (actionBar.titleView === childView) {
|
|
40
|
+
actionBar.titleView = null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
export const ActionBar = /*#__PURE__*/ defineComponent({
|
|
47
|
+
name: 'ActionBar',
|
|
48
|
+
setup(props, ctx) {
|
|
49
|
+
return () => {
|
|
50
|
+
return h('NSCActionBar', {
|
|
51
|
+
...ctx.attrs,
|
|
52
|
+
onVnodeMounted(vnode) {
|
|
53
|
+
const el = vnode.el;
|
|
54
|
+
const actionBar = el.nativeView;
|
|
55
|
+
const parent = el.parentNode;
|
|
56
|
+
if (parent.nativeView instanceof NSCPage) {
|
|
57
|
+
parent.nativeView.actionBar = actionBar;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (__DEV__) {
|
|
61
|
+
warn(`<ActionBar> must be a direct child of a <Page> element - ` +
|
|
62
|
+
`got <${parent.nativeView.constructor.name}> instead.`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
}, ctx.slots.default ? ctx.slots.default() : undefined);
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=ActionBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../src/components/ActionBar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,IAAI,OAAO,EACf,SAAS,IAAI,YAAY,EACzB,gBAAgB,IAAI,mBAAmB,EACvC,UAAU,IAAI,aAAa,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;IAClD,SAAS,sCAA8B;IACvC,OAAO,EAAE;QACP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO;YAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAA0B,CAAC;YACpD,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;YAEnC,IAAI,SAAS,YAAY,mBAAmB,EAAE,CAAC;gBAC7C,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC;YACzC,CAAC;iBAAM,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,EAAE,GAAoB,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;oBAC7D,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;oBAChC,SAAS,CAAC,WAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;YAClC,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,MAAM;YAClB,MAAM,SAAS,GAAG,MAAM,CAAC,UAA0B,CAAC;YACpD,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;YAEnC,IAAI,SAAS,YAAY,mBAAmB,EAAE,CAAC;gBAC7C,IAAI,SAAS,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBAC7C,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,YAAY,aAAa,EAAE,CAAC;gBAC9C,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACtC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;KACF;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,CAAC;IACrD,IAAI,EAAE,WAAW;IACjB,KAAK,CAAC,KAAK,EAAE,GAAG;QACd,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,CACN,cAAc,EACd;gBACE,GAAG,GAAG,CAAC,KAAK;gBACZ,cAAc,CAAC,KAAK;oBAClB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAgB,CAAC;oBAClC,MAAM,SAAS,GAAG,EAAE,CAAC,UAA0B,CAAC;oBAChD,MAAM,MAAM,GAAG,EAAE,CAAC,UAAwB,CAAC;oBAE3C,IAAI,MAAM,CAAC,UAAU,YAAY,OAAO,EAAE,CAAC;wBACzC,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,IAAI,OAAO,EAAE,CAAC;4BACZ,IAAI,CACF,2DAA2D;gCACzD,QAAQ,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,YAAY,CACzD,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;aACF,EACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CACpD,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { VNode } from '@vue/runtime-core';
|
|
2
|
+
export interface ListItem<T = any> {
|
|
3
|
+
item: T;
|
|
4
|
+
index: number;
|
|
5
|
+
even: boolean;
|
|
6
|
+
odd: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const ListView: import("@vue/runtime-core").DefineComponent<{
|
|
9
|
+
items: {
|
|
10
|
+
validator(value: unknown): boolean;
|
|
11
|
+
};
|
|
12
|
+
itemTemplateSelector: FunctionConstructor;
|
|
13
|
+
}, () => VNode<import("@vue/runtime-core").RendererNode, import("@vue/runtime-core").RendererElement, {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}>, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
|
|
16
|
+
items: {
|
|
17
|
+
validator(value: unknown): boolean;
|
|
18
|
+
};
|
|
19
|
+
itemTemplateSelector: FunctionConstructor;
|
|
20
|
+
}>>, {}, {}>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { defineComponent, getCurrentInstance, h, warn, watch, ref, Comment, } from '@vue/runtime-core';
|
|
2
|
+
import { ListView as NSCListView, ObservableArray, } from '@nativescript/core';
|
|
3
|
+
import { registerElement } from '../registry';
|
|
4
|
+
import { ELEMENT_REF } from '../runtimeHelpers';
|
|
5
|
+
registerElement('NSCListView', () => NSCListView, {
|
|
6
|
+
viewFlags: 8 /* NSVViewFlags.NO_CHILDREN */,
|
|
7
|
+
});
|
|
8
|
+
function getListItem(item, index) {
|
|
9
|
+
return {
|
|
10
|
+
item,
|
|
11
|
+
index,
|
|
12
|
+
even: index % 2 === 0,
|
|
13
|
+
odd: index % 2 !== 0,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const LIST_CELL_ID = Symbol('list_cell_id');
|
|
17
|
+
export const ListView = /*#__PURE__*/ defineComponent({
|
|
18
|
+
name: 'ListView',
|
|
19
|
+
props: {
|
|
20
|
+
items: {
|
|
21
|
+
validator(value) {
|
|
22
|
+
return Array.isArray(value) || value instanceof ObservableArray;
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
itemTemplateSelector: Function,
|
|
26
|
+
},
|
|
27
|
+
setup(props, ctx) {
|
|
28
|
+
const itemTemplates = Object.keys(ctx.slots).map((slotName) => {
|
|
29
|
+
return {
|
|
30
|
+
key: slotName,
|
|
31
|
+
createView() {
|
|
32
|
+
// no need to return anything here
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
const getSlotName = (itemCtx) => props.itemTemplateSelector?.(itemCtx) ?? 'default';
|
|
37
|
+
const listView = ref(null);
|
|
38
|
+
const vm = getCurrentInstance();
|
|
39
|
+
watch(props, () => {
|
|
40
|
+
try {
|
|
41
|
+
if (props.items instanceof ObservableArray) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const lv = listView.value?.nativeView;
|
|
45
|
+
lv?.refresh();
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error('Error while refreshing ListView', err);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
let cellId = 0;
|
|
52
|
+
const cells = ref({});
|
|
53
|
+
function onitemLoading(event) {
|
|
54
|
+
const el = event.view?.[ELEMENT_REF];
|
|
55
|
+
const id = el?.nativeView[LIST_CELL_ID] ?? `LIST_CELL_${cellId++}`;
|
|
56
|
+
const itemCtx = getListItem(props.items instanceof ObservableArray
|
|
57
|
+
? props.items.getItem(event.index)
|
|
58
|
+
: props.items[event.index], event.index);
|
|
59
|
+
// update the cell data with the current row
|
|
60
|
+
cells.value[id] = {
|
|
61
|
+
itemCtx,
|
|
62
|
+
slotName: getSlotName(itemCtx),
|
|
63
|
+
};
|
|
64
|
+
// trigger an update!
|
|
65
|
+
vm.update();
|
|
66
|
+
// find the vnode rendering this cell
|
|
67
|
+
const vnode = vm.subTree.children.find((vnode) => {
|
|
68
|
+
return vnode.key === id;
|
|
69
|
+
});
|
|
70
|
+
// store the cell id on the Element itself so we can retrieve it when recycling kicks in
|
|
71
|
+
const cellEl = vnode.el.nativeView;
|
|
72
|
+
cellEl[LIST_CELL_ID] = id;
|
|
73
|
+
// finally, set the event.view to the rendered cellEl
|
|
74
|
+
event.view = cellEl;
|
|
75
|
+
}
|
|
76
|
+
function itemTemplateSelector(item, index) {
|
|
77
|
+
// pass on the template selector call with the ListItem context
|
|
78
|
+
return getSlotName(getListItem(item, index));
|
|
79
|
+
}
|
|
80
|
+
// render all realized templates as children
|
|
81
|
+
const cellVNODES = () => Object.entries(cells.value).map(([id, entry]) => {
|
|
82
|
+
const vnodes = ctx.slots[entry.slotName]?.(entry.itemCtx) ?? [];
|
|
83
|
+
const nonCommentVnodes = vnodes.filter((vnode) => vnode.type !== Comment);
|
|
84
|
+
if (nonCommentVnodes.length === 0) {
|
|
85
|
+
warn(`ListView template must contain at least one element.`);
|
|
86
|
+
}
|
|
87
|
+
else if (nonCommentVnodes.length > 1) {
|
|
88
|
+
warn(`ListView template must contain a single root element. Found: ${vnodes.length}. Only the first one will be used.`);
|
|
89
|
+
}
|
|
90
|
+
const vnode = nonCommentVnodes.at(0) ??
|
|
91
|
+
// default template is just a label
|
|
92
|
+
h('Label', {
|
|
93
|
+
text: entry.itemCtx.item,
|
|
94
|
+
});
|
|
95
|
+
// set the key to the list cell id, so we can find this cell later...
|
|
96
|
+
vnode.key = id;
|
|
97
|
+
return vnode;
|
|
98
|
+
});
|
|
99
|
+
return () => {
|
|
100
|
+
return h('NSCListView', {
|
|
101
|
+
ref: listView,
|
|
102
|
+
items: props.items,
|
|
103
|
+
itemTemplates,
|
|
104
|
+
itemTemplateSelector,
|
|
105
|
+
onitemLoading,
|
|
106
|
+
}, cellVNODES());
|
|
107
|
+
};
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=ListView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../src/components/ListView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ActionBar } from './ActionBar';
|
|
2
|
+
import { ListView, ListItem } from './ListView';
|
|
3
|
+
export declare const BUILT_IN_COMPONENTS: {
|
|
4
|
+
ActionBar: import("@vue/runtime-core").DefineComponent<{}, () => import("@vue/runtime-core").VNode<import("@vue/runtime-core").RendererNode, import("@vue/runtime-core").RendererElement, {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}>, {}, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{}>>, {}, {}>;
|
|
7
|
+
ListView: import("@vue/runtime-core").DefineComponent<{
|
|
8
|
+
items: {
|
|
9
|
+
validator(value: unknown): boolean;
|
|
10
|
+
};
|
|
11
|
+
itemTemplateSelector: FunctionConstructor;
|
|
12
|
+
}, () => import("@vue/runtime-core").VNode<import("@vue/runtime-core").RendererNode, import("@vue/runtime-core").RendererElement, {
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}>, unknown, {}, {}, import("@vue/runtime-core").ComponentOptionsMixin, import("@vue/runtime-core").ComponentOptionsMixin, {}, string, import("@vue/runtime-core").PublicProps, Readonly<import("@vue/runtime-core").ExtractPropTypes<{
|
|
15
|
+
items: {
|
|
16
|
+
validator(value: unknown): boolean;
|
|
17
|
+
};
|
|
18
|
+
itemTemplateSelector: FunctionConstructor;
|
|
19
|
+
}>>, {}, {}>;
|
|
20
|
+
};
|
|
21
|
+
export { ActionBar, ListView };
|
|
22
|
+
export type { ListItem };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,SAAS;IACT,QAAQ;CACT,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ObjectDirective } from "@vue/runtime-core";
|
|
2
|
+
import { NSVElement } from "../dom";
|
|
3
|
+
type AssignerFn = (value: any) => void;
|
|
4
|
+
type ModelDirective<T> = ObjectDirective<T & {
|
|
5
|
+
_assign: AssignerFn;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const vModel: ModelDirective<NSVElement>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { invokeArrayFns, isArray } from "@vue/shared";
|
|
2
|
+
import { getViewMeta } from "../registry";
|
|
3
|
+
const getModelAssigner = (vnode) => {
|
|
4
|
+
const fn = vnode.props["onUpdate:modelValue"];
|
|
5
|
+
return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;
|
|
6
|
+
};
|
|
7
|
+
function toNumber(val) {
|
|
8
|
+
const n = parseFloat(val);
|
|
9
|
+
return isNaN(n) ? val : n;
|
|
10
|
+
}
|
|
11
|
+
export const vModel = {
|
|
12
|
+
beforeMount(el, { value, modifiers: { trim, number } }, vnode) {
|
|
13
|
+
el._assign = getModelAssigner(vnode);
|
|
14
|
+
const castToNumber = number;
|
|
15
|
+
const { prop, event } = getViewMeta(el.tagName).model;
|
|
16
|
+
el._assign(value);
|
|
17
|
+
el.setAttribute(prop, value);
|
|
18
|
+
el.addEventListener(event, () => {
|
|
19
|
+
let propValue = el.getAttribute(prop);
|
|
20
|
+
if (trim && typeof propValue === "string") {
|
|
21
|
+
propValue = propValue.trim();
|
|
22
|
+
}
|
|
23
|
+
else if (castToNumber && typeof propValue === "string") {
|
|
24
|
+
propValue = toNumber(propValue);
|
|
25
|
+
}
|
|
26
|
+
el._assign(propValue);
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
beforeUpdate(el, { value, oldValue }, vnode) {
|
|
30
|
+
const { prop } = getViewMeta(el.tagName).model;
|
|
31
|
+
el._assign = getModelAssigner(vnode);
|
|
32
|
+
if (value === oldValue) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
el.setAttribute(prop, value);
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=vModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vModel.js","sourceRoot":"","sources":["../../src/directives/vModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAC;AAI9D,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAc,EAAE;IACpD,MAAM,EAAE,GAAG,KAAK,CAAC,KAAM,CAAC,qBAAqB,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAID,MAAM,CAAC,MAAM,MAAM,GAA+B;IAChD,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK;QAC3D,EAAE,CAAC,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,MAAM,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAA2B,CAAC;QAC5E,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7B,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE;YAC9B,IAAI,SAAS,GAAY,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gBACzC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;aAC9B;iBAAM,IAAI,YAAY,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gBACxD,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC;YACD,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK;QACzC,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAA2B,CAAC;QACrE,EAAE,CAAC,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,OAAO;SACR;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const vShow = {
|
|
2
|
+
beforeMount(el, { value }, { transition }) {
|
|
3
|
+
el._vod =
|
|
4
|
+
el.getAttribute('visibility') === 'none'
|
|
5
|
+
? ''
|
|
6
|
+
: el.getAttribute('visibility');
|
|
7
|
+
if (transition && value) {
|
|
8
|
+
transition.beforeEnter(el);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
setDisplay(el, value);
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
mounted(el, { value }, { transition }) {
|
|
15
|
+
if (transition && value) {
|
|
16
|
+
transition.enter(el);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
updated(el, { value, oldValue }, { transition }) {
|
|
20
|
+
if (!value === !oldValue)
|
|
21
|
+
return;
|
|
22
|
+
if (transition) {
|
|
23
|
+
if (value) {
|
|
24
|
+
transition.beforeEnter(el);
|
|
25
|
+
setDisplay(el, true);
|
|
26
|
+
transition.enter(el);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
transition.leave(el, () => {
|
|
30
|
+
setDisplay(el, false);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
setDisplay(el, value);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
beforeUnmount(el) {
|
|
39
|
+
setDisplay(el, true);
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
function setDisplay(el, value) {
|
|
43
|
+
el.setAttribute('visibility', value ? el._vod : 'collapsed');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=vShow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vShow.js","sourceRoot":"","sources":["../../src/directives/vShow.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,KAAK,GAAkC;IAClD,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE;QACvC,EAAE,CAAC,IAAI;YACL,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,MAAM;gBACtC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAE,EAAE,CAAC,YAAY,CAAC,YAAY,CAAY,CAAC;QAChD,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE;QACnC,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE;QAC7C,IAAI,CAAC,KAAK,KAAK,CAAC,QAAQ;YAAE,OAAO;QACjC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3B,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACrB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE;oBACxB,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;CACF,CAAC;AAEF,SAAS,UAAU,CAAC,EAAgB,EAAE,KAAc;IAClD,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { NSVViewMeta } from '../registry';
|
|
2
|
+
export declare const enum NSVNodeTypes {
|
|
3
|
+
TEXT = "text",
|
|
4
|
+
ELEMENT = "element",
|
|
5
|
+
COMMENT = "comment",
|
|
6
|
+
ROOT = "root"
|
|
7
|
+
}
|
|
8
|
+
export declare const enum NSVViewFlags {
|
|
9
|
+
NONE = 0,
|
|
10
|
+
SKIP_ADD_TO_DOM = 1,
|
|
11
|
+
CONTENT_VIEW = 2,
|
|
12
|
+
LAYOUT_VIEW = 4,
|
|
13
|
+
NO_CHILDREN = 8
|
|
14
|
+
}
|
|
15
|
+
export declare abstract class NSVNode {
|
|
16
|
+
protected constructor(nodeType: NSVNodeTypes);
|
|
17
|
+
nodeId: number;
|
|
18
|
+
nodeType: NSVNodeTypes;
|
|
19
|
+
private _text?;
|
|
20
|
+
get text(): string | undefined;
|
|
21
|
+
set text(value: string | undefined);
|
|
22
|
+
parentNode: NSVElement | null;
|
|
23
|
+
childNodes: NSVNode[];
|
|
24
|
+
get nextSibling(): NSVNode | null;
|
|
25
|
+
get prevSibling(): NSVNode | null;
|
|
26
|
+
get firstChild(): NSVNode;
|
|
27
|
+
get lastChild(): NSVNode;
|
|
28
|
+
}
|
|
29
|
+
export declare class NSVElement extends NSVNode {
|
|
30
|
+
private readonly _tagName;
|
|
31
|
+
private readonly _nativeView;
|
|
32
|
+
private _meta;
|
|
33
|
+
private _attributeOriginalValue;
|
|
34
|
+
constructor(tagName: string);
|
|
35
|
+
get tagName(): string;
|
|
36
|
+
get nativeView(): any;
|
|
37
|
+
get style(): any | string;
|
|
38
|
+
set style(inlineStyle: any | string);
|
|
39
|
+
get text(): string | undefined;
|
|
40
|
+
set text(t: string | undefined);
|
|
41
|
+
get meta(): NSVViewMeta;
|
|
42
|
+
addEventListener(event: string, handler: any, options?: AddEventListenerOptions): void;
|
|
43
|
+
removeEventListener(event: string, handler?: any): void;
|
|
44
|
+
dispatchEvent(event: string): void;
|
|
45
|
+
getAttribute(name: string): unknown;
|
|
46
|
+
setAttribute(name: string, value: unknown): void;
|
|
47
|
+
removeAttribute(name: string): void;
|
|
48
|
+
insertBefore(el: NSVNode, anchor?: NSVNode | null): void;
|
|
49
|
+
appendChild(el: NSVNode): void;
|
|
50
|
+
removeChild(el: NSVNode): void;
|
|
51
|
+
private addChild;
|
|
52
|
+
updateText(): void;
|
|
53
|
+
}
|
|
54
|
+
export declare class NSVComment extends NSVNode {
|
|
55
|
+
constructor(text: string);
|
|
56
|
+
}
|
|
57
|
+
export declare class NSVText extends NSVNode {
|
|
58
|
+
constructor(text: string);
|
|
59
|
+
}
|
|
60
|
+
export declare class NSVRoot extends NSVNode {
|
|
61
|
+
el?: NSVElement;
|
|
62
|
+
constructor();
|
|
63
|
+
appendChild(el: NSVNode): void;
|
|
64
|
+
removeChild(el: NSVNode): void;
|
|
65
|
+
insertBefore(el: NSVNode, anchor?: NSVNode | null): void;
|
|
66
|
+
}
|