import * as __WEBPACK_EXTERNAL_MODULE__tachybase_schema__ from "@tachybase/schema";
import * as __WEBPACK_EXTERNAL_MODULE_antd__ from "antd";
import * as __WEBPACK_EXTERNAL_MODULE_dayjs__ from "dayjs";
import * as __WEBPACK_EXTERNAL_MODULE__loadConstrueLocale_mjs__ from "./loadConstrueLocale.mjs";
import * as __WEBPACK_EXTERNAL_MODULE__application_Plugin_mjs__ from "../../application/Plugin.mjs";
import * as __WEBPACK_EXTERNAL_MODULE__locale_index_mjs__ from "../../locale/index.mjs";
function _define_property(obj, key, value) {
    if (key in obj) Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
    });
    else obj[key] = value;
    return obj;
}
class LocalePlugin extends __WEBPACK_EXTERNAL_MODULE__application_Plugin_mjs__.Plugin {
    async afterAdd() {
        const api = this.app.apiClient;
        const locale = api.auth.locale;
        try {
            var _data_data, _data_data1, _data_data2, _data_data3, _data_data4;
            const res = await api.request({
                url: 'app:getLang',
                params: {
                    locale
                },
                headers: {
                    'X-Role': 'anonymous'
                }
            });
            const data = null == res ? void 0 : res.data;
            this.locales = (null == data ? void 0 : data.data) || {};
            this.app.use(__WEBPACK_EXTERNAL_MODULE_antd__.ConfigProvider, {
                locale: this.locales.antd,
                popupMatchSelectWidth: false
            });
            this.app.use(__WEBPACK_EXTERNAL_MODULE_antd__.App, {
                component: false
            });
            if (null == data ? void 0 : null === (_data_data = data.data) || void 0 === _data_data ? void 0 : _data_data.lang) {
                var _data_data5, _data_data6;
                api.auth.setLocale(null == data ? void 0 : null === (_data_data5 = data.data) || void 0 === _data_data5 ? void 0 : _data_data5.lang);
                this.app.i18n.changeLanguage(null == data ? void 0 : null === (_data_data6 = data.data) || void 0 === _data_data6 ? void 0 : _data_data6.lang);
            }
            Object.keys((null == data ? void 0 : null === (_data_data1 = data.data) || void 0 === _data_data1 ? void 0 : _data_data1.resources) || {}).forEach((key)=>{
                var _data_data, _data_data1;
                this.app.i18n.addResources(null == data ? void 0 : null === (_data_data = data.data) || void 0 === _data_data ? void 0 : _data_data.lang, key, (null == data ? void 0 : null === (_data_data1 = data.data) || void 0 === _data_data1 ? void 0 : _data_data1.resources[key]) || {});
            });
            (0, __WEBPACK_EXTERNAL_MODULE__tachybase_schema__.setValidateLanguage)(null == data ? void 0 : null === (_data_data2 = data.data) || void 0 === _data_data2 ? void 0 : _data_data2.lang);
            (0, __WEBPACK_EXTERNAL_MODULE__loadConstrueLocale_mjs__.loadConstrueLocale)(null == data ? void 0 : data.data);
            const dayjsLang = __WEBPACK_EXTERNAL_MODULE__locale_index_mjs__.dayjsLocale[null == data ? void 0 : null === (_data_data3 = data.data) || void 0 === _data_data3 ? void 0 : _data_data3.lang] || 'en';
            await import("dayjs/locale/".concat(dayjsLang));
            __WEBPACK_EXTERNAL_MODULE_dayjs__["default"].locale(dayjsLang);
            const updateLocale = await import("dayjs/plugin/updateLocale");
            __WEBPACK_EXTERNAL_MODULE_dayjs__["default"].extend(updateLocale.default);
            const localeSetting = {
                invalidDate: '-'
            };
            __WEBPACK_EXTERNAL_MODULE_dayjs__["default"].updateLocale(dayjsLang, localeSetting);
            window['cronLocale'] = null == data ? void 0 : null === (_data_data4 = data.data) || void 0 === _data_data4 ? void 0 : _data_data4.cron;
        } catch (error) {
            throw error;
        }
    }
    constructor(...args){
        super(...args), _define_property(this, "locales", {});
    }
}
export { LocalePlugin };
