UNPKG

@shopify/app-bridge

Version:

**Shopify is doubling our engineering staff in 2021! [Join our team and work on libraries like this one.](https://smrtr.io/5GGrc)**

192 lines (191 loc) 3.99 kB
import { ClientApplication } from '../client/types'; import { ActionSet } from './helper'; import { ErrorAction } from './Error'; /** * Various action groups. * @public */ export declare enum Group { AuthCode = "AuthCode", Button = "Button", ButtonGroup = "ButtonGroup", Cart = "Cart", Client = "Client", ContextualSaveBar = "ContextualSaveBar", Error = "Error", Features = "Features", FeedbackModal = "FeedbackModal", Fullscreen = "Fullscreen", LeaveConfirmation = "LeaveConfirmation", Link = "Link", Loading = "Loading", Menu = "Menu", Modal = "Modal", Navigation = "Navigation", Performance = "Performance", Pos = "Pos", Print = "Print", ResourcePicker = "Resource_Picker", Scanner = "Scanner", SessionToken = "SessionToken", Share = "Share", TitleBar = "TitleBar", Toast = "Toast", MarketingExternalActivityTopBar = "MarketingExternalActivityTopBar" } /** * @internal */ export declare enum ComponentType { Button = "Button", ButtonGroup = "ButtonGroup" } /** * Base action interface. * @remarks * All action implementations should inherit from this interface. * @internalremarks * Should we remove the extraProps definition here, pushing it on sub-types? * @public */ export interface AnyAction { type: any; [extraProps: string]: any; } export interface ClientInterface { name?: string; version?: string; } /** * @public */ export interface MetaAction extends AnyAction { clientInterface?: ClientInterface; readonly version: string; readonly group: string; readonly type: string; payload?: any; } /** * @public */ export interface ClickAction extends MetaAction { payload: { id: string; payload?: any; }; } /** * @public */ export interface ActionCallback { (data: any): void; } /** * @public */ export interface ErrorCallback { (data: ErrorAction): void; } /** * @public */ export interface UpdateSubscribe { (group: string, subgroups: string[]): void; } /** * @public */ export interface Unsubscribe { (): void; } /** * @public */ export interface ErrorSubscriber { (callback: ErrorCallback, id?: string): Unsubscribe; } /** * @internal */ export interface ActionSubscription { component: Component; eventType: string; callback: ActionCallback; unsubscribe: Unsubscribe; updateSubscribe: UpdateSubscribe; } /** * @internal */ export interface UpdateSubscription { (subscriptionToRemove: ActionSubscription, group: string, subgroups: string[]): void; } /** * @public */ export interface Component { readonly id: string; readonly type: string; subgroups?: string[]; } /** * @public */ export interface ActionSetInterface extends Component { readonly app: ClientApplication<any>; readonly defaultGroup: string; group: string; component: Component; subscriptions: ActionSubscription[]; updateSubscription: UpdateSubscription; error: ErrorSubscriber; subscribe(eventName: string, callback: ActionCallback, component?: Component, currentIndex?: number): Unsubscribe; unsubscribe(resetOnly: boolean): ActionSetInterface; } /** * @public */ export interface DispatchAction { type: string; payload: any; } /** * @public */ export interface SimpleDispatch { dispatch(action: string): ActionSet; } /** * @public */ export interface ComplexDispatch<P> { dispatch(action: string, payload: P): ActionSet; } /** * @public */ export interface ActionSetProps<T, P> extends SimpleDispatch { options: T; payload: P; set(options: Partial<T>): ActionSet; } /** * @public */ export interface ActionSetPayload<P> extends SimpleDispatch { payload: P; } /** * @public */ export interface ActionSetOptions<T> { options: T; set(options: Partial<T>): ActionSet; } /** * @public */ export interface Dispatch<_> { <A extends AnyAction>(action: A): A; }