open-codetree / out /_next /static /chunks /426.3c08c3140383afb7.js
matt HOFFNER
static build it
9f17640
raw
history blame
10.7 kB
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[426],{9426:function(e,t,n){!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!==typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}(".JSXElement.JSXIdentifier{color:#4169e1}.JSXElement.JSXBracket{color:#ff8c00}.JSXElement.JSXText{color:#b8860b}.JSXElement.JSXGlyph{background:#0ff;opacity:.25}.JSXClosingFragment.JSXBracket,.JSXOpeningElement.JSXBracket,.JSXOpeningFragment.JSXBracket{color:#ff8c00;font-weight:700}.JSXOpeningElement.JSXIdentifier{color:#4169e1}.JSXClosingElement.JSXBracket{color:#ff8c00;font-weight:lighter}.JSXClosingElement.JSXIdentifier{color:#4169e1;font-weight:lighter}.JSXAttribute.JSXIdentifier{color:#4682b4}.JSXExpressionContainer.JSXBracket,.JSXSpreadAttribute.JSXBracket,.JSXSpreadChild.JSXBracket{color:#ff8c00}");let i=null,o=null,s=null;const r={parser:"babel",isHighlightGlyph:!1,iShowHover:!1,isUseSeparateElementStyles:!1,isThrowJSXParseErrors:!1};function a(e,t=s){const n=function(){const e=[],t=t=>e.filter((e=>e.type===t));return{jsxExpressions:e,find:t,findJSXElements:()=>t("JSXElement"),jsxTraverse:t=>{t.type.toUpperCase().includes("JSX")&&e.push(t)}}}();return t(e,{enter:n.jsxTraverse}),n}function l(e,t={},n={}){return n.iShowHover?{...t,hoverMessage:`(${e.type})`}:t}const h="ALL",c="IDENTIFIER",d="EDGE",m="STYLE",g={["ELEMENT"]:(e,t,n=[],i,o)=>{const s=e.node.loc,r=e.node.openingElement;let a=null;if(r){a=r.name.name;const e={start:{...r.loc.start},end:{...r.name.loc.start}},t={start:{...r.loc.end},end:{...r.loc.end}};t.start.column--,r.selfClosing&&t.start.column--,n.push({range:o(e),options:i.isUseSeparateElementStyles?S.JSXBracket.openingElementOptions:S.JSXBracket.options}),n.push({range:o(t),options:i.isUseSeparateElementStyles?S.JSXBracket.openingElementOptions:S.JSXBracket.options})}const l=e.node.closingElement;if(l){const e={start:{...l.loc.start},end:{...l.name.loc.start}},t={start:{...l.loc.end},end:{...l.loc.end}};t.start.column--,n.push({range:o(e),options:i.isUseSeparateElementStyles?S.JSXBracket.closingElementOptions:S.JSXBracket.options}),n.push({range:o(t),options:i.isUseSeparateElementStyles?S.JSXBracket.closingElementOptions:S.JSXBracket.options})}i.isHighlightGlyph&&n.push({range:o(s),options:S.JSXElement.options(a)})},[h]:(e,t,n=[],i,o)=>{const s={start:{...e.node.loc.start},end:{...e.node.loc.end}};return"object"===e.key&&(s.end={...e.container.property.loc.start}),o&&n.push({range:o(s),options:l(e,t,i)}),n},[c]:(e,t={},n=[],i={},o)=>("object"!==e.key&&"property"!==e.key&&"name"!==e.key&&"namespace"!==e.key||g[h](e,e.parentPath&&e.parentPath.isJSXAttribute()?S.JSXAttribute.options:t,n,i,o),n),[d]:(e,t,n=[],i,o)=>{const s=l(e,t,i),r=e.node.loc;let a=e.isJSXSpreadChild()?"expression":e.isJSXSpreadAttribute()?"argument":null,h=null;if(a){const t=e.node[a];h={start:{...t.loc.start},end:{...t.loc.end}},t.extra&&t.extra.parenthesized&&(h.start.column--,h.end.column++)}else h={start:{...r.start},end:{...r.end}},h.start.column++,h.end.column--;const c={start:{...r.start},end:{...h.start}},d={start:{...h.end},end:{...r.end}};return n.push({range:o(c),options:s}),n.push({range:o(d),options:s}),n},[m]:()=>[]},S={JSXIdentifier:{highlightScope:c,options:{inlineClassName:"JSXElement.JSXIdentifier"}},JSXOpeningFragment:{highlightScope:h,options:{inlineClassName:"JSXOpeningFragment.JSXBracket"}},JSXClosingFragment:{highlightScope:h,options:{inlineClassName:"JSXClosingFragment.JSXBracket"}},JSXText:{highlightScope:h,options:{inlineClassName:"JSXElement.JSXText"}},JSXExpressionContainer:{highlightScope:d,options:{inlineClassName:"JSXExpressionContainer.JSXBracket"}},JSXSpreadChild:{highlightScope:d,options:{inlineClassName:"JSXSpreadChild.JSXBracket"}},JSXSpreadAttribute:{highlightScope:d,options:{inlineClassName:"JSXSpreadAttribute.JSXBracket"}},JSXElement:{highlightScope:m,options:e=>({glyphMarginClassName:"JSXElement.JSXGlyph",glyphMarginHoverMessage:"JSX Element"+(e?": "+e:"")})},JSXBracket:{highlightScope:m,options:{inlineClassName:"JSXElement.JSXBracket"},openingElementOptions:{inlineClassName:"JSXOpeningElement.JSXBracket"},closingElementOptions:{inlineClassName:"JSXClosingElement.JSXBracket"}},JSXOpeningElement:{highlightScope:m,options:{inlineClassName:"JSXOpeningElement.JSXIdentifier"}},JSXClosingElement:{highlightScope:m,options:{inlineClassName:"JSXClosingElement.JSXIdentifier"}},JSXAttribute:{highlightScope:m,options:{inlineClassName:"JSXAttribute.JSXIdentifier"}}},p="JS",u="JSX",J="editor.action.commentLine";t.default=class{constructor(e,t,n,a,l={}){this.resetState=this.resetState.bind(this),this.resetDeltaDecorations=this.resetDeltaDecorations.bind(this),this.getAstPromise=this.getAstPromise.bind(this),this.highLightOnDidChangeModelContent=this.highLightOnDidChangeModelContent.bind(this),this.highlightCode=this.highlightCode.bind(this),this.highlight=this.highlight.bind(this),this.createDecoratorsByType=this.createDecoratorsByType.bind(this),this.createJSXElementDecorators=this.createJSXElementDecorators.bind(this),this.extractAllDecorators=this.extractAllDecorators.bind(this),this.getJSXContext=this.getJSXContext.bind(this),this.runJSXCommentContextAndAction=this.runJSXCommentContextAndAction.bind(this),this.addJSXCommentCommand=this.addJSXCommentCommand.bind(this),this._isHighlightBoundToModelContentChanges=!1,this._isJSXCommentCommandActive=!1,i=e,o=t,s=n,this.options={...r,...l};const{parserType:h}=this.options;this.locToMonacoRange=((e=i,t="babel")=>(t,n=0,i=0,o=0,s=0)=>t&&t.start?new e.Range(n+t.start.line,i+t.start.column+1,o+t.end?t.end.line:t.start.line,s+t.end?t.end.column+1:t.start.column+1):new e.Range(1,1,1,1))(i,h),this.monacoEditor=a,this.resetState()}resetState(){this.prevEditorValue=null,this.editorValue=null,this.ast=null,this.jsxManager=null}resetDeltaDecorations(){this.JSXDecoratorIds=this.monacoEditor&&this.monacoEditor.deltaDecorations(this.JSXDecoratorIds||[],[])}getAstPromise(e){return new Promise((t=>{if(e||!this.editorValue||this.editorValue!==this.prevEditorValue){this.prevEditorValue=this.editorValue,this.editorValue=this.monacoEditor.getValue();try{this.ast=o(this.editorValue)}catch(n){if(n instanceof SyntaxError&&!n.message.includes("JSX"))throw this.resetState(),n;if(this.options.isThrowJSXParseErrors)throw n;t(this.ast)}}t(this.ast)}))}highLightOnDidChangeModelContent(e=100,t=(e=>e),n=(e=>console.error(e)),i,o=(e=>console.log(e))){i=i||this.getAstPromise;const s=()=>{this.highlightCode(t,n,i,o)};s();let r={onDidChangeModelContentDisposer:this.monacoEditor.onDidChangeModelContent((()=>{clearTimeout(null),setTimeout(s,e)})),onDidChangeModelDisposer:this.monacoEditor.onDidChangeModel((()=>{s()})),dispose:()=>{r.onDidChangeModelContentDisposer.dispose(),r.onDidChangeModelDisposer.dispose()}};this._isHighlightBoundToModelContentChanges=!0;return this.monacoEditor.onDidDispose((()=>{this.resetDeltaDecorations(),r=null,this._isHighlightBoundToModelContentChanges=!1})),()=>{this.resetState(),this.resetDeltaDecorations(),this._isHighlightBoundToModelContentChanges&&(this._isHighlightBoundToModelContentChanges=!1,r&&r.dispose(),r=null)}}highlightCode(e=(e=>e),t=(e=>console.error(e)),n,i=(e=>e)){return(n=n||this.getAstPromise)().then((e=>this.highlight(e))).catch(i).then(e).catch(t)}highlight(e,t=a){return new Promise((n=>{e&&(this.jsxManager=t(e),this.decorators=this.extractAllDecorators(this.jsxManager)),n(e)}))}createDecoratorsByType(e,t,n,i,o=[],s,r){return s=s||this.options,r=r||this.locToMonacoRange,e&&e.find(t).forEach((e=>g[i](e,n,o,s,r))),o}createJSXElementDecorators(e,t=[],n,i){return n=n||this.options,i=i||this.locToMonacoRange,e&&e.findJSXElements().forEach((e=>g.ELEMENT(e,null,t,n,i))),t}extractAllDecorators(e){e=e||this.jsxManager;const t=this.createJSXElementDecorators(e);for(const n in S)this.createDecoratorsByType(e,n,S[n].options,S[n].highlightScope,t);return this.JSXDecoratorIds=this.monacoEditor.deltaDecorations(this.JSXDecoratorIds||[],t),t}getJSXContext(e,t,n,o){n=n||this.monacoEditor,o=o||this.locToMonacoRange;let s=t?this.jsxManager:null;if(this._isHighlightBoundToModelContentChanges||(s=t?a(t):null),!s)return p;let r=n.getModel().getLineFirstNonWhitespaceColumn(e.startLineNumber);const l=new i.Range(e.startLineNumber,r,e.startLineNumber,r);r=r?r-1:0;const h=new i.Range(e.startLineNumber,r,e.startLineNumber,r);let c=null,d=null,m=null,g=null;return s.jsxExpressions.forEach((e=>{const t=o(e.node.loc);("name"===e.key||"property"===e.key)&&e.isJSXIdentifier()&&t.intersectRanges(l)&&(d&&!d.containsRange(t)||(d=t,g=e)),t.intersectRanges(h)&&(c&&!c.containsRange(t)||(c=t,m=e))})),!m||m.isJSXExpressionContainer()||g?p:u}runJSXCommentContextAndAction(e,t,n=(e=>e),i,o){return t=t||this.getAstPromise,i=i||this.monacoEditor,new Promise((s=>{this._isHighlightBoundToModelContentChanges?s(o(this.getJSXContext(e,this.ast,i))):t().then((t=>{s(o(this.getJSXContext(e,t,i)))})).catch((t=>s(o(this.getJSXContext(e,null,i)))||n(t)))})).catch((t=>o(this.getJSXContext(e,null,i))||n(t)))}addJSXCommentCommand(e,t=(e=>e),n){return e=e||this.getAstPromise,n=n||this.monacoEditor,this._editorCommandId?(this._isJSXCommentCommandActive=!0,this.editorCommandOnDispose):(this._editorCommandId=n.addCommand(i.KeyMod.CtrlCmd|i.KeyCode.US_SLASH,(()=>{if(!this._isJSXCommentCommandActive)return void n.getAction(J).run();const o=n.getSelection(),s=n.getModel(),r=new i.Range(o.startLineNumber,s.getLineFirstNonWhitespaceColumn(o.startLineNumber),o.startLineNumber,s.getLineMaxColumn(o.startLineNumber));if(s.getValueInRange(r).match(/^\s*\/[/*]/))return n.getAction(J).run(),void this.resetState();this.runJSXCommentContextAndAction(o,e,t,n,(e=>{let t=!0;const r=[];for(let n=o.startLineNumber;n<=o.endLineNumber;n++){const e=new i.Range(n,s.getLineFirstNonWhitespaceColumn(n),n,s.getLineMaxColumn(n)),o=s.getValueInRange(e);r.push({commentRange:e,commentText:o}),t=t&&!!o.match(/{\/\*/)}if(e!==u&&!t)return n.getAction(J).run(),void this.resetState();let a=[],l=0;for(let n=o.startLineNumber;n<=o.endLineNumber;n++){let{commentText:e,commentRange:n}=r[l++];t?(e=e.replace(/{\/\*/,""),e=e.replace(/\*\/}/,"")):e=`{/*${e}*/}`,a.push({identifier:{major:1,minor:1},range:n,text:e,forceMoveMarkers:!0})}a.length&&n.executeEdits(this._editorCommandId,a)})).catch(t)})),this.editorCommandOnDispose=()=>{this._isJSXCommentCommandActive=!1},this._isJSXCommentCommandActive=!0,n.onDidDispose(this.editorCommandOnDispose),this.editorCommandOnDispose)}}}}]);