All files highlight.ts

96% Statements 24/25
100% Branches 0/0
100% Functions 3/3
96% Lines 24/25

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 641x   1x   1x       2x           2x     2x     2x     2x     2x     2x   2x         2x     2x 2x 2x 2x 2x 2x 2x 2x 2x 2x             1x         1x      
import { ComponentRender } from '@zeedhi/common';
import { IHighlight } from './interfaces';
import { Prism } from './prism';
 
export class Highlight extends ComponentRender implements IHighlight {
  /**
   * Max height in pixels. 'none' means no limit.
   */
  public maxHeight: string = 'none';
 
  /* Callback which will receive text to highlight.
  *You'll need to return an HTML string with syntax
  *highlighting using a library such as prismjs.
  */
  public language: string = 'ts';
 
  /* Readonly */
  public readonly: boolean = false;
 
  /* Whether to show line numbers. */
  public lineNumbers: boolean = false;
 
  /* Match line numbers text color to the theme. */
  public autoStyleLineNumbers: boolean = true;
 
  /* The number of characters to insert when pressing tab key. */
  public tabSize: number | string = 2;
 
  /* Whether to use spaces for indentation */
  public insertSpaces: boolean = true;
 
  public code: string = '';
 
  /* Whether the editor should ignore tab key presses so
  *that keyboard users can tab past the editor
  */
  public ignoreTabKey: boolean = false;
 
  constructor(props: IHighlight) {
    super(props);
    this.code = this.getInitValue('code', props.code, this.code);
    this.readonly = this.getInitValue('readonly', props.readonly, this.readonly);
    this.lineNumbers = this.getInitValue('lineNumbers', props.lineNumbers, this.lineNumbers);
    this.maxHeight = this.getInitValue('maxHeight', props.maxHeight, this.maxHeight);
    this.tabSize = this.getInitValue('tabSize', props.tabSize, this.tabSize);
    this.insertSpaces = this.getInitValue('insertSpaces', props.insertSpaces, this.insertSpaces);
    this.ignoreTabKey = this.getInitValue('ignoreTabKey', props.ignoreTabKey, this.ignoreTabKey);
    this.language = this.getInitValue('language', props.language, this.language);
    this.createAccessors();
  }
 
  /**
   * Get the code highlighted
   */
  public getHighlightedCode() {
    this.autoloader();
    return Prism.highlight(this.code, Prism.languages[this.language], this.language);
  }
 
  public autoloader () {
    return Prism.plugins.loadLanguages(this.language);
  }
}