nativescript-web-adapter 0.1.1 → 0.1.3

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.
Files changed (88) hide show
  1. package/README.md +220 -168
  2. package/core/components/AbsoluteLayout.vue +11 -0
  3. package/core/components/ActionBar.vue +11 -0
  4. package/core/components/ActionItem.vue +11 -0
  5. package/core/components/ActivityIndicator.vue +15 -0
  6. package/core/components/Button.vue +41 -0
  7. package/core/components/DatePicker.vue +27 -0
  8. package/core/components/DockLayout.vue +23 -0
  9. package/core/components/FlexboxLayout.vue +11 -0
  10. package/core/components/Frame.vue +11 -0
  11. package/core/components/GridLayout.vue +85 -0
  12. package/core/components/HtmlView.vue +13 -0
  13. package/core/components/Image.vue +12 -0
  14. package/core/components/ImageCacheIt.vue +12 -0
  15. package/core/components/Label.vue +15 -0
  16. package/core/components/ListPicker.vue +21 -0
  17. package/core/components/ListView.vue +12 -0
  18. package/core/components/NavigationButton.vue +28 -0
  19. package/core/components/Page.vue +18 -0
  20. package/core/components/Placeholder.vue +11 -0
  21. package/core/components/Progress.vue +12 -0
  22. package/core/components/RootLayout.vue +11 -0
  23. package/core/components/ScrollView.vue +11 -0
  24. package/core/components/SearchBar.vue +22 -0
  25. package/core/components/SegmentedBar.vue +50 -0
  26. package/core/components/SegmentedBarItem.vue +21 -0
  27. package/core/components/Slider.vue +18 -0
  28. package/core/components/StackLayout.vue +11 -0
  29. package/core/components/Switch.vue +26 -0
  30. package/core/components/TabView.vue +48 -0
  31. package/core/components/TabViewItem.vue +27 -0
  32. package/core/components/TextField.vue +15 -0
  33. package/core/components/TextView.vue +18 -0
  34. package/core/components/TimePicker.vue +21 -0
  35. package/core/components/WebView.vue +13 -0
  36. package/core/components/WrapLayout.vue +11 -0
  37. package/core/components/index.js +3 -0
  38. package/core/components/index.ts +35 -0
  39. package/core/composables/dialogs.ts +31 -0
  40. package/core/composables/index.js +3 -0
  41. package/core/composables/index.ts +4 -0
  42. package/core/composables/useActionBar.js +7 -0
  43. package/core/composables/useActionBar.ts +19 -0
  44. package/core/composables/useFrame.js +8 -0
  45. package/core/composables/useFrame.ts +25 -0
  46. package/core/composables/usePage.js +8 -0
  47. package/core/composables/usePage.ts +25 -0
  48. package/core/env.d.ts +7 -0
  49. package/core/index.js +4 -0
  50. package/core/index.ts +85 -0
  51. package/core/types.ts +12 -0
  52. package/dist/nativescript-web-adapter.es.js +83 -0
  53. package/dist/nativescript-web-adapter.umd.js +1 -0
  54. package/dist/style.css +1 -0
  55. package/package.json +34 -46
  56. package/tools/cli.cjs +45 -0
  57. package/tools/create-web-platform.cjs +76 -0
  58. package/tools/create-web-platform.js +196 -0
  59. package/tools/modules/appPatch.cjs +27 -0
  60. package/tools/modules/copy.cjs +84 -0
  61. package/tools/modules/router.cjs +46 -0
  62. package/tools/modules/templates.cjs +130 -0
  63. package/tools/modules/transform.cjs +93 -0
  64. package/dist/core.cjs +0 -3
  65. package/dist/core.cjs.map +0 -1
  66. package/dist/core.js +0 -2
  67. package/dist/core.js.map +0 -1
  68. package/dist/index.cjs +0 -240
  69. package/dist/index.cjs.map +0 -1
  70. package/dist/index.js +0 -229
  71. package/dist/index.js.map +0 -1
  72. package/dist/types/core/index.d.ts +0 -8
  73. package/dist/types/index.d.ts +0 -1
  74. package/dist/types/vue/components/ActionBar.d.ts +0 -5
  75. package/dist/types/vue/components/Button.d.ts +0 -26
  76. package/dist/types/vue/components/FlexboxLayout.d.ts +0 -35
  77. package/dist/types/vue/components/Frame.d.ts +0 -3
  78. package/dist/types/vue/components/GridLayout.d.ts +0 -27
  79. package/dist/types/vue/components/ImageCacheIt.d.ts +0 -23
  80. package/dist/types/vue/components/Label.d.ts +0 -26
  81. package/dist/types/vue/components/Page.d.ts +0 -5
  82. package/dist/types/vue/components/StackLayout.d.ts +0 -5
  83. package/dist/types/vue/index.d.ts +0 -12
  84. package/dist/types/vue.d.ts +0 -169
  85. package/dist/vue.cjs +0 -240
  86. package/dist/vue.cjs.map +0 -1
  87. package/dist/vue.js +0 -229
  88. package/dist/vue.js.map +0 -1
