react-admin-kit
Version:
A react based UI components for admin system
135 lines (128 loc) • 4.27 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.delGlobal = delGlobal;
exports.getGlobal = getGlobal;
exports.myMergeOptions = exports.myMergeBoolean = exports.mergeOptions = void 0;
Object.defineProperty(exports, "normalizeTree", {
enumerable: true,
get: function get() {
return _treeUtil.normalizeTree;
}
});
exports.setGlobal = setGlobal;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _mergeOptions2 = _interopRequireDefault(require("merge-options"));
var _isBoolean = _interopRequireDefault(require("lodash/isBoolean"));
var _treeUtil = require("./treeUtil");
// const _mergeOptions = require('merge-options');
/**
* 在全局设置变量
* @param name
* @param data
*/
function setGlobal(name, data) {
// 浏览器环境
if (typeof window !== 'undefined') {
if (!window[name]) {
window[name] = {};
}
window[name] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, window[name]), data);
} else {
// node 环境, 用于预渲染
if (!global[name]) {
global[name] = {};
}
global[name] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, global[name]), data);
}
}
/**
* 获取全局数据
* 可传多个参数, 获取不到返回 undefined
* @param names
* @returns
*/
function getGlobal() {
var obj = typeof window !== 'undefined' ? window : global;
for (var i = 0; i < arguments.length; i++) {
var name = i < 0 || arguments.length <= i ? undefined : arguments[i];
if (obj[name] === undefined) {
return;
}
obj = obj[name];
}
return obj;
}
/**
* 删除全局变量中的字体
* 参数可以传多个, 只删除最后一个字段
* @param names
* @returns
*/
function delGlobal() {
var obj = typeof window !== 'undefined' ? window : global;
for (var i = 0; i < arguments.length; i++) {
var name = i < 0 || arguments.length <= i ? undefined : arguments[i];
if (obj[name] === undefined) {
return;
}
// 最后一个字段是要删除的
if (i === arguments.length - 1) {
delete obj[name];
}
obj = obj[name];
}
}
var mergeOptions = exports.mergeOptions = _mergeOptions2.default.bind({
ignoreUndefined: true
});
function isPlainObject(value) {
if ((0, _typeof2.default)(value) !== 'object' || value === null) {
return false;
}
var prototype = Object.getPrototypeOf(value);
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
}
/**
* 合并全局属性和组件属性
* 组件属性的优先级更高
* 1. 组件属性为 false 时即为 false
* 2. 组件属性为 undefined 时走全局属性
* 3. 组件属性为对象时,全局属性不是对象时, 不用管全局属性
* 4. 组件属性为对象时,与全局属性合并
*/
var myMergeOptions = exports.myMergeOptions = function myMergeOptions(globalOption, option, defaultValue) {
/**
* 内部调用
* 只合并两个值(本地和全局)
* 本地为 false 即为 false
* 本地为 undefined 走全局
* 本地为对象,而全局不是对象,不用管全局
* 两边都是对象,合并两边
*/
var _innerMerge = function _innerMerge(globalOption, localOption) {
if (localOption === false) return false;
if (localOption === undefined) return globalOption;
if (isPlainObject(localOption) && !isPlainObject(globalOption)) {
return localOption;
}
return mergeOptions(globalOption, localOption);
};
return _innerMerge(defaultValue, _innerMerge(globalOption, option));
};
/**
* 合并 boolean 类型的全局属性和组件属性
* 组件属性的优先级更高
*/
var myMergeBoolean = exports.myMergeBoolean = function myMergeBoolean(global, local, defaultValue) {
if ((0, _isBoolean.default)(local)) {
return local;
} else if ((0, _isBoolean.default)(global)) {
return global;
} else {
return defaultValue;
}
};