From e62f51bacace3d91f388202135426445721097cc Mon Sep 17 00:00:00 2001 From: Nathan-SR <144961007+Nathan-SR@users.noreply.github.com> Date: Sun, 11 May 2025 16:52:17 -0400 Subject: menubutton component --- .../DocCreatorMenu/Menu/DocCreatorMenuButton.tsx | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx') diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx new file mode 100644 index 000000000..1d8139d40 --- /dev/null +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx @@ -0,0 +1,41 @@ +import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { ObservableReactComponent } from "../../../../ObservableReactComponent"; +import React from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { setupMoveUpEvents, returnFalse } from "../../../../../../ClientUtils"; +import { emptyFunction } from "../../../../../../Utils"; +import { undoable } from "../../../../../util/UndoManager"; +import { observer } from "mobx-react"; + +interface DocCreatorMenuButtonProps { + icon: IconProp; + function: () => any; + styles?: string; +} + +@observer +export class DocCreatorMenuButton extends ObservableReactComponent { + + setupButtonClick = (e: React.PointerEvent, func: (...args: any) => void) => { + setupMoveUpEvents( + this, + e, + returnFalse, + emptyFunction, + undoable(clickEv => { + clickEv.stopPropagation(); + clickEv.preventDefault(); + func(); + }, 'create docs') + ); + }; + + render() { + + return ( + + ); + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 312a07364ac8880e74e1b0a911d3e5b380886858 Mon Sep 17 00:00:00 2001 From: Nathan-SR <144961007+Nathan-SR@users.noreply.github.com> Date: Fri, 30 May 2025 04:07:22 -0400 Subject: linting --- .../DocCreatorMenu/Backend/TemplateManager.ts | 2 +- .../DocCreatorMenu/Backend/TemplateMenuAIUtils.ts | 6 +---- .../DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx | 31 +++++++--------------- .../DocCreatorMenu/Menu/ConditionalsTextarea.tsx | 2 +- .../DocCreatorMenu/Menu/DocCreatorMenuButton.tsx | 3 ++- .../DocCreatorMenu/Menu/TemplateEditingWindow.tsx | 21 +++++++-------- .../Menu/TemplateMenuFieldOptions.tsx | 14 +++++----- .../DocCreatorMenu/Menu/TemplatePreviewBox.tsx | 9 +++---- .../DocCreatorMenu/Menu/TemplatePreviewGrid.tsx | 15 +++++------ .../Menu/TemplateRenderPreviewWindow.tsx | 3 +-- .../nodes/DataVizBox/DocCreatorMenu/Template.ts | 9 ------- .../DocCreatorMenu/TemplateFieldTypes/DataField.ts | 3 +-- .../TemplateFieldTypes/DynamicField.ts | 9 ++----- .../TemplateFieldTypes/StaticContentField.ts | 1 - .../TemplateFieldTypes/TemplateField.ts | 3 +-- 15 files changed, 45 insertions(+), 86 deletions(-) (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx') diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateManager.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateManager.ts index 6fcca7e30..78235d000 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateManager.ts +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateManager.ts @@ -2,7 +2,7 @@ import { action, makeAutoObservable } from 'mobx'; import { Col } from '../DocCreatorMenu'; import { FieldSettings, TemplateField } from '../TemplateFieldTypes/TemplateField'; import { Template } from '../Template'; -import { Doc, NumListCast } from '../../../../../../fields/Doc'; +import { NumListCast } from '../../../../../../fields/Doc'; import { DataVizBox } from '../../DataVizBox'; import { TemplateFieldType } from '../TemplateBackend'; import { TemplateMenuAIUtils } from './TemplateMenuAIUtils'; diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateMenuAIUtils.ts b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateMenuAIUtils.ts index 9bc2bfce2..162b7a1b1 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateMenuAIUtils.ts +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Backend/TemplateMenuAIUtils.ts @@ -1,5 +1,3 @@ -import { action } from "mobx"; -import { Upload } from "openai/resources"; import { ClientUtils } from "../../../../../../ClientUtils"; import { Networking } from "../../../../../Network"; import { gptImageCall, gptAPICall, GPTCallType } from "../../../../../apis/gpt/GPT"; @@ -7,9 +5,6 @@ import { Col } from "../DocCreatorMenu"; import { TemplateFieldSize, TemplateFieldType } from "../TemplateBackend"; import { TemplateField, ViewType } from "../TemplateFieldTypes/TemplateField"; import { Template } from "../Template"; -import { Doc } from "../../../../../../fields/Doc"; -import { DrawingFillHandler } from "../../../../smartdraw/DrawingFillHandler"; -import { CollectionFreeFormView } from "../../../../collections/collectionFreeForm"; export class TemplateMenuAIUtils { @@ -30,6 +25,7 @@ export class TemplateMenuAIUtils { public static renderGPTImageCall = async (template: Template, col: Col, fieldNumber: number): Promise => { const generateAndLoadImage = async (id: number, prompt: string) => { const url = await this.generateGPTImage(prompt); + // eslint-disable-next-line var field: TemplateField = template.getFieldByID(id); field.setContent(url ?? '', ViewType.IMG); diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx index 9a84e69a9..ebfa3fc65 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/DocCreatorMenu.tsx @@ -1,44 +1,31 @@ -import { Colors } from '@dash/components'; + import { IconProp } from '@fortawesome/fontawesome-svg-core'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, computed, makeObservable, observable, runInAction } from 'mobx'; import { observer } from 'mobx-react'; -import { IDisposer } from 'mobx-utils'; import * as React from 'react'; -import ReactLoading from 'react-loading'; -import { ClientUtils, returnEmptyFilter, returnFalse, setupMoveUpEvents } from '../../../../../ClientUtils'; +import { returnFalse, setupMoveUpEvents } from '../../../../../ClientUtils'; import { emptyFunction } from '../../../../../Utils'; -import { Doc, NumListCast, StrListCast, returnEmptyDoclist } from '../../../../../fields/Doc'; +import { Doc, StrListCast } from '../../../../../fields/Doc'; import { Id } from '../../../../../fields/FieldSymbols'; -import { ImageCast, StrCast } from '../../../../../fields/Types'; -import { ImageField } from '../../../../../fields/URLField'; -import { Upload } from '../../../../../server/SharedMediaTypes'; -import { Networking } from '../../../../Network'; -import { GPTCallType, gptAPICall, gptImageCall } from '../../../../apis/gpt/GPT'; -import { Docs, DocumentOptions } from '../../../../documents/Documents'; +import { GPTCallType, gptAPICall } from '../../../../apis/gpt/GPT'; import { DragManager } from '../../../../util/DragManager'; import { SnappingManager } from '../../../../util/SnappingManager'; -import { Transform } from '../../../../util/Transform'; import { UndoManager, undoable } from '../../../../util/UndoManager'; import { ObservableReactComponent } from '../../../ObservableReactComponent'; -import { DefaultStyleProvider } from '../../../StyleProvider'; import { CollectionFreeFormView } from '../../../collections/collectionFreeForm/CollectionFreeFormView'; -import { DocumentView, DocumentViewInternal } from '../../DocumentView'; +import { DocumentView } from '../../DocumentView'; import { OpenWhere } from '../../OpenWhere'; import { DataVizBox } from '../DataVizBox'; import './DocCreatorMenu.scss'; -import { TemplateField, ViewType } from './TemplateFieldTypes/TemplateField'; +import { ViewType } from './TemplateFieldTypes/TemplateField'; import { Template } from './Template'; import { TemplateFieldSize, TemplateFieldType, TemplateLayouts } from './TemplateBackend'; -import { Conditional, TemplateManager } from './Backend/TemplateManager'; -import { DrawingFillHandler } from '../../../smartdraw/DrawingFillHandler'; -import { CgPathIntersect } from 'react-icons/cg'; -import { StaticContentField } from './TemplateFieldTypes/StaticContentField'; +import { TemplateManager } from './Backend/TemplateManager'; import { TemplateMenuAIUtils } from './Backend/TemplateMenuAIUtils' import { TemplatePreviewGrid } from './Menu/TemplatePreviewGrid'; import { FireflyStructureOptions, TemplateEditingWindow } from './Menu/TemplateEditingWindow'; import { DocCreatorMenuButton } from './Menu/DocCreatorMenuButton'; -import { ConditionalsTextArea } from './Menu/ConditionalsTextarea'; import { TemplatesRenderPreviewWindow } from './Menu/TemplateRenderPreviewWindow'; import { TemplateMenuFieldOptions } from './Menu/TemplateMenuFieldOptions'; @@ -500,7 +487,7 @@ export class DocCreatorMenu extends ObservableReactComponent }; generateVariations = async (onDoc: Doc, prompt: string, options: FireflyStructureOptions): Promise => { - const { numVariations, temperature, useStyleRef } = options; + // const { numVariations, temperature, useStyleRef } = options; this.variations = []; const mainCollection = this._dataViz?.DocumentView?.().containerViewPath?.().lastElement()?.ComponentView as CollectionFreeFormView; @@ -509,7 +496,7 @@ export class DocCreatorMenu extends ObservableReactComponent clone.x = 10000; clone.y = 10000; - await DrawingFillHandler.drawingToImage(clone, 100 - temperature, prompt, useStyleRef ? clone : undefined, this, numVariations) + // await DrawingFillHandler.drawingToImage(clone, 100 - temperature, prompt, useStyleRef ? clone : undefined, this, numVariations) return this.variations; } diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/ConditionalsTextarea.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/ConditionalsTextarea.tsx index 2ca0bde3f..89c2e44ff 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/ConditionalsTextarea.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/ConditionalsTextarea.tsx @@ -51,7 +51,7 @@ export class ConditionalsTextArea extends ObservableReactComponent { runInAction(() => { - this.props.conditional[this.props.property] = e.target.value as any; + this.props.conditional[this.props.property] = e.target.value as "=" | ">" | "<" | "contains"; }); this.updateInputWidth(); }} diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx index 1d8139d40..48d2de4de 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/DocCreatorMenuButton.tsx @@ -9,13 +9,14 @@ import { observer } from "mobx-react"; interface DocCreatorMenuButtonProps { icon: IconProp; + // eslint-disable-next-line function: () => any; styles?: string; } @observer export class DocCreatorMenuButton extends ObservableReactComponent { - + // eslint-disable-next-line setupButtonClick = (e: React.PointerEvent, func: (...args: any) => void) => { setupMoveUpEvents( this, diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx index 3eaed79b6..b50fff9e0 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx @@ -1,7 +1,6 @@ -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { action, makeAutoObservable, makeObservable, observable, reaction, runInAction } from "mobx"; +import { action, makeObservable, observable, reaction, runInAction } from "mobx"; import React from "react"; -import { returnFalse, returnEmptyFilter, returnTrue } from "../../../../../../ClientUtils"; +import { returnFalse, returnEmptyFilter } from "../../../../../../ClientUtils"; import { emptyFunction } from "../../../../../../Utils"; import { Doc, returnEmptyDoclist } from "../../../../../../fields/Doc"; import { DefaultStyleProvider } from "../../../../StyleProvider"; @@ -11,14 +10,10 @@ import { TemplatePreviewGrid } from "./TemplatePreviewGrid"; import { observer } from "mobx-react"; import { Transform } from "../../../../../util/Transform"; import { Template } from "../Template"; -import { TemplateMenuAIUtils } from "../Backend/TemplateMenuAIUtils"; import { ObservableReactComponent } from "../../../../ObservableReactComponent"; import { IDisposer } from "mobx-utils"; -import { ImageField } from "../../../../../../fields/URLField"; import { DocCreatorMenuButton } from "./DocCreatorMenuButton"; -import { TbHistory } from "react-icons/tb"; import { IconProp } from "@fortawesome/fontawesome-svg-core"; -import { docStyle } from "pdfjs-dist/types/web/ui_utils"; export type FireflyStructureOptions = { numVariations: number; @@ -56,7 +51,7 @@ export class FireflyVariationsTab extends ObservableReactComponent { + this._variationURLs.forEach(() => { const newTemplate: Template = this._props.template.clone(true); this._props.menu._variations.push(newTemplate); }); @@ -72,7 +67,9 @@ export class FireflyVariationsTab extends ObservableReactComponent any] = ['gear', () => {}]; + // eslint-disable-next-line private previewBoxRightButtonOpts: [IconProp, () => any] = ['gear', () => this.forceUpdate()]; render() { @@ -93,7 +90,7 @@ export class FireflyVariationsTab extends ObservableReactComponent this.prompt = e.target.value} + onChange={e => { this.prompt = e.target.value }} onInput={() => { if (this.promptInput !== null) { this.promptInput.style.height = 'auto'; @@ -108,7 +105,7 @@ export class FireflyVariationsTab extends ObservableReactComponent