UNPKG

core-cde

Version:

110 lines 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.List = void 0; const Errors_1 = require("../Errors"); const TypeComponent_1 = require("../TypeComponent"); const Text_1 = require("./Text"); class List extends Text_1.Text { constructor(type, id) { super(type, id); /** * Тип списка */ this.types = null; /** * Номер позиции в списке */ this.counter = 1; /** * уровень вложенности */ this.level = 1; } /** * Проперка компонента на тип списка * @param type Тип списка * @returns true если виджет список */ static checkTypeList(type) { if (!type) { throw new Errors_1.EmptyParametersError('checkTypeList'); } return [TypeComponent_1.TypeComponent.listMark, TypeComponent_1.TypeComponent.listNum].includes(type); } static down(node) { if (!(node.value instanceof List)) { return; } if (!node.previous || !(node.previous.value instanceof List) || node.previous.value.type !== TypeComponent_1.TypeComponent.listNum) { node.value.counter = 1; if (node.next) { this.down(node.next); } return; } if (node.previous.value.level === node.value.level) { node.value.counter = node.previous.value.counter + 1; } if (node.value.level > node.previous.value.level) { node.value.counter = 1; } if (node.value.level < node.previous.value.level) { const res = this.getNodeCurrentLvl(node, node.value.level); if (!res) { node.value.counter = 1; } else { node.value.counter = (res).value.counter + 1; } } // node.value?.$eventChangeState.emit(EventNames.CHANGE_STATE_WIDGET, true); if (node.next) { this.down(node.next); } } static isList(type) { return [TypeComponent_1.TypeComponent.listNum, TypeComponent_1.TypeComponent.listMark].includes(type); } static getNodeCurrentLvl(node, level) { if (!node.previous || (!(node.previous.value instanceof List))) { return node; } if (node.previous.value.level === level) { return node.previous; } else { return this.getNodeCurrentLvl(node.previous, level); } } /** * Получить объект класса List из json * @param json валидная json строка * @returns объект класса List */ static fromJSON(json) { try { return Object.assign(new List(null, null), JSON.parse(json)); } catch (error) { throw new Errors_1.JsonParseError('List widget'); } } /** * Получить объект для сериализации * @returns Объект для сериализации */ toJSON() { return Object.assign({}, null, { id: this.id, type: this.type, styles: this.styles, value: this.value, textAlign: this.textAlign, counter: this.counter, level: this.level, types: this.types }); } } exports.List = List; //# sourceMappingURL=List.js.map