ember-native 2.0.0 → 2.1.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/declarations/components/ListView.d.ts +2 -0
- package/declarations/components/RadListView.d.ts +2 -0
- package/dist/components/ListView.js +10 -1
- package/dist/components/ListView.js.map +1 -1
- package/dist/components/RadListView.js +7 -1
- package/dist/components/RadListView.js.map +1 -1
- package/dist/dom/setup-registry.js +26 -19
- package/dist/dom/setup-registry.js.map +1 -1
- package/package.json +7 -7
- package/types/ember.d.ts +1 -1
|
@@ -5,6 +5,7 @@ interface ListViewInterface<T> {
|
|
|
5
5
|
Element: NativeElementNode<NativeListView>;
|
|
6
6
|
Args: {
|
|
7
7
|
items: T[];
|
|
8
|
+
key?: string;
|
|
8
9
|
};
|
|
9
10
|
Blocks: {
|
|
10
11
|
item: [T | null];
|
|
@@ -18,6 +19,7 @@ type Ref<T> = {
|
|
|
18
19
|
export default class ListView<T> extends Component<ListViewInterface<T>> {
|
|
19
20
|
elementRefs: Ref<T>[];
|
|
20
21
|
get items(): Ref<T>[];
|
|
22
|
+
get itemKey(): string;
|
|
21
23
|
cleanup(listView: NativeElementNode<NativeListView>): void;
|
|
22
24
|
setupListView: import("ember-modifier").FunctionBasedModifier<{
|
|
23
25
|
Args: {
|
|
@@ -11,6 +11,7 @@ interface RadListViewInterface<T> {
|
|
|
11
11
|
Element: NativeElementNode<NativeRadListView>;
|
|
12
12
|
Args: {
|
|
13
13
|
items: T[];
|
|
14
|
+
key?: string;
|
|
14
15
|
};
|
|
15
16
|
Blocks: {
|
|
16
17
|
header: [];
|
|
@@ -24,6 +25,7 @@ export default class RadListView<T = any> extends Component<RadListViewInterface
|
|
|
24
25
|
private headerElement;
|
|
25
26
|
private footerElement;
|
|
26
27
|
cleanup(listView: NativeElementNode<NativeRadListView>): void;
|
|
28
|
+
get itemKey(): string;
|
|
27
29
|
get items(): {
|
|
28
30
|
item: any;
|
|
29
31
|
element: any;
|
|
@@ -28,6 +28,9 @@ let ListView = (_class = (_ListView = class ListView extends Component {
|
|
|
28
28
|
listView.nativeView._getDefaultItemContent = _getDefaultItemContent;
|
|
29
29
|
listView.nativeView._prepareItem = (stackLayout, index) => {
|
|
30
30
|
const ref = listViewComponent.elementRefs.find(e => e.element.nativeView === stackLayout);
|
|
31
|
+
if (ref.index === index) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
31
34
|
ref.index = index;
|
|
32
35
|
listViewComponent.elementRefs = [...listViewComponent.elementRefs];
|
|
33
36
|
};
|
|
@@ -45,6 +48,12 @@ let ListView = (_class = (_ListView = class ListView extends Component {
|
|
|
45
48
|
};
|
|
46
49
|
});
|
|
47
50
|
}
|
|
51
|
+
get itemKey() {
|
|
52
|
+
if (this.args.key) {
|
|
53
|
+
return 'item.' + this.args.key;
|
|
54
|
+
}
|
|
55
|
+
return 'item';
|
|
56
|
+
}
|
|
48
57
|
cleanup(listView) {
|
|
49
58
|
for (const elementRef of this.elementRefs) {
|
|
50
59
|
const n = elementRef.element.nativeView.nativeViewProtected;
|
|
@@ -55,7 +64,7 @@ let ListView = (_class = (_ListView = class ListView extends Component {
|
|
|
55
64
|
}
|
|
56
65
|
this.elementRefs = this.elementRefs.filter(e => !!e.element.nativeView.nativeViewProtected?.getWindowToken());
|
|
57
66
|
}
|
|
58
|
-
}, setComponentTemplate(precompileTemplate("\n <list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#each this.items as |item|}}\n {{#in-element item.element}}\n {{yield item.item to=\"item\"}}\n {{/in-element}}\n {{/each}}\n ", {
|
|
67
|
+
}, setComponentTemplate(precompileTemplate("\n <list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#each this.items key=this.itemKey as |item|}}\n {{#in-element item.element}}\n {{yield item.item to=\"item\"}}\n {{/in-element}}\n {{/each}}\n ", {
|
|
59
68
|
strictMode: true
|
|
60
69
|
}), _ListView), _ListView), _descriptor = _applyDecoratedDescriptor(_class.prototype, "elementRefs", [tracked], {
|
|
61
70
|
configurable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.js","sources":["../../src/components/ListView.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { modifier } from 'ember-modifier';\nimport type {\n ListView as NativeListView,\n StackLayout,\n} from '@nativescript/core';\nimport { tracked } from '@glimmer/tracking';\nimport NativeElementNode from '../dom/native/NativeElementNode.ts';\nimport DocumentNode from '../dom/nodes/DocumentNode.ts';\n\ninterface ListViewInterface<T> {\n Element: NativeElementNode<NativeListView>;\n Args: {\n items: T[];\n };\n Blocks: {\n item: [T | null];\n };\n}\n\ntype Ref<T> = {\n index: number;\n item: T | null;\n element: NativeElementNode<any>;\n};\n\nexport default class ListView<T> extends Component<ListViewInterface<T>> {\n @tracked elementRefs: Ref<T>[] = [];\n\n get items(): Ref<T>[] {\n return this.elementRefs\n .filter((x) => x.index < this.args.items.length)\n .map(({ element, index }) => {\n return {\n index,\n item: this.args.items[index] || null,\n element,\n };\n });\n }\n\n cleanup(listView: NativeElementNode<NativeListView>) {\n for (const elementRef of this.elementRefs) {\n const n = elementRef.element.nativeView.nativeViewProtected;\n if (!n || !n.getWindowToken()) {\n elementRef.element.parentNode?.removeChild(elementRef.element);\n ((listView.nativeView as any)._realizedItems as any).delete(\n elementRef.element.nativeView,\n );\n }\n }\n this.elementRefs = this.elementRefs.filter(\n (e) => !!e.element.nativeView.nativeViewProtected?.getWindowToken(),\n ) as Ref<T>[];\n }\n\n setupListView = modifier(\n function setupListView(\n this: ListView<T>,\n listView: NativeElementNode<NativeListView>,\n ) {\n const listViewComponent = this;\n function _getDefaultItemContent(index: number) {\n listViewComponent.cleanup(listView);\n const sl = DocumentNode.createElement('stack-layout');\n listView.appendChild(sl);\n listViewComponent.elementRefs.push({\n element: sl,\n item: null,\n index,\n });\n listViewComponent.elementRefs = [...listViewComponent.elementRefs];\n return sl.nativeView;\n }\n (listView.nativeView as any)._getDefaultItemContent =\n _getDefaultItemContent;\n (listView.nativeView as any)._prepareItem = (\n stackLayout: StackLayout,\n index: number,\n ) => {\n const ref = listViewComponent.elementRefs.find(\n (e) => e.element.nativeView === stackLayout,\n )!;\n ref.index = index;\n listViewComponent.elementRefs = [...listViewComponent.elementRefs];\n };\n }.bind(this),\n );\n\n <template>\n <list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#each this.items as |item|}}\n {{#in-element item.element}}\n {{yield item.item to='item'}}\n {{/in-element}}\n {{/each}}\n </template>\n}\n"],"names":["ListView","_class","_ListView","Component","constructor","args","_initializerDefineProperty","_descriptor","_defineProperty","modifier","setupListView","listView","listViewComponent","_getDefaultItemContent","index","cleanup","sl","DocumentNode","createElement","appendChild","elementRefs","push","element","item","nativeView","_prepareItem","stackLayout","ref","find","e","bind","items","filter","x","length","map","elementRef","n","nativeViewProtected","getWindowToken","parentNode","removeChild","_realizedItems","delete","setComponentTemplate","template_fd9b2463e5f141cfb5666b64daa1f11a","strictMode","_applyDecoratedDescriptor","prototype","tracked"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ListView.js","sources":["../../src/components/ListView.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { modifier } from 'ember-modifier';\nimport type {\n ListView as NativeListView,\n StackLayout,\n} from '@nativescript/core';\nimport { tracked } from '@glimmer/tracking';\nimport NativeElementNode from '../dom/native/NativeElementNode.ts';\nimport DocumentNode from '../dom/nodes/DocumentNode.ts';\n\ninterface ListViewInterface<T> {\n Element: NativeElementNode<NativeListView>;\n Args: {\n items: T[];\n key?: string;\n };\n Blocks: {\n item: [T | null];\n };\n}\n\ntype Ref<T> = {\n index: number;\n item: T | null;\n element: NativeElementNode<any>;\n};\n\nexport default class ListView<T> extends Component<ListViewInterface<T>> {\n @tracked elementRefs: Ref<T>[] = [];\n\n get items(): Ref<T>[] {\n return this.elementRefs\n .filter((x) => x.index < this.args.items.length)\n .map(({ element, index }) => {\n return {\n index,\n item: this.args.items[index] || null,\n element,\n };\n });\n }\n\n get itemKey() {\n if (this.args.key) {\n return 'item.' + this.args.key;\n }\n return 'item';\n }\n\n cleanup(listView: NativeElementNode<NativeListView>) {\n for (const elementRef of this.elementRefs) {\n const n = elementRef.element.nativeView.nativeViewProtected;\n if (!n || !n.getWindowToken()) {\n elementRef.element.parentNode?.removeChild(elementRef.element);\n ((listView.nativeView as any)._realizedItems as any).delete(\n elementRef.element.nativeView,\n );\n }\n }\n this.elementRefs = this.elementRefs.filter(\n (e) => !!e.element.nativeView.nativeViewProtected?.getWindowToken(),\n ) as Ref<T>[];\n }\n\n setupListView = modifier(\n function setupListView(\n this: ListView<T>,\n listView: NativeElementNode<NativeListView>,\n ) {\n const listViewComponent = this;\n function _getDefaultItemContent(index: number) {\n listViewComponent.cleanup(listView);\n const sl = DocumentNode.createElement('stack-layout');\n listView.appendChild(sl);\n listViewComponent.elementRefs.push({\n element: sl,\n item: null,\n index,\n });\n listViewComponent.elementRefs = [...listViewComponent.elementRefs];\n return sl.nativeView;\n }\n (listView.nativeView as any)._getDefaultItemContent =\n _getDefaultItemContent;\n (listView.nativeView as any)._prepareItem = (\n stackLayout: StackLayout,\n index: number,\n ) => {\n const ref = listViewComponent.elementRefs.find(\n (e) => e.element.nativeView === stackLayout,\n )!;\n if (ref.index === index) {\n return;\n }\n ref.index = index;\n listViewComponent.elementRefs = [...listViewComponent.elementRefs];\n };\n }.bind(this),\n );\n\n <template>\n <list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#each this.items key=this.itemKey as |item|}}\n {{#in-element item.element}}\n {{yield item.item to='item'}}\n {{/in-element}}\n {{/each}}\n </template>\n}\n"],"names":["ListView","_class","_ListView","Component","constructor","args","_initializerDefineProperty","_descriptor","_defineProperty","modifier","setupListView","listView","listViewComponent","_getDefaultItemContent","index","cleanup","sl","DocumentNode","createElement","appendChild","elementRefs","push","element","item","nativeView","_prepareItem","stackLayout","ref","find","e","bind","items","filter","x","length","map","itemKey","key","elementRef","n","nativeViewProtected","getWindowToken","parentNode","removeChild","_realizedItems","delete","setComponentTemplate","template_fd9b2463e5f141cfb5666b64daa1f11a","strictMode","_applyDecoratedDescriptor","prototype","tracked"],"mappings":"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"}
|
|
@@ -97,6 +97,12 @@ let RadListView = (_class2 = (_RadListView = class RadListView extends Component
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
+
get itemKey() {
|
|
101
|
+
if (this.args.key) {
|
|
102
|
+
return 'item.' + this.args.key;
|
|
103
|
+
}
|
|
104
|
+
return 'item';
|
|
105
|
+
}
|
|
100
106
|
get items() {
|
|
101
107
|
return [...this.elementRefs.entries()].map(([element, item]) => {
|
|
102
108
|
return {
|
|
@@ -105,7 +111,7 @@ let RadListView = (_class2 = (_RadListView = class RadListView extends Component
|
|
|
105
111
|
};
|
|
106
112
|
});
|
|
107
113
|
}
|
|
108
|
-
}, setComponentTemplate(precompileTemplate("\n <rad-list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#if this.listView}}\n {{#if (has-block \"header\")}}\n {{this.setupHeader}}\n {{#in-element this.headerElement}}\n {{yield to=\"header\"}}\n {{/in-element}}\n {{/if}}\n {{#each this.items as |item|}}\n {{#in-element item.element}}\n {{yield item.item to=\"item\"}}\n {{/in-element}}\n {{/each}}\n {{#if (has-block \"footer\")}}\n {{this.setupFooter}}\n {{#in-element this.footerElement}}\n {{yield to=\"footer\"}}\n {{/in-element}}\n {{/if}}\n {{/if}}\n ", {
|
|
114
|
+
}, setComponentTemplate(precompileTemplate("\n <rad-list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#if this.listView}}\n {{#if (has-block \"header\")}}\n {{this.setupHeader}}\n {{#in-element this.headerElement}}\n {{yield to=\"header\"}}\n {{/in-element}}\n {{/if}}\n {{#each this.items key=this.itemKey as |item|}}\n {{#in-element item.element}}\n {{yield item.item to=\"item\"}}\n {{/in-element}}\n {{/each}}\n {{#if (has-block \"footer\")}}\n {{this.setupFooter}}\n {{#in-element this.footerElement}}\n {{yield to=\"footer\"}}\n {{/in-element}}\n {{/if}}\n {{/if}}\n ", {
|
|
109
115
|
strictMode: true
|
|
110
116
|
}), _RadListView), _RadListView), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "listView", [tracked], {
|
|
111
117
|
configurable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadListView.js","sources":["../../src/components/RadListView.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { modifier } from 'ember-modifier';\nimport { tracked } from '@glimmer/tracking';\nimport {\n RadListView as NativeRadListView,\n ListViewViewType,\n} from 'nativescript-ui-listview';\nimport NativeElementNode from '../dom/native/NativeElementNode.ts';\nimport DocumentNode from '../dom/nodes/DocumentNode.ts';\nimport type { StackLayout } from '@nativescript/core';\n\nclass TrackedMap extends Map<any, any> {\n @tracked counter = 0;\n set(key: any, value: any): this {\n this.counter += 1;\n super.set(key, value);\n return this;\n }\n\n get(key: any): any {\n if (this.counter === 0) return null;\n return super.get(key);\n }\n\n entries(): any {\n if (this.counter === 0) return super.entries();\n return super.entries();\n }\n}\n\ninterface RadListViewInterface<T> {\n Element: NativeElementNode<NativeRadListView>;\n Args: {\n items: T[];\n };\n Blocks: {\n header: [];\n footer: [];\n item: [T];\n };\n}\n\nexport default class RadListView<T = any> extends Component<\n RadListViewInterface<T>\n> {\n elementRefs: TrackedMap = new TrackedMap();\n @tracked private listView: NativeElementNode<NativeRadListView> | undefined;\n private declare headerElement: NativeElementNode<StackLayout>;\n private declare footerElement: NativeElementNode<StackLayout>;\n\n cleanup(listView: NativeElementNode<NativeRadListView>) {\n for (const [element] of [...this.elementRefs.entries()]) {\n const n = element.nativeView.nativeViewProtected;\n if (!n || !n.getWindowToken()) {\n this.elementRefs.delete(element);\n const idx = listView.childNodes.findIndex((c) => c === element);\n if (idx >= 0) {\n listView.childNodes.splice(idx, 1);\n }\n }\n }\n }\n\n get items() {\n return [...this.elementRefs.entries()].map(([element, item]) => {\n return {\n item,\n element,\n };\n });\n }\n\n setupListView = modifier(\n function setupListView(\n this: RadListView,\n listView: NativeElementNode<NativeRadListView>,\n ) {\n this.listView = listView;\n listView.nativeView.on('itemRecyclingInternal', () => {\n this.cleanup(listView);\n });\n const listViewComponent = this;\n function _getDefaultItemContent() {\n const sl = DocumentNode.createElement('stack-layout');\n listView.appendChild(sl);\n Object.defineProperty(sl.nativeView, 'parent', {\n get() {\n return this._parent;\n },\n set(v: any) {\n this._parent = v;\n Object.defineProperty(v, 'bindingContext', {\n get() {\n return listViewComponent.elementRefs.get(sl);\n },\n set(v: any) {\n listViewComponent.elementRefs.set(sl, v);\n },\n });\n },\n });\n return sl.nativeView;\n }\n listView.nativeView.itemViewLoader = (type) => {\n switch (type) {\n case ListViewViewType.ItemView:\n return _getDefaultItemContent();\n case ListViewViewType.HeaderView:\n return this.headerElement.nativeView;\n case ListViewViewType.FooterView:\n return this.footerElement.nativeView;\n }\n return DocumentNode.createElement('stack-layout').nativeView;\n };\n }.bind(this),\n );\n\n setupHeader = () => {\n this.headerElement = DocumentNode.createElement('stack-layout');\n };\n\n setupFooter = () => {\n this.footerElement = DocumentNode.createElement('stack-layout');\n };\n\n <template>\n <rad-list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#if this.listView}}\n {{#if (has-block 'header')}}\n {{this.setupHeader}}\n {{#in-element this.headerElement}}\n {{yield to='header'}}\n {{/in-element}}\n {{/if}}\n {{#each this.items as |item|}}\n {{#in-element item.element}}\n {{yield item.item to='item'}}\n {{/in-element}}\n {{/each}}\n {{#if (has-block 'footer')}}\n {{this.setupFooter}}\n {{#in-element this.footerElement}}\n {{yield to='footer'}}\n {{/in-element}}\n {{/if}}\n {{/if}}\n </template>\n}\n"],"names":["TrackedMap","_class","Map","constructor","args","_initializerDefineProperty","_descriptor","set","key","value","counter","get","entries","_applyDecoratedDescriptor","prototype","tracked","RadListView","_class2","_RadListView","Component","_defineProperty","_descriptor2","modifier","setupListView","listView","nativeView","on","cleanup","listViewComponent","_getDefaultItemContent","sl","DocumentNode","createElement","appendChild","Object","defineProperty","_parent","v","elementRefs","itemViewLoader","type","ListViewViewType","ItemView","HeaderView","headerElement","FooterView","footerElement","bind","setupHeader","setupFooter","element","n","nativeViewProtected","getWindowToken","delete","idx","childNodes","findIndex","c","splice","items","map","item","setComponentTemplate","template_fd9b2463e5f141cfb5666b64daa1f11a","strictMode"],"mappings":";;;;;;;;;;AAQwD,IAGlDA,UAAmB,IAAAC,MAAA,GAAzB,MAAMD,UAAmB,SAAAE,GAAA,CAAY;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;AAAAC,IAAAA,0BAAA,kBAAAC,WAAA,EAAA,IAAA,CAAA;AAAA;AAEnCC,EAAAA,GAAAA,CAAIC,GAAQ,EAAEC,KAAU,EAAQ;IAC9B,IAAI,CAACC,OAAO,IAAI,CAAA;AAChB,IAAA,KAAK,CAACH,IAAIC,GAAK,EAAAC,KAAA,CAAA;AACf,IAAA,OAAO,IAAI;AACb;EAEAE,GAAAA,CAAIH,GAAQ,EAAO;AACjB,IAAA,IAAI,IAAI,CAACE,OAAO,KAAK,GAAG,OAAO,IAAA;AAC/B,IAAA,OAAO,KAAK,CAACC,GAAI,CAAAH,GAAA,CAAA;AACnB;AAEAI,EAAAA,OAAAA,GAAe;IACb,IAAI,IAAI,CAACF,OAAO,KAAK,CAAG,EAAA,OAAO,KAAK,CAACE,OAAA,EAAA;AACrC,IAAA,OAAO,KAAK,CAACA,OAAA,EAAA;AACf;AACF,CAAA,EAAAN,WAAA,GAAAO,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,EAAA,SAAA,EAAA,CAhBGC,OAAAA,CAAAA,EAAAA;EAAAA,YAAAA,EAAAA,IAAAA;EAAAA,UAAAA,EAAAA,IAAAA;EAAAA,QAAAA,EAAAA,IAAAA;AAAAA,EAAAA,WAAAA,cAAAA;AAAAA,IAAAA,OAAkB,CAAE;AAAA;AAAA,CAAA,CAAA,EAAAd,MAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"RadListView.js","sources":["../../src/components/RadListView.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { modifier } from 'ember-modifier';\nimport { tracked } from '@glimmer/tracking';\nimport {\n RadListView as NativeRadListView,\n ListViewViewType,\n} from 'nativescript-ui-listview';\nimport NativeElementNode from '../dom/native/NativeElementNode.ts';\nimport DocumentNode from '../dom/nodes/DocumentNode.ts';\nimport type { StackLayout } from '@nativescript/core';\n\nclass TrackedMap extends Map<any, any> {\n @tracked counter = 0;\n set(key: any, value: any): this {\n this.counter += 1;\n super.set(key, value);\n return this;\n }\n\n get(key: any): any {\n if (this.counter === 0) return null;\n return super.get(key);\n }\n\n entries(): any {\n if (this.counter === 0) return super.entries();\n return super.entries();\n }\n}\n\ninterface RadListViewInterface<T> {\n Element: NativeElementNode<NativeRadListView>;\n Args: {\n items: T[];\n key?: string;\n };\n Blocks: {\n header: [];\n footer: [];\n item: [T];\n };\n}\n\nexport default class RadListView<T = any> extends Component<\n RadListViewInterface<T>\n> {\n elementRefs: TrackedMap = new TrackedMap();\n @tracked private listView: NativeElementNode<NativeRadListView> | undefined;\n private declare headerElement: NativeElementNode<StackLayout>;\n private declare footerElement: NativeElementNode<StackLayout>;\n\n cleanup(listView: NativeElementNode<NativeRadListView>) {\n for (const [element] of [...this.elementRefs.entries()]) {\n const n = element.nativeView.nativeViewProtected;\n if (!n || !n.getWindowToken()) {\n this.elementRefs.delete(element);\n const idx = listView.childNodes.findIndex((c) => c === element);\n if (idx >= 0) {\n listView.childNodes.splice(idx, 1);\n }\n }\n }\n }\n\n get itemKey() {\n if (this.args.key) {\n return 'item.' + this.args.key;\n }\n return 'item';\n }\n\n get items() {\n return [...this.elementRefs.entries()].map(([element, item]) => {\n return {\n item,\n element,\n };\n });\n }\n\n setupListView = modifier(\n function setupListView(\n this: RadListView,\n listView: NativeElementNode<NativeRadListView>,\n ) {\n this.listView = listView;\n listView.nativeView.on('itemRecyclingInternal', () => {\n this.cleanup(listView);\n });\n const listViewComponent = this;\n function _getDefaultItemContent() {\n const sl = DocumentNode.createElement('stack-layout');\n listView.appendChild(sl);\n Object.defineProperty(sl.nativeView, 'parent', {\n get() {\n return this._parent;\n },\n set(v: any) {\n this._parent = v;\n Object.defineProperty(v, 'bindingContext', {\n get() {\n return listViewComponent.elementRefs.get(sl);\n },\n set(v: any) {\n listViewComponent.elementRefs.set(sl, v);\n },\n });\n },\n });\n return sl.nativeView;\n }\n listView.nativeView.itemViewLoader = (type) => {\n switch (type) {\n case ListViewViewType.ItemView:\n return _getDefaultItemContent();\n case ListViewViewType.HeaderView:\n return this.headerElement.nativeView;\n case ListViewViewType.FooterView:\n return this.footerElement.nativeView;\n }\n return DocumentNode.createElement('stack-layout').nativeView;\n };\n }.bind(this),\n );\n\n setupHeader = () => {\n this.headerElement = DocumentNode.createElement('stack-layout');\n };\n\n setupFooter = () => {\n this.footerElement = DocumentNode.createElement('stack-layout');\n };\n\n <template>\n <rad-list-view {{this.setupListView}} items={{@items}} ...attributes />\n {{#if this.listView}}\n {{#if (has-block 'header')}}\n {{this.setupHeader}}\n {{#in-element this.headerElement}}\n {{yield to='header'}}\n {{/in-element}}\n {{/if}}\n {{#each this.items key=this.itemKey as |item|}}\n {{#in-element item.element}}\n {{yield item.item to='item'}}\n {{/in-element}}\n {{/each}}\n {{#if (has-block 'footer')}}\n {{this.setupFooter}}\n {{#in-element this.footerElement}}\n {{yield to='footer'}}\n {{/in-element}}\n {{/if}}\n {{/if}}\n </template>\n}\n"],"names":["TrackedMap","_class","Map","constructor","args","_initializerDefineProperty","_descriptor","set","key","value","counter","get","entries","_applyDecoratedDescriptor","prototype","tracked","RadListView","_class2","_RadListView","Component","_defineProperty","_descriptor2","modifier","setupListView","listView","nativeView","on","cleanup","listViewComponent","_getDefaultItemContent","sl","DocumentNode","createElement","appendChild","Object","defineProperty","_parent","v","elementRefs","itemViewLoader","type","ListViewViewType","ItemView","HeaderView","headerElement","FooterView","footerElement","bind","setupHeader","setupFooter","element","n","nativeViewProtected","getWindowToken","delete","idx","childNodes","findIndex","c","splice","itemKey","items","map","item","setComponentTemplate","template_fd9b2463e5f141cfb5666b64daa1f11a","strictMode"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Frame,
|
|
1
|
+
import { Frame, StackLayout, GridLayout, RootLayout, FlexboxLayout, WrapLayout, DockLayout, AbsoluteLayout, ActionBar, ActionItem, NavigationButton, ActivityIndicator, Button, DatePicker, HtmlView, Image, Label, ListPicker, ListView, Placeholder, Progress, ScrollView, SearchBar, SegmentedBar, Slider, Switch, TabView, TabViewItem, TextField, TextView, TimePicker, FormattedString, Span, WebView, ContentView } from '@nativescript/core';
|
|
2
2
|
import { registerElement } from './element-registry.js';
|
|
3
3
|
import FrameElement from './native/FrameElement.js';
|
|
4
4
|
import NativeElementNode from './native/NativeElementNode.js';
|
|
@@ -20,44 +20,51 @@ function registerElements() {
|
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
// Completed
|
|
23
|
+
registerNativeElement('StackLayout', () => StackLayout);
|
|
24
|
+
registerNativeElement('GridLayout', () => GridLayout);
|
|
25
|
+
registerNativeElement('RootLayout', () => RootLayout);
|
|
26
|
+
registerNativeElement('FlexboxLayout', () => FlexboxLayout);
|
|
27
|
+
registerNativeElement('WrapLayout', () => WrapLayout);
|
|
28
|
+
registerNativeElement('DockLayout', () => DockLayout);
|
|
23
29
|
registerNativeElement('AbsoluteLayout', () => AbsoluteLayout);
|
|
30
|
+
registerElement('Frame', () => new FrameElement());
|
|
31
|
+
registerElement('Page', () => new PageElement());
|
|
24
32
|
registerNativeElement('ActionBar', () => ActionBar);
|
|
25
33
|
registerNativeElement('ActionItem', () => ActionItem);
|
|
34
|
+
registerNativeElement('NavigationButton', () => NavigationButton);
|
|
26
35
|
registerNativeElement('ActivityIndicator', () => ActivityIndicator);
|
|
27
|
-
registerNativeElement('Comment', () => Placeholder);
|
|
28
36
|
registerNativeElement('Button', () => Button);
|
|
29
37
|
registerNativeElement('DatePicker', () => DatePicker);
|
|
30
|
-
registerNativeElement('DockLayout', () => DockLayout);
|
|
31
|
-
registerNativeElement('FlexboxLayout', () => FlexboxLayout);
|
|
32
|
-
registerNativeElement('FormattedString', () => FormattedString, {
|
|
33
|
-
insertChild(parentNode, childNode, atIndex) {
|
|
34
|
-
const parent = parentNode.nativeView;
|
|
35
|
-
const child = childNode.nativeView;
|
|
36
|
-
parent.spans.splice(atIndex, 0, child);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
registerNativeElement('GridLayout', () => GridLayout);
|
|
40
38
|
registerNativeElement('HtmlView', () => HtmlView);
|
|
41
39
|
registerNativeElement('Image', () => Image);
|
|
42
40
|
registerNativeElement('Label', () => Label);
|
|
43
41
|
registerNativeElement('ListPicker', () => ListPicker);
|
|
44
|
-
registerNativeElement('
|
|
45
|
-
registerNativeElement('
|
|
46
|
-
registerNativeElement('
|
|
42
|
+
registerNativeElement('ListView', () => ListView);
|
|
43
|
+
registerNativeElement('Comment', () => Placeholder);
|
|
44
|
+
registerNativeElement('Placeholder', () => Placeholder);
|
|
45
|
+
registerNativeElement('Progress', () => Progress);
|
|
47
46
|
registerNativeElement('ScrollView', () => ScrollView);
|
|
47
|
+
registerNativeElement('SearchBar', () => SearchBar);
|
|
48
|
+
registerNativeElement('SegmentedBar', () => SegmentedBar);
|
|
49
|
+
registerNativeElement('Slider', () => Slider);
|
|
48
50
|
registerNativeElement('Switch', () => Switch);
|
|
49
51
|
registerNativeElement('TabView', () => TabView);
|
|
50
52
|
registerNativeElement('TabViewItem', () => TabViewItem);
|
|
51
53
|
registerNativeElement('TextField', () => TextField);
|
|
52
54
|
registerNativeElement('TextView', () => TextView);
|
|
55
|
+
registerNativeElement('TimePicker', () => TimePicker);
|
|
56
|
+
registerNativeElement('FormattedString', () => FormattedString, {
|
|
57
|
+
insertChild(parentNode, childNode, atIndex) {
|
|
58
|
+
const parent = parentNode.nativeView;
|
|
59
|
+
const child = childNode.nativeView;
|
|
60
|
+
parent.spans.splice(atIndex, 0, child);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
registerNativeElement('Span', () => Span);
|
|
53
64
|
registerNativeElement('WebView', () => WebView);
|
|
54
|
-
registerNativeElement('WrapLayout', () => WrapLayout);
|
|
55
65
|
registerNativeElement('ContentView', () => ContentView);
|
|
56
|
-
registerNativeElement('ListView', () => ListView);
|
|
57
66
|
|
|
58
67
|
// Not Complete
|
|
59
|
-
registerElement('Frame', () => new FrameElement());
|
|
60
|
-
registerElement('Page', () => new PageElement());
|
|
61
68
|
registerElement('Fragment', () => new NativeElementNode('fragment', null));
|
|
62
69
|
}
|
|
63
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-registry.js","sources":["../../src/dom/setup-registry.ts"],"sourcesContent":["// Largely taken from the Vue implimentation\nimport {\n View,\n AbsoluteLayout,\n ActionBar,\n ActionItem,\n NavigationButton,\n ActivityIndicator,\n Placeholder,\n Button,\n DatePicker,\n FlexboxLayout,\n DockLayout,\n FormattedString,\n Span,\n GridLayout,\n HtmlView,\n Label,\n ListPicker,\n StackLayout,\n ScrollView,\n Switch,\n TabView,\n TabViewItem,\n TextField,\n TextView,\n WebView,\n WrapLayout,\n ContentView,\n ListView,\n Image,\n Frame,\n} from '@nativescript/core';\n\nimport { registerElement } from './element-registry.ts';\nimport FrameElement from './native/FrameElement.ts';\nimport NativeElementNode, {\n type ComponentMeta,\n} from './native/NativeElementNode.ts';\nimport PageElement from './native/PageElement.ts';\n\nexport function registerNativeElement(\n elementName: string,\n resolver: () => typeof View,\n meta: ComponentMeta | null = null,\n) {\n registerElement(\n elementName,\n () => new NativeElementNode(elementName, resolver(), meta),\n );\n}\n\nexport function registerElements() {\n registerElement('head', () => null as any, {\n insertChild() {},\n });\n registerElement('style', () => new NativeElementNode('style', null));\n registerElement('div', () => Frame as any, {\n insertChild(parentNode: any, childNode: any, _atIndex: any) {\n //dont bother\n parentNode.appendChild(childNode);\n },\n });\n // Completed\n registerNativeElement('
|
|
1
|
+
{"version":3,"file":"setup-registry.js","sources":["../../src/dom/setup-registry.ts"],"sourcesContent":["// Largely taken from the Vue implimentation\nimport {\n View,\n AbsoluteLayout,\n ActionBar,\n ActionItem,\n NavigationButton,\n ActivityIndicator,\n Placeholder,\n Button,\n DatePicker,\n FlexboxLayout,\n DockLayout,\n FormattedString,\n Span,\n GridLayout,\n HtmlView,\n Label,\n ListPicker,\n StackLayout,\n ScrollView,\n Switch,\n TabView,\n TabViewItem,\n TextField,\n TextView,\n WebView,\n WrapLayout,\n ContentView,\n ListView,\n Image,\n Frame,\n RootLayout,\n Progress,\n SearchBar,\n SegmentedBar,\n Slider,\n TimePicker,\n} from '@nativescript/core';\n\nimport { registerElement } from './element-registry.ts';\nimport FrameElement from './native/FrameElement.ts';\nimport NativeElementNode, {\n type ComponentMeta,\n} from './native/NativeElementNode.ts';\nimport PageElement from './native/PageElement.ts';\n\nexport function registerNativeElement(\n elementName: string,\n resolver: () => typeof View,\n meta: ComponentMeta | null = null,\n) {\n registerElement(\n elementName,\n () => new NativeElementNode(elementName, resolver(), meta),\n );\n}\n\nexport function registerElements() {\n registerElement('head', () => null as any, {\n insertChild() {},\n });\n registerElement('style', () => new NativeElementNode('style', null));\n registerElement('div', () => Frame as any, {\n insertChild(parentNode: any, childNode: any, _atIndex: any) {\n //dont bother\n parentNode.appendChild(childNode);\n },\n });\n // Completed\n registerNativeElement('StackLayout', () => StackLayout);\n registerNativeElement('GridLayout', () => GridLayout);\n registerNativeElement('RootLayout', () => RootLayout);\n registerNativeElement('FlexboxLayout', () => FlexboxLayout);\n registerNativeElement('WrapLayout', () => WrapLayout);\n registerNativeElement('DockLayout', () => DockLayout);\n registerNativeElement('AbsoluteLayout', () => AbsoluteLayout);\n\n registerElement('Frame', () => new FrameElement());\n registerElement('Page', () => new PageElement());\n registerNativeElement('ActionBar', () => ActionBar);\n registerNativeElement('ActionItem', () => ActionItem as any);\n registerNativeElement('NavigationButton', () => NavigationButton as any);\n registerNativeElement('ActivityIndicator', () => ActivityIndicator);\n registerNativeElement('Button', () => Button);\n registerNativeElement('DatePicker', () => DatePicker);\n registerNativeElement('HtmlView', () => HtmlView);\n registerNativeElement('Image', () => Image);\n registerNativeElement('Label', () => Label);\n registerNativeElement('ListPicker', () => ListPicker);\n registerNativeElement('ListView', () => ListView);\n registerNativeElement('Comment', () => Placeholder);\n registerNativeElement('Placeholder', () => Placeholder);\n registerNativeElement('Progress', () => Progress);\n registerNativeElement('ScrollView', () => ScrollView);\n registerNativeElement('SearchBar', () => SearchBar);\n registerNativeElement('SegmentedBar', () => SegmentedBar);\n registerNativeElement('Slider', () => Slider);\n registerNativeElement('Switch', () => Switch);\n registerNativeElement('TabView', () => TabView);\n registerNativeElement('TabViewItem', () => TabViewItem as any);\n registerNativeElement('TextField', () => TextField);\n registerNativeElement('TextView', () => TextView);\n registerNativeElement('TimePicker', () => TimePicker);\n registerNativeElement('FormattedString', () => FormattedString as any, {\n insertChild(\n parentNode: NativeElementNode<FormattedString>,\n childNode: NativeElementNode<Span>,\n atIndex,\n ) {\n const parent = parentNode.nativeView;\n const child = childNode.nativeView;\n parent.spans.splice(atIndex, 0, child);\n },\n });\n registerNativeElement('Span', () => Span as any);\n registerNativeElement('WebView', () => WebView);\n registerNativeElement('ContentView', () => ContentView);\n\n // Not Complete\n registerElement('Fragment', () => new NativeElementNode('fragment', null));\n}\n"],"names":["registerNativeElement","elementName","resolver","meta","registerElement","NativeElementNode","registerElements","insertChild","Frame","parentNode","childNode","_atIndex","appendChild","StackLayout","GridLayout","RootLayout","FlexboxLayout","WrapLayout","DockLayout","AbsoluteLayout","FrameElement","PageElement","ActionBar","ActionItem","NavigationButton","ActivityIndicator","Button","DatePicker","HtmlView","Image","Label","ListPicker","ListView","Placeholder","Progress","ScrollView","SearchBar","SegmentedBar","Slider","Switch","TabView","TabViewItem","TextField","TextView","TimePicker","FormattedString","atIndex","parent","nativeView","child","spans","splice","Span","WebView","ContentView"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ember-native",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "the Ember framework with Nativescript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@babel/core": "^7.24.0",
|
|
30
30
|
"@babel/plugin-syntax-decorators": "^7.22.5",
|
|
31
|
-
"@ember/render-modifiers": "^
|
|
31
|
+
"@ember/render-modifiers": "^3.0.0",
|
|
32
32
|
"@ember/string": "^4.0.0",
|
|
33
33
|
"@ember/test-waiters": "^4.0.0",
|
|
34
34
|
"@embroider/addon-shim": "^1.10.0",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"ember-concurrency": "^4.0.2",
|
|
46
46
|
"ember-get-config": "^2.1.1",
|
|
47
47
|
"ember-maybe-import-regenerator": "^1.0.0",
|
|
48
|
-
"ember-template-lint-plugin-prettier": "^
|
|
48
|
+
"ember-template-lint-plugin-prettier": "^5.0.0",
|
|
49
49
|
"ember-truth-helpers": "^4.0.3",
|
|
50
50
|
"prettier-linter-helpers": "^1.0.0",
|
|
51
51
|
"rollup-plugin-astroturf": "^0.1.0",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"@embroider/shared-internals": "^3.0.0",
|
|
64
64
|
"@embroider/util": "^1.13.2",
|
|
65
65
|
"@embroider/webpack": "^4.1.0",
|
|
66
|
-
"@glimmer/interfaces": "^0.
|
|
66
|
+
"@glimmer/interfaces": "^0.94.6",
|
|
67
67
|
"@glimmer/reference": "^0.94.8",
|
|
68
68
|
"@glimmer/runtime": "^0.93.1",
|
|
69
69
|
"@glimmer/syntax": "^0.94.9",
|
|
@@ -87,12 +87,12 @@
|
|
|
87
87
|
"bower": "^1.8.8",
|
|
88
88
|
"broccoli": "^3.4.2",
|
|
89
89
|
"broccoli-asset-rev": "^3.0.0",
|
|
90
|
-
"concurrently": "^
|
|
90
|
+
"concurrently": "^9.1.2",
|
|
91
91
|
"content-tag": "^4.0.0",
|
|
92
92
|
"css-loader": "^7.1.2",
|
|
93
93
|
"ember-eslint-parser": "^0.5.9",
|
|
94
94
|
"ember-modifier": "^4.2.0",
|
|
95
|
-
"ember-source": "^6.0
|
|
95
|
+
"ember-source": "^6.4.0",
|
|
96
96
|
"ember-template-lint": "^5.11.2",
|
|
97
97
|
"eslint": "^8.57.0",
|
|
98
98
|
"eslint-config-airbnb-base": "^15.0.0",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"rollup-plugin-copy": "^3.4.0",
|
|
116
116
|
"router_js": "^8.0.6",
|
|
117
117
|
"sass": "^1.81.0",
|
|
118
|
-
"sass-embedded": "^1.
|
|
118
|
+
"sass-embedded": "^1.88.0",
|
|
119
119
|
"sass-loader": "^16.0.4",
|
|
120
120
|
"typescript": "^5.6.3",
|
|
121
121
|
"typescript-plugin-css-modules": "^5.0.1",
|
package/types/ember.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import 'ember-source/types
|
|
1
|
+
import 'ember-source/types';
|