aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/ScriptBox.tsx
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2024-05-14 23:15:24 -0400
committerbobzel <zzzman@gmail.com>2024-05-14 23:15:24 -0400
commit3534aaf88a3c30a474b3b5a5b7f04adfe6f15fac (patch)
tree47fb7a8671b209bd4d76e0f755a5b035c6936607 /src/client/views/ScriptBox.tsx
parent87bca251d87b5a95da06b2212400ce9427152193 (diff)
parent5cb7ad90e120123ca572e8ef5b1aa6ca41581134 (diff)
Merge branch 'restoringEslint' into sarah-ai-visualization
Diffstat (limited to 'src/client/views/ScriptBox.tsx')
-rw-r--r--src/client/views/ScriptBox.tsx47
1 files changed, 32 insertions, 15 deletions
diff --git a/src/client/views/ScriptBox.tsx b/src/client/views/ScriptBox.tsx
index 623201ed1..9c36e6d26 100644
--- a/src/client/views/ScriptBox.tsx
+++ b/src/client/views/ScriptBox.tsx
@@ -1,17 +1,18 @@
+/* eslint-disable react/require-default-props */
import { action, makeObservable, observable } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
+import { emptyFunction } from '../../Utils';
import { Doc, Opt } from '../../fields/Doc';
+import { DocData } from '../../fields/DocSymbols';
import { ScriptField } from '../../fields/ScriptField';
import { ScriptCast } from '../../fields/Types';
-import { emptyFunction } from '../../Utils';
import { DragManager } from '../util/DragManager';
import { CompileScript } from '../util/Scripting';
import { EditableView } from './EditableView';
-import { DocumentIconContainer } from './nodes/DocumentIcon';
import { OverlayView } from './OverlayView';
import './ScriptBox.scss';
-import { DocData } from '../../fields/DocSymbols';
+import { DocumentIconContainer } from './nodes/DocumentIcon';
export interface ScriptBoxProps {
onSave: (text: string, onError: (error: string) => void) => void;
@@ -25,6 +26,7 @@ export interface ScriptBoxProps {
export class ScriptBox extends React.Component<ScriptBoxProps> {
@observable
private _scriptText: string;
+ overlayDisposer?: () => void;
constructor(props: ScriptBoxProps) {
super(props);
@@ -42,7 +44,6 @@ export class ScriptBox extends React.Component<ScriptBoxProps> {
console.log('ScriptBox: ' + error);
};
- overlayDisposer?: () => void;
onFocus = () => {
this.overlayDisposer?.();
this.overlayDisposer = OverlayView.Instance.addElement(<DocumentIconContainer />, { x: 0, y: 0 });
@@ -53,21 +54,35 @@ export class ScriptBox extends React.Component<ScriptBoxProps> {
};
render() {
- let onFocus: Opt<() => void> = undefined,
- onBlur: Opt<() => void> = undefined;
+ let onFocus: Opt<() => void>;
+ let onBlur: Opt<() => void>;
if (this.props.showDocumentIcons) {
onFocus = this.onFocus;
onBlur = this.onBlur;
}
- const params = <EditableView contents={''} display={'block'} maxHeight={72} height={35} fontSize={28} GetValue={() => ''} SetValue={(value: string) => (this.props.setParams?.(value.split(' ').filter(s => s !== ' ')) ? true : true)} />;
+ const params = (
+ <EditableView
+ contents=""
+ display="block"
+ maxHeight={72}
+ height={35}
+ fontSize={28}
+ GetValue={() => ''}
+ SetValue={(value: string) => {
+ this.props.setParams?.(value.split(' ').filter(s => s !== ' '));
+ return true;
+ }}
+ />
+ );
return (
<div className="scriptBox-outerDiv">
<div style={{ display: 'flex', flexDirection: 'column', height: '100%' }}>
- <textarea className="scriptBox-textarea" onChange={this.onChange} value={this._scriptText} onFocus={onFocus} onBlur={onBlur}></textarea>
+ <textarea className="scriptBox-textarea" onChange={this.onChange} value={this._scriptText} onFocus={onFocus} onBlur={onBlur} />
<div style={{ background: 'beige' }}>{params}</div>
</div>
<div className="scriptBox-toolbar">
<button
+ type="button"
onClick={e => {
this.props.onSave(this._scriptText, this.onError);
e.stopPropagation();
@@ -75,6 +90,7 @@ export class ScriptBox extends React.Component<ScriptBoxProps> {
Save
</button>
<button
+ type="button"
onClick={e => {
this.props.onCancel && this.props.onCancel();
e.stopPropagation();
@@ -85,11 +101,12 @@ export class ScriptBox extends React.Component<ScriptBoxProps> {
</div>
);
}
- //let l = docList(this.source[0].data).length; if (l) { let ind = this.target[0].index !== undefined ? (this.target[0].index+1) % l : 0; this.target[0].index = ind; this.target[0].proto = getProto(docList(this.source[0].data)[ind]);}
+ // let l = docList(this.source[0].data).length; if (l) { let ind = this.target[0].index !== undefined ? (this.target[0].index+1) % l : 0; this.target[0].index = ind; this.target[0].proto = getProto(docList(this.source[0].data)[ind]);}
+ // eslint-disable-next-line react/sort-comp
public static EditButtonScript(title: string, doc: Doc, fieldKey: string, clientX: number, clientY: number, contextParams?: { [name: string]: string }, defaultScript?: ScriptField) {
let overlayDisposer: () => void = emptyFunction;
const script = ScriptCast(doc[fieldKey]) || defaultScript;
- let originalText: string | undefined = undefined;
+ let originalText: string | undefined;
if (script) {
originalText = script.script.originalScript;
}
@@ -105,14 +122,14 @@ export class ScriptBox extends React.Component<ScriptBoxProps> {
if (!text) {
doc[DocData][fieldKey] = undefined;
} else {
- const script = CompileScript(text, {
+ const compScript = CompileScript(text, {
params: { this: Doc.name, ...contextParams },
typecheck: false,
editable: true,
transformer: DocumentIconContainer.getTransformer(),
});
- if (!script.compiled) {
- onError(script.errors.map(error => error.messageText).join('\n'));
+ if (!compScript.compiled) {
+ onError(compScript.errors.map(error => error.messageText).join('\n'));
return;
}
@@ -124,9 +141,9 @@ export class ScriptBox extends React.Component<ScriptBoxProps> {
div.style.display = 'inline-block';
div.style.transform = `translate(${clientX}px, ${clientY}px)`;
div.innerHTML = 'button';
- params.length && DragManager.StartButtonDrag([div], text, doc.title + '-instance', {}, params, (button: Doc) => {}, clientX, clientY);
+ params.length && DragManager.StartButtonDrag([div], text, doc.title + '-instance', {}, params, () => {}, clientX, clientY);
- doc[DocData][fieldKey] = new ScriptField(script);
+ doc[DocData][fieldKey] = new ScriptField(compScript);
overlayDisposer();
}
}}