add support for wrapping code in script tempalte to avoid html parser #2684
This commit is contained in:
parent
6772518c5a
commit
37d8337411
24
demo.html
24
demo.html
|
@ -102,19 +102,19 @@
|
||||||
|
|
||||||
<section data-auto-animate>
|
<section data-auto-animate>
|
||||||
<h2 data-id="code-title">With animations</h2>
|
<h2 data-id="code-title">With animations</h2>
|
||||||
<pre data-id="code-animation"><code class="hljs" data-trim data-line-numbers="|4,8-11|17|22-24">
|
<pre data-id="code-animation"><code class="hljs" data-trim data-line-numbers="|4,8-11|17|22-24"><script type="text/template">
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
function Example() {
|
function Example() {
|
||||||
const [count, setCount] = useState(0);
|
const [count, setCount] = useState(0);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<p>You clicked {count} times</p>
|
<p>You clicked {count} times</p>
|
||||||
<button onClick={() => setCount(count + 1)}>
|
<button onClick={() => setCount(count + 1)}>
|
||||||
Click me
|
Click me
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,15 +122,15 @@
|
||||||
const [count, setCount] = useState(0);
|
const [count, setCount] = useState(0);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<p>You clicked {count} times</p>
|
<p>You clicked {count} times</p>
|
||||||
<button onClick={() => setCount(count + 1)}>
|
<button onClick={() => setCount(count + 1)}>
|
||||||
Click me
|
Click me
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
</code></pre>
|
</script></code></pre>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -35,6 +35,15 @@ const Plugin = {
|
||||||
|
|
||||||
[].slice.call( reveal.getRevealElement().querySelectorAll( 'pre code' ) ).forEach( function( block ) {
|
[].slice.call( reveal.getRevealElement().querySelectorAll( 'pre code' ) ).forEach( function( block ) {
|
||||||
|
|
||||||
|
// 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
|
// Trim whitespace if the "data-trim" attribute is present
|
||||||
if( block.hasAttribute( 'data-trim' ) && typeof block.innerHTML.trim === 'function' ) {
|
if( block.hasAttribute( 'data-trim' ) && typeof block.innerHTML.trim === 'function' ) {
|
||||||
block.innerHTML = betterTrim( block );
|
block.innerHTML = betterTrim( block );
|
||||||
|
|
Loading…
Reference in New Issue
Block a user