@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
TypeScript
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;
}