"use strict";
var __webpack_require__ = {};
(()=>{
    __webpack_require__.n = function(module) {
        var getter = module && module.__esModule ? function() {
            return module['default'];
        } : function() {
            return module;
        };
        __webpack_require__.d(getter, {
            a: getter
        });
        return getter;
    };
})();
(()=>{
    __webpack_require__.d = function(exports1, definition) {
        for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
            enumerable: true,
            get: definition[key]
        });
    };
})();
(()=>{
    __webpack_require__.o = function(obj, prop) {
        return Object.prototype.hasOwnProperty.call(obj, prop);
    };
})();
(()=>{
    __webpack_require__.r = function(exports1) {
        if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
            value: 'Module'
        });
        Object.defineProperty(exports1, '__esModule', {
            value: true
        });
    };
})();
var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, {
    Json: ()=>Json
});
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
const external_react_namespaceObject = require("react");
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
const schema_namespaceObject = require("@tachybase/schema");
const external_antd_namespaceObject = require("antd");
const Json = /*#__PURE__*/ external_react_default().forwardRef((param, ref)=>{
    let { value, onChange, space = 2, ...props } = param;
    const field = (0, schema_namespaceObject.useField)();
    const [text, setText] = (0, external_react_namespaceObject.useState)('');
    (0, external_react_namespaceObject.useEffect)(()=>{
        try {
            null != value ? setText(JSON.stringify(value, null, space)) : setText(void 0);
        } catch (ex) {}
    }, [
        space,
        value
    ]);
    return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Input.TextArea, {
        ...props,
        style: {
            fontSize: '80%',
            fontFamily: "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace",
            ...props.style
        },
        ref: ref,
        value: text,
        onChange: (ev)=>{
            setText(ev.target.value);
            try {
                '' !== ev.target.value.trim() && JSON.parse(ev.target.value);
                if ('' !== ev.target.value.trim()) JSON.parse(ev.target.value);
                field.setFeedback({});
            } catch (err) {
                field.setFeedback({
                    type: 'error',
                    code: 'JSONSyntaxError',
                    messages: [
                        err.message
                    ]
                });
            }
        },
        onBlur: (ev)=>{
            try {
                const v = '' !== ev.target.value.trim() ? JSON.parse(ev.target.value) : null;
                field.setFeedback({});
                null == onChange || onChange(v);
            } catch (err) {
                field.setFeedback({
                    type: 'error',
                    code: 'JSONSyntaxError',
                    messages: [
                        err.message
                    ]
                });
            }
        }
    });
});
Json.displayName = 'Json';
var __webpack_export_target__ = exports;
for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
    value: true
});
