fox-block-builder
Version:
Maintainable code for loop slack-block-kit-like modal builder
59 lines • 2.46 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.FormBuilder = exports.MenuBuilder = exports.PageBuilder = exports.PluginModalBuilder = void 0;
const internal_1 = require("../../internal");
const enum_1 = require("../../internal/enum");
class PluginModalBuilder {
constructor({ view, type, }) {
var _a;
this.view = view.buildToObject();
this.type = type;
/** Фильтруем пустые блоки */
this.view.blocks = (_a = this.view.blocks) === null || _a === void 0 ? void 0 : _a.filter((b) => !!b);
if (!this.view.close) {
this.view.close = { text: 'Назад', type: internal_1.ObjectType.Text };
}
if (!this.view.submit) {
this.view.close = { text: 'Отправить', type: internal_1.ObjectType.Text };
}
}
}
exports.PluginModalBuilder = PluginModalBuilder;
class PageBuilder extends PluginModalBuilder {
constructor({ view }) {
super({ view, type: enum_1.LoopPluginModalType.Page });
}
}
exports.PageBuilder = PageBuilder;
class MenuBuilder extends PluginModalBuilder {
constructor({ view }) {
super({ view, type: enum_1.LoopPluginModalType.Menu });
}
}
exports.MenuBuilder = MenuBuilder;
/** Конструктор формы */
class FormBuilder extends PluginModalBuilder {
constructor({ view, callbackId, meta, map }) {
/** Задаем callback_id и метаданные модалки */
const formView = view
.callbackId(callbackId)
.privateMetaData(JSON.stringify(meta !== null && meta !== void 0 ? meta : '{}'));
/** Отправляем их в базовый конструктор */
super({ view: formView, type: enum_1.LoopPluginModalType.Form });
this.type = enum_1.LoopPluginModalType.Form;
/** Ставим тип модалки */
this.type = enum_1.LoopPluginModalType.Form;
/** Задаем параметры видимости блоков */
this.map = map === null || map === void 0 ? void 0 : map.values;
}
addMeta(meta) {
var _a;
this.view.private_metadata = JSON.stringify({
...JSON.parse((_a = this.view.private_metadata) !== null && _a !== void 0 ? _a : '{}'),
...meta,
});
return this;
}
}
exports.FormBuilder = FormBuilder;
//# sourceMappingURL=plugin-modal.builder.js.map
;