UNPKG

@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
"use strict"; 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;