@callimacus/thamyr-react 4.5.0 → 4.6.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/CHANGELOG.core.md CHANGED
@@ -3,6 +3,13 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.6.0](https://github.com/callimacus/thamyr-sdk/compare/thamyr-core-v4.5.0...thamyr-core-v4.6.0) (2026-10-13)
7
+
8
+
9
+ ### Features
10
+
11
+ * **react:** component actions — actionOf, useActions and a delivered submit ([#819](https://github.com/callimacus/thamyr-sdk/issues/819)) ([2876ca4](https://github.com/callimacus/thamyr-sdk/commit/2876ca4ca1af0bbc4024488595036e2063765554))
12
+
6
13
  ## [4.5.0](https://github.com/callimacus/thamyr-sdk/compare/thamyr-core-v4.4.1...thamyr-core-v4.5.0) (2026-10-12)
7
14
 
8
15
 
package/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.6.0](https://github.com/callimacus/thamyr-sdk/compare/thamyr-react-v4.5.0...thamyr-react-v4.6.0) (2026-10-13)
7
+
8
+
9
+ ### Features
10
+
11
+ * **react:** component actions — actionOf, useActions and a delivered submit ([#819](https://github.com/callimacus/thamyr-sdk/issues/819)) ([2876ca4](https://github.com/callimacus/thamyr-sdk/commit/2876ca4ca1af0bbc4024488595036e2063765554))
12
+
13
+
14
+ ### Dependencies
15
+
16
+ * The following workspace dependencies were updated
17
+ * dependencies
18
+ * @callimacus/thamyr bumped from ^4.5.0 to ^4.6.0
19
+ * @callimacus/thamyr-core bumped from ^4.5.0 to ^4.6.0
20
+
6
21
  ## [4.5.0](https://github.com/callimacus/thamyr-sdk/compare/thamyr-react-v4.4.1...thamyr-react-v4.5.0) (2026-10-12)
7
22
 
8
23
 
@@ -0,0 +1,9 @@
1
+ /*!
2
+ * Copyright © 2025–2026 Solomei AI SRL. All rights reserved.
3
+ *
4
+ * Proprietary software, licensed for use by Callimacus customers only.
5
+ * See LICENSE.md for the full terms.
6
+ *
7
+ */
8
+ import{Thamyr as e}from"@callimacus/thamyr";import{callimacusService as t,ThamyrResponseType as n,applyBlockPatch as r}from"@callimacus/thamyr-core";import o from"react";const s=e=>{let t;const n=new Set,r=(e,r)=>{const o="function"==typeof e?e(t):e;if(!Object.is(o,t)){const e=t;t=(null!=r?r:"object"!=typeof o||null===o)?o:Object.assign({},t,o),n.forEach(n=>n(t,e))}},o=()=>t,s={setState:r,getState:o,getInitialState:()=>i,subscribe:e=>(n.add(e),()=>n.delete(e))},i=t=e(r,o,s);return s},i=e=>e;const a=e=>{const t=(e=>e?s(e):s)(e),n=e=>function(e,t=i){const n=o.useSyncExternalStore(e.subscribe,o.useCallback(()=>t(e.getState()),[e,t]),o.useCallback(()=>t(e.getInitialState()),[e,t]));return o.useDebugValue(n),n}(t,e);return Object.assign(n,t),n},c=e=>e?a(e):a;function d(e,t){for(const n of e)try{n(t)}catch(e){console.error("[Thamyr] Listener threw:",e)}}function u(e,t){let o=!1;const s=e.map(e=>{if(e.type!==n.CHAPTER_EVENT)return e;const s=r(e.chapter,t);return s===e.chapter?e:(o=!0,{...e,chapter:s})});return o?s:e}const l=c()((r,o)=>{let s,i=0;const a=new Set,c=new Set,l=new Set;return{connectionStatus:"idle",messages:[],storyId:void 0,error:void 0,_initialized:!1,_thamyr:void 0,init(m){if(o()._initialized)return;if("undefined"==typeof window)return void console.debug("[Thamyr] init() skipped: no browser environment detected (SSR).");const{clientId:y}=m;if(!y){console.error("[Thamyr] clientId is required. Pass your Callimacus Client ID (`cal-pk-…`) to useInitThamyr().");const e={code:0,message:"clientId is required. Pass your Callimacus Client ID (`cal-pk-…`) to useInitThamyr()."};return r({connectionStatus:"error",error:e}),d(l,e),void d(c,"error")}void 0!==m.maxMessages&&m.maxMessages<0&&console.warn("[Thamyr] maxMessages must be >= 0. Received:",m.maxMessages,". Clamping to 1.");const h=0===m.maxMessages?1/0:Math.max(1,m.maxMessages??50);let f;r({connectionStatus:"connecting",error:void 0});try{f=new e({clientId:y,endpoint:m.endpoint,uiObserver:m.uiObserver})}catch(e){console.error("[Thamyr] Failed to create Thamyr instance:",e);const t={code:0,message:e instanceof Error?e.message:String(e)};return r({connectionStatus:"error",error:t}),d(l,t),void d(c,"error")}const w=++i;f.onResponse(e=>{i===w&&(e.type===n.BLOCK_PATCH?r(t=>({messages:u(t.messages,e.data)})):r(t=>{const r=[...t.messages,e];return{messages:r.length>h?r.slice(-h):r,...e.type===n.STORY_CREATED&&{storyId:e.story.id}}}),d(a,e))}),f.onError(e=>{i===w&&(r({error:e,connectionStatus:"error"}),d(l,e),d(c,"error"))}),s=t.onConnectionStatus(e=>{if(i!==w)return;const t=e?"connected":"disconnected";r({connectionStatus:t}),d(c,t)}),function(e){r({_initialized:Boolean(e),_thamyr:e})}(f)},reset(){if(o()._initialized){i++;try{s?.()}catch(e){console.error("[Thamyr] Error unsubscribing connection status listener:",e)}try{t.disconnect()}catch(e){console.error("[Thamyr] Error disconnecting:",e)}s=void 0,r({_initialized:!1,_thamyr:void 0,connectionStatus:"idle",messages:[],storyId:void 0,error:void 0})}else"idle"!==o().connectionStatus&&r({connectionStatus:"idle",error:void 0})},sendEvent(e,t){const n=o()._thamyr;if(!n)throw new Error("[Thamyr] SDK is not initialized yet. Ensure useInitThamyr() has been called.");const{connectionStatus:s}=o();if("connected"!==s){const e={code:0,message:`Cannot send event: connection status is "${s}". Wait for connected status before sending.`};throw r({error:e}),d(l,e),new Error(e.message)}n.sendUserInteraction(e,t)},sendAudio(e,t){const n=o()._thamyr;if(!n)throw new Error("[Thamyr] SDK is not initialized yet. Ensure useInitThamyr() has been called.");const{connectionStatus:s}=o();if("connected"!==s){const e={code:0,message:`Cannot send audio: connection status is "${s}". Wait for connected status before sending.`};throw r({error:e}),d(l,e),new Error(e.message)}n.sendAudio(e,t)},addResponseListener:e=>(a.add(e),()=>{a.delete(e)}),addConnectionListener:e=>(c.add(e),()=>{c.delete(e)}),addErrorListener:e=>(l.add(e),()=>{l.delete(e)})}});let m=!1,y=0;const h=new Set;function f(){m=!0}function w(){y++,m=!0}function g(){y--,queueMicrotask(()=>{if(y>0)return;m=!1;const e=[...h];h.clear();for(const t of e)t(new Error("[Thamyr] SDK was torn down: useInitThamyr() unmounted while this call was waiting for initialization."))})}function S(e){return new Error(`[Thamyr] SDK initialization failed: ${e?.message??"unknown error"}`)}async function p(){if("undefined"==typeof window)throw new Error("[Thamyr] The generated API is browser-only; this call ran without a browser environment (SSR).");const e=l.getState();if(e._thamyr)return e._thamyr;if(!m)throw new Error("[Thamyr] SDK is not initialized and no useInitThamyr() is mounted. Add useInitThamyr({clientId: 'cal-pk-…'}) to your root component.");if("error"===e.connectionStatus)throw S(e.error);return new Promise((e,t)=>{let n=!1;const r=e=>{n||(n=!0,s(),h.delete(o),e())},o=e=>{r(()=>{t(e)})};h.add(o);const s=l.subscribe(n=>{if(n._thamyr){const t=n._thamyr;r(()=>{e(t)})}else"error"===n.connectionStatus&&r(()=>{t(S(n.error))})})})}const b=new Set(["then","catch","finally","toJSON"]),T=new Set(Object.getOwnPropertyNames(Object.prototype));function E(e){return"string"!=typeof e||T.has(e)}const v=new Map,I=new Proxy({},{get(e,t){if(E(t))return Reflect.get(e,t);if(b.has(t))return;const n=t;let r=v.get(n);return void 0===r&&(r=function(e){const t=new Map;return new Proxy({},{get(n,r){if(E(r))return Reflect.get(n,r);if(b.has(r))return;const o=r;let s=t.get(o);return void 0===s&&(s=async(...t)=>{const n=(await p())[e],r=n?.[o];if("function"!=typeof r)throw new TypeError(`[Thamyr] ${e}.${o} is not part of the generated API surface.`);return Reflect.apply(r,n,t)},t.set(o,s)),s}})}(n),v.set(n,r)),r}});export{f as a,w as b,c,g as m,I as t,l as u,p as w};
9
+ //# sourceMappingURL=api-Cot7UUo0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-Cot7UUo0.js","sources":["../../../../../node_modules/zustand/esm/vanilla.mjs","../../../../../node_modules/zustand/esm/react.mjs","../../../../src/callimacus/store.ts","../../../../src/callimacus/api.ts"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n",null,null],"names":["createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","Object","is","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","subscribe","add","delete","identity","arg","createImpl","createStore","useBoundStore","selector","slice","React","useSyncExternalStore","useCallback","useDebugValue","useStore","create","notifyListeners","error","console","patchedHistory","messages","patch","isPatched","patched","map","message","type","ThamyrResponseType","CHAPTER_EVENT","chapter","applyBlockPatch","useCallimacusStore","set","get","unsubConnectionStatus","generation","responseListeners","connectionListeners","errorListeners","connectionStatus","storyId","undefined","_initialized","_thamyr","init","config","window","debug","clientId","errorMessage","code","maxMessages","warn","Infinity","Math","max","thamyr","Thamyr","endpoint","uiObserver","Error","String","currentGen","onResponse","response","BLOCK_PATCH","data","length","STORY_CREATED","story","id","onError","callimacusService","onConnectionStatus","connected","status","Boolean","setInitState","reset","disconnect","sendEvent","payload","sendUserInteraction","sendAudio","audio","query","addResponseListener","cb","addConnectionListener","addErrorListener","wasInitRequested","mountedInitOwners","pendingRejecters","markInitRequested","markInitOwnerMounted","markInitOwnerUnmounted","queueMicrotask","rejecters","clear","rejectWaiter","initError","async","waitForInstance","Promise","resolve","reject","isSettled","settle","action","unsubscribe","rejecter","current","instance","blockedNames","objectPrototypeMembers","getOwnPropertyNames","prototype","isPassthroughProperty","property","has","namespaces","Map","thamyrApi","Proxy","target","Reflect","name","namespace","namespaceName","methods","method","args","fn","TypeError","apply","createNamespaceFacade"],"mappings":"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","x_google_ignoreList":[0,1]}
package/dist/esm/index.js CHANGED
@@ -5,5 +5,5 @@
5
5
  * See LICENSE.md for the full terms.
6
6
  *
7
7
  */
8
- import{UserInteractionType as n,interactionRound as t,landingRound as e}from"@callimacus/thamyr-core";export{ADD_TO_CART_RESULT_BLOCK,CallimacusEvent,ChapterStatus,ClientEvents,GalleryMode,LANDING_VALUE_MAX_LENGTH,SLInputEventType,ServerEvents,ThamyrHttpError,ThamyrResponseType,UserInteractionType,addToCartResultOf,applyBlockPatch,blockKeyOf,callimacusService,clearIntentSessionId,ensureIntentSessionId,extractTtsAudio,getIntentSessionId,initIntent,interactionRound,isSetProduct,landingRound,logger,receptorsOf,setConsent,setDebug,setDebugPanel,setGeo,setIntentSessionMaxAge,transformImageUrl}from"@callimacus/thamyr-core";import{jsx as r,jsxs as a}from"react/jsx-runtime";import{useMemo as i,useEffect as o,useState as c,useRef as s,useCallback as l}from"react";import{t as d,w as u,u as m,m as v,a as p,b as h}from"./chunks/api-PeedNYnN.js";import"@callimacus/thamyr";function g(n,t){const e=s(t);e.current=t,o(()=>n(n=>{e.current(n)}),[n])}function b(n){const t=m(n=>n.init),e=m(n=>n.reset);p(),o(()=>(h(),t(n),()=>{e(),v()}),[t,e,n.clientId,n.endpoint])}function f(){const r=m(n=>n.messages),a=m(n=>n.sendEvent),o=m(n=>n.sendAudio),c=i(()=>({openLanding(t,r={}){a(n.CREATE_ROUND,e(t,r))},sendInteraction(e,r={}){a(n.CREATE_ROUND,t(e,r))},refresh(e,r,i={}){a(n.CREATE_ROUND,t(r,{...i,block:e}))}}),[a]);return{history:r,sendEvent:a,sendAudio:o,...c}}const y={suggestions:[],loading:!1};function q(n,t={}){const{storyId:e,language:r,debounceMs:a=200}=t,i=m(n=>"connected"===n.connectionStatus),[s,l]=c(y),[d,u]=c(i);return d!==i&&(u(i),i||l(y)),o(()=>{if(!i)return;let t=!1;const o=setTimeout(()=>{l(n=>({...n,loading:!0}));(m.getState()._thamyr?.suggest(n,{storyId:e,language:r})??Promise.resolve(y)).then(({suggestions:n})=>{t||l({suggestions:n,loading:!1})}).catch(()=>{t||l(y)})},""===n?0:a);return()=>{t=!0,clearTimeout(o)}},[n,e,r,a,i]),i?s:y}function w(){return{status:m(n=>n.connectionStatus)}}function x(n){g(m(n=>n.addResponseListener),n)}function _(n){g(m(n=>n.addConnectionListener),n)}function z(n){g(m(n=>n.addErrorListener),n)}function L(){return i(()=>({getCart:async()=>(await u()).cart.getCart(),addItem:async n=>(await u()).cart.addItemToCart({productId:n}),removeItem:async n=>(await u()).cart.removeItemFromCart({productId:n}),updateQuantity:async(n,t)=>(await u()).cart.updateProductQuantity({productId:n,quantity:t})}),[])}function k(){return d}function E(){return i(()=>({similar:async(n,t)=>(await u()).skesis.similar({anchorId:n,...t}),related:async(n,t)=>(await u()).skesis.related({anchorId:n,...t})}),[])}function T(){return i(()=>({getSitemap:async()=>(await u()).sitemap.getSitemap()}),[])}const C=-45,I=1800,S=3e4;function A({silenceThreshold:n=C,silenceDuration:t=I,maxDuration:e=S,onRecordingComplete:r}){const[a,i]=c("idle"),[d,u]=c([]),[m,v]=c(void 0),p=s(void 0),h=s(void 0),g=s(void 0),b=s(void 0),f=s(0),y=s(0),q=s(void 0),w=s([]),x=s(!1),_=l(()=>{if(0!==f.current&&(cancelAnimationFrame(f.current),f.current=0),void 0!==q.current&&(clearTimeout(q.current),q.current=void 0),b.current){for(const n of b.current.getTracks())n.stop();b.current=void 0}"closed"!==h.current?.state&&h.current?.close(),h.current=void 0,g.current=void 0,p.current=void 0,x.current=!1},[]);o(()=>_,[_]);const z=l(()=>{x.current||(x.current=!0,"recording"===p.current?.state&&p.current.stop(),0!==f.current&&(cancelAnimationFrame(f.current),f.current=0),void 0!==q.current&&(clearTimeout(q.current),q.current=void 0))},[]),L=l(async()=>{v(void 0),w.current=[],x.current=!1;try{const a=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,sampleRate:16e3}});b.current=a;const o=new AudioContext({sampleRate:16e3});h.current=o;const c=o.createMediaStreamSource(a),s=o.createAnalyser();s.fftSize=256,s.smoothingTimeConstant=.7,c.connect(s),g.current=s;const l=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":"audio/webm",d=new MediaRecorder(a,{mimeType:l});p.current=d,d.addEventListener("dataavailable",n=>{n.data.size>0&&w.current.push(n.data)}),d.addEventListener("stop",()=>{i("processing");const n=new Blob(w.current,{type:l});_(),r(n)}),d.start(250),i("recording"),y.current=0,q.current=setTimeout(()=>{z()},e);const m=()=>{if(!g.current||x.current)return;const e=g.current.frequencyBinCount,r=new Uint8Array(e);g.current.getByteFrequencyData(r);const a=Math.floor(e/32),i=[];for(let n=0;n<32;n++){let t=0;for(let e=0;e<a;e++)t+=r[n*a+e];i.push(t/a/255)}u(i);let o=0;for(const n of r){const t=n/255;o+=t*t}const c=Math.sqrt(o/e);if((c>0?20*Math.log10(c):-100)<n){if(0===y.current)y.current=Date.now();else if(Date.now()-y.current>t)return void z()}else y.current=0;f.current=requestAnimationFrame(m)};m()}catch{v("Microphone access denied"),i("idle"),_()}},[n,t,e,r,z,_]),k=l(()=>{i("idle"),u([])},[]);return{state:a,audioLevels:d,startRecording:L,stopRecording:z,reset:k,error:m}}function M(n){const t=s(void 0),[e,r]=c("idle"),[a,i]=c(void 0);o(()=>{const e=n?.audioUrl;if("undefined"==typeof Audio||void 0===e||""===e)return t.current=void 0,void r("idle");const a=new Audio(e);a.preload="none",t.current=a,r("idle"),i(void 0);const o=()=>{r("playing")},c=()=>{r("loading")},s=()=>{r(n=>"ended"===n?n:"paused")},l=()=>{r("ended")},d=()=>{i("Audio playback failed"),r("error")};return a.addEventListener("playing",o),a.addEventListener("waiting",c),a.addEventListener("pause",s),a.addEventListener("ended",l),a.addEventListener("error",d),()=>{a.pause(),a.removeEventListener("playing",o),a.removeEventListener("waiting",c),a.removeEventListener("pause",s),a.removeEventListener("ended",l),a.removeEventListener("error",d),a.src="",t.current=void 0}},[n?.audioUrl]);const d=l(async()=>{const n=t.current;if(n)try{i(void 0),r("loading"),await n.play()}catch{i("Audio playback failed"),r("error")}},[]),u=l(()=>{t.current?.pause()},[]),m=l(()=>{const n=t.current;n&&(n.pause(),n.currentTime=0,r("idle"))},[]),v=l(()=>{const n=t.current;n&&(n.paused?d():n.pause())},[d]);return{state:e,isPlaying:"playing"===e||"loading"===e,error:a,play:d,pause:u,toggle:v,stop:m}}function R(n){return r("svg",{viewBox:"0 0 40 45",fill:"currentColor",role:"img","aria-label":"Callimacus",...n,children:r("path",{d:"M39.2 21.6q.8-.6.8-1 0-.2-.3-.2h-1.3l-.5.1h-.3c-.3-.2-.6-1-.9-1.5l-.5-1q-.2-.2-.4-.2t-.3.2l-.2 1.2-.4 1.5h-.1l-.3-.3-.4-.3q-1.5-1.9-2.7-3.8Q27.7 11 23.3 6l-.9-1.1q.1-.4.7-1l.5-.5v-.5l-.4-.1-1 .1h-.4q-.7-.1-.9-1.3-.2-1-.6-1.4L20 0q-.5.4-.6 1.3-.2.8-.5 1-.5.3-1.7.2l-1 .1v.7q0 .3.6.5c.4.2 1 .5 1 .8q-.2.4-1 .8l-.3.3-1.1 1-1 1L13 8.9c-1.9 1.7-4 3.5-5.4 5.7l-2.3.8q-.6-.2-.8-.9h-.4q-.2 0-.1 1v.6l-.1.2v.7L1 18.1v.3l.3.2 2.7.2.5 2.3-.4 2.8-.5 4.2v.3l.1.3-.1.3-.2.3-.1.3c0 .3-.3 1-.4 1H0v.2q0 .3.2.4l.9.5q1 .3 1.3.9l-.2 1-.2.3q-.5.8-.4 1l.1.2q.7-.1 1.6-1l1.2-.8 1.7 2H7v-.1L6.5 33h.1l8.3 4.7.8.5 1.3.7q1 .5 2 1.3h.1H18l-.8.2-.1.2.2.4h.1l.4.5.3.4.5.3.7.4v.2q-.7 1-.6 2v.2h.2c.3 0 1.2-.8 1.4-1l.3-.4q.3-.5.6-.6.6.2 1.4.9l1 .6h.4V44l-.4-1-.3-.8.7-.4.3-.2 1-.7v-.6l-.3-.1h-2V40l.6-1 .5-.7 6-8.1 1-1.5c1.2-1.7 2.6-4 3.1-4.2v1l.2.1h.1l.8-.7c.5-.4 1.2-1 1.4-1l.6.3 1.3 1q.3.5.6.5l.2-.1c.1 0 0-.4-.6-2.2l-.4-1 .5-.6zM17.7 3.7l-.4-.3q-.3 0-.4-.3h1q1 0 1.4-.2l.5-1.2.3-.7V.9l.3.9q.3 1 .6 1.4.1.3.7.2h1L21.4 5l.3 2-.1-.1-.9-1-.2-.2-.1-.2q-.1-.4-.5-.4h-.3v.2c-.3.5-1.2 1.3-1.4 1.5q0-.6.4-1.4v-.1q.4-.3 0-.8zM8 15.5l.4-.8.3-.7c.9-1.4 3.1-3.4 4.7-4.8l4-3.5.4-.3-.6 2.3.3.1c.5 0 1.1-.7 1.6-1.2L20 6l.7.8q.5.7 1.1 1l.5.2q.1 0 .2-.2.2-.3-.1-1.5l-.2-.8a42 42 0 0 1 6.3 8l1.8 2.2 3 4 .4 1-1.4-.1q-1.2 0-2.5-.2-3.1-.5-6.7-.7l-3.4-.6.9-12.5h-.3l-.4.1v1.4l-.3 3.7-.3 3.3V18q-.3.5-.3 1.1l-4.7-.7-1-.2-2-.4h-1l-1 .1q-.9 0-1.6-.4l-.5-.5.4-.5zm13.1 11.9h-1l-.3-.1-.4-.2h-.2q-.5 0-1 .4l-.7.4-.1-.1q0-.3.2-.8l.1-1q-.2-.4-1.1-.4l-1-.2v-.1l.6-.2q.6 0 1-.4l.2-1.1.2-.9 1.2 1.5q.7-.1 1.2-.5l1.2-.5-.5 1.6-.3.5-.4.9q.1.3.5.4l.4.2zM14 18.9l2.1.3 2.7.5q.2.9 0 1.8l-.1 1.4-.9-1.2-.2-.3h-.2q-.4 0-.3.6v.3l-.4 1.5-2-1q-1.5-.6-2.7-1.3l-1.3-.9-1-.7-.7-.4-1.2-.7h1.2l.3-.3q.6-.2 1.3-.2 1.2 0 2.4.4zm-5.5 1 1.6 1 1.3 1 2.3 1.2 2.5 1.3-.4.2h-.2l-.2.2q-.5 0-1 .4-.1 0-.2.2 0 .3.2.3l1 .2.8.2a25 25 0 0 1-4 2h-.2l-1-1.6q-.7-.7-1.2-1.6c-1.1-1.7-2.6-4-3.5-5.8v-.2zm10.8 3.6v-2.2zm1.7 2.1.4-1q.7-1.3.6-1.7t-.4-.4l-2.3.9.2-3.6h.8l1.4.2.9.2q1.5.3 3 .2l2.3.2.8.2.6.2 1 .1a6 6 0 0 1 2.7.8l1 .5-3.8 1.3zM4.5 18.1H2.8l2-.9V17l-.2-.3v-1q.3 0 .2.4l.2.1 1.2-.4 1.4-.5L6.3 17q.5.7 1 .9l.5.2-1 .2-.5-.2-.6-.1-.5.1v.6q.3.2.2.3L5 20.3l-.1-.9zm.6 3.9q.3-.1.4-.4l.2-.9.2-1.2 5.7 9h-.3l-1.7.8q-1.4.9-2.2 1l-.4.1H5.6l-.1-.2L5 29v-.6l-.2-.6-.2-.2h-.1c-.1-.3.4-4.8.6-5.6M5.6 32q0 .6.3 1.1l.3 1L5 32.9l-.4-.3q-.3 0-.4.3l-.2.1q-.7.5-1.3.9l.5-1.8-.2-.1q-.7-.2-1.2-.7H2l.6.1.5.2.2-.1.5-1 .5-1.4.5 1.1.3 1h.3l.3-.1.1-.1L7 31v.2zm1 .1 1-.5.8-.5q.3-.2.2-.4v-.1l-.2-.1 2.7-1.4.9-.2 6.8 10.2zm6-3.5 4.2-2h.3l-.3 1-.3 1q0 0 .2.3l.3.1h.2l.2-.3.4-.3.6-.3.6-.2.4 1.7v1.8l-.1 1.3v2q.2 2.1 0 4v.1zM23 40.8h1l-.3.4-.5.2-.4.3h-.2l-.5.4v.1q.5.3.6.8l.2.3q-.3-.1-.8-.5l-1-.5H21L19.3 44q.1-.6.4-1h.2l.2-.3v-.5q-.3-.2-.5-.2h-.3c-.3-.2-1-.7-1.1-1h1.1l.6.1.5-.1.8-2.3.2.8q.1 1 .5 1.3H23m-3.2.2h.1m14.3-17.3-8.6 11.6-1 1.5-2.1 2.8-.3.2-.3-1.2q-.1-1.2-.4-1.3l-.2-.1H21l-1 2.4v-5.9l-.2-5.7 1.8.1.2.1.7.1h.3V28l-.4-.4-.3-.2-.8-1.1L27 25l1.2-.2 2-.5 1.1-.3c1-.4 2.6-.9 3-.9h.1q0 .3-.3.5m4.2-2.1-.4.3-.8.7q.1.4.4.3h.2l.6 1.4-1.8-1.2q-.4 0-.4.3v.1l-1.2.9q0-.8.4-1.4h.1q.3-.2.2-.5-.3-.5-1.2-.7-.8 0-1.1-.5h1l.7.2.5-.1q0-1.4.5-2.4c.2.3.8 1.4.9 1.9v.1l-.1.2h.2l1.8-.2zm-19 1.9.2-2.2zm1.8 3.9zm1.5.9h-.1m.3 15zm12.9-25.5"})})}function D({onSubmit:n,value:t,onValueChange:e,placeholder:i="Ask anything…",sendLabel:o="Send",sendIcon:s,actions:l,tint:d,font:u,loading:m=!1,disabled:v=!1,autoFocus:p,className:h="",style:g}){const[b,f]=c(""),y=t??b,q=n=>{f(n),e?.(n)},w=y.trim(),x=""!==w&&!m&&!v;return a("form",{className:`cm-bar ${h}`.trimEnd(),style:{"--cm-tint":d,"--cm-font":u,...g},"aria-busy":m,onSubmit:t=>{t.preventDefault(),x&&(n(w),q(""))},children:[r("style",{children:H}),r(R,{className:"cm-bar-mark"}),r("textarea",{className:"cm-bar-input",rows:1,value:y,placeholder:i,"aria-label":i,enterKeyHint:"send",disabled:v,autoFocus:p,onChange:n=>{q(n.target.value)},onKeyDown:n=>{"Enter"!==n.key||n.shiftKey||n.nativeEvent.isComposing||(n.preventDefault(),n.currentTarget.form?.requestSubmit())}}),l,r("button",{type:"submit",className:"cm-bar-send",disabled:!x,"aria-label":o,children:s??r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:r("path",{d:"M12 19V5M5 12l7-7 7 7"})})})]})}const H="\n.cm-bar {\n\t--_tint: var(--cm-tint, linear-gradient(45deg, #d698c7, #ffc691, #a8dfdb, #ddada6));\n\t--_bg: var(--cm-bg, light-dark(#fff, #1c1c1e));\n\t--_fg: var(--cm-fg, light-dark(#212121, #f5f5f5));\n\t--_radius: var(--cm-radius, 1.75rem);\n\t--_size: var(--cm-size, 2.5rem);\n\t--_pad: var(--cm-padding, .375rem);\n\tposition: relative;\n\tisolation: isolate;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: .25rem;\n\tmargin: 0;\n\tpadding: var(--_pad);\n\tborder-radius: var(--_radius);\n\tcolor: var(--_fg);\n\tfont-family: var(--cm-font, inherit);\n\tfont-size: var(--cm-font-size, 1rem);\n\tline-height: 1.5;\n}\n\n.cm-bar::before,\n.cm-bar::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n\tz-index: -1;\n\tborder-radius: inherit;\n\tpointer-events: none;\n}\n\n/* Glow, shown on focus and animated while loading. */\n.cm-bar::before {\n\tinset: -2px;\n\tbackground: var(--_tint);\n\tbackground-size: 300% 100%;\n\tfilter: blur(10px);\n\topacity: 0;\n\ttransition: opacity .3s;\n}\n\n/* Surface with a tint border. */\n.cm-bar::after {\n\tborder: var(--cm-border-width, 1px) solid transparent;\n\tbackground: linear-gradient(var(--_bg) 0 0) padding-box, var(--_tint) border-box;\n\tbox-shadow: var(--cm-shadow, 0 15px 20px rgb(0 0 0 / .1));\n}\n\n.cm-bar:has(.cm-bar-input:disabled) {\n\topacity: .5;\n}\n\n.cm-bar:focus-within::before {\n\topacity: var(--cm-glow, .55);\n}\n\n.cm-bar[aria-busy='true']::before {\n\topacity: 1;\n\tanimation: cm-bar-flow 3s ease-in-out infinite;\n}\n\n/* The mark is the one fixed part of the bar: color and size are themable, hiding it is not. */\n.cm-bar-mark {\n\tflex: none;\n\tdisplay: block !important;\n\tvisibility: visible !important;\n\topacity: 1 !important;\n\twidth: calc(var(--_size) * .8);\n\theight: calc(var(--_size) * .8);\n\tmin-width: 1.25rem !important;\n\tmin-height: 1.25rem !important;\n\tmargin: calc(var(--_size) * .1) calc(var(--_size) * .05) calc(var(--_size) * .1) calc(var(--_size) * .15);\n\tcolor: var(--cm-mark-color, currentColor);\n}\n\n.cm-bar[aria-busy='true'] .cm-bar-mark {\n\tanimation: cm-bar-twinkle 1.5s ease-in-out infinite;\n}\n\n.cm-bar-input {\n\tflex: 1;\n\tmin-width: 0;\n\tmin-height: var(--_size);\n\tmax-height: 12rem;\n\tbox-sizing: border-box;\n\tmargin: 0;\n\tpadding: max(0px, calc((var(--_size) - 1lh) / 2)) .25rem;\n\tborder: 0;\n\toutline: 0;\n\tbackground: none;\n\tcolor: inherit;\n\tfont: inherit;\n\tresize: none;\n\tfield-sizing: content;\n}\n\n.cm-bar-input::placeholder {\n\tcolor: inherit;\n\topacity: .5;\n}\n\n.cm-bar-send {\n\tflex: none;\n\tbox-sizing: border-box;\n\tdisplay: grid;\n\tplace-items: center;\n\twidth: var(--_size);\n\theight: var(--_size);\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: max(0px, calc(var(--_radius) - var(--_pad)));\n\tbackground: linear-gradient(var(--_bg) 0 0) padding-box, var(--_tint) border-box;\n\tcolor: inherit;\n\tcursor: pointer;\n\ttransition: background .2s, color .2s, opacity .2s, transform .1s;\n}\n\n.cm-bar-send:enabled {\n\tbackground: linear-gradient(var(--cm-button-bg, var(--_fg)) 0 0) padding-box, var(--_tint) border-box;\n\tcolor: var(--cm-button-fg, var(--_bg));\n}\n\n.cm-bar-send:enabled:active {\n\ttransform: scale(.94);\n}\n\n.cm-bar-send:disabled {\n\tcursor: default;\n\topacity: .5;\n}\n\n.cm-bar-send:focus-visible {\n\toutline: 2px solid var(--_fg);\n\toutline-offset: 2px;\n}\n\n.cm-bar-send svg {\n\twidth: 45%;\n\theight: 45%;\n}\n\n@keyframes cm-bar-flow {\n\t50% {\n\t\tbackground-position: 100% 0;\n\t\topacity: .5;\n\t}\n}\n\n/* Transform only: the mark's opacity is pinned to 1. */\n@keyframes cm-bar-twinkle {\n\t50% {\n\t\ttransform: scale(.85) rotate(-10deg);\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.cm-bar::before,\n\t.cm-bar * {\n\t\tanimation: none !important;\n\t\ttransition: none !important;\n\t}\n}\n";export{D as CallimacusBar,R as CallimacusMark,d as thamyrApi,k as useApi,m as useCallimacusStore,L as useCart,w as useConnection,b as useInitThamyr,_ as useOnConnectionChange,z as useOnError,x as useOnResponse,T as useSitemap,E as useSkesis,q as useSuggestions,f as useThamyr,M as useTtsAudio,A as useVoiceRecorder};
8
+ import{UserInteractionType as t,interactionRound as n,landingRound as e,randomUuid as r,deliverResultOf as a}from"@callimacus/thamyr-core";export{ACTION_TYPES,ADD_TO_CART_RESULT_BLOCK,CallimacusEvent,ChapterStatus,ClientEvents,DELIVER_RESULT_BLOCK,GalleryMode,LANDING_VALUE_MAX_LENGTH,SLInputEventType,ServerEvents,ThamyrHttpError,ThamyrResponseType,UserInteractionType,actionOf,addToCartResultOf,applyBlockPatch,blockKeyOf,callimacusService,clearIntentSessionId,deliverResultOf,ensureIntentSessionId,extractTtsAudio,fieldsOf,getIntentSessionId,initIntent,interactionRound,isSetProduct,landingRound,logger,receptorsOf,setConsent,setDebug,setDebugPanel,setGeo,setIntentSessionMaxAge,transformImageUrl}from"@callimacus/thamyr-core";import{jsx as o,jsxs as i}from"react/jsx-runtime";import{useMemo as c,useEffect as s,useState as l,useRef as d,useCallback as u}from"react";import{t as m,w as v,u as p,m as h,a as b,b as g,c as f}from"./chunks/api-Cot7UUo0.js";import"@callimacus/thamyr";function y(t,n){const e=d(n);e.current=n,s(()=>t(t=>{e.current(t)}),[t])}function q(t){const n=p(t=>t.init),e=p(t=>t.reset);b(),s(()=>(g(),n(t),()=>{e(),h()}),[n,e,t.clientId,t.endpoint])}function w(){const r=p(t=>t.messages),a=p(t=>t.sendEvent),o=p(t=>t.sendAudio),i=c(()=>({openLanding(n,r={}){a(t.CREATE_ROUND,e(n,r))},sendInteraction(e,r={}){a(t.CREATE_ROUND,n(e,r))},refresh(e,r,o={}){a(t.CREATE_ROUND,n(r,{...o,block:e}))}}),[a]);return{history:r,sendEvent:a,sendAudio:o,...i}}const k={suggestions:[],loading:!1};function _(t,n={}){const{storyId:e,language:r,debounceMs:a=200}=n,o=p(t=>"connected"===t.connectionStatus),[i,c]=l(k),[d,u]=l(o);return d!==o&&(u(o),o||c(k)),s(()=>{if(!o)return;let n=!1;const i=setTimeout(()=>{c(t=>({...t,loading:!0}));(p.getState()._thamyr?.suggest(t,{storyId:e,language:r})??Promise.resolve(k)).then(({suggestions:t})=>{n||c({suggestions:t,loading:!1})}).catch(()=>{n||c(k)})},""===t?0:a);return()=>{n=!0,clearTimeout(i)}},[t,e,r,a,o]),o?i:k}function x(){return{status:p(t=>t.connectionStatus)}}function E(t){y(p(t=>t.addResponseListener),t)}function L(t){y(p(t=>t.addConnectionListener),t)}function T(t){y(p(t=>t.addErrorListener),t)}function z(){return c(()=>({getCart:async()=>(await v()).cart.getCart(),addItem:async t=>(await v()).cart.addItemToCart({productId:t}),removeItem:async t=>(await v()).cart.removeItemFromCart({productId:t}),updateQuantity:async(t,n)=>(await v()).cart.updateProductQuantity({productId:t,quantity:n})}),[])}function I(){return m}function C(){return c(()=>({similar:async(t,n)=>(await v()).skesis.similar({anchorId:t,...n}),related:async(t,n)=>(await v()).skesis.related({anchorId:t,...n})}),[])}function S(){return c(()=>({getSitemap:async()=>(await v()).sitemap.getSitemap()}),[])}const A=t=>({ok:!1,error:t});const R={state:"idle"},M=f(()=>({})),D=new Map;function O(){const e=p(t=>"connected"===t.connectionStatus),o=p(t=>t.storyId),i=p(t=>t.sendEvent),s=p(t=>t.addResponseListener),l=u(async(e,c={})=>{const l=c.storyId??o,d=n=>{try{return i(t.CREATE_ROUND,{...n,...void 0!==l&&{storyId:l}}),{ok:!0}}catch(t){return A(t)}};switch(e.type){case"link":return void 0===globalThis.location?A(new Error("[thamyr] a link action needs a browser")):(e.newTab?globalThis.open(e.url,"_blank","noopener"):globalThis.location.assign(e.url),{ok:!0});case"ask":return d({inputEvent:{type:"question",data:{value:e.value}}});case"interact":return d(n(e.id,{value:e.value,payload:e.payload,block:e.block}));case"cart":return async function(t){try{const{error:n}=await t;return void 0===n?{ok:!0}:A(n)}catch(t){return A(t)}}(v().then(async t=>t.cart.addItemToCart({productId:e.productId})));case"submit":{const t=r();D.set(e.form,t),M.setState({[e.form]:{state:"sending"}});const o=d({...n(e.form,{payload:c.fields??{},submissionId:t}),...void 0!==globalThis.document&&{context:{title:(u=globalThis.document.title,u.replaceAll(/\p{Control}/gv,"").slice(0,500).replace(/\p{Surrogate}$/v,""))}}}),i=o.ok?await async function(t,n){return new Promise(e=>{let r=()=>{};const o=setTimeout(()=>{r(),e(A("timeout"))},3e4);r=n(n=>{if("chapter-event"!==n.type||"customInteraction"!==n.chapter.inputEvent?.type||n.chapter.inputEvent.data.submissionId!==t)return;const i=(n.chapter.blocks??[]).map(t=>a(t)).find(n=>n?.submissionId===t);void 0!==i&&(clearTimeout(o),r(),e({ok:!0,result:i}))})})}(t,s):o;return D.get(e.form)===t&&M.setState({[e.form]:i.ok?{state:"done",result:i.result}:R}),i}}var u},[i,o,s]);return c(()=>({run:l,ready:e,storyId:o}),[l,e,o])}function N(t){return M(n=>n[t]??R)}const U=-45,H=1800,V=3e4;function B({silenceThreshold:t=U,silenceDuration:n=H,maxDuration:e=V,onRecordingComplete:r}){const[a,o]=l("idle"),[i,c]=l([]),[m,v]=l(void 0),p=d(void 0),h=d(void 0),b=d(void 0),g=d(void 0),f=d(0),y=d(0),q=d(void 0),w=d([]),k=d(!1),_=u(()=>{if(0!==f.current&&(cancelAnimationFrame(f.current),f.current=0),void 0!==q.current&&(clearTimeout(q.current),q.current=void 0),g.current){for(const t of g.current.getTracks())t.stop();g.current=void 0}"closed"!==h.current?.state&&h.current?.close(),h.current=void 0,b.current=void 0,p.current=void 0,k.current=!1},[]);s(()=>_,[_]);const x=u(()=>{k.current||(k.current=!0,"recording"===p.current?.state&&p.current.stop(),0!==f.current&&(cancelAnimationFrame(f.current),f.current=0),void 0!==q.current&&(clearTimeout(q.current),q.current=void 0))},[]),E=u(async()=>{v(void 0),w.current=[],k.current=!1;try{const a=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,sampleRate:16e3}});g.current=a;const i=new AudioContext({sampleRate:16e3});h.current=i;const s=i.createMediaStreamSource(a),l=i.createAnalyser();l.fftSize=256,l.smoothingTimeConstant=.7,s.connect(l),b.current=l;const d=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":"audio/webm",u=new MediaRecorder(a,{mimeType:d});p.current=u,u.addEventListener("dataavailable",t=>{t.data.size>0&&w.current.push(t.data)}),u.addEventListener("stop",()=>{o("processing");const t=new Blob(w.current,{type:d});_(),r(t)}),u.start(250),o("recording"),y.current=0,q.current=setTimeout(()=>{x()},e);const m=()=>{if(!b.current||k.current)return;const e=b.current.frequencyBinCount,r=new Uint8Array(e);b.current.getByteFrequencyData(r);const a=Math.floor(e/32),o=[];for(let t=0;t<32;t++){let n=0;for(let e=0;e<a;e++)n+=r[t*a+e];o.push(n/a/255)}c(o);let i=0;for(const t of r){const n=t/255;i+=n*n}const s=Math.sqrt(i/e);if((s>0?20*Math.log10(s):-100)<t){if(0===y.current)y.current=Date.now();else if(Date.now()-y.current>n)return void x()}else y.current=0;f.current=requestAnimationFrame(m)};m()}catch{v("Microphone access denied"),o("idle"),_()}},[t,n,e,r,x,_]),L=u(()=>{o("idle"),c([])},[]);return{state:a,audioLevels:i,startRecording:E,stopRecording:x,reset:L,error:m}}function P(t){const n=d(void 0),[e,r]=l("idle"),[a,o]=l(void 0);s(()=>{const e=t?.audioUrl;if("undefined"==typeof Audio||void 0===e||""===e)return n.current=void 0,void r("idle");const a=new Audio(e);a.preload="none",n.current=a,r("idle"),o(void 0);const i=()=>{r("playing")},c=()=>{r("loading")},s=()=>{r(t=>"ended"===t?t:"paused")},l=()=>{r("ended")},d=()=>{o("Audio playback failed"),r("error")};return a.addEventListener("playing",i),a.addEventListener("waiting",c),a.addEventListener("pause",s),a.addEventListener("ended",l),a.addEventListener("error",d),()=>{a.pause(),a.removeEventListener("playing",i),a.removeEventListener("waiting",c),a.removeEventListener("pause",s),a.removeEventListener("ended",l),a.removeEventListener("error",d),a.src="",n.current=void 0}},[t?.audioUrl]);const i=u(async()=>{const t=n.current;if(t)try{o(void 0),r("loading"),await t.play()}catch{o("Audio playback failed"),r("error")}},[]),c=u(()=>{n.current?.pause()},[]),m=u(()=>{const t=n.current;t&&(t.pause(),t.currentTime=0,r("idle"))},[]),v=u(()=>{const t=n.current;t&&(t.paused?i():t.pause())},[i]);return{state:e,isPlaying:"playing"===e||"loading"===e,error:a,play:i,pause:c,toggle:v,stop:m}}function F(t){return o("svg",{viewBox:"0 0 40 45",fill:"currentColor",role:"img","aria-label":"Callimacus",...t,children:o("path",{d:"M39.2 21.6q.8-.6.8-1 0-.2-.3-.2h-1.3l-.5.1h-.3c-.3-.2-.6-1-.9-1.5l-.5-1q-.2-.2-.4-.2t-.3.2l-.2 1.2-.4 1.5h-.1l-.3-.3-.4-.3q-1.5-1.9-2.7-3.8Q27.7 11 23.3 6l-.9-1.1q.1-.4.7-1l.5-.5v-.5l-.4-.1-1 .1h-.4q-.7-.1-.9-1.3-.2-1-.6-1.4L20 0q-.5.4-.6 1.3-.2.8-.5 1-.5.3-1.7.2l-1 .1v.7q0 .3.6.5c.4.2 1 .5 1 .8q-.2.4-1 .8l-.3.3-1.1 1-1 1L13 8.9c-1.9 1.7-4 3.5-5.4 5.7l-2.3.8q-.6-.2-.8-.9h-.4q-.2 0-.1 1v.6l-.1.2v.7L1 18.1v.3l.3.2 2.7.2.5 2.3-.4 2.8-.5 4.2v.3l.1.3-.1.3-.2.3-.1.3c0 .3-.3 1-.4 1H0v.2q0 .3.2.4l.9.5q1 .3 1.3.9l-.2 1-.2.3q-.5.8-.4 1l.1.2q.7-.1 1.6-1l1.2-.8 1.7 2H7v-.1L6.5 33h.1l8.3 4.7.8.5 1.3.7q1 .5 2 1.3h.1H18l-.8.2-.1.2.2.4h.1l.4.5.3.4.5.3.7.4v.2q-.7 1-.6 2v.2h.2c.3 0 1.2-.8 1.4-1l.3-.4q.3-.5.6-.6.6.2 1.4.9l1 .6h.4V44l-.4-1-.3-.8.7-.4.3-.2 1-.7v-.6l-.3-.1h-2V40l.6-1 .5-.7 6-8.1 1-1.5c1.2-1.7 2.6-4 3.1-4.2v1l.2.1h.1l.8-.7c.5-.4 1.2-1 1.4-1l.6.3 1.3 1q.3.5.6.5l.2-.1c.1 0 0-.4-.6-2.2l-.4-1 .5-.6zM17.7 3.7l-.4-.3q-.3 0-.4-.3h1q1 0 1.4-.2l.5-1.2.3-.7V.9l.3.9q.3 1 .6 1.4.1.3.7.2h1L21.4 5l.3 2-.1-.1-.9-1-.2-.2-.1-.2q-.1-.4-.5-.4h-.3v.2c-.3.5-1.2 1.3-1.4 1.5q0-.6.4-1.4v-.1q.4-.3 0-.8zM8 15.5l.4-.8.3-.7c.9-1.4 3.1-3.4 4.7-4.8l4-3.5.4-.3-.6 2.3.3.1c.5 0 1.1-.7 1.6-1.2L20 6l.7.8q.5.7 1.1 1l.5.2q.1 0 .2-.2.2-.3-.1-1.5l-.2-.8a42 42 0 0 1 6.3 8l1.8 2.2 3 4 .4 1-1.4-.1q-1.2 0-2.5-.2-3.1-.5-6.7-.7l-3.4-.6.9-12.5h-.3l-.4.1v1.4l-.3 3.7-.3 3.3V18q-.3.5-.3 1.1l-4.7-.7-1-.2-2-.4h-1l-1 .1q-.9 0-1.6-.4l-.5-.5.4-.5zm13.1 11.9h-1l-.3-.1-.4-.2h-.2q-.5 0-1 .4l-.7.4-.1-.1q0-.3.2-.8l.1-1q-.2-.4-1.1-.4l-1-.2v-.1l.6-.2q.6 0 1-.4l.2-1.1.2-.9 1.2 1.5q.7-.1 1.2-.5l1.2-.5-.5 1.6-.3.5-.4.9q.1.3.5.4l.4.2zM14 18.9l2.1.3 2.7.5q.2.9 0 1.8l-.1 1.4-.9-1.2-.2-.3h-.2q-.4 0-.3.6v.3l-.4 1.5-2-1q-1.5-.6-2.7-1.3l-1.3-.9-1-.7-.7-.4-1.2-.7h1.2l.3-.3q.6-.2 1.3-.2 1.2 0 2.4.4zm-5.5 1 1.6 1 1.3 1 2.3 1.2 2.5 1.3-.4.2h-.2l-.2.2q-.5 0-1 .4-.1 0-.2.2 0 .3.2.3l1 .2.8.2a25 25 0 0 1-4 2h-.2l-1-1.6q-.7-.7-1.2-1.6c-1.1-1.7-2.6-4-3.5-5.8v-.2zm10.8 3.6v-2.2zm1.7 2.1.4-1q.7-1.3.6-1.7t-.4-.4l-2.3.9.2-3.6h.8l1.4.2.9.2q1.5.3 3 .2l2.3.2.8.2.6.2 1 .1a6 6 0 0 1 2.7.8l1 .5-3.8 1.3zM4.5 18.1H2.8l2-.9V17l-.2-.3v-1q.3 0 .2.4l.2.1 1.2-.4 1.4-.5L6.3 17q.5.7 1 .9l.5.2-1 .2-.5-.2-.6-.1-.5.1v.6q.3.2.2.3L5 20.3l-.1-.9zm.6 3.9q.3-.1.4-.4l.2-.9.2-1.2 5.7 9h-.3l-1.7.8q-1.4.9-2.2 1l-.4.1H5.6l-.1-.2L5 29v-.6l-.2-.6-.2-.2h-.1c-.1-.3.4-4.8.6-5.6M5.6 32q0 .6.3 1.1l.3 1L5 32.9l-.4-.3q-.3 0-.4.3l-.2.1q-.7.5-1.3.9l.5-1.8-.2-.1q-.7-.2-1.2-.7H2l.6.1.5.2.2-.1.5-1 .5-1.4.5 1.1.3 1h.3l.3-.1.1-.1L7 31v.2zm1 .1 1-.5.8-.5q.3-.2.2-.4v-.1l-.2-.1 2.7-1.4.9-.2 6.8 10.2zm6-3.5 4.2-2h.3l-.3 1-.3 1q0 0 .2.3l.3.1h.2l.2-.3.4-.3.6-.3.6-.2.4 1.7v1.8l-.1 1.3v2q.2 2.1 0 4v.1zM23 40.8h1l-.3.4-.5.2-.4.3h-.2l-.5.4v.1q.5.3.6.8l.2.3q-.3-.1-.8-.5l-1-.5H21L19.3 44q.1-.6.4-1h.2l.2-.3v-.5q-.3-.2-.5-.2h-.3c-.3-.2-1-.7-1.1-1h1.1l.6.1.5-.1.8-2.3.2.8q.1 1 .5 1.3H23m-3.2.2h.1m14.3-17.3-8.6 11.6-1 1.5-2.1 2.8-.3.2-.3-1.2q-.1-1.2-.4-1.3l-.2-.1H21l-1 2.4v-5.9l-.2-5.7 1.8.1.2.1.7.1h.3V28l-.4-.4-.3-.2-.8-1.1L27 25l1.2-.2 2-.5 1.1-.3c1-.4 2.6-.9 3-.9h.1q0 .3-.3.5m4.2-2.1-.4.3-.8.7q.1.4.4.3h.2l.6 1.4-1.8-1.2q-.4 0-.4.3v.1l-1.2.9q0-.8.4-1.4h.1q.3-.2.2-.5-.3-.5-1.2-.7-.8 0-1.1-.5h1l.7.2.5-.1q0-1.4.5-2.4c.2.3.8 1.4.9 1.9v.1l-.1.2h.2l1.8-.2zm-19 1.9.2-2.2zm1.8 3.9zm1.5.9h-.1m.3 15zm12.9-25.5"})})}function K({onSubmit:t,value:n,onValueChange:e,placeholder:r="Ask anything…",sendLabel:a="Send",sendIcon:c,actions:s,tint:d,font:u,loading:m=!1,disabled:v=!1,autoFocus:p,className:h="",style:b}){const[g,f]=l(""),y=n??g,q=t=>{f(t),e?.(t)},w=y.trim(),k=""!==w&&!m&&!v;return i("form",{className:`cm-bar ${h}`.trimEnd(),style:{"--cm-tint":d,"--cm-font":u,...b},"aria-busy":m,onSubmit:n=>{n.preventDefault(),k&&(t(w),q(""))},children:[o("style",{children:G}),o(F,{className:"cm-bar-mark"}),o("textarea",{className:"cm-bar-input",rows:1,value:y,placeholder:r,"aria-label":r,enterKeyHint:"send",disabled:v,autoFocus:p,onChange:t=>{q(t.target.value)},onKeyDown:t=>{"Enter"!==t.key||t.shiftKey||t.nativeEvent.isComposing||(t.preventDefault(),t.currentTarget.form?.requestSubmit())}}),s,o("button",{type:"submit",className:"cm-bar-send",disabled:!k,"aria-label":a,children:c??o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:o("path",{d:"M12 19V5M5 12l7-7 7 7"})})})]})}const G="\n.cm-bar {\n\t--_tint: var(--cm-tint, linear-gradient(45deg, #d698c7, #ffc691, #a8dfdb, #ddada6));\n\t--_bg: var(--cm-bg, light-dark(#fff, #1c1c1e));\n\t--_fg: var(--cm-fg, light-dark(#212121, #f5f5f5));\n\t--_radius: var(--cm-radius, 1.75rem);\n\t--_size: var(--cm-size, 2.5rem);\n\t--_pad: var(--cm-padding, .375rem);\n\tposition: relative;\n\tisolation: isolate;\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: .25rem;\n\tmargin: 0;\n\tpadding: var(--_pad);\n\tborder-radius: var(--_radius);\n\tcolor: var(--_fg);\n\tfont-family: var(--cm-font, inherit);\n\tfont-size: var(--cm-font-size, 1rem);\n\tline-height: 1.5;\n}\n\n.cm-bar::before,\n.cm-bar::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n\tz-index: -1;\n\tborder-radius: inherit;\n\tpointer-events: none;\n}\n\n/* Glow, shown on focus and animated while loading. */\n.cm-bar::before {\n\tinset: -2px;\n\tbackground: var(--_tint);\n\tbackground-size: 300% 100%;\n\tfilter: blur(10px);\n\topacity: 0;\n\ttransition: opacity .3s;\n}\n\n/* Surface with a tint border. */\n.cm-bar::after {\n\tborder: var(--cm-border-width, 1px) solid transparent;\n\tbackground: linear-gradient(var(--_bg) 0 0) padding-box, var(--_tint) border-box;\n\tbox-shadow: var(--cm-shadow, 0 15px 20px rgb(0 0 0 / .1));\n}\n\n.cm-bar:has(.cm-bar-input:disabled) {\n\topacity: .5;\n}\n\n.cm-bar:focus-within::before {\n\topacity: var(--cm-glow, .55);\n}\n\n.cm-bar[aria-busy='true']::before {\n\topacity: 1;\n\tanimation: cm-bar-flow 3s ease-in-out infinite;\n}\n\n/* The mark is the one fixed part of the bar: color and size are themable, hiding it is not. */\n.cm-bar-mark {\n\tflex: none;\n\tdisplay: block !important;\n\tvisibility: visible !important;\n\topacity: 1 !important;\n\twidth: calc(var(--_size) * .8);\n\theight: calc(var(--_size) * .8);\n\tmin-width: 1.25rem !important;\n\tmin-height: 1.25rem !important;\n\tmargin: calc(var(--_size) * .1) calc(var(--_size) * .05) calc(var(--_size) * .1) calc(var(--_size) * .15);\n\tcolor: var(--cm-mark-color, currentColor);\n}\n\n.cm-bar[aria-busy='true'] .cm-bar-mark {\n\tanimation: cm-bar-twinkle 1.5s ease-in-out infinite;\n}\n\n.cm-bar-input {\n\tflex: 1;\n\tmin-width: 0;\n\tmin-height: var(--_size);\n\tmax-height: 12rem;\n\tbox-sizing: border-box;\n\tmargin: 0;\n\tpadding: max(0px, calc((var(--_size) - 1lh) / 2)) .25rem;\n\tborder: 0;\n\toutline: 0;\n\tbackground: none;\n\tcolor: inherit;\n\tfont: inherit;\n\tresize: none;\n\tfield-sizing: content;\n}\n\n.cm-bar-input::placeholder {\n\tcolor: inherit;\n\topacity: .5;\n}\n\n.cm-bar-send {\n\tflex: none;\n\tbox-sizing: border-box;\n\tdisplay: grid;\n\tplace-items: center;\n\twidth: var(--_size);\n\theight: var(--_size);\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 1px solid transparent;\n\tborder-radius: max(0px, calc(var(--_radius) - var(--_pad)));\n\tbackground: linear-gradient(var(--_bg) 0 0) padding-box, var(--_tint) border-box;\n\tcolor: inherit;\n\tcursor: pointer;\n\ttransition: background .2s, color .2s, opacity .2s, transform .1s;\n}\n\n.cm-bar-send:enabled {\n\tbackground: linear-gradient(var(--cm-button-bg, var(--_fg)) 0 0) padding-box, var(--_tint) border-box;\n\tcolor: var(--cm-button-fg, var(--_bg));\n}\n\n.cm-bar-send:enabled:active {\n\ttransform: scale(.94);\n}\n\n.cm-bar-send:disabled {\n\tcursor: default;\n\topacity: .5;\n}\n\n.cm-bar-send:focus-visible {\n\toutline: 2px solid var(--_fg);\n\toutline-offset: 2px;\n}\n\n.cm-bar-send svg {\n\twidth: 45%;\n\theight: 45%;\n}\n\n@keyframes cm-bar-flow {\n\t50% {\n\t\tbackground-position: 100% 0;\n\t\topacity: .5;\n\t}\n}\n\n/* Transform only: the mark's opacity is pinned to 1. */\n@keyframes cm-bar-twinkle {\n\t50% {\n\t\ttransform: scale(.85) rotate(-10deg);\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.cm-bar::before,\n\t.cm-bar * {\n\t\tanimation: none !important;\n\t\ttransition: none !important;\n\t}\n}\n";export{K as CallimacusBar,F as CallimacusMark,m as thamyrApi,O as useActions,I as useApi,p as useCallimacusStore,z as useCart,x as useConnection,q as useInitThamyr,L as useOnConnectionChange,T as useOnError,E as useOnResponse,S as useSitemap,C as useSkesis,N as useSubmission,_ as useSuggestions,w as useThamyr,P as useTtsAudio,B as useVoiceRecorder};
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/callimacus/hooks.ts","../../../src/voice/use-voice-recorder.ts","../../../src/audio/use-tts-audio.ts","../../../src/callimacus-bar/callimacus-mark.tsx","../../../src/callimacus-bar/callimacus-bar.tsx"],"sourcesContent":[null,null,null,null,null],"names":["useEventListener","addListener","callback","callbackRef","useRef","current","useEffect","arg","useInitThamyr","config","init","useCallimacusStore","s","reset","markInitRequested","markInitOwnerMounted","markInitOwnerUnmounted","clientId","endpoint","useThamyr","history","messages","sendEvent","sendAudio","rounds","useMemo","openLanding","value","options","UserInteractionType","CREATE_ROUND","landingRound","sendInteraction","id","interactionRound","refresh","block","interaction","NO_SUGGESTIONS","suggestions","loading","useSuggestions","prefix","storyId","language","debounceMs","isConnected","connectionStatus","state","setState","useState","wasConnected","setWasConnected","isStale","timer","setTimeout","getState","_thamyr","suggest","Promise","resolve","then","catch","clearTimeout","useConnection","status","useOnResponse","addResponseListener","useOnConnectionChange","addConnectionListener","useOnError","addErrorListener","useCart","async","waitForInstance","cart","getCart","productId","addItemToCart","removeItemFromCart","quantity","updateProductQuantity","useApi","thamyrApi","useSkesis","anchorId","skesis","similar","related","useSitemap","sitemap","getSitemap","defaultOptions","useVoiceRecorder","silenceThreshold","silenceDuration","maxDuration","onRecordingComplete","audioLevels","setAudioLevels","error","setError","undefined","mediaRecorderRef","audioContextRef","analyserRef","streamRef","animationFrameRef","silenceStartRef","maxDurationTimerRef","chunksRef","stoppingRef","cleanup","useCallback","cancelAnimationFrame","track","getTracks","stop","close","stopRecording","startRecording","stream","navigator","mediaDevices","getUserMedia","audio","echoCancellation","noiseSuppression","sampleRate","audioContext","AudioContext","source","createMediaStreamSource","analyser","createAnalyser","fftSize","smoothingTimeConstant","connect","mimeType","MediaRecorder","isTypeSupported","mediaRecorder","addEventListener","event","data","size","push","audioBlob","Blob","type","start","monitorAudio","bufferLength","frequencyBinCount","dataArray","Uint8Array","getByteFrequencyData","step","Math","floor","levels","i","sum","j","sumSquares","normalized","rms","sqrt","log10","Date","now","requestAnimationFrame","useTtsAudio","audioRef","audioUrl","Audio","element","preload","onPlaying","onWaiting","onPause","previous","onEnded","onError","pause","removeEventListener","src","play","currentTime","toggle","paused","isPlaying","CallimacusMark","props","_jsx","viewBox","fill","role","children","d","CallimacusBar","onSubmit","controlledValue","onValueChange","placeholder","sendLabel","sendIcon","actions","tint","font","disabled","autoFocus","className","style","ownValue","setOwnValue","setValue","next","prompt","trim","canSubmit","_jsxs","trimEnd","preventDefault","css","rows","enterKeyHint","onChange","target","onKeyDown","key","shiftKey","nativeEvent","isComposing","currentTarget","form","requestSubmit","stroke","strokeWidth","strokeLinecap","strokeLinejoin"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/callimacus/hooks.ts","../../../src/callimacus/actions.ts","../../../src/voice/use-voice-recorder.ts","../../../src/audio/use-tts-audio.ts","../../../src/callimacus-bar/callimacus-mark.tsx","../../../src/callimacus-bar/callimacus-bar.tsx"],"sourcesContent":[null,null,null,null,null,null],"names":["useEventListener","addListener","callback","callbackRef","useRef","current","useEffect","arg","useInitThamyr","config","init","useCallimacusStore","s","reset","markInitRequested","markInitOwnerMounted","markInitOwnerUnmounted","clientId","endpoint","useThamyr","history","messages","sendEvent","sendAudio","rounds","useMemo","openLanding","value","options","UserInteractionType","CREATE_ROUND","landingRound","sendInteraction","id","interactionRound","refresh","block","interaction","NO_SUGGESTIONS","suggestions","loading","useSuggestions","prefix","storyId","language","debounceMs","isConnected","connectionStatus","state","setState","useState","wasConnected","setWasConnected","isStale","timer","setTimeout","getState","_thamyr","suggest","Promise","resolve","then","catch","clearTimeout","useConnection","status","useOnResponse","addResponseListener","useOnConnectionChange","addConnectionListener","useOnError","addErrorListener","useCart","async","waitForInstance","cart","getCart","productId","addItemToCart","removeItemFromCart","quantity","updateProductQuantity","useApi","thamyrApi","useSkesis","anchorId","skesis","similar","related","useSitemap","sitemap","getSitemap","failed","error","ok","IDLE","useSubmissions","create","latestSubmission","Map","useActions","isReady","subscribe","run","useCallback","action","story","round","payload","undefined","type","globalThis","location","Error","newTab","open","url","assign","inputEvent","data","call","settled","thamyr","submissionId","randomUuid","set","form","sent","fields","document","context","title","replaceAll","slice","replace","result","unsubscribe","message","chapter","blocks","map","deliverResultOf","find","found","deliveredResult","get","ready","useSubmission","defaultOptions","useVoiceRecorder","silenceThreshold","silenceDuration","maxDuration","onRecordingComplete","audioLevels","setAudioLevels","setError","mediaRecorderRef","audioContextRef","analyserRef","streamRef","animationFrameRef","silenceStartRef","maxDurationTimerRef","chunksRef","stoppingRef","cleanup","cancelAnimationFrame","track","getTracks","stop","close","stopRecording","startRecording","stream","navigator","mediaDevices","getUserMedia","audio","echoCancellation","noiseSuppression","sampleRate","audioContext","AudioContext","source","createMediaStreamSource","analyser","createAnalyser","fftSize","smoothingTimeConstant","connect","mimeType","MediaRecorder","isTypeSupported","mediaRecorder","addEventListener","event","size","push","audioBlob","Blob","start","monitorAudio","bufferLength","frequencyBinCount","dataArray","Uint8Array","getByteFrequencyData","step","Math","floor","levels","i","sum","j","sumSquares","normalized","rms","sqrt","log10","Date","now","requestAnimationFrame","useTtsAudio","audioRef","audioUrl","Audio","element","preload","onPlaying","onWaiting","onPause","previous","onEnded","onError","pause","removeEventListener","src","play","currentTime","toggle","paused","isPlaying","CallimacusMark","props","_jsx","viewBox","fill","role","children","d","CallimacusBar","onSubmit","controlledValue","onValueChange","placeholder","sendLabel","sendIcon","actions","tint","font","disabled","autoFocus","className","style","ownValue","setOwnValue","setValue","next","prompt","trim","canSubmit","_jsxs","trimEnd","preventDefault","css","rows","enterKeyHint","onChange","target","onKeyDown","key","shiftKey","nativeEvent","isComposing","currentTarget","requestSubmit","stroke","strokeWidth","strokeLinecap","strokeLinejoin"],"mappings":"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"}
package/dist/esm/query.js CHANGED
@@ -5,5 +5,5 @@
5
5
  * See LICENSE.md for the full terms.
6
6
  *
7
7
  */
8
- import{queryOptions as t}from"@tanstack/react-query";import{t as r}from"./chunks/api-PeedNYnN.js";import"@callimacus/thamyr";import"@callimacus/thamyr-core";import"react";async function a(t,a,n,o){const i=r[t][a],c={signal:o,throwOnError:!0};return(await(void 0===n?i(c):i(n,c))).data}function n(r,n,o){return t({queryKey:["thamyr",r,n,o],queryFn:async({signal:t})=>a(r,n,o,t)})}function o(t,r){return{mutationKey:["thamyr",t,r],mutationFn:async n=>a(t,r,n)}}export{o as thamyrMutationOptions,n as thamyrQueryOptions};
8
+ import{queryOptions as t}from"@tanstack/react-query";import{t as r}from"./chunks/api-Cot7UUo0.js";import"@callimacus/thamyr";import"@callimacus/thamyr-core";import"react";async function a(t,a,n,o){const i=r[t][a],c={signal:o,throwOnError:!0};return(await(void 0===n?i(c):i(n,c))).data}function n(r,n,o){return t({queryKey:["thamyr",r,n,o],queryFn:async({signal:t})=>a(r,n,o,t)})}function o(t,r){return{mutationKey:["thamyr",t,r],mutationFn:async n=>a(t,r,n)}}export{o as thamyrMutationOptions,n as thamyrQueryOptions};
9
9
  //# sourceMappingURL=query.js.map
@@ -6,8 +6,8 @@
6
6
  *
7
7
  */
8
8
  import * as _callimacus_thamyr_core from '@callimacus/thamyr-core';
9
- import { UiObserverConfig, RoundOptions, CallimacusApi, ErrorMessage, ThamyrResponse, InteractionId, InteractionOptions, UserInteractionType, InteractionPayloadMap, TtsAudio } from '@callimacus/thamyr-core';
10
- export { ADD_TO_CART_RESULT_BLOCK, AddToCartResult, Block, BlockPatch, BoundingBox, CallimacusEvent, Chapter, ChapterStatus, ClientEvents, ClientInfo, ConnectionStatusCallback, ErrorCallback, ErrorMessage, Gallery, GalleryMode, Image, ImageEdits, ImageFormatEdit, ImageResizeEdit, InteractionContext, InteractionId, InteractionOptions, InteractionPayload, InteractionPayloadMap, LANDING_VALUE_MAX_LENGTH, LocalizedEPArtwork, LocalizedEPChapter, LogLevel, LoggerConfig, ProductMatch, RiveManifest, RoundOptions, SLDocument, SLDocumentSection, SLInputEvent, SLInputEventType, ServerEvents, ServerResponseCallback, Story, SuggestPayload, Suggestions, ThamyrHttpError, ThamyrInteractionMap, ThamyrResponse, ThamyrResponseType, Topic, TtsAudio, UiElement, UiObserverConfig, UiSnapshot, UserInteraction, UserInteractionType, Video, WhisperPayload, addToCartResultOf, applyBlockPatch, blockKeyOf, callimacusService, clearIntentSessionId, ensureIntentSessionId, extractTtsAudio, getIntentSessionId, initIntent, interactionRound, isSetProduct, landingRound, logger, receptorsOf, setConsent, setDebug, setDebugPanel, setGeo, setIntentSessionMaxAge, transformImageUrl } from '@callimacus/thamyr-core';
9
+ import { UiObserverConfig, RoundOptions, CallimacusApi, ErrorMessage, ThamyrResponse, InteractionId, InteractionOptions, UserInteractionType, InteractionPayloadMap, DeliverResult, Action, TtsAudio } from '@callimacus/thamyr-core';
10
+ export { ACTION_TYPES, ADD_TO_CART_RESULT_BLOCK, Action, ActionType, AddToCartResult, Block, BlockPatch, BoundingBox, CallimacusEvent, Chapter, ChapterStatus, ClientEvents, ClientInfo, ConnectionStatusCallback, DELIVER_RESULT_BLOCK, DeliverResult, ErrorCallback, ErrorMessage, Gallery, GalleryMode, Image, ImageEdits, ImageFormatEdit, ImageResizeEdit, InteractionContext, InteractionId, InteractionOptions, InteractionPayload, InteractionPayloadMap, LANDING_VALUE_MAX_LENGTH, LocalizedEPArtwork, LocalizedEPChapter, LogLevel, LoggerConfig, ProductMatch, RiveManifest, RoundOptions, SLDocument, SLDocumentSection, SLInputEvent, SLInputEventType, ServerEvents, ServerResponseCallback, Story, SuggestPayload, Suggestions, ThamyrHttpError, ThamyrInteractionMap, ThamyrResponse, ThamyrResponseType, Topic, TtsAudio, UiElement, UiObserverConfig, UiSnapshot, UserInteraction, UserInteractionType, Video, WhisperPayload, actionOf, addToCartResultOf, applyBlockPatch, blockKeyOf, callimacusService, clearIntentSessionId, deliverResultOf, ensureIntentSessionId, extractTtsAudio, fieldsOf, getIntentSessionId, initIntent, interactionRound, isSetProduct, landingRound, logger, receptorsOf, setConsent, setDebug, setDebugPanel, setGeo, setIntentSessionMaxAge, transformImageUrl } from '@callimacus/thamyr-core';
11
11
  import { Thamyr } from '@callimacus/thamyr';
12
12
  import * as zustand from 'zustand';
13
13
  import * as react from 'react';
@@ -146,6 +146,7 @@ declare function useThamyr(): {
146
146
  payload?: {
147
147
  [key: string]: unknown;
148
148
  };
149
+ submissionId?: string;
149
150
  nodeKey?: string;
150
151
  interactionId: string;
151
152
  value?: string | Array<string>;
@@ -1001,6 +1002,7 @@ declare function useThamyr(): {
1001
1002
  payload?: {
1002
1003
  [key: string]: unknown;
1003
1004
  };
1005
+ submissionId?: string;
1004
1006
  nodeKey?: string;
1005
1007
  interactionId: string;
1006
1008
  value?: string | Array<string>;
@@ -2107,6 +2109,11 @@ type ErrorListener = (error: ErrorMessage) => void;
2107
2109
  type CallimacusState = {
2108
2110
  connectionStatus: ConnectionStatus;
2109
2111
  messages: ThamyrResponse[];
2112
+ /**
2113
+ The story the connection opened: the one a round continues. Kept apart from
2114
+ `messages`, whose bound evicts the `story-created` long before a story ends.
2115
+ */
2116
+ storyId: string | undefined;
2110
2117
  error: ErrorMessage | undefined;
2111
2118
  _initialized: boolean;
2112
2119
  _thamyr: Thamyr | undefined;
@@ -2126,6 +2133,85 @@ unless you need direct access to the store state or actions.
2126
2133
  */
2127
2134
  declare const useCallimacusStore: zustand.UseBoundStore<zustand.StoreApi<CallimacusState>>;
2128
2135
 
2136
+ /**
2137
+ What running an action came to. A round or a navigation that went out is `ok`;
2138
+ a `submit` is `ok` with the delivery `result` once the round came back. An HTTP
2139
+ failure of a `cart`, a round the store refused or a submit that did not come
2140
+ back in time (`error: 'timeout'`) arrive as `error` on a RESOLVED promise, never
2141
+ as a rejection, so a button can show "try again" from it.
2142
+ */
2143
+ type ActionResult = {
2144
+ ok: true;
2145
+ result?: DeliverResult;
2146
+ } | {
2147
+ ok: false;
2148
+ error: unknown;
2149
+ };
2150
+ type RunOptions = {
2151
+ /**
2152
+ The inputs a `submit` sends — the component's fields, by name (`fieldsOf(form)` reads them off a form).
2153
+ */
2154
+ fields?: Record<string, string | boolean | string[]>;
2155
+ /**
2156
+ The story an `ask`, `interact` or `submit` continues. Defaults to the one the connection opened.
2157
+ */
2158
+ storyId?: string;
2159
+ };
2160
+ /**
2161
+ Return type of {@link useActions}.
2162
+ */
2163
+ type Actions = {
2164
+ run: (action: Action, options?: RunOptions) => Promise<ActionResult>;
2165
+ /**
2166
+ Whether a round can go out now (the connection is up). `cart` waits for the
2167
+ instance instead, so it can run before it.
2168
+ */
2169
+ ready: boolean;
2170
+ /**
2171
+ The story the connection opened, or `undefined` before the first round.
2172
+ */
2173
+ storyId: string | undefined;
2174
+ };
2175
+ /**
2176
+ What a form's last submit came to: `sending` while the round is out, `done` with
2177
+ its result once the chapter carrying it arrived; `idle` before the first, or
2178
+ after one that did not go out or did not come back in time.
2179
+ */
2180
+ type Submission = {
2181
+ state: 'idle' | 'sending' | 'done';
2182
+ result?: DeliverResult;
2183
+ };
2184
+ /**
2185
+ Runs component actions (`actionOf` reads them off block data): `link` opens the
2186
+ URL, `ask` and `interact` send a round on the open story, `cart` adds to the
2187
+ cart, `submit` sends the fields as a round of the project's form and resolves
2188
+ with its delivery result. A form is inputs plus a button that runs
2189
+ `{type: 'submit', form}` with `{fields: fieldsOf(form)}`; `useSubmission(form)`
2190
+ follows it.
2191
+
2192
+ @example
2193
+ ```tsx
2194
+ function Cta({ data }: { data: { label: string; action: unknown } }) {
2195
+ const { run, ready } = useActions();
2196
+ const action = actionOf(data.action);
2197
+ if (!action) return null;
2198
+ return <button disabled={!ready} onClick={() => run(action)}>{data.label}</button>;
2199
+ }
2200
+ ```
2201
+ */
2202
+ declare function useActions(): Actions;
2203
+ /**
2204
+ What the form's last `submit` came to, for the form's own markup: disable the
2205
+ button while `sending`, show `result.message` or the field `errors` when `done`.
2206
+
2207
+ @example
2208
+ ```tsx
2209
+ const { state, result } = useSubmission('contact');
2210
+ if (result?.status === 'accepted') return <p role="status">{result.message ?? 'Thanks.'}</p>;
2211
+ ```
2212
+ */
2213
+ declare function useSubmission(form: string): Submission;
2214
+
2129
2215
  type VoiceRecorderState = 'idle' | 'recording' | 'processing';
2130
2216
  type UseVoiceRecorderOptions = {
2131
2217
  silenceThreshold?: number;
@@ -2236,5 +2322,5 @@ The Callimacus constellation mark. Inherits `currentColor`.
2236
2322
  */
2237
2323
  declare function CallimacusMark(props: SVGProps<SVGSVGElement>): react.JSX.Element;
2238
2324
 
2239
- export { CallimacusBar, CallimacusMark, thamyrApi, useApi, useCallimacusStore, useCart, useConnection, useInitThamyr, useOnConnectionChange, useOnError, useOnResponse, useSitemap, useSkesis, useSuggestions, useThamyr, useTtsAudio, useVoiceRecorder };
2240
- export type { CallimacusBarProps, CallimacusInitConfig, CartActions, ConnectionStatus, SitemapActions, SkesisActions, SuggestionsOptions, SuggestionsState, TtsAudioState, UseTtsAudioReturn, UseVoiceRecorderOptions, UseVoiceRecorderReturn, VoiceRecorderState };
2325
+ export { CallimacusBar, CallimacusMark, thamyrApi, useActions, useApi, useCallimacusStore, useCart, useConnection, useInitThamyr, useOnConnectionChange, useOnError, useOnResponse, useSitemap, useSkesis, useSubmission, useSuggestions, useThamyr, useTtsAudio, useVoiceRecorder };
2326
+ export type { ActionResult, Actions, CallimacusBarProps, CallimacusInitConfig, CartActions, ConnectionStatus, RunOptions, SitemapActions, SkesisActions, Submission, SuggestionsOptions, SuggestionsState, TtsAudioState, UseTtsAudioReturn, UseVoiceRecorderOptions, UseVoiceRecorderReturn, VoiceRecorderState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@callimacus/thamyr-react",
3
- "version": "4.5.0",
3
+ "version": "4.6.0",
4
4
  "private": false,
5
5
  "description": "React package for Thamyr",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -40,8 +40,8 @@
40
40
  "storybook": "storybook dev -p 6006"
41
41
  },
42
42
  "dependencies": {
43
- "@callimacus/thamyr": "^4.5.0",
44
- "@callimacus/thamyr-core": "^4.5.0",
43
+ "@callimacus/thamyr": "^4.6.0",
44
+ "@callimacus/thamyr-core": "^4.6.0",
45
45
  "zustand": "^5.0.15"
46
46
  },
47
47
  "peerDependencies": {
@@ -1,9 +0,0 @@
1
- /*!
2
- * Copyright © 2025–2026 Solomei AI SRL. All rights reserved.
3
- *
4
- * Proprietary software, licensed for use by Callimacus customers only.
5
- * See LICENSE.md for the full terms.
6
- *
7
- */
8
- import{Thamyr as e}from"@callimacus/thamyr";import{callimacusService as t,ThamyrResponseType as n,applyBlockPatch as r}from"@callimacus/thamyr-core";import o from"react";const s=e=>{let t;const n=new Set,r=(e,r)=>{const o="function"==typeof e?e(t):e;if(!Object.is(o,t)){const e=t;t=(null!=r?r:"object"!=typeof o||null===o)?o:Object.assign({},t,o),n.forEach(n=>n(t,e))}},o=()=>t,s={setState:r,getState:o,getInitialState:()=>i,subscribe:e=>(n.add(e),()=>n.delete(e))},i=t=e(r,o,s);return s},i=e=>e;const a=e=>{const t=(e=>e?s(e):s)(e),n=e=>function(e,t=i){const n=o.useSyncExternalStore(e.subscribe,o.useCallback(()=>t(e.getState()),[e,t]),o.useCallback(()=>t(e.getInitialState()),[e,t]));return o.useDebugValue(n),n}(t,e);return Object.assign(n,t),n};function c(e,t){for(const n of e)try{n(t)}catch(e){console.error("[Thamyr] Listener threw:",e)}}function u(e,t){let o=!1;const s=e.map(e=>{if(e.type!==n.CHAPTER_EVENT)return e;const s=r(e.chapter,t);return s===e.chapter?e:(o=!0,{...e,chapter:s})});return o?s:e}const d=(l?a(l):a)((r,o)=>{let s,i=0;const a=new Set,d=new Set,l=new Set;return{connectionStatus:"idle",messages:[],error:void 0,_initialized:!1,_thamyr:void 0,init(m){if(o()._initialized)return;if("undefined"==typeof window)return void console.debug("[Thamyr] init() skipped: no browser environment detected (SSR).");const{clientId:h}=m;if(!h){console.error("[Thamyr] clientId is required. Pass your Callimacus Client ID (`cal-pk-…`) to useInitThamyr().");const e={code:0,message:"clientId is required. Pass your Callimacus Client ID (`cal-pk-…`) to useInitThamyr()."};return r({connectionStatus:"error",error:e}),c(l,e),void c(d,"error")}void 0!==m.maxMessages&&m.maxMessages<0&&console.warn("[Thamyr] maxMessages must be >= 0. Received:",m.maxMessages,". Clamping to 1.");const f=0===m.maxMessages?1/0:Math.max(1,m.maxMessages??50);let y;r({connectionStatus:"connecting",error:void 0});try{y=new e({clientId:h,endpoint:m.endpoint,uiObserver:m.uiObserver})}catch(e){console.error("[Thamyr] Failed to create Thamyr instance:",e);const t={code:0,message:e instanceof Error?e.message:String(e)};return r({connectionStatus:"error",error:t}),c(l,t),void c(d,"error")}const w=++i;y.onResponse(e=>{i===w&&(e.type===n.BLOCK_PATCH?r(t=>({messages:u(t.messages,e.data)})):r(t=>{const n=[...t.messages,e];return{messages:n.length>f?n.slice(-f):n}}),c(a,e))}),y.onError(e=>{i===w&&(r({error:e,connectionStatus:"error"}),c(l,e),c(d,"error"))}),s=t.onConnectionStatus(e=>{if(i!==w)return;const t=e?"connected":"disconnected";r({connectionStatus:t}),c(d,t)}),function(e){r({_initialized:Boolean(e),_thamyr:e})}(y)},reset(){if(o()._initialized){i++;try{s?.()}catch(e){console.error("[Thamyr] Error unsubscribing connection status listener:",e)}try{t.disconnect()}catch(e){console.error("[Thamyr] Error disconnecting:",e)}s=void 0,r({_initialized:!1,_thamyr:void 0,connectionStatus:"idle",messages:[],error:void 0})}else"idle"!==o().connectionStatus&&r({connectionStatus:"idle",error:void 0})},sendEvent(e,t){const n=o()._thamyr;if(!n)throw new Error("[Thamyr] SDK is not initialized yet. Ensure useInitThamyr() has been called.");const{connectionStatus:s}=o();if("connected"!==s){const e={code:0,message:`Cannot send event: connection status is "${s}". Wait for connected status before sending.`};throw r({error:e}),c(l,e),new Error(e.message)}n.sendUserInteraction(e,t)},sendAudio(e,t){const n=o()._thamyr;if(!n)throw new Error("[Thamyr] SDK is not initialized yet. Ensure useInitThamyr() has been called.");const{connectionStatus:s}=o();if("connected"!==s){const e={code:0,message:`Cannot send audio: connection status is "${s}". Wait for connected status before sending.`};throw r({error:e}),c(l,e),new Error(e.message)}n.sendAudio(e,t)},addResponseListener:e=>(a.add(e),()=>{a.delete(e)}),addConnectionListener:e=>(d.add(e),()=>{d.delete(e)}),addErrorListener:e=>(l.add(e),()=>{l.delete(e)})}});var l;let m=!1,h=0;const f=new Set;function y(){m=!0}function w(){h++,m=!0}function g(){h--,queueMicrotask(()=>{if(h>0)return;m=!1;const e=[...f];f.clear();for(const t of e)t(new Error("[Thamyr] SDK was torn down: useInitThamyr() unmounted while this call was waiting for initialization."))})}function S(e){return new Error(`[Thamyr] SDK initialization failed: ${e?.message??"unknown error"}`)}async function p(){if("undefined"==typeof window)throw new Error("[Thamyr] The generated API is browser-only; this call ran without a browser environment (SSR).");const e=d.getState();if(e._thamyr)return e._thamyr;if(!m)throw new Error("[Thamyr] SDK is not initialized and no useInitThamyr() is mounted. Add useInitThamyr({clientId: 'cal-pk-…'}) to your root component.");if("error"===e.connectionStatus)throw S(e.error);return new Promise((e,t)=>{let n=!1;const r=e=>{n||(n=!0,s(),f.delete(o),e())},o=e=>{r(()=>{t(e)})};f.add(o);const s=d.subscribe(n=>{if(n._thamyr){const t=n._thamyr;r(()=>{e(t)})}else"error"===n.connectionStatus&&r(()=>{t(S(n.error))})})})}const b=new Set(["then","catch","finally","toJSON"]),T=new Set(Object.getOwnPropertyNames(Object.prototype));function E(e){return"string"!=typeof e||T.has(e)}const v=new Map,I=new Proxy({},{get(e,t){if(E(t))return Reflect.get(e,t);if(b.has(t))return;const n=t;let r=v.get(n);return void 0===r&&(r=function(e){const t=new Map;return new Proxy({},{get(n,r){if(E(r))return Reflect.get(n,r);if(b.has(r))return;const o=r;let s=t.get(o);return void 0===s&&(s=async(...t)=>{const n=(await p())[e],r=n?.[o];if("function"!=typeof r)throw new TypeError(`[Thamyr] ${e}.${o} is not part of the generated API surface.`);return Reflect.apply(r,n,t)},t.set(o,s)),s}})}(n),v.set(n,r)),r}});export{y as a,w as b,g as m,I as t,d as u,p as w};
9
- //# sourceMappingURL=api-PeedNYnN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-PeedNYnN.js","sources":["../../../../../node_modules/zustand/esm/vanilla.mjs","../../../../../node_modules/zustand/esm/react.mjs","../../../../src/callimacus/store.ts","../../../../src/callimacus/api.ts"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n",null,null],"names":["createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","Object","is","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","subscribe","add","delete","identity","arg","createImpl","createStore","useBoundStore","selector","slice","React","useSyncExternalStore","useCallback","useDebugValue","useStore","notifyListeners","error","console","patchedHistory","messages","patch","isPatched","patched","map","message","type","ThamyrResponseType","CHAPTER_EVENT","chapter","applyBlockPatch","useCallimacusStore","set","get","unsubConnectionStatus","generation","responseListeners","connectionListeners","errorListeners","connectionStatus","undefined","_initialized","_thamyr","init","config","window","debug","clientId","errorMessage","code","maxMessages","warn","Infinity","Math","max","thamyr","Thamyr","endpoint","uiObserver","Error","String","currentGen","onResponse","response","BLOCK_PATCH","data","length","onError","callimacusService","onConnectionStatus","connected","status","Boolean","setInitState","reset","disconnect","sendEvent","payload","sendUserInteraction","sendAudio","audio","query","addResponseListener","cb","addConnectionListener","addErrorListener","wasInitRequested","mountedInitOwners","pendingRejecters","markInitRequested","markInitOwnerMounted","markInitOwnerUnmounted","queueMicrotask","rejecters","clear","rejectWaiter","initError","async","waitForInstance","Promise","resolve","reject","isSettled","settle","action","unsubscribe","rejecter","current","instance","blockedNames","objectPrototypeMembers","getOwnPropertyNames","prototype","isPassthroughProperty","property","has","namespaces","Map","thamyrApi","Proxy","target","Reflect","name","namespace","namespaceName","methods","method","args","fn","TypeError","apply","createNamespaceFacade"],"mappings":"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","x_google_ignoreList":[0,1]}