UNPKG

@builder.io/mitosis

Version:

Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io

51 lines (50 loc) 1.69 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.compileAwayComponents = exports.getRenderOptions = void 0; const lodash_1 = require("lodash"); const legacy_1 = __importDefault(require("neotraverse/legacy")); const is_mitosis_node_1 = require("../helpers/is-mitosis-node"); const getRenderOptions = (node) => { return { ...(0, lodash_1.mapValues)(node.properties, (value) => `"${value}"`), ...(0, lodash_1.mapValues)(node.bindings, (value) => `{${value}}`), }; }; exports.getRenderOptions = getRenderOptions; /** * @example * componentToReact(mitosisJson, { * plugins: [ * compileAwayComponents({ * Image: (node) => { * return jsx(` * <div> * <img src="${node.properties.image}" /> * </div> * `); * } * }) * ] * }) */ const compileAwayComponents = (pluginOptions) => (options) => ({ json: { pre: (json) => { (0, legacy_1.default)(json).forEach(function (item) { if ((0, is_mitosis_node_1.isMitosisNode)(item)) { const mapper = pluginOptions.components[item.name]; if (mapper) { const result = mapper(item, this); if (result) { this.update(result); } } } }); }, }, }); exports.compileAwayComponents = compileAwayComponents;