UNPKG

tdesign-vue

Version:
100 lines (96 loc) 4.36 kB
/** * tdesign v1.14.1 * (c) 2025 tdesign * @license MIT */ import _defineProperty from '@babel/runtime/helpers/defineProperty'; import '@babel/runtime/helpers/readOnlyError'; import _typeof from '@babel/runtime/helpers/typeof'; import Vue from 'vue'; import { h } from '@vue/composition-api'; import { camelCase, kebabCase } from 'lodash-es'; var RenderJsTypes = [Function, String, Number, Boolean, Object, Array]; function handleSlots(vm, params, name) { var _vm$$scopedSlots$came, _vm$$scopedSlots, _vm$$scopedSlots$keba, _vm$$scopedSlots2; var finaleParams = h; if (params) { Object.assign(finaleParams, params); } var node = (_vm$$scopedSlots$came = (_vm$$scopedSlots = vm.$scopedSlots)[camelCase(name)]) === null || _vm$$scopedSlots$came === void 0 ? void 0 : _vm$$scopedSlots$came.call(_vm$$scopedSlots, finaleParams); if (node) return node; node = (_vm$$scopedSlots$keba = (_vm$$scopedSlots2 = vm.$scopedSlots)[kebabCase(name)]) === null || _vm$$scopedSlots$keba === void 0 ? void 0 : _vm$$scopedSlots$keba.call(_vm$$scopedSlots2, finaleParams); if (node) return node; return null; } var getValueRenderWay = function getValueRenderWay(value) { if (["string", "number", "boolean"].includes(_typeof(value))) return "text" /* Text */; if (_typeof(value) === "object") { if (!(value instanceof Array) && value && value.context instanceof Vue) { return "vnode" /* VNode */; } return "jsonstring" /* JsonString */; } return "unknown" /* Unknown */; }; var RenderTNodeTemplate = Vue.extend({ name: "render-tnode-template", functional: true, props: { render: RenderJsTypes, params: null }, render: function render(h2, ctx) { var _ctx$props = ctx.props, render = _ctx$props.render, params = _ctx$props.params; var renderResult = typeof render === "function" ? render(h2, params) : render; var renderWay = getValueRenderWay(renderResult); var renderText = function renderText(c) { return ctx.__proto__._v(c); }; var renderMap = _defineProperty(_defineProperty(_defineProperty({}, "text" /* Text */, function text(c) { return renderText(c); }), "jsonstring" /* JsonString */, function jsonstring(c) { return renderText(JSON.stringify(c, null, 2)); }), "vnode" /* VNode */, function vnode(c) { return c; }); return renderMap[renderWay] ? renderMap[renderWay](renderResult) : h2(); } }); var renderTNodeJSX = function renderTNodeJSX(vm, name, options) { var params = _typeof(options) === "object" && "params" in options ? options.params : null; var slotFirst = _typeof(options) === "object" && "slotFirst" in options ? options.slotFirst : false; var defaultNode = _typeof(options) === "object" && "defaultNode" in options ? options.defaultNode : options; var propsNode = vm[name]; if (propsNode === false || propsNode === null) return; if (propsNode === true && defaultNode) { return handleSlots(vm, params, name) || defaultNode; } if (typeof propsNode === "function") { return propsNode(vm.$createElement, params); } var isPropsEmpty = [void 0, params, ""].includes(propsNode); if ((isPropsEmpty || slotFirst) && (vm.$scopedSlots[camelCase(name)] || vm.$scopedSlots[kebabCase(name)])) { return handleSlots(vm, params, name); } return propsNode; }; var renderTNodeJSXDefault = function renderTNodeJSXDefault(vm, name, options) { var defaultNode = _typeof(options) === "object" && "defaultNode" in options ? options.defaultNode : options; return renderTNodeJSX(vm, name, options) || defaultNode; }; var renderContent = function renderContent(vm, name1, name2, options) { var params = _typeof(options) === "object" && "params" in options ? options.params : null; var defaultNode = _typeof(options) === "object" && "defaultNode" in options && options.defaultNode; defaultNode = _typeof(options) === "object" && "context" in options && options; var toParams = params ? { params: params } : void 0; var node1 = renderTNodeJSX(vm, name1, toParams); var node2 = renderTNodeJSX(vm, name2, toParams); var r = [void 0, null, ""].includes(node1) ? node2 : node1; return [void 0, null, ""].includes(r) ? defaultNode : r; }; export { RenderTNodeTemplate, handleSlots, renderContent, renderTNodeJSX, renderTNodeJSXDefault }; //# sourceMappingURL=render-tnode.js.map