@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
106 lines (82 loc) • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useModal = useModal;
var _lodashEs = require("lodash");
var _vue = require("vue");
var _env = require("../../../_util/env");
var _warning = _interopRequireDefault(require("../../../_util/warning"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @format */
var dataTransferRef = (0, _vue.reactive)({});
var visibleData = (0, _vue.reactive)({});
/**
* @description: Applicable to independent modal and call outside
*/
function useModal() {
var modalRef = (0, _vue.ref)(null);
var loadedRef = (0, _vue.ref)(false);
var uidRef = (0, _vue.ref)('');
function register(modalMethod) {
var uuid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
uidRef.value = uuid;
(0, _env.isProdMode)() && (0, _vue.onUnmounted)(function () {
modalRef.value = null;
loadedRef.value = false;
dataTransferRef[(0, _vue.unref)(uidRef)] = null;
});
if ((0, _vue.unref)(loadedRef) && (0, _env.isProdMode)() && modalMethod === (0, _vue.unref)(modalRef)) {
return;
}
modalRef.value = modalMethod;
modalMethod.emitVisible = function (visible, uid) {
visibleData[uid] = visible;
};
}
var getInstance = function getInstance() {
var instance = (0, _vue.unref)(modalRef);
if (!instance) {
(0, _warning.default)('useModal instance is undefined!');
}
return instance;
};
var methods = {
setModalProps: function setModalProps(props) {
var _a;
(_a = getInstance()) === null || _a === void 0 ? void 0 : _a.setModalProps(props);
},
getVisible: (0, _vue.computed)(function () {
return visibleData[~~(0, _vue.unref)(uidRef)];
}),
redoModalHeight: function redoModalHeight() {
var _a, _b;
(_b = (_a = getInstance()) === null || _a === void 0 ? void 0 : _a.redoModalHeight) === null || _b === void 0 ? void 0 : _b.call(_a);
},
openModal: function openModal() {
var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
var data = arguments.length > 1 ? arguments[1] : undefined;
var openOnSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var _a;
(_a = getInstance()) === null || _a === void 0 ? void 0 : _a.setModalProps({
visible: visible
});
if (!data) {
return;
}
if (openOnSet) {
dataTransferRef[(0, _vue.unref)(uidRef)] = null;
dataTransferRef[(0, _vue.unref)(uidRef)] = (0, _vue.toRaw)(data);
return;
}
var equal = (0, _lodashEs.isEqual)((0, _vue.toRaw)(dataTransferRef[(0, _vue.unref)(uidRef)]), (0, _vue.toRaw)(data));
if (!equal) {
dataTransferRef[(0, _vue.unref)(uidRef)] = (0, _vue.toRaw)(data);
}
}
};
return {
register: register,
methods: methods
};
}