aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/smartdraw
diff options
context:
space:
mode:
authoreleanor-park <eleanor_park@brown.edu>2024-08-28 22:03:12 -0400
committereleanor-park <eleanor_park@brown.edu>2024-08-28 22:03:12 -0400
commitf7cdcb654e83d7fdbfd0b1cfc80c485bb9554f08 (patch)
tree4c01c7190246073f3da70278bf0c3be836ce2377 /src/client/views/smartdraw
parentf5b04341893da68e50b0cbc72d77795209bfee3e (diff)
final changes, ready for pull request
Diffstat (limited to 'src/client/views/smartdraw')
-rw-r--r--src/client/views/smartdraw/AnnotationPalette.tsx14
-rw-r--r--src/client/views/smartdraw/SmartDrawHandler.tsx15
2 files changed, 17 insertions, 12 deletions
diff --git a/src/client/views/smartdraw/AnnotationPalette.tsx b/src/client/views/smartdraw/AnnotationPalette.tsx
index b57907152..c296138a8 100644
--- a/src/client/views/smartdraw/AnnotationPalette.tsx
+++ b/src/client/views/smartdraw/AnnotationPalette.tsx
@@ -1,4 +1,3 @@
-import { faLaptopHouse } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { Slider, Switch } from '@mui/material';
import { Button } from 'browndash-components';
@@ -16,9 +15,8 @@ import { Docs } from '../../documents/Documents';
import { makeUserTemplateImage } from '../../util/DropConverter';
import { SettingsManager } from '../../util/SettingsManager';
import { Transform } from '../../util/Transform';
-import { undoable, undoBatch } from '../../util/UndoManager';
-import { CollectionFreeFormView, MarqueeOptionsMenu, MarqueeView } from '../collections/collectionFreeForm';
-import { ActiveArrowEnd, ActiveArrowStart, ActiveDash, ActiveFillColor, ActiveInkBezierApprox, ActiveInkColor, ActiveIsInkMask, DocumentView, DocumentViewInternal } from '../nodes/DocumentView';
+import { undoBatch } from '../../util/UndoManager';
+import { DocumentView, DocumentViewInternal } from '../nodes/DocumentView';
import { FieldView } from '../nodes/FieldView';
import { ObservableReactComponent } from '../ObservableReactComponent';
import { DefaultStyleProvider } from '../StyleProvider';
@@ -26,7 +24,6 @@ import './AnnotationPalette.scss';
import { DrawingOptions, SmartDrawHandler } from './SmartDrawHandler';
import { DocumentType } from '../../documents/DocumentTypes';
import { ImageField } from '../../../fields/URLField';
-import { CollectionCarousel3DView } from '../collections/CollectionCarousel3DView';
import { Copy } from '../../../fields/FieldSymbols';
interface AnnotationPaletteProps {
@@ -45,7 +42,7 @@ export class AnnotationPalette extends ObservableReactComponent<AnnotationPalett
@observable private _opts: DrawingOptions = { text: '', complexity: 5, size: 200, autoColor: true, x: 0, y: 0 };
private _gptRes: string[] = [];
- constructor(props: any) {
+ constructor(props: AnnotationPaletteProps) {
super(props);
makeObservable(this);
}
@@ -140,7 +137,7 @@ export class AnnotationPalette extends ObservableReactComponent<AnnotationPalett
generateDrawings = action(async () => {
this._isLoading = true;
this._props.Document[DocData].data = undefined;
- for (var i = 0; i < 3; i++) {
+ for (let i = 0; i < 3; i++) {
try {
SmartDrawHandler.Instance.AddDrawing = this.addDrawing;
this._canInteract = false;
@@ -150,9 +147,10 @@ export class AnnotationPalette extends ObservableReactComponent<AnnotationPalett
await SmartDrawHandler.Instance.drawWithGPT({ X: 0, Y: 0 }, this._userInput, this._opts.complexity, this._opts.size, this._opts.autoColor);
}
} catch (e) {
- console.log('Error generating drawing');
+ console.log('Error generating drawing', e);
}
}
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
this._opts.text !== '' ? (this._opts.text = `${this._opts.text} ~~~ ${this._userInput}`) : (this._opts.text = this._userInput);
this._userInput = '';
this._isLoading = false;
diff --git a/src/client/views/smartdraw/SmartDrawHandler.tsx b/src/client/views/smartdraw/SmartDrawHandler.tsx
index 4ec787e07..368970f75 100644
--- a/src/client/views/smartdraw/SmartDrawHandler.tsx
+++ b/src/client/views/smartdraw/SmartDrawHandler.tsx
@@ -10,7 +10,7 @@ import { AiOutlineSend } from 'react-icons/ai';
import { gptAPICall, GPTCallType, gptDrawingColor } from '../../apis/gpt/GPT';
import { InkData, InkField, InkTool } from '../../../fields/InkField';
import { SVGToBezier } from '../../util/bezierFit';
-const { parse } = require('svgson');
+import { INode, parse } from 'svgson';
import { Slider, Switch } from '@mui/material';
import { Doc, DocListCast } from '../../../fields/Doc';
import { DocData } from '../../../fields/DocSymbols';
@@ -35,6 +35,7 @@ export interface DrawingOptions {
}
@observer
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export class SmartDrawHandler extends ObservableReactComponent<{}> {
static Instance: SmartDrawHandler;
@@ -59,7 +60,7 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
private _errorOccurredOnce = false;
public RemoveDrawing: (doc?: Doc) => void = unimplementedFunction;
- public CreateDrawingDoc: (strokeList: [InkData, string, string][], opts: DrawingOptions, gptRes: string, containerDoc?: Doc) => Doc | undefined = (strokeList: [InkData, string, string][], opts: DrawingOptions, gptRes: string) => {
+ public CreateDrawingDoc: (strokeList: [InkData, string, string][], opts: DrawingOptions, gptRes: string, containerDoc?: Doc) => Doc | undefined = (strokeList: [InkData, string, string][], opts: DrawingOptions) => {
const drawing: Doc[] = [];
strokeList.forEach((stroke: [InkData, string, string]) => {
const bounds = InkField.getBounds(stroke[0]);
@@ -89,6 +90,7 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
};
public AddDrawing: (doc: Doc, opts: DrawingOptions, gptRes: string) => void = unimplementedFunction;
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
constructor(props: any) {
super(props);
makeObservable(this);
@@ -223,6 +225,7 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
console.log(res);
const strokeData = await this.parseSvg(res, startPt, false, autoColor);
const drawingDoc = strokeData && this.CreateDrawingDoc(strokeData?.data, strokeData?.lastInput, strokeData?.lastRes);
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
drawingDoc && this.AddDrawing(drawingDoc, this._lastInput, res);
this._errorOccurredOnce = false;
@@ -253,8 +256,10 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
}
console.log(res);
const strokeData = await this.parseSvg(res, { X: this._lastInput.x, Y: this._lastInput.y }, true, lastInput?.autoColor || this._autoColor);
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
this.RemoveDrawing !== unimplementedFunction && this.RemoveDrawing(this._selectedDoc);
const drawingDoc = strokeData && this.CreateDrawingDoc(strokeData?.data, strokeData?.lastInput, strokeData?.lastRes);
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
drawingDoc && this.AddDrawing(drawingDoc, this._lastInput, res);
return strokeData;
} catch (err) {
@@ -271,8 +276,9 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
if (svg) {
this._lastResponse = svg[0];
const svgObject = await parse(svg[0]);
- const svgStrokes: any = svgObject.children;
+ const svgStrokes: INode[] = svgObject.children;
const strokeData: [InkData, string, string][] = [];
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
svgStrokes.forEach((child: any) => {
const convertedBezier: InkData = SVGToBezier(child.name, child.attributes);
strokeData.push([
@@ -318,7 +324,7 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
console.log(colorResponse);
this.colorStrokes(colorResponse, drawing);
} catch (error) {
- console.log('GPT call failed');
+ console.log('GPT call failed', error);
}
};
@@ -335,6 +341,7 @@ export class SmartDrawHandler extends ObservableReactComponent<{}> {
strokes[index][DocData].color = strokeAndFill[0];
const inkStroke = DocumentView.getDocumentView(strokes[index])?.ComponentView as InkingStroke;
const { inkData } = inkStroke.inkScaledData();
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
InkingStroke.IsClosed(inkData) ? (strokes[index][DocData].fillColor = strokeAndFill[1]) : (strokes[index][DocData].fillColor = undefined);
}
});