"use strict";
var __webpack_require__ = {};
(()=>{
    __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__, {
    PermissionContext: ()=>PermissionContext,
    SettingCenterPermissionProvider: ()=>SettingCenterPermissionProvider,
    PermissionProvider: ()=>PermissionProvider
});
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
const external_react_namespaceObject = require("react");
const external_antd_namespaceObject = require("antd");
const external_react_i18next_namespaceObject = require("react-i18next");
const index_js_namespaceObject = require("../../../api-client/index.js");
const external_record_provider_index_js_namespaceObject = require("../../../record-provider/index.js");
const SettingCenterPermissionProvider = (props)=>{
    var _currentRecord_snippets;
    const { currentRecord } = (0, external_react_namespaceObject.useContext)(PermissionContext);
    if (!(null == currentRecord ? void 0 : null === (_currentRecord_snippets = currentRecord.snippets) || void 0 === _currentRecord_snippets ? void 0 : _currentRecord_snippets.includes('pm.*'))) return null;
    return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
        children: props.children
    });
};
const PermissionContext = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(null);
PermissionContext.displayName = 'PermissionContext';
const PermissionProvider = (props)=>{
    const api = (0, index_js_namespaceObject.useAPIClient)();
    const record = (0, external_record_provider_index_js_namespaceObject.useRecord)();
    const { t } = (0, external_react_i18next_namespaceObject.useTranslation)();
    const { message } = external_antd_namespaceObject.App.useApp();
    const { snippets } = record;
    null == snippets || snippets.forEach((key)=>{
        record[key] = true;
    });
    const [currentRecord, setCurrentRecord] = (0, external_react_namespaceObject.useState)(record);
    return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PermissionContext.Provider, {
        value: {
            currentRecord,
            update: async (field, form)=>{
                const { path, value } = field.getState();
                if ([
                    'ui.*',
                    'pm',
                    'pm.*'
                ].includes(path)) {
                    const resource = api.resource('roles.snippets', record.name);
                    if (value) await resource.add({
                        values: [
                            path
                        ]
                    });
                    else await resource.remove({
                        values: [
                            path
                        ]
                    });
                    setCurrentRecord({
                        ...currentRecord,
                        ...form.values,
                        [path]: value
                    });
                } else {
                    await api.resource('roles').update({
                        filterByTk: record.name,
                        values: form.values
                    });
                    setCurrentRecord({
                        ...currentRecord,
                        ...form.values
                    });
                }
                message.success(t('Saved successfully'));
            }
        },
        children: props.children
    });
};
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
});
