UNPKG

pwfe-dom

Version:
127 lines (105 loc) 4.55 kB
/** * Created by chkui on 2017/6/19. * 基础工具模块 */ 'use strict'; /** * 获取组件的显示名称 * @param WrappedComponent 包装组件 * @returns {*|string} */ Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var getComponentName = exports.getComponentName = function getComponentName(WrappedComponent) { return WrappedComponent.displayName || WrappedComponent.name || 'Component'; }; /** * 判断当前的运行环境是否为服务器环境。 * 1)浏览器和服务器通用 * @return {boolean}。true: 浏览器环境,false:服务器环境 */ var isServerEvn = exports.isServerEvn = function isServerEvn() { return (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global.global === global; }; /** * 基础类异步管理回调类 * @constructor {object} params{ * @param {function} loader (onLoad)=>{ * //load complete then * onLoad(loadResult); * }。 * 初始化完成的回调,由于初始化方法是由外部执行,所以当外部完成初始化之后,需要掉这个接口并传入初始化结果通知实例完成初始化。 * 或者外部直接执行asyncLoader::onLoad(result) 方法 * } */ var asyncLoader = exports.asyncLoader = function () { function asyncLoader(params) { _classCallCheck(this, asyncLoader); this.handleList = []; this.result = null; this.onLoad = this.onLoad.bind(this); params && params.loader && params.loader(this.onLoad); } /** * 注册初始化完成后需要回调通知的方法 * @param callback */ _createClass(asyncLoader, [{ key: 'register', value: function register(callback) { this.result ? callback(this.result) : this.handleList.push(callback); } /** * 加载完成的方法 * @param result */ }, { key: 'onLoad', value: function onLoad(result) { this.result = result; this.executeHandle(); } /** * 加载完成后执行的方法,非外部接口 */ }, { key: 'executeHandle', value: function executeHandle() { var _this = this; this.handleList && this.handleList.map(function (i) { return i(_this.result); }); this.handleList = null; //限定只能执行一次 } }]); return asyncLoader; }(); /** * 获取src中key的值, 不存在则返回null * @param {object} src 要被获取值的对象,方法或看对象中是否包含名为key的属性 {}.key = 'value'; * @param key 要获取值的属性 * @returns {*} 返回对应的属性值,不存在则返回 undefined */ var safeGetValue = exports.safeGetValue = function safeGetValue(src, key) { var rlt = void 0; try { if (key.startsWith("[")) { rlt = eval("src" + key); } else { rlt = eval("src." + key); } } catch (e) {} return rlt; }; /** * 判断当前内容是一个React的类还是一个元素(实例)。类=Component,元素(实例)=<Component/> * 当传入的参数el是一个未定义对象时(undefined)也认为是一个元素,因为React中undefined表示什么都不显示 * @param el 要判断的对象 */ var isElement = exports.isElement = function isElement(el) { return 'object' === (typeof el === 'undefined' ? 'undefined' : _typeof(el)) || 'undefined' === typeof el; };