@builder.io/mitosis
Version:
Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io
27 lines (26 loc) • 1.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapBuilderContentStateToMitosisState = void 0;
const lodash_1 = require("lodash");
const patterns_1 = require("../../helpers/patterns");
const __DO_NOT_USE_FUNCTION_LITERAL_PREFIX = `@builder.io/mitosis/function:`;
const __DO_NOT_USE_METHOD_LITERAL_PREFIX = `@builder.io/mitosis/method:`;
/**
* Maps the Builder State format to the Mitosis State format.
*/
const mapJsonToStateValue = (value) => {
if (typeof value === 'string') {
if (value.startsWith(__DO_NOT_USE_FUNCTION_LITERAL_PREFIX)) {
return { type: 'function', code: value.replace(__DO_NOT_USE_FUNCTION_LITERAL_PREFIX, '') };
}
else if (value.startsWith(__DO_NOT_USE_METHOD_LITERAL_PREFIX)) {
const strippedValue = value.replace(__DO_NOT_USE_METHOD_LITERAL_PREFIX, '');
const isGet = Boolean(strippedValue.match(patterns_1.GETTER));
const type = isGet ? 'getter' : 'method';
return { type, code: strippedValue };
}
}
return { type: 'property', code: JSON.stringify(value), propertyType: 'normal' };
};
const mapBuilderContentStateToMitosisState = (value) => (0, lodash_1.mapValues)(value, mapJsonToStateValue);
exports.mapBuilderContentStateToMitosisState = mapBuilderContentStateToMitosisState;
;