@callimacus/thamyr-react 4.8.0 → 4.8.2

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,20 @@
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.8.2](https://github.com/callimacus/thamyr-sdk/compare/thamyr-core-v4.8.1...thamyr-core-v4.8.2) (2026-10-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **deps:** bump @callimacus/intent 2.1.12, rollup 4.64.9, @tanstack/react-query 5.104.4, [@eslint-react](https://github.com/eslint-react) 5.28.1 ([#838](https://github.com/callimacus/thamyr-sdk/issues/838)) ([ad33f63](https://github.com/callimacus/thamyr-sdk/commit/ad33f6306021effec0b84a5920fd7a0d58baacf8))
12
+
13
+ ## [4.8.1](https://github.com/callimacus/thamyr-sdk/compare/thamyr-core-v4.8.0...thamyr-core-v4.8.1) (2026-10-17)
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **deps:** upgrade eslint-config-xo 6, react-native 0.88, @callimacus/intent 2.1.11 ([#836](https://github.com/callimacus/thamyr-sdk/issues/836)) ([bc3247f](https://github.com/callimacus/thamyr-sdk/commit/bc3247f7801e7fc533f7968c91214e013acdc38e))
19
+
6
20
  ## [4.8.0](https://github.com/callimacus/thamyr-sdk/compare/thamyr-core-v4.7.0...thamyr-core-v4.8.0) (2026-10-16)
7
21
 
8
22
 
package/CHANGELOG.md CHANGED
@@ -3,6 +3,36 @@
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.8.2](https://github.com/callimacus/thamyr-sdk/compare/thamyr-react-v4.8.1...thamyr-react-v4.8.2) (2026-10-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **deps:** bump @callimacus/intent 2.1.12, rollup 4.64.9, @tanstack/react-query 5.104.4, [@eslint-react](https://github.com/eslint-react) 5.28.1 ([#838](https://github.com/callimacus/thamyr-sdk/issues/838)) ([ad33f63](https://github.com/callimacus/thamyr-sdk/commit/ad33f6306021effec0b84a5920fd7a0d58baacf8))
12
+
13
+
14
+ ### Dependencies
15
+
16
+ * The following workspace dependencies were updated
17
+ * dependencies
18
+ * @callimacus/thamyr bumped from ^4.8.1 to ^4.8.2
19
+ * @callimacus/thamyr-core bumped from ^4.8.1 to ^4.8.2
20
+
21
+ ## [4.8.1](https://github.com/callimacus/thamyr-sdk/compare/thamyr-react-v4.8.0...thamyr-react-v4.8.1) (2026-10-17)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * **deps:** upgrade eslint-config-xo 6, react-native 0.88, @callimacus/intent 2.1.11 ([#836](https://github.com/callimacus/thamyr-sdk/issues/836)) ([bc3247f](https://github.com/callimacus/thamyr-sdk/commit/bc3247f7801e7fc533f7968c91214e013acdc38e))
27
+
28
+
29
+ ### Dependencies
30
+
31
+ * The following workspace dependencies were updated
32
+ * dependencies
33
+ * @callimacus/thamyr bumped from ^4.8.0 to ^4.8.1
34
+ * @callimacus/thamyr-core bumped from ^4.8.0 to ^4.8.1
35
+
6
36
  ## [4.8.0](https://github.com/callimacus/thamyr-sdk/compare/thamyr-react-v4.7.0...thamyr-react-v4.8.0) (2026-10-16)
7
37
 
8
38
 
@@ -6,4 +6,4 @@
6
6
  *
7
7
  */
8
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
9
+ //# sourceMappingURL=api-DlvVjF7W.js.map
@@ -1 +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]}
1
+ {"version":3,"file":"api-DlvVjF7W.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":";;;;;;;0KAAA,MAAMA,EAAmBC,IACvB,IAAIC,EACJ,MAAMC,EAA4B,IAAIC,IAChCC,EAAW,CAACC,EAASC,KACzB,MAAMC,EAA+B,mBAAZF,EAAyBA,EAAQJ,GAASI,EACnE,IAAKG,OAAOC,GAAGF,EAAWN,GAAQ,CAChC,MAAMS,EAAgBT,EACtBA,GAAoB,MAAXK,EAAkBA,EAA+B,iBAAdC,GAAwC,OAAdA,GAAsBA,EAAYC,OAAOG,OAAO,CAAA,EAAIV,EAAOM,GACjIL,EAAUU,QAASC,GAAaA,EAASZ,EAAOS,GAClD,GAEII,EAAW,IAAMb,EAMjBc,EAAM,CAAEX,WAAUU,WAAUE,gBALV,IAAMC,EAKqBC,UAJhCL,IACjBX,EAAUiB,IAAIN,GACP,IAAMX,EAAUkB,OAAOP,KAG1BI,EAAehB,EAAQD,EAAYI,EAAUU,EAAUC,GAC7D,OAAOA,GChBHM,EAAYC,GAAQA,EAU1B,MAAMC,EAAcvB,IAClB,MAAMe,EDOS,CAAKf,GAAgBA,EAAcD,EAAgBC,GAAeD,ECPrEyB,CAAYxB,GAClByB,EAAiBC,GAXzB,SAAkBX,EAAKW,EAAWL,GAChC,MAAMM,EAAQC,EAAMC,qBAClBd,EAAIG,UACJU,EAAME,YAAY,IAAMJ,EAASX,EAAID,YAAa,CAACC,EAAKW,IACxDE,EAAME,YAAY,IAAMJ,EAASX,EAAIC,mBAAoB,CAACD,EAAKW,KAGjE,OADAE,EAAMG,cAAcJ,GACbA,CACT,CAGsCK,CAASjB,EAAKW,GAElD,OADAlB,OAAOG,OAAOc,EAAeV,GACtBU,GAEHQ,EAAWjC,GAAgBA,EAAcuB,EAAWvB,GAAeuB,ECuBzE,SAASW,EAAmBhC,EAAkCoB,GAC7D,IAAK,MAAMT,KAAYX,EACtB,IACCW,EAASS,EACV,CAAE,MAAOa,GACRC,QAAQD,MAAM,2BAA4BA,EAC3C,CAEF,CAMA,SAASE,EAAeC,EAA4BC,GACnD,IAAIC,GAAY,EAChB,MAAMC,EAAUH,EAASI,IAAIC,IAC5B,GAAIA,EAAQC,OAASC,EAAmBC,cACvC,OAAOH,EAGR,MAAMI,EAAUC,EAAgBL,EAAQI,QAASR,GACjD,OAAIQ,IAAYJ,EAAQI,QAChBJ,GAGRH,GAAY,EACL,IAAIG,EAASI,cAErB,OAAOP,EAAYC,EAAUH,CAC9B,CAQO,MAAMW,EAAqBhB,IAA0B,CAACiB,EAAKC,KAKjE,IAAIC,EAKAC,EAAa,EAMjB,MAAMC,EAAoB,IAAInD,IACxBoD,EAAsB,IAAIpD,IAC1BqD,EAAiB,IAAIrD,IAS3B,MAAO,CACNsD,iBAAkB,OAClBnB,SAAU,GACVoB,aAASC,EACTxB,WAAOwB,EACPC,cAAc,EACdC,aAASF,EAET,IAAAG,CAAKC,GACJ,GAAIZ,IAAMS,aACT,OAGD,GAAsB,oBAAXI,OAEV,YADA5B,QAAQ6B,MAAM,mEAIf,MAAMC,SAACA,GAAYH,EAGnB,IAAKG,EAAU,CACd9B,QAAQD,MAAM,kGACd,MAAMgC,EAA6B,CAACC,KAAM,EAAGzB,QAAS,yFAItD,OAHAO,EAAI,CAACO,iBAAkB,QAAStB,MAAOgC,IACvCjC,EAAgBsB,EAAgBW,QAChCjC,EAAgBqB,EAAqB,QAEtC,MAG2BI,IAAvBI,EAAOM,aAA6BN,EAAOM,YAAc,GAC5DjC,QAAQkC,KAAK,+CAAgDP,EAAOM,YAAa,oBAGlF,MAAMA,EAAqC,IAAvBN,EAAOM,YAAoBE,IAAWC,KAAKC,IAAI,EAAGV,EAAOM,aAAe,IAK5F,IAAIK,EAFJxB,EAAI,CAACO,iBAAkB,aAActB,WAAOwB,IAG5C,IACCe,EAAS,IAAIC,EAAO,CACnBT,WACAU,SAAUb,EAAOa,SACjBC,WAAYd,EAAOc,YAErB,CAAE,MAAO1C,GACRC,QAAQD,MAAM,6CAA8CA,GAC5D,MAAMgC,EAA6B,CAACC,KAAM,EAAGzB,QAASR,aAAiB2C,MAAQ3C,EAAMQ,QAAUoC,OAAO5C,IAItG,OAHAe,EAAI,CAACO,iBAAkB,QAAStB,MAAOgC,IACvCjC,EAAgBsB,EAAgBW,QAChCjC,EAAgBqB,EAAqB,QAEtC,CAEA,MAAMyB,IAAe3B,EAErBqB,EAAOO,WAAWC,IACb7B,IAAe2B,IAMfE,EAAStC,OAASC,EAAmBsC,YACxCjC,EAAIjD,KAAWqC,SAAUD,EAAepC,EAAMqC,SAAU4C,EAASE,SAEjElC,EAAIjD,IACH,MAAMqC,EAAW,IAAIrC,EAAMqC,SAAU4C,GACrC,MAAO,CACN5C,SAAUA,EAAS+C,OAAShB,EAAc/B,EAASX,OAAO0C,GAAe/B,KACrE4C,EAAStC,OAASC,EAAmByC,eAAiB,CAAC5B,QAASwB,EAASK,MAAMC,OAKtFtD,EAAgBoB,EAAmB4B,MAGpCR,EAAOe,QAAQtD,IACVkB,IAAe2B,IAInB9B,EAAI,CAACf,QAAOsB,iBAAkB,UAC9BvB,EAAgBsB,EAAgBrB,GAChCD,EAAgBqB,EAAqB,YAGtCH,EAAwBsC,EAAkBC,mBAAmBC,IAC5D,GAAIvC,IAAe2B,EAClB,OAGD,MAAMa,EAA2BD,EAAY,YAAc,eAC3D1C,EAAI,CAACO,iBAAkBoC,IACvB3D,EAAgBqB,EAAqBsC,KArGxC,SAAsBnB,GACrBxB,EAAI,CAACU,aAAckC,QAAQpB,GAASb,QAASa,GAC9C,CAuGEqB,CAAarB,EACd,EAKA,KAAAsB,GACC,GAAK7C,IAAMS,aAAX,CAYAP,IAEA,IACCD,KACD,CAAE,MAAOjB,GACRC,QAAQD,MAAM,2DAA4DA,EAC3E,CAEA,IACCuD,EAAkBO,YACnB,CAAE,MAAO9D,GACRC,QAAQD,MAAM,gCAAiCA,EAChD,CAEAiB,OAAwBO,EAExBT,EAAI,CACHU,cAAc,EACdC,aAASF,EACTF,iBAAkB,OAClBnB,SAAU,GACVoB,aAASC,EACTxB,WAAOwB,GAzBR,KALgC,SAA3BR,IAAMM,kBACTP,EAAI,CAACO,iBAAkB,OAAQtB,WAAOwB,GA+BzC,EAQA,SAAAuC,CAAyCtD,EAASuD,GACjD,MAAMzB,EAASvB,IAAMU,QACrB,IAAKa,EACJ,MAAM,IAAII,MAAM,gFAGjB,MAAMrB,iBAACA,GAAoBN,IAC3B,GAAyB,cAArBM,EAAkC,CACrC,MAAMU,EAA6B,CAClCC,KAAM,EACNzB,QAAS,4CAA4Cc,iDAItD,MAFAP,EAAI,CAACf,MAAOgC,IACZjC,EAAgBsB,EAAgBW,GAC1B,IAAIW,MAAMX,EAAaxB,QAC9B,CAEA+B,EAAO0B,oBAAoBxD,EAAMuD,EAClC,EAEA,SAAAE,CAAUC,EAAaC,GACtB,MAAM7B,EAASvB,IAAMU,QACrB,IAAKa,EACJ,MAAM,IAAII,MAAM,gFAGjB,MAAMrB,iBAACA,GAAoBN,IAC3B,GAAyB,cAArBM,EAAkC,CACrC,MAAMU,EAA6B,CAClCC,KAAM,EACNzB,QAAS,4CAA4Cc,iDAItD,MAFAP,EAAI,CAACf,MAAOgC,IACZjC,EAAgBsB,EAAgBW,GAC1B,IAAIW,MAAMX,EAAaxB,QAC9B,CAEA+B,EAAO2B,UAAUC,EAAOC,EACzB,EAEAC,oBAAoBC,IACnBnD,EAAkBnC,IAAIsF,GACf,KACNnD,EAAkBlC,OAAOqF,KAI3BC,sBAAsBD,IACrBlD,EAAoBpC,IAAIsF,GACjB,KACNlD,EAAoBnC,OAAOqF,KAI7BE,iBAAiBF,IAChBjD,EAAerC,IAAIsF,GACZ,KACNjD,EAAepC,OAAOqF,QC1S1B,IAAIG,GAAmB,EAMnBC,EAAoB,EAIxB,MAAMC,EAAmB,IAAI3G,aAOb4G,IACfH,GAAmB,CACpB,UAOgBI,IACfH,IACAD,GAAmB,CACpB,UASgBK,IACfJ,IACAK,eAAe,KACd,GAAIL,EAAoB,EACvB,OAGDD,GAAmB,EACnB,MAAMO,EAAY,IAAIL,GACtBA,EAAiBM,QACjB,IAAK,MAAMC,KAAgBF,EAC1BE,EAAa,IAAIvC,MA3DnB,2GA8DD,CAaA,SAASwC,EAAUnF,GAClB,OAAO,IAAI2C,MAAM,uCAAuC3C,GAAOQ,SAAW,kBAC3E,CAYO4E,eAAeC,IACrB,GAAsB,oBAAXxD,OACV,MAAM,IAAIc,MAxFX,kGA2FA,MAAM7E,EAAQgD,EAAmBnC,WACjC,GAAIb,EAAM4D,QACT,OAAO5D,EAAM4D,QAGd,IAAK+C,EACJ,MAAM,IAAI9B,MAvGX,wIA0GA,GAA+B,UAA3B7E,EAAMwD,iBACT,MAAM6D,EAAUrH,EAAMkC,OAGvB,OAAO,IAAIsF,QAAQ,CAACC,EAASC,KAC5B,IAAIC,GAAY,EAKhB,MAAMC,EAAUC,IACXF,IAIJA,GAAY,EACZG,IACAjB,EAAiB1F,OAAO4G,GACxBF,MAGKE,EAAY7F,IACjB0F,EAAO,KACNF,EAAOxF,MAIT2E,EAAiB3F,IAAI6G,GACrB,MAAMD,EAAc9E,EAAmB/B,UAAU+G,IAChD,GAAIA,EAAQpE,QAAS,CACpB,MAAMqE,EAAWD,EAAQpE,QACzBgE,EAAO,KACNH,EAAQQ,IAEV,KAAwC,UAA7BD,EAAQxE,kBAClBoE,EAAO,KACNF,EAAOL,EAAUW,EAAQ9F,aAK9B,CAOA,MAAMgG,EAAe,IAAIhI,IAAI,CAAC,OAAQ,QAAS,UAAW,WAEpDiI,EAAyB,IAAIjI,IAAIK,OAAO6H,oBAAoB7H,OAAO8H,YAEzE,SAASC,EAAsBC,GAC9B,MAA2B,iBAAbA,GAAyBJ,EAAuBK,IAAID,EACnE,CAuCA,MAAME,EAAa,IAAIC,IAoBVC,EAA2B,IAAIC,MAAM,GAAqB,CACtE,GAAA1F,CAAI2F,EAAQN,GACX,GAAID,EAAsBC,GACzB,OAAOO,QAAQ5F,IAAI2F,EAAQN,GAG5B,GAAIL,EAAaM,IAAID,GACpB,OAGD,MAAMQ,EAAOR,EACb,IAAIS,EAAYP,EAAWvF,IAAI6F,GAM/B,YALkBrF,IAAdsF,IACHA,EApEH,SAA+BC,GAC9B,MAAMC,EAAU,IAAIR,IAEpB,OAAO,IAAIE,MAAM,GAAI,CACpB,GAAA1F,CAAI2F,EAAQN,GACX,GAAID,EAAsBC,GACzB,OAAOO,QAAQ5F,IAAI2F,EAAQN,GAG5B,GAAIL,EAAaM,IAAID,GACpB,OAGD,MAAMQ,EAAOR,EACb,IAAIY,EAASD,EAAQhG,IAAI6F,GAgBzB,YAferF,IAAXyF,IACHA,EAAS7B,SAAU8B,KAClB,MACMJ,SADezB,KACwE0B,GACvFI,EAAKL,IAAYD,GACvB,GAAkB,mBAAPM,EACV,MAAM,IAAIC,UAAU,YAAYL,KAAiBF,+CAGlD,OAAOD,QAAQS,MAAMF,EAAIL,EAAWI,IAGrCF,EAAQjG,IAAI8F,EAAMI,IAGZA,CACR,GAEF,CAmCeK,CAAsBT,GAClCN,EAAWxF,IAAI8F,EAAMC,IAGfA,CACR","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 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};
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-DlvVjF7W.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
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-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};
8
+ import{queryOptions as t}from"@tanstack/react-query";import{t as r}from"./chunks/api-DlvVjF7W.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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@callimacus/thamyr-react",
3
- "version": "4.8.0",
3
+ "version": "4.8.2",
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.8.0",
44
- "@callimacus/thamyr-core": "^4.8.0",
43
+ "@callimacus/thamyr": "^4.8.2",
44
+ "@callimacus/thamyr-core": "^4.8.2",
45
45
  "zustand": "^5.0.15"
46
46
  },
