08-27-周三_17-09-29
This commit is contained in:
29
node_modules/prismjs/plugins/match-braces/prism-match-braces.css
generated
vendored
Normal file
29
node_modules/prismjs/plugins/match-braces/prism-match-braces.css
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
.token.punctuation.brace-hover,
|
||||
.token.punctuation.brace-selected {
|
||||
outline: solid 1px;
|
||||
}
|
||||
|
||||
.rainbow-braces .token.punctuation.brace-level-1,
|
||||
.rainbow-braces .token.punctuation.brace-level-5,
|
||||
.rainbow-braces .token.punctuation.brace-level-9 {
|
||||
color: #E50;
|
||||
opacity: 1;
|
||||
}
|
||||
.rainbow-braces .token.punctuation.brace-level-2,
|
||||
.rainbow-braces .token.punctuation.brace-level-6,
|
||||
.rainbow-braces .token.punctuation.brace-level-10 {
|
||||
color: #0B3;
|
||||
opacity: 1;
|
||||
}
|
||||
.rainbow-braces .token.punctuation.brace-level-3,
|
||||
.rainbow-braces .token.punctuation.brace-level-7,
|
||||
.rainbow-braces .token.punctuation.brace-level-11 {
|
||||
color: #26F;
|
||||
opacity: 1;
|
||||
}
|
||||
.rainbow-braces .token.punctuation.brace-level-4,
|
||||
.rainbow-braces .token.punctuation.brace-level-8,
|
||||
.rainbow-braces .token.punctuation.brace-level-12 {
|
||||
color: #E0E;
|
||||
opacity: 1;
|
||||
}
|
184
node_modules/prismjs/plugins/match-braces/prism-match-braces.js
generated
vendored
Normal file
184
node_modules/prismjs/plugins/match-braces/prism-match-braces.js
generated
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
(function () {
|
||||
|
||||
if (typeof self === 'undefined' || !self.Prism || !self.document) {
|
||||
return;
|
||||
}
|
||||
|
||||
var MATCH_ALL_CLASS = /(?:^|\s)match-braces(?:\s|$)/;
|
||||
|
||||
var BRACE_HOVER_CLASS = /(?:^|\s)brace-hover(?:\s|$)/;
|
||||
var BRACE_SELECTED_CLASS = /(?:^|\s)brace-selected(?:\s|$)/;
|
||||
|
||||
var NO_BRACE_HOVER_CLASS = /(?:^|\s)no-brace-hover(?:\s|$)/;
|
||||
var NO_BRACE_SELECT_CLASS = /(?:^|\s)no-brace-select(?:\s|$)/;
|
||||
|
||||
var PARTNER = {
|
||||
'(': ')',
|
||||
'[': ']',
|
||||
'{': '}',
|
||||
};
|
||||
|
||||
var NAMES = {
|
||||
'(': 'brace-round',
|
||||
'[': 'brace-square',
|
||||
'{': 'brace-curly',
|
||||
};
|
||||
|
||||
var LEVEL_WARP = 12;
|
||||
|
||||
var pairIdCounter = 0;
|
||||
|
||||
var BRACE_ID_PATTERN = /^(pair-\d+-)(open|close)$/;
|
||||
|
||||
/**
|
||||
* Returns the brace partner given one brace of a brace pair.
|
||||
*
|
||||
* @param {HTMLElement} brace
|
||||
* @returns {HTMLElement}
|
||||
*/
|
||||
function getPartnerBrace(brace) {
|
||||
var match = BRACE_ID_PATTERN.exec(brace.id);
|
||||
return document.querySelector('#' + match[1] + (match[2] == 'open' ? 'close' : 'open'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @this {HTMLElement}
|
||||
*/
|
||||
function hoverBrace() {
|
||||
for (var parent = this.parentElement; parent; parent = parent.parentElement) {
|
||||
if (NO_BRACE_HOVER_CLASS.test(parent.className)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[this, getPartnerBrace(this)].forEach(function (ele) {
|
||||
ele.className = (ele.className.replace(BRACE_HOVER_CLASS, ' ') + ' brace-hover').replace(/\s+/g, ' ');
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @this {HTMLElement}
|
||||
*/
|
||||
function leaveBrace() {
|
||||
[this, getPartnerBrace(this)].forEach(function (ele) {
|
||||
ele.className = ele.className.replace(BRACE_HOVER_CLASS, ' ');
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @this {HTMLElement}
|
||||
*/
|
||||
function clickBrace() {
|
||||
for (var parent = this.parentElement; parent; parent = parent.parentElement) {
|
||||
if (NO_BRACE_SELECT_CLASS.test(parent.className)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[this, getPartnerBrace(this)].forEach(function (ele) {
|
||||
ele.className = (ele.className.replace(BRACE_SELECTED_CLASS, ' ') + ' brace-selected').replace(/\s+/g, ' ');
|
||||
});
|
||||
}
|
||||
|
||||
Prism.hooks.add('complete', function (env) {
|
||||
|
||||
/** @type {HTMLElement} */
|
||||
var code = env.element;
|
||||
var pre = code.parentElement;
|
||||
|
||||
if (!pre || pre.tagName != 'PRE') {
|
||||
return;
|
||||
}
|
||||
|
||||
// find the braces to match
|
||||
/** @type {string[]} */
|
||||
var toMatch = [];
|
||||
for (var ele = code; ele; ele = ele.parentElement) {
|
||||
if (MATCH_ALL_CLASS.test(ele.className)) {
|
||||
toMatch.push('(', '[', '{');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (toMatch.length == 0) {
|
||||
// nothing to match
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pre.__listenerAdded) {
|
||||
// code blocks might be highlighted more than once
|
||||
pre.addEventListener('mousedown', function removeBraceSelected() {
|
||||
// the code element might have been replaced
|
||||
var code = pre.querySelector('code');
|
||||
Array.prototype.slice.call(code.querySelectorAll('.brace-selected')).forEach(function (element) {
|
||||
element.className = element.className.replace(BRACE_SELECTED_CLASS, ' ');
|
||||
});
|
||||
});
|
||||
Object.defineProperty(pre, '__listenerAdded', { value: true });
|
||||
}
|
||||
|
||||
/** @type {HTMLSpanElement[]} */
|
||||
var punctuation = Array.prototype.slice.call(code.querySelectorAll('span.token.punctuation'));
|
||||
|
||||
/** @type {{ index: number, open: boolean, element: HTMLElement }[]} */
|
||||
var allBraces = [];
|
||||
|
||||
toMatch.forEach(function (open) {
|
||||
var close = PARTNER[open];
|
||||
var name = NAMES[open];
|
||||
|
||||
/** @type {[number, number][]} */
|
||||
var pairs = [];
|
||||
/** @type {number[]} */
|
||||
var openStack = [];
|
||||
|
||||
for (var i = 0; i < punctuation.length; i++) {
|
||||
var element = punctuation[i];
|
||||
if (element.childElementCount == 0) {
|
||||
var text = element.textContent;
|
||||
if (text === open) {
|
||||
allBraces.push({ index: i, open: true, element: element });
|
||||
element.className += ' ' + name;
|
||||
element.className += ' brace-open';
|
||||
openStack.push(i);
|
||||
} else if (text === close) {
|
||||
allBraces.push({ index: i, open: false, element: element });
|
||||
element.className += ' ' + name;
|
||||
element.className += ' brace-close';
|
||||
if (openStack.length) {
|
||||
pairs.push([i, openStack.pop()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pairs.forEach(function (pair) {
|
||||
var pairId = 'pair-' + (pairIdCounter++) + '-';
|
||||
|
||||
var openEle = punctuation[pair[0]];
|
||||
var closeEle = punctuation[pair[1]];
|
||||
|
||||
openEle.id = pairId + 'open';
|
||||
closeEle.id = pairId + 'close';
|
||||
|
||||
[openEle, closeEle].forEach(function (ele) {
|
||||
ele.addEventListener('mouseenter', hoverBrace);
|
||||
ele.addEventListener('mouseleave', leaveBrace);
|
||||
ele.addEventListener('click', clickBrace);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
var level = 0;
|
||||
allBraces.sort(function (a, b) { return a.index - b.index; });
|
||||
allBraces.forEach(function (brace) {
|
||||
if (brace.open) {
|
||||
brace.element.className += ' brace-level-' + (level % LEVEL_WARP + 1);
|
||||
level++;
|
||||
} else {
|
||||
level = Math.max(0, level - 1);
|
||||
brace.element.className += ' brace-level-' + (level % LEVEL_WARP + 1);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}());
|
1
node_modules/prismjs/plugins/match-braces/prism-match-braces.min.js
generated
vendored
Normal file
1
node_modules/prismjs/plugins/match-braces/prism-match-braces.min.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var c=/(?:^|\s)match-braces(?:\s|$)/,a=/(?:^|\s)brace-hover(?:\s|$)/,l=/(?:^|\s)brace-selected(?:\s|$)/,n=/(?:^|\s)no-brace-hover(?:\s|$)/,t=/(?:^|\s)no-brace-select(?:\s|$)/,u={"(":")","[":"]","{":"}"},f={"(":"brace-round","[":"brace-square","{":"brace-curly"},m=0,r=/^(pair-\d+-)(open|close)$/;Prism.hooks.add("complete",function(e){var a=e.element,n=a.parentElement;if(n&&"PRE"==n.tagName){for(var t=[],r=a;r;r=r.parentElement)if(c.test(r.className)){t.push("(","[","{");break}if(0!=t.length){n.__listenerAdded||(n.addEventListener("mousedown",function(){var e=n.querySelector("code");Array.prototype.slice.call(e.querySelectorAll(".brace-selected")).forEach(function(e){e.className=e.className.replace(l," ")})}),Object.defineProperty(n,"__listenerAdded",{value:!0}));var o=Array.prototype.slice.call(a.querySelectorAll("span.token.punctuation")),i=[];t.forEach(function(e){for(var a=u[e],n=f[e],t=[],r=[],s=0;s<o.length;s++){var c=o[s];if(0==c.childElementCount){var l=c.textContent;l===e?(i.push({index:s,open:!0,element:c}),c.className+=" "+n,c.className+=" brace-open",r.push(s)):l===a&&(i.push({index:s,open:!1,element:c}),c.className+=" "+n,c.className+=" brace-close",r.length&&t.push([s,r.pop()]))}}t.forEach(function(e){var a="pair-"+m+++"-",n=o[e[0]],t=o[e[1]];n.id=a+"open",t.id=a+"close",[n,t].forEach(function(e){e.addEventListener("mouseenter",p),e.addEventListener("mouseleave",d),e.addEventListener("click",h)})})});var s=0;i.sort(function(e,a){return e.index-a.index}),i.forEach(function(e){e.open?(e.element.className+=" brace-level-"+(s%12+1),s++):(s=Math.max(0,s-1),e.element.className+=" brace-level-"+(s%12+1))})}}})}function s(e){var a=r.exec(e.id);return document.querySelector("#"+a[1]+("open"==a[2]?"close":"open"))}function p(){for(var e=this.parentElement;e;e=e.parentElement)if(n.test(e.className))return;[this,s(this)].forEach(function(e){e.className=(e.className.replace(a," ")+" brace-hover").replace(/\s+/g," ")})}function d(){[this,s(this)].forEach(function(e){e.className=e.className.replace(a," ")})}function h(){for(var e=this.parentElement;e;e=e.parentElement)if(t.test(e.className))return;[this,s(this)].forEach(function(e){e.className=(e.className.replace(l," ")+" brace-selected").replace(/\s+/g," ")})}}();
|
Reference in New Issue
Block a user