UNPKG

shineout

Version:

Shein 前端组件库

75 lines (57 loc) 1.82 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.destroy = destroy; exports.getComponent = getComponent; var _react = _interopRequireDefault(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _styles = require("./styles"); var _Container = _interopRequireDefault(require("./Container")); var _is = require("../utils/is"); var _config = require("../config"); var elements = {}; var components = {}; function getElement(type, container) { var defaultContainer = (0, _config.getDefaultContainer)(); var div = document.createElement('div'); div.className = (0, _styles.messageClass)('_', type); var target = defaultContainer; if (container && (0, _is.isFunc)(container)) { target = container(); } if (container && container instanceof HTMLElement) { target = container; } target.appendChild(div); elements[type] = div; return div; } function destroy(type) { if (elements[type]) { _reactDom.default.unmountComponentAtNode(elements[type]); var el = elements[type]; if (el && el.parentNode) el.parentNode.removeChild(el); delete elements[type]; } if (components[type]) { delete components[type]; } } function getComponent(_ref) { var position = _ref.position, container = _ref.container; return new Promise(function (resolve) { var component = components[position]; if (component) { resolve(component); } else { _reactDom.default.render(_react.default.createElement(_Container.default, { ref: function ref(comp) { components[position] = comp; resolve(comp); }, onDestory: destroy.bind(null, position) }), getElement(position, container)); } }); }