@revrag-ai/embed-react-native 1.0.15 → 1.0.17

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.
Files changed (76) hide show
  1. package/dist/commonjs/api/api.js +6 -5
  2. package/dist/commonjs/api/api.js.map +1 -1
  3. package/dist/commonjs/components/Embed/EmbedButton.js +140 -318
  4. package/dist/commonjs/components/Embed/EmbedButton.js.map +1 -1
  5. package/dist/commonjs/components/Embed/EmbedVoice.js +16 -4
  6. package/dist/commonjs/components/Embed/EmbedVoice.js.map +1 -1
  7. package/dist/commonjs/context/EmbedProvider.js +638 -0
  8. package/dist/commonjs/context/EmbedProvider.js.map +1 -0
  9. package/dist/commonjs/events/embed.event.js +141 -7
  10. package/dist/commonjs/events/embed.event.js.map +1 -1
  11. package/dist/commonjs/hooks/EmbedButton.animations.js +181 -0
  12. package/dist/commonjs/hooks/EmbedButton.animations.js.map +1 -0
  13. package/dist/commonjs/hooks/EmbedButton.helpers.js +90 -0
  14. package/dist/commonjs/hooks/EmbedButton.helpers.js.map +1 -0
  15. package/dist/commonjs/hooks/EmbedButton.hooks.js +165 -0
  16. package/dist/commonjs/hooks/EmbedButton.hooks.js.map +1 -0
  17. package/dist/commonjs/hooks/initialize.js +65 -25
  18. package/dist/commonjs/hooks/initialize.js.map +1 -1
  19. package/dist/commonjs/index.js +14 -0
  20. package/dist/commonjs/index.js.map +1 -1
  21. package/dist/commonjs/utils/constant.js +88 -0
  22. package/dist/commonjs/utils/constant.js.map +1 -0
  23. package/dist/commonjs/utils/reanimated.helper.js +2 -3
  24. package/dist/commonjs/utils/reanimated.helper.js.map +1 -1
  25. package/dist/module/api/api.js +6 -6
  26. package/dist/module/api/api.js.map +1 -1
  27. package/dist/module/components/Embed/EmbedButton.js +141 -320
  28. package/dist/module/components/Embed/EmbedButton.js.map +1 -1
  29. package/dist/module/components/Embed/EmbedVoice.js +16 -4
  30. package/dist/module/components/Embed/EmbedVoice.js.map +1 -1
  31. package/dist/module/context/EmbedProvider.js +626 -0
  32. package/dist/module/context/EmbedProvider.js.map +1 -0
  33. package/dist/module/events/embed.event.js +144 -5
  34. package/dist/module/events/embed.event.js.map +1 -1
  35. package/dist/module/hooks/EmbedButton.animations.js +172 -0
  36. package/dist/module/hooks/EmbedButton.animations.js.map +1 -0
  37. package/dist/module/hooks/EmbedButton.helpers.js +80 -0
  38. package/dist/module/hooks/EmbedButton.helpers.js.map +1 -0
  39. package/dist/module/hooks/EmbedButton.hooks.js +160 -0
  40. package/dist/module/hooks/EmbedButton.hooks.js.map +1 -0
  41. package/dist/module/hooks/initialize.js +66 -26
  42. package/dist/module/hooks/initialize.js.map +1 -1
  43. package/dist/module/index.js +3 -2
  44. package/dist/module/index.js.map +1 -1
  45. package/dist/module/utils/constant.js +82 -0
  46. package/dist/module/utils/constant.js.map +1 -0
  47. package/dist/module/utils/reanimated.helper.js +2 -3
  48. package/dist/module/utils/reanimated.helper.js.map +1 -1
  49. package/dist/typescript/src/api/api.d.ts +4 -3
  50. package/dist/typescript/src/api/api.d.ts.map +1 -1
  51. package/dist/typescript/src/api/types/embed.api.types.d.ts +1 -1
  52. package/dist/typescript/src/api/types/embed.api.types.d.ts.map +1 -1
  53. package/dist/typescript/src/components/Embed/EmbedButton.d.ts +5 -25
  54. package/dist/typescript/src/components/Embed/EmbedButton.d.ts.map +1 -1
  55. package/dist/typescript/src/components/Embed/EmbedVoice.d.ts.map +1 -1
  56. package/dist/typescript/src/context/EmbedProvider.d.ts +306 -0
  57. package/dist/typescript/src/context/EmbedProvider.d.ts.map +1 -0
  58. package/dist/typescript/src/events/embed.event.d.ts +79 -1
  59. package/dist/typescript/src/events/embed.event.d.ts.map +1 -1
  60. package/dist/typescript/src/hooks/EmbedButton.animations.d.ts +38 -0
  61. package/dist/typescript/src/hooks/EmbedButton.animations.d.ts.map +1 -0
  62. package/dist/typescript/src/hooks/EmbedButton.helpers.d.ts +49 -0
  63. package/dist/typescript/src/hooks/EmbedButton.helpers.d.ts.map +1 -0
  64. package/dist/typescript/src/hooks/EmbedButton.hooks.d.ts +49 -0
  65. package/dist/typescript/src/hooks/EmbedButton.hooks.d.ts.map +1 -0
  66. package/dist/typescript/src/hooks/initialize.d.ts.map +1 -1
  67. package/dist/typescript/src/hooks/types/initialize.types.d.ts +1 -1
  68. package/dist/typescript/src/hooks/types/initialize.types.d.ts.map +1 -1
  69. package/dist/typescript/src/index.d.ts +5 -3
  70. package/dist/typescript/src/index.d.ts.map +1 -1
  71. package/dist/typescript/src/index.types.d.ts +1 -1
  72. package/dist/typescript/src/index.types.d.ts.map +1 -1
  73. package/dist/typescript/src/utils/constant.d.ts +45 -0
  74. package/dist/typescript/src/utils/constant.d.ts.map +1 -0
  75. package/dist/typescript/src/utils/reanimated.helper.d.ts.map +1 -1
  76. package/package.json +6 -2
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","EmbedButton","Embed","EventKeys","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DEFAULT_INCLUDED_SCREENS","NAVIGATION_LISTENER_DELAY","getRouteHierarchy","state","allRoutes","routesByLevel","currentRouteParams","traverse","currentState","level","index","route","routes","name","routeName","push","params","length","currentScreen","parentRoute","undefined","depth","fullPath","join","routeParams","error","getAllRoutes","allRouteNamesSet","Set","collectRoutes","routeNames","Array","isArray","forEach","add","from","getNavigationTree","buildTree","filter","map","node","children","getAllDefinedRoutes","trackEmbedEvent","eventName","properties","Event","FORM_STATE","type","timestamp","Date","toISOString","trackRageClick","elementId","elementType","coordinates","clickCount","eventData","trackFormEvent","formId","eventType","formData","EmbedProvider","navigationRef","includeScreens","appVersion","_appVersion","defaultNavRef","navRef","isMountedRef","showEmbedButton","setShowEmbedButton","allIncludedScreens","Boolean","trackScreen","current","getRootState","routeInfo","screenName","getCurrentRoute","hasIncludeFilter","isIncluded","includes","shouldShowButton","screen","app_version","unsubscribe","delayTimer","setupListener","addListener","setTimeout","clearTimeout"],"sourceRoot":"../../../src","sources":["context/EmbedProvider.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,WAAW,QAAQ,oCAAiC;AAC7D,OAAOC,KAAK,IAAIC,SAAS,QAAQ,0BAAuB;;AAExD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAyBA;AACA;AACA;AACA;;AAkBA;AACA;AACA;AACA;AAHA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAeA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAkC,GAAG,EAAE;;AAE7C;AACA;AACA;AACA;AACA,MAAMC,yBAAyB,GAAG,IAAI;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAIC,KAAU,IAA4B;EACtE,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;EAEvB,IAAI;IACF,MAAMC,SAAmB,GAAG,EAAE;IAC9B,MAAMC,aAAqC,GAAG,CAAC,CAAC;IAChD,IAAIC,kBAAmD;;IAEvD;AACJ;AACA;AACA;AACA;IACI,MAAMC,QAAQ,GAAGA,CAACC,YAAiB,EAAEC,KAAa,GAAG,CAAC,KAAW;MAC/D,IAAI,CAACD,YAAY,IAAI,OAAOA,YAAY,CAACE,KAAK,KAAK,QAAQ,EAAE;MAE7D,MAAMC,KAAK,GAAGH,YAAY,CAACI,MAAM,GAAGJ,YAAY,CAACE,KAAK,CAAC;MACvD,IAAI,CAACC,KAAK,IAAI,CAACA,KAAK,CAACE,IAAI,EAAE;MAE3B,MAAMC,SAAS,GAAGH,KAAK,CAACE,IAAI;MAC5BT,SAAS,CAACW,IAAI,CAACD,SAAS,CAAC;MACzBT,aAAa,CAACI,KAAK,CAAC,GAAGK,SAAS;;MAEhC;MACA,IAAI,CAACH,KAAK,CAACR,KAAK,IAAIQ,KAAK,CAACK,MAAM,EAAE;QAChCV,kBAAkB,GAAGK,KAAK,CAACK,MAAM;MACnC;;MAEA;MACA,IAAIL,KAAK,CAACR,KAAK,EAAE;QACfI,QAAQ,CAACI,KAAK,CAACR,KAAK,EAAEM,KAAK,GAAG,CAAC,CAAC;MAClC;IACF,CAAC;;IAED;IACAF,QAAQ,CAACJ,KAAK,CAAC;;IAEf;IACA,IAAIC,SAAS,CAACa,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;;IAEvC;IACA,MAAMC,aAAa,GAAGd,SAAS,CAACA,SAAS,CAACa,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS;IAClE,MAAME,WAAW,GACff,SAAS,CAACa,MAAM,GAAG,CAAC,GAAGb,SAAS,CAACA,SAAS,CAACa,MAAM,GAAG,CAAC,CAAC,GAAGG,SAAS;IACpE,MAAMC,KAAK,GAAGjB,SAAS,CAACa,MAAM;IAC9B,MAAMK,QAAQ,GAAGlB,SAAS,CAACmB,IAAI,CAAC,KAAK,CAAC;IAEtC,OAAO;MACLL,aAAa;MACbI,QAAQ;MACRlB,SAAS;MACTiB,KAAK;MACLhB,aAAa;MACbc,WAAW;MACXK,WAAW,EAAElB;IACf,CAAC;EACH,CAAC,CAAC,OAAOmB,KAAK,EAAE;IACd;IACA,OAAO,IAAI;EACb;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAIvB,KAAU,IAAe;EACpD,IAAI,CAACA,KAAK,EAAE,OAAO,EAAE;;EAErB;EACA,MAAMwB,gBAAgB,GAAG,IAAIC,GAAG,CAAS,CAAC;;EAE1C;AACF;AACA;AACA;EACE,MAAMC,aAAa,GAAIrB,YAAiB,IAAW;IACjD,IAAI,CAACA,YAAY,EAAE;;IAEnB;IACA,IAAIA,YAAY,EAAEsB,UAAU,IAAIC,KAAK,CAACC,OAAO,CAACxB,YAAY,CAACsB,UAAU,CAAC,EAAE;MACtEtB,YAAY,CAACsB,UAAU,CAACG,OAAO,CAAEnB,SAAiB,IAAK;QACrD,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;UAC9Ca,gBAAgB,CAACO,GAAG,CAACpB,SAAS,CAAC;QACjC;MACF,CAAC,CAAC;IACJ;;IAEA;IACA,IAAI,CAACN,YAAY,EAAEI,MAAM,IAAI,CAACmB,KAAK,CAACC,OAAO,CAACxB,YAAY,CAACI,MAAM,CAAC,EAAE;IAElEJ,YAAY,CAACI,MAAM,CAACqB,OAAO,CAAEtB,KAAU,IAAK;MAC1C,IAAIA,KAAK,EAAEE,IAAI,IAAI,OAAOF,KAAK,CAACE,IAAI,KAAK,QAAQ,EAAE;QACjDc,gBAAgB,CAACO,GAAG,CAACvB,KAAK,CAACE,IAAI,CAAC;MAClC;;MAEA;MACA,IAAIF,KAAK,EAAER,KAAK,EAAE;QAChB0B,aAAa,CAAClB,KAAK,CAACR,KAAK,CAAC;MAC5B;IACF,CAAC,CAAC;EACJ,CAAC;EAED,IAAI;IACF0B,aAAa,CAAC1B,KAAK,CAAC;EACtB,CAAC,CAAC,OAAOsB,KAAK,EAAE;IACd;IACA,OAAO,EAAE;EACX;EAEA,OAAOM,KAAK,CAACI,IAAI,CAACR,gBAAgB,CAAC;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,iBAAiB,GAAIjC,KAAU,IAA2B;EACrE,IAAI,CAACA,KAAK,EAAE,OAAO,EAAE;;EAErB;AACF;AACA;AACA;AACA;AACA;EACE,MAAMkC,SAAS,GAAGA,CAChB7B,YAAiB,EACjBC,KAAa,GAAG,CAAC,KACQ;IACzB,IAAI,CAACD,YAAY,EAAEI,MAAM,IAAI,CAACmB,KAAK,CAACC,OAAO,CAACxB,YAAY,CAACI,MAAM,CAAC,EAAE;MAChE,OAAO,EAAE;IACX;IAEA,OAAOJ,YAAY,CAACI,MAAM,CACvB0B,MAAM,CAAE3B,KAAU,IAAKA,KAAK,IAAIA,KAAK,CAACE,IAAI,CAAC,CAC3C0B,GAAG,CAAE5B,KAAU,IAAK;MACnB,MAAM6B,IAAwB,GAAG;QAC/B3B,IAAI,EAAEF,KAAK,CAACE,IAAI;QAChBJ,KAAK;QACLO,MAAM,EAAEL,KAAK,CAACK;MAChB,CAAC;;MAED;MACA,IAAIL,KAAK,CAACR,KAAK,EAAE;QACfqC,IAAI,CAACC,QAAQ,GAAGJ,SAAS,CAAC1B,KAAK,CAACR,KAAK,EAAEM,KAAK,GAAG,CAAC,CAAC;MACnD;MAEA,OAAO+B,IAAI;IACb,CAAC,CAAC;EACN,CAAC;EAED,IAAI;IACF,OAAOH,SAAS,CAAClC,KAAK,CAAC;EACzB,CAAC,CAAC,OAAOsB,KAAK,EAAE;IACd;IACA,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMiB,mBAAmB,GAAIvC,KAAU,IAAe;EAC3D,OAAOuB,YAAY,CAACvB,KAAK,CAAC;AAC5B,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAYA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMwC,eAAe,GAAGA,CAC7BC,SAAiB,EACjBC,UAA+B,GAAG,CAAC,CAAC,KAC3B;EACT,IAAI;IACFrD,KAAK,CAACsD,KAAK,CAACrD,SAAS,CAACsD,UAAU,EAAE;MAChCC,IAAI,EAAE,cAAc;MACpBJ,SAAS;MACTC,UAAU;MACVI,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC,CAAC;EACJ,CAAC,CAAC,OAAO1B,KAAK,EAAE;IACd;IACA;EAAA;AAEJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM2B,cAAc,GAAGA,CAC5BC,SAAiB,EACjBC,WAAmB,EACnBC,WAAqC,EACrCC,UAAkB,KACT;EACT,IAAI;IACF,MAAMC,SAAS,GAAG;MAChBT,IAAI,EAAE,YAAY;MAClBK,SAAS;MACTC,WAAW;MACXC,WAAW;MACXC,UAAU;MACVP,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC;IAED3D,KAAK,CAACsD,KAAK,CAACrD,SAAS,CAACsD,UAAU,EAAEU,SAAS,CAAC;EAC9C,CAAC,CAAC,OAAOhC,KAAK,EAAE;IACd;EAAA;AAEJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMiC,cAAc,GAAGA,CAC5BC,MAAc,EACdC,SAAuD,EACvDC,QAA6B,GAAG,CAAC,CAAC,KACzB;EACT,IAAI;IACF,MAAMJ,SAAS,GAAG;MAChBT,IAAI,EAAEY,SAAS;MACfD,MAAM;MACNE,QAAQ;MACRZ,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC;IAED3D,KAAK,CAACsD,KAAK,CAACrD,SAAS,CAACsD,UAAU,EAAEU,SAAS,CAAC;EAC9C,CAAC,CAAC,OAAOhC,KAAK,EAAE;IACd;EAAA;AAEJ,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMqC,aAA2C,GAAGA,CAAC;EAC1DrB,QAAQ;EACRsB,aAAa;EACbC,cAAc,GAAGhE,wBAAwB;EACzCiE,UAAU,EAAEC;AACd,CAAC,KAAK;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMC,aAAa,GAAG9E,MAAM,CAA8B,IAAI,CAAC;EAC/D,MAAM+E,MAAM,GAAGL,aAAa,IAAII,aAAa;;EAE7C;AACF;AACA;EACE,MAAME,YAAY,GAAGhF,MAAM,CAAC,IAAI,CAAC;;EAEjC;;EAEA;EACA,MAAM,CAACiF,eAAe,EAAEC,kBAAkB,CAAC,GAAGjF,QAAQ,CAAU,KAAK,CAAC;;EAEtE;;EAEA;AACF;AACA;AACA;EACE,MAAMkF,kBAAkB,GAAGpF,OAAO,CAAC,MAAM;IACvC,OAAO2C,KAAK,CAACI,IAAI,CAAC,IAAIP,GAAG,CAACoC,cAAc,CAAC1B,MAAM,CAACmC,OAAO,CAAC,CAAC,CAAC;EAC5D,CAAC,EAAE,CAACT,cAAc,CAAC,CAAC;;EAEpB;;EAEA;AACF;AACA;AACA;EACE,MAAMU,WAAW,GAAGxF,WAAW,CAAC,YAA2B;IACzD,IAAI;MACF;MACA,IAAI,CAACkF,MAAM,CAACO,OAAO,EAAE;QACnB;MACF;MAEA,MAAMxE,KAAK,GAAGiE,MAAM,CAACO,OAAO,CAACC,YAAY,CAAC,CAAC;MAC3C,IAAI,CAACzE,KAAK,EAAE;QACV;MACF;MAEA,MAAM0E,SAAS,GAAG3E,iBAAiB,CAACC,KAAK,CAAC;MAC1C;MACA,MAAM2E,UAAU,GACdD,SAAS,EAAE3D,aAAa,IACxBkD,MAAM,CAACO,OAAO,CAACI,eAAe,CAAC,CAAC,EAAElE,IAAI,IACtC,EAAE;;MAEJ;MACA;MACA,MAAMmE,gBAAgB,GAAGR,kBAAkB,CAACvD,MAAM,GAAG,CAAC;MACtD,MAAMgE,UAAU,GAAGT,kBAAkB,CAACU,QAAQ,CAACJ,UAAU,CAAC;MAC1D,MAAMK,gBAAgB,GACpBL,UAAU,KAAK,EAAE,KAAK,CAACE,gBAAgB,IAAIC,UAAU,CAAC;MACxD;MACA,IAAIZ,YAAY,CAACM,OAAO,EAAE;QACxBJ,kBAAkB,CAACY,gBAAgB,CAAC;MACtC;;MAEA;MACA,IAAIN,SAAS,EAAE;QACb,IAAI;UACF;UACArF,KAAK,CAACsD,KAAK,CAACrD,SAAS,CAACsD,UAAU,EAAE;YAChCC,IAAI,EAAE,aAAa;YACnB,GAAG6B,SAAS;YACZO,MAAM,EAAEP,SAAS,CAAC3D,aAAa;YAC/B;YACAmE,WAAW,EAAEnB,WAAW;YACxBjB,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;UACpC,CAAC,CAAC;QACJ,CAAC,CAAC,OAAO1B,KAAK,EAAE;UACd;QAAA;MAEJ;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACd;IAAA;EAEJ,CAAC,EAAE,CAAC2C,MAAM,EAAEI,kBAAkB,EAAEN,WAAW,CAAC,CAAC;;EAE7C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE/E,SAAS,CAAC,MAAM;IACd;IACA,IAAI,CAACiF,MAAM,EAAE;MACX;IACF;IAEA,IAAIkB,WAAqC;IACzC,IAAIC,UAAsC;;IAE1C;AACJ;AACA;IACI,MAAMC,aAAa,GAAGA,CAAA,KAAM;MAC1B;MACA,IAAIpB,MAAM,CAACO,OAAO,EAAE;QAClBW,WAAW,GAAGlB,MAAM,CAACO,OAAO,CAACc,WAAW,CAAC,OAAO,EAAEf,WAAW,CAAC;QAC9DA,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB;IACF,CAAC;;IAED;IACAc,aAAa,CAAC,CAAC;;IAEf;IACAD,UAAU,GAAGG,UAAU,CAAC,MAAM;MAC5B,IAAI,CAACJ,WAAW,IAAIlB,MAAM,CAACO,OAAO,EAAE;QAClCa,aAAa,CAAC,CAAC;MACjB;IACF,CAAC,EAAEvF,yBAAyB,CAAC;;IAE7B;IACA,OAAO,MAAM;MACX,IAAIsF,UAAU,EAAE;QACdI,YAAY,CAACJ,UAAU,CAAC;MAC1B;MACA,IAAID,WAAW,EAAE;QACfA,WAAW,CAAC,CAAC;MACf;IACF,CAAC;EACH,CAAC,EAAE,CAAClB,MAAM,EAAEM,WAAW,CAAC,CAAC;;EAEzB;AACF;AACA;AACA;AACA;EACEvF,SAAS,CAAC,MAAM;IACdkF,YAAY,CAACM,OAAO,GAAG,IAAI;IAE3B,OAAO,MAAM;MACXN,YAAY,CAACM,OAAO,GAAG,KAAK;IAC9B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;;EAEN;;EAEA,oBACE5E,KAAA,CAAAF,SAAA;IAAA4C,QAAA,GACGA,QAAQ,EACR6B,eAAe,iBAAI3E,IAAA,CAACJ,WAAW,IAAE,CAAC;EAAA,CACnC,CAAC;AAEP,CAAC;;AAED;AACA;AACA;;AAEA;AACA,eAAeuE,aAAa","ignoreList":[]}
@@ -2,25 +2,158 @@
2
2
 
