UNPKG

core-cde

Version:

92 lines 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Widget = void 0; const TypeComponent_1 = require("../TypeComponent"); const BaseWidget_1 = require("../BaseWidget"); const List_1 = require("./List"); const Text_1 = require("./Text"); const Table_1 = require("./Table"); const Errors_1 = require("../Errors"); const Video_1 = require("./Video"); const Image_1 = require("./Image"); const HyperLink_1 = require("./HyperLink"); const Heading_1 = require("./Heading"); const CheckList_1 = require("./CheckList"); /** * Widget */ class Widget { /** * Создать экземпляр класса виджета по типу * @param type тип * @param id id * @returns Экземпляр класса */ static createWidgetByType(type, id) { if (!type || !id) { throw new Errors_1.EmptyParametersError('createWidgetByType'); } try { return this.getClassByType(type, id); } catch (error) { throw error; } } /** * Создать экземпляр класса виджета по json * @param jsonStr валидный JSON * @returns Экземпляр класса */ static createWidgetByJSON(jsonStr, ds) { var _a; if (!jsonStr) { throw new Errors_1.EmptyParametersError('createWidgetByJSON'); } try { const type = (_a = JSON.parse(jsonStr)) === null || _a === void 0 ? void 0 : _a.type; if (!type) { throw new Error('UnknownType'); } const widget = this.getClassByType(type); return widget.constructor['fromJSON'](jsonStr, ds); } catch (error) { throw error; } } /** * Получить класс по типу виджета * @param type тип виджета * @returns класс виджета */ static getClassByType(type, id) { switch (type) { case TypeComponent_1.TypeComponent.headerLvlOne: case TypeComponent_1.TypeComponent.headerLvlTwo: case TypeComponent_1.TypeComponent.headerLvlThree: case TypeComponent_1.TypeComponent.headerLvlFour: return new Heading_1.Heading(type, id); case TypeComponent_1.TypeComponent.paragraph: case TypeComponent_1.TypeComponent.quote: return new Text_1.Text(type, id); case TypeComponent_1.TypeComponent.link: return new HyperLink_1.HyperLink(type, id); case TypeComponent_1.TypeComponent.listMark: case TypeComponent_1.TypeComponent.listNum: return new List_1.List(type, id); case TypeComponent_1.TypeComponent.listCheck: return new CheckList_1.CheckList(type, id); case TypeComponent_1.TypeComponent.table: return new Table_1.TableWidget(type, id); case TypeComponent_1.TypeComponent.video: return new Video_1.VideoWidget(type, id); case TypeComponent_1.TypeComponent.image: return new Image_1.ImageWidget(type, id); default: return new BaseWidget_1.BaseWidget(type, id); } } } exports.Widget = Widget; //# sourceMappingURL=Widget.js.map