UNPKG

fox-block-builder

Version:

Maintainable code for loop slack-block-kit-like modal builder

124 lines 5.1 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModalRdo = exports.ModalViewRdo = void 0; const class_transformer_1 = require("class-transformer"); const modal_block_rdo_1 = require("./modal-block.rdo"); const findBlockByParams = (block, params) => { return Object.keys(params) .map((key) => { var _a; switch (key) { case 'access': /** Ищем также по доступу */ return block.access === params.access; case 'forTeams': /** Ищем также по командам */ return (_a = block.forTeams) === null || _a === void 0 ? void 0 : _a.some((teamId) => { var _a; return (_a = params.forTeams) === null || _a === void 0 ? void 0 : _a.includes(teamId); }); case 'customField': return 'customField' in block ? block.customField === params.customField : true; } }) .every((v) => !!v); }; /** Задает класс блока по его типу */ const setBlockType = (block) => { const type = block.type; switch (type) { case 'divider': return (0, class_transformer_1.plainToInstance)(modal_block_rdo_1.DividerBlockRdo, block); case 'input': return (0, class_transformer_1.plainToInstance)(modal_block_rdo_1.InputBlockRdo, block); case 'section': return (0, class_transformer_1.plainToInstance)(modal_block_rdo_1.SectionBlockRdo, block); case 'header': return (0, class_transformer_1.plainToInstance)(modal_block_rdo_1.HeaderBlockRdo, block); } }; const transformBlockType = ({ value }) => value === null || value === void 0 ? void 0 : value.map((block) => setBlockType(block)); class ModalViewRdo { constructor() { this.private_metadata = '{}'; this.blocks = []; } filterBlocks(filterFn) { const isDefinedFilter = (b) => !!b; this.blocks = this.blocks.filter(filterFn || isDefinedFilter); return this; } /** Получение блока по айди */ getBlock(blockId, params) { return this.blocks.find((block) => { const idOk = block.block_id.includes(blockId); /** Задаем метч по параметрам */ const paramOk = params ? findBlockByParams(block, params) : true; return paramOk && idOk; }); } /** Убираем блоки по (части) ID и параметрам */ removeBlocksById(blockIdOrPart, params) { this.blocks = this.blocks.filter((block) => { const idFound = block.block_id.includes(blockIdOrPart); /** Задаем метч по параметрам */ const paramFound = params ? findBlockByParams(block, params) : false; return !paramFound || !idFound; }); return this; } } exports.ModalViewRdo = ModalViewRdo; __decorate([ (0, class_transformer_1.Exclude)() ], ModalViewRdo.prototype, "modalName", void 0); __decorate([ (0, class_transformer_1.Exclude)() ], ModalViewRdo.prototype, "type", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalViewRdo.prototype, "callback_id", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalViewRdo.prototype, "private_metadata", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalViewRdo.prototype, "title", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalViewRdo.prototype, "submit", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalViewRdo.prototype, "close", void 0); __decorate([ (0, class_transformer_1.Expose)(), (0, class_transformer_1.Transform)(transformBlockType) ], ModalViewRdo.prototype, "blocks", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalViewRdo.prototype, "fetchValues", void 0); class ModalRdo { constructor() { this.map = null; } } exports.ModalRdo = ModalRdo; __decorate([ (0, class_transformer_1.Expose)() ], ModalRdo.prototype, "name", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalRdo.prototype, "type", void 0); __decorate([ (0, class_transformer_1.Expose)() ], ModalRdo.prototype, "map", void 0); __decorate([ (0, class_transformer_1.Expose)(), (0, class_transformer_1.Type)(() => ModalViewRdo) ], ModalRdo.prototype, "view", void 0); //# sourceMappingURL=modal.rdo.js.map