aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/scrapbook
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/scrapbook')
-rw-r--r--src/client/views/nodes/scrapbook/ScrapbookBox.tsx66
1 files changed, 61 insertions, 5 deletions
diff --git a/src/client/views/nodes/scrapbook/ScrapbookBox.tsx b/src/client/views/nodes/scrapbook/ScrapbookBox.tsx
index ad3bfa7ad..9ffc13e6e 100644
--- a/src/client/views/nodes/scrapbook/ScrapbookBox.tsx
+++ b/src/client/views/nodes/scrapbook/ScrapbookBox.tsx
@@ -23,6 +23,8 @@ import { IReactionDisposer } from 'mobx';
import { observer } from 'mobx-react';
import { ImageField } from '../../../../fields/URLField';
import { runInAction } from 'mobx';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faRedoAlt } from '@fortawesome/free-solid-svg-icons';
enum ScrapbookPresetType {
Classic = 'Classic',
@@ -429,10 +431,12 @@ export class ScrapbookBox extends ViewBoxAnnotatableComponent<FieldViewProps>()
}
- async generateAiImageCorrect() {
+ async generateAiImageCorrect(prompt? : string) {
this.loading = true;
-
- const prompt = 'A serene mountain landscape at sunrise, ultra-wide, pastel sky, abstract, scrapbook background';
+
+ if(!prompt){
+ prompt = 'A serene mountain landscape at sunrise, ultra-wide, pastel sky, abstract, scrapbook background';
+ }
const dimensions = FireflyImageDimensions.Square;
SmartDrawHandler.CreateWithFirefly(prompt, dimensions)
@@ -538,8 +542,31 @@ export class ScrapbookBox extends ViewBoxAnnotatableComponent<FieldViewProps>()
return false;
};
+
render() {
+ /*const internalTags = DocListCast(this.dataDoc[this.fieldKey])
+ .flatMap(ph => StrListCast(ph.$tags_chat))
+ .join(' ');*/
+ const slots = DocListCast(this.dataDoc[this.fieldKey]);
+
+ // 2) recursive unwrap:
+ const unwrap = (items: Doc[]): Doc[] =>
+ items.flatMap(d =>
+ d.$type === DocumentType.COL
+ ? unwrap(DocListCast(d[Doc.LayoutDataKey(d)]))
+ : [d]
+ );
+
+ // 3) produce a flat list of every doc, unwrapping any number of nested COLs
+ const allDocs: Doc[] = unwrap(slots);
+ const internalTags = ''
+
+ const regenPrompt = internalTags
+ ? `Create a new background using these tags: ${internalTags}`
+ : 'A serene mountain landscape at sunrise, ultra-wide, pastel sky, abstract, scrapbook background';
+
+
return (
<div style={{ background: 'beige', width: '100%', height: '100%' }}>
@@ -564,8 +591,37 @@ export class ScrapbookBox extends ViewBoxAnnotatableComponent<FieldViewProps>()
{...this._props}
Document={this.imgDoc}
fieldKey="data"
- />
- )} <CollectionView
+ />)}
+
+ {this._props.isContentActive() && (
+ <div
+ className="scrapbookBox-ui"
+ style={{
+ position: 'absolute',
+ top: 8,
+ right: 8,
+ zIndex: 20,
+ }}
+ onPointerDown={e => e.stopPropagation()}
+ >
+ <button
+ type="button"
+ title="Regenerate Background"
+ onClick={() => this.generateAiImageCorrect(regenPrompt)}
+ style={{
+ background: 'white',
+ border: '1px solid #ccc',
+ borderRadius: 4,
+ padding: '4px 8px',
+ cursor: 'pointer',
+ }}
+ >
+ <FontAwesomeIcon icon={faRedoAlt} /> Regenerate
+ </button>
+ </div>
+ )}
+
+ <CollectionView
{...this._props} //
setContentViewBox={emptyFunction}
rejectDrop={this.rejectDrop}