Package Exports
- @polymer/prism-element/prism-highlighter.js
- @polymer/prism-element/prism-import.js
- @polymer/prism-element/prism-theme-default.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@polymer/prism-element) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
<prism-highlighter>
Syntax highlighting via Prism.
Place a <prism-highlighter> in your document, preferably as a direct child of
<body>. It will listen for syntax-highlight events on its parent element,
and annotate the code being provided via that event.
The syntax-highlight event's detail is expected to have a code property
containing the source to highlight. The event detail can optionally contain a
lang property, containing a string like "html", "js", etc.
This flow is supported by <marked-element>.
See: Documentation, Demo.
Usage
Installation
npm install --save @polymer/prism-elementIn an html file
<html>
<body>
<div id="parent">
<prism-highlighter></prism-highlighter>
<div id="output"></div>
</div>
</body>
<script type="module">
import '@polymer/prism-element/prism-highlighter.js';
import '@polymer/prism-element/prism-theme-default.js';
import '@polymer/polymer/lib/elements/custom-style.js';
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
// import prism theme styles
const template = html`
<custom-style>
<style include="prism-theme-default"></style>
</custom-style>
`;
document.head.appendChild(template.contents);
const parent = document.getElementById('parent');
const output = document.getElementById('output');
const ev = new CustomEvent('syntax-highlight');
// enter code and language here
ev.detail = {
code: 'p { background-color: blue }',
lang: 'css',
};
parent.dispatchEvent(ev);
// detail is modified by prism-highlighter
output.innerHTML = ev.detail.code;
</script>
</html>In a Polymer 3 element
import {PolymerElement, html} from '@polymer/polymer';
import '@polymer/prism-element/prism-element.js';
import '@polymer/prism-element/prism-highlighter.js';
import '@polymer/prism-element/prism-theme-default.js';
class SampleElement extends PolymerElement {
static get template() {
return html`
<style include="prism-theme-default"></style>
<div id="parent">
<prism-highlighter></prism-highlighter>
<div id="output"></div>
</div>
`;
}
connectedCallback() {
super.connectedCallback();
const ev = new CustomEvent('syntax-highlight');
// enter code and language here
ev.detail = {
code: 'p { background-color: blue }',
lang: 'css',
};
this.$.parent.dispatchEvent(ev);
// detail is modified by prism-highlighter
this.$.output.innerHTML = ev.detail.code;
}
}
customElements.define('sample-element', SampleElement);Contributing
If you want to send a PR to this element, here are the instructions for running the tests and demo locally:
Installation
git clone https://github.com/PolymerElements/prism-element
cd prism-element
npm install
npm install -g polymer-cliRunning the demo locally
polymer serve --npm
open http://127.0.0.1:<port>/demo/Running the tests
polymer test --npm