widget-code
Version:
Code coloring component
14 lines (13 loc) • 28.1 kB
JavaScript
/*!
* code-tool v1.0.0
* Code coloring component
* https://passer-by.com/widget-code/
*
* Copyright (c) 2024-present, HaoLe Zheng
*
* Released under the MIT License
* https://github.com/mumuy/widget-code
*
* Created on: 2024-09-02
*/
!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";function e(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,o=Array(n);t<n;t++)o[t]=e[t];return o}function n(n){return function(n){if(Array.isArray(n))return e(n)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(n,t){if(n){if("string"==typeof n)return e(n,t);var o={}.toString.call(n).slice(8,-1);return"Object"===o&&n.constructor&&(o=n.constructor.name),"Map"===o||"Set"===o?Array.from(n):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(n,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function t(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function r(e){var n=function(e,n){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==o(n)?n:n+""}function a(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,r(o.key),o)}}function c(e,n,t){return n&&a(e.prototype,n),t&&a(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,n){if(n&&("object"==o(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function s(e,n){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},s(e,n)}function u(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(u=function(){return!!e})()}function d(e){var n="function"==typeof Map?new Map:void 0;return d=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(n){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return function(e,n,t){if(u())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,n);var r=new(e.bind.apply(e,o));return t&&s(r,t.prototype),r}(e,arguments,l(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),s(t,e)},d(e)}var p=[{type:"comment",match:/\/\*[^\/]*\*\/|\/\/.+\n?/g}],f=[{type:"string",match:/\".+?\"|\'.+?\'/g},{type:"string",match:/\`[\s\S]+?\`/g,rules:[{type:"variable",match:/\${.+?}/g}]}],m=[{type:"parameter",match:/(?<=\([$\w\s=,]*[\s,]*\s?)[$\w\s=]+(?=\s?[\s,]*[$\w\s=,]*\))/g,rules:[{type:"literal",match:/(?<=:\s*\|?\s*)\w+(?=[\s,:;{\)])/g}]}],g=[{type:"regex",match:/\/.+?\/[gimu\s]/g}],h=[{type:"literal",match:/(?<=\W)true|false|null|undefined(?=\W)/g}],y=[{type:"keyword",match:/(^|(?<=\W))(return|void|continue|for|if|else|switch|do|while|default|throw|delete|try|catch|finally|function|with|debugger|class|enum|extends|export|import|impelements|new|typeof|var|let|const|public|yield|interface|package|static|async|await|instanceof)(?=\W)/g},{type:"keyword",match:/(?<=for\s*\(.+?\s)(in|of)(?=\s.+?\))/g},{type:"keyword",match:/(?<=\s)(get|set)(?=\s+\w+\(.*?\))/g},{type:"keyword",match:/(?<=import\s*.+?\s)(from|as|assert|with)(?=\s.+?)/g}],b=[{type:"buildin",match:/(^|(?<=\W))(Object|Function|Array|Stirng|Boolean|Number|Date|RegExp|Buffer|ArrayBuffer|Int8Array|Uint8ClampedArray|Int16Array|Int32Array|Float32Array|Float64Array|Uint32Array|BigUint64Array|Blob|Math|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError|JSON|Reflect|Proxy|Worker|WebSocket|EventSource|FileReader|FormData|Set|Map|WeakSet|WeakMap|Atomics|DataView|Iterator|DataView|Intl|URL|Infinity|Symbol|BigInt|NaN)(?=\W)/g}],v=[{type:"variable",match:/(^|(?<=\W))this|parent|self|globalThis|super|navigator|console(?=\.)/g}],w=[{type:"operator",match:/[\+\-\*\/%=<>]/g}],x=[{type:"punctuation",match:/[\(\)\{\}\[\]\.;,:#]/g}],k=[{type:"function",match:/(?<=[^\w])[\w$]+?(?=(\s*\:\s*function)?\s*\()/g}],S=[{type:"class",match:/(?<=class\s+)[\w$]+?(?=\s)/g}],A=[{type:"property",match:/(?<=[\s])#?[\w$]+(?=[:])|(?<=[\.])#?[\w$]+(?=[=;\s\)])/g}],E=[{type:"number",match:/\-?\d+e?(_\d+)*(\.\d)?(_\d+)*/g}],j={name:"Javascript",value:"javascript",groups:[{type:"javascript",match:/[\s\S]+/g,default:!0,rules:[].concat(n(p),n(f),n(m),n(g),n(h),n(y),n(b),n(v),[{type:"variable",match:/(^|(?<=\W))(window|document)(?=\.)/g}],n(E),n(w),n(x),n(k),n(S),n(A))}]},W={name:"TypeScript",value:"typescript",groups:[{type:"typescript",match:/[\s\S]+/g,default:!0,rules:[{type:"comment",match:/\/\*[^\/]*\*\//g,rules:[{type:"keyword",match:/(?<=\W)@\w+(?=(\W|$))/g},{type:"literal",match:/(?<={)\w+(?=})/g}]}].concat(n(p),n(f),[{type:"parameter",match:/(?<=\([$\w\s=:,]*[\s,]*\s?)[$\w\s=:]+(?=\s?[\s,]*[$\w\s=:,]*\))/g,rules:[].concat(n(f),n(g),n(h),[{type:"literal",match:/(?<=:\s*\|?\s*)\w+(?=([\s,:;{\)]|$))/g}],n(E))}],n(g),n(h),[{type:"literal",match:/(?<=:\s*\|?\s*)\w+(?=[\s,:;{\)])/g},{type:"literal",match:/(^|(?<=\W))(any|unknown|never|void)(?=\W)/g}],n(y),[{type:"keyword",match:/(^|(?<=\W))(type|private|protected|abstract|readonly|keyof|namespace)(?=\W)/g}],n(b),[{type:"variable",match:/(^|(?<=\W))(window|document)(?=\.)/g}],n(v),n(E),n(w),n(x),n(k),n(S),n(A))}]},T={name:"Node.js",value:"nodejs",groups:[{type:"nodejs",match:/[\s\S]+/g,default:!0,rules:[].concat(n(p),[{type:"shell",match:/#!.+?\n?/g}],n(f),n(m),n(g),n(h),n(y),n(b),n(v),[{type:"variable",match:/(?<=\W)global|process|module|exports(?=\.)/g},{type:"variable",match:/require(?=\(.+?\))/g}],n(E),n(w),n(x),n(k),n(S),n(A))}]},O={name:"CSS",value:"css",groups:[{type:"css",match:/[\s\S]+/g,default:!0,rules:[{type:"comment",match:/\/\*[^\/]*\*\//g},{type:"selector",match:/(?<=[\}\s]?)[@\w\d\.\#\&\:\-\s]+(?=\{)/g,rules:[{type:"statement",match:/@[\w\-]+?(?=\s)/g},{type:"pseudo",match:/::?[\w]+/g}]},{type:"number",match:/(?<=[\s:\(\)])[\.\d]+([\w%]+)?(?=[\s\);])/g},{type:"variable",match:/--[\w\-]+/g},{type:"attribute",match:/(?<=[\s]?)[\w\-]+?(?=\s*:)/g},{type:"punctuation",match:/[\(\)\{\};:]/g},{type:"function",match:/(?<=[^\w])[\w$]+?(?=\()/g},{type:"value",match:/(?<=:.+)[\w\-]+?(?=[\s;])/g}]}]},C={name:"XML",value:"xml",groups:[{type:"xml",match:/[\s\S]+/g,default:!0,rules:[{type:"doctype",match:/<!DOCTYPE[\s\S]+?>/g,rules:[{type:"keyword",match:/(?<=\s)\S+?(?=[\s=>])/g},{type:"value",match:/'.+?'|".+?"/g}]},{type:"meta",match:/<\?xml\s[\s\S]+?\?>/g,rules:[{type:"value",match:/'.+?'|".+?"/g}]},{type:"comment",match:/<!--[\s\S]+-->/g},{type:"tag",match:/<[\w\-]+(\s)?.*?>|<\/[\w-]+>/g,rules:[{type:"punctuation",match:/=/g},{type:"comment",match:/[<>\/]/g},{type:"attribute",match:/(?<=\s)\S+?(?=[\s=>])/g},{type:"value",match:/'.+?'|".+?"/g}]}]}]},M={name:"HTML",value:"html",groups:[{type:"javascript",match:/(?<=<script\s?.*>)[\s\S]+?(?=<\/script>)/g,default:!1,rules:j.groups.find((function(e){return e.default})).rules},{type:"css",match:/(?<=<style\s?.*>)[\s\S]+?(?=<\/style>)/g,default:!1,rules:O.groups.find((function(e){return e.default})).rules},{type:"html",match:/[\s\S]+/g,default:!0,rules:C.groups.find((function(e){return e.default})).rules}]},R=structuredClone(M.groups);R.find((function(e){return"html"==e.type})).rules.find((function(e){return"tag"==e.type})).rules.unshift({type:"directive",match:/(?<=\sv-\S+?=)".+?"(?=[\s>])/g,rules:[{type:"keyword",match:/(?<=\s)of|in(?=\s)/g}]});var $=[{name:"Text",value:"text",groups:[{type:"text",match:/[\s\S]+/g,default:!0,rules:[]}]},j,W,T,O,C,M,{name:"Vue",value:"vue",groups:R},{name:"PHP",value:"php",groups:[{type:"php",match:/<\?php\s[\s\S]+?\?>/g,default:!1,rules:[{type:"tag",match:/<\?php|\?>$/g},{type:"comment",match:/\/\*[^\/]*\*\/|\/\/.+\n?/g},{type:"string",match:/\".+?\"|\'.+?\'/g,rules:[{type:"variable",match:/{\$.+?}/g}]},{type:"literal",match:/(?<=\W)true|false|null|undefined(?=\W)/g},{type:"keyword",match:/(?<=\W)(abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|iterable|object|mixed|never|resource|numeric)(?=\W)/g},{type:"variable",match:/(?<=\W)\$\w+?(?=\W)/g},{type:"operator",match:/[\+\-\*\/%=<>]/g},{type:"punctuation",match:/[\(\)\{\}\[\]\.;,:#]/g},{type:"number",match:/\-?\d+e?(_\d+)*(\.\d)?(_\d+)*/g},{type:"function",match:/(?<=[^\w])[\w$]+?(?=\()/g}]}].concat(n(M.groups))}];const L=new CSSStyleSheet;L.replaceSync(":host {\n --panel-background-color: #2d2d2d;\n --panel-text-color: #ccc;\n --side-background-color: rgba(255, 255, 255, 0.05);\n --side-text-color: #ccc;\n --side-border-color: rgba(255, 255, 255, 0.075);\n --scrollbar-track-color: rgba(255,255,255,0.1);\n --scrollbar-thumb-color: rgba(255,255,255,0.5);\n --button-background-color: rgba(255,255,255,0.1);\n --button-text-color: rgba(255,255,255,0.5);\n --code-comment: #999;\n --code-shell: #999;\n --code-keyword: #c9c;\n --code-operator: #ccc;\n --code-punctuation: #ccc;\n --code-variable: #c90;\n --code-function: #69c;\n --code-parameter: #ccc;\n --code-property: #d1bf5e;\n --code-literal: #6cc;\n --code-number: #c90;\n --code-string: #9c9;\n --code-regex: #9c9;\n --code-class: #e8da93;\n\n --code-selector: #d1bf5e;\n --code-pseudo: #ccc;\n --code-attribute: #c90;\n --code-statement: #c9c;\n\n --code-doctype: #69c;\n --code-meta: #69c;\n --code-tag: #c66;\n --code-directive: #ccc;\n}\n:host-context([language='css']){\n --code-variable: #c66;\n --code-attribute: #9c9;\n}\n[language='css']{\n --code-attribute: #9c9;\n}\n[language='html']{\n --code-value: #9c9;\n}\n[language=\"php\"]{\n --code-tag: #69c;\n --code-variable: #d1bf5e;\n}\n.mod-panel code .string{\n --code-variable: #c66;\n}\n");const P=new CSSStyleSheet;P.replaceSync(":host {\n --panel-background-color: #f8f8f8;\n --panel-text-color: #666;\n --side-background-color: rgba(0, 0, 0, 0.05);\n --side-text-color: #666;\n --side-border-color: rgba(0, 0, 0, 0.075);\n --scrollbar-track-color: rgba(0, 0, 0, 0.1);\n --scrollbar-thumb-color: rgba(0, 0, 0, 0.5);\n --button-background-color: rgba(0, 0, 0, 0.1);\n --button-text-color: rgba(0, 0, 0, 0.5);\n --code-comment: #999;\n --code-shell: #999;\n --code-keyword: #c6c;\n --code-operator: #888;\n --code-punctuation: #888;\n --code-variable: #fea42e;\n --code-function: #3770a9;\n --code-parameter: #888;\n --code-property: #e9ba00;\n --code-literal: #45b6c6;\n --code-number: #fea42e;\n --code-string: #3e9a3a;\n --code-regex: #3e9a3a;\n --code-class: #ffcc00;\n\n --code-selector: #e9ba00;\n --code-pseudo: #999;\n --code-attribute: #fea42e;\n --code-statement: #c6c;\n\n --code-doctype: #69c;\n --code-meta: #69c;\n --code-tag: #f16f6f;\n --code-directive: #999;\n}\n:host-context([language='css']){\n --code-variable: #f16f6f;\n --code-attribute: #3e9a3a;\n}\n[language='css']{\n --code-attribute: #3e9a3a;\n}\n[language='html']{\n --code-value: #3e9a3a;\n}\n[language=\"php\"]{\n --code-tag: #3770a9;\n --code-variable: #e9ba00;\n}\n.mod-panel code .string{\n --code-variable: #f16f6f;\n}\n");var X=[{name:"Dark",value:"dark",styleSheet:L},{name:"Light",value:"light",styleSheet:P}];function I(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return _(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return c=e.done,e},e:function(e){i=!0,a=e},f:function(){try{c||null==t.return||t.return()}finally{if(i)throw a}}}}function _(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,o=Array(n);t<n;t++)o[t]=e[t];return o}function B(e,n,t){(function(e,n){if(n.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,n),n.set(e,t)}function N(e,n){return e.get(D(e,n))}function q(e,n,t){return e.set(D(e,n),t),t}function D(e,n,t){if("function"==typeof e?e===n:e.has(n))return arguments.length<3?n:t;throw new TypeError("Private element is not present on this object")}var H=new WeakMap,U=new WeakMap,F=new WeakMap,z=new WeakMap,V=new WeakMap,J=function(){return c((function e(n){t(this,e),B(this,H,""),B(this,U,$),B(this,F,X),B(this,z,null),B(this,V,null),q(H,this,n.content),this.setLanguage(n.language),this.setTheme(n.theme)}),[{key:"setLanguage",value:function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"text";q(z,this,N(U,this).find((function(e){return e.value==n}))||(null===(e=N(U,this))||void 0===e?void 0:e[0])||null)}},{key:"setTheme",value:function(e){var n;e?q(V,this,N(F,this).find((function(n){return n.value==e}))||null):q(V,this,(null===(n=N(F,this))||void 0===n?void 0:n[0])||null)}},{key:"getLanguageOption",value:function(){return N(z,this)}},{key:"getThemeOption",value:function(){return N(V,this)}},{key:"parse",value:function(){var e,n=this,t=function(e,n){return["xml","html","php"].includes(e)?n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""):n},o=function(e,r,a){var c=function(e){var t=[];if(N(V,n)){var o,r=I(N(V,n).styleSheet.cssRules);try{for(r.s();!(o=r.n()).done;){var a=o.value,c=!0;if(a.selectorText.match(/\[language=.+\]/)){var i='[language="'.concat(e,'"]');c=a.selectorText.includes(i)}c&&a.styleMap.forEach((function(e,n){n.includes("--code-")&&t.push(n.replace("--code-",""))}))}}catch(e){r.e(e)}finally{r.f()}}return t}(e),i=[];a.forEach((function(n){if(c.includes(n.type)){var a=r.matchAll(n.match);if(a){var l,s=I(a);try{var u=function(){var r=l.value,a=r[0],c=r.index,s=a.match(/\n|.+/g).map((function(r){var a=c+r.length,i={language:e,type:n.type,value:t(e,r),start:c,end:a};return n.rules&&(i.children=o(e,r,n.rules)),c=a,i}));i=i.concat(s)};for(s.s();!(l=s.n()).done;)u()}catch(e){s.e(e)}finally{s.f()}}}})),i.sort((function(e,n){return e.start>=n.start?1:-1}));var l=0,s=r.length,u=[];if(i.forEach((function(n){if(l<n.start){var o=r.substring(l,n.start),a=l,c=o.match(/\n|.+/g).map((function(n){var o=a+n.length,r={language:e,type:"plain",value:t(e,n),start:a,end:o};return a=o,r}));u=u.concat(c),l=n.start}l==n.start&&(u.push(n),l=n.end)})),l<s){var d=r.substring(l,s),p=l,f=d.match(/\n|.+/g).map((function(n){var o=p+n.length,r={language:e,type:"plain",value:t(e,n),start:p,end:o};return p=o,r}));u=u.concat(f)}return u},r=[],a=[],c=[];if(null!==(e=N(z,n))&&void 0!==e&&e.groups){var i=[];N(z,n).groups.filter((function(e){return!e.default})).forEach((function(e){var t=N(H,n).matchAll(e.match);if(t){var a,c=I(t);try{var l=function(){var n=a.value,t={content:n[0],start:n.index,end:n.index+n[0].length};i.push(t),r=r.concat(o(e.type,t.content,e.rules).map((function(e){return e.start+=t.start,e.end+=t.start,e})))};for(c.s();!(a=c.n()).done;)l()}catch(e){c.e(e)}finally{c.f()}}}));var l=function(e){var n=!1;return i.forEach((function(t){e.start>=t.start&&e.end<=t.end&&(n=!0)})),n};N(z,n).groups.filter((function(e){return e.default})).forEach((function(e){var t=N(H,n).matchAll(e.match);if(t){var a,c=I(t);try{for(c.s();!(a=c.n()).done;){a.value;r=r.concat(o(e.type,N(H,n),e.rules).filter((function(e){return!l(e)})))}}catch(e){c.e(e)}finally{c.f()}}})),r.sort((function(e,n){return e.start>=n.start?1:-1}))}return r.forEach((function(e,n){"\n"!=e.value?c.push(e):(a.push(c),c=n==r.length-1?[{type:"plain",language:"",value:"",start:n,end:n+1}]:[])})),c.length&&a.push(c),a}}])}();const Y=new CSSStyleSheet;function G(e,n,t){return n=l(n),i(e,K()?Reflect.construct(n,t||[],l(e).constructor):n.apply(e,t))}function K(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(K=function(){return!!e})()}Y.replaceSync(":host {\n display: block;\n font-family: Arial,Helvetica,\"Microsoft Yahei\";\n font-size: 14px;\n --panel-background-color: #2d2d2d;\n --panel-text-color: #ccc;\n --side-background-color: rgba(255, 255, 255, 0.05);\n --side-text-color: #ccc;\n --side-border-color: rgba(255, 255, 255, 0.075);\n --scrollbar-track-color: rgba(255,255,255,0.1);\n --scrollbar-thumb-color: rgba(255,255,255,0.5);\n --button-background-color: rgba(255,255,255,0.1);\n --button-text-color: rgba(255,255,255,0.5);\n --code-comment: #ccc;\n --code-shell: #ccc;\n --code-keyword: #ccc;\n --code-buildin: #ccc;\n --code-operator: #ccc;\n --code-punctuation: #ccc;\n --code-function: #ccc;\n --code-class: #ccc;\n --code-parameter: #ccc;\n --code-property: #ccc;\n --code-value: #ccc;\n --code-variable: #ccc;\n --code-literal: #ccc;\n --code-number: #ccc;\n --code-string: #ccc;\n --code-regex: #ccc;\n --code-statement: #ccc;\n --code-selector: #ccc;\n --code-pseudo: #ccc;\n --code-tag: #ccc;\n --code-directive: #ccc;\n}\n*{\n padding:0;\n margin:0;\n}\na{\n text-decoration: none;\n color:#333;\n}\ncode{\n font-family: Menlo,Monaco,Consolas,'Andale Mono','lucida console','Courier New',monospace;\n tab-size: 4;\n}\npre{\n white-space: pre-wrap;\n}\n.mod-panel{\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--panel-background-color);\n color: var(--panel-text-color);\n overflow: hidden;\n}\n.mod-panel .hd{\n position: relative;\n padding: 0 20px;\n margin-bottom: 1px;\n line-height: 36px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 0 rgba(255,255,255, 0.1);\n}\n.mod-panel .hd .btn{\n float: right;\n position: relative;\n display: block;\n width: 30px;\n height: 30px;\n margin: 3px -10px;\n background: var(--button-background-color);\n border: none;\n border-radius: 4px;\n text-indent: -33em;\n overflow: hidden;\n cursor: pointer;\n}\n.mod-panel .hd .btn::before{\n position: absolute;\n left: 6px;\n top: 9px;\n display: block;\n width: 9px;\n height: 12px;\n content: \"\";\n border: 2px solid var(--button-text-color);\n border-radius: 2px;\n}\n.mod-panel .hd .btn::after{\n position: absolute;\n left: 11px;\n top: 5px;\n display: block;\n width: 10px;\n height: 12px;\n content: \"\";\n border-top: 2px solid var(--button-text-color);\n border-right: 2px solid var(--button-text-color);\n border-radius: 2px;\n}\n.mod-panel .hd .notice{\n display: none;\n position: absolute;\n right: 3px;\n top: 3px;\n z-index: 99;\n padding: 0 10px;\n background: #f8f9fa;\n line-height: 30px;\n color: #6c757d;\n border-radius: 3px;\n overflow: hidden;\n}\n.mod-panel .hd .notice-success{\n display: block;\n background: #d1e7dd;\n color: #146c43;\n animation: flip;\n animation-duration: 4s;\n}\n.mod-panel .hd .notice-error{\n display: block;\n background: #f8d7da;\n color: #b02a37;\n animation: flip;\n animation-duration: 4s;\n}\n.mod-panel .bd{\n flex: 1;\n overflow-y: auto;\n}\n.mod-panel .outer{\n position: relative;\n padding: 5px 10px 5px 60px;\n counter-reset: lineNumber;\n}\n.mod-panel .outer::before{\n position: absolute;\n left: 0;\n top: 0;\n width: 50px;\n height: 100%;\n background-color: var(--side-background-color);\n border-right: 2px solid var(--side-border-color);\n content: '';\n}\n.mod-panel .line{\n position: relative;\n min-height: 24px;\n line-height: 24px;\n}\n.mod-panel .line::before{\n position: absolute;\n width: 32px;\n left: -52px;\n text-align: right;\n counter-increment: lineNumber 1;\n content: counter(lineNumber);\n color: var(--side-text-color);\n}\n.mod-panel code .comment{\n color: var(--code-comment);\n}\n.mod-panel code .shell{\n color: var(--code-shell);\n}\n.mod-panel code .keyword{\n color: var(--code-keyword);\n}\n.mod-panel code .buildin{\n color: var(--code-buildin);\n}\n.mod-panel code .operator{\n color: var(--code-operator);\n}\n.mod-panel code .punctuation{\n color: var(--code-punctuation);\n}\n.mod-panel code .function{\n color: var(--code-function);\n}\n.mod-panel code .class{\n color: var(--code-class);\n}\n.mod-panel code .number{\n color: var(--code-number);\n}\n.mod-panel code .string{\n color: var(--code-string);\n}\n.mod-panel code .regex{\n color: var(--code-regex);\n}\n.mod-panel code .variable{\n color: var(--code-variable);\n}\n.mod-panel code .property{\n color: var(--code-property);\n}\n.mod-panel code .literal{\n color: var(--code-literal);\n}\n.mod-panel code .value{\n color: var(--code-value);\n}\n.mod-panel code .selector{\n color: var(--code-selector);\n}\n.mod-panel code .attribute{\n color: var(--code-attribute);\n}\n.mod-panel code .pseudo{\n color: var(--code-pseudo);\n}\n.mod-panel code .statement{\n color: var(--code-statement);\n}\n.mod-panel code .doctype{\n color: var(--code-doctype);\n}\n.mod-panel code .meta{\n color: var(--code-meta);\n}\n.mod-panel code .tag{\n color: var(--code-tag);\n}\n.mod-panel code .directive{\n color: var(--code-directive);\n}\n\n\n::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n::-webkit-scrollbar-track {\n background-color: var(--scrollbar-track-color);\n}\n::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb-color);\n border-radius: 4px;\n}\n@keyframes flip {\n 0% {\n display: block;\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n opacity: 0;\n -webkit-transform: perspective(400px) rotateX(90deg);\n transform: perspective(400px) rotateX(90deg)\n }\n 4% {\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n -webkit-transform: perspective(400px) rotateX(-20deg);\n transform: perspective(400px) rotateX(-20deg)\n }\n 6% {\n opacity: 1;\n -webkit-transform: perspective(400px) rotateX(10deg);\n transform: perspective(400px) rotateX(10deg)\n }\n 8% {\n -webkit-transform: perspective(400px) rotateX(-5deg);\n transform: perspective(400px) rotateX(-5deg)\n }\n 10% {\n opacity: 1;\n -webkit-transform: perspective(400px);\n transform: perspective(400px)\n }\n 90% {\n opacity: 1;\n -webkit-transform: perspective(400px);\n transform: perspective(400px)\n }\n 92% {\n -webkit-transform: perspective(400px) rotateX(-5deg);\n transform: perspective(400px) rotateX(-5deg)\n }\n 96% {\n -webkit-animation-timing-function: ease-in;\n animation-timing-function: ease-in;\n -webkit-transform: perspective(400px) rotateX(-20deg);\n transform: perspective(400px) rotateX(-20deg)\n }\n 100% {\n opacity: 0;\n display: none;\n -webkit-transform: perspective(400px) rotateX(90deg);\n transform: perspective(400px) rotateX(90deg)\n }\n}\n");var Q=function(e){function o(){var e;return t(this,o),(e=G(this,o)).attachShadow({mode:"open"}),e}return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),n&&s(e,n)}(o,e),c(o,[{key:"language",get:function(){return this.getAttribute("language")||"text"},set:function(e){this.setAttribute("language",e)}},{key:"theme",get:function(){return this.getAttribute("theme")||"dark"},set:function(e){this.setAttribute("theme",e)}},{key:"connectedCallback",value:function(){var e=this;setTimeout((function(){var n=e.textContent,t=new J({content:n,theme:e.theme,language:e.language});e.render(t),e.addStyle(t);var o=e.shadowRoot.querySelector(".mod-panel"),r=o.querySelector(".btn"),a=o.querySelector(".notice");r.onclick=function(){(function(e){return navigator.clipboard?navigator.clipboard.writeText(e):new Promise((function(n,t){if(document.execCommand){window.getSelection().removeAllRanges();var o=window.getSelection(),r=document.createElement("pre");r.style.position="absolute",r.style.left="-99999px",document.body.appendChild(r),r.innerText=e,r.focus(),o.selectAllChildren(r),document.execCommand("Copy"),window.setTimeout((function(){document.body.removeChild(r),n()}),100)}else t()}))})(n).then((function(){a.classList.add("notice-success"),a.innerHTML="复制成功"})).catch((function(){a.classList.add("notice-error"),a.innerHTML="复制失败"}))},a.addEventListener("animationend",(function(){a.classList.remove("notice-success","notice-error")}))}),0)}},{key:"addStyle",value:function(e){var t=e.getThemeOption().styleSheet;if(this.shadowRoot.adopteddefaultSheets)this.shadowRoot.adopteddefaultSheets=[Y,t];else{var o=document.createElement("style");o.rel="defaultSheet",o.textContent=[].concat(n(Y.cssRules),n(t.cssRules)).map((function(e){return e.cssText})).join(""),this.shadowRoot.appendChild(o)}}},{key:"render",value:function(e){var n=e.getLanguageOption(),t=e.parse().map((function(e,n){return'<div class="line">'.concat(e.map((function(e){return'<span class="'.concat(e.type,'" language="').concat(e.language,'">').concat((n=function(e){return e.children?e.children.map((function(e){return'<span class="'.concat(e.type,'">').concat(n(e),"</span>")})).join(""):e.value},n(e)),"</span>");var n})).join(""),"</div>")})).join("");this.shadowRoot.innerHTML='<div class="mod-panel">\n <div class="hd">\n <span class="title">'.concat(n.name,'</span>\n <span class="notice">复制成功</span>\n <button class="btn">复制</button>\n </div>\n <div class="bd">\n <div class="outer">\n <pre><code>').concat(t,"</code></pre>\n </div>\n </div>\n </div>")}}],[{key:"observedAttributes",get:function(){return["language","theme"]}}])}(d(HTMLElement));customElements.get("widget-code")||customElements.define("widget-code",Q)}));