aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/LightboxView.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/LightboxView.tsx')
-rw-r--r--src/client/views/LightboxView.tsx33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/client/views/LightboxView.tsx b/src/client/views/LightboxView.tsx
index 12d899388..269f4fa83 100644
--- a/src/client/views/LightboxView.tsx
+++ b/src/client/views/LightboxView.tsx
@@ -19,14 +19,16 @@ import { GestureOverlay } from './GestureOverlay';
import './LightboxView.scss';
import { ObservableReactComponent } from './ObservableReactComponent';
import { DefaultStyleProvider, wavyBorderPath } from './StyleProvider';
-import { CollectionDockingView } from './collections/CollectionDockingView';
import { DocumentView } from './nodes/DocumentView';
import { OpenWhere, OpenWhereMod } from './nodes/OpenWhere';
+import { ScriptingGlobals } from '../util/ScriptingGlobals';
+import { OverlayView } from './OverlayView';
interface LightboxViewProps {
PanelWidth: number;
PanelHeight: number;
maxBorder: number[];
+ addSplit: (document: Doc, pullSide: OpenWhereMod, stack?: any, panelName?: string | undefined, keyValue?: boolean | undefined) => boolean;
}
const savedKeys = ['freeform_panX', 'freeform_panY', 'freeform_scale', 'layout_scrollTop', 'layout_fieldKey'];
@@ -39,7 +41,7 @@ export class LightboxView extends ObservableReactComponent<LightboxViewProps> {
* @returns true if a DocumentView is descendant of the lightbox view
*/
public static Contains(view?:DocumentView) { return view && LightboxView.Instance?._docView && (view.containerViewPath?.() ?? []).concat(view).includes(LightboxView.Instance?._docView); } // prettier-ignore
- public static get LightboxDoc() { return LightboxView.Instance?._doc; } // prettier-ignore
+ public static LightboxDoc = () => LightboxView.Instance?._doc;
// eslint-disable-next-line no-use-before-define
static Instance: LightboxView;
private _path: {
@@ -65,10 +67,20 @@ export class LightboxView extends ObservableReactComponent<LightboxViewProps> {
super(props);
makeObservable(this);
LightboxView.Instance = this;
+ DocumentView._setLightboxDoc = this.SetLightboxDoc;
+ DocumentView._lightboxContains = LightboxView.Contains;
+ DocumentView._lightboxDoc = LightboxView.LightboxDoc;
}
-
+ /**
+ * Sets the root Doc to render in the lightbox view.
+ * @param doc
+ * @param target a Doc within 'doc' to focus on (useful for freeform collections)
+ * @param future a list of Docs to step through with the arrow buttons of the lightbox
+ * @param layoutTemplate a template to apply to 'doc' to render it.
+ * @returns success flag which is currently always true
+ */
@action
- public SetLightboxDoc(doc: Opt<Doc>, target?: Doc, future?: Doc[], layoutTemplate?: Doc | string) {
+ public SetLightboxDoc = (doc: Opt<Doc>, target?: Doc, future?: Doc[], layoutTemplate?: Doc | string) => {
const lightDoc = this._doc;
lightDoc &&
lightDoc !== doc &&
@@ -110,7 +122,7 @@ export class LightboxView extends ObservableReactComponent<LightboxViewProps> {
this._docTarget = target ?? doc;
return true;
- }
+ };
public AddDocTab = (docs: Doc | Doc[], location: OpenWhere, layoutTemplate?: Doc | string) => {
const doc = toList(docs).lastElement();
@@ -183,7 +195,7 @@ export class LightboxView extends ObservableReactComponent<LightboxViewProps> {
const lightDoc = this._docTarget ?? this._doc;
if (lightDoc) {
Doc.RemoveDocFromList(Doc.MyRecentlyClosed, 'data', lightDoc);
- CollectionDockingView.AddSplit(lightDoc, OpenWhereMod.none);
+ this._props.addSplit(lightDoc, OpenWhereMod.none);
this.SetLightboxDoc(undefined);
}
};
@@ -243,7 +255,9 @@ export class LightboxView extends ObservableReactComponent<LightboxViewProps> {
/>
</div>
);
- return !this._doc ? null : (
+ return !this._doc ? (
+ <OverlayView />
+ ) : (
<div
className="lightboxView-frame"
style={{ background: SnappingManager.userBackgroundColor }}
@@ -324,3 +338,8 @@ export class LightboxTourBtn extends React.Component<LightboxTourBtnProps> {
return this.props.navBtn('50%', 0, 0, 'chevron-down', this.props.lightboxDoc(), this.props.stepInto, '');
}
}
+
+// eslint-disable-next-line prefer-arrow-callback
+ScriptingGlobals.add(function deiconifyViewToLightbox(documentView: DocumentView) {
+ LightboxView.Instance.AddDocTab(documentView.Document, OpenWhere.lightbox, 'layout'); // , 0);
+});