diff --git a/src/linecomps.tsx b/src/linecomps.tsx index 7d8d986d..dae0e060 100644 --- a/src/linecomps.tsx +++ b/src/linecomps.tsx @@ -704,7 +704,7 @@ class LineCmd extends React.Component<
; -// @mike - I guess we can remove SimpleJsonRendererComponent - its doesnt have any references -type SimpleJsonRendererComponent = React.ComponentType<{ - data: any; - context: RendererContext; - opts: RendererOpts; - savedHeight: number; -}>; type FullRendererComponent = React.ComponentType<{ model: any }>; type WindowSize = { diff --git a/src/view/code.tsx b/src/view/code.tsx index bd7faa17..5a76c01c 100644 --- a/src/view/code.tsx +++ b/src/view/code.tsx @@ -3,6 +3,7 @@ import * as mobx from "mobx"; import * as mobxReact from "mobx-react"; import { RendererContext, RendererOpts } from "../types"; import Editor from "@monaco-editor/react"; +import { GlobalModel } from "../model"; type OV = mobx.IObservableValue; @@ -18,14 +19,8 @@ class SourceCodeRenderer extends React.Component< }, {} > { - code: OV = mobx.observable.box(null, { - name: "code", - deep: false, - }); - language: OV = mobx.observable.box(null, { - name: "language", - deep: false, - }); + code: OV = mobx.observable.box(""); + language: OV = mobx.observable.box(""); languages: OV = mobx.observable.box([]); selectedLanguage: OV = mobx.observable.box(""); @@ -73,26 +68,30 @@ class SourceCodeRenderer extends React.Component< render() { let opts = this.props.opts; - let maxWidth = opts.maxSize.width; - let minWidth = opts.maxSize.width; - if (minWidth > 1000) { - minWidth = 1000; - } let lang = this.language.get(); let code = this.code.get(); - if (!code) return <>; + if (!code) { + return
; + } + const noOfLines = code.split("\n").length; + const editorHeight = Math.min( + noOfLines * GlobalModel.termFontSize.get() * 1.5 + 10, + parseInt(opts.maxSize.height) + ); return (
-
+
diff --git a/src/view/json.tsx b/src/view/json.tsx deleted file mode 100644 index 2aebf7ec..00000000 --- a/src/view/json.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import * as React from "react"; -import * as mobx from "mobx"; -import * as mobxReact from "mobx-react"; -import cn from "classnames"; -import { If, For, When, Otherwise, Choose } from "tsx-control-statements/components"; -import { WindowSize, RendererContext, TermOptsType, LineType, RendererOpts } from "../types"; -import { sprintf } from "sprintf-js"; -import { Markdown } from "../elements"; -import ReactJson from "react-json-view"; - -type OV = mobx.IObservableValue; - -const MaxJsonSize = 50000; - -@mobxReact.observer -class SimpleJsonRenderer extends React.Component< - { data: Blob; context: RendererContext; opts: RendererOpts; savedHeight: number }, - {} -> { - jsonObj: OV = mobx.observable.box(null, { name: "jsonObj", deep: false }); - jsonError: OV = mobx.observable.box(null, { name: "jsonError" }); - - setJsonError(err: string) { - mobx.action(() => { - this.jsonError.set(err); - })(); - } - - componentDidMount() { - let dataBlob = this.props.data; - if (dataBlob.size > MaxJsonSize) { - this.setJsonError(sprintf("error: json too large to render size=%d", dataBlob.size)); - return; - } - let prtn = dataBlob.text(); - prtn.then((text) => { - if (/[\x00-\x08]/.test(text)) { - this.setJsonError(sprintf("error: not rendering json, binary characters detected")); - return; - } - try { - let obj = JSON.parse(text); - mobx.action(() => { - this.jsonObj.set(obj); - })(); - } catch (e) { - this.setJsonError(sprintf("error: JSON parse error: %s", e.message)); - } - }); - } - - render() { - if (this.jsonError.get() != null) { - return ( -
-
{this.jsonError.get()}
-
- ); - } - if (this.jsonObj.get() == null) { - return
; - } - let opts = this.props.opts; - let maxWidth = opts.maxSize.width; - let minWidth = opts.maxSize.width; - if (minWidth > 1000) { - minWidth = 1000; - } - return ( -
-
- -
-
- ); - } -} - -export { SimpleJsonRenderer };