"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TextWidget = void 0;
var shared_1 = require("@designable/shared");
var core_1 = require("@designable/core");
var reactive_vue_1 = require("@formily/reactive-vue");
var vue_demi_1 = require("vue-demi");
var vnode_1 = require("../../utils/vnode");
var TextWidgetComponent = (0, vue_demi_1.defineComponent)({
    props: {
        componentName: String,
        sourceName: String,
        token: String,
        defaultMessage: String,
    },
    setup: function (props, _a) {
        var slots = _a.slots;
        var takeLocale = function (message) {
            if ((0, shared_1.isStr)(message))
                return message;
            if ((0, shared_1.isPlainObj)(message)) {
                var lang = core_1.GlobalRegistry.getDesignerLanguage();
                for (var key in message) {
                    if (key.toLocaleLowerCase() === lang)
                        return message[key];
                }
                return;
            }
            return message;
        };
        var takeMessage = function (token) {
            if (!token)
                return;
            token = (0, vue_demi_1.isVNode)(token) ? (0, vnode_1.isText)(token) ? token.children : token : token;
            var message = (0, shared_1.isStr)(token)
                ? core_1.GlobalRegistry.getDesignerMessage(token)
                : token;
            if (message)
                return takeLocale(message);
            return token;
        };
        /**
         * 子节点为TextNode的vnode
         * 子节点为i18n对象
         */
        return function () {
            var _a, _b;
            return (<>
        {takeMessage((_b = (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)) === null || _b === void 0 ? void 0 : _b[0]) ||
                    takeMessage(props.token) ||
                    takeMessage(props.defaultMessage)}
      </>);
        };
    },
});
exports.TextWidget = (0, reactive_vue_1.observer)(TextWidgetComponent);
//# sourceMappingURL=index.jsx.map