import type { AccountWidgetDataChangedParams } from './accountWidget'; import { CalenderMode, NavigateFunction, NavigateFunctionOptions, TableMode, Timezone, ToastEventPayload } from './index.js'; import { DragControls } from 'framer-motion'; export declare enum AppEvent { OnClickTableAction = "on-click-table-action", OnRightClickTableAction = "on-right-click-table-action", OnToggleTableMode = "on-toggle-table-mode", OnChangeTableMode = "on-change-table-mode", OnChangeCalenderMode = "on-change-calender-mode", OnChangeTimezone = "on-change-timezone", OnNavigate = "on-navigate", OnStartDrag = "on-start-drag", OnChangeAppToolbar = "on-change-app-toolbar", OnToast = "on-toast", OnInvalidateQueries = "on-invalidate_queries", OnCloseApp = "on-close-app", OnOpenChildApp = "on-open-child-app", OnModifyRemotePayload = "on-modify-remote-payload", OnAccountDataChanged = "on-account-data-changed", OnPreloadApps = "on-preload-apps" } /** * Options for {@link AppEvent.OnOpenChildApp}. */ export type OpenChildAppOptions = NavigateFunctionOptions & { /** * How to open the child when the parent already has one for the same app: * - `new` always opens a fresh child window * - `reuse` reuses the existing child and updates its payload * `new` is the default when omitted. */ openMode?: 'new' | 'reuse'; }; /** * The app window an event targets. */ export type TargetApp = { appCode: string; serviceCode: string; sandboxMode?: boolean; payload?: object; }; /** * Map event names to their corresponding payload types. */ export type AppEventMap = { [AppEvent.OnClickTableAction]: (params: { /** * The app the event is targeting. */ targetApp: TargetApp; }, options?: NavigateFunctionOptions) => void; [AppEvent.OnRightClickTableAction]: (params: { /** * The app the event is targeting. */ targetApp: TargetApp; }, options?: NavigateFunctionOptions) => void; [AppEvent.OnToggleTableMode]: () => void; [AppEvent.OnChangeTableMode]: (tableMode: TableMode) => void; [AppEvent.OnChangeCalenderMode]: (calenderMode: CalenderMode) => void; [AppEvent.OnChangeTimezone]: (timezone: Timezone) => void; [AppEvent.OnNavigate]: NavigateFunction; [AppEvent.OnStartDrag]: (...args: Parameters) => void; [AppEvent.OnChangeAppToolbar]: (params: { windowId: string; toolbarIconUrl: string; }) => void; [AppEvent.OnModifyRemotePayload]: (params: { windowId: string; payload: object; }) => void; [AppEvent.OnToast]: (params: ToastEventPayload) => void; [AppEvent.OnInvalidateQueries]: () => void; [AppEvent.OnCloseApp]: (params: { windowId: string; appCode: string; serviceCode: string; payload?: object; }) => void; [AppEvent.OnOpenChildApp]: (params: { /** * The app window that triggers the open — the newly-opened child app is * registered as its child and closes automatically when it closes. */ sourceApp: { id: string; }; /** * The app to open as the child window. */ targetApp: TargetApp; }, options?: OpenChildAppOptions) => void; [AppEvent.OnAccountDataChanged]: (params: AccountWidgetDataChangedParams) => void; [AppEvent.OnPreloadApps]: (params: { appCodes: string[]; }) => void; };