73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
import { col, row } from '../utils.js'
|
|
|
|
class Block {
|
|
constructor(value, options) {
|
|
this.value = value
|
|
this.options = options
|
|
}
|
|
|
|
toHTML() {
|
|
throw new Error(
|
|
'Для данного блока не найден подходящий метод для генерации HTML кода!'
|
|
)
|
|
}
|
|
}
|
|
|
|
export class TitleBlock extends Block {
|
|
constructor(value, options) {
|
|
super(value, options)
|
|
}
|
|
|
|
toHTML() {
|
|
const { tag, styles } = this.options
|
|
return row(col(`<${tag}>${this.value}</${tag}>`), styles)
|
|
}
|
|
}
|
|
|
|
export class TextBlock extends Block {
|
|
constructor(value, options) {
|
|
super(value, options)
|
|
}
|
|
|
|
toHTML() {
|
|
const { options, value } = this
|
|
return row(col(`<p style="margin-bottom: 0;">${value}</p>`), options.styles)
|
|
}
|
|
}
|
|
|
|
export class TextColumnsBlock extends Block {
|
|
constructor(value, options) {
|
|
super(value, options)
|
|
}
|
|
|
|
toHTML() {
|
|
const { options, value } = this
|
|
return row(value.map((item) => col(item)).join(''), options.styles)
|
|
}
|
|
}
|
|
|
|
export class ImageBlock extends Block {
|
|
constructor(value, options) {
|
|
super(value, options)
|
|
}
|
|
|
|
toHTML() {
|
|
const { alt, styles } = this.options
|
|
return row(
|
|
col(`<img src="${this.value}" alt="${alt}" height="250">`),
|
|
styles
|
|
)
|
|
}
|
|
}
|
|
|
|
export class CustomBlock extends Block {
|
|
constructor(value, options) {
|
|
super(value, options)
|
|
}
|
|
|
|
toHTML() {
|
|
const { options, value } = this
|
|
return row(col(value), options.styles)
|
|
}
|
|
}
|