@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
@@ -3,28 +3,156 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.EventKeys = void 0;
6
+ exports.default = exports.EventKeys = exports.AgentEvent = void 0;
7
7
  var _storeKey = require("../store/store.key.js");
8
8
  var _api = require("../api/api.js");
9
- // Predefined event keys
9
+ var _constant = require("../utils/constant.js");
10
+ // Predefined event keys for sending data to the agent
10
11
  let EventKeys = exports.EventKeys = /*#__PURE__*/function (EventKeys) {
11
12
  EventKeys["USER_DATA"] = "user_data";
12
13
  EventKeys["SCREEN_STATE"] = "screen_state";
13
14
  EventKeys["OFFER_STATE"] = "offer_state";
15
+ EventKeys["CUSTOM_EVENT"] = "custom_event";
16
+ EventKeys["FORM_STATE"] = "form_state";
17
+ EventKeys["ACTION_STATE"] = "action_state";
18
+ EventKeys["ERROR_STATE"] = "error_state";
19
+ EventKeys["SUCCESS_STATE"] = "success_state";
20
+ EventKeys["WARNING_STATE"] = "warning_state";
21
+ EventKeys["INFO_STATE"] = "info_state";
22
+ EventKeys["DEBUG_STATE"] = "debug_state";
14
23
  return EventKeys;
15
- }({});
24
+ }({}); // Agent event keys for listening to agent state changes
25
+ let AgentEvent = exports.AgentEvent = /*#__PURE__*/function (AgentEvent) {
26
+ AgentEvent["AGENT_CONNECTED"] = "agent_connected";
27
+ AgentEvent["AGENT_DISCONNECTED"] = "agent_disconnected";
28
+ AgentEvent["POPUP_MESSAGE_VISIBLE"] = "popup_message_visible";
29
+ return AgentEvent;
30
+ }({}); // Event data interfaces
31
+ /**
32
+ * Agent Event Emitter
33
+ * Handles listening to agent state changes (connection, disconnection, popup visibility)
34
+ * Also sends agent events to the backend API
35
+ */
36
+ class AgentEventEmitter {
37
+ agentListeners = {};
38
+
39
+ /**
40
+ * Add an event listener for agent events
41
+ * @param eventKey - The agent event to listen for
42
+ * @param callback - Callback function to execute when event fires
43
+ */
44
+ on(eventKey, callback) {
45
+ if (!this.agentListeners[eventKey]) {
46
+ this.agentListeners[eventKey] = [];
47
+ }
48
+ this.agentListeners[eventKey]?.push(callback);
49
+ }
50
+
51
+ /**
52
+ * Remove an event listener for agent events
53
+ * @param eventKey - The agent event to stop listening to
54
+ * @param callback - The callback function to remove
55
+ */
56
+ off(eventKey, callback) {
57
+ if (!this.agentListeners[eventKey]) return;
58
+ const index = this.agentListeners[eventKey]?.indexOf(callback);
59
+ if (index !== undefined && index > -1) {
60
+ this.agentListeners[eventKey]?.splice(index, 1);
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Emit an agent event to all registered listeners AND send to backend
66
+ * @param eventKey - The agent event to emit
67
+ * @param data - Data to pass to listeners
68
+ * @internal - Used internally by the library
69
+ */
70
+ async emit(eventKey, data) {
71
+ // Trigger local event listeners first
72
+ this.agentListeners[eventKey]?.forEach(callback => {
73
+ try {
74
+ callback(data);
75
+ } catch (error) {
76
+ console.error(`Error in agent event listener for ${eventKey}:`, error);
77
+ }
78
+ });
79
+
80
+ // Send to backend API
81
+ await this.sendToBackend(eventKey, data);
82
+ }
83
+
84
+ /**
85
+ * Send agent event data to backend API
86
+ * @param eventKey - The agent event type
87
+ * @param data - Event data
88
+ * @private
89
+ */
90
+ async sendToBackend(eventKey, data) {
91
+ try {
92
+ // Get user identity to include app_user_id
93
+ const userIdentity = await (0, _storeKey.getAgentData)(EventKeys.USER_DATA);
94
+ if (!userIdentity?.app_user_id) {
95
+ console.warn(`[AgentEvent] Cannot send ${eventKey} to backend: User identity not found`);
96
+ return;
97
+ }
98
+
99
+ // Prepare payload with app_user_id
100
+ const payload = {
101
+ ...data,
102
+ app_user_id: userIdentity.app_user_id,
103
+ eventKey: eventKey,
104
+ eventType: 'agent_event'
105
+ };
106
+
107
+ // Send to API
108
+ const apiService = _api.APIService.getInstance();
109
+ const paramsData = (0, _constant.buildEventPayload)(payload);
110
+ const response = await apiService.updateUserData(paramsData);
111
+ if (!response.success) {
112
+ console.error(`[AgentEvent] Failed to send ${eventKey} to backend:`, response.error);
113
+ }
114
+ } catch (error) {
115
+ console.error(`[AgentEvent] Error sending ${eventKey} to backend:`, error);
116
+ // Fail silently - agent events should not break the app
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Remove all listeners for a specific event
122
+ * @param eventKey - The agent event to clear listeners for
123
+ */
124
+ removeAllListeners(eventKey) {
125
+ if (eventKey) {
126
+ delete this.agentListeners[eventKey];
127
+ } else {
128
+ this.agentListeners = {};
129
+ }
130
+ }
131
+ }
16
132
  class Embed {
17
133
  events = {};
18
134
 
135
+ // Agent event emitter for listening to agent state changes
136
+
137
+ constructor() {
138
+ this.event = new AgentEventEmitter();
139
+ }
140
+
19
141
  // Automatically adds a default listener if none exists
20
142
  ensureDefaultListener(eventKey) {
21
143
  if (!this.events[eventKey]) {
22
144
  this.events[eventKey] = [data => {
23
145
  // todo: handle default event
24
- console.info('default event', data);
146
+ console.info('default event this', data);
25
147
  }];
26
148
  }
27
149
  }
150
+
151
+ /**
152
+ * Send an event to the AI agent
153
+ * @param eventKey - The event type to send
154
+ * @param data - Event data payload
155
+ */
28
156
  async Event(eventKey, data) {
29
157
  if (!Object.values(EventKeys).includes(eventKey)) {
30
158
  // todo: handle invalid event key
@@ -46,9 +174,12 @@ class Embed {
46
174
  // Trigger API call
47
175
  try {
48
176
  const apiService = _api.APIService.getInstance();
177
+ const paramsData = (0, _constant.buildEventPayload)({
178
+ ...data,
179
+ eventKey: key
180
+ });
49
181
  const response = await apiService.updateUserData({
50
- eventKey: key,
51
- data
182
+ ...paramsData
52
183
  });
53
184
  if (!response.success) {
54
185
  throw new Error(`Failed to trigger API for event: ${eventKey}`);
@@ -63,7 +194,10 @@ class Embed {
63
194
  this.events[key]?.forEach(callback => callback(data));
64
195
  }
65
196
 
66
- // Still allow custom listeners (optional)
197
+ /**
198
+ * Add listener for data events (legacy support)
199
+ * @deprecated Use event.on() for agent events instead
200
+ */
67
201
  on(eventKey, callback) {
68
202
  if (!this.events[eventKey]) {
69
203
  this.events[eventKey] = [];
@@ -1 +1 @@
1
- {"version":3,"names":["_storeKey","require","_api","EventKeys","exports","Embed","events","ensureDefaultListener","eventKey","data","console","info","Event","Object","values","includes","Error","join","key","USER_DATA","userIdentity","getAgentData","app_user_id","apiService","APIService","getInstance","response","updateUserData","success","setAgentData","error","forEach","callback","on","push","embed","_default","default"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAIA;AAAA,IACYE,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAMrB,MAAME,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,CAACX,SAAS,CAAC,CAACY,QAAQ,CAACP,QAAqB,CAAC,EAAE;MAC7D;MACA,MAAM,IAAIQ,KAAK,CACb,sBAAsBR,QAAQ,qBAAqBK,MAAM,CAACC,MAAM,CAACX,SAAS,CAAC,CAACc,IAAI,CAAC,IAAI,CAAC,EACxF,CAAC;IACH;IAEA,MAAMC,GAAG,GAAGV,QAAqB;IAEjC,IAAIU,GAAG,KAAKf,SAAS,CAACgB,SAAS,EAAE;MAC/B,MAAMC,YAAY,GAAG,MAAM,IAAAC,sBAAY,EAAClB,SAAS,CAACgB,SAAS,CAAC;MAC5D,IAAIC,YAAY,EAAE;QAChBX,IAAI,CAACa,WAAW,GAAGF,YAAY,CAACE,WAAW;MAC7C,CAAC,MAAM;QACL,MAAM,IAAIN,KAAK,CAAC,yBAAyB,CAAC;MAC5C;IACF;;IAEA;IACA,IAAI,CAACT,qBAAqB,CAACW,GAAG,CAAC;;IAE/B;IACA,IAAI;MACF,MAAMK,UAAU,GAAGC,eAAU,CAACC,WAAW,CAAC,CAAC;MAC3C,MAAMC,QAAQ,GAAG,MAAMH,UAAU,CAACI,cAAc,CAAC;QAC/CnB,QAAQ,EAAEU,GAAG;QACbT;MACF,CAAC,CAAC;MAEF,IAAI,CAACiB,QAAQ,CAACE,OAAO,EAAE;QACrB,MAAM,IAAIZ,KAAK,CAAC,oCAAoCR,QAAQ,EAAE,CAAC;MACjE;MACA,IAAAqB,sBAAY,EAACpB,IAAI,EAAES,GAAG,CAAC;IACzB,CAAC,CAAC,OAAOY,KAAK,EAAE;MACd,MAAM,IAAId,KAAK,CAAC,oCAAoCR,QAAQ,EAAE,CAAC;MAC/D;IACF;;IAEA;IACA,IAAI,CAACF,MAAM,CAACY,GAAG,CAAC,EAAEa,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACvB,IAAI,CAAC,CAAC;EACzD;;EAEA;EACAwB,EAAEA,CAACzB,QAAmB,EAAEwB,QAAuB,EAAE;IAC/C,IAAI,CAAC,IAAI,CAAC1B,MAAM,CAACE,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAACF,MAAM,CAACE,QAAQ,CAAC,GAAG,EAAE;IAC5B;IACA,IAAI,CAACF,MAAM,CAACE,QAAQ,CAAC,EAAE0B,IAAI,CAACF,QAAQ,CAAC;EACvC;AACF;AAEA,MAAMG,KAAK,GAAG,IAAI9B,KAAK,CAAC,CAAC;AAAC,IAAA+B,QAAA,GAAAhC,OAAA,CAAAiC,OAAA,GACXF,KAAK","ignoreList":[]}
1
+ {"version":3,"names":["_storeKey","require","_api","_constant","EventKeys","exports","AgentEvent","AgentEventEmitter","agentListeners","on","eventKey","callback","push","off","index","indexOf","undefined","splice","emit","data","forEach","error","console","sendToBackend","userIdentity","getAgentData","USER_DATA","app_user_id","warn","payload","eventType","apiService","APIService","getInstance","paramsData","buildEventPayload","response","updateUserData","success","removeAllListeners","Embed","events","constructor","event","ensureDefaultListener","info","Event","Object","values","includes","Error","join","key","setAgentData","embed","_default","default"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.usePopupAnimatedStyles = exports.useButtonAnimations = exports.useButtonAnimatedStyles = exports.useBreathingAnimation = exports.useAnimationValues = exports.createPanGesture = exports.Animated = void 0;
7
+ var _react = require("react");
8
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
9
+ var _reanimatedHelper = require("../utils/reanimated.helper.js");
10
+ var _EmbedButtonHelpers = require("./EmbedButton.helpers.js");
11
+ /**
12
+ * @file EmbedButton.animations.ts
13
+ * @description Animation logic and hooks for the EmbedButton component
14
+ */
15
+
16
+ // Get reanimated API with fallbacks
17
+ const {
18
+ useSharedValue,
19
+ useAnimatedStyle,
20
+ withTiming,
21
+ withSpring,
22
+ withRepeat,
23
+ withSequence,
24
+ runOnJS,
25
+ Easing,
26
+ Animated,
27
+ isAvailable: isReanimatedAvailable
28
+ } = (0, _reanimatedHelper.getReanimatedAPI)();
29
+
30
+ // Show warning if reanimated is not available
31
+ exports.Animated = Animated;
32
+ if (!isReanimatedAvailable) {
33
+ (0, _reanimatedHelper.showReanimatedSetupError)();
34
+ }
35
+
36
+ // Export the Animated component for use in the main component
37
+
38
+ // ==================== ANIMATION VALUES HOOK ====================
39
+ /**
40
+ * Hook to initialize and manage all animation shared values
41
+ */
42
+ const useAnimationValues = () => {
43
+ const isPressed = useSharedValue(false);
44
+ const offset = useSharedValue({
45
+ x: 0,
46
+ y: 0
47
+ });
48
+ const start = useSharedValue({
49
+ x: 0,
50
+ y: 0
51
+ });
52
+ const menuAnimation = useSharedValue(0);
53
+ const buttonWidth = useSharedValue(_EmbedButtonHelpers.BUTTON_DIMENSIONS.WIDTH);
54
+ const buttonScale = useSharedValue(1);
55
+ return {
56
+ isPressed,
57
+ offset,
58
+ start,
59
+ menuAnimation,
60
+ buttonWidth,
61
+ buttonScale
62
+ };
63
+ };
64
+
65
+ // ==================== BUTTON ANIMATIONS ====================
66
+ /**
67
+ * Hook to handle button expand/collapse animations
68
+ */
69
+ exports.useAnimationValues = useAnimationValues;
70
+ const useButtonAnimations = (isOpen, menuAnimation, buttonWidth) => {
71
+ (0, _react.useEffect)(() => {
72
+ menuAnimation.value = withTiming(isOpen ? 0.8 : 0, {
73
+ duration: 300
74
+ });
75
+ buttonWidth.value = withTiming(isOpen ? _EmbedButtonHelpers.BUTTON_DIMENSIONS.EXPANDED_WIDTH : _EmbedButtonHelpers.BUTTON_DIMENSIONS.WIDTH);
76
+ }, [isOpen, menuAnimation, buttonWidth]);
77
+ };
78
+
79
+ // ==================== BREATHING ANIMATION ====================
80
+ /**
81
+ * Hook to handle breathing animation when auto-popup is shown
82
+ */
83
+ exports.useButtonAnimations = useButtonAnimations;
84
+ const useBreathingAnimation = (isOpen, isAutoOpen, buttonScale) => {
85
+ (0, _react.useEffect)(() => {
86
+ if (!isOpen && isAutoOpen) {
87
+ // Start breathing animation
88
+ buttonScale.value = withRepeat(withSequence(withTiming(1.1, {
89
+ duration: 1500,
90
+ easing: Easing.inOut(Easing.ease)
91
+ }), withTiming(1, {
92
+ duration: 1500,
93
+ easing: Easing.inOut(Easing.ease)
94
+ })), -1,
95
+ // Infinite repeat
96
+ false);
97
+ } else {
98
+ // Reset animation
99
+ buttonScale.value = withTiming(1, {
100
+ duration: 300
101
+ });
102
+ }
103
+ }, [buttonScale, isAutoOpen, isOpen]);
104
+ };
105
+
106
+ // ==================== ANIMATED STYLES ====================
107
+ /**
108
+ * Hook to create animated styles for the button
109
+ */
110
+ exports.useBreathingAnimation = useBreathingAnimation;
111
+ const useButtonAnimatedStyles = (isOpen, offset, buttonWidth, isPressed, buttonScale) => {
112
+ return useAnimatedStyle(() => {
113
+ const maxX = (0, _EmbedButtonHelpers.calculateMaxX)(isOpen);
114
+ const clampedX = (0, _EmbedButtonHelpers.clamp)(offset.value.x, -maxX, 0);
115
+ return {
116
+ width: buttonWidth.value,
117
+ height: _EmbedButtonHelpers.BUTTON_DIMENSIONS.HEIGHT,
118
+ transform: [{
119
+ translateX: clampedX
120
+ }, {
121
+ translateY: offset.value.y
122
+ }, {
123
+ scale: withSpring(isPressed.value ? 0.95 : buttonScale.value)
124
+ }],
125
+ justifyContent: isOpen ? 'space-between' : 'flex-start',
126
+ overflow: 'hidden'
127
+ };
128
+ });
129
+ };
130
+
131
+ /**
132
+ * Hook to create animated styles for the popup text
133
+ */
134
+ exports.useButtonAnimatedStyles = useButtonAnimatedStyles;
135
+ const usePopupAnimatedStyles = (offset, isPressed) => {
136
+ return useAnimatedStyle(() => {
137
+ const maxX = _EmbedButtonHelpers.SCREEN_WIDTH;
138
+ const clampedX = (0, _EmbedButtonHelpers.clamp)(offset.value.x, -maxX, 0);
139
+ return {
140
+ transform: [{
141
+ translateX: clampedX
142
+ }, {
143
+ translateY: offset.value.y
144
+ }, {
145
+ scale: withSpring(isPressed.value ? 1 : 1)
146
+ }]
147
+ };
148
+ });
149
+ };
150
+
151
+ // ==================== GESTURE HANDLER ====================
152
+ /**
153
+ * Create pan gesture for drag functionality
154
+ */
155
+ exports.usePopupAnimatedStyles = usePopupAnimatedStyles;
156
+ const createPanGesture = (isPressed, offset, start, isOpen, setIsAutoOpen) => {
157
+ return _reactNativeGestureHandler.Gesture.Pan().onBegin(() => {
158
+ isPressed.value = true;
159
+ if (setIsAutoOpen) {
160
+ runOnJS(setIsAutoOpen)(false);
161
+ }
162
+ }).onUpdate(e => {
163
+ const maxX = (0, _EmbedButtonHelpers.calculateMaxX)(isOpen);
164
+ const maxY = (0, _EmbedButtonHelpers.calculateMaxY)();
165
+ const newX = (0, _EmbedButtonHelpers.clamp)(e.translationX + start.value.x, -maxX, 0);
166
+ const newY = (0, _EmbedButtonHelpers.clamp)(e.translationY + start.value.y, -maxY, 0);
167
+ offset.value = {
168
+ x: newX,
169
+ y: newY
170
+ };
171
+ }).onEnd(() => {
172
+ start.value = {
173
+ x: offset.value.x,
174
+ y: offset.value.y
175
+ };
176
+ }).onFinalize(() => {
177
+ isPressed.value = false;
178
+ });
179
+ };
180
+ exports.createPanGesture = createPanGesture;
181
+ //# sourceMappingURL=EmbedButton.animations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reanimatedHelper","_EmbedButtonHelpers","useSharedValue","useAnimatedStyle","withTiming","withSpring","withRepeat","withSequence","runOnJS","Easing","Animated","isAvailable","isReanimatedAvailable","getReanimatedAPI","exports","showReanimatedSetupError","useAnimationValues","isPressed","offset","x","y","start","menuAnimation","buttonWidth","BUTTON_DIMENSIONS","WIDTH","buttonScale","useButtonAnimations","isOpen","useEffect","value","duration","EXPANDED_WIDTH","useBreathingAnimation","isAutoOpen","easing","inOut","ease","useButtonAnimatedStyles","maxX","calculateMaxX","clampedX","clamp","width","height","HEIGHT","transform","translateX","translateY","scale","justifyContent","overflow","usePopupAnimatedStyles","SCREEN_WIDTH","createPanGesture","setIsAutoOpen","Gesture","Pan","onBegin","onUpdate","e","maxY","calculateMaxY","newX","translationX","newY","translationY","onEnd","onFinalize"],"sourceRoot":"../../../src","sources":["hooks/EmbedButton.animations.ts"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAIA,IAAAG,mBAAA,GAAAH,OAAA;AAZA;AACA;AACA;AACA;;AAiBA;AACA,MAAM;EACJI,cAAc;EACdC,gBAAgB;EAChBC,UAAU;EACVC,UAAU;EACVC,UAAU;EACVC,YAAY;EACZC,OAAO;EACPC,MAAM;EACNC,QAAQ;EACRC,WAAW,EAAEC;AACf,CAAC,GAAG,IAAAC,kCAAgB,EAAC,CAAC;;AAEtB;AAAAC,OAAA,CAAAJ,QAAA,GAAAA,QAAA;AACA,IAAI,CAACE,qBAAqB,EAAE;EAC1B,IAAAG,0CAAwB,EAAC,CAAC;AAC5B;;AAEA;;AAGA;AACA;AACA;AACA;AACO,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAMC,SAAS,GAAGf,cAAc,CAAC,KAAK,CAAC;EACvC,MAAMgB,MAAM,GAAGhB,cAAc,CAAC;IAAEiB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAAC;EAC7C,MAAMC,KAAK,GAAGnB,cAAc,CAAC;IAAEiB,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC,CAAC;EAC5C,MAAME,aAAa,GAAGpB,cAAc,CAAC,CAAC,CAAC;EACvC,MAAMqB,WAAW,GAAGrB,cAAc,CAACsB,qCAAiB,CAACC,KAAK,CAAC;EAC3D,MAAMC,WAAW,GAAGxB,cAAc,CAAC,CAAC,CAAC;EAErC,OAAO;IACLe,SAAS;IACTC,MAAM;IACNG,KAAK;IACLC,aAAa;IACbC,WAAW;IACXG;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AAFAZ,OAAA,CAAAE,kBAAA,GAAAA,kBAAA;AAGO,MAAMW,mBAAmB,GAAGA,CACjCC,MAAe,EACfN,aAAkB,EAClBC,WAAgB,KACb;EACH,IAAAM,gBAAS,EAAC,MAAM;IACdP,aAAa,CAACQ,KAAK,GAAG1B,UAAU,CAACwB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE;MACjDG,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFR,WAAW,CAACO,KAAK,GAAG1B,UAAU,CAC5BwB,MAAM,GAAGJ,qCAAiB,CAACQ,cAAc,GAAGR,qCAAiB,CAACC,KAChE,CAAC;EACH,CAAC,EAAE,CAACG,MAAM,EAAEN,aAAa,EAAEC,WAAW,CAAC,CAAC;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AAFAT,OAAA,CAAAa,mBAAA,GAAAA,mBAAA;AAGO,MAAMM,qBAAqB,GAAGA,CACnCL,MAAe,EACfM,UAAmB,EACnBR,WAAgB,KACb;EACH,IAAAG,gBAAS,EAAC,MAAM;IACd,IAAI,CAACD,MAAM,IAAIM,UAAU,EAAE;MACzB;MACAR,WAAW,CAACI,KAAK,GAAGxB,UAAU,CAC5BC,YAAY,CACVH,UAAU,CAAC,GAAG,EAAE;QACd2B,QAAQ,EAAE,IAAI;QACdI,MAAM,EAAE1B,MAAM,CAAC2B,KAAK,CAAC3B,MAAM,CAAC4B,IAAI;MAClC,CAAC,CAAC,EACFjC,UAAU,CAAC,CAAC,EAAE;QACZ2B,QAAQ,EAAE,IAAI;QACdI,MAAM,EAAE1B,MAAM,CAAC2B,KAAK,CAAC3B,MAAM,CAAC4B,IAAI;MAClC,CAAC,CACH,CAAC,EACD,CAAC,CAAC;MAAE;MACJ,KACF,CAAC;IACH,CAAC,MAAM;MACL;MACAX,WAAW,CAACI,KAAK,GAAG1B,UAAU,CAAC,CAAC,EAAE;QAAE2B,QAAQ,EAAE;MAAI,CAAC,CAAC;IACtD;EACF,CAAC,EAAE,CAACL,WAAW,EAAEQ,UAAU,EAAEN,MAAM,CAAC,CAAC;AACvC,CAAC;;AAED;AACA;AACA;AACA;AAFAd,OAAA,CAAAmB,qBAAA,GAAAA,qBAAA;AAGO,MAAMK,uBAAuB,GAAGA,CACrCV,MAAe,EACfV,MAAW,EACXK,WAAgB,EAChBN,SAAc,EACdS,WAAgB,KACb;EACH,OAAOvB,gBAAgB,CAAC,MAAM;IAC5B,MAAMoC,IAAI,GAAG,IAAAC,iCAAa,EAACZ,MAAM,CAAC;IAClC,MAAMa,QAAQ,GAAG,IAAAC,yBAAK,EAACxB,MAAM,CAACY,KAAK,CAACX,CAAC,EAAE,CAACoB,IAAI,EAAE,CAAC,CAAC;IAEhD,OAAO;MACLI,KAAK,EAAEpB,WAAW,CAACO,KAAK;MACxBc,MAAM,EAAEpB,qCAAiB,CAACqB,MAAM;MAChCC,SAAS,EAAE,CACT;QAAEC,UAAU,EAAEN;MAAS,CAAC,EACxB;QAAEO,UAAU,EAAE9B,MAAM,CAACY,KAAK,CAACV;MAAE,CAAC,EAC9B;QAAE6B,KAAK,EAAE5C,UAAU,CAACY,SAAS,CAACa,KAAK,GAAG,IAAI,GAAGJ,WAAW,CAACI,KAAK;MAAE,CAAC,CAClE;MACDoB,cAAc,EAAEtB,MAAM,GAAG,eAAe,GAAG,YAAY;MACvDuB,QAAQ,EAAE;IACZ,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AAFArC,OAAA,CAAAwB,uBAAA,GAAAA,uBAAA;AAGO,MAAMc,sBAAsB,GAAGA,CAAClC,MAAW,EAAED,SAAc,KAAK;EACrE,OAAOd,gBAAgB,CAAC,MAAM;IAC5B,MAAMoC,IAAI,GAAGc,gCAAY;IACzB,MAAMZ,QAAQ,GAAG,IAAAC,yBAAK,EAACxB,MAAM,CAACY,KAAK,CAACX,CAAC,EAAE,CAACoB,IAAI,EAAE,CAAC,CAAC;IAEhD,OAAO;MACLO,SAAS,EAAE,CACT;QAAEC,UAAU,EAAEN;MAAS,CAAC,EACxB;QAAEO,UAAU,EAAE9B,MAAM,CAACY,KAAK,CAACV;MAAE,CAAC,EAC9B;QAAE6B,KAAK,EAAE5C,UAAU,CAACY,SAAS,CAACa,KAAK,GAAG,CAAC,GAAG,CAAC;MAAE,CAAC;IAElD,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AAFAhB,OAAA,CAAAsC,sBAAA,GAAAA,sBAAA;AAGO,MAAME,gBAAgB,GAAGA,CAC9BrC,SAAc,EACdC,MAAW,EACXG,KAAU,EACVO,MAAe,EACf2B,aAAuC,KACpC;EACH,OAAOC,kCAAO,CAACC,GAAG,CAAC,CAAC,CACjBC,OAAO,CAAC,MAAM;IACbzC,SAAS,CAACa,KAAK,GAAG,IAAI;IACtB,IAAIyB,aAAa,EAAE;MACjB/C,OAAO,CAAC+C,aAAa,CAAC,CAAC,KAAK,CAAC;IAC/B;EACF,CAAC,CAAC,CACDI,QAAQ,CAAEC,CAAgC,IAAK;IAC9C,MAAMrB,IAAI,GAAG,IAAAC,iCAAa,EAACZ,MAAM,CAAC;IAClC,MAAMiC,IAAI,GAAG,IAAAC,iCAAa,EAAC,CAAC;IAE5B,MAAMC,IAAI,GAAG,IAAArB,yBAAK,EAACkB,CAAC,CAACI,YAAY,GAAG3C,KAAK,CAACS,KAAK,CAACX,CAAC,EAAE,CAACoB,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM0B,IAAI,GAAG,IAAAvB,yBAAK,EAACkB,CAAC,CAACM,YAAY,GAAG7C,KAAK,CAACS,KAAK,CAACV,CAAC,EAAE,CAACyC,IAAI,EAAE,CAAC,CAAC;IAE5D3C,MAAM,CAACY,KAAK,GAAG;MAAEX,CAAC,EAAE4C,IAAI;MAAE3C,CAAC,EAAE6C;IAAK,CAAC;EACrC,CAAC,CAAC,CACDE,KAAK,CAAC,MAAM;IACX9C,KAAK,CAACS,KAAK,GAAG;MACZX,CAAC,EAAED,MAAM,CAACY,KAAK,CAACX,CAAC;MACjBC,CAAC,EAAEF,MAAM,CAACY,KAAK,CAACV;IAClB,CAAC;EACH,CAAC,CAAC,CACDgD,UAAU,CAAC,MAAM;IAChBnD,SAAS,CAACa,KAAK,GAAG,KAAK;EACzB,CAAC,CAAC;AACN,CAAC;AAAChB,OAAA,CAAAwC,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseDelayMs = exports.formatDuration = exports.clamp = exports.calculateMaxY = exports.calculateMaxX = exports.SCREEN_WIDTH = exports.SCREEN_HEIGHT = exports.ICON_URLS = exports.DEFAULT_POPUP_DELAY_MS = exports.DEFAULT_GRADIENT_COLORS = exports.BUTTON_DIMENSIONS = void 0;
7
+ var _reactNative = require("react-native");
8
+ /**
9
+ * @file EmbedButton.helpers.ts
10
+ * @description Helper functions and utilities for the EmbedButton component
11
+ */
12
+
13
+ // ==================== CONSTANTS ====================
14
+ const {
15
+ width: SCREEN_WIDTH,
16
+ height: SCREEN_HEIGHT
17
+ } = _reactNative.Dimensions.get('window');
18
+ exports.SCREEN_HEIGHT = SCREEN_HEIGHT;
19
+ exports.SCREEN_WIDTH = SCREEN_WIDTH;
20
+ const BUTTON_DIMENSIONS = exports.BUTTON_DIMENSIONS = {
21
+ WIDTH: 60,
22
+ HEIGHT: 60,
23
+ EXPANDED_WIDTH: SCREEN_WIDTH * 0.9
24
+ };
25
+ const ICON_URLS = exports.ICON_URLS = {
26
+ MIC_ON: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/Mute+button.png',
27
+ MIC_OFF: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/unmute.png',
28
+ END_CALL: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/end+button.png',
29
+ AMPLIFY_ANIMATION: 'https://revrag-dev.s3.ap-south-1.amazonaws.com/Avatars/amplify.json'
30
+ };
31
+ const DEFAULT_GRADIENT_COLORS = exports.DEFAULT_GRADIENT_COLORS = ['#1E0844', '#B391F3'];
32
+ const DEFAULT_POPUP_DELAY_MS = exports.DEFAULT_POPUP_DELAY_MS = 15000;
33
+
34
+ // ==================== TYPES ====================
35
+
36
+ // ==================== HELPER FUNCTIONS ====================
37
+
38
+ /**
39
+ * Safely parse delay value to ensure it's a valid number
40
+ */
41
+ const parseDelayMs = delay => {
42
+ if (typeof delay === 'number') {
43
+ return delay;
44
+ }
45
+ const parsed = Number(delay);
46
+ return Number.isFinite(parsed) ? parsed : DEFAULT_POPUP_DELAY_MS;
47
+ };
48
+
49
+ /**
50
+ * Format seconds to MM:SS format
51
+ */
52
+ exports.parseDelayMs = parseDelayMs;
53
+ const formatDuration = seconds => {
54
+ const minutes = Math.floor(seconds / 60);
55
+ const remainingSeconds = seconds % 60;
56
+ return `${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;
57
+ };
58
+
59
+ /**
60
+ * Calculate the max X position for button drag constraints
61
+ */
62
+ exports.formatDuration = formatDuration;
63
+ const calculateMaxX = isOpen => {
64
+ 'worklet';
65
+
66
+ const width = isOpen ? BUTTON_DIMENSIONS.EXPANDED_WIDTH : BUTTON_DIMENSIONS.WIDTH;
67
+ return SCREEN_WIDTH - width - 35;
68
+ };
69
+
70
+ /**
71
+ * Calculate the max Y position for button drag constraints
72
+ */
73
+ exports.calculateMaxX = calculateMaxX;
74
+ const calculateMaxY = () => {
75
+ 'worklet';
76
+
77
+ return SCREEN_HEIGHT - 150;
78
+ };
79
+
80
+ /**
81
+ * Clamp a value between a min and max
82
+ */
83
+ exports.calculateMaxY = calculateMaxY;
84
+ const clamp = (value, min, max) => {
85
+ 'worklet';
86
+
87
+ return Math.min(Math.max(value, min), max);
88
+ };
89
+ exports.clamp = clamp;
90
+ //# sourceMappingURL=EmbedButton.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","width","SCREEN_WIDTH","height","SCREEN_HEIGHT","Dimensions","get","exports","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":";;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;;AAIA;AACO,MAAM;EAAEC,KAAK,EAAEC,YAAY;EAAEC,MAAM,EAAEC;AAAc,CAAC,GACzDC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC;AAACC,OAAA,CAAAH,aAAA,GAAAA,aAAA;AAAAG,OAAA,CAAAL,YAAA,GAAAA,YAAA;AAEpB,MAAMM,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG;EAC/BC,KAAK,EAAE,EAAE;EACTC,MAAM,EAAE,EAAE;EACVC,cAAc,EAAET,YAAY,GAAG;AACjC,CAAU;AAEH,MAAMU,SAAS,GAAAL,OAAA,CAAAK,SAAA,GAAG;EACvBC,MAAM,EACJ,wEAAwE;EAC1EC,OAAO,EAAE,mEAAmE;EAC5EC,QAAQ,EACN,uEAAuE;EACzEC,iBAAiB,EACf;AACJ,CAAU;AAEH,MAAMC,uBAAuB,GAAAV,OAAA,CAAAU,uBAAA,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;AAEtD,MAAMC,sBAAsB,GAAAX,OAAA,CAAAW,sBAAA,GAAG,KAAK;;AAE3C;;AAYA;;AAEA;AACA;AACA;AACO,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;AAFAX,OAAA,CAAAY,YAAA,GAAAA,YAAA;AAGO,MAAMK,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;AAFAxB,OAAA,CAAAiB,cAAA,GAAAA,cAAA;AAGO,MAAMQ,aAAa,GAAIC,MAAe,IAAa;EACxD,SAAS;;EACT,MAAMhC,KAAK,GAAGgC,MAAM,GAChBzB,iBAAiB,CAACG,cAAc,GAChCH,iBAAiB,CAACC,KAAK;EAC3B,OAAOP,YAAY,GAAGD,KAAK,GAAG,EAAE;AAClC,CAAC;;AAED;AACA;AACA;AAFAM,OAAA,CAAAyB,aAAA,GAAAA,aAAA;AAGO,MAAME,aAAa,GAAGA,CAAA,KAAc;EACzC,SAAS;;EACT,OAAO9B,aAAa,GAAG,GAAG;AAC5B,CAAC;;AAED;AACA;AACA;AAFAG,OAAA,CAAA2B,aAAA,GAAAA,aAAA;AAGO,MAAMC,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;AAAC/B,OAAA,CAAA4B,KAAA,GAAAA,KAAA","ignoreList":[]}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useInactivityBehavior = exports.useConfigData = exports.useCallManagement = exports.useCallDuration = void 0;
7
+ var _react = require("react");
8
+ var _storeKey = require("../store/store.key.js");
9
+ var _permision = require("../utils/permision.js");
10
+ var _EmbedButtonHelpers = require("./EmbedButton.helpers.js");
11
+ /**
12
+ * @file EmbedButton.hooks.ts
13
+ * @description Custom hooks for the EmbedButton component
14
+ */
15
+
16
+ // ==================== CONFIG DATA HOOK ====================
17
+ /**
18
+ * Hook to fetch and manage agent configuration data
19
+ */
20
+ const useConfigData = () => {
21
+ const [configData, setConfigData] = (0, _react.useState)(null);
22
+ (0, _react.useEffect)(() => {
23
+ const fetchConfig = async () => {
24
+ try {
25
+ const data = await (0, _storeKey.getAgentData)('@config_data');
26
+ setConfigData(data?.ui_config || null);
27
+ } catch (error) {
28
+ console.error('Failed to fetch config data:', error);
29
+ }
30
+ };
31
+ fetchConfig();
32
+ }, []);
33
+ return configData;
34
+ };
35
+
36
+ // ==================== CALL DURATION HOOK ====================
37
+ /**
38
+ * Hook to track call duration when connected
39
+ */
40
+ exports.useConfigData = useConfigData;
41
+ const useCallDuration = connectionState => {
42
+ const [callDuration, setCallDuration] = (0, _react.useState)(0);
43
+ const timerRef = (0, _react.useRef)(null);
44
+ (0, _react.useEffect)(() => {
45
+ if (connectionState === 'connected' && !timerRef.current) {
46
+ // Start timer
47
+ timerRef.current = setInterval(() => {
48
+ setCallDuration(prev => prev + 1);
49
+ }, 1000);
50
+ } else if (connectionState !== 'connected' && timerRef.current) {
51
+ // Stop timer
52
+ clearInterval(timerRef.current);
53
+ timerRef.current = null;
54
+ }
55
+ return () => {
56
+ if (timerRef.current) {
57
+ clearInterval(timerRef.current);
58
+ timerRef.current = null;
59
+ }
60
+ };
61
+ }, [connectionState]);
62
+ const resetDuration = (0, _react.useCallback)(() => {
63
+ setCallDuration(0);
64
+ if (timerRef.current) {
65
+ clearInterval(timerRef.current);
66
+ timerRef.current = null;
67
+ }
68
+ }, []);
69
+ return {
70
+ callDuration,
71
+ resetDuration
72
+ };
73
+ };
74
+
75
+ // ==================== INACTIVITY BEHAVIOR HOOK ====================
76
+ /**
77
+ * Hook to handle inactivity behavior (show_popup or auto_trigger)
78
+ */
79
+ exports.useCallDuration = useCallDuration;
80
+ const useInactivityBehavior = ({
81
+ configData,
82
+ isOpen,
83
+ isLoading,
84
+ hasActiveToken,
85
+ onStartCall
86
+ }) => {
87
+ const [isAutoOpen, setIsAutoOpen] = (0, _react.useState)(false);
88
+ (0, _react.useEffect)(() => {
89
+ const behavior = configData?.inactivity_behaviour;
90
+
91
+ // Only act when explicitly configured
92
+ if (behavior !== 'show_popup' && behavior !== 'auto_trigger') {
93
+ return;
94
+ }
95
+
96
+ // Parse delay with fallback
97
+ const delayMs = (0, _EmbedButtonHelpers.parseDelayMs)(configData?.popup_delay_ms);
98
+ const timer = setTimeout(async () => {
99
+ if (isOpen) return;
100
+ if (behavior === 'show_popup') {
101
+ // Show popup notification
102
+ if (configData?.popup_description) {
103
+ setIsAutoOpen(true);
104
+ } else {
105
+ console.warn('Popup behavior configured but no description provided');
106
+ }
107
+ } else if (behavior === 'auto_trigger') {
108
+ // Auto-start the call
109
+ setIsAutoOpen(false);
110
+ if (!hasActiveToken && !isLoading) {
111
+ try {
112
+ await onStartCall();
113
+ } catch (error) {
114
+ console.error('Auto-trigger call failed:', error);
115
+ }
116
+ }
117
+ }
118
+ }, delayMs);
119
+ return () => clearTimeout(timer);
120
+ }, [configData?.inactivity_behaviour, configData?.popup_delay_ms, configData?.popup_description, isOpen, isLoading, hasActiveToken, onStartCall]);
121
+ return {
122
+ isAutoOpen,
123
+ setIsAutoOpen
124
+ };
125
+ };
126
+
127
+ // ==================== CALL MANAGEMENT HOOK ====================
128
+ /**
129
+ * Hook to manage call lifecycle (start, end, mute)
130
+ */
131
+ exports.useInactivityBehavior = useInactivityBehavior;
132
+ const useCallManagement = ({
133
+ initializeVoiceAgent,
134
+ endCall,
135
+ muteMic,
136
+ unmuteMic,
137
+ isMicMuted,
138
+ resetDuration,
139
+ setIsOpen
140
+ }) => {
141
+ const handleStartCall = (0, _react.useCallback)(async () => {
142
+ await (0, _permision.checkPermissions)();
143
+ resetDuration();
144
+ await initializeVoiceAgent();
145
+ }, [initializeVoiceAgent, resetDuration]);
146
+ const handleEndCall = (0, _react.useCallback)(async () => {
147
+ setIsOpen(false);
148
+ resetDuration();
149
+ await endCall();
150
+ }, [endCall, resetDuration, setIsOpen]);
151
+ const handleMicToggle = (0, _react.useCallback)(() => {
152
+ if (isMicMuted) {
153
+ unmuteMic();
154
+ } else {
155
+ muteMic();
156
+ }
157
+ }, [isMicMuted, muteMic, unmuteMic]);
158
+ return {
159
+ handleStartCall,
160
+ handleEndCall,
161
+ handleMicToggle
162
+ };
163
+ };
164
+ exports.useCallManagement = useCallManagement;
165
+ //# sourceMappingURL=EmbedButton.hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_storeKey","_permision","_EmbedButtonHelpers","useConfigData","configData","setConfigData","useState","useEffect","fetchConfig","data","getAgentData","ui_config","error","console","exports","useCallDuration","connectionState","callDuration","setCallDuration","timerRef","useRef","current","setInterval","prev","clearInterval","resetDuration","useCallback","useInactivityBehavior","isOpen","isLoading","hasActiveToken","onStartCall","isAutoOpen","setIsAutoOpen","behavior","inactivity_behaviour","delayMs","parseDelayMs","popup_delay_ms","timer","setTimeout","popup_description","warn","clearTimeout","useCallManagement","initializeVoiceAgent","endCall","muteMic","unmuteMic","isMicMuted","setIsOpen","handleStartCall","checkPermissions","handleEndCall","handleMicToggle"],"sourceRoot":"../../../src","sources":["hooks/EmbedButton.hooks.ts"],"mappings":"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","ignoreList":[]}