import { isStr, isPlainObj } from '@designable/shared';
import { GlobalRegistry } from '@designable/core';
import { observer } from '@formily/reactive-vue';
import { defineComponent, isVNode } from 'vue-demi';
import { isText } from '../../utils/vnode';
var TextWidgetComponent = defineComponent({
    props: {
        componentName: String,
        sourceName: String,
        token: String,
        defaultMessage: String,
    },
    setup: function (props, _a) {
        var slots = _a.slots;
        var takeLocale = function (message) {
            if (isStr(message))
                return message;
            if (isPlainObj(message)) {
                var lang = 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 = isVNode(token) ? isText(token) ? token.children : token : token;
            var message = isStr(token)
                ? 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)}
      </>);
        };
    },
});
export var TextWidget = observer(TextWidgetComponent);
//# sourceMappingURL=index.jsx.map