const { EditorView, Extension, Panel } = require( 'ext.CodeMirror.v6.lib' );
const CodeMirrorCodex = require( './codemirror.codex.js' );
/**
* Abstract class for a panel that can be used with CodeMirror.
* This class provides methods to create CSS-only Codex components.
*
* @see https://codemirror.net/docs/ref/#h_panels
* @todo Move HTML generation to Mustache templates.
* @abstract
*/
class CodeMirrorPanel extends CodeMirrorCodex {
/**
* @constructor
*/
constructor() {
super();
/** @type {EditorView} */
this.view = undefined;
}
/**
* Get the panel and any associated keymaps as an Extension.
* For use only during CodeMirror initialization.
*
* @abstract
* @type {Extension}
* @internal
*/
// eslint-disable-next-line getter-return
get extension() {}
/**
* Get the Panel object.
*
* @abstract
* @type {Panel}
*/
// eslint-disable-next-line getter-return
get panel() {}
}
module.exports = CodeMirrorPanel;