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)**

94 lines (93 loc) 4.04 kB
import { ClientApplication } from '../../../client'; import { ActionSet } from '../../helper'; import { ComplexDispatch, Group, MetaAction } from '../../types'; export interface BasePayload { id?: string; } export interface BaseAdminPayload extends BasePayload { newContext?: boolean; } export interface AppPayload extends BasePayload { path: string; } export interface AdminPathPayload extends BaseAdminPayload { path: string; } export interface RemotePayload extends BaseAdminPayload { url: string; } export interface CreateResource { create: boolean; } export interface ResourceInfo { id: string; } export interface Section { name: ResourceType; resource?: CreateResource | ResourceInfo | ProductVariantResource; } export interface AdminSectionPayload extends BaseAdminPayload { section: Section; } export interface ProductVariantResource extends ResourceInfo { variant: CreateResource | ResourceInfo; } export declare enum Action { ADMIN_SECTION = "APP::NAVIGATION::REDIRECT::ADMIN::SECTION", ADMIN_PATH = "APP::NAVIGATION::REDIRECT::ADMIN::PATH", REMOTE = "APP::NAVIGATION::REDIRECT::REMOTE", APP = "APP::NAVIGATION::REDIRECT::APP" } export declare enum ResourceType { Product = "products", Collection = "collections", Order = "orders", Customer = "customers", Discount = "discounts" } export interface ActionBase extends MetaAction { readonly group: typeof Group.Navigation; } export interface AdminPathAction extends ActionBase { readonly type: typeof Action.ADMIN_PATH; readonly payload: AdminPathPayload; } export interface AdminSectionAction extends ActionBase { readonly type: typeof Action.ADMIN_SECTION; readonly payload: AdminSectionPayload; } export interface AppAction extends ActionBase { readonly type: typeof Action.APP; readonly payload: AdminPathPayload; } export interface RemoteAction extends ActionBase { readonly type: typeof Action.REMOTE; readonly payload: RemotePayload; } export declare type RedirectAction = AdminPathAction | RemoteAction | AppAction | AdminSectionAction | MetaAction; export declare function isResourcePayload(resource: ResourceInfo | object): resource is ResourceInfo; export declare function isCreateResourcePayload(resource: CreateResource | object): resource is CreateResource; export declare function isProductVariantResourcePayload(resource: ProductVariantResource | object): resource is ProductVariantResource; export declare function isProductVariantCreateResourcePayload(resource: ProductVariantResource | object): resource is ProductVariantResource & { variant: CreateResource; }; export declare function toAdminPath(payload: AdminPathPayload): AdminPathAction; export declare function toAdminSection(payload: AdminSectionPayload): AdminSectionAction; export declare function toRemote(payload: RemotePayload): RemoteAction; export declare function toApp(payload: AppPayload): AppAction; export declare function toDestination(action: Action, payload: any, id?: string): AdminPathAction | AdminSectionAction | AppAction | RemoteAction; export declare function isAppPayload(payload: any): payload is AppPayload; export declare function isAdminPathPayload(payload: any): payload is AdminPathPayload; export declare function isAdminSectionPayload(payload: any): payload is AdminSectionPayload; export declare function isRemotePayload(payload: any): payload is RemotePayload; export declare class Redirect extends ActionSet implements ComplexDispatch<Section | string> { constructor(app: ClientApplication<any>); get payload(): { id: string; }; dispatch(action: Action.ADMIN_SECTION, payload: Section | AdminSectionPayload): ActionSet; dispatch(action: Action.ADMIN_PATH, payload: string | AdminPathPayload): ActionSet; dispatch(action: Action.REMOTE, payload: string | RemotePayload): ActionSet; dispatch(action: Action.APP, payload: string): ActionSet; } export declare function create(app: ClientApplication<any>): Redirect;