UNPKG

@difizen/mana-app

Version:

206 lines (205 loc) 9.41 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.ModalService = exports.ModalItemView = void 0; var _manaObservable = require("@difizen/mana-observable"); var _manaSyringe = require("@difizen/mana-syringe"); var _modalProtocol = require("./modal-protocol"); var _dec, _dec2, _dec3, _class, _descriptor, _descriptor2, _descriptor3, _dec4, _dec5, _class2, _class3, _descriptor4; function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; } function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); } var ModalItemView = exports.ModalItemView = (_dec = (0, _manaObservable.prop)(), _dec2 = (0, _manaObservable.prop)(), _dec3 = (0, _manaObservable.prop)(), (_class = /*#__PURE__*/function () { function ModalItemView(modalItem) { var _this = this; _classCallCheck(this, ModalItemView); _initializerDefineProperty(this, "modalItem", _descriptor, this); _initializerDefineProperty(this, "modalVisible", _descriptor2, this); _initializerDefineProperty(this, "modalData", _descriptor3, this); this.open = function (data) { _this.modalData = data; _this.modalVisible = true; }; this.close = function () { _this.modalVisible = false; _this.modalData = undefined; }; this.disposed = false; this.modalItem = modalItem; } _createClass(ModalItemView, [{ key: "shouldRender", value: function shouldRender() { if (this.modalVisible !== true || this.disposed) { return false; } if (!this.modalItem.component) { console.warn("".concat(this.modalItem.id, " is not valid modal")); return false; } if (this.modalItem.shouldRender) { return this.modalItem.shouldRender(this.modalData); } return true; } }, { key: "getModalProps", value: function getModalProps() { var props = { modalItem: this.modalItem, data: this.modalData, visible: this.modalVisible, close: this.close }; return props; } }, { key: "dispose", value: function dispose() { this.disposed = true; this.close(); } }]); return ModalItemView; }(), (_descriptor = _applyDecoratedDescriptor(_class.prototype, "modalItem", [_dec], { configurable: true, enumerable: true, writable: true, initializer: null }), _descriptor2 = _applyDecoratedDescriptor(_class.prototype, "modalVisible", [_dec2], { configurable: true, enumerable: true, writable: true, initializer: function initializer() { return false; } }), _descriptor3 = _applyDecoratedDescriptor(_class.prototype, "modalData", [_dec3], { configurable: true, enumerable: true, writable: true, initializer: null })), _class)); var ModalService = exports.ModalService = (_dec4 = (0, _manaSyringe.singleton)(), _dec5 = (0, _manaObservable.prop)(), _dec4(_class2 = (_class3 = /*#__PURE__*/function () { function ModalService(contributions) { var _this2 = this; _classCallCheck(this, ModalService); this.modals = new Map(); _initializerDefineProperty(this, "modalViewList", _descriptor4, this); this.openModal = function (modal, data) { var modalId = typeof modal === 'string' ? modal : modal.id; var exist = _this2.getModal(modalId); if (exist) { var modalView = _this2.getOrCreateModalView(exist); modalView.open(data); } }; this.closeModal = function (modal) { var _this2$modalViewList$; var modalId = typeof modal === 'string' ? modal : modal.id; (_this2$modalViewList$ = _this2.modalViewList.find(function (item) { return item.modalItem.id === modalId; })) === null || _this2$modalViewList$ === void 0 || _this2$modalViewList$.close(); }; this.closeAllModal = function () { _this2.modalViewList.forEach(function (item) { return item.close(); }); }; this.getModalProps = function (itemView) { return itemView.getModalProps(); }; this.shouldRenderModal = function (itemView) { return itemView.shouldRender(); }; this.contributions = contributions; } ModalService = (0, _manaSyringe.contrib)(_modalProtocol.ModalContribution)(ModalService, undefined, 0) || ModalService; _createClass(ModalService, [{ key: "init", value: function init() { var _this3 = this; this.contributions.getContributions().forEach(function (contribution) { if (contribution.registerModal) { var modalItem = contribution.registerModal(); _this3.registerModal(modalItem); } if (contribution.registerModals) { var modalItems = contribution.registerModals(); _this3.registerModals(modalItems); } }); } }, { key: "hasModal", value: function hasModal(modal) { var modalId = typeof modal === 'string' ? modal : modal.id; return this.modals.has(modalId); } }, { key: "getModal", value: function getModal(modal) { var modalId = typeof modal === 'string' ? modal : modal.id; return this.modals.get(modalId); } }, { key: "registerModal", value: function registerModal(modal) { this.modals.set(modal.id, modal); } }, { key: "registerModals", value: function registerModals(modals) { var _this4 = this; modals.forEach(function (item) { _this4.registerModal(item); }); } }, { key: "unregisterModal", value: function unregisterModal(modal) { this.modals.delete(modal.id); } }, { key: "getOrCreateModalView", value: function getOrCreateModalView(modal) { var viewInstance = this.modalViewList.find(function (item) { return item.modalItem.id === modal.id; }); if (!viewInstance) { var modalItem = this.getModal(modal); if (!modalItem) { throw Error("should have modal ".concat(modal.id, " registed")); } viewInstance = new ModalItemView(modalItem); this.modalViewList.push(viewInstance); } return viewInstance; } }, { key: "renderModal", value: function renderModal(itemView) { if (!this.shouldRenderModal(itemView)) { return null; } if (itemView.modalItem.render) { return itemView.modalItem.render(this.getModalProps(itemView)); } return (0, _modalProtocol.renderModal)(itemView.modalItem.component, this.getModalProps(itemView)); } }]); return ModalService; }(), (_descriptor4 = _applyDecoratedDescriptor(_class3.prototype, "modalViewList", [_dec5], { configurable: true, enumerable: true, writable: true, initializer: function initializer() { return []; } })), _class3)) || _class2);