@builder.io/mitosis 0.8.0 → 0.9.0
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/dist/src/generators/angular/{blocks.d.ts → classic/blocks.d.ts} +3 -3
- package/dist/src/generators/angular/{blocks.js → classic/blocks.js} +14 -14
- package/dist/src/generators/angular/classic/component.d.ts +3 -0
- package/dist/src/generators/angular/classic/component.js +356 -0
- package/dist/src/generators/angular/classic/plugins/get-class-properties-plugin.d.ts +2 -0
- package/dist/src/generators/angular/classic/plugins/get-class-properties-plugin.js +138 -0
- package/dist/src/generators/angular/classic/plugins/get-code-processor-plugins.d.ts +8 -0
- package/dist/src/generators/angular/classic/plugins/get-code-processor-plugins.js +60 -0
- package/dist/src/generators/angular/component.d.ts +3 -0
- package/dist/src/generators/angular/component.js +27 -0
- package/dist/src/generators/angular/helpers/format.d.ts +1 -0
- package/dist/src/generators/angular/helpers/format.js +24 -0
- package/dist/src/generators/angular/helpers/get-inputs.d.ts +7 -0
- package/dist/src/generators/angular/helpers/get-inputs.js +18 -0
- package/dist/src/generators/angular/helpers/get-outputs.d.ts +7 -0
- package/dist/src/generators/angular/helpers/get-outputs.js +23 -0
- package/dist/src/generators/angular/helpers/get-refs.d.ts +8 -0
- package/dist/src/generators/angular/helpers/get-refs.js +40 -0
- package/dist/src/generators/angular/helpers/get-styles.d.ts +6 -0
- package/dist/src/generators/angular/helpers/get-styles.js +17 -0
- package/dist/src/generators/angular/helpers/index.d.ts +15 -0
- package/dist/src/generators/angular/helpers/index.js +126 -2
- package/dist/src/generators/angular/{parse-selector.d.ts → helpers/parse-selector.d.ts} +1 -1
- package/dist/src/generators/angular/{parse-selector.js → helpers/parse-selector.js} +3 -3
- package/dist/src/generators/angular/index.d.ts +1 -3
- package/dist/src/generators/angular/index.js +1 -692
- package/dist/src/generators/angular/signals/blocks.d.ts +10 -0
- package/dist/src/generators/angular/signals/blocks.js +242 -0
- package/dist/src/generators/angular/signals/component.d.ts +3 -0
- package/dist/src/generators/angular/signals/component.js +279 -0
- package/dist/src/generators/angular/signals/helpers/get-inputs.d.ts +7 -0
- package/dist/src/generators/angular/signals/helpers/get-inputs.js +15 -0
- package/dist/src/generators/angular/signals/helpers/index.d.ts +9 -0
- package/dist/src/generators/angular/signals/helpers/index.js +22 -0
- package/dist/src/generators/angular/signals/plugins/get-code-processor-plugins.d.ts +4 -0
- package/dist/src/generators/angular/signals/plugins/get-code-processor-plugins.js +194 -0
- package/dist/src/generators/angular/types.d.ts +23 -2
- package/dist/src/generators/angular/types.js +1 -0
- package/dist/src/generators/mitosis/generator.js +11 -27
- package/dist/src/generators/qwik/component-generator.js +1 -0
- package/dist/src/generators/solid/index.js +1 -0
- package/dist/src/generators/stencil/blocks.js +2 -1
- package/dist/src/generators/stencil/component.js +3 -2
- package/dist/src/generators/stencil/helpers/index.d.ts +0 -5
- package/dist/src/generators/stencil/helpers/index.js +2 -33
- package/dist/src/generators/stencil/plugins/get-code-processor-plugins.d.ts +1 -1
- package/dist/src/generators/stencil/plugins/get-code-processor-plugins.js +3 -2
- package/dist/src/generators/svelte/svelte.js +2 -0
- package/dist/src/generators/vue/vue.js +2 -0
- package/dist/src/helpers/babel-transform.js +1 -1
- package/dist/src/helpers/class-components.d.ts +13 -0
- package/dist/src/helpers/class-components.js +51 -0
- package/dist/src/helpers/get-state-object-string.d.ts +4 -0
- package/dist/src/helpers/get-state-object-string.js +22 -5
- package/dist/src/helpers/is-children.js +1 -1
- package/dist/src/helpers/map-refs.d.ts +7 -1
- package/dist/src/helpers/map-refs.js +21 -21
- package/dist/src/helpers/plugins/process-code/index.d.ts +1 -1
- package/dist/src/helpers/plugins/process-code/index.js +16 -2
- package/dist/src/helpers/plugins/process-code/types.d.ts +3 -2
- package/dist/src/helpers/render-imports.d.ts +5 -0
- package/dist/src/helpers/replace-identifiers.js +1 -4
- package/dist/src/helpers/traverse-nodes.d.ts +1 -1
- package/dist/src/parsers/jsx/function-parser.js +15 -0
- package/dist/src/parsers/svelte/html/text.d.ts +18 -0
- package/dist/src/types/mitosis-component.d.ts +2 -0
- package/dist/src/types/mitosis-node.d.ts +7 -2
- package/dist/src/types/mitosis-node.js +8 -3
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.componentToAngular = void 0;
|
|
4
|
+
const component_1 = require("../../generators/angular/classic/component");
|
|
5
|
+
const component_2 = require("../../generators/angular/signals/component");
|
|
6
|
+
const types_1 = require("../../generators/angular/types");
|
|
7
|
+
const merge_options_1 = require("../../helpers/merge-options");
|
|
8
|
+
const componentToAngular = (userOptions = {}) => {
|
|
9
|
+
return (args) => {
|
|
10
|
+
const options = (0, merge_options_1.initializeOptions)({
|
|
11
|
+
target: 'angular',
|
|
12
|
+
component: args.component,
|
|
13
|
+
defaults: types_1.DEFAULT_ANGULAR_OPTIONS,
|
|
14
|
+
userOptions,
|
|
15
|
+
});
|
|
16
|
+
if (options.api === 'signals') {
|
|
17
|
+
/*
|
|
18
|
+
* Some features aren't available to reduce complexity for now:
|
|
19
|
+
* - Spread props
|
|
20
|
+
* - Dynamic components
|
|
21
|
+
*/
|
|
22
|
+
return (0, component_2.componentToAngularSignals)(userOptions)(args);
|
|
23
|
+
}
|
|
24
|
+
return (0, component_1.componentToAngularClassic)(userOptions)(args);
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
exports.componentToAngular = componentToAngular;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tryFormat: (str: string, parser: string) => string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryFormat = void 0;
|
|
4
|
+
const standalone_1 = require("prettier/standalone");
|
|
5
|
+
const tryFormat = (str, parser) => {
|
|
6
|
+
try {
|
|
7
|
+
return (0, standalone_1.format)(str, {
|
|
8
|
+
parser,
|
|
9
|
+
plugins: [
|
|
10
|
+
// To support running in browsers
|
|
11
|
+
require('prettier/parser-typescript'),
|
|
12
|
+
require('prettier/parser-postcss'),
|
|
13
|
+
require('prettier/parser-html'),
|
|
14
|
+
require('prettier/parser-babel'),
|
|
15
|
+
],
|
|
16
|
+
htmlWhitespaceSensitivity: 'ignore',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
console.warn('Could not prettify', { string: str }, err);
|
|
21
|
+
}
|
|
22
|
+
return str;
|
|
23
|
+
};
|
|
24
|
+
exports.tryFormat = tryFormat;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ToAngularOptions } from '../../../generators/angular/types';
|
|
2
|
+
import type { MitosisComponent } from '../../../types/mitosis-component';
|
|
3
|
+
export declare const getInputs: ({ props, json, options, }: {
|
|
4
|
+
props: string[];
|
|
5
|
+
json: MitosisComponent;
|
|
6
|
+
options: ToAngularOptions;
|
|
7
|
+
}) => string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getInputs = void 0;
|
|
4
|
+
const getInputs = ({ props, json, options, }) => {
|
|
5
|
+
const propsTypeRef = json.propsTypeRef !== 'any' ? json.propsTypeRef : undefined;
|
|
6
|
+
return props
|
|
7
|
+
.map((prop) => {
|
|
8
|
+
const hasDefaultProp = json.defaultProps && json.defaultProps.hasOwnProperty(prop);
|
|
9
|
+
const propType = propsTypeRef ? `${propsTypeRef}["${prop}"]` : 'any';
|
|
10
|
+
let propDeclaration = `@Input() ${prop}${options.typescript ? `${hasDefaultProp ? '' : '!'}: ${propType}` : ''}`;
|
|
11
|
+
if (hasDefaultProp) {
|
|
12
|
+
propDeclaration += ` = defaultProps["${prop}"]`;
|
|
13
|
+
}
|
|
14
|
+
return propDeclaration;
|
|
15
|
+
})
|
|
16
|
+
.join('\n');
|
|
17
|
+
};
|
|
18
|
+
exports.getInputs = getInputs;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AngularApi } from '../../../generators/angular/types';
|
|
2
|
+
import type { MitosisComponent } from '../../../types/mitosis-component';
|
|
3
|
+
export declare const getOutputs: ({ json, outputVars, api, }: {
|
|
4
|
+
json: MitosisComponent;
|
|
5
|
+
outputVars: string[];
|
|
6
|
+
api?: AngularApi | undefined;
|
|
7
|
+
}) => string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOutputs = void 0;
|
|
4
|
+
const event_handlers_1 = require("../../../helpers/event-handlers");
|
|
5
|
+
const getOutputs = ({ json, outputVars, api, }) => {
|
|
6
|
+
const propsTypeRef = json.propsTypeRef !== 'any' ? json.propsTypeRef : undefined;
|
|
7
|
+
if (api === 'signals') {
|
|
8
|
+
return outputVars
|
|
9
|
+
.map((output) => {
|
|
10
|
+
const propType = propsTypeRef
|
|
11
|
+
? `<Parameters<Required<${propsTypeRef}>["${output}"]>[number] | void> `
|
|
12
|
+
: '';
|
|
13
|
+
return `${(0, event_handlers_1.getEventNameWithoutOn)(output)} = output${propType}()`;
|
|
14
|
+
})
|
|
15
|
+
.join('\n');
|
|
16
|
+
}
|
|
17
|
+
return outputVars
|
|
18
|
+
.map((output) => {
|
|
19
|
+
return `@Output() ${output} = new EventEmitter<any>()`;
|
|
20
|
+
})
|
|
21
|
+
.join('\n');
|
|
22
|
+
};
|
|
23
|
+
exports.getOutputs = getOutputs;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ToAngularOptions } from '../../../generators/angular/types';
|
|
2
|
+
import { MitosisComponent } from '../../../types/mitosis-component';
|
|
3
|
+
export declare const getDomRefs: ({ json, options, withAttributePassing, rootRef, }: {
|
|
4
|
+
json: MitosisComponent;
|
|
5
|
+
options: ToAngularOptions;
|
|
6
|
+
withAttributePassing?: boolean | undefined;
|
|
7
|
+
rootRef: string;
|
|
8
|
+
}) => Set<string>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDomRefs = void 0;
|
|
4
|
+
const hooks_1 = require("../../../generators/angular/helpers/hooks");
|
|
5
|
+
const dash_case_1 = require("../../../helpers/dash-case");
|
|
6
|
+
const get_refs_1 = require("../../../helpers/get-refs");
|
|
7
|
+
const map_refs_1 = require("../../../helpers/map-refs");
|
|
8
|
+
const types_1 = require("@babel/types");
|
|
9
|
+
const getDomRefs = ({ json, options, withAttributePassing, rootRef, }) => {
|
|
10
|
+
const domRefs = (0, get_refs_1.getRefs)(json);
|
|
11
|
+
const nativeElement = options.api === 'signals' ? `()?.nativeElement` : '?.nativeElement';
|
|
12
|
+
if (withAttributePassing) {
|
|
13
|
+
if (!domRefs.has(rootRef)) {
|
|
14
|
+
domRefs.add(rootRef);
|
|
15
|
+
}
|
|
16
|
+
(0, hooks_1.addCodeNgAfterViewInit)(json, `
|
|
17
|
+
const element: HTMLElement | null = this.${rootRef}${nativeElement};
|
|
18
|
+
this.enableAttributePassing(element, "${(0, dash_case_1.dashCase)(json.name)}");
|
|
19
|
+
`);
|
|
20
|
+
}
|
|
21
|
+
(0, map_refs_1.mapRefs)(json, (refName, extra) => {
|
|
22
|
+
const isDomRef = domRefs.has(refName);
|
|
23
|
+
let additional = nativeElement;
|
|
24
|
+
if ((extra === null || extra === void 0 ? void 0 : extra.type) === 'bindings' && options.api === 'signals') {
|
|
25
|
+
// we don't need nativeElement and this. for bindings in signals
|
|
26
|
+
return refName;
|
|
27
|
+
}
|
|
28
|
+
else if ((extra === null || extra === void 0 ? void 0 : extra.type) === 'hooks-deps-array' && options.api === 'signals') {
|
|
29
|
+
// we don't need nativeElement for deps-array in hooks
|
|
30
|
+
additional = '()';
|
|
31
|
+
}
|
|
32
|
+
else if ((extra === null || extra === void 0 ? void 0 : extra.path.parentPath) && (0, types_1.isAssignmentExpression)(extra === null || extra === void 0 ? void 0 : extra.path.parentPath.container)) {
|
|
33
|
+
// we cannot use conditionals for assignments, it has to be checked before
|
|
34
|
+
additional = options.api === 'signals' ? `()!.nativeElement` : '!.nativeElement';
|
|
35
|
+
}
|
|
36
|
+
return `this.${isDomRef ? '' : '_'}${refName}${isDomRef ? additional : ''}`;
|
|
37
|
+
});
|
|
38
|
+
return domRefs;
|
|
39
|
+
};
|
|
40
|
+
exports.getDomRefs = getDomRefs;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ToAngularOptions } from '../../../generators/angular/types';
|
|
2
|
+
import { MitosisComponent } from '../../../types/mitosis-component';
|
|
3
|
+
export declare const getAngularStyles: ({ json, options, }: {
|
|
4
|
+
json: MitosisComponent;
|
|
5
|
+
options: ToAngularOptions;
|
|
6
|
+
}) => string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAngularStyles = void 0;
|
|
4
|
+
const format_1 = require("../../../generators/angular/helpers/format");
|
|
5
|
+
const index_1 = require("../../../generators/angular/helpers/index");
|
|
6
|
+
const indent_1 = require("../../../helpers/indent");
|
|
7
|
+
const collect_css_1 = require("../../../helpers/styles/collect-css");
|
|
8
|
+
const getAngularStyles = ({ json, options, }) => {
|
|
9
|
+
(0, index_1.preprocessCssAsJson)(json);
|
|
10
|
+
let css = (0, collect_css_1.collectCss)(json);
|
|
11
|
+
if (options.prettier !== false) {
|
|
12
|
+
css = (0, format_1.tryFormat)(css, 'css');
|
|
13
|
+
}
|
|
14
|
+
const hostDisplayCss = options.visuallyIgnoreHostElement ? ':host { display: contents; }' : '';
|
|
15
|
+
return (0, indent_1.indent)(css.length ? [hostDisplayCss, css].join('\n') : hostDisplayCss, 8);
|
|
16
|
+
};
|
|
17
|
+
exports.getAngularStyles = getAngularStyles;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AngularBlockOptions, ToAngularOptions } from '../../../generators/angular/types';
|
|
1
2
|
import { type MitosisComponent } from '../../../types/mitosis-component';
|
|
2
3
|
import { MitosisNode } from '../../../types/mitosis-node';
|
|
3
4
|
export declare const HELPER_FUNCTIONS: (isTs?: boolean) => {
|
|
@@ -16,3 +17,17 @@ export declare const transformState: (json: MitosisComponent) => void;
|
|
|
16
17
|
* @param node The node which should be "For"
|
|
17
18
|
*/
|
|
18
19
|
export declare const hasFirstChildKeyAttribute: (node: MitosisNode) => boolean;
|
|
20
|
+
export declare const preprocessCssAsJson: (json: MitosisComponent) => void;
|
|
21
|
+
export declare const generateNgModule: (content: string, name: string, componentsUsed: string[], component: MitosisComponent, bootstrapMapper: Function | null | undefined) => string;
|
|
22
|
+
export declare const traverseToGetAllDynamicComponents: (json: MitosisComponent, options: ToAngularOptions, blockOptions: AngularBlockOptions) => {
|
|
23
|
+
components: Set<string>;
|
|
24
|
+
dynamicTemplate: string;
|
|
25
|
+
};
|
|
26
|
+
export declare const getTemplateFormat: (template: string) => string;
|
|
27
|
+
export declare const traverseAndCheckIfInnerHTMLIsUsed: (json: MitosisComponent) => boolean;
|
|
28
|
+
export declare const processAngularCode: ({ contextVars, outputVars, domRefs, replaceWith, }: {
|
|
29
|
+
contextVars: string[];
|
|
30
|
+
outputVars: string[];
|
|
31
|
+
domRefs: string[];
|
|
32
|
+
replaceWith?: string | undefined;
|
|
33
|
+
}) => (code: string) => string;
|
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
2
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasFirstChildKeyAttribute = exports.transformState = exports.getDefaultProps = exports.getAppropriateTemplateFunctionKeys = exports.HELPER_FUNCTIONS = void 0;
|
|
29
|
+
exports.processAngularCode = exports.traverseAndCheckIfInnerHTMLIsUsed = exports.getTemplateFormat = exports.traverseToGetAllDynamicComponents = exports.generateNgModule = exports.preprocessCssAsJson = exports.hasFirstChildKeyAttribute = exports.transformState = exports.getDefaultProps = exports.getAppropriateTemplateFunctionKeys = exports.HELPER_FUNCTIONS = void 0;
|
|
30
|
+
const blocks_1 = require("../../../generators/angular/classic/blocks");
|
|
31
|
+
const indent_1 = require("../../../helpers/indent");
|
|
32
|
+
const is_mitosis_node_1 = require("../../../helpers/is-mitosis-node");
|
|
33
|
+
const replace_identifiers_1 = require("../../../helpers/replace-identifiers");
|
|
4
34
|
const strip_state_and_props_refs_1 = require("../../../helpers/strip-state-and-props-refs");
|
|
35
|
+
const helpers_1 = require("../../../helpers/styles/helpers");
|
|
36
|
+
const babel = __importStar(require("@babel/core"));
|
|
37
|
+
const function_1 = require("fp-ts/function");
|
|
38
|
+
const legacy_1 = __importDefault(require("neotraverse/legacy"));
|
|
5
39
|
const HELPER_FUNCTIONS = (isTs) => ({
|
|
6
40
|
useObjectWrapper: `useObjectWrapper(...args${isTs ? ': any[]' : ''}) {
|
|
7
41
|
let obj = {}
|
|
@@ -53,7 +87,7 @@ const getDefaultProps = ({ defaultProps }) => {
|
|
|
53
87
|
return `${prop}: ${value}`;
|
|
54
88
|
})
|
|
55
89
|
.join(',');
|
|
56
|
-
return `const defaultProps = {${defalutPropsString}};\n`;
|
|
90
|
+
return `const defaultProps: any = {${defalutPropsString}};\n`;
|
|
57
91
|
};
|
|
58
92
|
exports.getDefaultProps = getDefaultProps;
|
|
59
93
|
/**
|
|
@@ -92,3 +126,93 @@ const hasFirstChildKeyAttribute = (node) => {
|
|
|
92
126
|
return Boolean(firstChildBinding && ((_a = firstChildBinding.key) === null || _a === void 0 ? void 0 : _a.code));
|
|
93
127
|
};
|
|
94
128
|
exports.hasFirstChildKeyAttribute = hasFirstChildKeyAttribute;
|
|
129
|
+
const preprocessCssAsJson = (json) => {
|
|
130
|
+
(0, legacy_1.default)(json).forEach((item) => {
|
|
131
|
+
var _a, _b;
|
|
132
|
+
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
133
|
+
if ((0, helpers_1.nodeHasCss)(item)) {
|
|
134
|
+
if ((_b = (_a = item.bindings.css) === null || _a === void 0 ? void 0 : _a.code) === null || _b === void 0 ? void 0 : _b.includes('"')) {
|
|
135
|
+
item.bindings.css.code = item.bindings.css.code.replace(/"/g, '"');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
exports.preprocessCssAsJson = preprocessCssAsJson;
|
|
142
|
+
const generateNgModule = (content, name, componentsUsed, component, bootstrapMapper) => {
|
|
143
|
+
return `import { NgModule } from "@angular/core";
|
|
144
|
+
import { CommonModule } from "@angular/common";
|
|
145
|
+
|
|
146
|
+
${content}
|
|
147
|
+
|
|
148
|
+
@NgModule({
|
|
149
|
+
declarations: [${name}],
|
|
150
|
+
imports: [CommonModule${componentsUsed.length ? ', ' + componentsUsed.map((comp) => `${comp}Module`).join(', ') : ''}],
|
|
151
|
+
exports: [${name}],
|
|
152
|
+
${bootstrapMapper ? bootstrapMapper(name, componentsUsed, component) : ''}
|
|
153
|
+
})
|
|
154
|
+
export class ${name}Module {}`;
|
|
155
|
+
};
|
|
156
|
+
exports.generateNgModule = generateNgModule;
|
|
157
|
+
const traverseToGetAllDynamicComponents = (json, options, blockOptions) => {
|
|
158
|
+
const components = new Set();
|
|
159
|
+
let dynamicTemplate = '';
|
|
160
|
+
(0, legacy_1.default)(json).forEach((item) => {
|
|
161
|
+
if ((0, is_mitosis_node_1.isMitosisNode)(item) && item.name.includes('.') && item.name.split('.').length === 2) {
|
|
162
|
+
const children = item.children
|
|
163
|
+
.map((child) => (0, blocks_1.blockToAngular)({ root: json, json: child, options, blockOptions }))
|
|
164
|
+
.join('\n');
|
|
165
|
+
dynamicTemplate = `<ng-template #${item.name.split('.')[1].toLowerCase() + 'Template'}>${children}</ng-template>`;
|
|
166
|
+
components.add(item.name);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
return {
|
|
170
|
+
components,
|
|
171
|
+
dynamicTemplate,
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
exports.traverseToGetAllDynamicComponents = traverseToGetAllDynamicComponents;
|
|
175
|
+
const getTemplateFormat = (template) => (0, indent_1.indent)(template, 8).replace(/`/g, '\\`').replace(/\$\{/g, '\\${');
|
|
176
|
+
exports.getTemplateFormat = getTemplateFormat;
|
|
177
|
+
const traverseAndCheckIfInnerHTMLIsUsed = (json) => {
|
|
178
|
+
let innerHTMLIsUsed = false;
|
|
179
|
+
(0, legacy_1.default)(json).forEach((item) => {
|
|
180
|
+
if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
|
|
181
|
+
Object.keys(item.bindings).forEach((key) => {
|
|
182
|
+
if (key === 'innerHTML') {
|
|
183
|
+
innerHTMLIsUsed = true;
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
return innerHTMLIsUsed;
|
|
190
|
+
};
|
|
191
|
+
exports.traverseAndCheckIfInnerHTMLIsUsed = traverseAndCheckIfInnerHTMLIsUsed;
|
|
192
|
+
const { types } = babel;
|
|
193
|
+
/**
|
|
194
|
+
* Prefixes state identifiers with this.
|
|
195
|
+
* e.g. state.foo --> this.foo
|
|
196
|
+
*/
|
|
197
|
+
const prefixState = (code) => {
|
|
198
|
+
return (0, replace_identifiers_1.replaceNodes)({
|
|
199
|
+
code,
|
|
200
|
+
nodeMaps: [
|
|
201
|
+
{
|
|
202
|
+
from: types.identifier('state'),
|
|
203
|
+
to: types.thisExpression(),
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
}).trim();
|
|
207
|
+
};
|
|
208
|
+
const processAngularCode = ({ contextVars, outputVars, domRefs, replaceWith, }) => (code) => (0, function_1.pipe)((0, strip_state_and_props_refs_1.DO_NOT_USE_VARS_TRANSFORMS)(code, {
|
|
209
|
+
contextVars,
|
|
210
|
+
domRefs,
|
|
211
|
+
outputVars,
|
|
212
|
+
}),
|
|
213
|
+
/**
|
|
214
|
+
* Only prefix state that is in the Angular class component.
|
|
215
|
+
* Do not prefix state referenced in the template
|
|
216
|
+
*/
|
|
217
|
+
replaceWith === 'this' ? prefixState : (x) => x, (newCode) => (0, strip_state_and_props_refs_1.stripStateAndPropsRefs)(newCode, { replaceWith }));
|
|
218
|
+
exports.processAngularCode = processAngularCode;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseSelector = void 0;
|
|
4
4
|
const compiler_1 = require("@angular/compiler");
|
|
5
|
-
function
|
|
5
|
+
function parseSelector(selector) {
|
|
6
6
|
const { element, classNames, attrs } = compiler_1.CssSelector.parse(selector)[0];
|
|
7
7
|
const attributes = attrs.reduce((acc, attr, i) => {
|
|
8
8
|
if (i % 2 === 0) {
|
|
@@ -16,4 +16,4 @@ function parse(selector) {
|
|
|
16
16
|
attributes,
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
exports.
|
|
19
|
+
exports.parseSelector = parseSelector;
|