@aigentyc/chat-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/dist/JsonRenderResult-Ftw4AKwb.d.cts +18 -0
- package/dist/JsonRenderResult-Ftw4AKwb.d.ts +18 -0
- package/dist/JsonRenderResult-GQOYPLVH.cjs +15 -0
- package/dist/JsonRenderResult-GQOYPLVH.cjs.map +1 -0
- package/dist/JsonRenderResult-ZFJ6VWMS.js +6 -0
- package/dist/JsonRenderResult-ZFJ6VWMS.js.map +1 -0
- package/dist/SlotsContext-CBtt36al.d.ts +148 -0
- package/dist/SlotsContext-CHvISDJT.d.cts +148 -0
- package/dist/VisualizationRenderer-FNFYNN66.js +5 -0
- package/dist/VisualizationRenderer-FNFYNN66.js.map +1 -0
- package/dist/VisualizationRenderer-VKMZXRUX.cjs +20 -0
- package/dist/VisualizationRenderer-VKMZXRUX.cjs.map +1 -0
- package/dist/ai-elements.cjs +4608 -0
- package/dist/ai-elements.cjs.map +1 -0
- package/dist/ai-elements.d.cts +897 -0
- package/dist/ai-elements.d.ts +897 -0
- package/dist/ai-elements.js +4363 -0
- package/dist/ai-elements.js.map +1 -0
- package/dist/chunk-3MP2EGEJ.cjs +270 -0
- package/dist/chunk-3MP2EGEJ.cjs.map +1 -0
- package/dist/chunk-3RW7O444.js +26 -0
- package/dist/chunk-3RW7O444.js.map +1 -0
- package/dist/chunk-42ARGQXE.js +51 -0
- package/dist/chunk-42ARGQXE.js.map +1 -0
- package/dist/chunk-4FBVV64J.js +257 -0
- package/dist/chunk-4FBVV64J.js.map +1 -0
- package/dist/chunk-4QT25AXI.js +21 -0
- package/dist/chunk-4QT25AXI.js.map +1 -0
- package/dist/chunk-525KS5HM.cjs +30 -0
- package/dist/chunk-525KS5HM.cjs.map +1 -0
- package/dist/chunk-5F3O3ZJH.js +299 -0
- package/dist/chunk-5F3O3ZJH.js.map +1 -0
- package/dist/chunk-5QSXB6UL.cjs +259 -0
- package/dist/chunk-5QSXB6UL.cjs.map +1 -0
- package/dist/chunk-5T4FJ2SR.js +664 -0
- package/dist/chunk-5T4FJ2SR.js.map +1 -0
- package/dist/chunk-7BNYTOTE.cjs +67 -0
- package/dist/chunk-7BNYTOTE.cjs.map +1 -0
- package/dist/chunk-AWAJOSFP.cjs +96 -0
- package/dist/chunk-AWAJOSFP.cjs.map +1 -0
- package/dist/chunk-BKDV2H6Z.js +224 -0
- package/dist/chunk-BKDV2H6Z.js.map +1 -0
- package/dist/chunk-FQN6OBGN.cjs +171 -0
- package/dist/chunk-FQN6OBGN.cjs.map +1 -0
- package/dist/chunk-FYPJSHCL.js +190 -0
- package/dist/chunk-FYPJSHCL.js.map +1 -0
- package/dist/chunk-J2H6MLQF.cjs +680 -0
- package/dist/chunk-J2H6MLQF.cjs.map +1 -0
- package/dist/chunk-J2K7EJYP.cjs +198 -0
- package/dist/chunk-J2K7EJYP.cjs.map +1 -0
- package/dist/chunk-JI5KCSOI.cjs +23 -0
- package/dist/chunk-JI5KCSOI.cjs.map +1 -0
- package/dist/chunk-JOO6C3XT.cjs +44 -0
- package/dist/chunk-JOO6C3XT.cjs.map +1 -0
- package/dist/chunk-KBGPBUTI.cjs +78 -0
- package/dist/chunk-KBGPBUTI.cjs.map +1 -0
- package/dist/chunk-MT2AMINB.js +75 -0
- package/dist/chunk-MT2AMINB.js.map +1 -0
- package/dist/chunk-MZQKGNWF.js +4 -0
- package/dist/chunk-MZQKGNWF.js.map +1 -0
- package/dist/chunk-NG7OTWXQ.cjs +226 -0
- package/dist/chunk-NG7OTWXQ.cjs.map +1 -0
- package/dist/chunk-NPJKLYLV.js +68 -0
- package/dist/chunk-NPJKLYLV.js.map +1 -0
- package/dist/chunk-NW2ESHRV.js +685 -0
- package/dist/chunk-NW2ESHRV.js.map +1 -0
- package/dist/chunk-NWF735F5.js +1631 -0
- package/dist/chunk-NWF735F5.js.map +1 -0
- package/dist/chunk-NYQSM3EB.cjs +305 -0
- package/dist/chunk-NYQSM3EB.cjs.map +1 -0
- package/dist/chunk-OU7OROOE.cjs +1643 -0
- package/dist/chunk-OU7OROOE.cjs.map +1 -0
- package/dist/chunk-PS3U7T37.js +42 -0
- package/dist/chunk-PS3U7T37.js.map +1 -0
- package/dist/chunk-Q7T3VAJV.cjs +687 -0
- package/dist/chunk-Q7T3VAJV.cjs.map +1 -0
- package/dist/chunk-QYCEHFAB.js +265 -0
- package/dist/chunk-QYCEHFAB.js.map +1 -0
- package/dist/chunk-RPDJXB3U.js +676 -0
- package/dist/chunk-RPDJXB3U.js.map +1 -0
- package/dist/chunk-UKEL7FWS.js +64 -0
- package/dist/chunk-UKEL7FWS.js.map +1 -0
- package/dist/chunk-VS3NZ7FX.js +164 -0
- package/dist/chunk-VS3NZ7FX.js.map +1 -0
- package/dist/chunk-WZLWAVSS.cjs +73 -0
- package/dist/chunk-WZLWAVSS.cjs.map +1 -0
- package/dist/chunk-X5YEOOPK.cjs +758 -0
- package/dist/chunk-X5YEOOPK.cjs.map +1 -0
- package/dist/chunk-X7R334SB.cjs +5 -0
- package/dist/chunk-X7R334SB.cjs.map +1 -0
- package/dist/chunk-XXNDL5SJ.cjs +432 -0
- package/dist/chunk-XXNDL5SJ.cjs.map +1 -0
- package/dist/chunk-YQELMJW5.js +429 -0
- package/dist/chunk-YQELMJW5.js.map +1 -0
- package/dist/components.cjs +551 -0
- package/dist/components.cjs.map +1 -0
- package/dist/components.d.cts +181 -0
- package/dist/components.d.ts +181 -0
- package/dist/components.js +483 -0
- package/dist/components.js.map +1 -0
- package/dist/core.cjs +283 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +455 -0
- package/dist/core.d.ts +455 -0
- package/dist/core.js +241 -0
- package/dist/core.js.map +1 -0
- package/dist/hooks.cjs +324 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.cts +163 -0
- package/dist/hooks.d.ts +163 -0
- package/dist/hooks.js +277 -0
- package/dist/hooks.js.map +1 -0
- package/dist/i18n.cjs +26 -0
- package/dist/i18n.cjs.map +1 -0
- package/dist/i18n.d.cts +50 -0
- package/dist/i18n.d.ts +50 -0
- package/dist/i18n.js +5 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.cjs +466 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +80 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.js +438 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction-tracker-D9P1Oq4j.d.cts +83 -0
- package/dist/interaction-tracker-D9P1Oq4j.d.ts +83 -0
- package/dist/json-render.cjs +23 -0
- package/dist/json-render.cjs.map +1 -0
- package/dist/json-render.d.cts +857 -0
- package/dist/json-render.d.ts +857 -0
- package/dist/json-render.js +6 -0
- package/dist/json-render.js.map +1 -0
- package/dist/live-chat-transport-4XLOIPOE.js +4 -0
- package/dist/live-chat-transport-4XLOIPOE.js.map +1 -0
- package/dist/live-chat-transport-ALVRGWX7.cjs +13 -0
- package/dist/live-chat-transport-ALVRGWX7.cjs.map +1 -0
- package/dist/select-B4l9yoyn.d.cts +99 -0
- package/dist/select-B4l9yoyn.d.ts +99 -0
- package/dist/styles.css +2 -0
- package/dist/theme.cjs +18 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.cts +55 -0
- package/dist/theme.d.ts +55 -0
- package/dist/theme.js +5 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools.cjs +32 -0
- package/dist/tools.cjs.map +1 -0
- package/dist/tools.d.cts +117 -0
- package/dist/tools.d.ts +117 -0
- package/dist/tools.js +11 -0
- package/dist/tools.js.map +1 -0
- package/dist/types-DKJ_-nbG.d.cts +349 -0
- package/dist/types-DKJ_-nbG.d.ts +349 -0
- package/dist/ui.cjs +667 -0
- package/dist/ui.cjs.map +1 -0
- package/dist/ui.d.cts +95 -0
- package/dist/ui.d.ts +95 -0
- package/dist/ui.js +414 -0
- package/dist/ui.js.map +1 -0
- package/package.json +255 -0
package/dist/core.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/message-store.ts","../src/core/transport.ts","../src/core/constants/user-types.ts"],"names":[],"mappings":"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","file":"core.js","sourcesContent":["\"use client\";\n\n/**\n * Cross-page message persistence via `localStorage`.\n *\n * Preserves conversation UI across full page navigations without\n * re-POSTing to the backend.\n *\n * All storage access is guarded against SSR — every function is a safe\n * no-op when `window` / `localStorage` is unavailable.\n */\n\nconst STORAGE_PREFIX = \"chat-messages-\";\n\n/** Maximum payload size per session (200 KB). */\nconst MAX_SIZE_BYTES = 200 * 1024;\n\n/** Messages expire after 24 hours of inactivity. */\nconst MAX_AGE_MS = 24 * 60 * 60 * 1000;\n\n/** Shape of a single persisted message. */\nexport interface StoredMessage {\n /** Message identifier */\n id: string;\n /** Role: user / assistant / system */\n role: string;\n /** Structured parts array (text, tool calls, etc.) */\n parts: unknown[];\n /** ISO-8601 creation timestamp */\n createdAt?: string;\n}\n\n/** Internal wrapper stored in localStorage. */\ninterface StoredData {\n messages: StoredMessage[];\n timestamp: number;\n}\n\n/**\n * Build the localStorage key for a given project + session pair.\n *\n * @internal\n */\nfunction getKey(projectId: string, sessionId: string): string {\n return `${STORAGE_PREFIX}${projectId}-${sessionId}`;\n}\n\n/**\n * Load persisted messages for a session.\n *\n * Returns an empty array when nothing is stored, the data is expired\n * or corrupted, or when running on the server.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n */\nexport function loadMessages(projectId: string, sessionId: string): StoredMessage[] {\n if (typeof window === \"undefined\") return [];\n\n try {\n const raw = localStorage.getItem(getKey(projectId, sessionId));\n if (!raw) return [];\n\n const data: StoredData = JSON.parse(raw);\n\n // Check expiry\n if (Date.now() - data.timestamp > MAX_AGE_MS) {\n localStorage.removeItem(getKey(projectId, sessionId));\n return [];\n }\n\n return data.messages || [];\n } catch {\n return [];\n }\n}\n\n/**\n * Save messages to localStorage.\n *\n * Trims to the last 20 messages if the serialized payload exceeds\n * `MAX_SIZE_BYTES`.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n * @param messages - Messages to persist\n */\nexport function saveMessages(\n projectId: string,\n sessionId: string,\n messages: StoredMessage[],\n): void {\n if (typeof window === \"undefined\") return;\n\n try {\n let toStore = messages;\n const data: StoredData = { messages: toStore, timestamp: Date.now() };\n let serialized = JSON.stringify(data);\n\n if (serialized.length > MAX_SIZE_BYTES && toStore.length > 20) {\n toStore = toStore.slice(-20);\n data.messages = toStore;\n serialized = JSON.stringify(data);\n }\n\n localStorage.setItem(getKey(projectId, sessionId), serialized);\n } catch {\n // localStorage full or unavailable — silently ignore\n }\n}\n\n/**\n * Clear stored messages for a session.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n */\nexport function clearMessages(projectId: string, sessionId: string): void {\n if (typeof window === \"undefined\") return;\n\n try {\n localStorage.removeItem(getKey(projectId, sessionId));\n } catch {\n // ignore\n }\n}\n\n/**\n * Prune all expired message entries from localStorage.\n *\n * Call once on widget / provider initialisation to prevent stale data\n * from accumulating.\n */\nexport function pruneExpiredMessages(): void {\n if (typeof window === \"undefined\") return;\n\n try {\n const keysToRemove: string[] = [];\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (!key?.startsWith(STORAGE_PREFIX)) continue;\n\n try {\n const raw = localStorage.getItem(key);\n if (!raw) continue;\n const data: StoredData = JSON.parse(raw);\n if (Date.now() - data.timestamp > MAX_AGE_MS) {\n keysToRemove.push(key);\n }\n } catch {\n keysToRemove.push(key!);\n }\n }\n\n for (const key of keysToRemove) {\n localStorage.removeItem(key);\n }\n } catch {\n // ignore\n }\n}\n\n/** Handle for the debounce timer. */\nlet saveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n/**\n * Debounced save — call on every `messages` change.\n *\n * Coalesces rapid updates (e.g. during streaming) into a single write.\n *\n * @param projectId - Aigentyc project ID\n * @param sessionId - Current chat session ID\n * @param messages - Current messages array\n * @param delay - Debounce delay in ms (default `500`)\n */\nexport function debouncedSaveMessages(\n projectId: string,\n sessionId: string,\n messages: StoredMessage[],\n delay = 500,\n): void {\n if (typeof window === \"undefined\") return;\n\n if (saveTimeout) clearTimeout(saveTimeout);\n saveTimeout = setTimeout(() => {\n saveMessages(projectId, sessionId, messages);\n }, delay);\n}\n","\"use client\";\n\nimport type { ChatConfig } from \"./types\";\n\n/**\n * Options for creating a chat transport instance.\n */\nexport interface CreateChatTransportOptions {\n /** Maximum number of messages to include in a single request (default `20`) */\n maxMessages?: number;\n /** Current session identifier */\n sessionId?: string;\n /** Pre-set user type / persona key */\n userType?: string;\n /** Current page URL (for contextual answers) */\n pageUrl?: string;\n /** Current page title */\n pageTitle?: string;\n /** Signed WP user identity token */\n wpUserToken?: string;\n /**\n * Mutable ref-like getter for the analytics message ID.\n * Called inside `prepareSendMessagesRequest` to read the latest value.\n */\n getAnalyticsMessageId?: () => string | null;\n /**\n * Mutable ref-like getter for the current user type.\n * Called inside `prepareSendMessagesRequest` to read the latest value.\n */\n getUserType?: () => string | null;\n /**\n * Mutable ref-like getter for the current session ID.\n * Called inside `prepareSendMessagesRequest` in case it changes at runtime.\n */\n getSessionId?: () => string;\n}\n\n/**\n * Minify a tool output before sending it back to the LLM.\n *\n * Display tools use `_displayData` for the UI — the LLM only needs the\n * summary / context portion. Large outputs are truncated.\n *\n * @internal\n */\nexport function minifyToolOutput(output: unknown): unknown {\n if (!output || typeof output !== \"object\") return output;\n const obj = output as Record<string, unknown>;\n\n // 1. Display-only tools: strip _displayData, keep message/summary\n if (\"_displayData\" in obj) {\n const { _displayData: _, ...contextData } = obj;\n return contextData;\n }\n\n // 2. searchKnowledgeBase: LLM already used results, no need to resend\n if (\"sources\" in obj && Array.isArray(obj.sources)) {\n return { _searched: true, totalResults: obj.totalResults };\n }\n\n // 3. Fallback: truncate any large outputs (>1.5 KB)\n const outputStr = JSON.stringify(obj);\n if (outputStr.length > 1500) {\n const summary: Record<string, unknown> = { _truncated: true };\n if (Array.isArray(obj)) {\n summary.itemCount = obj.length;\n } else {\n for (const [k, v] of Object.entries(obj)) {\n if (typeof v === \"string\" && v.length < 100) summary[k] = v;\n else if (typeof v === \"number\" || typeof v === \"boolean\") summary[k] = v;\n }\n }\n return summary;\n }\n\n return output;\n}\n\n/**\n * Prune and minify a messages array for sending to the API.\n *\n * 1. Keeps the first message (system / context) and the last `maxMessages - 1`.\n * 2. Deep-clones messages so the local UI state is not mutated.\n * 3. Strips large tool outputs via `minifyToolOutput`.\n *\n * @internal\n */\nexport function prepareMessages(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n messages: any[],\n maxMessages: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any[] {\n let pruned = messages;\n\n if (messages.length > maxMessages) {\n pruned = [messages[0], ...messages.slice(-(maxMessages - 1))];\n }\n\n // Deep clone and minify tool outputs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cloned = JSON.parse(JSON.stringify(pruned)) as any[];\n for (const msg of cloned) {\n if (msg.role === \"assistant\" && msg.parts) {\n for (const part of msg.parts) {\n if (part.type?.startsWith(\"tool-\") && part.output !== undefined) {\n part.output = minifyToolOutput(part.output);\n }\n }\n }\n }\n\n return cloned;\n}\n\n/**\n * Create a configured `DefaultChatTransport` instance from the AI SDK.\n *\n * The transport handles authentication, message pruning, tool-output\n * minification, and attaches project / session metadata to every request.\n *\n * Uses a dynamic `import(\"ai\")` so that `ai` stays an optional peer\n * dependency — the import is only resolved at call time.\n *\n * @param config - Chat backend configuration\n * @param options - Transport options\n * @returns A `DefaultChatTransport` instance ready for `useChat()`\n *\n * @example\n * ```ts\n * const transport = await createChatTransport(\n * { projectId: \"abc\", apiEndpoint: \"https://api.example.com\", apiKey: \"key\" },\n * { maxMessages: 20, getSessionId: () => sessionIdRef.current },\n * );\n * const { messages } = useChat({ transport });\n * ```\n */\nexport async function createChatTransport(\n config: ChatConfig,\n options: CreateChatTransportOptions = {},\n) {\n const { DefaultChatTransport } = await import(\"ai\");\n\n const {\n maxMessages = 20,\n pageUrl,\n pageTitle,\n wpUserToken,\n getAnalyticsMessageId,\n getUserType,\n getSessionId,\n } = options;\n\n return new DefaultChatTransport({\n api: `${config.apiEndpoint}/api/kb/chat`,\n headers: () => {\n const headers: Record<string, string> = {};\n if (config.apiKey) {\n headers[\"Authorization\"] = `Bearer ${config.apiKey}`;\n }\n return headers;\n },\n credentials: \"include\",\n prepareSendMessagesRequest: ({ id, messages, trigger }) => {\n const prepared = prepareMessages(messages, maxMessages);\n\n return {\n body: {\n id,\n messages: prepared,\n trigger,\n projectId: config.projectId,\n sessionId: getSessionId?.() ?? options.sessionId,\n analyticsMessageId: getAnalyticsMessageId?.() ?? null,\n userType: getUserType?.() ?? options.userType ?? undefined,\n pageUrl,\n pageTitle,\n ...(wpUserToken ? { wpUserToken } : {}),\n },\n };\n },\n });\n}\n\n/**\n * Synchronous variant of `createChatTransport` for use when `ai`\n * is already bundled (i.e. not dynamically imported).\n *\n * Requires the caller to pass in the `DefaultChatTransport` constructor.\n *\n * @param DefaultChatTransport - The `DefaultChatTransport` class from `\"ai\"`\n * @param config - Chat backend configuration\n * @param options - Transport options\n * @returns A configured `DefaultChatTransport` instance\n */\nexport function createChatTransportSync(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DefaultChatTransport: any,\n config: ChatConfig,\n options: CreateChatTransportOptions = {},\n) {\n const {\n maxMessages = 20,\n pageUrl,\n pageTitle,\n wpUserToken,\n getAnalyticsMessageId,\n getUserType,\n getSessionId,\n } = options;\n\n return new DefaultChatTransport({\n api: `${config.apiEndpoint}/api/kb/chat`,\n headers: () => {\n const headers: Record<string, string> = {};\n if (config.apiKey) {\n headers[\"Authorization\"] = `Bearer ${config.apiKey}`;\n }\n return headers;\n },\n credentials: \"include\",\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prepareSendMessagesRequest: ({ id, messages, trigger }: any) => {\n const prepared = prepareMessages(messages, maxMessages);\n\n return {\n body: {\n id,\n messages: prepared,\n trigger,\n projectId: config.projectId,\n sessionId: getSessionId?.() ?? options.sessionId,\n analyticsMessageId: getAnalyticsMessageId?.() ?? null,\n userType: getUserType?.() ?? options.userType ?? undefined,\n pageUrl,\n pageTitle,\n ...(wpUserToken ? { wpUserToken } : {}),\n },\n };\n },\n });\n}\n","\"use client\";\n\n/**\n * User type constants and helpers.\n *\n * Defines the available visitor personas that the `AgentDetection` tool\n * can assign. These are generic defaults — consumers can extend them via\n * configuration.\n */\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/**\n * A visitor persona / user type definition.\n */\nexport interface UserType {\n /** Machine-readable identifier (e.g. `\"Guest\"`) */\n id: string;\n /** Human-readable label */\n label: string;\n /** Short description of this persona */\n description: string;\n /**\n * Icon identifier.\n *\n * In the SDK this is a string key (e.g. `\"User\"`, `\"Shield\"`, `\"Zap\"`)\n * rather than a Lucide component to avoid coupling core logic to a\n * specific icon library.\n */\n icon: string;\n}\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/**\n * Default user types available for the `AgentDetection` tool.\n */\nexport const USER_TYPES: UserType[] = [\n {\n id: \"Guest\",\n label: \"Guest\",\n description: \"Just browsing\",\n icon: \"User\",\n },\n {\n id: \"Customer\",\n label: \"Customer\",\n description: \"Existing customer with questions\",\n icon: \"Shield\",\n },\n {\n id: \"Partner\",\n label: \"Partner\",\n description: \"Business partner or professional\",\n icon: \"Zap\",\n },\n];\n\n/**\n * Map from display label to user-type ID.\n *\n * Used to normalise user-type strings that come from the AI\n * (which may use the label rather than the ID).\n */\nexport const USER_TYPE_LABEL_MAP: Record<string, string> = {\n Guest: \"Guest\",\n Customer: \"Customer\",\n Partner: \"Partner\",\n};\n\n/**\n * Prefix for internal / hidden messages.\n *\n * Messages starting with this string are never rendered in the UI.\n */\nexport const INTERNAL_MESSAGE_PREFIX = \"[internal]\";\n\n/**\n * Check whether a message should be hidden from the UI.\n *\n * @param text - The raw message text\n * @returns `true` if the message is internal\n */\nexport function isInternalMessage(text: string): boolean {\n return text.startsWith(INTERNAL_MESSAGE_PREFIX);\n}\n"]}
|
package/dist/hooks.cjs
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunk5QSXB6UL_cjs = require('./chunk-5QSXB6UL.cjs');
|
|
5
|
+
var chunkKBGPBUTI_cjs = require('./chunk-KBGPBUTI.cjs');
|
|
6
|
+
require('./chunk-NG7OTWXQ.cjs');
|
|
7
|
+
var chunkNYQSM3EB_cjs = require('./chunk-NYQSM3EB.cjs');
|
|
8
|
+
var chunk7BNYTOTE_cjs = require('./chunk-7BNYTOTE.cjs');
|
|
9
|
+
require('./chunk-X7R334SB.cjs');
|
|
10
|
+
var chunk3MP2EGEJ_cjs = require('./chunk-3MP2EGEJ.cjs');
|
|
11
|
+
var chunkJ2K7EJYP_cjs = require('./chunk-J2K7EJYP.cjs');
|
|
12
|
+
var react = require('react');
|
|
13
|
+
|
|
14
|
+
function useImageLoader() {
|
|
15
|
+
const [loaded, setLoaded] = react.useState(false);
|
|
16
|
+
const onLoad = react.useCallback(() => {
|
|
17
|
+
setLoaded(true);
|
|
18
|
+
}, []);
|
|
19
|
+
const reset = react.useCallback(() => {
|
|
20
|
+
setLoaded(false);
|
|
21
|
+
}, []);
|
|
22
|
+
return { loaded, onLoad, reset };
|
|
23
|
+
}
|
|
24
|
+
function useMultiImageLoader() {
|
|
25
|
+
const [loadedMap, setLoadedMap] = react.useState(/* @__PURE__ */ new Set());
|
|
26
|
+
const isLoaded = react.useCallback(
|
|
27
|
+
(key) => loadedMap.has(key),
|
|
28
|
+
[loadedMap]
|
|
29
|
+
);
|
|
30
|
+
const onLoad = react.useCallback(
|
|
31
|
+
(key) => () => {
|
|
32
|
+
setLoadedMap((prev) => new Set(prev).add(key));
|
|
33
|
+
},
|
|
34
|
+
[]
|
|
35
|
+
);
|
|
36
|
+
const reset = react.useCallback((key) => {
|
|
37
|
+
setLoadedMap((prev) => {
|
|
38
|
+
const next = new Set(prev);
|
|
39
|
+
next.delete(key);
|
|
40
|
+
return next;
|
|
41
|
+
});
|
|
42
|
+
}, []);
|
|
43
|
+
const resetAll = react.useCallback(() => {
|
|
44
|
+
setLoadedMap(/* @__PURE__ */ new Set());
|
|
45
|
+
}, []);
|
|
46
|
+
return { isLoaded, onLoad, reset, resetAll };
|
|
47
|
+
}
|
|
48
|
+
function usePagination({
|
|
49
|
+
items,
|
|
50
|
+
itemsPerPage,
|
|
51
|
+
onPageChange
|
|
52
|
+
}) {
|
|
53
|
+
const [page, setPage] = react.useState(0);
|
|
54
|
+
const totalPages = react.useMemo(
|
|
55
|
+
() => Math.ceil(items.length / itemsPerPage),
|
|
56
|
+
[items.length, itemsPerPage]
|
|
57
|
+
);
|
|
58
|
+
const currentItems = react.useMemo(
|
|
59
|
+
() => items.slice(page * itemsPerPage, (page + 1) * itemsPerPage),
|
|
60
|
+
[items, page, itemsPerPage]
|
|
61
|
+
);
|
|
62
|
+
const goNext = react.useCallback(() => {
|
|
63
|
+
if (page < totalPages - 1) {
|
|
64
|
+
const newPage = page + 1;
|
|
65
|
+
setPage(newPage);
|
|
66
|
+
onPageChange?.("next", newPage, totalPages);
|
|
67
|
+
}
|
|
68
|
+
}, [page, totalPages, onPageChange]);
|
|
69
|
+
const goPrev = react.useCallback(() => {
|
|
70
|
+
if (page > 0) {
|
|
71
|
+
const newPage = page - 1;
|
|
72
|
+
setPage(newPage);
|
|
73
|
+
onPageChange?.("prev", newPage, totalPages);
|
|
74
|
+
}
|
|
75
|
+
}, [page, totalPages, onPageChange]);
|
|
76
|
+
const goToPage = react.useCallback(
|
|
77
|
+
(newPage) => {
|
|
78
|
+
if (newPage >= 0 && newPage < totalPages) {
|
|
79
|
+
const direction = newPage > page ? "next" : "prev";
|
|
80
|
+
setPage(newPage);
|
|
81
|
+
onPageChange?.(direction, newPage, totalPages);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
[page, totalPages, onPageChange]
|
|
85
|
+
);
|
|
86
|
+
const isFirstPage = page === 0;
|
|
87
|
+
const isLastPage = page >= totalPages - 1;
|
|
88
|
+
return {
|
|
89
|
+
page,
|
|
90
|
+
totalPages,
|
|
91
|
+
currentItems,
|
|
92
|
+
goNext,
|
|
93
|
+
goPrev,
|
|
94
|
+
goToPage,
|
|
95
|
+
isFirstPage,
|
|
96
|
+
isLastPage
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function useSliderDrag({
|
|
100
|
+
containerRef,
|
|
101
|
+
initialPosition = 50,
|
|
102
|
+
minPosition = 0,
|
|
103
|
+
maxPosition = 100
|
|
104
|
+
}) {
|
|
105
|
+
const [sliderPosition, setSliderPosition] = react.useState(initialPosition);
|
|
106
|
+
const [isDragging, setIsDragging] = react.useState(false);
|
|
107
|
+
const handleSliderMove = react.useCallback(
|
|
108
|
+
(clientX) => {
|
|
109
|
+
if (!containerRef.current) return;
|
|
110
|
+
const rect = containerRef.current.getBoundingClientRect();
|
|
111
|
+
const x = clientX - rect.left;
|
|
112
|
+
const percentage = Math.max(
|
|
113
|
+
minPosition,
|
|
114
|
+
Math.min(maxPosition, x / rect.width * 100)
|
|
115
|
+
);
|
|
116
|
+
setSliderPosition(percentage);
|
|
117
|
+
},
|
|
118
|
+
[containerRef, minPosition, maxPosition]
|
|
119
|
+
);
|
|
120
|
+
const handleMouseDown = react.useCallback(() => {
|
|
121
|
+
setIsDragging(true);
|
|
122
|
+
}, []);
|
|
123
|
+
const handleMouseUp = react.useCallback(() => {
|
|
124
|
+
setIsDragging(false);
|
|
125
|
+
}, []);
|
|
126
|
+
const handleMouseMove = react.useCallback(
|
|
127
|
+
(e) => {
|
|
128
|
+
if (isDragging) {
|
|
129
|
+
handleSliderMove(e.clientX);
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
[isDragging, handleSliderMove]
|
|
133
|
+
);
|
|
134
|
+
const handleTouchMove = react.useCallback(
|
|
135
|
+
(e) => {
|
|
136
|
+
if (isDragging && e.touches[0]) {
|
|
137
|
+
handleSliderMove(e.touches[0].clientX);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
[isDragging, handleSliderMove]
|
|
141
|
+
);
|
|
142
|
+
react.useEffect(() => {
|
|
143
|
+
if (typeof window === "undefined") return;
|
|
144
|
+
if (isDragging) {
|
|
145
|
+
window.addEventListener("mousemove", handleMouseMove);
|
|
146
|
+
window.addEventListener("mouseup", handleMouseUp);
|
|
147
|
+
window.addEventListener("touchmove", handleTouchMove);
|
|
148
|
+
window.addEventListener("touchend", handleMouseUp);
|
|
149
|
+
}
|
|
150
|
+
return () => {
|
|
151
|
+
window.removeEventListener("mousemove", handleMouseMove);
|
|
152
|
+
window.removeEventListener("mouseup", handleMouseUp);
|
|
153
|
+
window.removeEventListener("touchmove", handleTouchMove);
|
|
154
|
+
window.removeEventListener("touchend", handleMouseUp);
|
|
155
|
+
};
|
|
156
|
+
}, [isDragging, handleMouseMove, handleMouseUp, handleTouchMove]);
|
|
157
|
+
return {
|
|
158
|
+
sliderPosition,
|
|
159
|
+
isDragging,
|
|
160
|
+
handleMouseDown,
|
|
161
|
+
setSliderPosition
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function useOrderTracking({
|
|
165
|
+
productId
|
|
166
|
+
}) {
|
|
167
|
+
const [orderStatus, setOrderStatus] = react.useState("idle");
|
|
168
|
+
const [orderError, setOrderError] = react.useState(null);
|
|
169
|
+
react.useEffect(() => {
|
|
170
|
+
if (typeof window === "undefined" || !productId) return;
|
|
171
|
+
const handleOrderComplete = (e) => {
|
|
172
|
+
const customEvent = e;
|
|
173
|
+
const { success, product_id, error } = customEvent.detail || {};
|
|
174
|
+
if (product_id === productId) {
|
|
175
|
+
if (success) {
|
|
176
|
+
setOrderStatus("added");
|
|
177
|
+
setOrderError(null);
|
|
178
|
+
} else {
|
|
179
|
+
setOrderStatus("error");
|
|
180
|
+
setOrderError(error || "Failed to add to cart");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
window.addEventListener(
|
|
185
|
+
"caesarstone:order-sample-complete",
|
|
186
|
+
handleOrderComplete
|
|
187
|
+
);
|
|
188
|
+
return () => {
|
|
189
|
+
window.removeEventListener(
|
|
190
|
+
"caesarstone:order-sample-complete",
|
|
191
|
+
handleOrderComplete
|
|
192
|
+
);
|
|
193
|
+
};
|
|
194
|
+
}, [productId]);
|
|
195
|
+
const startOrder = react.useCallback(() => {
|
|
196
|
+
setOrderStatus("pending");
|
|
197
|
+
setOrderError(null);
|
|
198
|
+
}, []);
|
|
199
|
+
const reset = react.useCallback(() => {
|
|
200
|
+
setOrderStatus("idle");
|
|
201
|
+
setOrderError(null);
|
|
202
|
+
}, []);
|
|
203
|
+
return { orderStatus, orderError, startOrder, reset };
|
|
204
|
+
}
|
|
205
|
+
function useMultiOrderTracking() {
|
|
206
|
+
const [statusMap, setStatusMap] = react.useState(
|
|
207
|
+
/* @__PURE__ */ new Map()
|
|
208
|
+
);
|
|
209
|
+
const [errorMap, setErrorMap] = react.useState(/* @__PURE__ */ new Map());
|
|
210
|
+
react.useEffect(() => {
|
|
211
|
+
if (typeof window === "undefined") return;
|
|
212
|
+
const handleOrderComplete = (e) => {
|
|
213
|
+
const customEvent = e;
|
|
214
|
+
const { success, product_id, error } = customEvent.detail || {};
|
|
215
|
+
if (product_id) {
|
|
216
|
+
if (success) {
|
|
217
|
+
setStatusMap((prev) => new Map(prev).set(product_id, "added"));
|
|
218
|
+
setErrorMap((prev) => {
|
|
219
|
+
const next = new Map(prev);
|
|
220
|
+
next.delete(product_id);
|
|
221
|
+
return next;
|
|
222
|
+
});
|
|
223
|
+
} else {
|
|
224
|
+
setStatusMap((prev) => new Map(prev).set(product_id, "error"));
|
|
225
|
+
setErrorMap(
|
|
226
|
+
(prev) => new Map(prev).set(product_id, error || "Failed to add to cart")
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
window.addEventListener(
|
|
232
|
+
"caesarstone:order-sample-complete",
|
|
233
|
+
handleOrderComplete
|
|
234
|
+
);
|
|
235
|
+
return () => {
|
|
236
|
+
window.removeEventListener(
|
|
237
|
+
"caesarstone:order-sample-complete",
|
|
238
|
+
handleOrderComplete
|
|
239
|
+
);
|
|
240
|
+
};
|
|
241
|
+
}, []);
|
|
242
|
+
const getStatus = react.useCallback(
|
|
243
|
+
(productId) => statusMap.get(productId) || "idle",
|
|
244
|
+
[statusMap]
|
|
245
|
+
);
|
|
246
|
+
const getError = react.useCallback(
|
|
247
|
+
(productId) => errorMap.get(productId),
|
|
248
|
+
[errorMap]
|
|
249
|
+
);
|
|
250
|
+
const startOrder = react.useCallback((productId) => {
|
|
251
|
+
setStatusMap((prev) => new Map(prev).set(productId, "pending"));
|
|
252
|
+
setErrorMap((prev) => {
|
|
253
|
+
const next = new Map(prev);
|
|
254
|
+
next.delete(productId);
|
|
255
|
+
return next;
|
|
256
|
+
});
|
|
257
|
+
}, []);
|
|
258
|
+
const reset = react.useCallback((productId) => {
|
|
259
|
+
setStatusMap((prev) => {
|
|
260
|
+
const next = new Map(prev);
|
|
261
|
+
next.delete(productId);
|
|
262
|
+
return next;
|
|
263
|
+
});
|
|
264
|
+
setErrorMap((prev) => {
|
|
265
|
+
const next = new Map(prev);
|
|
266
|
+
next.delete(productId);
|
|
267
|
+
return next;
|
|
268
|
+
});
|
|
269
|
+
}, []);
|
|
270
|
+
const resetAll = react.useCallback(() => {
|
|
271
|
+
setStatusMap(/* @__PURE__ */ new Map());
|
|
272
|
+
setErrorMap(/* @__PURE__ */ new Map());
|
|
273
|
+
}, []);
|
|
274
|
+
return { getStatus, getError, startOrder, reset, resetAll };
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
Object.defineProperty(exports, "useAigentycChat", {
|
|
278
|
+
enumerable: true,
|
|
279
|
+
get: function () { return chunk5QSXB6UL_cjs.useAigentycChat; }
|
|
280
|
+
});
|
|
281
|
+
Object.defineProperty(exports, "useInteractionTracker", {
|
|
282
|
+
enumerable: true,
|
|
283
|
+
get: function () { return chunkKBGPBUTI_cjs.useInteractionTracker; }
|
|
284
|
+
});
|
|
285
|
+
Object.defineProperty(exports, "useIsMobile", {
|
|
286
|
+
enumerable: true,
|
|
287
|
+
get: function () { return chunkNYQSM3EB_cjs.useIsMobile; }
|
|
288
|
+
});
|
|
289
|
+
Object.defineProperty(exports, "useLiveChat", {
|
|
290
|
+
enumerable: true,
|
|
291
|
+
get: function () { return chunkNYQSM3EB_cjs.useLiveChat; }
|
|
292
|
+
});
|
|
293
|
+
Object.defineProperty(exports, "usePreviewEmbed", {
|
|
294
|
+
enumerable: true,
|
|
295
|
+
get: function () { return chunkNYQSM3EB_cjs.usePreviewEmbed; }
|
|
296
|
+
});
|
|
297
|
+
Object.defineProperty(exports, "useTheme", {
|
|
298
|
+
enumerable: true,
|
|
299
|
+
get: function () { return chunk7BNYTOTE_cjs.useTheme; }
|
|
300
|
+
});
|
|
301
|
+
Object.defineProperty(exports, "useI18n", {
|
|
302
|
+
enumerable: true,
|
|
303
|
+
get: function () { return chunk3MP2EGEJ_cjs.useI18n; }
|
|
304
|
+
});
|
|
305
|
+
Object.defineProperty(exports, "useChatContext", {
|
|
306
|
+
enumerable: true,
|
|
307
|
+
get: function () { return chunkJ2K7EJYP_cjs.useChatContext; }
|
|
308
|
+
});
|
|
309
|
+
Object.defineProperty(exports, "useSlot", {
|
|
310
|
+
enumerable: true,
|
|
311
|
+
get: function () { return chunkJ2K7EJYP_cjs.useSlot; }
|
|
312
|
+
});
|
|
313
|
+
Object.defineProperty(exports, "useSlots", {
|
|
314
|
+
enumerable: true,
|
|
315
|
+
get: function () { return chunkJ2K7EJYP_cjs.useSlots; }
|
|
316
|
+
});
|
|
317
|
+
exports.useImageLoader = useImageLoader;
|
|
318
|
+
exports.useMultiImageLoader = useMultiImageLoader;
|
|
319
|
+
exports.useMultiOrderTracking = useMultiOrderTracking;
|
|
320
|
+
exports.useOrderTracking = useOrderTracking;
|
|
321
|
+
exports.usePagination = usePagination;
|
|
322
|
+
exports.useSliderDrag = useSliderDrag;
|
|
323
|
+
//# sourceMappingURL=hooks.cjs.map
|
|
324
|
+
//# sourceMappingURL=hooks.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-image-loader.ts","../src/hooks/use-pagination.ts","../src/hooks/use-slider-drag.ts","../src/hooks/use-order-tracking.ts"],"names":["useState","useCallback","useMemo","useEffect"],"mappings":"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","file":"hooks.cjs","sourcesContent":["\"use client\";\n\nimport { useState, useCallback } from \"react\";\n\ninterface UseImageLoaderReturn {\n /** Whether the image has finished loading. */\n loaded: boolean;\n /** Callback to set loaded state to true. Pass as `onLoad` to an `<img>`. */\n onLoad: () => void;\n /** Reset loaded state to false. */\n reset: () => void;\n}\n\n/**\n * Tracks load state for a single image element.\n */\nexport function useImageLoader(): UseImageLoaderReturn {\n const [loaded, setLoaded] = useState(false);\n\n const onLoad = useCallback(() => {\n setLoaded(true);\n }, []);\n\n const reset = useCallback(() => {\n setLoaded(false);\n }, []);\n\n return { loaded, onLoad, reset };\n}\n\ninterface UseMultiImageLoaderReturn {\n /** Check if a specific image has loaded. */\n isLoaded: (key: string) => boolean;\n /** Returns a callback for the given key to mark it as loaded. */\n onLoad: (key: string) => () => void;\n /** Reset a specific image's loaded state. */\n reset: (key: string) => void;\n /** Reset all images' loaded states. */\n resetAll: () => void;\n}\n\n/**\n * Tracks load state for multiple images by key.\n */\nexport function useMultiImageLoader(): UseMultiImageLoaderReturn {\n const [loadedMap, setLoadedMap] = useState<Set<string>>(new Set());\n\n const isLoaded = useCallback(\n (key: string) => loadedMap.has(key),\n [loadedMap]\n );\n\n const onLoad = useCallback(\n (key: string) => () => {\n setLoadedMap((prev) => new Set(prev).add(key));\n },\n []\n );\n\n const reset = useCallback((key: string) => {\n setLoadedMap((prev) => {\n const next = new Set(prev);\n next.delete(key);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setLoadedMap(new Set());\n }, []);\n\n return { isLoaded, onLoad, reset, resetAll };\n}\n","\"use client\";\n\nimport { useState, useMemo, useCallback } from \"react\";\n\ninterface UsePaginationOptions<T> {\n /** The full list of items to paginate. */\n items: T[];\n /** Number of items per page. */\n itemsPerPage: number;\n /** Optional callback when the page changes. */\n onPageChange?: (\n direction: \"next\" | \"prev\",\n newPage: number,\n totalPages: number\n ) => void;\n}\n\ninterface UsePaginationReturn<T> {\n /** Current page index (0-based). */\n page: number;\n /** Total number of pages. */\n totalPages: number;\n /** Items for the current page. */\n currentItems: T[];\n /** Go to the next page. */\n goNext: () => void;\n /** Go to the previous page. */\n goPrev: () => void;\n /** Go to a specific page (0-based). */\n goToPage: (page: number) => void;\n /** Whether the current page is the first page. */\n isFirstPage: boolean;\n /** Whether the current page is the last page. */\n isLastPage: boolean;\n}\n\n/**\n * Generic pagination hook for any list of items.\n */\nexport function usePagination<T>({\n items,\n itemsPerPage,\n onPageChange,\n}: UsePaginationOptions<T>): UsePaginationReturn<T> {\n const [page, setPage] = useState(0);\n\n const totalPages = useMemo(\n () => Math.ceil(items.length / itemsPerPage),\n [items.length, itemsPerPage]\n );\n\n const currentItems = useMemo(\n () => items.slice(page * itemsPerPage, (page + 1) * itemsPerPage),\n [items, page, itemsPerPage]\n );\n\n const goNext = useCallback(() => {\n if (page < totalPages - 1) {\n const newPage = page + 1;\n setPage(newPage);\n onPageChange?.(\"next\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goPrev = useCallback(() => {\n if (page > 0) {\n const newPage = page - 1;\n setPage(newPage);\n onPageChange?.(\"prev\", newPage, totalPages);\n }\n }, [page, totalPages, onPageChange]);\n\n const goToPage = useCallback(\n (newPage: number) => {\n if (newPage >= 0 && newPage < totalPages) {\n const direction = newPage > page ? \"next\" : \"prev\";\n setPage(newPage);\n onPageChange?.(direction, newPage, totalPages);\n }\n },\n [page, totalPages, onPageChange]\n );\n\n const isFirstPage = page === 0;\n const isLastPage = page >= totalPages - 1;\n\n return {\n page,\n totalPages,\n currentItems,\n goNext,\n goPrev,\n goToPage,\n isFirstPage,\n isLastPage,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback, type RefObject } from \"react\";\n\ninterface UseSliderDragOptions {\n /** Ref to the container element. */\n containerRef: RefObject<HTMLDivElement | null>;\n /** Initial slider position as a percentage (0-100). Defaults to 50. */\n initialPosition?: number;\n /** Minimum allowed position. Defaults to 0. */\n minPosition?: number;\n /** Maximum allowed position. Defaults to 100. */\n maxPosition?: number;\n}\n\ninterface UseSliderDragReturn {\n /** Current slider position as a percentage (0-100). */\n sliderPosition: number;\n /** Whether the user is currently dragging. */\n isDragging: boolean;\n /** Call this on mousedown/touchstart to begin dragging. */\n handleMouseDown: () => void;\n /** Programmatically set the slider position. */\n setSliderPosition: (position: number) => void;\n}\n\n/**\n * Handles mouse and touch drag interactions for a horizontal slider.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useSliderDrag({\n containerRef,\n initialPosition = 50,\n minPosition = 0,\n maxPosition = 100,\n}: UseSliderDragOptions): UseSliderDragReturn {\n const [sliderPosition, setSliderPosition] = useState(initialPosition);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleSliderMove = useCallback(\n (clientX: number) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = clientX - rect.left;\n const percentage = Math.max(\n minPosition,\n Math.min(maxPosition, (x / rect.width) * 100)\n );\n setSliderPosition(percentage);\n },\n [containerRef, minPosition, maxPosition]\n );\n\n const handleMouseDown = useCallback(() => {\n setIsDragging(true);\n }, []);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (isDragging) {\n handleSliderMove(e.clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n const handleTouchMove = useCallback(\n (e: TouchEvent) => {\n if (isDragging && e.touches[0]) {\n handleSliderMove(e.touches[0].clientX);\n }\n },\n [isDragging, handleSliderMove]\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n if (isDragging) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleTouchMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n }\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchmove\", handleTouchMove);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp, handleTouchMove]);\n\n return {\n sliderPosition,\n isDragging,\n handleMouseDown,\n setSliderPosition,\n };\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\ntype OrderStatus = \"idle\" | \"pending\" | \"added\" | \"error\";\n\ninterface UseOrderTrackingOptions {\n /** Product ID to track. */\n productId?: string;\n}\n\ninterface UseOrderTrackingReturn {\n /** Current order status. */\n orderStatus: OrderStatus;\n /** Error message if status is \"error\". */\n orderError: string | null;\n /** Mark the order as pending. */\n startOrder: () => void;\n /** Reset to idle state. */\n reset: () => void;\n}\n\n/**\n * Tracks a single product order status via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useOrderTracking({\n productId,\n}: UseOrderTrackingOptions): UseOrderTrackingReturn {\n const [orderStatus, setOrderStatus] = useState<OrderStatus>(\"idle\");\n const [orderError, setOrderError] = useState<string | null>(null);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !productId) return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id === productId) {\n if (success) {\n setOrderStatus(\"added\");\n setOrderError(null);\n } else {\n setOrderStatus(\"error\");\n setOrderError(error || \"Failed to add to cart\");\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, [productId]);\n\n const startOrder = useCallback(() => {\n setOrderStatus(\"pending\");\n setOrderError(null);\n }, []);\n\n const reset = useCallback(() => {\n setOrderStatus(\"idle\");\n setOrderError(null);\n }, []);\n\n return { orderStatus, orderError, startOrder, reset };\n}\n\ninterface UseMultiOrderTrackingReturn {\n /** Get status for a specific product. */\n getStatus: (productId: string) => OrderStatus;\n /** Get error message for a specific product. */\n getError: (productId: string) => string | undefined;\n /** Mark a product order as pending. */\n startOrder: (productId: string) => void;\n /** Reset a specific product's order status. */\n reset: (productId: string) => void;\n /** Reset all tracked products. */\n resetAll: () => void;\n}\n\n/**\n * Tracks multiple product order statuses via the `caesarstone:order-sample-complete` custom event.\n * SSR-safe: event listeners are only attached in the browser.\n */\nexport function useMultiOrderTracking(): UseMultiOrderTrackingReturn {\n const [statusMap, setStatusMap] = useState<Map<string, OrderStatus>>(\n new Map()\n );\n const [errorMap, setErrorMap] = useState<Map<string, string>>(new Map());\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const handleOrderComplete = (e: Event) => {\n const customEvent = e as CustomEvent<{\n success: boolean;\n product_id: string;\n error?: string;\n }>;\n const { success, product_id, error } = customEvent.detail || {};\n\n if (product_id) {\n if (success) {\n setStatusMap((prev) => new Map(prev).set(product_id, \"added\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(product_id);\n return next;\n });\n } else {\n setStatusMap((prev) => new Map(prev).set(product_id, \"error\"));\n setErrorMap((prev) =>\n new Map(prev).set(product_id, error || \"Failed to add to cart\")\n );\n }\n }\n };\n\n window.addEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n return () => {\n window.removeEventListener(\n \"caesarstone:order-sample-complete\",\n handleOrderComplete\n );\n };\n }, []);\n\n const getStatus = useCallback(\n (productId: string) => statusMap.get(productId) || \"idle\",\n [statusMap]\n );\n\n const getError = useCallback(\n (productId: string) => errorMap.get(productId),\n [errorMap]\n );\n\n const startOrder = useCallback((productId: string) => {\n setStatusMap((prev) => new Map(prev).set(productId, \"pending\"));\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const reset = useCallback((productId: string) => {\n setStatusMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n setErrorMap((prev) => {\n const next = new Map(prev);\n next.delete(productId);\n return next;\n });\n }, []);\n\n const resetAll = useCallback(() => {\n setStatusMap(new Map());\n setErrorMap(new Map());\n }, []);\n\n return { getStatus, getError, startOrder, reset, resetAll };\n}\n"]}
|
package/dist/hooks.d.cts
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
export { L as LiveChatReturn, U as UseAigentycChatOptions, a as UseAigentycChatReturn, u as useAigentycChat, b as useChatContext, c as useLiveChat, d as useSlot, e as useSlots } from './SlotsContext-CHvISDJT.cjs';
|
|
2
|
+
export { useTheme } from './theme.cjs';
|
|
3
|
+
export { useI18n } from './i18n.cjs';
|
|
4
|
+
import { RefObject } from 'react';
|
|
5
|
+
export { u as useInteractionTracker } from './interaction-tracker-D9P1Oq4j.cjs';
|
|
6
|
+
import './types-DKJ_-nbG.cjs';
|
|
7
|
+
import 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
/** Information about a preview to display in an embedded panel. */
|
|
10
|
+
interface PreviewInfo {
|
|
11
|
+
/** URL to preview. */
|
|
12
|
+
url: string;
|
|
13
|
+
/** Optional title for the preview. */
|
|
14
|
+
title?: string;
|
|
15
|
+
/** Optional description for the preview. */
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
interface PreviewEmbedContextValue {
|
|
19
|
+
/** Current preview info, or null if no preview is active. */
|
|
20
|
+
preview: PreviewInfo | null;
|
|
21
|
+
/** Open a preview panel with the given info. */
|
|
22
|
+
openPreview: (info: PreviewInfo) => void;
|
|
23
|
+
/** Close the active preview panel. */
|
|
24
|
+
closePreview: () => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns the preview embed context.
|
|
28
|
+
* Returns null if used outside a PreviewEmbedProvider (non-throwing for optional usage).
|
|
29
|
+
*/
|
|
30
|
+
declare function usePreviewEmbed(): PreviewEmbedContextValue | null;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Detects whether the viewport is mobile-sized.
|
|
34
|
+
* Ignores height-only changes (e.g. virtual keyboard) and only reacts
|
|
35
|
+
* when width actually crosses the breakpoint.
|
|
36
|
+
*
|
|
37
|
+
* SSR-safe: returns false during server rendering.
|
|
38
|
+
*/
|
|
39
|
+
declare function useIsMobile(): boolean;
|
|
40
|
+
|
|
41
|
+
interface UseImageLoaderReturn {
|
|
42
|
+
/** Whether the image has finished loading. */
|
|
43
|
+
loaded: boolean;
|
|
44
|
+
/** Callback to set loaded state to true. Pass as `onLoad` to an `<img>`. */
|
|
45
|
+
onLoad: () => void;
|
|
46
|
+
/** Reset loaded state to false. */
|
|
47
|
+
reset: () => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Tracks load state for a single image element.
|
|
51
|
+
*/
|
|
52
|
+
declare function useImageLoader(): UseImageLoaderReturn;
|
|
53
|
+
interface UseMultiImageLoaderReturn {
|
|
54
|
+
/** Check if a specific image has loaded. */
|
|
55
|
+
isLoaded: (key: string) => boolean;
|
|
56
|
+
/** Returns a callback for the given key to mark it as loaded. */
|
|
57
|
+
onLoad: (key: string) => () => void;
|
|
58
|
+
/** Reset a specific image's loaded state. */
|
|
59
|
+
reset: (key: string) => void;
|
|
60
|
+
/** Reset all images' loaded states. */
|
|
61
|
+
resetAll: () => void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Tracks load state for multiple images by key.
|
|
65
|
+
*/
|
|
66
|
+
declare function useMultiImageLoader(): UseMultiImageLoaderReturn;
|
|
67
|
+
|
|
68
|
+
interface UsePaginationOptions<T> {
|
|
69
|
+
/** The full list of items to paginate. */
|
|
70
|
+
items: T[];
|
|
71
|
+
/** Number of items per page. */
|
|
72
|
+
itemsPerPage: number;
|
|
73
|
+
/** Optional callback when the page changes. */
|
|
74
|
+
onPageChange?: (direction: "next" | "prev", newPage: number, totalPages: number) => void;
|
|
75
|
+
}
|
|
76
|
+
interface UsePaginationReturn<T> {
|
|
77
|
+
/** Current page index (0-based). */
|
|
78
|
+
page: number;
|
|
79
|
+
/** Total number of pages. */
|
|
80
|
+
totalPages: number;
|
|
81
|
+
/** Items for the current page. */
|
|
82
|
+
currentItems: T[];
|
|
83
|
+
/** Go to the next page. */
|
|
84
|
+
goNext: () => void;
|
|
85
|
+
/** Go to the previous page. */
|
|
86
|
+
goPrev: () => void;
|
|
87
|
+
/** Go to a specific page (0-based). */
|
|
88
|
+
goToPage: (page: number) => void;
|
|
89
|
+
/** Whether the current page is the first page. */
|
|
90
|
+
isFirstPage: boolean;
|
|
91
|
+
/** Whether the current page is the last page. */
|
|
92
|
+
isLastPage: boolean;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Generic pagination hook for any list of items.
|
|
96
|
+
*/
|
|
97
|
+
declare function usePagination<T>({ items, itemsPerPage, onPageChange, }: UsePaginationOptions<T>): UsePaginationReturn<T>;
|
|
98
|
+
|
|
99
|
+
interface UseSliderDragOptions {
|
|
100
|
+
/** Ref to the container element. */
|
|
101
|
+
containerRef: RefObject<HTMLDivElement | null>;
|
|
102
|
+
/** Initial slider position as a percentage (0-100). Defaults to 50. */
|
|
103
|
+
initialPosition?: number;
|
|
104
|
+
/** Minimum allowed position. Defaults to 0. */
|
|
105
|
+
minPosition?: number;
|
|
106
|
+
/** Maximum allowed position. Defaults to 100. */
|
|
107
|
+
maxPosition?: number;
|
|
108
|
+
}
|
|
109
|
+
interface UseSliderDragReturn {
|
|
110
|
+
/** Current slider position as a percentage (0-100). */
|
|
111
|
+
sliderPosition: number;
|
|
112
|
+
/** Whether the user is currently dragging. */
|
|
113
|
+
isDragging: boolean;
|
|
114
|
+
/** Call this on mousedown/touchstart to begin dragging. */
|
|
115
|
+
handleMouseDown: () => void;
|
|
116
|
+
/** Programmatically set the slider position. */
|
|
117
|
+
setSliderPosition: (position: number) => void;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Handles mouse and touch drag interactions for a horizontal slider.
|
|
121
|
+
* SSR-safe: event listeners are only attached in the browser.
|
|
122
|
+
*/
|
|
123
|
+
declare function useSliderDrag({ containerRef, initialPosition, minPosition, maxPosition, }: UseSliderDragOptions): UseSliderDragReturn;
|
|
124
|
+
|
|
125
|
+
type OrderStatus = "idle" | "pending" | "added" | "error";
|
|
126
|
+
interface UseOrderTrackingOptions {
|
|
127
|
+
/** Product ID to track. */
|
|
128
|
+
productId?: string;
|
|
129
|
+
}
|
|
130
|
+
interface UseOrderTrackingReturn {
|
|
131
|
+
/** Current order status. */
|
|
132
|
+
orderStatus: OrderStatus;
|
|
133
|
+
/** Error message if status is "error". */
|
|
134
|
+
orderError: string | null;
|
|
135
|
+
/** Mark the order as pending. */
|
|
136
|
+
startOrder: () => void;
|
|
137
|
+
/** Reset to idle state. */
|
|
138
|
+
reset: () => void;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Tracks a single product order status via the `caesarstone:order-sample-complete` custom event.
|
|
142
|
+
* SSR-safe: event listeners are only attached in the browser.
|
|
143
|
+
*/
|
|
144
|
+
declare function useOrderTracking({ productId, }: UseOrderTrackingOptions): UseOrderTrackingReturn;
|
|
145
|
+
interface UseMultiOrderTrackingReturn {
|
|
146
|
+
/** Get status for a specific product. */
|
|
147
|
+
getStatus: (productId: string) => OrderStatus;
|
|
148
|
+
/** Get error message for a specific product. */
|
|
149
|
+
getError: (productId: string) => string | undefined;
|
|
150
|
+
/** Mark a product order as pending. */
|
|
151
|
+
startOrder: (productId: string) => void;
|
|
152
|
+
/** Reset a specific product's order status. */
|
|
153
|
+
reset: (productId: string) => void;
|
|
154
|
+
/** Reset all tracked products. */
|
|
155
|
+
resetAll: () => void;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Tracks multiple product order statuses via the `caesarstone:order-sample-complete` custom event.
|
|
159
|
+
* SSR-safe: event listeners are only attached in the browser.
|
|
160
|
+
*/
|
|
161
|
+
declare function useMultiOrderTracking(): UseMultiOrderTrackingReturn;
|
|
162
|
+
|
|
163
|
+
export { useImageLoader, useIsMobile, useMultiImageLoader, useMultiOrderTracking, useOrderTracking, usePagination, usePreviewEmbed, useSliderDrag };
|