App-revealup

 view release on metacpan or  search on metacpan

share/revealjs/plugin/highlight/plugin.js  view on Meta::CPAN

import hljs from 'highlight.js';

/* highlightjs-line-numbers.js 2.8.0 | (C) 2018 Yauheni Pakala | MIT License | github.com/wcoder/highlightjs-line-numbers.js */
!function(r,o){"use strict";var e,i="hljs-ln",l="hljs-ln-line",h="hljs-ln-code",s="hljs-ln-numbers",c="hljs-ln-n",m="data-line-number",a=/\r\n|\r|\n/g;function u(e){for(var n=e.toString(),t=e.anchorNode;"TD"!==t.nodeName;)t=t.parentNode;for(var r=e.f...


/*!
 * reveal.js plugin that adds syntax highlight support.
 */

const Plugin = {

	id: 'highlight',

	HIGHLIGHT_STEP_DELIMITER: '|',
	HIGHLIGHT_LINE_DELIMITER: ',',
	HIGHLIGHT_LINE_RANGE_DELIMITER: '-',

	hljs,

	/**
	 * Highlights code blocks within the given deck.
	 *
	 * Note that this can be called multiple times if
	 * there are multiple presentations on one page.
	 *
	 * @param {Reveal} reveal the reveal.js instance
	 */
	init: function( reveal ) {

		// Read the plugin config options and provide fallbacks
		let config = reveal.getConfig().highlight || {};

		config.highlightOnLoad = typeof config.highlightOnLoad === 'boolean' ? config.highlightOnLoad : true;
		config.escapeHTML = typeof config.escapeHTML === 'boolean' ? config.escapeHTML : true;

		Array.from( reveal.getRevealElement().querySelectorAll( 'pre code' ) ).forEach( block => {

			block.parentNode.classList.add('code-wrapper');

			// Code can optionally be wrapped in script template to avoid
			// HTML being parsed by the browser (i.e. when you need to
			// include <, > or & in your code).
			let substitute = block.querySelector( 'script[type="text/template"]' );
			if( substitute ) {
				// textContent handles the HTML entity escapes for us
				block.textContent = substitute.innerHTML;
			}

			// Trim whitespace if the "data-trim" attribute is present
			if( block.hasAttribute( 'data-trim' ) && typeof block.innerHTML.trim === 'function' ) {
				block.innerHTML = betterTrim( block );
			}

			// Escape HTML tags unless the "data-noescape" attrbute is present
			if( config.escapeHTML && !block.hasAttribute( 'data-noescape' )) {
				block.innerHTML = block.innerHTML.replace( /</g,"&lt;").replace(/>/g, '&gt;' );
			}

			// Re-highlight when focus is lost (for contenteditable code)
			block.addEventListener( 'focusout', function( event ) {
				hljs.highlightElement( event.currentTarget );
			}, false );



( run in 1.339 second using v1.01-cache-2.11-cpan-2398b32b56e )