diff options
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/DocServer.ts | 11 | ||||
| -rw-r--r-- | src/client/views/GestureOverlay.tsx | 2 | ||||
| -rw-r--r-- | src/client/views/PropertiesView.tsx | 8 | ||||
| -rw-r--r-- | src/client/views/collections/CollectionStackingView.scss | 2 | ||||
| -rw-r--r-- | src/client/views/collections/CollectionStackingView.tsx | 6 | ||||
| -rw-r--r-- | src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx | 12 | ||||
| -rw-r--r-- | src/client/views/nodes/DocumentView.tsx | 7 | ||||
| -rw-r--r-- | src/client/views/nodes/ImageBox.tsx | 7 | ||||
| -rw-r--r-- | src/client/views/nodes/imageEditor/ImageEditor.tsx | 4 | ||||
| -rw-r--r-- | src/client/views/smartdraw/DrawingFillHandler.tsx | 2 | ||||
| -rw-r--r-- | src/client/views/smartdraw/SmartDrawHandler.tsx | 2 |
11 files changed, 30 insertions, 33 deletions
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index c644308b7..e3c4609c0 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -277,11 +277,11 @@ export namespace DocServer { const fetchDocPromises: Map<string, Promise<Opt<Doc>>> = new Map(); // { p: Promise<Doc>; id: string }[] = []; // promises to fetch the value for a requested Doc // Determine which requested documents need to be fetched - // eslint-disable-next-line no-restricted-syntax for (const id of ids.filter(filterid => filterid)) { if (_cache[id] === undefined) { // EMPTY CACHE - make promise that we resolve after all batch-requested Docs have been fetched and deserialized and we know we have this Doc - const fetchPromise = new Promise<Opt<Doc>>(res => + // eslint-disable-next-line no-loop-func + _cache[id] = new Promise<Opt<Doc>>(res => allCachesFilledPromise.then(() => { // if all Docs have been cached, then we can be sure the fetched Doc has been found and cached. So return it to anyone who had been awaiting it. const cache = _cache[id]; @@ -289,8 +289,7 @@ export namespace DocServer { res(cache instanceof Doc ? cache : undefined); }) ); - // eslint-disable-next-line no-loop-func - fetchDocPromises.set(id, (_cache[id] = fetchPromise)); + fetchDocPromises.set(id, _cache[id]); uncachedRequestedIds.push(id); // add to list of Doc requests from server } // else CACHED => do nothing, Doc or promise of Doc is already in cache @@ -307,11 +306,11 @@ export namespace DocServer { let processed = 0; console.log('Retrieved ' + serializedFields.length + ' fields'); // After the serialized Docs have been received, deserialize them into objects. - // eslint-disable-next-line no-restricted-syntax for (const field of serializedFields) { - // eslint-disable-next-line no-await-in-loop ++processed % 150 === 0 && + // eslint-disable-next-line no-await-in-loop (await new Promise<number>( + // eslint-disable-next-line no-loop-func res => setTimeout(action(() => res(FieldLoader.ServerLoadStatus.retrieved = processed))) // prettier-ignore )); // force loading to yield to splash screen rendering to update progress diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx index 8488c5293..113250a99 100644 --- a/src/client/views/GestureOverlay.tsx +++ b/src/client/views/GestureOverlay.tsx @@ -50,9 +50,7 @@ interface GestureOverlayProps { * drew or perform the gesture's action */ export class GestureOverlay extends ObservableReactComponent<React.PropsWithChildren<GestureOverlayProps>> { - // eslint-disable-next-line no-use-before-define static Instance: GestureOverlay; - // eslint-disable-next-line no-use-before-define static Instances: GestureOverlay[] = []; @observable public SavedColor?: string = undefined; diff --git a/src/client/views/PropertiesView.tsx b/src/client/views/PropertiesView.tsx index 06463b2a2..f7c4b464c 100644 --- a/src/client/views/PropertiesView.tsx +++ b/src/client/views/PropertiesView.tsx @@ -58,7 +58,6 @@ interface PropertiesViewProps { export class PropertiesView extends ObservableReactComponent<PropertiesViewProps> { private _widthUndo?: UndoManager.Batch; - // eslint-disable-next-line no-use-before-define public static Instance: PropertiesView; constructor(props: PropertiesViewProps) { super(props); @@ -1187,6 +1186,7 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps setFinalNumber = () => { this._sliderKey = ''; this._sliderBatch?.end(); + this._sliderBatch = undefined; }; getNumber = (label: string, unit: string, min: number, max: number, number: number, setNumber: (val: number) => void, autorange?: number, autorangeMinVal?: number) => { @@ -1198,7 +1198,6 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps key={key} onPointerDown={() => { this._sliderKey = key; - this._sliderBatch = UndoManager.StartBatch('slider ' + label); }} multithumb={false} color={this.color} @@ -1211,7 +1210,10 @@ export class PropertiesView extends ObservableReactComponent<PropertiesViewProps unit={unit} decimals={1} setFinalNumber={this.setFinalNumber} - setNumber={setNumber} + setNumber={e => { + if (!this._sliderBatch) this._sliderBatch = UndoManager.StartBatch('slider ' + label); + setNumber(e); + }} fillWidth /> </div> diff --git a/src/client/views/collections/CollectionStackingView.scss b/src/client/views/collections/CollectionStackingView.scss index 2cf361847..ec81eb305 100644 --- a/src/client/views/collections/CollectionStackingView.scss +++ b/src/client/views/collections/CollectionStackingView.scss @@ -18,7 +18,7 @@ .collectionStackingView-columnDragger { width: 28px; height: 28px; - position: relative; + position: absolute; margin-left: -5px; z-index: 10; > svg { diff --git a/src/client/views/collections/CollectionStackingView.tsx b/src/client/views/collections/CollectionStackingView.tsx index fbdd23315..7ff90ee53 100644 --- a/src/client/views/collections/CollectionStackingView.tsx +++ b/src/client/views/collections/CollectionStackingView.tsx @@ -417,8 +417,8 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection className="collectionStackingView-columnDragger" onPointerDown={this.columnDividerDown} ref={this._draggerRef} - style={{ cursor: this._cursor, color: SettingsManager.userColor, left: `${NumCast(this.Document._layout_columnWidth) + this.xMargin}px` }}> - <FontAwesomeIcon icon="arrows-alt-h" /> + style={{ cursor: this._cursor, color: SettingsManager.userColor, left: `${NumCast(this.Document._layout_columnWidth)}px` }}> + <FontAwesomeIcon icon="arrows-alt-h" size="sm" /> </div> ); } @@ -563,7 +563,7 @@ export class CollectionStackingView extends CollectionSubView<Partial<collection const rows = () => (!this.isStackingView ? 1 : Math.max(1, Math.min(docList.length, Math.floor((this._props.PanelWidth() - 2 * this.xMargin) / (this.columnWidth + this.gridGap))))); return ( <div key={(heading?.heading ?? '') + 'head'}> - {this._props.isContentActive() && !this.isStackingView && !this.chromeHidden ? this.columnDragger : null} + {!this.isStackingView && !this.chromeHidden ? this.columnDragger : null} <div style={{ position: 'relative' }}> <CollectionMasonryViewFieldRow showHandle={first} diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index 76b9fd8db..3e6aa777f 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -107,7 +107,6 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection /** * The Freeformview below the cursor at the start of a gesture (that receives the pointerDown event). Used by GestureOverlay to determine the doc a gesture should apply to. */ - // eslint-disable-next-line no-use-before-define public static DownFfview: CollectionFreeFormView | undefined; // the first DocView that receives a pointerdown event. used by GestureOverlay to determine the doc a gesture should apply to. private _clusters = new CollectionFreeFormClusters(this); @@ -2204,10 +2203,6 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection @observable private _regenerateLoading = false; @observable private _regenInput = ''; - @observable private _canInteract = true; - @observable private _drawingFillInput = ''; - @observable private _regenLoading = false; - @observable private _drawingFillLoading = false; @observable private _fireflyRefStrength = 0; componentAIView = () => { @@ -2220,7 +2215,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection aria-label="Edit instructions input" type="text" value={this._regenInput || StrCast(this.Document.title)} - onChange={action(e => this._canInteract && (this._regenInput = e.target.value))} + onChange={action(e => (this._regenInput = e.target.value))} placeholder={this._regenInput || StrCast(this.Document.title)} /> <div className="imageBox-aiView-regenerate-createBtn"> @@ -2253,10 +2248,7 @@ export class CollectionFreeFormView extends CollectionSubView<Partial<collection max={100} number={this._fireflyRefStrength} size={Size.XXSMALL} - setNumber={undoable( - action(val => this._canInteract && (this._fireflyRefStrength = val as number)), - `${this.Document.title} button set from list` - )} + setNumber={undoable(action(val => (this._fireflyRefStrength = val as number)),`${this.Document.title} button set from list` )} fillWidth /> </div> diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index bd71115db..90edab3a7 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -743,6 +743,12 @@ export class DocumentViewInternal extends DocComponent<DocumentViewProps & Field widgetOverlayFunc = () => (this.widgetDecorations ? this.widgetOverlay : null); viewingAiEditor = () => (this._props.showAIEditor && this._componentView?.componentAIView?.() !== undefined ? this.aiEditor : null); @observable _contentsRef: DocumentContentsView | undefined = undefined; + screenToContentsXf = () => + this.viewingAiEditor() + ? this.layoutDoc.layout_reflowHorizontal + ? this._props.ScreenToLocalTransform().scale(Math.min(this.aiContentsWidth() / this._props.PanelWidth(), this.aiContentsHeight() / this._props.PanelHeight())) + : this._props.ScreenToLocalTransform().translate((this._props.PanelWidth() - this.aiContentsWidth()) / 2, 0) + : this._props.ScreenToLocalTransform(); @computed get viewBoxContents() { TraceMobx(); const isInk = this.layoutDoc._layout_isSvg && !this._props.LayoutTemplateString; @@ -762,6 +768,7 @@ export class DocumentViewInternal extends DocComponent<DocumentViewProps & Field layoutFieldKey={StrCast(this.Document.layout_fieldKey, 'layout')} pointerEvents={this.contentPointerEvents} setContentViewBox={this.setContentView} + ScreenToLocalTransform={this.screenToContentsXf} childFilters={this.childFilters} PanelWidth={this.viewingAiEditor() ? this.aiContentsWidth : this._props.PanelWidth} PanelHeight={this.viewingAiEditor() ? this.aiContentsHeight : this.panelHeight} diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index fb2346bd1..617a09ed5 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -99,7 +99,6 @@ export class ImageBox extends ViewBoxAnnotatableComponent<FieldViewProps>() { // variables for AI Image Editor @observable private _regenInput = ''; - @observable private _canInteract = true; @observable private _regenerateLoading = false; // Add these observable properties to the ImageBox class @@ -716,7 +715,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent<FieldViewProps>() { @computed get nativeSize() { TraceMobx(); - if (this.paths.length && this.paths[0].includes(DefaultPath)) return { nativeWidth: NumCast(this.layoutDoc._width), nativeHeight: NumCast(this.layoutDoc._height), nativeOrientation: 0 }; + if (this.paths[0]?.includes(DefaultPath) && this.layoutDoc._height) return { nativeWidth: NumCast(this.layoutDoc._width), nativeHeight: NumCast(this.layoutDoc._height), nativeOrientation: 0 }; const { nativeWidth, nativeHeight } = this.imgNativeSize; const nativeOrientation = NumCast(this.dataDoc[this.fieldKey + '_nativeOrientation'], 1); return { nativeWidth, nativeHeight, nativeOrientation }; @@ -902,7 +901,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent<FieldViewProps>() { aria-label="Edit instructions input" type="text" value={this._regenInput || StrCast(this.Document.title)} - onChange={action(e => this._canInteract && (this._regenInput = e.target.value))} + onChange={action(e => (this._regenInput = e.target.value))} placeholder={this._regenInput || StrCast(this.Document.title)} /> <div className="imageBox-aiView-regenerate-createBtn"> @@ -936,7 +935,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent<FieldViewProps>() { number={this._fireflyRefStrength} size={Size.XXSMALL} setNumber={undoable( - action(val => this._canInteract && (this._fireflyRefStrength = val as number)), + action(val => (this._fireflyRefStrength = val as number)), `${this.Document.title} button set from list` )} fillWidth diff --git a/src/client/views/nodes/imageEditor/ImageEditor.tsx b/src/client/views/nodes/imageEditor/ImageEditor.tsx index 198b8e713..abe235ad5 100644 --- a/src/client/views/nodes/imageEditor/ImageEditor.tsx +++ b/src/client/views/nodes/imageEditor/ImageEditor.tsx @@ -286,8 +286,8 @@ const ImageEditor = ({ imageEditorOpen, imageEditorSource, imageRootDoc, addDoc const maskBlob = await ImageUtility.canvasToBlob(canvasMask); const imgBlob = await ImageUtility.canvasToBlob(canvasOriginalImg); const res = await ImageUtility.getEdit(imgBlob, maskBlob, input || 'Fill in the image in the same style', 2); - if ((res as any).status == 'error') { - alert((res as any).message); + if (res.status == 'error') { + alert(res.message); } // create first image diff --git a/src/client/views/smartdraw/DrawingFillHandler.tsx b/src/client/views/smartdraw/DrawingFillHandler.tsx index f773957e7..e9e3335f9 100644 --- a/src/client/views/smartdraw/DrawingFillHandler.tsx +++ b/src/client/views/smartdraw/DrawingFillHandler.tsx @@ -62,7 +62,7 @@ export class DrawingFillHandler { ai_prompt: newPrompt, tags: new List<string>(['@ai']), title: newPrompt, - _data_usePath: 'alternate:hover', + //_data_usePath: 'alternate:hover', data_alternates: new List<Doc>([drawing]), _width: 500, data_nativeWidth: info.nativeWidth, diff --git a/src/client/views/smartdraw/SmartDrawHandler.tsx b/src/client/views/smartdraw/SmartDrawHandler.tsx index b7ff5fff7..a017dd7eb 100644 --- a/src/client/views/smartdraw/SmartDrawHandler.tsx +++ b/src/client/views/smartdraw/SmartDrawHandler.tsx @@ -450,7 +450,7 @@ export class SmartDrawHandler extends ObservableReactComponent<object> { }, }} checked={this._generateDrawing} - onChange={() => this._canInteract && (this._generateDrawing = !this._generateDrawing)} + onChange={action(() => this._canInteract && (this._generateDrawing = !this._generateDrawing))} /> </div> <div className="image-checkbox"> |
