@shopify/app-bridge
Version:
[](https://travis-ci.com/Shopify/app-bridge) [](https:
106 lines (105 loc) • 2.78 kB
TypeScript
/**
* @module Types
*/
import { ClientApplication } from '../client';
import { ActionSet } from './helper';
import { ErrorAction } from './Error/actions';
export declare enum Group {
Button = "Button",
ButtonGroup = "ButtonGroup",
Cart = "Cart",
Error = "Error",
Flash = "Flash",
Loading = "Loading",
Modal = "Modal",
Navigation = "Navigation",
Print = "Print",
TitleBar = "TitleBar",
ResourcePicker = "Resource_Picker",
}
export declare enum ComponentType {
Button = "Button",
ButtonGroup = "ButtonGroup",
}
export interface AnyAction {
type: any;
[extraProps: string]: any;
}
export interface MetaAction extends AnyAction {
readonly version: string;
readonly group: string;
readonly type: string;
payload?: any;
}
export interface ClickAction extends MetaAction {
payload: {
id: string;
payload?: any;
};
}
export interface ActionCallback {
(data: any): void;
}
export interface ErrorCallback {
(data: ErrorAction): void;
}
export interface UpdateSubscribe {
(group: string, subgroups: string[]): void;
}
export interface Unsubscribe {
(): void;
}
export interface ErrorSubscriber {
(callback: ErrorCallback): Unsubscribe;
}
export interface ActionSubscription {
component: Component;
eventType: string;
callback: ActionCallback;
unsubscribe: Unsubscribe;
updateSubscribe: UpdateSubscribe;
}
export interface UpdateSubscription {
(subscriptionToRemove: ActionSubscription, group: string, subgroups: string[]): void;
}
export interface Component {
readonly id: string;
readonly type: string;
subgroups?: string[];
}
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;
}
export interface DispatchAction {
type: string;
payload: any;
}
export interface SimpleDispatch {
dispatch(action: string): ActionSet;
}
export interface ComplexDispatch<P> {
dispatch(action: string, payload: P): ActionSet;
}
export interface ActionSetProps<T, P> extends SimpleDispatch {
options: T;
payload: P;
set(options: Partial<T>): ActionSet;
}
export interface ActionSetPayload<P> extends SimpleDispatch {
payload: P;
}
export interface ActionSetOptions<T> {
options: T;
set(options: Partial<T>): ActionSet;
}
export interface Dispatch<S> {
<A extends AnyAction>(action: A): A;
}