UNPKG

@isartech/chat

Version:

A reusable native webcomponent that can be initiated with parameters such as an endpoint url and styles in any environment based on web technologies.

195 lines (175 loc) 7.17 kB
import { EventName } from '@lit/react'; import * as React_2 from 'react'; export declare type CartAction = { type: "PRODUCT_INCREMENT"; payload: IsarTechProduct.Product; } | { type: "PRODUCT_DECREMENT"; payload: IsarTechProduct.Product; } | { type: "PRODUCT_INCREMENT_BULK"; payload: IsarTechProduct.Product; } | { type: "PRODUCT_DECREMENT_BULK"; payload: IsarTechProduct.Product; }; export declare const CartApiContext: React_2.Context<{ incrementWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; decrementWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; incrementBulkWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; decrementBulkWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; }>; export declare const CartContext: React_2.Context<{ cart: Map<string, IsarTechProduct.Product>; }>; export declare const CartDispatch: React_2.Context<React_2.Dispatch<CartAction>>; export declare type CartEventHandlers = { onProductIncrement: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; onProductDecrement: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; onProductIncrementBulk: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; onProductDecrementBulk: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; }; export declare const cartReducer: (state: { cart: Map<string, IsarTechProduct.Product>; }, action: CartAction) => { cart: Map<string, IsarTechProduct.Product>; }; declare const _default: React_2.FC<IsartechChatProps>; export default _default; export declare type EventMap = { changeQuantity: EventName<CustomEvent<IsarTechProduct.Product>>; changeBulkQuantity: EventName<CustomEvent<IsarTechProduct.Product>>; onProductIncrement: EventName<CustomEvent<IsarTechProduct.Product>>; onProductDecrement: EventName<CustomEvent<IsarTechProduct.Product>>; onProductIncrementBulk: EventName<CustomEvent<IsarTechProduct.Product>>; onProductDecrementBulk: EventName<CustomEvent<IsarTechProduct.Product>>; }; /** * Props for the IsartechChatReact component * These map to the web component's attributes and properties */ export declare interface IsartechChatProps { url?: string; language?: string; themeColor?: string; isartechId?: string; isartechKey?: string; conversationId?: string; userId?: string; marketId?: string | number; tenantId?: string | number; countryId?: string | number; districtId?: string | number; country?: string; tenant?: string; district?: string; market?: string; model?: string; isCartExternal?: boolean; onProductIncrement?: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; onProductDecrement?: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; onProductIncrementBulk?: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; onProductDecrementBulk?: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; changeQuantity?: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; changeBulkQuantity?: (ev: CustomEvent<IsarTechProduct.Product>) => void | Promise<void>; className?: string; style?: React_2.CSSProperties; children?: React_2.ReactNode; } export declare const IsartechChatReact: React_2.FC<IsartechChatProps>; declare namespace IsarTechProduct { const EVENT_CHANGE_QUANTITY: "change-quantity"; const EVENT_CHANGE_QUANTITY_BULK: "change-quantity-bulk"; const EVENT_PRODUCT_CLICK: "product-click"; const EVENT_INCREMENT: "product-increment"; const EVENT_DECREMENT: "product-decrement"; const EVENT_INCREMENT_BULK: "product-increment-bulk"; const EVENT_DECREMENT_BULK: "product-decrement-bulk"; const ELEMENT_TAG: "it-product"; type Product = Attributes & { name: string; }; interface Attributes { name: string; quantity: number; bulkQuantity: number; itemId: string; messageId: string; slug: string; in_stock: boolean; brand: string; price: string; query: string; description?: string; category?: string; points?: string; priceUnit?: string; displayUnit?: string; bundleUnit?: string; weight?: string; weightUnit?: string; origin?: string; imgURL?: string; weighted?: boolean; weightIncrement?: number; maxWeightPerOrder?: number; minWeightPerOrder?: number; defaultWeightCount?: number; source?: string; score?: number; original_price?: number | string; preferred_cuts?: PreferredCuts; discount_type?: string; condition_value?: string; currency?: string; benefit_value?: string; bulk_step?: number; } interface CutPattern { id: number; image: string; default: boolean; name_ar: string; name_en: string; } interface PreferredCuts { name: string; cut_type: string; cut_patterns: CutPattern[]; important_text_ar: string; important_text_en: string; } interface ProductEvent extends Event { detail: Attributes; } interface ProductEventMap { CHANGE_QUANTITY: ProductEvent; PRODUCT_CLICK: ProductEvent; } {}; } export declare const IsartechProvider: React_2.FC<IsartechProviderProps>; export declare interface IsartechProviderProps { children: React_2.ReactNode; initialState?: { cart: Map<string, IsarTechProduct.Product>; }; onBeforeIncrement?: (product: IsarTechProduct.Product) => Promise<IsarTechProduct.Product>; onBeforeDecrement?: (product: IsarTechProduct.Product) => Promise<IsarTechProduct.Product>; onBeforeIncrementBulk?: (product: IsarTechProduct.Product) => Promise<IsarTechProduct.Product>; onBeforeDecrementBulk?: (product: IsarTechProduct.Product) => Promise<IsarTechProduct.Product>; onError?: (error: Error, operation: 'increment' | 'decrement' | 'incrementBulk' | 'decrementBulk', product: IsarTechProduct.Product) => void; } export declare type Product = IsarTechProduct.Product; export declare const setCart: () => React_2.Dispatch<CartAction>; export declare const useCart: () => { cart: Map<string, IsarTechProduct.Product>; }; export declare const useCartApi: () => { incrementWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; decrementWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; incrementBulkWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; decrementBulkWithHook: (product: IsarTechProduct.Product) => Promise<boolean>; }; export declare const useCartEventHandlers: () => CartEventHandlers; export { }