@@ -1,169 +0,0 @@
1
- import * as vue from 'vue';
2
- import { VNode, Plugin } from 'vue';
3
-
4
- declare const Label: vue.DefineComponent<vue.ExtractPropTypes<{
5
- text: {
6
- type: StringConstructor;
7
- default: string;
8
- };
9
- horizontalAlignment: {
10
- type: StringConstructor;
11
- default: any;
12
- };
13
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
14
- [key: string]: any;
15
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
16
- text: {
17
- type: StringConstructor;
18
- default: string;
19
- };
20
- horizontalAlignment: {
21
- type: StringConstructor;
22
- default: any;
23
- };
24
- }>> & Readonly<{
25
- onTap?: (...args: any[]) => any;
26
- }>, {
27
- text: string;
28
- horizontalAlignment: string;
29
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
30
-
31
- declare const Button: vue.DefineComponent<vue.ExtractPropTypes<{
32
- text: {
33
- type: StringConstructor;
34
- default: string;
35
- };
36
- horizontalAlignment: {
37
- type: StringConstructor;
38
- default: any;
39
- };
40
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
41
- [key: string]: any;
42
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
43
- text: {
44
- type: StringConstructor;
45
- default: string;
46
- };
47
- horizontalAlignment: {
48
- type: StringConstructor;
49
- default: any;
50
- };
51
- }>> & Readonly<{
52
- onTap?: (...args: any[]) => any;
53
- }>, {
54
- text: string;
55
- horizontalAlignment: string;
56
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
57
-
58
- declare const StackLayout: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
59
- [key: string]: any;
60
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<{}> & Readonly<{
61
- onTap?: (...args: any[]) => any;
62
- }>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
63
-
64
- declare const FlexboxLayout: vue.DefineComponent<vue.ExtractPropTypes<{
65
- flexDirection: {
66
- type: StringConstructor;
67
- default: string;
68
- };
69
- justifyContent: {
70
- type: StringConstructor;
71
- default: string;
72
- };
73
- alignItems: {
74
- type: StringConstructor;
75
- default: string;
76
- };
77
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
78
- [key: string]: any;
79
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
80
- flexDirection: {
81
- type: StringConstructor;
82
- default: string;
83
- };
84
- justifyContent: {
85
- type: StringConstructor;
86
- default: string;
87
- };
88
- alignItems: {
89
- type: StringConstructor;
90
- default: string;
91
- };
92
- }>> & Readonly<{
93
- onTap?: (...args: any[]) => any;
94
- }>, {
95
- flexDirection: string;
96
- justifyContent: string;
97
- alignItems: string;
98
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
99
-
100
- declare const GridLayout: vue.DefineComponent<vue.ExtractPropTypes<{
101
- rows: {
102
- type: StringConstructor;
103
- default: any;
104
- };
105
- columns: {
106
- type: StringConstructor;
107
- default: any;
108
- };
109
- }>, () => VNode<vue.RendererNode, vue.RendererElement, {
110
- [key: string]: any;
111
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
112
- rows: {
113
- type: StringConstructor;
114
- default: any;
115
- };
116
- columns: {
117
- type: StringConstructor;
118
- default: any;
119
- };
120
- }>> & Readonly<{
121
- onTap?: (...args: any[]) => any;
122
- }>, {
123
- rows: string;
124
- columns: string;
125
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
126
-
127
- declare const Page: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
128
- [key: string]: any;
129
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<{}> & Readonly<{
130
- onTap?: (...args: any[]) => any;
131
- }>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
132
-
133
- declare const Frame: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
134
- [key: string]: any;
135
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
136
-
137
- declare const ActionBar: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
138
- [key: string]: any;
139
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "tap"[], "tap", vue.PublicProps, Readonly<{}> & Readonly<{
140
- onTap?: (...args: any[]) => any;
141
- }>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
142
-
143
- declare const ImageCacheIt: vue.DefineComponent<vue.ExtractPropTypes<{
144
- src: {
145
- type: StringConstructor;
146
- required: true;
147
- };
148
- stretch: {
149
- type: StringConstructor;
150
- default: string;
151
- };
152
- }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
153
- [key: string]: any;
154
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
155
- src: {
156
- type: StringConstructor;
157
- required: true;
158
- };
159
- stretch: {
160
- type: StringConstructor;
161
- default: string;
162
- };
163
- }>> & Readonly<{}>, {
164
- stretch: string;
165
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
166
-
167
- declare const NativeScriptWebPlugin: Plugin;
168
-
169
- export { ActionBar, Button, FlexboxLayout, Frame, GridLayout, ImageCacheIt, Label, NativeScriptWebPlugin, Page, StackLayout };
package/dist/vue.cjs DELETED
@@ -1,240 +0,0 @@
1
- 'use strict';
2
-
3
- var vue = require('vue');
4
-
5
- const Label = vue.defineComponent({
6
- name: 'NSLabel',
7
- props: {
8
- text: { type: String, default: '' },
9
- horizontalAlignment: { type: String, default: undefined }
10
- },
11
- emits: ['tap'],
12
- setup(props, { slots, attrs, emit }) {
13
- var _a;
14
- const style = {};
15
- if (props.horizontalAlignment) {
16
- const map = { center: 'center', left: 'left', right: 'right' };
17
- style.textAlign = (_a = map[String(props.horizontalAlignment).toLowerCase()]) !== null && _a !== void 0 ? _a : undefined;
18
- }
19
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
20
- return () => vue.h('span', { style, onClick, ...attrs }, slots.default ? slots.default() : props.text);
21
- }
22
- });
23
-
24
- const Button = vue.defineComponent({
25
- name: 'NSButton',
26
- props: {
27
- text: { type: String, default: '' },
28
- horizontalAlignment: { type: String, default: undefined }
29
- },
30
- emits: ['tap'],
31
- setup(props, { emit, slots, attrs }) {
32
- var _a;
33
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
34
- const style = {};
35
- if (props.horizontalAlignment) {
36
- const map = {
37
- center: 'center',
38
- left: 'start',
39
- right: 'end',
40
- stretch: 'stretch'
41
- };
42
- style.justifySelf = (_a = map[String(props.horizontalAlignment).toLowerCase()]) !== null && _a !== void 0 ? _a : undefined;
43
- }
44
- return () => vue.h('button', { onClick, style, ...attrs }, slots.default ? slots.default() : props.text);
45
- }
46
- });
47
-
48
- const StackLayout = vue.defineComponent({
49
- name: 'NSStackLayout',
50
- emits: ['tap'],
51
- setup(_, { slots, attrs, emit }) {
52
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
53
- return () => { var _a; return vue.h('div', { style: { display: 'flex', flexDirection: 'column' }, onClick, ...attrs }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
54
- }
55
- });
56
-
57
- const FlexboxLayout = vue.defineComponent({
58
- name: 'NSFlexboxLayout',
59
- props: {
60
- flexDirection: { type: String, default: 'row' },
61
- justifyContent: { type: String, default: 'flex-start' },
62
- alignItems: { type: String, default: 'stretch' }
63
- },
64
- emits: ['tap'],
65
- setup(props, { slots, attrs, emit }) {
66
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
67
- return () => { var _a; return vue.h('div', { style: { display: 'flex', flexDirection: props.flexDirection, justifyContent: props.justifyContent, alignItems: props.alignItems }, onClick, ...attrs }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
68
- }
69
- });
70
-
71
- function parseTracks(tracks) {
72
- if (!tracks)
73
- return undefined;
74
- return tracks.split(',').map(s => s.trim()).map(t => {
75
- if (t === '*' || t === 'auto')
76
- return t === '*' ? '1fr' : 'auto';
77
- if (/^\d+$/.test(t))
78
- return `${t}px`;
79
- return t;
80
- }).join(' ');
81
- }
82
- const GridLayout = vue.defineComponent({
83
- name: 'NSGridLayout',
84
- props: {
85
- rows: { type: String, default: undefined },
86
- columns: { type: String, default: undefined }
87
- },
88
- emits: ['tap'],
89
- setup(props, { slots, attrs, emit }) {
90
- var _a, _b;
91
- const containerStyle = {
92
- display: 'grid',
93
- // NS 默认一列:确保子项按行堆叠,而不是同一行多列并排
94
- gridTemplateColumns: (_a = parseTracks(props.columns)) !== null && _a !== void 0 ? _a : '1fr',
95
- // 行可选;若未指定,默认自适应内容
96
- gridTemplateRows: (_b = parseTracks(props.rows)) !== null && _b !== void 0 ? _b : undefined,
97
- // 以“按行”自动布局,默认逐行堆叠
98
- gridAutoFlow: 'row',
99
- width: '100%',
100
- height: '100%'
101
- };
102
- const mapChild = (child) => {
103
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
104
- if (!vue.isVNode(child))
105
- return child;
106
- const cprops = { ...(child.props || {}) };
107
- const style = { ...(cprops.style || {}) };
108
- // Row/Column placement: NativeScript uses 0-based indices; CSS Grid is 1-based
109
- const row = (_a = cprops.row) !== null && _a !== void 0 ? _a : cprops['row'];
110
- const col = (_c = (_b = cprops.col) !== null && _b !== void 0 ? _b : cprops['col']) !== null && _c !== void 0 ? _c : cprops.column;
111
- if (row != null) {
112
- const r = Number(row);
113
- if (!isNaN(r))
114
- style.gridRowStart = r + 1;
115
- }
116
- if (col != null) {
117
- const c = Number(col);
118
- if (!isNaN(c))
119
- style.gridColumnStart = c + 1;
120
- }
121
- else {
122
- // 未声明列时,强制放在第 1 列,避免隐式多列导致并排
123
- style.gridColumnStart = 1;
124
- }
125
- // Horizontal alignment mapping
126
- const ha = (_d = cprops.horizontalAlignment) !== null && _d !== void 0 ? _d : cprops['horizontalAlignment'];
127
- if (ha) {
128
- const map = {
129
- center: 'center',
130
- left: 'start',
131
- right: 'end',
132
- stretch: 'stretch'
133
- };
134
- style.justifySelf = (_e = map[String(ha).toLowerCase()]) !== null && _e !== void 0 ? _e : style.justifySelf;
135
- }
136
- // Vertical alignment mapping
137
- const va = (_f = cprops.verticalAlignment) !== null && _f !== void 0 ? _f : cprops['verticalAlignment'];
138
- if (va) {
139
- const map = {
140
- center: 'center',
141
- top: 'start',
142
- bottom: 'end',
143
- stretch: 'stretch'
144
- };
145
- style.alignSelf = (_g = map[String(va).toLowerCase()]) !== null && _g !== void 0 ? _g : style.alignSelf;
146
- }
147
- // Row/Column span mapping
148
- const rowSpan = (_h = cprops.rowSpan) !== null && _h !== void 0 ? _h : cprops['rowSpan'];
149
- if (rowSpan != null) {
150
- const rs = Number(rowSpan);
151
- if (!isNaN(rs) && rs > 1)
152
- style.gridRowEnd = `span ${rs}`;
153
- }
154
- const colSpan = (_j = cprops.colSpan) !== null && _j !== void 0 ? _j : cprops['colSpan'];
155
- if (colSpan != null) {
156
- const cs = Number(colSpan);
157
- if (!isNaN(cs) && cs > 1)
158
- style.gridColumnEnd = `span ${cs}`;
159
- }
160
- cprops.style = style;
161
- return vue.h(child.type, cprops, child.children);
162
- };
163
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
164
- return () => {
165
- var _a, _b;
166
- const children = (_b = (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)) !== null && _b !== void 0 ? _b : [];
167
- const mapped = children.map(mapChild);
168
- return vue.h('div', { style: containerStyle, onClick, ...attrs }, mapped);
169
- };
170
- }
171
- });
172
-
173
- const Page = vue.defineComponent({
174
- name: 'NSPage',
175
- emits: ['tap'],
176
- setup(_, { slots, attrs, emit }) {
177
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
178
- return () => { var _a; return vue.h('main', { onClick, ...attrs }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
179
- }
180
- });
181
-
182
- const Frame = vue.defineComponent({
183
- name: 'NSFrame',
184
- setup(_, { slots, attrs }) {
185
- return () => { var _a; return vue.h('div', { ...attrs }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
186
- }
187
- });
188
-
189
- const ActionBar = vue.defineComponent({
190
- name: 'NSActionBar',
191
- emits: ['tap'],
192
- setup(_, { slots, attrs, emit }) {
193
- const onClick = (e) => emit('tap', { eventName: 'tap', object: e.currentTarget });
194
- return () => { var _a; return vue.h('header', { onClick, ...attrs }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };
195
- }
196
- });
197
-
198
- const ImageCacheIt = vue.defineComponent({
199
- name: 'ImageCacheIt',
200
- props: {
201
- src: { type: String, required: true },
202
- stretch: { type: String, default: 'aspectFill' }
203
- },
204
- setup(props, { attrs }) {
205
- const style = { width: '100%', display: 'block', objectPosition: 'center' };
206
- if (props.stretch === 'aspectFill') {
207
- style.objectFit = 'cover';
208
- }
209
- else if (props.stretch === 'aspectFit') {
210
- style.objectFit = 'contain';
211
- }
212
- return () => vue.h('img', { src: props.src, style, ...attrs });
213
- }
214
- });
215
-
216
- const NativeScriptWebPlugin = {
217
- install(app) {
218
- app.component('Label', Label);
219
- app.component('Button', Button);
220
- app.component('StackLayout', StackLayout);
221
- app.component('FlexboxLayout', FlexboxLayout);
222
- app.component('GridLayout', GridLayout);
223
- app.component('Page', Page);
224
- app.component('Frame', Frame);
225
- app.component('ActionBar', ActionBar);
226
- app.component('ImageCacheIt', ImageCacheIt);
227
- }
228
- };
229
-
230
- exports.ActionBar = ActionBar;
231
- exports.Button = Button;
232
- exports.FlexboxLayout = FlexboxLayout;
233
- exports.Frame = Frame;
234
- exports.GridLayout = GridLayout;
235
- exports.ImageCacheIt = ImageCacheIt;
236
- exports.Label = Label;
237
- exports.NativeScriptWebPlugin = NativeScriptWebPlugin;
238
- exports.Page = Page;
239
- exports.StackLayout = StackLayout;
240
- //# sourceMappingURL=vue.cjs.map
package/dist/vue.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"vue.cjs","sources":["../../src/vue/components/Label.ts","../../src/vue/components/Button.ts","../../src/vue/components/StackLayout.ts","../../src/vue/components/FlexboxLayout.ts","../../src/vue/components/GridLayout.ts","../../src/vue/components/Page.ts","../../src/vue/components/Frame.ts","../../src/vue/components/ActionBar.ts","../../src/vue/components/ImageCacheIt.ts","../../src/vue/index.ts"],"sourcesContent":["import { defineComponent, h } from 'vue';\n\nexport const Label = defineComponent({\n name: 'NSLabel',\n props: {\n text: { type: String, default: '' },\n horizontalAlignment: { type: String, default: undefined }\n },\n emits: ['tap'],\n setup(props, { slots, attrs, emit }) {\n const style: Record<string, any> = {};\n if (props.horizontalAlignment) {\n const map: Record<string, string> = { center: 'center', left: 'left', right: 'right' };\n style.textAlign = map[String(props.horizontalAlignment).toLowerCase()] ?? undefined;\n }\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n return () => h('span', { style, onClick, ...attrs }, slots.default ? slots.default() : props.text);\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const Button = defineComponent({\n name: 'NSButton',\n props: {\n text: { type: String, default: '' },\n horizontalAlignment: { type: String, default: undefined }\n },\n emits: ['tap'],\n setup(props, { emit, slots, attrs }) {\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n const style: Record<string, any> = {};\n if (props.horizontalAlignment) {\n const map: Record<string, string> = {\n center: 'center',\n left: 'start',\n right: 'end',\n stretch: 'stretch'\n };\n style.justifySelf = map[String(props.horizontalAlignment).toLowerCase()] ?? undefined;\n }\n return () => h('button', { onClick, style, ...attrs }, slots.default ? slots.default() : props.text);\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const StackLayout = defineComponent({\n name: 'NSStackLayout',\n emits: ['tap'],\n setup(_, { slots, attrs, emit }) {\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n return () => h('div', { style: { display: 'flex', flexDirection: 'column' }, onClick, ...attrs }, slots.default?.());\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const FlexboxLayout = defineComponent({\n name: 'NSFlexboxLayout',\n props: {\n flexDirection: { type: String, default: 'row' },\n justifyContent: { type: String, default: 'flex-start' },\n alignItems: { type: String, default: 'stretch' }\n },\n emits: ['tap'],\n setup(props, { slots, attrs, emit }) {\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n return () => h('div', { style: { display: 'flex', flexDirection: props.flexDirection, justifyContent: props.justifyContent, alignItems: props.alignItems }, onClick, ...attrs }, slots.default?.());\n }\n});","import { defineComponent, h, VNode, isVNode } from 'vue';\n\nfunction parseTracks(tracks?: string) {\n if (!tracks) return undefined;\n return tracks.split(',').map(s => s.trim()).map(t => {\n if (t === '*' || t === 'auto') return t === '*' ? '1fr' : 'auto';\n if (/^\\d+$/.test(t)) return `${t}px`;\n return t;\n }).join(' ');\n}\n\nexport const GridLayout = defineComponent({\n name: 'NSGridLayout',\n props: {\n rows: { type: String, default: undefined },\n columns: { type: String, default: undefined }\n },\n emits: ['tap'],\n setup(props, { slots, attrs, emit }) {\n const containerStyle: Record<string, any> = {\n display: 'grid',\n // NS 默认一列:确保子项按行堆叠,而不是同一行多列并排\n gridTemplateColumns: parseTracks(props.columns) ?? '1fr',\n // 行可选;若未指定,默认自适应内容\n gridTemplateRows: parseTracks(props.rows) ?? undefined,\n // 以“按行”自动布局,默认逐行堆叠\n gridAutoFlow: 'row',\n width: '100%',\n height: '100%'\n };\n const mapChild = (child: VNode): VNode => {\n if (!isVNode(child)) return child as any;\n const cprops: any = { ...(child.props || {}) };\n const style: Record<string, any> = { ...(cprops.style || {}) };\n\n // Row/Column placement: NativeScript uses 0-based indices; CSS Grid is 1-based\n const row = cprops.row ?? cprops['row'];\n const col = cprops.col ?? cprops['col'] ?? cprops.column;\n if (row != null) {\n const r = Number(row);\n if (!isNaN(r)) style.gridRowStart = r + 1;\n }\n if (col != null) {\n const c = Number(col);\n if (!isNaN(c)) style.gridColumnStart = c + 1;\n } else {\n // 未声明列时,强制放在第 1 列,避免隐式多列导致并排\n style.gridColumnStart = 1;\n }\n\n // Horizontal alignment mapping\n const ha = cprops.horizontalAlignment ?? cprops['horizontalAlignment'];\n if (ha) {\n const map: Record<string, string> = {\n center: 'center',\n left: 'start',\n right: 'end',\n stretch: 'stretch'\n };\n style.justifySelf = map[String(ha).toLowerCase()] ?? style.justifySelf;\n }\n\n // Vertical alignment mapping\n const va = cprops.verticalAlignment ?? cprops['verticalAlignment'];\n if (va) {\n const map: Record<string, string> = {\n center: 'center',\n top: 'start',\n bottom: 'end',\n stretch: 'stretch'\n };\n style.alignSelf = map[String(va).toLowerCase()] ?? style.alignSelf;\n }\n\n // Row/Column span mapping\n const rowSpan = cprops.rowSpan ?? cprops['rowSpan'];\n if (rowSpan != null) {\n const rs = Number(rowSpan);\n if (!isNaN(rs) && rs > 1) style.gridRowEnd = `span ${rs}`;\n }\n const colSpan = cprops.colSpan ?? cprops['colSpan'];\n if (colSpan != null) {\n const cs = Number(colSpan);\n if (!isNaN(cs) && cs > 1) style.gridColumnEnd = `span ${cs}`;\n }\n\n cprops.style = style;\n return h(child.type as any, cprops, child.children as any);\n };\n\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n return () => {\n const children = slots.default?.() ?? [];\n const mapped = children.map(mapChild);\n return h('div', { style: containerStyle, onClick, ...attrs }, mapped);\n };\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const Page = defineComponent({\n name: 'NSPage',\n emits: ['tap'],\n setup(_, { slots, attrs, emit }) {\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n return () => h('main', { onClick, ...attrs }, slots.default?.());\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const Frame = defineComponent({\n name: 'NSFrame',\n setup(_, { slots, attrs }) {\n return () => h('div', { ...attrs }, slots.default?.());\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const ActionBar = defineComponent({\n name: 'NSActionBar',\n emits: ['tap'],\n setup(_, { slots, attrs, emit }) {\n const onClick = (e: MouseEvent) => emit('tap', { eventName: 'tap', object: e.currentTarget });\n return () => h('header', { onClick, ...attrs }, slots.default?.());\n }\n});","import { defineComponent, h } from 'vue';\n\nexport const ImageCacheIt = defineComponent({\n name: 'ImageCacheIt',\n props: {\n src: { type: String, required: true },\n stretch: { type: String, default: 'aspectFill' }\n },\n setup(props, { attrs }) {\n const style: Record<string, any> = { width: '100%', display: 'block', objectPosition: 'center' };\n if (props.stretch === 'aspectFill') {\n style.objectFit = 'cover';\n } else if (props.stretch === 'aspectFit') {\n style.objectFit = 'contain';\n }\n return () => h('img', { src: props.src, style, ...attrs });\n }\n});","import type { App, Plugin } from 'vue';\nimport { Label } from './components/Label';\nimport { Button } from './components/Button';\nimport { StackLayout } from './components/StackLayout';\nimport { FlexboxLayout } from './components/FlexboxLayout';\nimport { GridLayout } from './components/GridLayout';\nimport { Page } from './components/Page';\nimport { Frame } from './components/Frame';\nimport { ActionBar } from './components/ActionBar';\nimport { ImageCacheIt } from './components/ImageCacheIt';\n\nexport const NativeScriptWebPlugin: Plugin = {\n install(app: App) {\n app.component('Label', Label);\n app.component('Button', Button);\n app.component('StackLayout', StackLayout);\n app.component('FlexboxLayout', FlexboxLayout);\n app.component('GridLayout', GridLayout);\n app.component('Page', Page);\n app.component('Frame', Frame);\n app.component('ActionBar', ActionBar);\n app.component('ImageCacheIt', ImageCacheIt);\n }\n};\n\nexport { Label, Button, StackLayout, FlexboxLayout, GridLayout, Page, Frame, ActionBar, ImageCacheIt };"],"names":["defineComponent","h","isVNode"],"mappings":"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"}