UNPKG

@git-temporal/git-temporal-react

Version:

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->

421 lines (420 loc) 14.5 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for app/components/FileDifferences.tsx</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">All files</a> / <a href="index.html">app/components</a> FileDifferences.tsx </h1> <div class='clearfix'> </div> </div> <div class='status-line low'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2x</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React from 'react'; import { defer } from 'lodash'; import { style, getStyleVar } from 'app/styles'; import { editor } from 'monaco-editor'; import { debug } from 'app/utilities/logger'; &nbsp; export interface FileDifferencesProps { rerenderRequestedAt: Date; leftFileContents: string; rightFileContents: string; style?: string | object; onFileClick?: (evt, fileName: string) =&gt; void; } &nbsp; const outerStyle = { position: 'relative', flexGrow: 1, overflow: 'hidden', }; &nbsp; const editorStyle = { _extends: 'fill', position: 'absolute', }; &nbsp; export class FileDifferences extends React.Component&lt;FileDifferencesProps&gt; { private <span class="cstat-no" title="statement not covered" >monacoEditorElRef = React.createRef&lt;HTMLDivElement&gt;();</span> private navigator: any; &nbsp; <span class="fstat-no" title="function not covered" > constructor(</span>props: FileDifferencesProps) { <span class="cstat-no" title="statement not covered" > super(props);</span> <span class="cstat-no" title="statement not covered" > this.renderMonacoEditor = this.renderMonacoEditor.bind(this);</span> } &nbsp; <span class="fstat-no" title="function not covered" > componentDidMount</span>() { <span class="cstat-no" title="statement not covered" > this.renderMonacoEditor();</span> <span class="cstat-no" title="statement not covered" > window &amp;&amp; window.addEventListener('resize', this.renderMonacoEditor);</span> } &nbsp; <span class="fstat-no" title="function not covered" > componentDidUpdate</span>() { <span class="cstat-no" title="statement not covered" > defer(<span class="fstat-no" title="function not covered" >() </span>=&gt; <span class="cstat-no" title="statement not covered" >this.renderMonacoEditor())</span>;</span> } &nbsp; <span class="fstat-no" title="function not covered" > render</span>() { <span class="cstat-no" title="statement not covered" > return (</span> &lt;div style={style(outerStyle)}&gt; &lt;div style={style(editorStyle)} ref={this.monacoEditorElRef} /&gt; &lt;/div&gt; ); } &nbsp; <span class="fstat-no" title="function not covered" > renderMonacoEditor</span>() { const el = <span class="cstat-no" title="statement not covered" >this.monacoEditorElRef.current;</span> <span class="cstat-no" title="statement not covered" > if (!el) {</span> <span class="cstat-no" title="statement not covered" > return null;</span> } <span class="cstat-no" title="statement not covered" > el.innerHTML = '';</span> &nbsp; const leftFileContents = <span class="cstat-no" title="statement not covered" > (this.props.leftFileContents &amp;&amp; atob(this.props.leftFileContents)) || '';</span> const rightFileContents = <span class="cstat-no" title="statement not covered" > (this.props.rightFileContents &amp;&amp; atob(this.props.rightFileContents)) ||</span> ''; &nbsp; <span class="cstat-no" title="statement not covered" > debug(</span> `renderMonacoEditor: el ${el.offsetHeight} ${el.clientHeight} ${ el.offsetWidth } ${el.clientWidth}` ); const originalModel = <span class="cstat-no" title="statement not covered" >editor.createModel(leftFileContents);</span> const modifiedModel = <span class="cstat-no" title="statement not covered" >editor.createModel(rightFileContents);</span> &nbsp; // @ts-ignore <span class="cstat-no" title="statement not covered" > editor.defineTheme('myTheme', this.getTheme());</span> <span class="cstat-no" title="statement not covered" > editor.setTheme('myTheme');</span> &nbsp; const diffEditor = <span class="cstat-no" title="statement not covered" >editor.createDiffEditor(el, { readOnly: true });</span> <span class="cstat-no" title="statement not covered" > diffEditor.setModel({</span> original: originalModel, modified: modifiedModel, }); &nbsp; <span class="cstat-no" title="statement not covered" > this.navigator = editor.createDiffNavigator(diffEditor, {</span> followsCaret: true, // resets the navigator state when the user selects something in the editor ignoreCharChanges: true, // jump from line to line }); } &nbsp; <span class="fstat-no" title="function not covered" > getTheme</span>() { const background = <span class="cstat-no" title="statement not covered" >this.getColorValue('background');</span> const foreground = <span class="cstat-no" title="statement not covered" >this.getColorValue('text');</span> const theme = <span class="cstat-no" title="statement not covered" >{</span> base: 'vs', inherit: true, rules: [{ background, foreground }], colors: { 'editor.foreground': foreground, 'editor.background': background, // don't show selection 'editorCursor.foreground': background, // 'editor.lineHighlightBackground': '#0000FF20', // 'editorLineNumber.foreground': '#008800', // 'editor.selectionBackground': '#88000030', // 'editor.inactiveSelectionBackground': '#88000015', }, }; <span class="cstat-no" title="statement not covered" > debug('FileDifferences.getTheme() returning ', theme);</span> <span class="cstat-no" title="statement not covered" > return theme;</span> } &nbsp; <span class="fstat-no" title="function not covered" > getColorValue</span>(ourName: string): string { const valueIn = <span class="cstat-no" title="statement not covered" >getStyleVar('colors', ourName);</span> &nbsp; // interpolate css variable values to real color value for monaco const matches = <span class="cstat-no" title="statement not covered" >valueIn.match(/var\(([^\)]*)/);</span> <span class="cstat-no" title="statement not covered" > if (matches) {</span> const varName = <span class="cstat-no" title="statement not covered" >matches[1];</span> const value = <span class="cstat-no" title="statement not covered" >getComputedStyle(document.documentElement).getPropertyValue(</span> varName ); <span class="cstat-no" title="statement not covered" > return value;</span> } <span class="cstat-no" title="statement not covered" > return valueIn;</span> } } &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Jan 20 2020 20:05:02 GMT-0800 (PST) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>