diff --git a/src/deck-components/Modal.tsx b/src/deck-components/Modal.tsx index ea0ff5f..fb6ac44 100755 --- a/src/deck-components/Modal.tsx +++ b/src/deck-components/Modal.tsx @@ -1,9 +1,33 @@ import { FC, ReactNode } from 'react'; - import { findModuleChild } from '../webpack'; -// TODO: there is another argument, figure out what it does -export const showModal: (children: ReactNode, parent?: EventTarget) => void = findModuleChild((m) => { +// All of the popout options + strTitle are related. Proper usage is not yet known... +export interface ShowModalProps { + browserContext?: unknown; // This is another Deck Object that is yet to be found + bForcePopOut?: boolean; + bHideActionIcons?: boolean; + bHideMainWindowForPopouts?: boolean; + bNeverPopOut?: boolean; + fnOnClose?: () => void; // Seems to be the same as "closeModal" callback, but only when the modal is a popout. Will no longer work after "Update" invocation! + popupHeight?: number; + popupWidth?: number; + promiseRenderComplete?: Promise; // Invoked once the render is complete. Currently, it seems to be used as image loading success/error callback... + strTitle?: string; +} + +export interface ShowModalResult { + // This method will not invoke any of the variations of "closeModal" callbacks! + Close: () => void; + + // This method will replace the modal element completely and will not update the callback chains, + // meaning that "closeModal" and etc. will not automatically close the modal anymore (also "fnOnClose" + // will not be even called upon close anymore)! You have to manually call the "Close" method when, for example, + // the "closeModal" is invoked in the newly updated modal: + // { console.log("ABOUT TO CLOSE"); showModalRes.Close(); }} /> + Update: (modal: ReactNode) => void; +} + +export const showModal: (modal: ReactNode, parent?: EventTarget, props?: ShowModalProps) => Promise = findModuleChild((m) => { if (typeof m !== 'object') return undefined; for (let prop in m) { if (typeof m[prop] === 'function' && m[prop].toString().includes('bHideMainWindowForPopouts:!0')) { @@ -46,4 +70,4 @@ export const ModalRoot = findModuleChild((m) => { return m[prop]; } } -}) as FC; \ No newline at end of file +}) as FC;