1.0.10 • Published 6 years ago

@codin/html-codeblock v1.0.10

Weekly downloads
-
License
MIT
Repository
-
Last release
6 years ago

Code Block

Plain vanilla CustomElement demo

Install

npm i @codin/html-codeblock
// This package is precompiled with polyfills.
import "@codin/html-codeblock";

// If using with other CustomElements include the source.
import "@codin/html-codeblock/src";

// remember to handle css import 
// example webpack.config
{
    test: /\.(pcss)$/,
    use: "text-loader" // or any raw loader or scss handler
}

Prism

This webcomponent is build on PrismJs

Not the most optimal, since it doesn´t use modules, but good enough and lightweight. Hopefully in the future Prism will go over to modules so we can slim down this component

Components

all componenets from prism are compatible, but they are not module based, so all components need to be required the old way with global scope.

import {Prism} "@codin/html-codeblock/src/code-block";
require("prismjs/components/prism-markup-templating.js");
require("prismjs/components/prism-php.js");

Plugins

Prism is ment to run in global window mode, so plugins are not recomended, but works...

import {Prism} "@codin/html-codeblock/src/code-block";
require("prismjs/plugins/prism-custom-class");

Styling

--code-font: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
--code-font-size: 1rem;
--code-font-height: 1.5;
--code-color: var(--theme-color, #3f3f3f);
--code-background: var(--theme-background, #f5f2f0);
--code-text-shadow: none;

/* general grouped colors */
--code-t-text: green;
--code-t-number: #905;
--code-t-selector: #690;
--code-t-operator: #9a6e3a;
--code-t-keyword: #07a;
--code-t-variable: #e90;
--code-t-function: #dd4a68;

--code-line-number-color: #999999;
--code-line-number-divider: 1px solid var(--code-line-number-color);

/* element colors */
--code-el-cdata: var(--code-t-text);
--code-el-comment: var(--code-t-text);
--code-el-doctype: var(--code-t-text);
--code-el-prolog: var(--code-t-text);
--code-el-namespace: var(--code-t-text);

--code-el-property: var(--code-t-number);
--code-el-tag: var(--code-t-number);
--code-el-boolean: var(--code-t-number);
--code-el-number: var(--code-t-number);
--code-el-constant: var(--code-t-number);
--code-el-symbol: var(--code-t-number);
--code-el-deleted: var(--code-t-number);

--code-el-selector: var(--code-t-selector);
--code-el-attr-name: var(--code-t-selector);
--code-el-string: var(--code-t-selector);
--code-el-char: var(--code-t-selector);
--code-el-builtin: var(--code-t-selector);
--code-el-inserted: var(--code-t-selector);

--code-el-operator: var(--code-t-operator);
--code-el-entity: var(--code-t-operator);
--code-el-url: var(--code-t-operator);

--code-el-atrule: var(--code-t-keyword);
--code-el-attr-value: var(--code-t-keyword);
--code-el-keyword: var(--code-t-keyword);

--code-el-regex: var(--code-t-variable);
--code-el-important: var(--code-t-variable);
--code-el-variable: var(--code-t-variable);

--code-el-function: var(--code-t-function);
--code-el-class-name: var(--code-t-function);

--code-el-punctuation: #999999;

Themes are not included in the package to keep it lightweight, below an example of importing predefined themes to document

import style_light from "@codin/html-codeblock/src/theme/light.pcss";
import style_dark from "@codin/html-codeblock/src/theme/dark.pcss";
import style_c64 from "@codin/html-codeblock/src/theme/c64.pcss";

const css = `
    codin-codeblock.light{${style_light}}
    codin-codeblock.dark{${style_dark}}
    codin-codeblock.c64{${style_c64}}
`;
const head = document.head || document.getElementsByTagName('head')[0];
const style = document.createElement('style');
style.type = "text/css";
if (style.styleSheet){
    style.styleSheet.cssText = css;
} else {
    style.appendChild(document.createTextNode(css));
}
head.appendChild(style);

@todo

  • esLint
  • document code
  • Events
    • onFileLoad
    • onFileLoaded
    • onContentParse
    • onContentParsed
  • Observers
    • customElement.innerHtml
1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.0

6 years ago