3
3
  import { getAgentData, setAgentData } from "../store/store.key.js";
4
4
  import { APIService } from "../api/api.js";
5
- // Predefined event keys
5
+ import { buildEventPayload } from "../utils/constant.js";
6
+ // Predefined event keys for sending data to the agent
6
7
  export let EventKeys = /*#__PURE__*/function (EventKeys) {
7
8
  EventKeys["USER_DATA"] = "user_data";
8
9
  EventKeys["SCREEN_STATE"] = "screen_state";
9
10
  EventKeys["OFFER_STATE"] = "offer_state";
11
+ EventKeys["CUSTOM_EVENT"] = "custom_event";
12
+ EventKeys["FORM_STATE"] = "form_state";
13
+ EventKeys["ACTION_STATE"] = "action_state";
14
+ EventKeys["ERROR_STATE"] = "error_state";
15
+ EventKeys["SUCCESS_STATE"] = "success_state";
16
+ EventKeys["WARNING_STATE"] = "warning_state";
17
+ EventKeys["INFO_STATE"] = "info_state";
18
+ EventKeys["DEBUG_STATE"] = "debug_state";
10
19
  return EventKeys;
11
20
  }({});
21
+
22
+ // Agent event keys for listening to agent state changes
23
+ export let AgentEvent = /*#__PURE__*/function (AgentEvent) {
24
+ AgentEvent["AGENT_CONNECTED"] = "agent_connected";
25
+ AgentEvent["AGENT_DISCONNECTED"] = "agent_disconnected";
26
+ AgentEvent["POPUP_MESSAGE_VISIBLE"] = "popup_message_visible";
27
+ return AgentEvent;
28
+ }({});
29
+
30
+ // Event data interfaces
31
+
32
+ /**
33
+ * Agent Event Emitter
34
+ * Handles listening to agent state changes (connection, disconnection, popup visibility)
35
+ * Also sends agent events to the backend API
36
+ */
37
+ class AgentEventEmitter {
38
+ agentListeners = {};
39
+
40
+ /**
41
+ * Add an event listener for agent events
42
+ * @param eventKey - The agent event to listen for
43
+ * @param callback - Callback function to execute when event fires
44
+ */
45
+ on(eventKey, callback) {
46
+ if (!this.agentListeners[eventKey]) {
47
+ this.agentListeners[eventKey] = [];
48
+ }
49
+ this.agentListeners[eventKey]?.push(callback);
50
+ }
51
+
52
+ /**
53
+ * Remove an event listener for agent events
54
+ * @param eventKey - The agent event to stop listening to
55
+ * @param callback - The callback function to remove
56
+ */
57
+ off(eventKey, callback) {
58
+ if (!this.agentListeners[eventKey]) return;
59
+ const index = this.agentListeners[eventKey]?.indexOf(callback);
60
+ if (index !== undefined && index > -1) {
61
+ this.agentListeners[eventKey]?.splice(index, 1);
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Emit an agent event to all registered listeners AND send to backend
67
+ * @param eventKey - The agent event to emit
68
+ * @param data - Data to pass to listeners
69
+ * @internal - Used internally by the library
70
+ */
71
+ async emit(eventKey, data) {
72
+ // Trigger local event listeners first
73
+ this.agentListeners[eventKey]?.forEach(callback => {
74
+ try {
75
+ callback(data);
76
+ } catch (error) {
77
+ console.error(`Error in agent event listener for ${eventKey}:`, error);
78
+ }
79
+ });
80
+
81
+ // Send to backend API
82
+ await this.sendToBackend(eventKey, data);
83
+ }
84
+
85
+ /**
86
+ * Send agent event data to backend API
87
+ * @param eventKey - The agent event type
88
+ * @param data - Event data
89
+ * @private
90
+ */
91
+ async sendToBackend(eventKey, data) {
92
+ try {
93
+ // Get user identity to include app_user_id
94
+ const userIdentity = await getAgentData(EventKeys.USER_DATA);
95
+ if (!userIdentity?.app_user_id) {
96
+ console.warn(`[AgentEvent] Cannot send ${eventKey} to backend: User identity not found`);
97
+ return;
98
+ }
99
+
100
+ // Prepare payload with app_user_id
101
+ const payload = {
102
+ ...data,
103
+ app_user_id: userIdentity.app_user_id,
104
+ eventKey: eventKey,
105
+ eventType: 'agent_event'
106
+ };
107
+
108
+ // Send to API
109
+ const apiService = APIService.getInstance();
110
+ const paramsData = buildEventPayload(payload);
111
+ const response = await apiService.updateUserData(paramsData);
112
+ if (!response.success) {
113
+ console.error(`[AgentEvent] Failed to send ${eventKey} to backend:`, response.error);
114
+ }
115
+ } catch (error) {
116
+ console.error(`[AgentEvent] Error sending ${eventKey} to backend:`, error);
117
+ // Fail silently - agent events should not break the app
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Remove all listeners for a specific event
123
+ * @param eventKey - The agent event to clear listeners for
124
+ */
125
+ removeAllListeners(eventKey) {
126
+ if (eventKey) {
127
+ delete this.agentListeners[eventKey];
128
+ } else {
129
+ this.agentListeners = {};
130
+ }
131
+ }
132
+ }
12
133
  class Embed {
13
134
  events = {};
14
135
 
136
+ // Agent event emitter for listening to agent state changes
137
+
138
+ constructor() {
139
+ this.event = new AgentEventEmitter();
140
+ }
141
+
15
142
  // Automatically adds a default listener if none exists
16
143
  ensureDefaultListener(eventKey) {
17
144
  if (!this.events[eventKey]) {
18
145
  this.events[eventKey] = [data => {
19
146
  // todo: handle default event
20
- console.info('default event', data);
147
+ console.info('default event this', data);
21
148
  }];
22
149
  }
23
150
  }
151
+
152
+ /**
153
+ * Send an event to the AI agent
154
+ * @param eventKey - The event type to send
155
+ * @param data - Event data payload
156
+ */
24
157
  async Event(eventKey, data) {
25
158
  if (!Object.values(EventKeys).includes(eventKey)) {
26
159
  // todo: handle invalid event key
@@ -42,9 +175,12 @@ class Embed {
42
175
  // Trigger API call
43
176
  try {
44
177
  const apiService = APIService.getInstance();
178
+ const paramsData = buildEventPayload({
179
+ ...data,
180
+ eventKey: key
181
+ });
45
182
  const response = await apiService.updateUserData({
46
- eventKey: key,
47
- data
183
+ ...paramsData
48
184
  });
49
185
  if (!response.success) {
50
186
  throw new Error(`Failed to trigger API for event: ${eventKey}`);
@@ -59,7 +195,10 @@ class Embed {
59
195
  this.events[key]?.forEach(callback => callback(data));
60
196
  }
61
197
 
62
- // Still allow custom listeners (optional)
198
+ /**
199
+ * Add listener for data events (legacy support)
200
+ * @deprecated Use event.on() for agent events instead
201
+ */
63
202
  on(eventKey, callback) {
64
203
  if (!this.events[eventKey]) {
65
204
  this.events[eventKey] = [];
@@ -1 +1 @@
1
- {"version":3,"names":["getAgentData","setAgentData","APIService","EventKeys","Embed","events","ensureDefaultListener","eventKey","data","console","info","Event","Object","values","includes","Error","join","key","USER_DATA","userIdentity","app_user_id","apiService","getInstance","response","updateUserData","success","error","forEach","callback","on","push","embed"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,YAAY,QAAQ,uBAAoB;AAC/D,SAASC,UAAU,QAAQ,eAAY;AAIvC;AACA,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAMrB,MAAMC,KAAK,CAAC;EACFC,MAAM,GAA6C,CAAC,CAAC;;EAE7D;EACQC,qBAAqBA,CAACC,QAAmB,EAAE;IACjD,IAAI,CAAC,IAAI,CAACF,MAAM,CAACE,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAACF,MAAM,CAACE,QAAQ,CAAC,GAAG,CACrBC,IAAS,IAAK;QACb;QACAC,OAAO,CAACC,IAAI,CAAC,eAAe,EAAEF,IAAI,CAAC;MACrC,CAAC,CACF;IACH;EACF;EAEA,MAAMG,KAAKA,CAACJ,QAAgB,EAAEC,IAAS,EAAE;IACvC,IAAI,CAACI,MAAM,CAACC,MAAM,CAACV,SAAS,CAAC,CAACW,QAAQ,CAACP,QAAqB,CAAC,EAAE;MAC7D;MACA,MAAM,IAAIQ,KAAK,CACb,sBAAsBR,QAAQ,qBAAqBK,MAAM,CAACC,MAAM,CAACV,SAAS,CAAC,CAACa,IAAI,CAAC,IAAI,CAAC,EACxF,CAAC;IACH;IAEA,MAAMC,GAAG,GAAGV,QAAqB;IAEjC,IAAIU,GAAG,KAAKd,SAAS,CAACe,SAAS,EAAE;MAC/B,MAAMC,YAAY,GAAG,MAAMnB,YAAY,CAACG,SAAS,CAACe,SAAS,CAAC;MAC5D,IAAIC,YAAY,EAAE;QAChBX,IAAI,CAACY,WAAW,GAAGD,YAAY,CAACC,WAAW;MAC7C,CAAC,MAAM;QACL,MAAM,IAAIL,KAAK,CAAC,yBAAyB,CAAC;MAC5C;IACF;;IAEA;IACA,IAAI,CAACT,qBAAqB,CAACW,GAAG,CAAC;;IAE/B;IACA,IAAI;MACF,MAAMI,UAAU,GAAGnB,UAAU,CAACoB,WAAW,CAAC,CAAC;MAC3C,MAAMC,QAAQ,GAAG,MAAMF,UAAU,CAACG,cAAc,CAAC;QAC/CjB,QAAQ,EAAEU,GAAG;QACbT;MACF,CAAC,CAAC;MAEF,IAAI,CAACe,QAAQ,CAACE,OAAO,EAAE;QACrB,MAAM,IAAIV,KAAK,CAAC,oCAAoCR,QAAQ,EAAE,CAAC;MACjE;MACAN,YAAY,CAACO,IAAI,EAAES,GAAG,CAAC;IACzB,CAAC,CAAC,OAAOS,KAAK,EAAE;MACd,MAAM,IAAIX,KAAK,CAAC,oCAAoCR,QAAQ,EAAE,CAAC;MAC/D;IACF;;IAEA;IACA,IAAI,CAACF,MAAM,CAACY,GAAG,CAAC,EAAEU,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACpB,IAAI,CAAC,CAAC;EACzD;;EAEA;EACAqB,EAAEA,CAACtB,QAAmB,EAAEqB,QAAuB,EAAE;IAC/C,IAAI,CAAC,IAAI,CAACvB,MAAM,CAACE,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAACF,MAAM,CAACE,QAAQ,CAAC,GAAG,EAAE;IAC5B;IACA,IAAI,CAACF,MAAM,CAACE,QAAQ,CAAC,EAAEuB,IAAI,CAACF,QAAQ,CAAC;EACvC;AACF;AAEA,MAAMG,KAAK,GAAG,IAAI3B,KAAK,CAAC,CAAC;AACzB,eAAe2B,KAAK","ignoreList":[]}
1
+ {"version":3,"names":["getAgentData","setAgentData","APIService","buildEventPayload","EventKeys","AgentEvent","AgentEventEmitter","agentListeners","on","eventKey","callback","push","off","index","indexOf","undefined","splice","emit","data","forEach","error","console","sendToBackend","userIdentity","USER_DATA","app_user_id","warn","payload","eventType","apiService","getInstance","paramsData","response","updateUserData","success","removeAllListeners","Embed","events","constructor","event","ensureDefaultListener","info","Event","Object","values","includes","Error","join","key","embed"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @file EmbedButton.animations.ts
5
+ * @description Animation logic and hooks for the EmbedButton component
6
+ */
7
+
8
+ import { useEffect } from 'react';
9
+ import { Gesture } from 'react-native-gesture-handler';
10
+ import { getReanimatedAPI, showReanimatedSetupError } from "../utils/reanimated.helper.js";
11
+ import { BUTTON_DIMENSIONS, calculateMaxX, calculateMaxY, clamp, SCREEN_WIDTH } from "./EmbedButton.helpers.js";
12
+
13
+ // Get reanimated API with fallbacks
14
+ const {
15
+ useSharedValue,
16
+ useAnimatedStyle,
17
+ withTiming,
18
+ withSpring,
19
+ withRepeat,
20
+ withSequence,
21
+ runOnJS,
22
+ Easing,
23
+ Animated,
24
+ isAvailable: isReanimatedAvailable
25
+ } = getReanimatedAPI();
26
+
27
+ // Show warning if reanimated is not available
28
+ if (!isReanimatedAvailable) {
29
+ showReanimatedSetupError();
30
+ }
31
+
32
+ // Export the Animated component for use in the main component
33
+ export { Animated };
34
+
35
+ // ==================== ANIMATION VALUES HOOK ====================
36
+ /**
37
+ * Hook to initialize and manage all animation shared values
38
+ */
39
+ export const useAnimationValues = () => {
40
+ const isPressed = useSharedValue(false);
41
+ const offset = useSharedValue({
42
+ x: 0,
43
+ y: 0
44
+ });
45
+ const start = useSharedValue({
46
+ x: 0,
47
+ y: 0
48
+ });
49
+ const menuAnimation = useSharedValue(0);
50
+ const buttonWidth = useSharedValue(BUTTON_DIMENSIONS.WIDTH);
51
+ const buttonScale = useSharedValue(1);
52
+ return {
53
+ isPressed,
54
+ offset,
55
+ start,
56
+ menuAnimation,
57
+ buttonWidth,
58
+ buttonScale
59
+ };
60
+ };
61
+
62
+ // ==================== BUTTON ANIMATIONS ====================
63
+ /**
64
+ * Hook to handle button expand/collapse animations
65
+ */
66
+ export const useButtonAnimations = (isOpen, menuAnimation, buttonWidth) => {
67
+ useEffect(() => {
68
+ menuAnimation.value = withTiming(isOpen ? 0.8 : 0, {
69
+ duration: 300
70
+ });
71
+ buttonWidth.value = withTiming(isOpen ? BUTTON_DIMENSIONS.EXPANDED_WIDTH : BUTTON_DIMENSIONS.WIDTH);
72
+ }, [isOpen, menuAnimation, buttonWidth]);
73
+ };
74
+
75
+ // ==================== BREATHING ANIMATION ====================
76
+ /**
77
+ * Hook to handle breathing animation when auto-popup is shown
78
+ */
79
+ export const useBreathingAnimation = (isOpen, isAutoOpen, buttonScale) => {
80
+ useEffect(() => {
81
+ if (!isOpen && isAutoOpen) {
82
+ // Start breathing animation
83
+ buttonScale.value = withRepeat(withSequence(withTiming(1.1, {
84
+ duration: 1500,
85
+ easing: Easing.inOut(Easing.ease)
86
+ }), withTiming(1, {
87
+ duration: 1500,
88
+ easing: Easing.inOut(Easing.ease)
89
+ })), -1,
90
+ // Infinite repeat
91
+ false);
92
+ } else {
93
+ // Reset animation
94
+ buttonScale.value = withTiming(1, {
95
+ duration: 300
96
+ });
97
+ }
98
+ }, [buttonScale, isAutoOpen, isOpen]);
99
+ };
100
+
101
+ // ==================== ANIMATED STYLES ====================
102
+ /**
103
+ * Hook to create animated styles for the button
104
+ */
105
+ export const useButtonAnimatedStyles = (isOpen, offset, buttonWidth, isPressed, buttonScale) => {
106
+ return useAnimatedStyle(() => {
107
+ const maxX = calculateMaxX(isOpen);
108
+ const clampedX = clamp(offset.value.x, -maxX, 0);
109
+ return {
110
+ width: buttonWidth.value,
111
+ height: BUTTON_DIMENSIONS.HEIGHT,
112
+ transform: [{
113
+ translateX: clampedX
114
+ }, {
115
+ translateY: offset.value.y
116
+ }, {
117
+ scale: withSpring(isPressed.value ? 0.95 : buttonScale.value)
118
+ }],
119
+ justifyContent: isOpen ? 'space-between' : 'flex-start',
120
+ overflow: 'hidden'
121
+ };
122
+ });
123
+ };
124
+
125
+ /**
126
+ * Hook to create animated styles for the popup text
127
+ */
128
+ export const usePopupAnimatedStyles = (offset, isPressed) => {
129
+ return useAnimatedStyle(() => {
130
+ const maxX = SCREEN_WIDTH;
131
+ const clampedX = clamp(offset.value.x, -maxX, 0);
132
+ return {
133
+ transform: [{
134
+ translateX: clampedX
135
+ }, {
136
+ translateY: offset.value.y
137
+ }, {
138
+ scale: withSpring(isPressed.value ? 1 : 1)
139
+ }]
140
+ };
141
+ });
142
+ };
143
+
144
+ // ==================== GESTURE HANDLER ====================
145
+ /**
146
+ * Create pan gesture for drag functionality
147
+ */
148
+ export const createPanGesture = (isPressed, offset, start, isOpen, setIsAutoOpen) => {
149
+ return Gesture.Pan().onBegin(() => {
150
+ isPressed.value = true;
151
+ if (setIsAutoOpen) {
152
+ runOnJS(setIsAutoOpen)(false);
153
+ }
154
+ }).onUpdate(e => {
155
+ const maxX = calculateMaxX(isOpen);
156
+ const maxY = calculateMaxY();
157
+ const newX = clamp(e.translationX + start.value.x, -maxX, 0);
158
+ const newY = clamp(e.translationY + start.value.y, -maxY, 0);
159
+ offset.value = {
160
+ x: newX,
161
+ y: newY
162
+ };
163
+ }).onEnd(() => {
164
+ start.value = {
165
+ x: offset.value.x,
166
+ y: offset.value.y
167
+ };
168
+ }).onFinalize(() => {
169
+ isPressed.value = false;
170
+ });
171
+ };
172
+ //# sourceMappingURL=EmbedButton.animations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","Gesture","getReanimatedAPI","showReanimatedSetupError","BUTTON_DIMENSIONS","calculateMaxX","calculateMaxY","clamp","SCREEN_WIDTH","useSharedValue","useAnimatedStyle","withTiming","withSpring","withRepeat","withSequence","runOnJS","Easing","Animated","isAvailable","isReanimatedAvailable","useAnimationValues","isPressed","offset","x","y","start","menuAnimation","buttonWidth","WIDTH","buttonScale","useButtonAnimations","isOpen","value","duration","EXPANDED_WIDTH","useBreathingAnimation","isAutoOpen","easing","inOut","ease","useButtonAnimatedStyles","maxX","clampedX","width","height","HEIGHT","transform","translateX","translateY","scale","justifyContent","overflow","usePopupAnimatedStyles","createPanGesture","setIsAutoOpen","Pan","onBegin","onUpdate","e","maxY","newX","translationX","newY","translationY","onEnd","onFinalize"],"sourceRoot":"../../../src","sources":["hooks/EmbedButton.animations.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @file EmbedButton.helpers.ts
5
+ * @description Helper functions and utilities for the EmbedButton component
6
+ */
7
+
8
+ import { Dimensions } from 'react-native';
9
+
10
+ // ==================== CONSTANTS ====================
11
+ export const {
12
+ width: SCREEN_WIDTH,
13
+ height: SCREEN_HEIGHT
14
+ } = Dimensions.get('window');
15
+ export const BUTTON_DIMENSIONS = {
16
+ WIDTH: 60,
17
+ HEIGHT: 60,
18
+ EXPANDED_WIDTH: SCREEN_WIDTH * 0.9
19
+ };
20
+ export const ICON_URLS = {
21
+ MIC_ON: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/Mute+button.png',
22
+ MIC_OFF: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/unmute.png',
23
+ END_CALL: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/end+button.png',
24
+ AMPLIFY_ANIMATION: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/amplify.json'
25
+ };
26
+ export const DEFAULT_GRADIENT_COLORS = ['#1E0844', '#B391F3'];
27
+ export const DEFAULT_POPUP_DELAY_MS = 15000;
28
+
29
+ // ==================== TYPES ====================
30
+
31
+ // ==================== HELPER FUNCTIONS ====================
32
+
33
+ /**
34
+ * Safely parse delay value to ensure it's a valid number
35
+ */
36
+ export const parseDelayMs = delay => {
37
+ if (typeof delay === 'number') {
38
+ return delay;
39
+ }
40
+ const parsed = Number(delay);
41
+ return Number.isFinite(parsed) ? parsed : DEFAULT_POPUP_DELAY_MS;
42
+ };
43
+
44
+ /**
45
+ * Format seconds to MM:SS format
46
+ */
47
+ export const formatDuration = seconds => {
48
+ const minutes = Math.floor(seconds / 60);
49
+ const remainingSeconds = seconds % 60;
50
+ return `${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
51
+ };
52
+
53
+ /**
54
+ * Calculate the max X position for button drag constraints
55
+ */
56
+ export const calculateMaxX = isOpen => {
57
+ 'worklet';
58
+
59
+ const width = isOpen ? BUTTON_DIMENSIONS.EXPANDED_WIDTH : BUTTON_DIMENSIONS.WIDTH;
60
+ return SCREEN_WIDTH - width - 35;
61
+ };
62
+
63
+ /**
64
+ * Calculate the max Y position for button drag constraints
65
+ */
66
+ export const calculateMaxY = () => {
67
+ 'worklet';
68
+
69
+ return SCREEN_HEIGHT - 150;
70
+ };
71
+
72
+ /**
73
+ * Clamp a value between a min and max
74
+ */
75
+ export const clamp = (value, min, max) => {
76
+ 'worklet';
77
+
78
+ return Math.min(Math.max(value, min), max);
79
+ };
80
+ //# sourceMappingURL=EmbedButton.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","width","SCREEN_WIDTH","height","SCREEN_HEIGHT","get","BUTTON_DIMENSIONS","WIDTH","HEIGHT","EXPANDED_WIDTH","ICON_URLS","MIC_ON","MIC_OFF","END_CALL","AMPLIFY_ANIMATION","DEFAULT_GRADIENT_COLORS","DEFAULT_POPUP_DELAY_MS","parseDelayMs","delay","parsed","Number","isFinite","formatDuration","seconds","minutes","Math","floor","remainingSeconds","toString","padStart","calculateMaxX","isOpen","calculateMaxY","clamp","value","min","max"],"sourceRoot":"../../../src","sources":["hooks/EmbedButton.helpers.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,cAAc;;AAEzC;AACA,OAAO,MAAM;EAAEC,KAAK,EAAEC,YAAY;EAAEC,MAAM,EAAEC;AAAc,CAAC,GACzDJ,UAAU,CAACK,GAAG,CAAC,QAAQ,CAAC;AAE1B,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,KAAK,EAAE,EAAE;EACTC,MAAM,EAAE,EAAE;EACVC,cAAc,EAAEP,YAAY,GAAG;AACjC,CAAU;AAEV,OAAO,MAAMQ,SAAS,GAAG;EACvBC,MAAM,EACJ,wEAAwE;EAC1EC,OAAO,EAAE,mEAAmE;EAC5EC,QAAQ,EACN,uEAAuE;EACzEC,iBAAiB,EACf;AACJ,CAAU;AAEV,OAAO,MAAMC,uBAAuB,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AAE7D,OAAO,MAAMC,sBAAsB,GAAG,KAAK;;AAE3C;;AAYA;;AAEA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAIC,KAAkC,IAAa;EAC1E,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK;EACd;EAEA,MAAMC,MAAM,GAAGC,MAAM,CAACF,KAAK,CAAC;EAC5B,OAAOE,MAAM,CAACC,QAAQ,CAACF,MAAM,CAAC,GAAGA,MAAM,GAAGH,sBAAsB;AAClE,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMM,cAAc,GAAIC,OAAe,IAAa;EACzD,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACH,OAAO,GAAG,EAAE,CAAC;EACxC,MAAMI,gBAAgB,GAAGJ,OAAO,GAAG,EAAE;EACrC,OAAO,GAAGC,OAAO,CAACI,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAIF,gBAAgB,CAC9DC,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACvB,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAIC,MAAe,IAAa;EACxD,SAAS;;EACT,MAAM9B,KAAK,GAAG8B,MAAM,GAChBzB,iBAAiB,CAACG,cAAc,GAChCH,iBAAiB,CAACC,KAAK;EAC3B,OAAOL,YAAY,GAAGD,KAAK,GAAG,EAAE;AAClC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM+B,aAAa,GAAGA,CAAA,KAAc;EACzC,SAAS;;EACT,OAAO5B,aAAa,GAAG,GAAG;AAC5B,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAM6B,KAAK,GAAGA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,KAAa;EACxE,SAAS;;EACT,OAAOX,IAAI,CAACU,GAAG,CAACV,IAAI,CAACW,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C,CAAC","ignoreList":[]}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @file EmbedButton.hooks.ts
5
+ * @description Custom hooks for the EmbedButton component
6
+ */
7
+
8
+ import { useCallback, useEffect, useRef, useState } from 'react';
9
+ import { getAgentData } from "../store/store.key.js";
10
+ import { checkPermissions } from "../utils/permision.js";
11
+ import { parseDelayMs } from "./EmbedButton.helpers.js";
12
+
13
+ // ==================== CONFIG DATA HOOK ====================
14
+ /**
15
+ * Hook to fetch and manage agent configuration data
16
+ */
17
+ export const useConfigData = () => {
18
+ const [configData, setConfigData] = useState(null);
19
+ useEffect(() => {
20
+ const fetchConfig = async () => {
21
+ try {
22
+ const data = await getAgentData('@config_data');
23
+ setConfigData(data?.ui_config || null);
24
+ } catch (error) {
25
+ console.error('Failed to fetch config data:', error);
26
+ }
27
+ };
28
+ fetchConfig();
29
+ }, []);
30
+ return configData;
31
+ };
32
+
33
+ // ==================== CALL DURATION HOOK ====================
34
+ /**
35
+ * Hook to track call duration when connected
36
+ */
37
+ export const useCallDuration = connectionState => {
38
+ const [callDuration, setCallDuration] = useState(0);
39
+ const timerRef = useRef(null);
40
+ useEffect(() => {
41
+ if (connectionState === 'connected' && !timerRef.current) {
42
+ // Start timer
43
+ timerRef.current = setInterval(() => {
44
+ setCallDuration(prev => prev + 1);
45
+ }, 1000);
46
+ } else if (connectionState !== 'connected' && timerRef.current) {
47
+ // Stop timer
48
+ clearInterval(timerRef.current);
49
+ timerRef.current = null;
50
+ }
51
+ return () => {
52
+ if (timerRef.current) {
53
+ clearInterval(timerRef.current);
54
+ timerRef.current = null;
55
+ }
56
+ };
57
+ }, [connectionState]);
58
+ const resetDuration = useCallback(() => {
59
+ setCallDuration(0);
60
+ if (timerRef.current) {
61
+ clearInterval(timerRef.current);
62
+ timerRef.current = null;
63
+ }
64
+ }, []);
65
+ return {
66
+ callDuration,
67
+ resetDuration
68
+ };
69
+ };
70
+
71
+ // ==================== INACTIVITY BEHAVIOR HOOK ====================
72
+ /**
73
+ * Hook to handle inactivity behavior (show_popup or auto_trigger)
74
+ */
75
+
76
+ export const useInactivityBehavior = ({
77
+ configData,
78
+ isOpen,
79
+ isLoading,
80
+ hasActiveToken,
81
+ onStartCall
82
+ }) => {
83
+ const [isAutoOpen, setIsAutoOpen] = useState(false);
84
+ useEffect(() => {
85
+ const behavior = configData?.inactivity_behaviour;
86
+
87
+ // Only act when explicitly configured
88
+ if (behavior !== 'show_popup' && behavior !== 'auto_trigger') {
89
+ return;
90
+ }
91
+
92
+ // Parse delay with fallback
93
+ const delayMs = parseDelayMs(configData?.popup_delay_ms);
94
+ const timer = setTimeout(async () => {
95
+ if (isOpen) return;
96
+ if (behavior === 'show_popup') {
97
+ // Show popup notification
98
+ if (configData?.popup_description) {
99
+ setIsAutoOpen(true);
100
+ } else {
101
+ console.warn('Popup behavior configured but no description provided');
102
+ }
103
+ } else if (behavior === 'auto_trigger') {
104
+ // Auto-start the call
105
+ setIsAutoOpen(false);
106
+ if (!hasActiveToken && !isLoading) {
107
+ try {
108
+ await onStartCall();
109
+ } catch (error) {
110
+ console.error('Auto-trigger call failed:', error);
111
+ }
112
+ }
113
+ }
114
+ }, delayMs);
115
+ return () => clearTimeout(timer);
116
+ }, [configData?.inactivity_behaviour, configData?.popup_delay_ms, configData?.popup_description, isOpen, isLoading, hasActiveToken, onStartCall]);
117
+ return {
118
+ isAutoOpen,
119
+ setIsAutoOpen
120
+ };
121
+ };
122
+
123
+ // ==================== CALL MANAGEMENT HOOK ====================
124
+ /**
125
+ * Hook to manage call lifecycle (start, end, mute)
126
+ */
127
+
128
+ export const useCallManagement = ({
129
+ initializeVoiceAgent,
130
+ endCall,
131
+ muteMic,
132
+ unmuteMic,
133
+ isMicMuted,
134
+ resetDuration,
135
+ setIsOpen
136
+ }) => {
137
+ const handleStartCall = useCallback(async () => {
138
+ await checkPermissions();
139
+ resetDuration();
140
+ await initializeVoiceAgent();
141
+ }, [initializeVoiceAgent, resetDuration]);
142
+ const handleEndCall = useCallback(async () => {
143
+ setIsOpen(false);
144
+ resetDuration();
145
+ await endCall();
146
+ }, [endCall, resetDuration, setIsOpen]);
147
+ const handleMicToggle = useCallback(() => {
148
+ if (isMicMuted) {
149
+ unmuteMic();
150
+ } else {
151
+ muteMic();
152
+ }
153
+ }, [isMicMuted, muteMic, unmuteMic]);
154
+ return {
155
+ handleStartCall,
156
+ handleEndCall,
157
+ handleMicToggle
158
+ };
159
+ };
160
+ //# sourceMappingURL=EmbedButton.hooks.js.map