47
47
  "peerDependencies": {
@@ -49,20 +49,20 @@
49
49
  "react": ">=18"
50
50
  },
51
51
  "devDependencies": {
52
- "@eslint-react/eslint-plugin": "^5.26.0",
53
- "@storybook/react-vite": "^10.6.1",
54
- "@tanstack/react-query": "^5.104.1",
52
+ "@eslint-react/eslint-plugin": "^5.28.1",
53
+ "@storybook/react-vite": "^10.6.2",
54
+ "@tanstack/react-query": "^5.104.4",
55
55
  "@testing-library/react": "^16.3.3",
56
56
  "@types/react": "^19.3.0",
57
57
  "@types/react-dom": "^19.3.0",
58
- "eslint-config-xo": "^5.0.0",
58
+ "eslint-config-xo": "^6.0.0",
59
59
  "eslint-plugin-react-hooks": "^7.1.1",
60
- "jsdom": "^30.1.2",
61
- "react": "^19.3.0",
62
- "react-dom": "^19.3.0",
63
- "storybook": "^10.6.1",
60
+ "jsdom": "^30.1.3",
61
+ "react": "^19.3.1",
62
+ "react-dom": "^19.3.1",
63
+ "storybook": "^10.6.2",
64
64
  "vite": "^8.3.4",
65
- "vitest": "^5.0.3"
65
+ "vitest": "^5.0.5"
66
66
  },
67
67
  "gitHead": "fafba2c8ca0586f95b1d03c5eede356a53b00886",
68
68
  "peerDependenciesMeta": {