11import './index.css' ;
22import { getLineStartPosition } from './utils/string' ;
33import { IconBrackets } from '@codexteam/icons' ;
4- import { API , PasteEvent } from '@editorjs/editorjs' ;
4+ import { API , BlockToolConstructorOptions , BlockTool , PasteEvent } from '@editorjs/editorjs' ;
55
66/**
77 * CodeTool for Editor.js
@@ -11,7 +11,7 @@ import { API, PasteEvent } from '@editorjs/editorjs';
1111 */
1212
1313/**
14- * @description CodeTool's data
14+ * @description CodeTool generates data in this format
1515 */
1616export interface CodeData {
1717 code : string ;
@@ -42,54 +42,34 @@ interface CodeToolNodes {
4242 textarea : HTMLTextAreaElement | null ;
4343}
4444
45- /**
46- * @description Constructor arguments for CodeTool
47- */
48- interface ConstructorArgs {
49- /** Previously saved data */
50- data : CodeData ;
51- /** User config for the tool */
52- config : CodeConfig ;
53- /** Editor.js API */
54- api : API ;
55- /** Read-only mode flag */
56- readOnly : boolean ;
57- }
58-
5945/**
6046 * Code Tool for the Editor.js allows to include code examples in your articles.
6147 */
62- export default class CodeTool {
48+ export default class CodeTool implements BlockTool {
6349 /**
6450 * Editor.js API
65- * @private
6651 */
6752 private api : API ;
6853 /**
6954 * Read-only mode flag
70- * @private
7155 */
7256 private readOnly : boolean ;
7357 /**
7458 * CodeTool's placeholder
75- * @private
7659 */
7760 private placeholder : string ;
7861 /**
7962 * CodeTool's CSS
80- * @private
8163 */
8264 private CSS : CodeToolCSS ;
8365 /**
8466 * CodeTool nodes
85- * @private
8667 */
8768 private nodes : CodeToolNodes ;
8869 /**
8970 * CodeTool's data
90- * @private
9171 */
92- private _data : CodeData ;
72+ private _data ! : CodeData ;
9373
9474 /**
9575 * Notify core that read-only mode is supported
@@ -124,7 +104,7 @@ export default class CodeTool {
124104 * @param {object } options.api - Editor.js API
125105 * @param {boolean } options.readOnly - read only mode flag
126106 */
127- constructor ( { data, config, api, readOnly } : ConstructorArgs ) {
107+ constructor ( { data, config, api, readOnly } : BlockToolConstructorOptions ) {
128108 this . api = api ;
129109 this . readOnly = readOnly ;
130110
@@ -142,7 +122,7 @@ export default class CodeTool {
142122 textarea : null ,
143123 } ;
144124
145- this . _data = {
125+ this . data = {
146126 code : data . code || '' ,
147127 } ;
148128
@@ -161,7 +141,7 @@ export default class CodeTool {
161141
162142 wrapper . classList . add ( this . CSS . baseClass , this . CSS . wrapper ) ;
163143 textarea . classList . add ( this . CSS . textarea , this . CSS . input ) ;
164- textarea . textContent = this . _data . code ;
144+ textarea . textContent = this . data . code ;
165145
166146 textarea . placeholder = this . placeholder ;
167147
@@ -220,7 +200,7 @@ export default class CodeTool {
220200
221201 if ( 'data' in detail ) {
222202 const content = detail . data as string ;
223- this . _data = {
203+ this . data = {
224204 code : content || '' ,
225205 } ;
226206 }
0 commit comments