mirror of
https://github.com/codex-team/editor.js
synced 2024-06-10 09:52:36 +02:00
91 lines
1.8 KiB
TypeScript
91 lines
1.8 KiB
TypeScript
|
import {
|
||
|
BaseTool,
|
||
|
BlockToolConstructorOptions,
|
||
|
BlockToolData,
|
||
|
ConversionConfig
|
||
|
} from '../../../../types';
|
||
|
|
||
|
/**
|
||
|
* Simplified Header for testing
|
||
|
*/
|
||
|
export class SimpleHeader implements BaseTool {
|
||
|
private _data: BlockToolData;
|
||
|
private element: HTMLHeadingElement;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @param options - constructor options
|
||
|
*/
|
||
|
constructor({ data }: BlockToolConstructorOptions) {
|
||
|
this._data = data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return Tool's view
|
||
|
*
|
||
|
* @returns {HTMLHeadingElement}
|
||
|
* @public
|
||
|
*/
|
||
|
public render(): HTMLHeadingElement {
|
||
|
this.element = document.createElement('h1');
|
||
|
|
||
|
this.element.contentEditable = 'true';
|
||
|
this.element.innerHTML = this._data.text;
|
||
|
|
||
|
return this.element;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param data - saved data to merger with current block
|
||
|
*/
|
||
|
public merge(data: BlockToolData): void {
|
||
|
this.data = {
|
||
|
text: this.data.text + data.text,
|
||
|
level: this.data.level,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Extract Tool's data from the view
|
||
|
*
|
||
|
* @param toolsContent - Text tools rendered view
|
||
|
*/
|
||
|
public save(toolsContent: HTMLHeadingElement): BlockToolData {
|
||
|
return {
|
||
|
text: toolsContent.innerHTML,
|
||
|
level: 1,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Allow Header to be converted to/from other blocks
|
||
|
*/
|
||
|
public static get conversionConfig(): ConversionConfig {
|
||
|
return {
|
||
|
export: 'text', // use 'text' property for other blocks
|
||
|
import: 'text', // fill 'text' property from other block's export string
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Data getter
|
||
|
*/
|
||
|
private get data(): BlockToolData {
|
||
|
this._data.text = this.element.innerHTML;
|
||
|
this._data.level = 1;
|
||
|
|
||
|
return this._data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Data setter
|
||
|
*/
|
||
|
private set data(data: BlockToolData) {
|
||
|
this._data = data;
|
||
|
|
||
|
if (data.text !== undefined) {
|
||
|
this.element.innerHTML = this._data.text || '';
|
||
|
}
|
||
|
}
|
||
|
}
|