aboutsummaryrefslogtreecommitdiff
path: root/node_modules/prismjs/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/prismjs/plugins')
-rw-r--r--node_modules/prismjs/plugins/autolinker/prism-autolinker.css3
-rw-r--r--node_modules/prismjs/plugins/autolinker/prism-autolinker.js81
-rw-r--r--node_modules/prismjs/plugins/autolinker/prism-autolinker.min.js1
-rw-r--r--node_modules/prismjs/plugins/autoloader/prism-autoloader.js209
-rw-r--r--node_modules/prismjs/plugins/autoloader/prism-autoloader.min.js1
-rw-r--r--node_modules/prismjs/plugins/command-line/prism-command-line.css33
-rw-r--r--node_modules/prismjs/plugins/command-line/prism-command-line.js139
-rw-r--r--node_modules/prismjs/plugins/command-line/prism-command-line.min.js1
-rw-r--r--node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js75
-rw-r--r--node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js1
-rw-r--r--node_modules/prismjs/plugins/custom-class/prism-custom-class.js31
-rw-r--r--node_modules/prismjs/plugins/custom-class/prism-custom-class.min.js1
-rw-r--r--node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js98
-rw-r--r--node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js1
-rw-r--r--node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js90
-rw-r--r--node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js1
-rw-r--r--node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js17
-rw-r--r--node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js1
-rw-r--r--node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js151
-rw-r--r--node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js1
-rw-r--r--node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js99
-rw-r--r--node_modules/prismjs/plugins/keep-markup/prism-keep-markup.min.js1
-rw-r--r--node_modules/prismjs/plugins/line-highlight/prism-line-highlight.css49
-rw-r--r--node_modules/prismjs/plugins/line-highlight/prism-line-highlight.js181
-rw-r--r--node_modules/prismjs/plugins/line-highlight/prism-line-highlight.min.js1
-rw-r--r--node_modules/prismjs/plugins/line-numbers/prism-line-numbers.css41
-rw-r--r--node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js159
-rw-r--r--node_modules/prismjs/plugins/line-numbers/prism-line-numbers.min.js1
-rw-r--r--node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js190
-rw-r--r--node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js1
-rw-r--r--node_modules/prismjs/plugins/previewers/prism-previewers.css242
-rw-r--r--node_modules/prismjs/plugins/previewers/prism-previewers.js715
-rw-r--r--node_modules/prismjs/plugins/previewers/prism-previewers.min.js1
-rw-r--r--node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js21
-rw-r--r--node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js1
-rw-r--r--node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.css33
-rw-r--r--node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.js21
-rw-r--r--node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js1
-rw-r--r--node_modules/prismjs/plugins/show-language/prism-show-language.js31
-rw-r--r--node_modules/prismjs/plugins/show-language/prism-show-language.min.js1
-rw-r--r--node_modules/prismjs/plugins/toolbar/prism-toolbar.css58
-rw-r--r--node_modules/prismjs/plugins/toolbar/prism-toolbar.js137
-rw-r--r--node_modules/prismjs/plugins/toolbar/prism-toolbar.min.js1
-rw-r--r--node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css10
-rw-r--r--node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js44
-rw-r--r--node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js1
-rw-r--r--node_modules/prismjs/plugins/wpd/prism-wpd.css11
-rw-r--r--node_modules/prismjs/plugins/wpd/prism-wpd.js169
-rw-r--r--node_modules/prismjs/plugins/wpd/prism-wpd.min.js1
49 files changed, 3158 insertions, 0 deletions
diff --git a/node_modules/prismjs/plugins/autolinker/prism-autolinker.css b/node_modules/prismjs/plugins/autolinker/prism-autolinker.css
new file mode 100644
index 00000000..b5f76309
--- /dev/null
+++ b/node_modules/prismjs/plugins/autolinker/prism-autolinker.css
@@ -0,0 +1,3 @@
+.token a {
+ color: inherit;
+} \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/autolinker/prism-autolinker.js b/node_modules/prismjs/plugins/autolinker/prism-autolinker.js
new file mode 100644
index 00000000..3913c98a
--- /dev/null
+++ b/node_modules/prismjs/plugins/autolinker/prism-autolinker.js
@@ -0,0 +1,81 @@
+(function(){
+
+if (
+ typeof self !== 'undefined' && !self.Prism ||
+ typeof global !== 'undefined' && !global.Prism
+) {
+ return;
+}
+
+var url = /\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:=&]+(?:\?[\w\-+%~/.:#=?&!$'()*,;]*)?(?:#[\w\-+%~/.:#=?&!$'()*,;]*)?/,
+ email = /\b\S+@[\w.]+[a-z]{2}/,
+ linkMd = /\[([^\]]+)]\(([^)]+)\)/,
+
+ // Tokens that may contain URLs and emails
+ candidates = ['comment', 'url', 'attr-value', 'string'];
+
+Prism.plugins.autolinker = {
+ processGrammar: function (grammar) {
+ // Abort if grammar has already been processed
+ if (!grammar || grammar['url-link']) {
+ return;
+ }
+ Prism.languages.DFS(grammar, function (key, def, type) {
+ if (candidates.indexOf(type) > -1 && Prism.util.type(def) !== 'Array') {
+ if (!def.pattern) {
+ def = this[key] = {
+ pattern: def
+ };
+ }
+
+ def.inside = def.inside || {};
+
+ if (type == 'comment') {
+ def.inside['md-link'] = linkMd;
+ }
+ if (type == 'attr-value') {
+ Prism.languages.insertBefore('inside', 'punctuation', { 'url-link': url }, def);
+ }
+ else {
+ def.inside['url-link'] = url;
+ }
+
+ def.inside['email-link'] = email;
+ }
+ });
+ grammar['url-link'] = url;
+ grammar['email-link'] = email;
+ }
+};
+
+Prism.hooks.add('before-highlight', function(env) {
+ Prism.plugins.autolinker.processGrammar(env.grammar);
+});
+
+Prism.hooks.add('wrap', function(env) {
+ if (/-link$/.test(env.type)) {
+ env.tag = 'a';
+
+ var href = env.content;
+
+ if (env.type == 'email-link' && href.indexOf('mailto:') != 0) {
+ href = 'mailto:' + href;
+ }
+ else if (env.type == 'md-link') {
+ // Markdown
+ var match = env.content.match(linkMd);
+
+ href = match[2];
+ env.content = match[1];
+ }
+
+ env.attributes.href = href;
+ }
+
+ // Silently catch any error thrown by decodeURIComponent (#1186)
+ try {
+ env.content = decodeURIComponent(env.content);
+ } catch(e) {}
+});
+
+})();
diff --git a/node_modules/prismjs/plugins/autolinker/prism-autolinker.min.js b/node_modules/prismjs/plugins/autolinker/prism-autolinker.min.js
new file mode 100644
index 00000000..9fdced95
--- /dev/null
+++ b/node_modules/prismjs/plugins/autolinker/prism-autolinker.min.js
@@ -0,0 +1 @@
+!function(){if(("undefined"==typeof self||self.Prism)&&("undefined"==typeof global||global.Prism)){var i=/\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~\/.:=&]+(?:\?[\w\-+%~\/.:#=?&!$'()*,;]*)?(?:#[\w\-+%~\/.:#=?&!$'()*,;]*)?/,n=/\b\S+@[\w.]+[a-z]{2}/,e=/\[([^\]]+)]\(([^)]+)\)/,t=["comment","url","attr-value","string"];Prism.plugins.autolinker={processGrammar:function(r){r&&!r["url-link"]&&(Prism.languages.DFS(r,function(r,a,l){t.indexOf(l)>-1&&"Array"!==Prism.util.type(a)&&(a.pattern||(a=this[r]={pattern:a}),a.inside=a.inside||{},"comment"==l&&(a.inside["md-link"]=e),"attr-value"==l?Prism.languages.insertBefore("inside","punctuation",{"url-link":i},a):a.inside["url-link"]=i,a.inside["email-link"]=n)}),r["url-link"]=i,r["email-link"]=n)}},Prism.hooks.add("before-highlight",function(i){Prism.plugins.autolinker.processGrammar(i.grammar)}),Prism.hooks.add("wrap",function(i){if(/-link$/.test(i.type)){i.tag="a";var n=i.content;if("email-link"==i.type&&0!=n.indexOf("mailto:"))n="mailto:"+n;else if("md-link"==i.type){var t=i.content.match(e);n=t[2],i.content=t[1]}i.attributes.href=n}try{i.content=decodeURIComponent(i.content)}catch(r){}})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/autoloader/prism-autoloader.js b/node_modules/prismjs/plugins/autoloader/prism-autoloader.js
new file mode 100644
index 00000000..7cbf2953
--- /dev/null
+++ b/node_modules/prismjs/plugins/autoloader/prism-autoloader.js
@@ -0,0 +1,209 @@
+(function () {
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.createElement) {
+ return;
+ }
+
+ // The dependencies map is built automatically with gulp
+ var lang_dependencies = /*languages_placeholder[*/{"javascript":"clike","actionscript":"javascript","arduino":"cpp","aspnet":["markup","csharp"],"bison":"c","c":"clike","csharp":"clike","cpp":"c","coffeescript":"javascript","crystal":"ruby","css-extras":"css","d":"clike","dart":"clike","django":"markup","erb":["ruby","markup-templating"],"fsharp":"clike","flow":"javascript","glsl":"clike","go":"clike","groovy":"clike","haml":"ruby","handlebars":"markup-templating","haxe":"clike","java":"clike","jolie":"clike","kotlin":"clike","less":"css","markdown":"markup","markup-templating":"markup","n4js":"javascript","nginx":"clike","objectivec":"c","opencl":"cpp","parser":"markup","php":["clike","markup-templating"],"php-extras":"php","plsql":"sql","processing":"clike","protobuf":"clike","pug":"javascript","qore":"clike","jsx":["markup","javascript"],"tsx":["jsx","typescript"],"reason":"clike","ruby":"clike","sass":"css","scss":"css","scala":"java","smarty":"markup-templating","soy":"markup-templating","swift":"clike","tap":"yaml","textile":"markup","tt2":["clike","markup-templating"],"twig":"markup","typescript":"javascript","vbnet":"basic","velocity":"markup","wiki":"markup","xeora":"markup","xquery":"markup"}/*]*/;
+
+ var lang_data = {};
+
+ var ignored_language = 'none';
+
+ var script = document.getElementsByTagName('script');
+ script = script[script.length - 1];
+ var languages_path = 'components/';
+ if(script.hasAttribute('data-autoloader-path')) {
+ var path = script.getAttribute('data-autoloader-path').trim();
+ if(path.length > 0 && !/^[a-z]+:\/\//i.test(script.src)) {
+ languages_path = path.replace(/\/?$/, '/');
+ }
+ } else if (/[\w-]+\.js$/.test(script.src)) {
+ languages_path = script.src.replace(/[\w-]+\.js$/, 'components/');
+ }
+ var config = Prism.plugins.autoloader = {
+ languages_path: languages_path,
+ use_minified: true
+ };
+
+ /**
+ * Lazy loads an external script
+ * @param {string} src
+ * @param {function=} success
+ * @param {function=} error
+ */
+ var script = function (src, success, error) {
+ var s = document.createElement('script');
+ s.src = src;
+ s.async = true;
+ s.onload = function() {
+ document.body.removeChild(s);
+ success && success();
+ };
+ s.onerror = function() {
+ document.body.removeChild(s);
+ error && error();
+ };
+ document.body.appendChild(s);
+ };
+
+ /**
+ * Returns the path to a grammar, using the language_path and use_minified config keys.
+ * @param {string} lang
+ * @returns {string}
+ */
+ var getLanguagePath = function (lang) {
+ return config.languages_path +
+ 'prism-' + lang
+ + (config.use_minified ? '.min' : '') + '.js'
+ };
+
+ /**
+ * Tries to load a grammar and
+ * highlight again the given element once loaded.
+ * @param {string} lang
+ * @param {HTMLElement} elt
+ */
+ var registerElement = function (lang, elt) {
+ var data = lang_data[lang];
+ if (!data) {
+ data = lang_data[lang] = {};
+ }
+
+ // Look for additional dependencies defined on the <code> or <pre> tags
+ var deps = elt.getAttribute('data-dependencies');
+ if (!deps && elt.parentNode && elt.parentNode.tagName.toLowerCase() === 'pre') {
+ deps = elt.parentNode.getAttribute('data-dependencies');
+ }
+
+ if (deps) {
+ deps = deps.split(/\s*,\s*/g);
+ } else {
+ deps = [];
+ }
+
+ loadLanguages(deps, function () {
+ loadLanguage(lang, function () {
+ Prism.highlightElement(elt);
+ });
+ });
+ };
+
+ /**
+ * Sequentially loads an array of grammars.
+ * @param {string[]|string} langs
+ * @param {function=} success
+ * @param {function=} error
+ */
+ var loadLanguages = function (langs, success, error) {
+ if (typeof langs === 'string') {
+ langs = [langs];
+ }
+ var i = 0;
+ var l = langs.length;
+ var f = function () {
+ if (i < l) {
+ loadLanguage(langs[i], function () {
+ i++;
+ f();
+ }, function () {
+ error && error(langs[i]);
+ });
+ } else if (i === l) {
+ success && success(langs);
+ }
+ };
+ f();
+ };
+
+ /**
+ * Load a grammar with its dependencies
+ * @param {string} lang
+ * @param {function=} success
+ * @param {function=} error
+ */
+ var loadLanguage = function (lang, success, error) {
+ var load = function () {
+ var force = false;
+ // Do we want to force reload the grammar?
+ if (lang.indexOf('!') >= 0) {
+ force = true;
+ lang = lang.replace('!', '');
+ }
+
+ var data = lang_data[lang];
+ if (!data) {
+ data = lang_data[lang] = {};
+ }
+ if (success) {
+ if (!data.success_callbacks) {
+ data.success_callbacks = [];
+ }
+ data.success_callbacks.push(success);
+ }
+ if (error) {
+ if (!data.error_callbacks) {
+ data.error_callbacks = [];
+ }
+ data.error_callbacks.push(error);
+ }
+
+ if (!force && Prism.languages[lang]) {
+ languageSuccess(lang);
+ } else if (!force && data.error) {
+ languageError(lang);
+ } else if (force || !data.loading) {
+ data.loading = true;
+ var src = getLanguagePath(lang);
+ script(src, function () {
+ data.loading = false;
+ languageSuccess(lang);
+
+ }, function () {
+ data.loading = false;
+ data.error = true;
+ languageError(lang);
+ });
+ }
+ };
+ var dependencies = lang_dependencies[lang];
+ if(dependencies && dependencies.length) {
+ loadLanguages(dependencies, load);
+ } else {
+ load();
+ }
+ };
+
+ /**
+ * Runs all success callbacks for this language.
+ * @param {string} lang
+ */
+ var languageSuccess = function (lang) {
+ if (lang_data[lang] && lang_data[lang].success_callbacks && lang_data[lang].success_callbacks.length) {
+ lang_data[lang].success_callbacks.forEach(function (f) {
+ f(lang);
+ });
+ }
+ };
+
+ /**
+ * Runs all error callbacks for this language.
+ * @param {string} lang
+ */
+ var languageError = function (lang) {
+ if (lang_data[lang] && lang_data[lang].error_callbacks && lang_data[lang].error_callbacks.length) {
+ lang_data[lang].error_callbacks.forEach(function (f) {
+ f(lang);
+ });
+ }
+ };
+
+ Prism.hooks.add('complete', function (env) {
+ if (env.element && env.language && !env.grammar) {
+ if (env.language !== ignored_language) {
+ registerElement(env.language, env.element);
+ }
+ }
+ });
+
+}()); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/autoloader/prism-autoloader.min.js b/node_modules/prismjs/plugins/autoloader/prism-autoloader.min.js
new file mode 100644
index 00000000..9e3cc251
--- /dev/null
+++ b/node_modules/prismjs/plugins/autoloader/prism-autoloader.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism&&self.document&&document.createElement){var e={javascript:"clike",actionscript:"javascript",arduino:"cpp",aspnet:["markup","csharp"],bison:"c",c:"clike",csharp:"clike",cpp:"c",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup",erb:["ruby","markup-templating"],fsharp:"clike",flow:"javascript",glsl:"clike",go:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",java:"clike",jolie:"clike",kotlin:"clike",less:"css",markdown:"markup","markup-templating":"markup",n4js:"javascript",nginx:"clike",objectivec:"c",opencl:"cpp",parser:"markup",php:["clike","markup-templating"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:"javascript",qore:"clike",jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java",smarty:"markup-templating",soy:"markup-templating",swift:"clike",tap:"yaml",textile:"markup",tt2:["clike","markup-templating"],twig:"markup",typescript:"javascript",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup",xquery:"markup"},a={},c="none",t=document.getElementsByTagName("script");t=t[t.length-1];var r="components/";if(t.hasAttribute("data-autoloader-path")){var s=t.getAttribute("data-autoloader-path").trim();s.length>0&&!/^[a-z]+:\/\//i.test(t.src)&&(r=s.replace(/\/?$/,"/"))}else/[\w-]+\.js$/.test(t.src)&&(r=t.src.replace(/[\w-]+\.js$/,"components/"));var i=Prism.plugins.autoloader={languages_path:r,use_minified:!0},t=function(e,a,c){var t=document.createElement("script");t.src=e,t.async=!0,t.onload=function(){document.body.removeChild(t),a&&a()},t.onerror=function(){document.body.removeChild(t),c&&c()},document.body.appendChild(t)},n=function(e){return i.languages_path+"prism-"+e+(i.use_minified?".min":"")+".js"},l=function(e,c){var t=a[e];t||(t=a[e]={});var r=c.getAttribute("data-dependencies");!r&&c.parentNode&&"pre"===c.parentNode.tagName.toLowerCase()&&(r=c.parentNode.getAttribute("data-dependencies")),r=r?r.split(/\s*,\s*/g):[],o(r,function(){p(e,function(){Prism.highlightElement(c)})})},o=function(e,a,c){"string"==typeof e&&(e=[e]);var t=0,r=e.length,s=function(){r>t?p(e[t],function(){t++,s()},function(){c&&c(e[t])}):t===r&&a&&a(e)};s()},p=function(c,r,s){var i=function(){var e=!1;c.indexOf("!")>=0&&(e=!0,c=c.replace("!",""));var i=a[c];if(i||(i=a[c]={}),r&&(i.success_callbacks||(i.success_callbacks=[]),i.success_callbacks.push(r)),s&&(i.error_callbacks||(i.error_callbacks=[]),i.error_callbacks.push(s)),!e&&Prism.languages[c])u(c);else if(!e&&i.error)m(c);else if(e||!i.loading){i.loading=!0;var l=n(c);t(l,function(){i.loading=!1,u(c)},function(){i.loading=!1,i.error=!0,m(c)})}},l=e[c];l&&l.length?o(l,i):i()},u=function(e){a[e]&&a[e].success_callbacks&&a[e].success_callbacks.length&&a[e].success_callbacks.forEach(function(a){a(e)})},m=function(e){a[e]&&a[e].error_callbacks&&a[e].error_callbacks.length&&a[e].error_callbacks.forEach(function(a){a(e)})};Prism.hooks.add("complete",function(e){e.element&&e.language&&!e.grammar&&e.language!==c&&l(e.language,e.element)})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/command-line/prism-command-line.css b/node_modules/prismjs/plugins/command-line/prism-command-line.css
new file mode 100644
index 00000000..153a8707
--- /dev/null
+++ b/node_modules/prismjs/plugins/command-line/prism-command-line.css
@@ -0,0 +1,33 @@
+.command-line-prompt {
+ border-right: 1px solid #999;
+ display: block;
+ float: left;
+ font-size: 100%;
+ letter-spacing: -1px;
+ margin-right: 1em;
+ pointer-events: none;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.command-line-prompt > span:before {
+ color: #999;
+ content: ' ';
+ display: block;
+ padding-right: 0.8em;
+}
+
+.command-line-prompt > span[data-user]:before {
+ content: "[" attr(data-user) "@" attr(data-host) "] $";
+}
+
+.command-line-prompt > span[data-user="root"]:before {
+ content: "[" attr(data-user) "@" attr(data-host) "] #";
+}
+
+.command-line-prompt > span[data-prompt]:before {
+ content: attr(data-prompt);
+}
diff --git a/node_modules/prismjs/plugins/command-line/prism-command-line.js b/node_modules/prismjs/plugins/command-line/prism-command-line.js
new file mode 100644
index 00000000..b8595d72
--- /dev/null
+++ b/node_modules/prismjs/plugins/command-line/prism-command-line.js
@@ -0,0 +1,139 @@
+(function() {
+
+if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+}
+
+var clsReg = /\s*\bcommand-line\b\s*/;
+
+Prism.hooks.add('before-highlight', function (env) {
+ env.vars = env.vars || {};
+ env.vars['command-line'] = env.vars['command-line'] || {};
+
+ if (env.vars['command-line'].complete || !env.code) {
+ env.vars['command-line'].complete = true;
+ return;
+ }
+
+ // Works only for <code> wrapped inside <pre> (not inline).
+ var pre = env.element.parentNode;
+ if (!pre || !/pre/i.test(pre.nodeName) || // Abort only if neither the <pre> nor the <code> have the class
+ (!clsReg.test(pre.className) && !clsReg.test(env.element.className))) {
+ env.vars['command-line'].complete = true;
+ return;
+ }
+
+ if (env.element.querySelector('.command-line-prompt')) { // Abort if prompt already exists.
+ env.vars['command-line'].complete = true;
+ return;
+ }
+
+ var codeLines = env.code.split('\n');
+ env.vars['command-line'].numberOfLines = codeLines.length;
+ env.vars['command-line'].outputLines = [];
+
+ var outputSections = pre.getAttribute('data-output');
+ var outputFilter = pre.getAttribute('data-filter-output');
+ if (outputSections || outputSections === '') { // The user specified the output lines. -- cwells
+ outputSections = outputSections.split(',');
+ for (var i = 0; i < outputSections.length; i++) { // Parse the output sections into start/end ranges. -- cwells
+ var range = outputSections[i].split('-');
+ var outputStart = parseInt(range[0], 10);
+ var outputEnd = (range.length === 2 ? parseInt(range[1], 10) : outputStart);
+
+ if (!isNaN(outputStart) && !isNaN(outputEnd)) {
+ if (outputStart < 1) {
+ outputStart = 1;
+ }
+ if (outputEnd > codeLines.length) {
+ outputEnd = codeLines.length;
+ }
+ // Convert start and end to 0-based to simplify the arrays. -- cwells
+ outputStart--;
+ outputEnd--;
+ // Save the output line in an array and clear it in the code so it's not highlighted. -- cwells
+ for (var j = outputStart; j <= outputEnd; j++) {
+ env.vars['command-line'].outputLines[j] = codeLines[j];
+ codeLines[j] = '';
+ }
+ }
+ }
+ } else if (outputFilter) { // Treat lines beginning with this string as output. -- cwells
+ for (var i = 0; i < codeLines.length; i++) {
+ if (codeLines[i].indexOf(outputFilter) === 0) { // This line is output. -- cwells
+ env.vars['command-line'].outputLines[i] = codeLines[i].slice(outputFilter.length);
+ codeLines[i] = '';
+ }
+ }
+ }
+
+ env.code = codeLines.join('\n');
+});
+
+Prism.hooks.add('before-insert', function (env) {
+ env.vars = env.vars || {};
+ env.vars['command-line'] = env.vars['command-line'] || {};
+ if (env.vars['command-line'].complete) {
+ return;
+ }
+
+ // Reinsert the output lines into the highlighted code. -- cwells
+ var codeLines = env.highlightedCode.split('\n');
+ for (var i = 0; i < env.vars['command-line'].outputLines.length; i++) {
+ if (env.vars['command-line'].outputLines.hasOwnProperty(i)) {
+ codeLines[i] = env.vars['command-line'].outputLines[i];
+ }
+ }
+ env.highlightedCode = codeLines.join('\n');
+});
+
+Prism.hooks.add('complete', function (env) {
+ env.vars = env.vars || {};
+ env.vars['command-line'] = env.vars['command-line'] || {};
+ if (env.vars['command-line'].complete) {
+ return;
+ }
+
+ var pre = env.element.parentNode;
+ if (clsReg.test(env.element.className)) { // Remove the class "command-line" from the <code>
+ env.element.className = env.element.className.replace(clsReg, ' ');
+ }
+ if (!clsReg.test(pre.className)) { // Add the class "command-line" to the <pre>
+ pre.className += ' command-line';
+ }
+
+ var getAttribute = function(key, defaultValue) {
+ return (pre.getAttribute(key) || defaultValue).replace(/"/g, '&quot');
+ };
+
+ // Create the "rows" that will become the command-line prompts. -- cwells
+ var promptLines = new Array(env.vars['command-line'].numberOfLines + 1);
+ var promptText = getAttribute('data-prompt', '');
+ if (promptText !== '') {
+ promptLines = promptLines.join('<span data-prompt="' + promptText + '"></span>');
+ } else {
+ var user = getAttribute('data-user', 'user');
+ var host = getAttribute('data-host', 'localhost');
+ promptLines = promptLines.join('<span data-user="' + user + '" data-host="' + host + '"></span>');
+ }
+
+ // Create the wrapper element. -- cwells
+ var prompt = document.createElement('span');
+ prompt.className = 'command-line-prompt';
+ prompt.innerHTML = promptLines;
+
+ // Remove the prompt from the output lines. -- cwells
+ for (var i = 0; i < env.vars['command-line'].outputLines.length; i++) {
+ if (env.vars['command-line'].outputLines.hasOwnProperty(i)) {
+ var node = prompt.children[i];
+ node.removeAttribute('data-user');
+ node.removeAttribute('data-host');
+ node.removeAttribute('data-prompt');
+ }
+ }
+
+ env.element.insertBefore(prompt, env.element.firstChild);
+ env.vars['command-line'].complete = true;
+});
+
+}());
diff --git a/node_modules/prismjs/plugins/command-line/prism-command-line.min.js b/node_modules/prismjs/plugins/command-line/prism-command-line.min.js
new file mode 100644
index 00000000..159f4094
--- /dev/null
+++ b/node_modules/prismjs/plugins/command-line/prism-command-line.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e=/\s*\bcommand-line\b\s*/;Prism.hooks.add("before-highlight",function(a){if(a.vars=a.vars||{},a.vars["command-line"]=a.vars["command-line"]||{},a.vars["command-line"].complete||!a.code)return a.vars["command-line"].complete=!0,void 0;var n=a.element.parentNode;if(!n||!/pre/i.test(n.nodeName)||!e.test(n.className)&&!e.test(a.element.className))return a.vars["command-line"].complete=!0,void 0;if(a.element.querySelector(".command-line-prompt"))return a.vars["command-line"].complete=!0,void 0;var t=a.code.split("\n");a.vars["command-line"].numberOfLines=t.length,a.vars["command-line"].outputLines=[];var r=n.getAttribute("data-output"),s=n.getAttribute("data-filter-output");if(r||""===r){r=r.split(",");for(var o=0;o<r.length;o++){var m=r[o].split("-"),i=parseInt(m[0],10),l=2===m.length?parseInt(m[1],10):i;if(!isNaN(i)&&!isNaN(l)){1>i&&(i=1),l>t.length&&(l=t.length),i--,l--;for(var d=i;l>=d;d++)a.vars["command-line"].outputLines[d]=t[d],t[d]=""}}}else if(s)for(var o=0;o<t.length;o++)0===t[o].indexOf(s)&&(a.vars["command-line"].outputLines[o]=t[o].slice(s.length),t[o]="");a.code=t.join("\n")}),Prism.hooks.add("before-insert",function(e){if(e.vars=e.vars||{},e.vars["command-line"]=e.vars["command-line"]||{},!e.vars["command-line"].complete){for(var a=e.highlightedCode.split("\n"),n=0;n<e.vars["command-line"].outputLines.length;n++)e.vars["command-line"].outputLines.hasOwnProperty(n)&&(a[n]=e.vars["command-line"].outputLines[n]);e.highlightedCode=a.join("\n")}}),Prism.hooks.add("complete",function(a){if(a.vars=a.vars||{},a.vars["command-line"]=a.vars["command-line"]||{},!a.vars["command-line"].complete){var n=a.element.parentNode;e.test(a.element.className)&&(a.element.className=a.element.className.replace(e," ")),e.test(n.className)||(n.className+=" command-line");var t=function(e,a){return(n.getAttribute(e)||a).replace(/"/g,"&quot")},r=new Array(a.vars["command-line"].numberOfLines+1),s=t("data-prompt","");if(""!==s)r=r.join('<span data-prompt="'+s+'"></span>');else{var o=t("data-user","user"),m=t("data-host","localhost");r=r.join('<span data-user="'+o+'" data-host="'+m+'"></span>')}var i=document.createElement("span");i.className="command-line-prompt",i.innerHTML=r;for(var l=0;l<a.vars["command-line"].outputLines.length;l++)if(a.vars["command-line"].outputLines.hasOwnProperty(l)){var d=i.children[l];d.removeAttribute("data-user"),d.removeAttribute("data-host"),d.removeAttribute("data-prompt")}a.element.insertBefore(i,a.element.firstChild),a.vars["command-line"].complete=!0}})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js b/node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js
new file mode 100644
index 00000000..0b185f47
--- /dev/null
+++ b/node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js
@@ -0,0 +1,75 @@
+(function(){
+ if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+ }
+
+ if (!Prism.plugins.toolbar) {
+ console.warn('Copy to Clipboard plugin loaded before Toolbar plugin.');
+
+ return;
+ }
+
+ var ClipboardJS = window.ClipboardJS || undefined;
+
+ if (!ClipboardJS && typeof require === 'function') {
+ ClipboardJS = require('clipboard');
+ }
+
+ var callbacks = [];
+
+ if (!ClipboardJS) {
+ var script = document.createElement('script');
+ var head = document.querySelector('head');
+
+ script.onload = function() {
+ ClipboardJS = window.ClipboardJS;
+
+ if (ClipboardJS) {
+ while (callbacks.length) {
+ callbacks.pop()();
+ }
+ }
+ };
+
+ script.src = 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js';
+ head.appendChild(script);
+ }
+
+ Prism.plugins.toolbar.registerButton('copy-to-clipboard', function (env) {
+ var linkCopy = document.createElement('a');
+ linkCopy.textContent = 'Copy';
+
+ if (!ClipboardJS) {
+ callbacks.push(registerClipboard);
+ } else {
+ registerClipboard();
+ }
+
+ return linkCopy;
+
+ function registerClipboard() {
+ var clip = new ClipboardJS(linkCopy, {
+ 'text': function () {
+ return env.code;
+ }
+ });
+
+ clip.on('success', function() {
+ linkCopy.textContent = 'Copied!';
+
+ resetText();
+ });
+ clip.on('error', function () {
+ linkCopy.textContent = 'Press Ctrl+C to copy';
+
+ resetText();
+ });
+ }
+
+ function resetText() {
+ setTimeout(function () {
+ linkCopy.textContent = 'Copy';
+ }, 5000);
+ }
+ });
+})();
diff --git a/node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js b/node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js
new file mode 100644
index 00000000..aa5742db
--- /dev/null
+++ b/node_modules/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."),void 0;var o=window.ClipboardJS||void 0;o||"function"!=typeof require||(o=require("clipboard"));var e=[];if(!o){var t=document.createElement("script"),n=document.querySelector("head");t.onload=function(){if(o=window.ClipboardJS)for(;e.length;)e.pop()()},t.src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",n.appendChild(t)}Prism.plugins.toolbar.registerButton("copy-to-clipboard",function(t){function n(){var e=new o(i,{text:function(){return t.code}});e.on("success",function(){i.textContent="Copied!",r()}),e.on("error",function(){i.textContent="Press Ctrl+C to copy",r()})}function r(){setTimeout(function(){i.textContent="Copy"},5e3)}var i=document.createElement("a");return i.textContent="Copy",o?n():e.push(n),i})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/custom-class/prism-custom-class.js b/node_modules/prismjs/plugins/custom-class/prism-custom-class.js
new file mode 100644
index 00000000..bb5bd6a6
--- /dev/null
+++ b/node_modules/prismjs/plugins/custom-class/prism-custom-class.js
@@ -0,0 +1,31 @@
+(function(){
+
+if (
+ (typeof self === 'undefined' || !self.Prism) &&
+ (typeof global === 'undefined' || !global.Prism)
+) {
+ return;
+}
+
+var options = {
+ classMap: {}
+};
+Prism.plugins.customClass = {
+ map: function map(cm) {
+ options.classMap = cm;
+ },
+ prefix: function prefix(string) {
+ options.prefixString = string;
+ }
+}
+
+Prism.hooks.add('wrap', function (env) {
+ if (!options.classMap && !options.prefixString) {
+ return;
+ }
+ env.classes = env.classes.map(function(c) {
+ return (options.prefixString || '') + (options.classMap[c] || c);
+ });
+});
+
+})();
diff --git a/node_modules/prismjs/plugins/custom-class/prism-custom-class.min.js b/node_modules/prismjs/plugins/custom-class/prism-custom-class.min.js
new file mode 100644
index 00000000..f22063f5
--- /dev/null
+++ b/node_modules/prismjs/plugins/custom-class/prism-custom-class.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism||"undefined"!=typeof global&&global.Prism){var s={classMap:{}};Prism.plugins.customClass={map:function(i){s.classMap=i},prefix:function(i){s.prefixString=i}},Prism.hooks.add("wrap",function(i){(s.classMap||s.prefixString)&&(i.classes=i.classes.map(function(i){return(s.prefixString||"")+(s.classMap[i]||i)}))})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js b/node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js
new file mode 100644
index 00000000..7ff8d1fd
--- /dev/null
+++ b/node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js
@@ -0,0 +1,98 @@
+(function () {
+
+ if (
+ typeof self !== 'undefined' && !self.Prism ||
+ typeof global !== 'undefined' && !global.Prism
+ ) {
+ return;
+ }
+
+ var autoLinkerProcess = function (grammar) {
+ if (Prism.plugins.autolinker) {
+ Prism.plugins.autolinker.processGrammar(grammar);
+ }
+ return grammar;
+ };
+ var dataURI = {
+ pattern: /(.)\bdata:[^\/]+\/[^,]+,(?:(?!\1)[\s\S]|\\\1)+(?=\1)/,
+ lookbehind: true,
+ inside: {
+ 'language-css': {
+ pattern: /(data:[^\/]+\/(?:[^+,]+\+)?css,)[\s\S]+/,
+ lookbehind: true
+ },
+ 'language-javascript': {
+ pattern: /(data:[^\/]+\/(?:[^+,]+\+)?javascript,)[\s\S]+/,
+ lookbehind: true
+ },
+ 'language-json': {
+ pattern: /(data:[^\/]+\/(?:[^+,]+\+)?json,)[\s\S]+/,
+ lookbehind: true
+ },
+ 'language-markup': {
+ pattern: /(data:[^\/]+\/(?:[^+,]+\+)?(?:html|xml),)[\s\S]+/,
+ lookbehind: true
+ }
+ }
+ };
+
+ // Tokens that may contain URLs
+ var candidates = ['url', 'attr-value', 'string'];
+
+ Prism.plugins.dataURIHighlight = {
+ processGrammar: function (grammar) {
+ // Abort if grammar has already been processed
+ if (!grammar || grammar['data-uri']) {
+ return;
+ }
+
+ Prism.languages.DFS(grammar, function (key, def, type) {
+ if (candidates.indexOf(type) > -1 && Prism.util.type(def) !== 'Array') {
+ if (!def.pattern) {
+ def = this[key] = {
+ pattern: def
+ };
+ }
+
+ def.inside = def.inside || {};
+
+ if (type == 'attr-value') {
+ Prism.languages.insertBefore('inside', def.inside['url-link'] ? 'url-link' : 'punctuation', {
+ 'data-uri': dataURI
+ }, def);
+ }
+ else {
+ if (def.inside['url-link']) {
+ Prism.languages.insertBefore('inside', 'url-link', {
+ 'data-uri': dataURI
+ }, def);
+ } else {
+ def.inside['data-uri'] = dataURI;
+ }
+ }
+ }
+ });
+ grammar['data-uri'] = dataURI;
+ }
+ };
+
+ Prism.hooks.add('before-highlight', function (env) {
+ // Prepare the needed grammars for this code block
+ if (dataURI.pattern.test(env.code)) {
+ for (var p in dataURI.inside) {
+ if (dataURI.inside.hasOwnProperty(p)) {
+ if (!dataURI.inside[p].inside && dataURI.inside[p].pattern.test(env.code)) {
+ var lang = p.match(/^language-(.+)/)[1];
+ if (Prism.languages[lang]) {
+ dataURI.inside[p].inside = {
+ rest: autoLinkerProcess(Prism.languages[lang])
+ };
+ }
+ }
+ }
+ }
+ }
+
+ Prism.plugins.dataURIHighlight.processGrammar(env.grammar);
+ });
+}()); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js b/node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js
new file mode 100644
index 00000000..479828d9
--- /dev/null
+++ b/node_modules/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js
@@ -0,0 +1 @@
+!function(){if(("undefined"==typeof self||self.Prism)&&("undefined"==typeof global||global.Prism)){var i=function(i){return Prism.plugins.autolinker&&Prism.plugins.autolinker.processGrammar(i),i},a={pattern:/(.)\bdata:[^\/]+\/[^,]+,(?:(?!\1)[\s\S]|\\\1)+(?=\1)/,lookbehind:!0,inside:{"language-css":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?css,)[\s\S]+/,lookbehind:!0},"language-javascript":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?javascript,)[\s\S]+/,lookbehind:!0},"language-json":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?json,)[\s\S]+/,lookbehind:!0},"language-markup":{pattern:/(data:[^\/]+\/(?:[^+,]+\+)?(?:html|xml),)[\s\S]+/,lookbehind:!0}}},n=["url","attr-value","string"];Prism.plugins.dataURIHighlight={processGrammar:function(i){i&&!i["data-uri"]&&(Prism.languages.DFS(i,function(i,e,r){n.indexOf(r)>-1&&"Array"!==Prism.util.type(e)&&(e.pattern||(e=this[i]={pattern:e}),e.inside=e.inside||{},"attr-value"==r?Prism.languages.insertBefore("inside",e.inside["url-link"]?"url-link":"punctuation",{"data-uri":a},e):e.inside["url-link"]?Prism.languages.insertBefore("inside","url-link",{"data-uri":a},e):e.inside["data-uri"]=a)}),i["data-uri"]=a)}},Prism.hooks.add("before-highlight",function(n){if(a.pattern.test(n.code))for(var e in a.inside)if(a.inside.hasOwnProperty(e)&&!a.inside[e].inside&&a.inside[e].pattern.test(n.code)){var r=e.match(/^language-(.+)/)[1];Prism.languages[r]&&(a.inside[e].inside={rest:i(Prism.languages[r])})}Prism.plugins.dataURIHighlight.processGrammar(n.grammar)})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js
new file mode 100644
index 00000000..6dee6c4c
--- /dev/null
+++ b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.js
@@ -0,0 +1,90 @@
+(function () {
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
+ return;
+ }
+
+ self.Prism.fileHighlight = function() {
+
+ var Extensions = {
+ 'js': 'javascript',
+ 'py': 'python',
+ 'rb': 'ruby',
+ 'ps1': 'powershell',
+ 'psm1': 'powershell',
+ 'sh': 'bash',
+ 'bat': 'batch',
+ 'h': 'c',
+ 'tex': 'latex'
+ };
+
+ Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {
+ var src = pre.getAttribute('data-src');
+
+ var language, parent = pre;
+ var lang = /\blang(?:uage)?-([\w-]+)\b/i;
+ while (parent && !lang.test(parent.className)) {
+ parent = parent.parentNode;
+ }
+
+ if (parent) {
+ language = (pre.className.match(lang) || [, ''])[1];
+ }
+
+ if (!language) {
+ var extension = (src.match(/\.(\w+)$/) || [, ''])[1];
+ language = Extensions[extension] || extension;
+ }
+
+ var code = document.createElement('code');
+ code.className = 'language-' + language;
+
+ pre.textContent = '';
+
+ code.textContent = 'Loading…';
+
+ pre.appendChild(code);
+
+ var xhr = new XMLHttpRequest();
+
+ xhr.open('GET', src, true);
+
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState == 4) {
+
+ if (xhr.status < 400 && xhr.responseText) {
+ code.textContent = xhr.responseText;
+
+ Prism.highlightElement(code);
+ }
+ else if (xhr.status >= 400) {
+ code.textContent = 'âś– Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
+ }
+ else {
+ code.textContent = 'âś– Error: File does not exist or is empty';
+ }
+ }
+ };
+
+ xhr.send(null);
+ });
+
+ if (Prism.plugins.toolbar) {
+ Prism.plugins.toolbar.registerButton('download-file', function (env) {
+ var pre = env.element.parentNode;
+ if (!pre || !/pre/i.test(pre.nodeName) || !pre.hasAttribute('data-src') || !pre.hasAttribute('data-download-link')) {
+ return;
+ }
+ var src = pre.getAttribute('data-src');
+ var a = document.createElement('a');
+ a.textContent = pre.getAttribute('data-download-link-label') || 'Download';
+ a.setAttribute('download', '');
+ a.href = src;
+ return a;
+ });
+ }
+
+ };
+
+ document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);
+
+})(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js
new file mode 100644
index 00000000..301fa878
--- /dev/null
+++ b/node_modules/prismjs/plugins/file-highlight/prism-file-highlight.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(e){for(var a,n=e.getAttribute("data-src"),r=e,o=/\blang(?:uage)?-([\w-]+)\b/i;r&&!o.test(r.className);)r=r.parentNode;if(r&&(a=(e.className.match(o)||[,""])[1]),!a){var s=(n.match(/\.(\w+)$/)||[,""])[1];a=t[s]||s}var l=document.createElement("code");l.className="language-"+a,e.textContent="",l.textContent="Loading…",e.appendChild(l);var i=new XMLHttpRequest;i.open("GET",n,!0),i.onreadystatechange=function(){4==i.readyState&&(i.status<400&&i.responseText?(l.textContent=i.responseText,Prism.highlightElement(l)):l.textContent=i.status>=400?"✖ Error "+i.status+" while fetching file: "+i.statusText:"✖ Error: File does not exist or is empty")},i.send(null)}),Prism.plugins.toolbar&&Prism.plugins.toolbar.registerButton("download-file",function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-src")&&e.hasAttribute("data-download-link")){var a=e.getAttribute("data-src"),n=document.createElement("a");return n.textContent=e.getAttribute("data-download-link-label")||"Download",n.setAttribute("download",""),n.href=a,n}})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js b/node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js
new file mode 100644
index 00000000..32b28122
--- /dev/null
+++ b/node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js
@@ -0,0 +1,17 @@
+(function(){
+
+if (
+ typeof self !== 'undefined' && !self.Prism ||
+ typeof global !== 'undefined' && !global.Prism
+) {
+ return;
+}
+
+Prism.hooks.add('wrap', function(env) {
+ if (env.type !== "keyword") {
+ return;
+ }
+ env.classes.push('keyword-' + env.content);
+});
+
+})();
diff --git a/node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js b/node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js
new file mode 100644
index 00000000..c4326fea
--- /dev/null
+++ b/node_modules/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&!self.Prism||"undefined"!=typeof global&&!global.Prism||Prism.hooks.add("wrap",function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)})}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js b/node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
new file mode 100644
index 00000000..4ce5ca50
--- /dev/null
+++ b/node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
@@ -0,0 +1,151 @@
+(function() {
+ if ( !self.Prism || !self.document || !document.querySelectorAll || ![].filter) return;
+
+ var adapters = [];
+ function registerAdapter(adapter) {
+ if (typeof adapter === "function" && !getAdapter(adapter)) {
+ adapters.push(adapter);
+ }
+ }
+ function getAdapter(adapter) {
+ if (typeof adapter === "function") {
+ return adapters.filter(function(fn) { return fn.valueOf() === adapter.valueOf()})[0];
+ }
+ else if (typeof adapter === "string" && adapter.length > 0) {
+ return adapters.filter(function(fn) { return fn.name === adapter})[0];
+ }
+ return null;
+ }
+ function removeAdapter(adapter) {
+ if (typeof adapter === "string")
+ adapter = getAdapter(adapter);
+ if (typeof adapter === "function") {
+ var index = adapters.indexOf(adapter);
+ if (index >=0) {
+ adapters.splice(index,1);
+ }
+ }
+ }
+
+ Prism.plugins.jsonphighlight = {
+ registerAdapter: registerAdapter,
+ removeAdapter: removeAdapter,
+ highlight: highlight
+ };
+ registerAdapter(function github(rsp, el) {
+ if ( rsp && rsp.meta && rsp.data ) {
+ if ( rsp.meta.status && rsp.meta.status >= 400 ) {
+ return "Error: " + ( rsp.data.message || rsp.meta.status );
+ }
+ else if ( typeof(rsp.data.content) === "string" ) {
+ return typeof(atob) === "function"
+ ? atob(rsp.data.content.replace(/\s/g, ""))
+ : "Your browser cannot decode base64";
+ }
+ }
+ return null;
+ });
+ registerAdapter(function gist(rsp, el) {
+ if ( rsp && rsp.meta && rsp.data && rsp.data.files ) {
+ if ( rsp.meta.status && rsp.meta.status >= 400 ) {
+ return "Error: " + ( rsp.data.message || rsp.meta.status );
+ }
+ else {
+ var filename = el.getAttribute("data-filename");
+ if (filename == null) {
+ // Maybe in the future we can somehow render all files
+ // But the standard <script> include for gists does that nicely already,
+ // so that might be getting beyond the scope of this plugin
+ for (var key in rsp.data.files) {
+ if (rsp.data.files.hasOwnProperty(key)) {
+ filename = key;
+ break;
+ }
+ }
+ }
+ if (rsp.data.files[filename] !== undefined) {
+ return rsp.data.files[filename].content;
+ }
+ else {
+ return "Error: unknown or missing gist file " + filename;
+ }
+ }
+ }
+ return null;
+ });
+ registerAdapter(function bitbucket(rsp, el) {
+ return rsp && rsp.node && typeof(rsp.data) === "string"
+ ? rsp.data
+ : null;
+ });
+
+ var jsonpcb = 0,
+ loadstr = "Loading…";
+
+ function highlight() {
+ Array.prototype.slice.call(document.querySelectorAll("pre[data-jsonp]")).forEach(function(pre) {
+ pre.textContent = "";
+
+ var code = document.createElement("code");
+ code.textContent = loadstr;
+ pre.appendChild(code);
+
+ var adapterfn = pre.getAttribute("data-adapter");
+ var adapter = null;
+ if ( adapterfn ) {
+ if ( typeof(window[adapterfn]) === "function" ) {
+ adapter = window[adapterfn];
+ }
+ else {
+ code.textContent = "JSONP adapter function '" + adapterfn + "' doesn't exist";
+ return;
+ }
+ }
+
+ var cb = "prismjsonp" + ( jsonpcb++ );
+
+ var uri = document.createElement("a");
+ var src = uri.href = pre.getAttribute("data-jsonp");
+ uri.href += ( uri.search ? "&" : "?" ) + ( pre.getAttribute("data-callback") || "callback" ) + "=" + cb;
+
+ var timeout = setTimeout(function() {
+ // we could clean up window[cb], but if the request finally succeeds, keeping it around is a good thing
+ if ( code.textContent === loadstr )
+ code.textContent = "Timeout loading '" + src + "'";
+ }, 5000);
+
+ var script = document.createElement("script");
+ script.src = uri.href;
+
+ window[cb] = function(rsp) {
+ document.head.removeChild(script);
+ clearTimeout(timeout);
+ delete window[cb];
+
+ var data = "";
+
+ if ( adapter ) {
+ data = adapter(rsp, pre);
+ }
+ else {
+ for ( var p in adapters ) {
+ data = adapters[p](rsp, pre);
+ if ( data !== null ) break;
+ }
+ }
+
+ if (data === null) {
+ code.textContent = "Cannot parse response (perhaps you need an adapter function?)";
+ }
+ else {
+ code.textContent = data;
+ Prism.highlightElement(code);
+ }
+ };
+
+ document.head.appendChild(script);
+ });
+ }
+
+ highlight();
+})(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js b/node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
new file mode 100644
index 00000000..ae910af1
--- /dev/null
+++ b/node_modules/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
@@ -0,0 +1 @@
+!function(){function t(t){"function"!=typeof t||e(t)||r.push(t)}function e(t){return"function"==typeof t?r.filter(function(e){return e.valueOf()===t.valueOf()})[0]:"string"==typeof t&&t.length>0?r.filter(function(e){return e.name===t})[0]:null}function n(t){if("string"==typeof t&&(t=e(t)),"function"==typeof t){var n=r.indexOf(t);n>=0&&r.splice(n,1)}}function a(){Array.prototype.slice.call(document.querySelectorAll("pre[data-jsonp]")).forEach(function(t){t.textContent="";var e=document.createElement("code");e.textContent=i,t.appendChild(e);var n=t.getAttribute("data-adapter"),a=null;if(n){if("function"!=typeof window[n])return e.textContent="JSONP adapter function '"+n+"' doesn't exist",void 0;a=window[n]}var u="prismjsonp"+o++,f=document.createElement("a"),l=f.href=t.getAttribute("data-jsonp");f.href+=(f.search?"&":"?")+(t.getAttribute("data-callback")||"callback")+"="+u;var s=setTimeout(function(){e.textContent===i&&(e.textContent="Timeout loading '"+l+"'")},5e3),d=document.createElement("script");d.src=f.href,window[u]=function(n){document.head.removeChild(d),clearTimeout(s),delete window[u];var o="";if(a)o=a(n,t);else for(var i in r)if(o=r[i](n,t),null!==o)break;null===o?e.textContent="Cannot parse response (perhaps you need an adapter function?)":(e.textContent=o,Prism.highlightElement(e))},document.head.appendChild(d)})}if(self.Prism&&self.document&&document.querySelectorAll&&[].filter){var r=[];Prism.plugins.jsonphighlight={registerAdapter:t,removeAdapter:n,highlight:a},t(function(t){if(t&&t.meta&&t.data){if(t.meta.status&&t.meta.status>=400)return"Error: "+(t.data.message||t.meta.status);if("string"==typeof t.data.content)return"function"==typeof atob?atob(t.data.content.replace(/\s/g,"")):"Your browser cannot decode base64"}return null}),t(function(t,e){if(t&&t.meta&&t.data&&t.data.files){if(t.meta.status&&t.meta.status>=400)return"Error: "+(t.data.message||t.meta.status);var n=e.getAttribute("data-filename");if(null==n)for(var a in t.data.files)if(t.data.files.hasOwnProperty(a)){n=a;break}return void 0!==t.data.files[n]?t.data.files[n].content:"Error: unknown or missing gist file "+n}return null}),t(function(t){return t&&t.node&&"string"==typeof t.data?t.data:null});var o=0,i="Loading…";a()}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js b/node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js
new file mode 100644
index 00000000..bc136c67
--- /dev/null
+++ b/node_modules/prismjs/plugins/keep-markup/prism-keep-markup.js
@@ -0,0 +1,99 @@
+(function () {
+
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !document.createRange) {
+ return;
+ }
+
+ Prism.plugins.KeepMarkup = true;
+
+ Prism.hooks.add('before-highlight', function (env) {
+ if (!env.element.children.length) {
+ return;
+ }
+
+ var pos = 0;
+ var data = [];
+ var f = function (elt, baseNode) {
+ var o = {};
+ if (!baseNode) {
+ // Clone the original tag to keep all attributes
+ o.clone = elt.cloneNode(false);
+ o.posOpen = pos;
+ data.push(o);
+ }
+ for (var i = 0, l = elt.childNodes.length; i < l; i++) {
+ var child = elt.childNodes[i];
+ if (child.nodeType === 1) { // element
+ f(child);
+ } else if(child.nodeType === 3) { // text
+ pos += child.data.length;
+ }
+ }
+ if (!baseNode) {
+ o.posClose = pos;
+ }
+ };
+ f(env.element, true);
+
+ if (data && data.length) {
+ // data is an array of all existing tags
+ env.keepMarkup = data;
+ }
+ });
+
+ Prism.hooks.add('after-highlight', function (env) {
+ if(env.keepMarkup && env.keepMarkup.length) {
+
+ var walk = function (elt, nodeState) {
+ for (var i = 0, l = elt.childNodes.length; i < l; i++) {
+
+ var child = elt.childNodes[i];
+
+ if (child.nodeType === 1) { // element
+ if (!walk(child, nodeState)) {
+ return false;
+ }
+
+ } else if (child.nodeType === 3) { // text
+ if(!nodeState.nodeStart && nodeState.pos + child.data.length > nodeState.node.posOpen) {
+ // We found the start position
+ nodeState.nodeStart = child;
+ nodeState.nodeStartPos = nodeState.node.posOpen - nodeState.pos;
+ }
+ if(nodeState.nodeStart && nodeState.pos + child.data.length >= nodeState.node.posClose) {
+ // We found the end position
+ nodeState.nodeEnd = child;
+ nodeState.nodeEndPos = nodeState.node.posClose - nodeState.pos;
+ }
+
+ nodeState.pos += child.data.length;
+ }
+
+ if (nodeState.nodeStart && nodeState.nodeEnd) {
+ // Select the range and wrap it with the clone
+ var range = document.createRange();
+ range.setStart(nodeState.nodeStart, nodeState.nodeStartPos);
+ range.setEnd(nodeState.nodeEnd, nodeState.nodeEndPos);
+ nodeState.node.clone.appendChild(range.extractContents());
+ range.insertNode(nodeState.node.clone);
+ range.detach();
+
+ // Process is over
+ return false;
+ }
+ }
+ return true;
+ };
+
+ // For each tag, we walk the DOM to reinsert it
+ env.keepMarkup.forEach(function (node) {
+ walk(env.element, {
+ node: node,
+ pos: 0
+ });
+ });
+ // Store new highlightedCode for later hooks calls
+ env.highlightedCode = env.element.innerHTML;
+ }
+ });
+}());
diff --git a/node_modules/prismjs/plugins/keep-markup/prism-keep-markup.min.js b/node_modules/prismjs/plugins/keep-markup/prism-keep-markup.min.js
new file mode 100644
index 00000000..7f54d276
--- /dev/null
+++ b/node_modules/prismjs/plugins/keep-markup/prism-keep-markup.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.createRange&&(Prism.plugins.KeepMarkup=!0,Prism.hooks.add("before-highlight",function(e){if(e.element.children.length){var n=0,o=[],t=function(e,d){var r={};d||(r.clone=e.cloneNode(!1),r.posOpen=n,o.push(r));for(var a=0,s=e.childNodes.length;s>a;a++){var l=e.childNodes[a];1===l.nodeType?t(l):3===l.nodeType&&(n+=l.data.length)}d||(r.posClose=n)};t(e.element,!0),o&&o.length&&(e.keepMarkup=o)}}),Prism.hooks.add("after-highlight",function(e){if(e.keepMarkup&&e.keepMarkup.length){var n=function(e,o){for(var t=0,d=e.childNodes.length;d>t;t++){var r=e.childNodes[t];if(1===r.nodeType){if(!n(r,o))return!1}else 3===r.nodeType&&(!o.nodeStart&&o.pos+r.data.length>o.node.posOpen&&(o.nodeStart=r,o.nodeStartPos=o.node.posOpen-o.pos),o.nodeStart&&o.pos+r.data.length>=o.node.posClose&&(o.nodeEnd=r,o.nodeEndPos=o.node.posClose-o.pos),o.pos+=r.data.length);if(o.nodeStart&&o.nodeEnd){var a=document.createRange();return a.setStart(o.nodeStart,o.nodeStartPos),a.setEnd(o.nodeEnd,o.nodeEndPos),o.node.clone.appendChild(a.extractContents()),a.insertNode(o.node.clone),a.detach(),!1}}return!0};e.keepMarkup.forEach(function(o){n(e.element,{node:o,pos:0})}),e.highlightedCode=e.element.innerHTML}}))}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.css b/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.css
new file mode 100644
index 00000000..6058db44
--- /dev/null
+++ b/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.css
@@ -0,0 +1,49 @@
+pre[data-line] {
+ position: relative;
+ padding: 1em 0 1em 3em;
+}
+
+.line-highlight {
+ position: absolute;
+ left: 0;
+ right: 0;
+ padding: inherit 0;
+ margin-top: 1em; /* Same as .prism’s padding-top */
+
+ background: hsla(24, 20%, 50%,.08);
+ background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));
+
+ pointer-events: none;
+
+ line-height: inherit;
+ white-space: pre;
+}
+
+ .line-highlight:before,
+ .line-highlight[data-end]:after {
+ content: attr(data-start);
+ position: absolute;
+ top: .4em;
+ left: .6em;
+ min-width: 1em;
+ padding: 0 .5em;
+ background-color: hsla(24, 20%, 50%,.4);
+ color: hsl(24, 20%, 95%);
+ font: bold 65%/1.5 sans-serif;
+ text-align: center;
+ vertical-align: .3em;
+ border-radius: 999px;
+ text-shadow: none;
+ box-shadow: 0 1px white;
+ }
+
+ .line-highlight[data-end]:after {
+ content: attr(data-end);
+ top: auto;
+ bottom: .4em;
+ }
+
+.line-numbers .line-highlight:before,
+.line-numbers .line-highlight:after {
+ content: none;
+}
diff --git a/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.js b/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.js
new file mode 100644
index 00000000..5d919ae6
--- /dev/null
+++ b/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.js
@@ -0,0 +1,181 @@
+(function(){
+
+if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {
+ return;
+}
+
+function $$(expr, con) {
+ return Array.prototype.slice.call((con || document).querySelectorAll(expr));
+}
+
+function hasClass(element, className) {
+ className = " " + className + " ";
+ return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1
+}
+
+// Some browsers round the line-height, others don't.
+// We need to test for it to position the elements properly.
+var isLineHeightRounded = (function() {
+ var res;
+ return function() {
+ if(typeof res === 'undefined') {
+ var d = document.createElement('div');
+ d.style.fontSize = '13px';
+ d.style.lineHeight = '1.5';
+ d.style.padding = 0;
+ d.style.border = 0;
+ d.innerHTML = '&nbsp;<br />&nbsp;';
+ document.body.appendChild(d);
+ // Browsers that round the line-height should have offsetHeight === 38
+ // The others should have 39.
+ res = d.offsetHeight === 38;
+ document.body.removeChild(d);
+ }
+ return res;
+ }
+}());
+
+function highlightLines(pre, lines, classes) {
+ lines = typeof lines === 'string' ? lines : pre.getAttribute('data-line');
+
+ var ranges = lines.replace(/\s+/g, '').split(','),
+ offset = +pre.getAttribute('data-line-offset') || 0;
+
+ var parseMethod = isLineHeightRounded() ? parseInt : parseFloat;
+ var lineHeight = parseMethod(getComputedStyle(pre).lineHeight);
+ var hasLineNumbers = hasClass(pre, 'line-numbers');
+
+ for (var i=0, currentRange; currentRange = ranges[i++];) {
+ var range = currentRange.split('-');
+
+ var start = +range[0],
+ end = +range[1] || start;
+
+ var line = pre.querySelector('.line-highlight[data-range="' + currentRange + '"]') || document.createElement('div');
+
+ line.setAttribute('aria-hidden', 'true');
+ line.setAttribute('data-range', currentRange);
+ line.className = (classes || '') + ' line-highlight';
+
+ //if the line-numbers plugin is enabled, then there is no reason for this plugin to display the line numbers
+ if(hasLineNumbers && Prism.plugins.lineNumbers) {
+ var startNode = Prism.plugins.lineNumbers.getLine(pre, start);
+ var endNode = Prism.plugins.lineNumbers.getLine(pre, end);
+
+ if (startNode) {
+ line.style.top = startNode.offsetTop + 'px';
+ }
+
+ if (endNode) {
+ line.style.height = (endNode.offsetTop - startNode.offsetTop) + endNode.offsetHeight + 'px';
+ }
+ } else {
+ line.setAttribute('data-start', start);
+
+ if(end > start) {
+ line.setAttribute('data-end', end);
+ }
+
+ line.style.top = (start - offset - 1) * lineHeight + 'px';
+
+ line.textContent = new Array(end - start + 2).join(' \n');
+ }
+
+ //allow this to play nicely with the line-numbers plugin
+ if(hasLineNumbers) {
+ //need to attack to pre as when line-numbers is enabled, the code tag is relatively which screws up the positioning
+ pre.appendChild(line);
+ } else {
+ (pre.querySelector('code') || pre).appendChild(line);
+ }
+ }
+}
+
+function applyHash() {
+ var hash = location.hash.slice(1);
+
+ // Remove pre-existing temporary lines
+ $$('.temporary.line-highlight').forEach(function (line) {
+ line.parentNode.removeChild(line);
+ });
+
+ var range = (hash.match(/\.([\d,-]+)$/) || [,''])[1];
+
+ if (!range || document.getElementById(hash)) {
+ return;
+ }
+
+ var id = hash.slice(0, hash.lastIndexOf('.')),
+ pre = document.getElementById(id);
+
+ if (!pre) {
+ return;
+ }
+
+ if (!pre.hasAttribute('data-line')) {
+ pre.setAttribute('data-line', '');
+ }
+
+ highlightLines(pre, range, 'temporary ');
+
+ document.querySelector('.temporary.line-highlight').scrollIntoView();
+}
+
+var fakeTimer = 0; // Hack to limit the number of times applyHash() runs
+
+Prism.hooks.add('before-sanity-check', function(env) {
+ var pre = env.element.parentNode;
+ var lines = pre && pre.getAttribute('data-line');
+
+ if (!pre || !lines || !/pre/i.test(pre.nodeName)) {
+ return;
+ }
+
+ /*
+ * Cleanup for other plugins (e.g. autoloader).
+ *
+ * Sometimes <code> blocks are highlighted multiple times. It is necessary
+ * to cleanup any left-over tags, because the whitespace inside of the <div>
+ * tags change the content of the <code> tag.
+ */
+ var num = 0;
+ $$('.line-highlight', pre).forEach(function (line) {
+ num += line.textContent.length;
+ line.parentNode.removeChild(line);
+ });
+ // Remove extra whitespace
+ if (num && /^( \n)+$/.test(env.code.slice(-num))) {
+ env.code = env.code.slice(0, -num);
+ }
+});
+
+Prism.hooks.add('complete', function completeHook(env) {
+ var pre = env.element.parentNode;
+ var lines = pre && pre.getAttribute('data-line');
+
+ if (!pre || !lines || !/pre/i.test(pre.nodeName)) {
+ return;
+ }
+
+ clearTimeout(fakeTimer);
+
+ var hasLineNumbers = Prism.plugins.lineNumbers;
+ var isLineNumbersLoaded = env.plugins && env.plugins.lineNumbers;
+
+ if (hasClass(pre, 'line-numbers') && hasLineNumbers && !isLineNumbersLoaded) {
+ Prism.hooks.add('line-numbers', completeHook);
+ } else {
+ highlightLines(pre, lines);
+ fakeTimer = setTimeout(applyHash, 1);
+ }
+});
+
+ window.addEventListener('hashchange', applyHash);
+ window.addEventListener('resize', function () {
+ var preElements = document.querySelectorAll('pre[data-line]');
+ Array.prototype.forEach.call(preElements, function (pre) {
+ highlightLines(pre);
+ });
+ });
+
+})(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.min.js b/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.min.js
new file mode 100644
index 00000000..6c870914
--- /dev/null
+++ b/node_modules/prismjs/plugins/line-highlight/prism-line-highlight.min.js
@@ -0,0 +1 @@
+!function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){n="string"==typeof n?n:e.getAttribute("data-line");for(var o,l=n.replace(/\s+/g,"").split(","),a=+e.getAttribute("data-line-offset")||0,s=r()?parseInt:parseFloat,d=s(getComputedStyle(e).lineHeight),u=t(e,"line-numbers"),c=0;o=l[c++];){var p=o.split("-"),m=+p[0],f=+p[1]||m,h=e.querySelector('.line-highlight[data-range="'+o+'"]')||document.createElement("div");if(h.setAttribute("aria-hidden","true"),h.setAttribute("data-range",o),h.className=(i||"")+" line-highlight",u&&Prism.plugins.lineNumbers){var g=Prism.plugins.lineNumbers.getLine(e,m),y=Prism.plugins.lineNumbers.getLine(e,f);g&&(h.style.top=g.offsetTop+"px"),y&&(h.style.height=y.offsetTop-g.offsetTop+y.offsetHeight+"px")}else h.setAttribute("data-start",m),f>m&&h.setAttribute("data-end",f),h.style.top=(m-a-1)*d+"px",h.textContent=new Array(f-m+2).join(" \n");u?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML="&nbsp;<br />&nbsp;",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("before-sanity-check",function(t){var n=t.element.parentNode,i=n&&n.getAttribute("data-line");if(n&&i&&/pre/i.test(n.nodeName)){var r=0;e(".line-highlight",n).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(t.code.slice(-r))&&(t.code=t.code.slice(0,-r))}}),Prism.hooks.add("complete",function l(e){var r=e.element.parentNode,a=r&&r.getAttribute("data-line");if(r&&a&&/pre/i.test(r.nodeName)){clearTimeout(o);var s=Prism.plugins.lineNumbers,d=e.plugins&&e.plugins.lineNumbers;t(r,"line-numbers")&&s&&!d?Prism.hooks.add("line-numbers",l):(n(r,a),o=setTimeout(i,1))}}),window.addEventListener("hashchange",i),window.addEventListener("resize",function(){var e=document.querySelectorAll("pre[data-line]");Array.prototype.forEach.call(e,function(e){n(e)})})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.css b/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.css
new file mode 100644
index 00000000..08b29ed6
--- /dev/null
+++ b/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.css
@@ -0,0 +1,41 @@
+pre[class*="language-"].line-numbers {
+ position: relative;
+ padding-left: 3.8em;
+ counter-reset: linenumber;
+}
+
+pre[class*="language-"].line-numbers > code {
+ position: relative;
+ white-space: inherit;
+}
+
+.line-numbers .line-numbers-rows {
+ position: absolute;
+ pointer-events: none;
+ top: 0;
+ font-size: 100%;
+ left: -3.8em;
+ width: 3em; /* works for line-numbers below 1000 lines */
+ letter-spacing: -1px;
+ border-right: 1px solid #999;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+}
+
+ .line-numbers-rows > span {
+ pointer-events: none;
+ display: block;
+ counter-increment: linenumber;
+ }
+
+ .line-numbers-rows > span:before {
+ content: counter(linenumber);
+ color: #999;
+ display: block;
+ padding-right: 0.8em;
+ text-align: right;
+ }
diff --git a/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js b/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js
new file mode 100644
index 00000000..e9e684fe
--- /dev/null
+++ b/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js
@@ -0,0 +1,159 @@
+(function () {
+
+ if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+ }
+
+ /**
+ * Plugin name which is used as a class name for <pre> which is activating the plugin
+ * @type {String}
+ */
+ var PLUGIN_NAME = 'line-numbers';
+
+ /**
+ * Regular expression used for determining line breaks
+ * @type {RegExp}
+ */
+ var NEW_LINE_EXP = /\n(?!$)/g;
+
+ /**
+ * Resizes line numbers spans according to height of line of code
+ * @param {Element} element <pre> element
+ */
+ var _resizeElement = function (element) {
+ var codeStyles = getStyles(element);
+ var whiteSpace = codeStyles['white-space'];
+
+ if (whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line') {
+ var codeElement = element.querySelector('code');
+ var lineNumbersWrapper = element.querySelector('.line-numbers-rows');
+ var lineNumberSizer = element.querySelector('.line-numbers-sizer');
+ var codeLines = codeElement.textContent.split(NEW_LINE_EXP);
+
+ if (!lineNumberSizer) {
+ lineNumberSizer = document.createElement('span');
+ lineNumberSizer.className = 'line-numbers-sizer';
+
+ codeElement.appendChild(lineNumberSizer);
+ }
+
+ lineNumberSizer.style.display = 'block';
+
+ codeLines.forEach(function (line, lineNumber) {
+ lineNumberSizer.textContent = line || '\n';
+ var lineSize = lineNumberSizer.getBoundingClientRect().height;
+ lineNumbersWrapper.children[lineNumber].style.height = lineSize + 'px';
+ });
+
+ lineNumberSizer.textContent = '';
+ lineNumberSizer.style.display = 'none';
+ }
+ };
+
+ /**
+ * Returns style declarations for the element
+ * @param {Element} element
+ */
+ var getStyles = function (element) {
+ if (!element) {
+ return null;
+ }
+
+ return window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);
+ };
+
+ window.addEventListener('resize', function () {
+ Array.prototype.forEach.call(document.querySelectorAll('pre.' + PLUGIN_NAME), _resizeElement);
+ });
+
+ Prism.hooks.add('complete', function (env) {
+ if (!env.code) {
+ return;
+ }
+
+ // works only for <code> wrapped inside <pre> (not inline)
+ var pre = env.element.parentNode;
+ var clsReg = /\s*\bline-numbers\b\s*/;
+ if (
+ !pre || !/pre/i.test(pre.nodeName) ||
+ // Abort only if nor the <pre> nor the <code> have the class
+ (!clsReg.test(pre.className) && !clsReg.test(env.element.className))
+ ) {
+ return;
+ }
+
+ if (env.element.querySelector('.line-numbers-rows')) {
+ // Abort if line numbers already exists
+ return;
+ }
+
+ if (clsReg.test(env.element.className)) {
+ // Remove the class 'line-numbers' from the <code>
+ env.element.className = env.element.className.replace(clsReg, ' ');
+ }
+ if (!clsReg.test(pre.className)) {
+ // Add the class 'line-numbers' to the <pre>
+ pre.className += ' line-numbers';
+ }
+
+ var match = env.code.match(NEW_LINE_EXP);
+ var linesNum = match ? match.length + 1 : 1;
+ var lineNumbersWrapper;
+
+ var lines = new Array(linesNum + 1);
+ lines = lines.join('<span></span>');
+
+ lineNumbersWrapper = document.createElement('span');
+ lineNumbersWrapper.setAttribute('aria-hidden', 'true');
+ lineNumbersWrapper.className = 'line-numbers-rows';
+ lineNumbersWrapper.innerHTML = lines;
+
+ if (pre.hasAttribute('data-start')) {
+ pre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);
+ }
+
+ env.element.appendChild(lineNumbersWrapper);
+
+ _resizeElement(pre);
+
+ Prism.hooks.run('line-numbers', env);
+ });
+
+ Prism.hooks.add('line-numbers', function (env) {
+ env.plugins = env.plugins || {};
+ env.plugins.lineNumbers = true;
+ });
+
+ /**
+ * Global exports
+ */
+ Prism.plugins.lineNumbers = {
+ /**
+ * Get node for provided line number
+ * @param {Element} element pre element
+ * @param {Number} number line number
+ * @return {Element|undefined}
+ */
+ getLine: function (element, number) {
+ if (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {
+ return;
+ }
+
+ var lineNumberRows = element.querySelector('.line-numbers-rows');
+ var lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;
+ var lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);
+
+ if (number < lineNumberStart) {
+ number = lineNumberStart;
+ }
+ if (number > lineNumberEnd) {
+ number = lineNumberEnd;
+ }
+
+ var lineIndex = number - lineNumberStart;
+
+ return lineNumberRows.children[lineIndex];
+ }
+ };
+
+}()); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.min.js b/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.min.js
new file mode 100644
index 00000000..5291216f
--- /dev/null
+++ b/node_modules/prismjs/plugins/line-numbers/prism-line-numbers.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e="line-numbers",t=/\n(?!$)/g,n=function(e){var n=r(e),s=n["white-space"];if("pre-wrap"===s||"pre-line"===s){var l=e.querySelector("code"),i=e.querySelector(".line-numbers-rows"),a=e.querySelector(".line-numbers-sizer"),o=l.textContent.split(t);a||(a=document.createElement("span"),a.className="line-numbers-sizer",l.appendChild(a)),a.style.display="block",o.forEach(function(e,t){a.textContent=e||"\n";var n=a.getBoundingClientRect().height;i.children[t].style.height=n+"px"}),a.textContent="",a.style.display="none"}},r=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null};window.addEventListener("resize",function(){Array.prototype.forEach.call(document.querySelectorAll("pre."+e),n)}),Prism.hooks.add("complete",function(e){if(e.code){var r=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(r&&/pre/i.test(r.nodeName)&&(s.test(r.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s," ")),s.test(r.className)||(r.className+=" line-numbers");var l,i=e.code.match(t),a=i?i.length+1:1,o=new Array(a+1);o=o.join("<span></span>"),l=document.createElement("span"),l.setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=o,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(l),n(r),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}),Prism.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)){var r=t.querySelector(".line-numbers-rows"),s=parseInt(t.getAttribute("data-start"),10)||1,l=s+(r.children.length-1);s>n&&(n=s),n>l&&(n=l);var i=n-s;return r.children[i]}}}}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js b/node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js
new file mode 100644
index 00000000..0b66de03
--- /dev/null
+++ b/node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js
@@ -0,0 +1,190 @@
+(function() {
+
+var assign = Object.assign || function (obj1, obj2) {
+ for (var name in obj2) {
+ if (obj2.hasOwnProperty(name))
+ obj1[name] = obj2[name];
+ }
+ return obj1;
+}
+
+function NormalizeWhitespace(defaults) {
+ this.defaults = assign({}, defaults);
+}
+
+function toCamelCase(value) {
+ return value.replace(/-(\w)/g, function(match, firstChar) {
+ return firstChar.toUpperCase();
+ });
+}
+
+function tabLen(str) {
+ var res = 0;
+ for (var i = 0; i < str.length; ++i) {
+ if (str.charCodeAt(i) == '\t'.charCodeAt(0))
+ res += 3;
+ }
+ return str.length + res;
+}
+
+NormalizeWhitespace.prototype = {
+ setDefaults: function (defaults) {
+ this.defaults = assign(this.defaults, defaults);
+ },
+ normalize: function (input, settings) {
+ settings = assign(this.defaults, settings);
+
+ for (var name in settings) {
+ var methodName = toCamelCase(name);
+ if (name !== "normalize" && methodName !== 'setDefaults' &&
+ settings[name] && this[methodName]) {
+ input = this[methodName].call(this, input, settings[name]);
+ }
+ }
+
+ return input;
+ },
+
+ /*
+ * Normalization methods
+ */
+ leftTrim: function (input) {
+ return input.replace(/^\s+/, '');
+ },
+ rightTrim: function (input) {
+ return input.replace(/\s+$/, '');
+ },
+ tabsToSpaces: function (input, spaces) {
+ spaces = spaces|0 || 4;
+ return input.replace(/\t/g, new Array(++spaces).join(' '));
+ },
+ spacesToTabs: function (input, spaces) {
+ spaces = spaces|0 || 4;
+ return input.replace(new RegExp(' {' + spaces + '}', 'g'), '\t');
+ },
+ removeTrailing: function (input) {
+ return input.replace(/\s*?$/gm, '');
+ },
+ // Support for deprecated plugin remove-initial-line-feed
+ removeInitialLineFeed: function (input) {
+ return input.replace(/^(?:\r?\n|\r)/, '');
+ },
+ removeIndent: function (input) {
+ var indents = input.match(/^[^\S\n\r]*(?=\S)/gm);
+
+ if (!indents || !indents[0].length)
+ return input;
+
+ indents.sort(function(a, b){return a.length - b.length; });
+
+ if (!indents[0].length)
+ return input;
+
+ return input.replace(new RegExp('^' + indents[0], 'gm'), '');
+ },
+ indent: function (input, tabs) {
+ return input.replace(/^[^\S\n\r]*(?=\S)/gm, new Array(++tabs).join('\t') + '$&');
+ },
+ breakLines: function (input, characters) {
+ characters = (characters === true) ? 80 : characters|0 || 80;
+
+ var lines = input.split('\n');
+ for (var i = 0; i < lines.length; ++i) {
+ if (tabLen(lines[i]) <= characters)
+ continue;
+
+ var line = lines[i].split(/(\s+)/g),
+ len = 0;
+
+ for (var j = 0; j < line.length; ++j) {
+ var tl = tabLen(line[j]);
+ len += tl;
+ if (len > characters) {
+ line[j] = '\n' + line[j];
+ len = tl;
+ }
+ }
+ lines[i] = line.join('');
+ }
+ return lines.join('\n');
+ }
+};
+
+// Support node modules
+if (typeof module !== 'undefined' && module.exports) {
+ module.exports = NormalizeWhitespace;
+}
+
+// Exit if prism is not loaded
+if (typeof Prism === 'undefined') {
+ return;
+}
+
+Prism.plugins.NormalizeWhitespace = new NormalizeWhitespace({
+ 'remove-trailing': true,
+ 'remove-indent': true,
+ 'left-trim': true,
+ 'right-trim': true,
+ /*'break-lines': 80,
+ 'indent': 2,
+ 'remove-initial-line-feed': false,
+ 'tabs-to-spaces': 4,
+ 'spaces-to-tabs': 4*/
+});
+
+Prism.hooks.add('before-sanity-check', function (env) {
+ var Normalizer = Prism.plugins.NormalizeWhitespace;
+
+ // Check settings
+ if (env.settings && env.settings['whitespace-normalization'] === false) {
+ return;
+ }
+
+ // Simple mode if there is no env.element
+ if ((!env.element || !env.element.parentNode) && env.code) {
+ env.code = Normalizer.normalize(env.code, env.settings);
+ return;
+ }
+
+ // Normal mode
+ var pre = env.element.parentNode;
+ var clsReg = /\bno-whitespace-normalization\b/;
+ if (!env.code || !pre || pre.nodeName.toLowerCase() !== 'pre' ||
+ clsReg.test(pre.className) || clsReg.test(env.element.className))
+ return;
+
+ var children = pre.childNodes,
+ before = '',
+ after = '',
+ codeFound = false;
+
+ // Move surrounding whitespace from the <pre> tag into the <code> tag
+ for (var i = 0; i < children.length; ++i) {
+ var node = children[i];
+
+ if (node == env.element) {
+ codeFound = true;
+ } else if (node.nodeName === "#text") {
+ if (codeFound) {
+ after += node.nodeValue;
+ } else {
+ before += node.nodeValue;
+ }
+
+ pre.removeChild(node);
+ --i;
+ }
+ }
+
+ if (!env.element.children.length || !Prism.plugins.KeepMarkup) {
+ env.code = before + env.code + after;
+ env.code = Normalizer.normalize(env.code, env.settings);
+ } else {
+ // Preserve markup for keep-markup plugin
+ var html = before + env.element.innerHTML + after;
+ env.element.innerHTML = Normalizer.normalize(html, env.settings);
+ env.code = env.element.textContent;
+ }
+});
+
+}()); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js b/node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
new file mode 100644
index 00000000..b38d064c
--- /dev/null
+++ b/node_modules/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
@@ -0,0 +1 @@
+!function(){function e(e){this.defaults=r({},e)}function n(e){return e.replace(/-(\w)/g,function(e,n){return n.toUpperCase()})}function t(e){for(var n=0,t=0;t<e.length;++t)e.charCodeAt(t)==" ".charCodeAt(0)&&(n+=3);return e.length+n}var r=Object.assign||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e};e.prototype={setDefaults:function(e){this.defaults=r(this.defaults,e)},normalize:function(e,t){t=r(this.defaults,t);for(var i in t){var o=n(i);"normalize"!==i&&"setDefaults"!==o&&t[i]&&this[o]&&(e=this[o].call(this,e,t[i]))}return e},leftTrim:function(e){return e.replace(/^\s+/,"")},rightTrim:function(e){return e.replace(/\s+$/,"")},tabsToSpaces:function(e,n){return n=0|n||4,e.replace(/\t/g,new Array(++n).join(" "))},spacesToTabs:function(e,n){return n=0|n||4,e.replace(new RegExp(" {"+n+"}","g")," ")},removeTrailing:function(e){return e.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(e){return e.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(e){var n=e.match(/^[^\S\n\r]*(?=\S)/gm);return n&&n[0].length?(n.sort(function(e,n){return e.length-n.length}),n[0].length?e.replace(new RegExp("^"+n[0],"gm"),""):e):e},indent:function(e,n){return e.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++n).join(" ")+"$&")},breakLines:function(e,n){n=n===!0?80:0|n||80;for(var r=e.split("\n"),i=0;i<r.length;++i)if(!(t(r[i])<=n)){for(var o=r[i].split(/(\s+)/g),a=0,s=0;s<o.length;++s){var l=t(o[s]);a+=l,a>n&&(o[s]="\n"+o[s],a=l)}r[i]=o.join("")}return r.join("\n")}},"undefined"!=typeof module&&module.exports&&(module.exports=e),"undefined"!=typeof Prism&&(Prism.plugins.NormalizeWhitespace=new e({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",function(e){var n=Prism.plugins.NormalizeWhitespace;if(!e.settings||e.settings["whitespace-normalization"]!==!1){if((!e.element||!e.element.parentNode)&&e.code)return e.code=n.normalize(e.code,e.settings),void 0;var t=e.element.parentNode,r=/\bno-whitespace-normalization\b/;if(e.code&&t&&"pre"===t.nodeName.toLowerCase()&&!r.test(t.className)&&!r.test(e.element.className)){for(var i=t.childNodes,o="",a="",s=!1,l=0;l<i.length;++l){var c=i[l];c==e.element?s=!0:"#text"===c.nodeName&&(s?a+=c.nodeValue:o+=c.nodeValue,t.removeChild(c),--l)}if(e.element.children.length&&Prism.plugins.KeepMarkup){var u=o+e.element.innerHTML+a;e.element.innerHTML=n.normalize(u,e.settings),e.code=e.element.textContent}else e.code=o+e.code+a,e.code=n.normalize(e.code,e.settings)}}}))}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/previewers/prism-previewers.css b/node_modules/prismjs/plugins/previewers/prism-previewers.css
new file mode 100644
index 00000000..b36988c2
--- /dev/null
+++ b/node_modules/prismjs/plugins/previewers/prism-previewers.css
@@ -0,0 +1,242 @@
+.prism-previewer,
+.prism-previewer:before,
+.prism-previewer:after {
+ position: absolute;
+ pointer-events: none;
+}
+.prism-previewer,
+.prism-previewer:after {
+ left: 50%;
+}
+.prism-previewer {
+ margin-top: -48px;
+ width: 32px;
+ height: 32px;
+ margin-left: -16px;
+
+ opacity: 0;
+ -webkit-transition: opacity .25s;
+ -o-transition: opacity .25s;
+ transition: opacity .25s;
+}
+.prism-previewer.flipped {
+ margin-top: 0;
+ margin-bottom: -48px;
+}
+.prism-previewer:before,
+.prism-previewer:after {
+ content: '';
+ position: absolute;
+ pointer-events: none;
+}
+.prism-previewer:before {
+ top: -5px;
+ right: -5px;
+ left: -5px;
+ bottom: -5px;
+ border-radius: 10px;
+ border: 5px solid #fff;
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.5) inset, 0 0 10px rgba(0, 0, 0, 0.75);
+}
+.prism-previewer:after {
+ top: 100%;
+ width: 0;
+ height: 0;
+ margin: 5px 0 0 -7px;
+ border: 7px solid transparent;
+ border-color: rgba(255, 0, 0, 0);
+ border-top-color: #fff;
+}
+.prism-previewer.flipped:after {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: 5px;
+ border-top-color: rgba(255, 0, 0, 0);
+ border-bottom-color: #fff;
+}
+.prism-previewer.active {
+ opacity: 1;
+}
+
+.prism-previewer-angle:before {
+ border-radius: 50%;
+ background: #fff;
+}
+.prism-previewer-angle:after {
+ margin-top: 4px;
+}
+.prism-previewer-angle svg {
+ width: 32px;
+ height: 32px;
+ -webkit-transform: rotate(-90deg);
+ -moz-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+}
+.prism-previewer-angle[data-negative] svg {
+ -webkit-transform: scaleX(-1) rotate(-90deg);
+ -moz-transform: scaleX(-1) rotate(-90deg);
+ -ms-transform: scaleX(-1) rotate(-90deg);
+ -o-transform: scaleX(-1) rotate(-90deg);
+ transform: scaleX(-1) rotate(-90deg);
+}
+.prism-previewer-angle circle {
+ fill: transparent;
+ stroke: hsl(200, 10%, 20%);
+ stroke-opacity: 0.9;
+ stroke-width: 32;
+ stroke-dasharray: 0, 500;
+}
+
+.prism-previewer-gradient {
+ background-image: linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb);
+ background-size: 10px 10px;
+ background-position: 0 0, 5px 5px;
+
+ width: 64px;
+ margin-left: -32px;
+}
+.prism-previewer-gradient:before {
+ content: none;
+}
+.prism-previewer-gradient div {
+ position: absolute;
+ top: -5px;
+ left: -5px;
+ right: -5px;
+ bottom: -5px;
+ border-radius: 10px;
+ border: 5px solid #fff;
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.5) inset, 0 0 10px rgba(0, 0, 0, 0.75);
+}
+
+.prism-previewer-color {
+ background-image: linear-gradient(45deg, #bbb 25%, transparent 25%, transparent 75%, #bbb 75%, #bbb), linear-gradient(45deg, #bbb 25%, #eee 25%, #eee 75%, #bbb 75%, #bbb);
+ background-size: 10px 10px;
+ background-position: 0 0, 5px 5px;
+}
+.prism-previewer-color:before {
+ background-color: inherit;
+ background-clip: padding-box;
+}
+
+.prism-previewer-easing {
+ margin-top: -76px;
+ margin-left: -30px;
+ width: 60px;
+ height: 60px;
+ background: #333;
+}
+.prism-previewer-easing.flipped {
+ margin-bottom: -116px;
+}
+.prism-previewer-easing svg {
+ width: 60px;
+ height: 60px;
+}
+.prism-previewer-easing circle {
+ fill: hsl(200, 10%, 20%);
+ stroke: white;
+}
+.prism-previewer-easing path {
+ fill: none;
+ stroke: white;
+ stroke-linecap: round;
+ stroke-width: 4;
+}
+.prism-previewer-easing line {
+ stroke: white;
+ stroke-opacity: 0.5;
+ stroke-width: 2;
+}
+
+@-webkit-keyframes prism-previewer-time {
+ 0% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: 0;
+ }
+ 50% {
+ stroke-dasharray: 100, 500;
+ stroke-dashoffset: 0;
+ }
+ 100% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: -100;
+ }
+}
+
+@-o-keyframes prism-previewer-time {
+ 0% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: 0;
+ }
+ 50% {
+ stroke-dasharray: 100, 500;
+ stroke-dashoffset: 0;
+ }
+ 100% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: -100;
+ }
+}
+
+@-moz-keyframes prism-previewer-time {
+ 0% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: 0;
+ }
+ 50% {
+ stroke-dasharray: 100, 500;
+ stroke-dashoffset: 0;
+ }
+ 100% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: -100;
+ }
+}
+
+@keyframes prism-previewer-time {
+ 0% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: 0;
+ }
+ 50% {
+ stroke-dasharray: 100, 500;
+ stroke-dashoffset: 0;
+ }
+ 100% {
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: -100;
+ }
+}
+
+.prism-previewer-time:before {
+ border-radius: 50%;
+ background: #fff;
+}
+.prism-previewer-time:after {
+ margin-top: 4px;
+}
+.prism-previewer-time svg {
+ width: 32px;
+ height: 32px;
+ -webkit-transform: rotate(-90deg);
+ -moz-transform: rotate(-90deg);
+ -ms-transform: rotate(-90deg);
+ -o-transform: rotate(-90deg);
+ transform: rotate(-90deg);
+}
+.prism-previewer-time circle {
+ fill: transparent;
+ stroke: hsl(200, 10%, 20%);
+ stroke-opacity: 0.9;
+ stroke-width: 32;
+ stroke-dasharray: 0, 500;
+ stroke-dashoffset: 0;
+ -webkit-animation: prism-previewer-time linear infinite 3s;
+ -moz-animation: prism-previewer-time linear infinite 3s;
+ -o-animation: prism-previewer-time linear infinite 3s;
+ animation: prism-previewer-time linear infinite 3s;
+} \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/previewers/prism-previewers.js b/node_modules/prismjs/plugins/previewers/prism-previewers.js
new file mode 100644
index 00000000..8c2feb16
--- /dev/null
+++ b/node_modules/prismjs/plugins/previewers/prism-previewers.js
@@ -0,0 +1,715 @@
+(function() {
+
+ if (
+ typeof self !== 'undefined' && !self.Prism ||
+ !self.document || !Function.prototype.bind
+ ) {
+ return;
+ }
+
+ var previewers = {
+ // gradient must be defined before color and angle
+ 'gradient': {
+ create: (function () {
+
+ // Stores already processed gradients so that we don't
+ // make the conversion every time the previewer is shown
+ var cache = {};
+
+ /**
+ * Returns a W3C-valid linear gradient
+ * @param {string} prefix Vendor prefix if any ("-moz-", "-webkit-", etc.)
+ * @param {string} func Gradient function name ("linear-gradient")
+ * @param {string[]} values Array of the gradient function parameters (["0deg", "red 0%", "blue 100%"])
+ */
+ var convertToW3CLinearGradient = function(prefix, func, values) {
+ // Default value for angle
+ var angle = '180deg';
+
+ if (/^(?:-?\d*\.?\d+(?:deg|rad)|to\b|top|right|bottom|left)/.test(values[0])) {
+ angle = values.shift();
+ if (angle.indexOf('to ') < 0) {
+ // Angle uses old keywords
+ // W3C syntax uses "to" + opposite keywords
+ if (angle.indexOf('top') >= 0) {
+ if (angle.indexOf('left') >= 0) {
+ angle = 'to bottom right';
+ } else if (angle.indexOf('right') >= 0) {
+ angle = 'to bottom left';
+ } else {
+ angle = 'to bottom';
+ }
+ } else if (angle.indexOf('bottom') >= 0) {
+ if (angle.indexOf('left') >= 0) {
+ angle = 'to top right';
+ } else if (angle.indexOf('right') >= 0) {
+ angle = 'to top left';
+ } else {
+ angle = 'to top';
+ }
+ } else if (angle.indexOf('left') >= 0) {
+ angle = 'to right';
+ } else if (angle.indexOf('right') >= 0) {
+ angle = 'to left';
+ } else if (prefix) {
+ // Angle is shifted by 90deg in prefixed gradients
+ if (angle.indexOf('deg') >= 0) {
+ angle = (90 - parseFloat(angle)) + 'deg';
+ } else if (angle.indexOf('rad') >= 0) {
+ angle = (Math.PI / 2 - parseFloat(angle)) + 'rad';
+ }
+ }
+ }
+ }
+
+ return func + '(' + angle + ',' + values.join(',') + ')';
+ };
+
+ /**
+ * Returns a W3C-valid radial gradient
+ * @param {string} prefix Vendor prefix if any ("-moz-", "-webkit-", etc.)
+ * @param {string} func Gradient function name ("linear-gradient")
+ * @param {string[]} values Array of the gradient function parameters (["0deg", "red 0%", "blue 100%"])
+ */
+ var convertToW3CRadialGradient = function(prefix, func, values) {
+ if (values[0].indexOf('at') < 0) {
+ // Looks like old syntax
+
+ // Default values
+ var position = 'center';
+ var shape = 'ellipse';
+ var size = 'farthest-corner';
+
+ if (/\bcenter|top|right|bottom|left\b|^\d+/.test(values[0])) {
+ // Found a position
+ // Remove angle value, if any
+ position = values.shift().replace(/\s*-?\d+(?:rad|deg)\s*/, '');
+ }
+ if (/\bcircle|ellipse|closest|farthest|contain|cover\b/.test(values[0])) {
+ // Found a shape and/or size
+ var shapeSizeParts = values.shift().split(/\s+/);
+ if (shapeSizeParts[0] && (shapeSizeParts[0] === 'circle' || shapeSizeParts[0] === 'ellipse')) {
+ shape = shapeSizeParts.shift();
+ }
+ if (shapeSizeParts[0]) {
+ size = shapeSizeParts.shift();
+ }
+
+ // Old keywords are converted to their synonyms
+ if (size === 'cover') {
+ size = 'farthest-corner';
+ } else if (size === 'contain') {
+ size = 'clothest-side';
+ }
+ }
+
+ return func + '(' + shape + ' ' + size + ' at ' + position + ',' + values.join(',') + ')';
+ }
+ return func + '(' + values.join(',') + ')';
+ };
+
+ /**
+ * Converts a gradient to a W3C-valid one
+ * Does not support old webkit syntax (-webkit-gradient(linear...) and -webkit-gradient(radial...))
+ * @param {string} gradient The CSS gradient
+ */
+ var convertToW3CGradient = function(gradient) {
+ if (cache[gradient]) {
+ return cache[gradient];
+ }
+ var parts = gradient.match(/^(\b|\B-[a-z]{1,10}-)((?:repeating-)?(?:linear|radial)-gradient)/);
+ // "", "-moz-", etc.
+ var prefix = parts && parts[1];
+ // "linear-gradient", "radial-gradient", etc.
+ var func = parts && parts[2];
+
+ var values = gradient.replace(/^(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\(|\)$/g, '').split(/\s*,\s*/);
+
+ if (func.indexOf('linear') >= 0) {
+ return cache[gradient] = convertToW3CLinearGradient(prefix, func, values);
+ } else if (func.indexOf('radial') >= 0) {
+ return cache[gradient] = convertToW3CRadialGradient(prefix, func, values);
+ }
+ return cache[gradient] = func + '(' + values.join(',') + ')';
+ };
+
+ return function () {
+ new Prism.plugins.Previewer('gradient', function(value) {
+ this.firstChild.style.backgroundImage = '';
+ this.firstChild.style.backgroundImage = convertToW3CGradient(value);
+ return !!this.firstChild.style.backgroundImage;
+ }, '*', function () {
+ this._elt.innerHTML = '<div></div>';
+ });
+ };
+ }()),
+ tokens: {
+ 'gradient': {
+ pattern: /(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\((?:(?:rgb|hsl)a?\(.+?\)|[^\)])+\)/gi,
+ inside: {
+ 'function': /[\w-]+(?=\()/,
+ 'punctuation': /[(),]/
+ }
+ }
+ },
+ languages: {
+ 'css': true,
+ 'less': true,
+ 'sass': [
+ {
+ lang: 'sass',
+ before: 'punctuation',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['variable-line']
+ },
+ {
+ lang: 'sass',
+ before: 'punctuation',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['property-line']
+ }
+ ],
+ 'scss': true,
+ 'stylus': [
+ {
+ lang: 'stylus',
+ before: 'func',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside
+ },
+ {
+ lang: 'stylus',
+ before: 'func',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside
+ }
+ ]
+ }
+ },
+ 'angle': {
+ create: function () {
+ new Prism.plugins.Previewer('angle', function(value) {
+ var num = parseFloat(value);
+ var unit = value.match(/[a-z]+$/i);
+ var max, percentage;
+ if (!num || !unit) {
+ return false;
+ }
+ unit = unit[0];
+
+ switch(unit) {
+ case 'deg':
+ max = 360;
+ break;
+ case 'grad':
+ max = 400;
+ break;
+ case 'rad':
+ max = 2 * Math.PI;
+ break;
+ case 'turn':
+ max = 1;
+ }
+
+ percentage = 100 * num/max;
+ percentage %= 100;
+
+ this[(num < 0? 'set' : 'remove') + 'Attribute']('data-negative', '');
+ this.querySelector('circle').style.strokeDasharray = Math.abs(percentage) + ',500';
+ return true;
+ }, '*', function () {
+ this._elt.innerHTML = '<svg viewBox="0 0 64 64">' +
+ '<circle r="16" cy="32" cx="32"></circle>' +
+ '</svg>';
+ });
+ },
+ tokens: {
+ 'angle': /(?:\b|\B-|(?=\B\.))\d*\.?\d+(?:deg|g?rad|turn)\b/i
+ },
+ languages: {
+ 'css': true,
+ 'less': true,
+ 'markup': {
+ lang: 'markup',
+ before: 'punctuation',
+ inside: 'inside',
+ root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value']
+ },
+ 'sass': [
+ {
+ lang: 'sass',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['property-line']
+ },
+ {
+ lang: 'sass',
+ before: 'operator',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['variable-line']
+ }
+ ],
+ 'scss': true,
+ 'stylus': [
+ {
+ lang: 'stylus',
+ before: 'func',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside
+ },
+ {
+ lang: 'stylus',
+ before: 'func',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside
+ }
+ ]
+ }
+ },
+ 'color': {
+ create: function () {
+ new Prism.plugins.Previewer('color', function(value) {
+ this.style.backgroundColor = '';
+ this.style.backgroundColor = value;
+ return !!this.style.backgroundColor;
+ });
+ },
+ tokens: {
+ 'color': {
+ pattern: /\B#(?:[0-9a-f]{3}){1,2}\b|\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B|\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGray|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGray|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGray|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gray|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGray|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGray|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGray|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,
+ inside: {
+ 'function': /[\w-]+(?=\()/,
+ 'punctuation': /[(),]/
+ }
+ }
+ },
+ languages: {
+ 'css': true,
+ 'less': true,
+ 'markup': {
+ lang: 'markup',
+ before: 'punctuation',
+ inside: 'inside',
+ root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value']
+ },
+ 'sass': [
+ {
+ lang: 'sass',
+ before: 'punctuation',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['variable-line']
+ },
+ {
+ lang: 'sass',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['property-line']
+ }
+ ],
+ 'scss': true,
+ 'stylus': [
+ {
+ lang: 'stylus',
+ before: 'hexcode',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside
+ },
+ {
+ lang: 'stylus',
+ before: 'hexcode',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside
+ }
+ ]
+ }
+ },
+ 'easing': {
+ create: function () {
+ new Prism.plugins.Previewer('easing', function (value) {
+
+ value = {
+ 'linear': '0,0,1,1',
+ 'ease': '.25,.1,.25,1',
+ 'ease-in': '.42,0,1,1',
+ 'ease-out': '0,0,.58,1',
+ 'ease-in-out':'.42,0,.58,1'
+ }[value] || value;
+
+ var p = value.match(/-?\d*\.?\d+/g);
+
+ if(p.length === 4) {
+ p = p.map(function(p, i) { return (i % 2? 1 - p : p) * 100; });
+
+ this.querySelector('path').setAttribute('d', 'M0,100 C' + p[0] + ',' + p[1] + ', ' + p[2] + ',' + p[3] + ', 100,0');
+
+ var lines = this.querySelectorAll('line');
+ lines[0].setAttribute('x2', p[0]);
+ lines[0].setAttribute('y2', p[1]);
+ lines[1].setAttribute('x2', p[2]);
+ lines[1].setAttribute('y2', p[3]);
+
+ return true;
+ }
+
+ return false;
+ }, '*', function () {
+ this._elt.innerHTML = '<svg viewBox="-20 -20 140 140" width="100" height="100">' +
+ '<defs>' +
+ '<marker id="prism-previewer-easing-marker" viewBox="0 0 4 4" refX="2" refY="2" markerUnits="strokeWidth">' +
+ '<circle cx="2" cy="2" r="1.5" />' +
+ '</marker>' +
+ '</defs>' +
+ '<path d="M0,100 C20,50, 40,30, 100,0" />' +
+ '<line x1="0" y1="100" x2="20" y2="50" marker-start="url(' + location.href + '#prism-previewer-easing-marker)" marker-end="url(' + location.href + '#prism-previewer-easing-marker)" />' +
+ '<line x1="100" y1="0" x2="40" y2="30" marker-start="url(' + location.href + '#prism-previewer-easing-marker)" marker-end="url(' + location.href + '#prism-previewer-easing-marker)" />' +
+ '</svg>';
+ });
+ },
+ tokens: {
+ 'easing': {
+ pattern: /\bcubic-bezier\((?:-?\d*\.?\d+,\s*){3}-?\d*\.?\d+\)\B|\b(?:linear|ease(?:-in)?(?:-out)?)(?=\s|[;}]|$)/i,
+ inside: {
+ 'function': /[\w-]+(?=\()/,
+ 'punctuation': /[(),]/
+ }
+ }
+ },
+ languages: {
+ 'css': true,
+ 'less': true,
+ 'sass': [
+ {
+ lang: 'sass',
+ inside: 'inside',
+ before: 'punctuation',
+ root: Prism.languages.sass && Prism.languages.sass['variable-line']
+ },
+ {
+ lang: 'sass',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['property-line']
+ }
+ ],
+ 'scss': true,
+ 'stylus': [
+ {
+ lang: 'stylus',
+ before: 'hexcode',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside
+ },
+ {
+ lang: 'stylus',
+ before: 'hexcode',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside
+ }
+ ]
+ }
+ },
+
+ 'time': {
+ create: function () {
+ new Prism.plugins.Previewer('time', function(value) {
+ var num = parseFloat(value);
+ var unit = value.match(/[a-z]+$/i);
+ if (!num || !unit) {
+ return false;
+ }
+ unit = unit[0];
+ this.querySelector('circle').style.animationDuration = 2 * num + unit;
+ return true;
+ }, '*', function () {
+ this._elt.innerHTML = '<svg viewBox="0 0 64 64">' +
+ '<circle r="16" cy="32" cx="32"></circle>' +
+ '</svg>';
+ });
+ },
+ tokens: {
+ 'time': /(?:\b|\B-|(?=\B\.))\d*\.?\d+m?s\b/i
+ },
+ languages: {
+ 'css': true,
+ 'less': true,
+ 'markup': {
+ lang: 'markup',
+ before: 'punctuation',
+ inside: 'inside',
+ root: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value']
+ },
+ 'sass': [
+ {
+ lang: 'sass',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['property-line']
+ },
+ {
+ lang: 'sass',
+ before: 'operator',
+ inside: 'inside',
+ root: Prism.languages.sass && Prism.languages.sass['variable-line']
+ }
+ ],
+ 'scss': true,
+ 'stylus': [
+ {
+ lang: 'stylus',
+ before: 'hexcode',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside
+ },
+ {
+ lang: 'stylus',
+ before: 'hexcode',
+ inside: 'rest',
+ root: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside
+ }
+ ]
+ }
+ }
+ };
+
+ /**
+ * Returns the absolute X, Y offsets for an element
+ * @param {HTMLElement} element
+ * @returns {{top: number, right: number, bottom: number, left: number}}
+ */
+ var getOffset = function (element) {
+ var left = 0, top = 0, el = element;
+
+ if (el.parentNode) {
+ do {
+ left += el.offsetLeft;
+ top += el.offsetTop;
+ } while ((el = el.offsetParent) && el.nodeType < 9);
+
+ el = element;
+
+ do {
+ left -= el.scrollLeft;
+ top -= el.scrollTop;
+ } while ((el = el.parentNode) && !/body/i.test(el.nodeName));
+ }
+
+ return {
+ top: top,
+ right: innerWidth - left - element.offsetWidth,
+ bottom: innerHeight - top - element.offsetHeight,
+ left: left
+ };
+ };
+
+ var tokenRegexp = /(?:^|\s)token(?=$|\s)/;
+ var activeRegexp = /(?:^|\s)active(?=$|\s)/g;
+ var flippedRegexp = /(?:^|\s)flipped(?=$|\s)/g;
+
+ /**
+ * Previewer constructor
+ * @param {string} type Unique previewer type
+ * @param {function} updater Function that will be called on mouseover.
+ * @param {string[]|string=} supportedLanguages Aliases of the languages this previewer must be enabled for. Defaults to "*", all languages.
+ * @param {function=} initializer Function that will be called on initialization.
+ * @constructor
+ */
+ var Previewer = function (type, updater, supportedLanguages, initializer) {
+ this._elt = null;
+ this._type = type;
+ this._clsRegexp = RegExp('(?:^|\\s)' + type + '(?=$|\\s)');
+ this._token = null;
+ this.updater = updater;
+ this._mouseout = this.mouseout.bind(this);
+ this.initializer = initializer;
+
+ var self = this;
+
+ if (!supportedLanguages) {
+ supportedLanguages = ['*'];
+ }
+ if (Prism.util.type(supportedLanguages) !== 'Array') {
+ supportedLanguages = [supportedLanguages];
+ }
+ supportedLanguages.forEach(function (lang) {
+ if (typeof lang !== 'string') {
+ lang = lang.lang;
+ }
+ if (!Previewer.byLanguages[lang]) {
+ Previewer.byLanguages[lang] = [];
+ }
+ if (Previewer.byLanguages[lang].indexOf(self) < 0) {
+ Previewer.byLanguages[lang].push(self);
+ }
+ });
+ Previewer.byType[type] = this;
+ };
+
+ /**
+ * Creates the HTML element for the previewer.
+ */
+ Previewer.prototype.init = function () {
+ if (this._elt) {
+ return;
+ }
+ this._elt = document.createElement('div');
+ this._elt.className = 'prism-previewer prism-previewer-' + this._type;
+ document.body.appendChild(this._elt);
+ if(this.initializer) {
+ this.initializer();
+ }
+ };
+
+ Previewer.prototype.isDisabled = function (token) {
+ do {
+ if (token.hasAttribute && token.hasAttribute('data-previewers')) {
+ var previewers = token.getAttribute('data-previewers');
+ return (previewers || '').split(/\s+/).indexOf(this._type) === -1;
+ }
+ } while(token = token.parentNode);
+ return false;
+ };
+
+ /**
+ * Checks the class name of each hovered element
+ * @param token
+ */
+ Previewer.prototype.check = function (token) {
+ if (tokenRegexp.test(token.className) && this.isDisabled(token)) {
+ return;
+ }
+ do {
+ if (tokenRegexp.test(token.className) && this._clsRegexp.test(token.className)) {
+ break;
+ }
+ } while(token = token.parentNode);
+
+ if (token && token !== this._token) {
+ this._token = token;
+ this.show();
+ }
+ };
+
+ /**
+ * Called on mouseout
+ */
+ Previewer.prototype.mouseout = function() {
+ this._token.removeEventListener('mouseout', this._mouseout, false);
+ this._token = null;
+ this.hide();
+ };
+
+ /**
+ * Shows the previewer positioned properly for the current token.
+ */
+ Previewer.prototype.show = function () {
+ if (!this._elt) {
+ this.init();
+ }
+ if (!this._token) {
+ return;
+ }
+
+ if (this.updater.call(this._elt, this._token.textContent)) {
+ this._token.addEventListener('mouseout', this._mouseout, false);
+
+ var offset = getOffset(this._token);
+ this._elt.className += ' active';
+
+ if (offset.top - this._elt.offsetHeight > 0) {
+ this._elt.className = this._elt.className.replace(flippedRegexp, '');
+ this._elt.style.top = offset.top + 'px';
+ this._elt.style.bottom = '';
+ } else {
+ this._elt.className += ' flipped';
+ this._elt.style.bottom = offset.bottom + 'px';
+ this._elt.style.top = '';
+ }
+
+ this._elt.style.left = offset.left + Math.min(200, this._token.offsetWidth / 2) + 'px';
+ } else {
+ this.hide();
+ }
+ };
+
+ /**
+ * Hides the previewer.
+ */
+ Previewer.prototype.hide = function () {
+ this._elt.className = this._elt.className.replace(activeRegexp, '');
+ };
+
+ /**
+ * Map of all registered previewers by language
+ * @type {{}}
+ */
+ Previewer.byLanguages = {};
+
+ /**
+ * Map of all registered previewers by type
+ * @type {{}}
+ */
+ Previewer.byType = {};
+
+ /**
+ * Initializes the mouseover event on the code block.
+ * @param {HTMLElement} elt The code block (env.element)
+ * @param {string} lang The language (env.language)
+ */
+ Previewer.initEvents = function (elt, lang) {
+ var previewers = [];
+ if (Previewer.byLanguages[lang]) {
+ previewers = previewers.concat(Previewer.byLanguages[lang]);
+ }
+ if (Previewer.byLanguages['*']) {
+ previewers = previewers.concat(Previewer.byLanguages['*']);
+ }
+ elt.addEventListener('mouseover', function (e) {
+ var target = e.target;
+ previewers.forEach(function (previewer) {
+ previewer.check(target);
+ });
+ }, false);
+ };
+ Prism.plugins.Previewer = Previewer;
+
+ Prism.hooks.add('before-highlight', function (env) {
+ for (var previewer in previewers) {
+ var languages = previewers[previewer].languages;
+ if (env.language && languages[env.language] && !languages[env.language].initialized) {
+ var lang = languages[env.language];
+ if (Prism.util.type(lang) !== 'Array') {
+ lang = [lang];
+ }
+ lang.forEach(function (lang) {
+ var before, inside, root, skip;
+ if (lang === true) {
+ before = 'important';
+ inside = env.language;
+ lang = env.language;
+ } else {
+ before = lang.before || 'important';
+ inside = lang.inside || lang.lang;
+ root = lang.root || Prism.languages;
+ skip = lang.skip;
+ lang = env.language;
+ }
+
+ if (!skip && Prism.languages[lang]) {
+ Prism.languages.insertBefore(inside, before, previewers[previewer].tokens, root);
+ env.grammar = Prism.languages[lang];
+
+ languages[env.language] = {initialized: true};
+ }
+ });
+ }
+ }
+ });
+
+ // Initialize the previewers only when needed
+ Prism.hooks.add('after-highlight', function (env) {
+ if(Previewer.byLanguages['*'] || Previewer.byLanguages[env.language]) {
+ Previewer.initEvents(env.element, env.language);
+ }
+ });
+
+ for (var previewer in previewers) {
+ previewers[previewer].create();
+ }
+
+}()); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/previewers/prism-previewers.min.js b/node_modules/prismjs/plugins/previewers/prism-previewers.min.js
new file mode 100644
index 00000000..2595fbdc
--- /dev/null
+++ b/node_modules/prismjs/plugins/previewers/prism-previewers.min.js
@@ -0,0 +1 @@
+!function(){if(("undefined"==typeof self||self.Prism)&&self.document&&Function.prototype.bind){var e={gradient:{create:function(){var e={},s=function(e,s,i){var t="180deg";return/^(?:-?\d*\.?\d+(?:deg|rad)|to\b|top|right|bottom|left)/.test(i[0])&&(t=i.shift(),t.indexOf("to ")<0&&(t.indexOf("top")>=0?t=t.indexOf("left")>=0?"to bottom right":t.indexOf("right")>=0?"to bottom left":"to bottom":t.indexOf("bottom")>=0?t=t.indexOf("left")>=0?"to top right":t.indexOf("right")>=0?"to top left":"to top":t.indexOf("left")>=0?t="to right":t.indexOf("right")>=0?t="to left":e&&(t.indexOf("deg")>=0?t=90-parseFloat(t)+"deg":t.indexOf("rad")>=0&&(t=Math.PI/2-parseFloat(t)+"rad")))),s+"("+t+","+i.join(",")+")"},i=function(e,s,i){if(i[0].indexOf("at")<0){var t="center",a="ellipse",r="farthest-corner";if(/\bcenter|top|right|bottom|left\b|^\d+/.test(i[0])&&(t=i.shift().replace(/\s*-?\d+(?:rad|deg)\s*/,"")),/\bcircle|ellipse|closest|farthest|contain|cover\b/.test(i[0])){var n=i.shift().split(/\s+/);!n[0]||"circle"!==n[0]&&"ellipse"!==n[0]||(a=n.shift()),n[0]&&(r=n.shift()),"cover"===r?r="farthest-corner":"contain"===r&&(r="clothest-side")}return s+"("+a+" "+r+" at "+t+","+i.join(",")+")"}return s+"("+i.join(",")+")"},t=function(t){if(e[t])return e[t];var a=t.match(/^(\b|\B-[a-z]{1,10}-)((?:repeating-)?(?:linear|radial)-gradient)/),r=a&&a[1],n=a&&a[2],l=t.replace(/^(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\(|\)$/g,"").split(/\s*,\s*/);return e[t]=n.indexOf("linear")>=0?s(r,n,l):n.indexOf("radial")>=0?i(r,n,l):n+"("+l.join(",")+")"};return function(){new Prism.plugins.Previewer("gradient",function(e){return this.firstChild.style.backgroundImage="",this.firstChild.style.backgroundImage=t(e),!!this.firstChild.style.backgroundImage},"*",function(){this._elt.innerHTML="<div></div>"})}}(),tokens:{gradient:{pattern:/(?:\b|\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\((?:(?:rgb|hsl)a?\(.+?\)|[^\)])+\)/gi,inside:{"function":/[\w-]+(?=\()/,punctuation:/[(),]/}}},languages:{css:!0,less:!0,sass:[{lang:"sass",before:"punctuation",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]},{lang:"sass",before:"punctuation",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]}],scss:!0,stylus:[{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},angle:{create:function(){new Prism.plugins.Previewer("angle",function(e){var s,i,t=parseFloat(e),a=e.match(/[a-z]+$/i);if(!t||!a)return!1;switch(a=a[0]){case"deg":s=360;break;case"grad":s=400;break;case"rad":s=2*Math.PI;break;case"turn":s=1}return i=100*t/s,i%=100,this[(0>t?"set":"remove")+"Attribute"]("data-negative",""),this.querySelector("circle").style.strokeDasharray=Math.abs(i)+",500",!0},"*",function(){this._elt.innerHTML='<svg viewBox="0 0 64 64"><circle r="16" cy="32" cx="32"></circle></svg>'})},tokens:{angle:/(?:\b|\B-|(?=\B\.))\d*\.?\d+(?:deg|g?rad|turn)\b/i},languages:{css:!0,less:!0,markup:{lang:"markup",before:"punctuation",inside:"inside",root:Prism.languages.markup&&Prism.languages.markup.tag.inside["attr-value"]},sass:[{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]},{lang:"sass",before:"operator",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]}],scss:!0,stylus:[{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"func",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},color:{create:function(){new Prism.plugins.Previewer("color",function(e){return this.style.backgroundColor="",this.style.backgroundColor=e,!!this.style.backgroundColor})},tokens:{color:{pattern:/\B#(?:[0-9a-f]{3}){1,2}\b|\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B|\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGray|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGray|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGray|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gray|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGray|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGray|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGray|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,inside:{"function":/[\w-]+(?=\()/,punctuation:/[(),]/}}},languages:{css:!0,less:!0,markup:{lang:"markup",before:"punctuation",inside:"inside",root:Prism.languages.markup&&Prism.languages.markup.tag.inside["attr-value"]},sass:[{lang:"sass",before:"punctuation",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]},{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]}],scss:!0,stylus:[{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},easing:{create:function(){new Prism.plugins.Previewer("easing",function(e){e={linear:"0,0,1,1",ease:".25,.1,.25,1","ease-in":".42,0,1,1","ease-out":"0,0,.58,1","ease-in-out":".42,0,.58,1"}[e]||e;var s=e.match(/-?\d*\.?\d+/g);if(4===s.length){s=s.map(function(e,s){return 100*(s%2?1-e:e)}),this.querySelector("path").setAttribute("d","M0,100 C"+s[0]+","+s[1]+", "+s[2]+","+s[3]+", 100,0");var i=this.querySelectorAll("line");return i[0].setAttribute("x2",s[0]),i[0].setAttribute("y2",s[1]),i[1].setAttribute("x2",s[2]),i[1].setAttribute("y2",s[3]),!0}return!1},"*",function(){this._elt.innerHTML='<svg viewBox="-20 -20 140 140" width="100" height="100"><defs><marker id="prism-previewer-easing-marker" viewBox="0 0 4 4" refX="2" refY="2" markerUnits="strokeWidth"><circle cx="2" cy="2" r="1.5" /></marker></defs><path d="M0,100 C20,50, 40,30, 100,0" /><line x1="0" y1="100" x2="20" y2="50" marker-start="url('+location.href+'#prism-previewer-easing-marker)" marker-end="url('+location.href+'#prism-previewer-easing-marker)" /><line x1="100" y1="0" x2="40" y2="30" marker-start="url('+location.href+'#prism-previewer-easing-marker)" marker-end="url('+location.href+'#prism-previewer-easing-marker)" /></svg>'})},tokens:{easing:{pattern:/\bcubic-bezier\((?:-?\d*\.?\d+,\s*){3}-?\d*\.?\d+\)\B|\b(?:linear|ease(?:-in)?(?:-out)?)(?=\s|[;}]|$)/i,inside:{"function":/[\w-]+(?=\()/,punctuation:/[(),]/}}},languages:{css:!0,less:!0,sass:[{lang:"sass",inside:"inside",before:"punctuation",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]},{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]}],scss:!0,stylus:[{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}},time:{create:function(){new Prism.plugins.Previewer("time",function(e){var s=parseFloat(e),i=e.match(/[a-z]+$/i);return s&&i?(i=i[0],this.querySelector("circle").style.animationDuration=2*s+i,!0):!1},"*",function(){this._elt.innerHTML='<svg viewBox="0 0 64 64"><circle r="16" cy="32" cx="32"></circle></svg>'})},tokens:{time:/(?:\b|\B-|(?=\B\.))\d*\.?\d+m?s\b/i},languages:{css:!0,less:!0,markup:{lang:"markup",before:"punctuation",inside:"inside",root:Prism.languages.markup&&Prism.languages.markup.tag.inside["attr-value"]},sass:[{lang:"sass",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["property-line"]},{lang:"sass",before:"operator",inside:"inside",root:Prism.languages.sass&&Prism.languages.sass["variable-line"]}],scss:!0,stylus:[{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["property-declaration"].inside},{lang:"stylus",before:"hexcode",inside:"rest",root:Prism.languages.stylus&&Prism.languages.stylus["variable-declaration"].inside}]}}},s=function(e){var s=0,i=0,t=e;if(t.parentNode){do s+=t.offsetLeft,i+=t.offsetTop;while((t=t.offsetParent)&&t.nodeType<9);t=e;do s-=t.scrollLeft,i-=t.scrollTop;while((t=t.parentNode)&&!/body/i.test(t.nodeName))}return{top:i,right:innerWidth-s-e.offsetWidth,bottom:innerHeight-i-e.offsetHeight,left:s}},i=/(?:^|\s)token(?=$|\s)/,t=/(?:^|\s)active(?=$|\s)/g,a=/(?:^|\s)flipped(?=$|\s)/g,r=function(e,s,i,t){this._elt=null,this._type=e,this._clsRegexp=RegExp("(?:^|\\s)"+e+"(?=$|\\s)"),this._token=null,this.updater=s,this._mouseout=this.mouseout.bind(this),this.initializer=t;var a=this;i||(i=["*"]),"Array"!==Prism.util.type(i)&&(i=[i]),i.forEach(function(e){"string"!=typeof e&&(e=e.lang),r.byLanguages[e]||(r.byLanguages[e]=[]),r.byLanguages[e].indexOf(a)<0&&r.byLanguages[e].push(a)}),r.byType[e]=this};r.prototype.init=function(){this._elt||(this._elt=document.createElement("div"),this._elt.className="prism-previewer prism-previewer-"+this._type,document.body.appendChild(this._elt),this.initializer&&this.initializer())},r.prototype.isDisabled=function(e){do if(e.hasAttribute&&e.hasAttribute("data-previewers")){var s=e.getAttribute("data-previewers");return-1===(s||"").split(/\s+/).indexOf(this._type)}while(e=e.parentNode);return!1},r.prototype.check=function(e){if(!i.test(e.className)||!this.isDisabled(e)){do if(i.test(e.className)&&this._clsRegexp.test(e.className))break;while(e=e.parentNode);e&&e!==this._token&&(this._token=e,this.show())}},r.prototype.mouseout=function(){this._token.removeEventListener("mouseout",this._mouseout,!1),this._token=null,this.hide()},r.prototype.show=function(){if(this._elt||this.init(),this._token)if(this.updater.call(this._elt,this._token.textContent)){this._token.addEventListener("mouseout",this._mouseout,!1);var e=s(this._token);this._elt.className+=" active",e.top-this._elt.offsetHeight>0?(this._elt.className=this._elt.className.replace(a,""),this._elt.style.top=e.top+"px",this._elt.style.bottom=""):(this._elt.className+=" flipped",this._elt.style.bottom=e.bottom+"px",this._elt.style.top=""),this._elt.style.left=e.left+Math.min(200,this._token.offsetWidth/2)+"px"}else this.hide()},r.prototype.hide=function(){this._elt.className=this._elt.className.replace(t,"")},r.byLanguages={},r.byType={},r.initEvents=function(e,s){var i=[];r.byLanguages[s]&&(i=i.concat(r.byLanguages[s])),r.byLanguages["*"]&&(i=i.concat(r.byLanguages["*"])),e.addEventListener("mouseover",function(e){var s=e.target;i.forEach(function(e){e.check(s)})},!1)},Prism.plugins.Previewer=r,Prism.hooks.add("before-highlight",function(s){for(var i in e){var t=e[i].languages;if(s.language&&t[s.language]&&!t[s.language].initialized){var a=t[s.language];"Array"!==Prism.util.type(a)&&(a=[a]),a.forEach(function(a){var r,n,l,o;a===!0?(r="important",n=s.language,a=s.language):(r=a.before||"important",n=a.inside||a.lang,l=a.root||Prism.languages,o=a.skip,a=s.language),!o&&Prism.languages[a]&&(Prism.languages.insertBefore(n,r,e[i].tokens,l),s.grammar=Prism.languages[a],t[s.language]={initialized:!0})})}}}),Prism.hooks.add("after-highlight",function(e){(r.byLanguages["*"]||r.byLanguages[e.language])&&r.initEvents(e.element,e.language)});for(var n in e)e[n].create()}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js b/node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js
new file mode 100644
index 00000000..f62a8bfe
--- /dev/null
+++ b/node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js
@@ -0,0 +1,21 @@
+(function() {
+
+if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+}
+
+Prism.hooks.add('before-sanity-check', function (env) {
+ if (env.code) {
+ var pre = env.element.parentNode;
+ var clsReg = /\s*\bkeep-initial-line-feed\b\s*/;
+ if (
+ pre && pre.nodeName.toLowerCase() === 'pre' &&
+ // Apply only if nor the <pre> or the <code> have the class
+ (!clsReg.test(pre.className) && !clsReg.test(env.element.className))
+ ) {
+ env.code = env.code.replace(/^(?:\r?\n|\r)/, '');
+ }
+ }
+});
+
+}()); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js b/node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
new file mode 100644
index 00000000..e0016a49
--- /dev/null
+++ b/node_modules/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&self.Prism&&self.document&&Prism.hooks.add("before-sanity-check",function(e){if(e.code){var s=e.element.parentNode,n=/\s*\bkeep-initial-line-feed\b\s*/;!s||"pre"!==s.nodeName.toLowerCase()||n.test(s.className)||n.test(e.element.className)||(e.code=e.code.replace(/^(?:\r?\n|\r)/,""))}})}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.css b/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.css
new file mode 100644
index 00000000..9af783d5
--- /dev/null
+++ b/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.css
@@ -0,0 +1,33 @@
+.token.tab:not(:empty),
+.token.cr,
+.token.lf,
+.token.space {
+ position: relative;
+}
+
+.token.tab:not(:empty):before,
+.token.cr:before,
+.token.lf:before,
+.token.space:before {
+ color: hsl(24, 20%, 85%);
+ position: absolute;
+}
+
+.token.tab:not(:empty):before {
+ content: '\21E5';
+}
+
+.token.cr:before {
+ content: '\240D';
+}
+
+.token.crlf:before {
+ content: '\240D\240A';
+}
+.token.lf:before {
+ content: '\240A';
+}
+
+.token.space:before {
+ content: '\00B7';
+} \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.js b/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.js
new file mode 100644
index 00000000..f3d120a9
--- /dev/null
+++ b/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.js
@@ -0,0 +1,21 @@
+(function(){
+
+if (
+ typeof self !== 'undefined' && !self.Prism ||
+ typeof global !== 'undefined' && !global.Prism
+) {
+ return;
+}
+
+Prism.hooks.add('before-highlight', function(env) {
+ var tokens = env.grammar;
+
+ if (!tokens) return;
+
+ tokens.tab = /\t/g;
+ tokens.crlf = /\r\n/g;
+ tokens.lf = /\n/g;
+ tokens.cr = /\r/g;
+ tokens.space = / /g;
+});
+})();
diff --git a/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js b/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js
new file mode 100644
index 00000000..9df7258c
--- /dev/null
+++ b/node_modules/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&!self.Prism||"undefined"!=typeof global&&!global.Prism||Prism.hooks.add("before-highlight",function(e){var f=e.grammar;f&&(f.tab=/\t/g,f.crlf=/\r\n/g,f.lf=/\n/g,f.cr=/\r/g,f.space=/ /g)})}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/show-language/prism-show-language.js b/node_modules/prismjs/plugins/show-language/prism-show-language.js
new file mode 100644
index 00000000..60497b2f
--- /dev/null
+++ b/node_modules/prismjs/plugins/show-language/prism-show-language.js
@@ -0,0 +1,31 @@
+(function(){
+
+if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+}
+
+if (!Prism.plugins.toolbar) {
+ console.warn('Show Languages plugin loaded before Toolbar plugin.');
+
+ return;
+}
+
+// The languages map is built automatically with gulp
+var Languages = /*languages_placeholder[*/{"html":"HTML","xml":"XML","svg":"SVG","mathml":"MathML","css":"CSS","clike":"C-like","javascript":"JavaScript","abap":"ABAP","actionscript":"ActionScript","apacheconf":"Apache Configuration","apl":"APL","applescript":"AppleScript","arff":"ARFF","asciidoc":"AsciiDoc","asm6502":"6502 Assembly","aspnet":"ASP.NET (C#)","autohotkey":"AutoHotkey","autoit":"AutoIt","basic":"BASIC","csharp":"C#","cpp":"C++","coffeescript":"CoffeeScript","csp":"Content-Security-Policy","css-extras":"CSS Extras","django":"Django/Jinja2","erb":"ERB","fsharp":"F#","gedcom":"GEDCOM","glsl":"GLSL","graphql":"GraphQL","http":"HTTP","hpkp":"HTTP Public-Key-Pins","hsts":"HTTP Strict-Transport-Security","ichigojam":"IchigoJam","inform7":"Inform 7","json":"JSON","latex":"LaTeX","livescript":"LiveScript","lolcode":"LOLCODE","markup-templating":"Markup templating","matlab":"MATLAB","mel":"MEL","n4js":"N4JS","nasm":"NASM","nginx":"nginx","nsis":"NSIS","objectivec":"Objective-C","ocaml":"OCaml","opencl":"OpenCL","parigp":"PARI/GP","objectpascal":"Object Pascal","php":"PHP","php-extras":"PHP Extras","plsql":"PL/SQL","powershell":"PowerShell","properties":".properties","protobuf":"Protocol Buffers","q":"Q (kdb+ database)","jsx":"React JSX","tsx":"React TSX","renpy":"Ren'py","rest":"reST (reStructuredText)","sas":"SAS","sass":"Sass (Sass)","scss":"Sass (Scss)","sql":"SQL","soy":"Soy (Closure Template)","tap":"TAP","tt2":"Template Toolkit 2","typescript":"TypeScript","vbnet":"VB.Net","vhdl":"VHDL","vim":"vim","visual-basic":"Visual Basic","wasm":"WebAssembly","wiki":"Wiki markup","xojo":"Xojo (REALbasic)","xquery":"XQuery","yaml":"YAML"}/*]*/;
+Prism.plugins.toolbar.registerButton('show-language', function(env) {
+ var pre = env.element.parentNode;
+ if (!pre || !/pre/i.test(pre.nodeName)) {
+ return;
+ }
+ var language = pre.getAttribute('data-language') || Languages[env.language] || (env.language && (env.language.substring(0, 1).toUpperCase() + env.language.substring(1)));
+
+ if(!language) {
+ return;
+ }
+ var element = document.createElement('span');
+ element.textContent = language;
+
+ return element;
+});
+
+})();
diff --git a/node_modules/prismjs/plugins/show-language/prism-show-language.min.js b/node_modules/prismjs/plugins/show-language/prism-show-language.min.js
new file mode 100644
index 00000000..b6735335
--- /dev/null
+++ b/node_modules/prismjs/plugins/show-language/prism-show-language.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Show Languages plugin loaded before Toolbar plugin."),void 0;var e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",json:"JSON",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",php:"PHP","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/toolbar/prism-toolbar.css b/node_modules/prismjs/plugins/toolbar/prism-toolbar.css
new file mode 100644
index 00000000..2b234e19
--- /dev/null
+++ b/node_modules/prismjs/plugins/toolbar/prism-toolbar.css
@@ -0,0 +1,58 @@
+div.code-toolbar {
+ position: relative;
+}
+
+div.code-toolbar > .toolbar {
+ position: absolute;
+ top: .3em;
+ right: .2em;
+ transition: opacity 0.3s ease-in-out;
+ opacity: 0;
+}
+
+div.code-toolbar:hover > .toolbar {
+ opacity: 1;
+}
+
+div.code-toolbar > .toolbar .toolbar-item {
+ display: inline-block;
+}
+
+div.code-toolbar > .toolbar a {
+ cursor: pointer;
+}
+
+div.code-toolbar > .toolbar button {
+ background: none;
+ border: 0;
+ color: inherit;
+ font: inherit;
+ line-height: normal;
+ overflow: visible;
+ padding: 0;
+ -webkit-user-select: none; /* for button */
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+div.code-toolbar > .toolbar a,
+div.code-toolbar > .toolbar button,
+div.code-toolbar > .toolbar span {
+ color: #bbb;
+ font-size: .8em;
+ padding: 0 .5em;
+ background: #f5f2f0;
+ background: rgba(224, 224, 224, 0.2);
+ box-shadow: 0 2px 0 0 rgba(0,0,0,0.2);
+ border-radius: .5em;
+}
+
+div.code-toolbar > .toolbar a:hover,
+div.code-toolbar > .toolbar a:focus,
+div.code-toolbar > .toolbar button:hover,
+div.code-toolbar > .toolbar button:focus,
+div.code-toolbar > .toolbar span:hover,
+div.code-toolbar > .toolbar span:focus {
+ color: inherit;
+ text-decoration: none;
+}
diff --git a/node_modules/prismjs/plugins/toolbar/prism-toolbar.js b/node_modules/prismjs/plugins/toolbar/prism-toolbar.js
new file mode 100644
index 00000000..93294514
--- /dev/null
+++ b/node_modules/prismjs/plugins/toolbar/prism-toolbar.js
@@ -0,0 +1,137 @@
+(function(){
+ if (typeof self === 'undefined' || !self.Prism || !self.document) {
+ return;
+ }
+
+ var callbacks = [];
+ var map = {};
+ var noop = function() {};
+
+ Prism.plugins.toolbar = {};
+
+ /**
+ * Register a button callback with the toolbar.
+ *
+ * @param {string} key
+ * @param {Object|Function} opts
+ */
+ var registerButton = Prism.plugins.toolbar.registerButton = function (key, opts) {
+ var callback;
+
+ if (typeof opts === 'function') {
+ callback = opts;
+ } else {
+ callback = function (env) {
+ var element;
+
+ if (typeof opts.onClick === 'function') {
+ element = document.createElement('button');
+ element.type = 'button';
+ element.addEventListener('click', function () {
+ opts.onClick.call(this, env);
+ });
+ } else if (typeof opts.url === 'string') {
+ element = document.createElement('a');
+ element.href = opts.url;
+ } else {
+ element = document.createElement('span');
+ }
+
+ element.textContent = opts.text;
+
+ return element;
+ };
+ }
+
+ callbacks.push(map[key] = callback);
+ };
+
+ /**
+ * Post-highlight Prism hook callback.
+ *
+ * @param env
+ */
+ var hook = Prism.plugins.toolbar.hook = function (env) {
+ // Check if inline or actual code block (credit to line-numbers plugin)
+ var pre = env.element.parentNode;
+ if (!pre || !/pre/i.test(pre.nodeName)) {
+ return;
+ }
+
+ // Autoloader rehighlights, so only do this once.
+ if (pre.parentNode.classList.contains('code-toolbar')) {
+ return;
+ }
+
+ // Create wrapper for <pre> to prevent scrolling toolbar with content
+ var wrapper = document.createElement("div");
+ wrapper.classList.add("code-toolbar");
+ pre.parentNode.insertBefore(wrapper, pre);
+ wrapper.appendChild(pre);
+
+ // Setup the toolbar
+ var toolbar = document.createElement('div');
+ toolbar.classList.add('toolbar');
+
+ if (document.body.hasAttribute('data-toolbar-order')) {
+ callbacks = document.body.getAttribute('data-toolbar-order').split(',').map(function(key) {
+ return map[key] || noop;
+ });
+ }
+
+ callbacks.forEach(function(callback) {
+ var element = callback(env);
+
+ if (!element) {
+ return;
+ }
+
+ var item = document.createElement('div');
+ item.classList.add('toolbar-item');
+
+ item.appendChild(element);
+ toolbar.appendChild(item);
+ });
+
+ // Add our toolbar to the currently created wrapper of <pre> tag
+ wrapper.appendChild(toolbar);
+ };
+
+ registerButton('label', function(env) {
+ var pre = env.element.parentNode;
+ if (!pre || !/pre/i.test(pre.nodeName)) {
+ return;
+ }
+
+ if (!pre.hasAttribute('data-label')) {
+ return;
+ }
+
+ var element, template;
+ var text = pre.getAttribute('data-label');
+ try {
+ // Any normal text will blow up this selector.
+ template = document.querySelector('template#' + text);
+ } catch (e) {}
+
+ if (template) {
+ element = template.content;
+ } else {
+ if (pre.hasAttribute('data-url')) {
+ element = document.createElement('a');
+ element.href = pre.getAttribute('data-url');
+ } else {
+ element = document.createElement('span');
+ }
+
+ element.textContent = text;
+ }
+
+ return element;
+ });
+
+ /**
+ * Register the toolbar with Prism.
+ */
+ Prism.hooks.add('complete', hook);
+})();
diff --git a/node_modules/prismjs/plugins/toolbar/prism-toolbar.min.js b/node_modules/prismjs/plugins/toolbar/prism-toolbar.min.js
new file mode 100644
index 00000000..17cee962
--- /dev/null
+++ b/node_modules/prismjs/plugins/toolbar/prism-toolbar.min.js
@@ -0,0 +1 @@
+!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var t=[],e={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var o;o="function"==typeof a?a:function(t){var e;return"function"==typeof a.onClick?(e=document.createElement("button"),e.type="button",e.addEventListener("click",function(){a.onClick.call(this,t)})):"string"==typeof a.url?(e=document.createElement("a"),e.href=a.url):e=document.createElement("span"),e.textContent=a.text,e},t.push(e[n]=o)},o=Prism.plugins.toolbar.hook=function(a){var o=a.element.parentNode;if(o&&/pre/i.test(o.nodeName)&&!o.parentNode.classList.contains("code-toolbar")){var r=document.createElement("div");r.classList.add("code-toolbar"),o.parentNode.insertBefore(r,o),r.appendChild(o);var i=document.createElement("div");i.classList.add("toolbar"),document.body.hasAttribute("data-toolbar-order")&&(t=document.body.getAttribute("data-toolbar-order").split(",").map(function(t){return e[t]||n})),t.forEach(function(t){var e=t(a);if(e){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(e),i.appendChild(n)}}),r.appendChild(i)}};a("label",function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-label")){var n,a,o=e.getAttribute("data-label");try{a=document.querySelector("template#"+o)}catch(r){}return a?n=a.content:(e.hasAttribute("data-url")?(n=document.createElement("a"),n.href=e.getAttribute("data-url")):n=document.createElement("span"),n.textContent=o),n}}),Prism.hooks.add("complete",o)}}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css b/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css
new file mode 100644
index 00000000..3ba2a1e6
--- /dev/null
+++ b/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css
@@ -0,0 +1,10 @@
+/* Fallback, in case JS does not run, to ensure the code is at least visible */
+[class*='lang-'] script[type='text/plain'],
+[class*='language-'] script[type='text/plain'],
+script[type='text/plain'][class*='lang-'],
+script[type='text/plain'][class*='language-'] {
+ display: block;
+ font: 100% Consolas, Monaco, monospace;
+ white-space: pre;
+ overflow: auto;
+}
diff --git a/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js b/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js
new file mode 100644
index 00000000..8684ebac
--- /dev/null
+++ b/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js
@@ -0,0 +1,44 @@
+(function () {
+
+ if (typeof self === 'undefined' || !self.Prism || !self.document || !Prism.languages.markup) {
+ return;
+ }
+
+ Prism.plugins.UnescapedMarkup = true;
+
+ Prism.hooks.add('before-highlightall', function (env) {
+ env.selector += ", [class*='lang-'] script[type='text/plain'], [class*='language-'] script[type='text/plain']" +
+ ", script[type='text/plain'][class*='lang-'], script[type='text/plain'][class*='language-']";
+ });
+
+ Prism.hooks.add('before-sanity-check', function (env) {
+ if ((env.element.matches || env.element.msMatchesSelector).call(env.element, "script[type='text/plain']")) {
+ var code = document.createElement("code");
+ var pre = document.createElement("pre");
+
+ pre.className = code.className = env.element.className;
+
+ if (env.element.dataset) {
+ Object.keys(env.element.dataset).forEach(function (key) {
+ if (Object.prototype.hasOwnProperty.call(env.element.dataset, key)) {
+ pre.dataset[key] = env.element.dataset[key];
+ }
+ });
+ }
+
+ env.code = env.code.replace(/&lt;\/script(>|&gt;)/gi, "</scri" + "pt>");
+ code.textContent = env.code;
+
+ pre.appendChild(code);
+ env.element.parentNode.replaceChild(pre, env.element);
+ env.element = code;
+ return;
+ }
+
+ var pre = env.element.parentNode;
+ if (!env.code && pre && pre.nodeName.toLowerCase() == 'pre' &&
+ env.element.childNodes.length && env.element.childNodes[0].nodeName == "#comment") {
+ env.element.textContent = env.code = env.element.childNodes[0].textContent;
+ }
+ });
+}());
diff --git a/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js b/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js
new file mode 100644
index 00000000..f48514a3
--- /dev/null
+++ b/node_modules/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js
@@ -0,0 +1 @@
+!function(){"undefined"!=typeof self&&self.Prism&&self.document&&Prism.languages.markup&&(Prism.plugins.UnescapedMarkup=!0,Prism.hooks.add("before-highlightall",function(e){e.selector+=", [class*='lang-'] script[type='text/plain'], [class*='language-'] script[type='text/plain'], script[type='text/plain'][class*='lang-'], script[type='text/plain'][class*='language-']"}),Prism.hooks.add("before-sanity-check",function(e){if((e.element.matches||e.element.msMatchesSelector).call(e.element,"script[type='text/plain']")){var t=document.createElement("code"),n=document.createElement("pre");return n.className=t.className=e.element.className,e.element.dataset&&Object.keys(e.element.dataset).forEach(function(t){Object.prototype.hasOwnProperty.call(e.element.dataset,t)&&(n.dataset[t]=e.element.dataset[t])}),e.code=e.code.replace(/&lt;\/script(>|&gt;)/gi,"</script>"),t.textContent=e.code,n.appendChild(t),e.element.parentNode.replaceChild(n,e.element),e.element=t,void 0}var n=e.element.parentNode;!e.code&&n&&"pre"==n.nodeName.toLowerCase()&&e.element.childNodes.length&&"#comment"==e.element.childNodes[0].nodeName&&(e.element.textContent=e.code=e.element.childNodes[0].textContent)}))}(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/wpd/prism-wpd.css b/node_modules/prismjs/plugins/wpd/prism-wpd.css
new file mode 100644
index 00000000..43b7165a
--- /dev/null
+++ b/node_modules/prismjs/plugins/wpd/prism-wpd.css
@@ -0,0 +1,11 @@
+code[class*="language-"] a[href],
+pre[class*="language-"] a[href] {
+ cursor: help;
+ text-decoration: none;
+}
+
+code[class*="language-"] a[href]:hover,
+pre[class*="language-"] a[href]:hover {
+ cursor: help;
+ text-decoration: underline;
+} \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/wpd/prism-wpd.js b/node_modules/prismjs/plugins/wpd/prism-wpd.js
new file mode 100644
index 00000000..dc147d4f
--- /dev/null
+++ b/node_modules/prismjs/plugins/wpd/prism-wpd.js
@@ -0,0 +1,169 @@
+(function(){
+
+if (
+ typeof self !== 'undefined' && !self.Prism ||
+ typeof global !== 'undefined' && !global.Prism
+) {
+ return;
+}
+
+if (Prism.languages.css) {
+ // check whether the selector is an advanced pattern before extending it
+ if (Prism.languages.css.selector.pattern)
+ {
+ Prism.languages.css.selector.inside['pseudo-class'] = /:[\w-]+/;
+ Prism.languages.css.selector.inside['pseudo-element'] = /::[\w-]+/;
+ }
+ else
+ {
+ Prism.languages.css.selector = {
+ pattern: Prism.languages.css.selector,
+ inside: {
+ 'pseudo-class': /:[\w-]+/,
+ 'pseudo-element': /::[\w-]+/
+ }
+ };
+ }
+}
+
+if (Prism.languages.markup) {
+ Prism.languages.markup.tag.inside.tag.inside['tag-id'] = /[\w-]+/;
+
+ var Tags = {
+ HTML: {
+ 'a': 1, 'abbr': 1, 'acronym': 1, 'b': 1, 'basefont': 1, 'bdo': 1, 'big': 1, 'blink': 1, 'cite': 1, 'code': 1, 'dfn': 1, 'em': 1, 'kbd': 1, 'i': 1,
+ 'rp': 1, 'rt': 1, 'ruby': 1, 's': 1, 'samp': 1, 'small': 1, 'spacer': 1, 'strike': 1, 'strong': 1, 'sub': 1, 'sup': 1, 'time': 1, 'tt': 1, 'u': 1,
+ 'var': 1, 'wbr': 1, 'noframes': 1, 'summary': 1, 'command': 1, 'dt': 1, 'dd': 1, 'figure': 1, 'figcaption': 1, 'center': 1, 'section': 1, 'nav': 1,
+ 'article': 1, 'aside': 1, 'hgroup': 1, 'header': 1, 'footer': 1, 'address': 1, 'noscript': 1, 'isIndex': 1, 'main': 1, 'mark': 1, 'marquee': 1,
+ 'meter': 1, 'menu': 1
+ },
+ SVG: {
+ 'animateColor': 1, 'animateMotion': 1, 'animateTransform': 1, 'glyph': 1, 'feBlend': 1, 'feColorMatrix': 1, 'feComponentTransfer': 1,
+ 'feFuncR': 1, 'feFuncG': 1, 'feFuncB': 1, 'feFuncA': 1, 'feComposite': 1, 'feConvolveMatrix': 1, 'feDiffuseLighting': 1, 'feDisplacementMap': 1,
+ 'feFlood': 1, 'feGaussianBlur': 1, 'feImage': 1, 'feMerge': 1, 'feMergeNode': 1, 'feMorphology': 1, 'feOffset': 1, 'feSpecularLighting': 1,
+ 'feTile': 1, 'feTurbulence': 1, 'feDistantLight': 1, 'fePointLight': 1, 'feSpotLight': 1, 'linearGradient': 1, 'radialGradient': 1, 'altGlyph': 1,
+ 'textPath': 1, 'tref': 1, 'altglyph': 1, 'textpath': 1, 'altglyphdef': 1, 'altglyphitem': 1, 'clipPath': 1, 'color-profile': 1, 'cursor': 1,
+ 'font-face': 1, 'font-face-format': 1, 'font-face-name': 1, 'font-face-src': 1, 'font-face-uri': 1, 'foreignObject': 1, 'glyphRef': 1,
+ 'hkern': 1, 'vkern': 1
+ },
+ MathML: {}
+ }
+}
+
+var language;
+
+Prism.hooks.add('wrap', function(env) {
+ if ((env.type == 'tag-id'
+ || (env.type == 'property' && env.content.indexOf('-') != 0)
+ || (env.type == 'rule'&& env.content.indexOf('@-') != 0)
+ || (env.type == 'pseudo-class'&& env.content.indexOf(':-') != 0)
+ || (env.type == 'pseudo-element'&& env.content.indexOf('::-') != 0)
+ || (env.type == 'attr-name' && env.content.indexOf('data-') != 0)
+ ) && env.content.indexOf('<') === -1
+ ) {
+ if (env.language == 'css'
+ || env.language == 'scss'
+ || env.language == 'markup'
+ ) {
+ var href = 'https://webplatform.github.io/docs/';
+ var content = env.content;
+
+ if (env.language == 'css' || env.language == 'scss') {
+ href += 'css/';
+
+ if (env.type == 'property') {
+ href += 'properties/';
+ }
+ else if (env.type == 'rule') {
+ href += 'atrules/';
+ content = content.substring(1);
+ }
+ else if (env.type == 'pseudo-class') {
+ href += 'selectors/pseudo-classes/';
+ content = content.substring(1);
+ }
+ else if (env.type == 'pseudo-element') {
+ href += 'selectors/pseudo-elements/';
+ content = content.substring(2);
+ }
+ }
+ else if (env.language == 'markup') {
+ if (env.type == 'tag-id') {
+ // Check language
+ language = getLanguage(env.content) || language;
+
+ if (language) {
+ href += language + '/elements/';
+ }
+ else {
+ return; // Abort
+ }
+ }
+ else if (env.type == 'attr-name') {
+ if (language) {
+ href += language + '/attributes/';
+ }
+ else {
+ return; // Abort
+ }
+ }
+ }
+
+ href += content;
+ env.tag = 'a';
+ env.attributes.href = href;
+ env.attributes.target = '_blank';
+ }
+ }
+});
+
+function getLanguage(tag) {
+ var tagL = tag.toLowerCase();
+
+ if (Tags.HTML[tagL]) {
+ return 'html';
+ }
+ else if (Tags.SVG[tag]) {
+ return 'svg';
+ }
+ else if (Tags.MathML[tag]) {
+ return 'mathml';
+ }
+
+ // Not in dictionary, perform check
+ if (Tags.HTML[tagL] !== 0 && typeof document !== 'undefined') {
+ var htmlInterface = (document.createElement(tag).toString().match(/\[object HTML(.+)Element\]/) || [])[1];
+
+ if (htmlInterface && htmlInterface != 'Unknown') {
+ Tags.HTML[tagL] = 1;
+ return 'html';
+ }
+ }
+
+ Tags.HTML[tagL] = 0;
+
+ if (Tags.SVG[tag] !== 0 && typeof document !== 'undefined') {
+ var svgInterface = (document.createElementNS('http://www.w3.org/2000/svg', tag).toString().match(/\[object SVG(.+)Element\]/) || [])[1];
+
+ if (svgInterface && svgInterface != 'Unknown') {
+ Tags.SVG[tag] = 1;
+ return 'svg';
+ }
+ }
+
+ Tags.SVG[tag] = 0;
+
+ // Lame way to detect MathML, but browsers don’t expose interface names there :(
+ if (Tags.MathML[tag] !== 0) {
+ if (tag.indexOf('m') === 0) {
+ Tags.MathML[tag] = 1;
+ return 'mathml';
+ }
+ }
+
+ Tags.MathML[tag] = 0;
+
+ return null;
+}
+
+})(); \ No newline at end of file
diff --git a/node_modules/prismjs/plugins/wpd/prism-wpd.min.js b/node_modules/prismjs/plugins/wpd/prism-wpd.min.js
new file mode 100644
index 00000000..86bad362
--- /dev/null
+++ b/node_modules/prismjs/plugins/wpd/prism-wpd.min.js
@@ -0,0 +1 @@
+!function(){function e(e){var n=e.toLowerCase();if(t.HTML[n])return"html";if(t.SVG[e])return"svg";if(t.MathML[e])return"mathml";if(0!==t.HTML[n]&&"undefined"!=typeof document){var a=(document.createElement(e).toString().match(/\[object HTML(.+)Element\]/)||[])[1];if(a&&"Unknown"!=a)return t.HTML[n]=1,"html"}if(t.HTML[n]=0,0!==t.SVG[e]&&"undefined"!=typeof document){var s=(document.createElementNS("http://www.w3.org/2000/svg",e).toString().match(/\[object SVG(.+)Element\]/)||[])[1];if(s&&"Unknown"!=s)return t.SVG[e]=1,"svg"}return t.SVG[e]=0,0!==t.MathML[e]&&0===e.indexOf("m")?(t.MathML[e]=1,"mathml"):(t.MathML[e]=0,null)}if(("undefined"==typeof self||self.Prism)&&("undefined"==typeof global||global.Prism)){if(Prism.languages.css&&(Prism.languages.css.selector.pattern?(Prism.languages.css.selector.inside["pseudo-class"]=/:[\w-]+/,Prism.languages.css.selector.inside["pseudo-element"]=/::[\w-]+/):Prism.languages.css.selector={pattern:Prism.languages.css.selector,inside:{"pseudo-class":/:[\w-]+/,"pseudo-element":/::[\w-]+/}}),Prism.languages.markup){Prism.languages.markup.tag.inside.tag.inside["tag-id"]=/[\w-]+/;var t={HTML:{a:1,abbr:1,acronym:1,b:1,basefont:1,bdo:1,big:1,blink:1,cite:1,code:1,dfn:1,em:1,kbd:1,i:1,rp:1,rt:1,ruby:1,s:1,samp:1,small:1,spacer:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,"var":1,wbr:1,noframes:1,summary:1,command:1,dt:1,dd:1,figure:1,figcaption:1,center:1,section:1,nav:1,article:1,aside:1,hgroup:1,header:1,footer:1,address:1,noscript:1,isIndex:1,main:1,mark:1,marquee:1,meter:1,menu:1},SVG:{animateColor:1,animateMotion:1,animateTransform:1,glyph:1,feBlend:1,feColorMatrix:1,feComponentTransfer:1,feFuncR:1,feFuncG:1,feFuncB:1,feFuncA:1,feComposite:1,feConvolveMatrix:1,feDiffuseLighting:1,feDisplacementMap:1,feFlood:1,feGaussianBlur:1,feImage:1,feMerge:1,feMergeNode:1,feMorphology:1,feOffset:1,feSpecularLighting:1,feTile:1,feTurbulence:1,feDistantLight:1,fePointLight:1,feSpotLight:1,linearGradient:1,radialGradient:1,altGlyph:1,textPath:1,tref:1,altglyph:1,textpath:1,altglyphdef:1,altglyphitem:1,clipPath:1,"color-profile":1,cursor:1,"font-face":1,"font-face-format":1,"font-face-name":1,"font-face-src":1,"font-face-uri":1,foreignObject:1,glyphRef:1,hkern:1,vkern:1},MathML:{}}}var n;Prism.hooks.add("wrap",function(t){if(("tag-id"==t.type||"property"==t.type&&0!=t.content.indexOf("-")||"rule"==t.type&&0!=t.content.indexOf("@-")||"pseudo-class"==t.type&&0!=t.content.indexOf(":-")||"pseudo-element"==t.type&&0!=t.content.indexOf("::-")||"attr-name"==t.type&&0!=t.content.indexOf("data-"))&&-1===t.content.indexOf("<")&&("css"==t.language||"scss"==t.language||"markup"==t.language)){var a="https://webplatform.github.io/docs/",s=t.content;if("css"==t.language||"scss"==t.language)a+="css/","property"==t.type?a+="properties/":"rule"==t.type?(a+="atrules/",s=s.substring(1)):"pseudo-class"==t.type?(a+="selectors/pseudo-classes/",s=s.substring(1)):"pseudo-element"==t.type&&(a+="selectors/pseudo-elements/",s=s.substring(2));else if("markup"==t.language)if("tag-id"==t.type){if(n=e(t.content)||n,!n)return;a+=n+"/elements/"}else if("attr-name"==t.type){if(!n)return;a+=n+"/attributes/"}a+=s,t.tag="a",t.attributes.href=a,t.attributes.target="_blank"}})}}(); \ No newline at end of file