MCPcopy Index your code
hub / github.com/NativeScript/NativeScript / Builder

Class Builder

packages/core/ui/builder/index.ts:54–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52}
53
54export class Builder {
55 /**
56 * UI plugin developers can add to these to define their own custom types if needed
57 */
58 static knownTemplates: Set<string> = new Set(['itemTemplate']);
59 static knownMultiTemplates: Set<string> = new Set(['itemTemplates']);
60 static knownCollections: Set<string> = new Set(['items', 'spans', 'actionItems']);
61
62 /**
63 * Creates view from navigation entry
64 * @param entry NavigationEntry
65 */
66 static createViewFromEntry(entry: ViewEntry): View {
67 if (entry.create) {
68 const view = entry.create();
69 if (!view) {
70 throw new Error('Failed to create View with entry.create() function.');
71 }
72
73 return view;
74 } else if (entry.moduleName) {
75 const moduleName = sanitizeModuleName(entry.moduleName);
76 const resolvedCodeModuleName = resolveModuleName(moduleName, ''); //`${moduleName}.xml`;
77 const moduleExports = resolvedCodeModuleName ? global.loadModule(resolvedCodeModuleName) : null;
78 if (moduleExports && moduleExports.createPage) {
79 // Exports has a createPage() method
80 const view = moduleExports.createPage();
81 const resolvedCssModuleName = resolveModuleName(moduleName, 'css'); //entry.moduleName + ".css";
82 if (resolvedCssModuleName) {
83 view.addCssFile(resolvedCssModuleName);
84 }
85
86 return view;
87 } else {
88 let componentView;
89 if (__UI_USE_XML_PARSER__) {
90 const componentModule = loadInternal(moduleName, moduleExports);
91 componentView = componentModule && componentModule.component;
92 } else {
93 const resolvedXmlModuleName = resolveModuleName(moduleName, 'xml');
94 const componentModule = resolvedXmlModuleName ? global.loadModule(resolvedXmlModuleName) : null;
95 if (componentModule?.default) {
96 componentView = new componentModule.default();
97 } else {
98 throw new Error('Failed to load component from module: ' + moduleName);
99 }
100 }
101 return componentView;
102 }
103 }
104
105 throw new Error('Failed to load page XML file for module: ' + entry.moduleName);
106 }
107
108 static parse(value: string | Template, context?: any): View {
109 if (typeof value === 'function') {
110 return (<Template>value)();
111 } else {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected