core-cde
Version:
92 lines • 3.48 kB
JavaScript
;
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