@ringg/react-native 0.0.1-alpha.9 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/index.d.mts +964 -0
  2. package/dist/index.d.ts +964 -0
  3. package/dist/index.js +1164 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +1129 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +24 -66
  8. package/LICENSE +0 -21
  9. package/README.md +0 -250
  10. package/app.plugin.js +0 -51
  11. package/lib/module/adapters/index.js +0 -4
  12. package/lib/module/adapters/index.js.map +0 -1
  13. package/lib/module/adapters/livekit-rn-adapter.js +0 -216
  14. package/lib/module/adapters/livekit-rn-adapter.js.map +0 -1
  15. package/lib/module/components/RinggWidget.js +0 -554
  16. package/lib/module/components/RinggWidget.js.map +0 -1
  17. package/lib/module/components/steps/ButtonsStep.js +0 -146
  18. package/lib/module/components/steps/ButtonsStep.js.map +0 -1
  19. package/lib/module/components/steps/CalendarStep.js +0 -190
  20. package/lib/module/components/steps/CalendarStep.js.map +0 -1
  21. package/lib/module/components/steps/ConfirmationStep.js +0 -175
  22. package/lib/module/components/steps/ConfirmationStep.js.map +0 -1
  23. package/lib/module/components/steps/FormStep.js +0 -346
  24. package/lib/module/components/steps/FormStep.js.map +0 -1
  25. package/lib/module/components/steps/InteractiveFlow.js +0 -249
  26. package/lib/module/components/steps/InteractiveFlow.js.map +0 -1
  27. package/lib/module/components/ui/ActionButton.js +0 -92
  28. package/lib/module/components/ui/ActionButton.js.map +0 -1
  29. package/lib/module/components/ui/CallControls.js +0 -168
  30. package/lib/module/components/ui/CallControls.js.map +0 -1
  31. package/lib/module/components/ui/FeedbackScreen.js +0 -180
  32. package/lib/module/components/ui/FeedbackScreen.js.map +0 -1
  33. package/lib/module/components/ui/Icons.js +0 -294
  34. package/lib/module/components/ui/Icons.js.map +0 -1
  35. package/lib/module/components/ui/MessageBubble.js +0 -80
  36. package/lib/module/components/ui/MessageBubble.js.map +0 -1
  37. package/lib/module/components/ui/TabSelector.js +0 -80
  38. package/lib/module/components/ui/TabSelector.js.map +0 -1
  39. package/lib/module/components/ui/WidgetHeader.js +0 -168
  40. package/lib/module/components/ui/WidgetHeader.js.map +0 -1
  41. package/lib/module/context/RinggProvider.js +0 -134
  42. package/lib/module/context/RinggProvider.js.map +0 -1
  43. package/lib/module/context/index.js +0 -4
  44. package/lib/module/context/index.js.map +0 -1
  45. package/lib/module/globals.d.js +0 -2
  46. package/lib/module/globals.d.js.map +0 -1
  47. package/lib/module/hooks/index.js +0 -10
  48. package/lib/module/hooks/index.js.map +0 -1
  49. package/lib/module/hooks/useRinggCall.js +0 -259
  50. package/lib/module/hooks/useRinggCall.js.map +0 -1
  51. package/lib/module/hooks/useRinggChat.js +0 -141
  52. package/lib/module/hooks/useRinggChat.js.map +0 -1
  53. package/lib/module/hooks/useRinggComponents.js +0 -236
  54. package/lib/module/hooks/useRinggComponents.js.map +0 -1
  55. package/lib/module/hooks/useRinggFeedback.js +0 -66
  56. package/lib/module/hooks/useRinggFeedback.js.map +0 -1
  57. package/lib/module/hooks/useRinggTheme.js +0 -39
  58. package/lib/module/hooks/useRinggTheme.js.map +0 -1
  59. package/lib/module/hooks/useRinggTranscripts.js +0 -70
  60. package/lib/module/hooks/useRinggTranscripts.js.map +0 -1
  61. package/lib/module/hooks/useRinggWidgetState.js +0 -51
  62. package/lib/module/hooks/useRinggWidgetState.js.map +0 -1
  63. package/lib/module/index.js +0 -56
  64. package/lib/module/index.js.map +0 -1
  65. package/lib/module/package.json +0 -1
  66. package/lib/typescript/adapters/index.d.ts +0 -2
  67. package/lib/typescript/adapters/index.d.ts.map +0 -1
  68. package/lib/typescript/adapters/livekit-rn-adapter.d.ts +0 -38
  69. package/lib/typescript/adapters/livekit-rn-adapter.d.ts.map +0 -1
  70. package/lib/typescript/components/RinggWidget.d.ts +0 -44
  71. package/lib/typescript/components/RinggWidget.d.ts.map +0 -1
  72. package/lib/typescript/components/steps/ButtonsStep.d.ts +0 -17
  73. package/lib/typescript/components/steps/ButtonsStep.d.ts.map +0 -1
  74. package/lib/typescript/components/steps/CalendarStep.d.ts +0 -16
  75. package/lib/typescript/components/steps/CalendarStep.d.ts.map +0 -1
  76. package/lib/typescript/components/steps/ConfirmationStep.d.ts +0 -16
  77. package/lib/typescript/components/steps/ConfirmationStep.d.ts.map +0 -1
  78. package/lib/typescript/components/steps/FormStep.d.ts +0 -17
  79. package/lib/typescript/components/steps/FormStep.d.ts.map +0 -1
  80. package/lib/typescript/components/steps/InteractiveFlow.d.ts +0 -23
  81. package/lib/typescript/components/steps/InteractiveFlow.d.ts.map +0 -1
  82. package/lib/typescript/components/ui/ActionButton.d.ts +0 -22
  83. package/lib/typescript/components/ui/ActionButton.d.ts.map +0 -1
  84. package/lib/typescript/components/ui/CallControls.d.ts +0 -22
  85. package/lib/typescript/components/ui/CallControls.d.ts.map +0 -1
  86. package/lib/typescript/components/ui/FeedbackScreen.d.ts +0 -24
  87. package/lib/typescript/components/ui/FeedbackScreen.d.ts.map +0 -1
  88. package/lib/typescript/components/ui/Icons.d.ts +0 -28
  89. package/lib/typescript/components/ui/Icons.d.ts.map +0 -1
  90. package/lib/typescript/components/ui/MessageBubble.d.ts +0 -17
  91. package/lib/typescript/components/ui/MessageBubble.d.ts.map +0 -1
  92. package/lib/typescript/components/ui/TabSelector.d.ts +0 -21
  93. package/lib/typescript/components/ui/TabSelector.d.ts.map +0 -1
  94. package/lib/typescript/components/ui/WidgetHeader.d.ts +0 -20
  95. package/lib/typescript/components/ui/WidgetHeader.d.ts.map +0 -1
  96. package/lib/typescript/context/RinggProvider.d.ts +0 -53
  97. package/lib/typescript/context/RinggProvider.d.ts.map +0 -1
  98. package/lib/typescript/context/index.d.ts +0 -3
  99. package/lib/typescript/context/index.d.ts.map +0 -1
  100. package/lib/typescript/hooks/index.d.ts +0 -15
  101. package/lib/typescript/hooks/index.d.ts.map +0 -1
  102. package/lib/typescript/hooks/useRinggCall.d.ts +0 -41
  103. package/lib/typescript/hooks/useRinggCall.d.ts.map +0 -1
  104. package/lib/typescript/hooks/useRinggChat.d.ts +0 -29
  105. package/lib/typescript/hooks/useRinggChat.d.ts.map +0 -1
  106. package/lib/typescript/hooks/useRinggComponents.d.ts +0 -52
  107. package/lib/typescript/hooks/useRinggComponents.d.ts.map +0 -1
  108. package/lib/typescript/hooks/useRinggFeedback.d.ts +0 -23
  109. package/lib/typescript/hooks/useRinggFeedback.d.ts.map +0 -1
  110. package/lib/typescript/hooks/useRinggTheme.d.ts +0 -40
  111. package/lib/typescript/hooks/useRinggTheme.d.ts.map +0 -1
  112. package/lib/typescript/hooks/useRinggTranscripts.d.ts +0 -30
  113. package/lib/typescript/hooks/useRinggTranscripts.d.ts.map +0 -1
  114. package/lib/typescript/hooks/useRinggWidgetState.d.ts +0 -38
  115. package/lib/typescript/hooks/useRinggWidgetState.d.ts.map +0 -1
  116. package/lib/typescript/index.d.ts +0 -44
  117. package/lib/typescript/index.d.ts.map +0 -1
  118. package/lib/typescript/package.json +0 -1
@@ -1,554 +0,0 @@
1
- "use strict";
2
-
3
- /**
4
- * RinggWidget — the pre-built drop-in widget for React Native.
5
- *
6
- * Renders a floating action button (FAB) that opens a modal with
7
- * voice call or text chat capabilities. Mirrors the web CDN widget
8
- * pixel-for-pixel.
9
- *
10
- * Usage:
11
- * ```tsx
12
- * import { RinggWidget } from "@ringg/react-native";
13
- *
14
- * function App() {
15
- * return (
16
- * <View style={{ flex: 1 }}>
17
- * <YourApp />
18
- * <RinggWidget
19
- * config={{
20
- * agentId: "your-agent-id",
21
- * xApiKey: "your-api-key",
22
- * variables: { callee_name: "John" },
23
- * }}
24
- * onEvent={(event, payload) => console.log(event, payload)}
25
- * />
26
- * </View>
27
- * );
28
- * }
29
- * ```
30
- *
31
- * For custom UI, use <RinggProvider> with individual hooks instead.
32
- */
33
-
34
- import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
35
- import { View, TouchableOpacity, FlatList, StyleSheet, Text, Alert, Linking, Dimensions, Animated } from "react-native";
36
- import { colorToSolid, DEFAULT_CONFIG } from "@ringg/core";
37
- import { RinggProvider, useRinggContext } from "../context/RinggProvider.js";
38
- import { useRinggCall } from "../hooks/useRinggCall.js";
39
- import { useRinggChat } from "../hooks/useRinggChat.js";
40
- import { useRinggTranscripts } from "../hooks/useRinggTranscripts.js";
41
- import { useRinggComponents } from "../hooks/useRinggComponents.js";
42
- import { useRinggWidgetState } from "../hooks/useRinggWidgetState.js";
43
- import { useRinggFeedback } from "../hooks/useRinggFeedback.js";
44
- import { useRinggTheme } from "../hooks/useRinggTheme.js";
45
- import { WidgetHeader } from "./ui/WidgetHeader.js";
46
- import { MessageBubble } from "./ui/MessageBubble.js";
47
- import { ActionButton } from "./ui/ActionButton.js";
48
- import { CallControls } from "./ui/CallControls.js";
49
- import { FeedbackScreen } from "./ui/FeedbackScreen.js";
50
- import { TabSelector } from "./ui/TabSelector.js";
51
- import { WidgetPhoneIcon, CloseIcon, MinusIcon } from "./ui/Icons.js";
52
- import { InteractiveFlow } from "./steps/InteractiveFlow.js";
53
-
54
- // ─── Display item union (messages + interactive components) ──────────────────
55
-
56
- // ─── Public API ──────────────────────────────────────────────────────────────
57
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
58
- /**
59
- * Drop-in widget — wraps RinggProvider + WidgetInner.
60
- * This is the highest-level component consumers use.
61
- */
62
- export function RinggWidget({
63
- config,
64
- urls,
65
- onEvent,
66
- triggerIcon,
67
- triggerSize = 56
68
- }) {
69
- return /*#__PURE__*/_jsx(RinggProvider, {
70
- config: config,
71
- urls: urls,
72
- onEvent: onEvent,
73
- children: /*#__PURE__*/_jsx(WidgetInner, {
74
- triggerIcon: triggerIcon,
75
- triggerSize: triggerSize
76
- })
77
- });
78
- }
79
-
80
- // ─── Internal Widget ─────────────────────────────────────────────────────────
81
-
82
- function WidgetInner({
83
- triggerIcon,
84
- triggerSize
85
- }) {
86
- const {
87
- config
88
- } = useRinggContext();
89
- const {
90
- theme,
91
- getSolidColor
92
- } = useRinggTheme();
93
- const widget = useRinggWidgetState();
94
- const call = useRinggCall();
95
- const chat = useRinggChat();
96
- const transcriptHook = useRinggTranscripts();
97
- const components = useRinggComponents();
98
- const feedback = useRinggFeedback();
99
- const [callMode, setCallMode] = useState(config.defaultTab ?? "audio");
100
- const title = config.title ?? DEFAULT_CONFIG.title;
101
- const description = config.description ?? DEFAULT_CONFIG.description;
102
-
103
- // Determine which messages to display based on call mode.
104
- // Text mode: only chat messages (lk.transcription text stream + user sends).
105
- // Audio mode: only STT transcripts (RoomEvent.TranscriptionReceived).
106
- // The agent sends the same content through both lk.transcription text stream
107
- // AND TranscriptionReceived events, so using only one source avoids duplicates.
108
- // TranscriptionReceived is preferred in audio mode because it includes
109
- // both the agent's speech AND the user's speech-to-text.
110
- const displayMessages = call.callMode === "text" ? chat.messages : transcriptHook.transcripts;
111
-
112
- // ── Unified display list (messages + interactive components) ───────────────
113
- // Components are appended after messages so they appear inline at the bottom
114
- // of the conversation, matching the CDN behavior.
115
- const displayItems = useMemo(() => {
116
- const items = displayMessages.map(msg => ({
117
- kind: "message",
118
- data: msg
119
- }));
120
- for (const comp of components.components) {
121
- items.push({
122
- kind: "component",
123
- data: comp
124
- });
125
- }
126
- return items;
127
- }, [displayMessages, components.components]);
128
-
129
- // ── Auto-scroll (WhatsApp-style) ───────────────────────────────────────────
130
- // Scroll to bottom when content grows, unless the user has scrolled up.
131
- const flatListRef = useRef(null);
132
- const isNearBottomRef = useRef(true);
133
- const handleScroll = useCallback(event => {
134
- const {
135
- contentOffset,
136
- contentSize,
137
- layoutMeasurement
138
- } = event.nativeEvent;
139
- const distanceFromBottom = contentSize.height - layoutMeasurement.height - contentOffset.y;
140
- isNearBottomRef.current = distanceFromBottom < 80;
141
- }, []);
142
-
143
- // Fires every time FlatList content height changes (i.e. new messages rendered).
144
- const handleContentSizeChange = useCallback((_w, _h) => {
145
- if (isNearBottomRef.current) {
146
- flatListRef.current?.scrollToEnd({
147
- animated: true
148
- });
149
- }
150
- }, []);
151
-
152
- // Force scroll to bottom after user sends a message
153
- const handleSendMessage = useCallback(async text => {
154
- await chat.sendMessage(text);
155
- // Always scroll to bottom when the user sends
156
- isNearBottomRef.current = true;
157
- setTimeout(() => {
158
- flatListRef.current?.scrollToEnd({
159
- animated: true
160
- });
161
- }, 100);
162
- }, [chat]);
163
- const handleToggleMic = useCallback(async () => {
164
- await call.toggleMic();
165
- }, [call]);
166
- const handleEndCallPress = useCallback(() => {
167
- if (call.isConnected) {
168
- Alert.alert(`End ${call.callMode === "audio" ? "Call" : "Chat"}?`, "Your current conversation will be closed and cannot be accessed later.", [{
169
- text: "Cancel",
170
- style: "cancel"
171
- }, {
172
- text: `End ${call.callMode === "audio" ? "Call" : "Chat"}`,
173
- style: "destructive",
174
- onPress: () => {
175
- chat.clearMessages();
176
- transcriptHook.clearTranscripts();
177
- components.clearComponents();
178
- call.endCall();
179
- }
180
- }]);
181
- }
182
- }, [call, chat, transcriptHook, components]);
183
- const handleCallStart = useCallback(mode => {
184
- // Clear stale data from any previous call before starting a new one
185
- chat.clearMessages();
186
- transcriptHook.clearTranscripts();
187
- components.clearComponents();
188
- widget.open();
189
- setCallMode(mode);
190
- call.startCall(mode);
191
- }, [call, widget, chat, transcriptHook, components]);
192
- const handleTabChange = useCallback(tab => {
193
- setCallMode(tab);
194
- }, []);
195
- const handleFeedbackSubmit = useCallback((rating, comment) => {
196
- feedback.submitFeedback(rating, comment);
197
- }, [feedback]);
198
- const renderDisplayItem = useCallback(({
199
- item
200
- }) => {
201
- if (item.kind === "component") {
202
- return /*#__PURE__*/_jsx(InteractiveFlow, {
203
- initialComponent: item.data,
204
- theme: theme,
205
- onSendResponse: components.respondToComponent
206
- });
207
- }
208
- return /*#__PURE__*/_jsx(MessageBubble, {
209
- message: item.data,
210
- theme: theme
211
- });
212
- }, [theme, components.respondToComponent]);
213
- const handleClosePress = useCallback(() => {
214
- if (call.isConnected) {
215
- handleEndCallPress();
216
- } else if (widget.isShowingFeedback) {
217
- feedback.skipFeedback();
218
- } else {
219
- widget.minimize();
220
- }
221
- }, [call.isConnected, widget, feedback, handleEndCallPress]);
222
- const handleMinimizePress = useCallback(() => {
223
- widget.minimize();
224
- }, [widget]);
225
- const {
226
- height: screenHeight
227
- } = Dimensions.get("window");
228
- // Cap panel height: ~48% of screen, max 420px (matches CDN's ~392px panel)
229
- const panelHeight = Math.min(Math.round(screenHeight * 0.48), 420);
230
-
231
- // ── Animations ──────────────────────────────────────────────────────────────
232
- const panelAnim = useRef(new Animated.Value(0)).current; // 0 = hidden, 1 = visible
233
- const fabAnim = useRef(new Animated.Value(1)).current; // 0 = hidden, 1 = visible
234
- const [panelMounted, setPanelMounted] = useState(widget.isOpen);
235
- useEffect(() => {
236
- if (widget.isOpen) {
237
- // Mount panel first, then animate in
238
- setPanelMounted(true);
239
- Animated.parallel([Animated.spring(panelAnim, {
240
- toValue: 1,
241
- useNativeDriver: true,
242
- tension: 65,
243
- friction: 11
244
- }), Animated.timing(fabAnim, {
245
- toValue: 0,
246
- duration: 150,
247
- useNativeDriver: true
248
- })]).start();
249
- } else {
250
- // Animate out, then unmount
251
- Animated.parallel([Animated.timing(panelAnim, {
252
- toValue: 0,
253
- duration: 200,
254
- useNativeDriver: true
255
- }), Animated.spring(fabAnim, {
256
- toValue: 1,
257
- useNativeDriver: true,
258
- tension: 65,
259
- friction: 11
260
- })]).start(({
261
- finished
262
- }) => {
263
- if (finished) setPanelMounted(false);
264
- });
265
- }
266
- }, [widget.isOpen, panelAnim, fabAnim]);
267
- const panelTranslateY = panelAnim.interpolate({
268
- inputRange: [0, 1],
269
- outputRange: [panelHeight * 0.3, 0]
270
- });
271
- const panelOpacity = panelAnim.interpolate({
272
- inputRange: [0, 1],
273
- outputRange: [0, 1]
274
- });
275
- const fabScale = fabAnim;
276
- const fabOpacity = fabAnim;
277
- return /*#__PURE__*/_jsxs(_Fragment, {
278
- children: [/*#__PURE__*/_jsx(Animated.View, {
279
- style: [styles.fab, {
280
- width: triggerSize,
281
- height: triggerSize,
282
- borderRadius: triggerSize / 2,
283
- backgroundColor: getSolidColor(theme.primaryColor),
284
- transform: [{
285
- scale: fabScale
286
- }],
287
- opacity: fabOpacity
288
- }],
289
- pointerEvents: widget.isOpen ? "none" : "auto",
290
- children: /*#__PURE__*/_jsx(TouchableOpacity, {
291
- style: styles.fabTouchable,
292
- onPress: widget.toggle,
293
- activeOpacity: 0.9,
294
- children: /*#__PURE__*/_jsx(WidgetPhoneIcon, {
295
- size: 25,
296
- color: theme.primaryTextColor
297
- })
298
- })
299
- }), panelMounted && /*#__PURE__*/_jsx(Animated.View, {
300
- style: [styles.panel, {
301
- height: panelHeight,
302
- backgroundColor: theme.backgroundColor,
303
- borderColor: theme.borderColor,
304
- opacity: panelOpacity,
305
- transform: [{
306
- translateY: panelTranslateY
307
- }]
308
- }],
309
- pointerEvents: widget.isOpen ? "auto" : "none",
310
- children: /*#__PURE__*/_jsxs(View, {
311
- style: [styles.panelInner, {
312
- backgroundColor: theme.backgroundColor
313
- }],
314
- children: [/*#__PURE__*/_jsxs(View, {
315
- style: styles.topButtonRow,
316
- children: [call.isConnected && /*#__PURE__*/_jsx(TouchableOpacity, {
317
- style: [styles.topButton, {
318
- backgroundColor: theme.surfaceColor
319
- }],
320
- onPress: handleMinimizePress,
321
- hitSlop: {
322
- top: 10,
323
- bottom: 10,
324
- left: 10,
325
- right: 10
326
- },
327
- activeOpacity: 0.6,
328
- children: /*#__PURE__*/_jsx(MinusIcon, {
329
- size: 16,
330
- color: theme.mutedTextColor
331
- })
332
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
333
- style: [styles.topButton, {
334
- backgroundColor: theme.surfaceColor
335
- }],
336
- onPress: handleClosePress,
337
- hitSlop: {
338
- top: 10,
339
- bottom: 10,
340
- left: 10,
341
- right: 10
342
- },
343
- activeOpacity: 0.6,
344
- children: /*#__PURE__*/_jsx(CloseIcon, {
345
- size: 16,
346
- color: theme.mutedTextColor
347
- })
348
- })]
349
- }), widget.isShowingFeedback ? /*#__PURE__*/_jsx(FeedbackScreen, {
350
- theme: theme,
351
- feedbackConfig: config.feedbackScreen,
352
- callMode: call.callMode,
353
- isSubmitting: feedback.isSubmitting,
354
- onSubmit: handleFeedbackSubmit,
355
- onSkip: feedback.skipFeedback
356
- }) : /*#__PURE__*/_jsxs(View, {
357
- style: styles.mainContent,
358
- children: [/*#__PURE__*/_jsxs(View, {
359
- style: [styles.innerContent, (!call.isConnected || call.isLoading) && styles.innerContentPreCall],
360
- children: [/*#__PURE__*/_jsx(WidgetHeader, {
361
- title: title,
362
- description: description,
363
- logoUrl: config.logoUrl,
364
- logoStyles: config.logoStyles,
365
- isConnected: call.isConnected,
366
- isLoading: call.isLoading,
367
- theme: theme
368
- }), call.isConnected && displayItems.length > 0 && /*#__PURE__*/_jsx(FlatList, {
369
- ref: flatListRef,
370
- data: displayItems,
371
- renderItem: renderDisplayItem,
372
- keyExtractor: (item, index) => {
373
- if (item.kind === "component") {
374
- return `comp_${item.data.component_id}_${index}`;
375
- }
376
- return `msg_${item.data.timestamp}_${index}`;
377
- },
378
- style: styles.messageList,
379
- contentContainerStyle: styles.messageListContent,
380
- inverted: false,
381
- onScroll: handleScroll,
382
- scrollEventThrottle: 16,
383
- onContentSizeChange: handleContentSizeChange
384
- }), call.isConnected && displayItems.length === 0 && /*#__PURE__*/_jsx(View, {
385
- style: styles.emptyState
386
- }), /*#__PURE__*/_jsx(CallControls, {
387
- callMode: call.callMode,
388
- isConnected: call.isConnected,
389
- isMicEnabled: call.isMicEnabled,
390
- theme: theme,
391
- onToggleMic: handleToggleMic,
392
- onEndCall: handleEndCallPress,
393
- onSendMessage: handleSendMessage
394
- }), call.error != null && /*#__PURE__*/_jsx(Text, {
395
- style: [styles.errorText, {
396
- color: theme.errorColor
397
- }],
398
- children: call.error
399
- }), !call.isConnected && /*#__PURE__*/_jsx(ActionButton, {
400
- callMode: callMode,
401
- isLoading: call.isLoading,
402
- isConnected: call.isConnected,
403
- buttonConfig: config.buttons,
404
- theme: theme,
405
- onPress: handleCallStart
406
- }), !call.isConnected && /*#__PURE__*/_jsx(View, {
407
- style: styles.disclaimerContainer,
408
- children: config.legalDisclaimer ? /*#__PURE__*/_jsx(Text, {
409
- style: [styles.disclaimerText, {
410
- color: theme.mutedTextColor
411
- }],
412
- children: config.legalDisclaimer.text
413
- }) : /*#__PURE__*/_jsxs(Text, {
414
- style: [styles.disclaimerText, {
415
- color: theme.mutedTextColor
416
- }],
417
- children: ["By starting call you agree to", " ", /*#__PURE__*/_jsx(Text, {
418
- style: {
419
- color: colorToSolid(theme.primaryColor)
420
- },
421
- onPress: () => Linking.openURL("https://www.ringg.ai/privacy"),
422
- children: "Privacy policy"
423
- }), " & ", /*#__PURE__*/_jsx(Text, {
424
- style: {
425
- color: colorToSolid(theme.primaryColor)
426
- },
427
- onPress: () => Linking.openURL("https://www.ringg.ai/terms"),
428
- children: "T&C"
429
- })]
430
- })
431
- })]
432
- }), !call.isConnected && !config.hideTabSelector && /*#__PURE__*/_jsx(TabSelector, {
433
- activeTab: callMode,
434
- onTabChange: handleTabChange,
435
- theme: theme
436
- })]
437
- })]
438
- })
439
- })]
440
- });
441
- }
442
-
443
- // ─── Styles ──────────────────────────────────────────────────────────────────
444
-
445
- const styles = StyleSheet.create({
446
- // ── FAB ─────────────────────────────────────────────────────────────────────
447
- fab: {
448
- position: "absolute",
449
- bottom: 24,
450
- right: 24,
451
- alignItems: "center",
452
- justifyContent: "center",
453
- elevation: 8,
454
- shadowColor: "#000",
455
- shadowOffset: {
456
- width: 0,
457
- height: 4
458
- },
459
- shadowOpacity: 0.25,
460
- shadowRadius: 8,
461
- zIndex: 9999
462
- },
463
- fabTouchable: {
464
- flex: 1,
465
- width: "100%",
466
- alignItems: "center",
467
- justifyContent: "center"
468
- },
469
- // ── Floating Panel ──────────────────────────────────────────────────────────
470
- panel: {
471
- position: "absolute",
472
- bottom: 24,
473
- right: 10,
474
- left: 10,
475
- borderRadius: 16,
476
- borderWidth: 1,
477
- overflow: "hidden",
478
- elevation: 12,
479
- shadowColor: "#000",
480
- shadowOffset: {
481
- width: 0,
482
- height: 8
483
- },
484
- shadowOpacity: 0.25,
485
- shadowRadius: 16,
486
- zIndex: 10000
487
- },
488
- panelInner: {
489
- flex: 1,
490
- borderRadius: 16,
491
- overflow: "hidden"
492
- },
493
- // ── Top buttons ─────────────────────────────────────────────────────────────
494
- topButtonRow: {
495
- position: "absolute",
496
- top: 8,
497
- right: 8,
498
- zIndex: 9999,
499
- flexDirection: "row",
500
- gap: 6
501
- },
502
- topButton: {
503
- width: 32,
504
- height: 32,
505
- borderRadius: 16,
506
- alignItems: "center",
507
- justifyContent: "center"
508
- },
509
- // ── Main content ────────────────────────────────────────────────────────────
510
- mainContent: {
511
- flex: 1
512
- },
513
- innerContent: {
514
- flex: 1,
515
- paddingHorizontal: 16,
516
- paddingTop: 12,
517
- paddingBottom: 8,
518
- gap: 12
519
- },
520
- innerContentPreCall: {
521
- justifyContent: "center",
522
- alignItems: "stretch"
523
- },
524
- // ── Messages ────────────────────────────────────────────────────────────────
525
- messageList: {
526
- flex: 1,
527
- marginTop: 68 // space below the absolute in-call header (48px logo + 16px padding + border)
528
- },
529
- messageListContent: {
530
- paddingVertical: 8,
531
- gap: 10
532
- },
533
- emptyState: {
534
- flex: 1,
535
- marginTop: 68
536
- },
537
- // ── Error ───────────────────────────────────────────────────────────────────
538
- errorText: {
539
- fontSize: 14,
540
- textAlign: "center",
541
- marginTop: -12,
542
- marginBottom: -8
543
- },
544
- // ── Legal Disclaimer ────────────────────────────────────────────────────────
545
- disclaimerContainer: {
546
- paddingHorizontal: 20
547
- },
548
- disclaimerText: {
549
- fontSize: 12,
550
- textAlign: "center",
551
- lineHeight: 18
552
- }
553
- });
554
- //# sourceMappingURL=RinggWidget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","TouchableOpacity","FlatList","StyleSheet","Text","Alert","Linking","Dimensions","Animated","colorToSolid","DEFAULT_CONFIG","RinggProvider","useRinggContext","useRinggCall","useRinggChat","useRinggTranscripts","useRinggComponents","useRinggWidgetState","useRinggFeedback","useRinggTheme","WidgetHeader","MessageBubble","ActionButton","CallControls","FeedbackScreen","TabSelector","WidgetPhoneIcon","CloseIcon","MinusIcon","InteractiveFlow","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","RinggWidget","config","urls","onEvent","triggerIcon","triggerSize","children","WidgetInner","theme","getSolidColor","widget","call","chat","transcriptHook","components","feedback","callMode","setCallMode","defaultTab","title","description","displayMessages","messages","transcripts","displayItems","items","map","msg","kind","data","comp","push","flatListRef","isNearBottomRef","handleScroll","event","contentOffset","contentSize","layoutMeasurement","nativeEvent","distanceFromBottom","height","y","current","handleContentSizeChange","_w","_h","scrollToEnd","animated","handleSendMessage","text","sendMessage","setTimeout","handleToggleMic","toggleMic","handleEndCallPress","isConnected","alert","style","onPress","clearMessages","clearTranscripts","clearComponents","endCall","handleCallStart","mode","open","startCall","handleTabChange","tab","handleFeedbackSubmit","rating","comment","submitFeedback","renderDisplayItem","item","initialComponent","onSendResponse","respondToComponent","message","handleClosePress","isShowingFeedback","skipFeedback","minimize","handleMinimizePress","screenHeight","get","panelHeight","Math","min","round","panelAnim","Value","fabAnim","panelMounted","setPanelMounted","isOpen","parallel","spring","toValue","useNativeDriver","tension","friction","timing","duration","start","finished","panelTranslateY","interpolate","inputRange","outputRange","panelOpacity","fabScale","fabOpacity","styles","fab","width","borderRadius","backgroundColor","primaryColor","transform","scale","opacity","pointerEvents","fabTouchable","toggle","activeOpacity","size","color","primaryTextColor","panel","borderColor","translateY","panelInner","topButtonRow","topButton","surfaceColor","hitSlop","top","bottom","left","right","mutedTextColor","feedbackConfig","feedbackScreen","isSubmitting","onSubmit","onSkip","mainContent","innerContent","isLoading","innerContentPreCall","logoUrl","logoStyles","length","ref","renderItem","keyExtractor","index","component_id","timestamp","messageList","contentContainerStyle","messageListContent","inverted","onScroll","scrollEventThrottle","onContentSizeChange","emptyState","isMicEnabled","onToggleMic","onEndCall","onSendMessage","error","errorText","errorColor","buttonConfig","buttons","disclaimerContainer","legalDisclaimer","disclaimerText","openURL","hideTabSelector","activeTab","onTabChange","create","position","alignItems","justifyContent","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","zIndex","flex","borderWidth","overflow","flexDirection","gap","paddingHorizontal","paddingTop","paddingBottom","marginTop","paddingVertical","fontSize","textAlign","marginBottom","lineHeight"],"sourceRoot":"../../../src","sources":["components/RinggWidget.tsx"],"mappings":";;AAAA;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;;AAEA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAChF,SAASC,IAAI,EAAEC,gBAAgB,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAEC,UAAU,EAAEC,QAAQ,QAAqF,cAAc;AAGpM,SAASC,YAAY,EAAEC,cAAc,QAAQ,aAAa;AAE1D,SAASC,aAAa,EAAEC,eAAe,QAAiC,6BAA0B;AAClG,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SAASC,mBAAmB,QAAQ,iCAA8B;AAClE,SAASC,kBAAkB,QAAQ,gCAA6B;AAChE,SAASC,mBAAmB,QAAQ,iCAA8B;AAClE,SAASC,gBAAgB,QAAQ,8BAA2B;AAC5D,SAASC,aAAa,QAAQ,2BAAwB;AAEtD,SAASC,YAAY,QAAQ,sBAAmB;AAChD,SAASC,aAAa,QAAQ,uBAAoB;AAClD,SAASC,YAAY,QAAQ,sBAAmB;AAChD,SAASC,YAAY,QAAQ,sBAAmB;AAChD,SAASC,cAAc,QAAQ,wBAAqB;AACpD,SAASC,WAAW,QAAQ,qBAAkB;AAC9C,SAASC,eAAe,EAAEC,SAAS,EAAEC,SAAS,QAAQ,eAAY;AAClE,SAASC,eAAe,QAAQ,4BAAyB;;AAEzD;;AAGA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAUA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAC;EAAEC,MAAM;EAAEC,IAAI;EAAEC,OAAO;EAAEC,WAAW;EAAEC,WAAW,GAAG;AAAqB,CAAC,EAAE;EACtG,oBACEV,IAAA,CAACpB,aAAa;IAAC0B,MAAM,EAAEA,MAAO;IAACC,IAAI,EAAEA,IAAK;IAACC,OAAO,EAAEA,OAAQ;IAAAG,QAAA,eAC1DX,IAAA,CAACY,WAAW;MAACH,WAAW,EAAEA,WAAY;MAACC,WAAW,EAAEA;IAAY,CAAE;EAAC,CACtD,CAAC;AAEpB;;AAEA;;AAOA,SAASE,WAAWA,CAAC;EAAEH,WAAW;EAAEC;AAA8B,CAAC,EAAE;EACnE,MAAM;IAAEJ;EAAO,CAAC,GAAGzB,eAAe,CAAC,CAAC;EACpC,MAAM;IAAEgC,KAAK;IAAEC;EAAc,CAAC,GAAG1B,aAAa,CAAC,CAAC;EAChD,MAAM2B,MAAM,GAAG7B,mBAAmB,CAAC,CAAC;EACpC,MAAM8B,IAAI,GAAGlC,YAAY,CAAC,CAAC;EAC3B,MAAMmC,IAAI,GAAGlC,YAAY,CAAC,CAAC;EAC3B,MAAMmC,cAAc,GAAGlC,mBAAmB,CAAC,CAAC;EAC5C,MAAMmC,UAAU,GAAGlC,kBAAkB,CAAC,CAAC;EACvC,MAAMmC,QAAQ,GAAGjC,gBAAgB,CAAC,CAAC;EAEnC,MAAM,CAACkC,QAAQ,EAAEC,WAAW,CAAC,GAAGtD,QAAQ,CAAYsC,MAAM,CAACiB,UAAU,IAAI,OAAO,CAAC;EAEjF,MAAMC,KAAK,GAAGlB,MAAM,CAACkB,KAAK,IAAI7C,cAAc,CAAC6C,KAAK;EAClD,MAAMC,WAAW,GAAGnB,MAAM,CAACmB,WAAW,IAAI9C,cAAc,CAAC8C,WAAW;;EAEpE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,eAA8B,GAAGV,IAAI,CAACK,QAAQ,KAAK,MAAM,GAAGJ,IAAI,CAACU,QAAQ,GAAGT,cAAc,CAACU,WAAW;;EAE5G;EACA;EACA;EACA,MAAMC,YAAY,GAAG/D,OAAO,CAAC,MAAqB;IAChD,MAAMgE,KAAoB,GAAGJ,eAAe,CAACK,GAAG,CAAEC,GAAG,KAAM;MAAEC,IAAI,EAAE,SAAkB;MAAEC,IAAI,EAAEF;IAAI,CAAC,CAAC,CAAC;IACpG,KAAK,MAAMG,IAAI,IAAIhB,UAAU,CAACA,UAAU,EAAE;MACxCW,KAAK,CAACM,IAAI,CAAC;QAAEH,IAAI,EAAE,WAAoB;QAAEC,IAAI,EAAEC;MAAK,CAAC,CAAC;IACxD;IACA,OAAOL,KAAK;EACd,CAAC,EAAE,CAACJ,eAAe,EAAEP,UAAU,CAACA,UAAU,CAAC,CAAC;;EAE5C;EACA;EACA,MAAMkB,WAAW,GAAGtE,MAAM,CAAwB,IAAI,CAAC;EACvD,MAAMuE,eAAe,GAAGvE,MAAM,CAAC,IAAI,CAAC;EAEpC,MAAMwE,YAAY,GAAG3E,WAAW,CAAE4E,KAA8C,IAAK;IACnF,MAAM;MAAEC,aAAa;MAAEC,WAAW;MAAEC;IAAkB,CAAC,GAAGH,KAAK,CAACI,WAAW;IAC3E,MAAMC,kBAAkB,GAAGH,WAAW,CAACI,MAAM,GAAGH,iBAAiB,CAACG,MAAM,GAAGL,aAAa,CAACM,CAAC;IAC1FT,eAAe,CAACU,OAAO,GAAGH,kBAAkB,GAAG,EAAE;EACnD,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMI,uBAAuB,GAAGrF,WAAW,CAAC,CAACsF,EAAU,EAAEC,EAAU,KAAK;IACtE,IAAIb,eAAe,CAACU,OAAO,EAAE;MAC3BX,WAAW,CAACW,OAAO,EAAEI,WAAW,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACtD;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMC,iBAAiB,GAAG1F,WAAW,CACnC,MAAO2F,IAAY,IAAK;IACtB,MAAMtC,IAAI,CAACuC,WAAW,CAACD,IAAI,CAAC;IAC5B;IACAjB,eAAe,CAACU,OAAO,GAAG,IAAI;IAC9BS,UAAU,CAAC,MAAM;MACfpB,WAAW,CAACW,OAAO,EAAEI,WAAW,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACtD,CAAC,EAAE,GAAG,CAAC;EACT,CAAC,EACD,CAACpC,IAAI,CACP,CAAC;EAED,MAAMyC,eAAe,GAAG9F,WAAW,CAAC,YAAY;IAC9C,MAAMoD,IAAI,CAAC2C,SAAS,CAAC,CAAC;EACxB,CAAC,EAAE,CAAC3C,IAAI,CAAC,CAAC;EAEV,MAAM4C,kBAAkB,GAAGhG,WAAW,CAAC,MAAM;IAC3C,IAAIoD,IAAI,CAAC6C,WAAW,EAAE;MACpBvF,KAAK,CAACwF,KAAK,CAAC,OAAO9C,IAAI,CAACK,QAAQ,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,wEAAwE,EAAE,CAC3I;QAAEkC,IAAI,EAAE,QAAQ;QAAEQ,KAAK,EAAE;MAAS,CAAC,EACnC;QACER,IAAI,EAAE,OAAOvC,IAAI,CAACK,QAAQ,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE;QAC1D0C,KAAK,EAAE,aAAa;QACpBC,OAAO,EAAEA,CAAA,KAAM;UACb/C,IAAI,CAACgD,aAAa,CAAC,CAAC;UACpB/C,cAAc,CAACgD,gBAAgB,CAAC,CAAC;UACjC/C,UAAU,CAACgD,eAAe,CAAC,CAAC;UAC5BnD,IAAI,CAACoD,OAAO,CAAC,CAAC;QAChB;MACF,CAAC,CACF,CAAC;IACJ;EACF,CAAC,EAAE,CAACpD,IAAI,EAAEC,IAAI,EAAEC,cAAc,EAAEC,UAAU,CAAC,CAAC;EAE5C,MAAMkD,eAAe,GAAGzG,WAAW,CAChC0G,IAAe,IAAK;IACnB;IACArD,IAAI,CAACgD,aAAa,CAAC,CAAC;IACpB/C,cAAc,CAACgD,gBAAgB,CAAC,CAAC;IACjC/C,UAAU,CAACgD,eAAe,CAAC,CAAC;IAE5BpD,MAAM,CAACwD,IAAI,CAAC,CAAC;IACbjD,WAAW,CAACgD,IAAI,CAAC;IACjBtD,IAAI,CAACwD,SAAS,CAACF,IAAI,CAAC;EACtB,CAAC,EACD,CAACtD,IAAI,EAAED,MAAM,EAAEE,IAAI,EAAEC,cAAc,EAAEC,UAAU,CACjD,CAAC;EAED,MAAMsD,eAAe,GAAG7G,WAAW,CAAE8G,GAAc,IAAK;IACtDpD,WAAW,CAACoD,GAAG,CAAC;EAClB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,oBAAoB,GAAG/G,WAAW,CACtC,CAACgH,MAAc,EAAEC,OAAe,KAAK;IACnCzD,QAAQ,CAAC0D,cAAc,CAACF,MAAM,EAAEC,OAAO,CAAC;EAC1C,CAAC,EACD,CAACzD,QAAQ,CACX,CAAC;EAED,MAAM2D,iBAAiB,GAAGnH,WAAW,CACnC,CAAC;IAAEoH;EAA4B,CAAC,KAAK;IACnC,IAAIA,IAAI,CAAC/C,IAAI,KAAK,WAAW,EAAE;MAC7B,oBAAOjC,IAAA,CAACF,eAAe;QAACmF,gBAAgB,EAAED,IAAI,CAAC9C,IAAK;QAACrB,KAAK,EAAEA,KAAM;QAACqE,cAAc,EAAE/D,UAAU,CAACgE;MAAmB,CAAE,CAAC;IACtH;IACA,oBAAOnF,IAAA,CAACV,aAAa;MAAC8F,OAAO,EAAEJ,IAAI,CAAC9C,IAAK;MAACrB,KAAK,EAAEA;IAAM,CAAE,CAAC;EAC5D,CAAC,EACD,CAACA,KAAK,EAAEM,UAAU,CAACgE,kBAAkB,CACvC,CAAC;EAED,MAAME,gBAAgB,GAAGzH,WAAW,CAAC,MAAM;IACzC,IAAIoD,IAAI,CAAC6C,WAAW,EAAE;MACpBD,kBAAkB,CAAC,CAAC;IACtB,CAAC,MAAM,IAAI7C,MAAM,CAACuE,iBAAiB,EAAE;MACnClE,QAAQ,CAACmE,YAAY,CAAC,CAAC;IACzB,CAAC,MAAM;MACLxE,MAAM,CAACyE,QAAQ,CAAC,CAAC;IACnB;EACF,CAAC,EAAE,CAACxE,IAAI,CAAC6C,WAAW,EAAE9C,MAAM,EAAEK,QAAQ,EAAEwC,kBAAkB,CAAC,CAAC;EAE5D,MAAM6B,mBAAmB,GAAG7H,WAAW,CAAC,MAAM;IAC5CmD,MAAM,CAACyE,QAAQ,CAAC,CAAC;EACnB,CAAC,EAAE,CAACzE,MAAM,CAAC,CAAC;EAEZ,MAAM;IAAE+B,MAAM,EAAE4C;EAAa,CAAC,GAAGlH,UAAU,CAACmH,GAAG,CAAC,QAAQ,CAAC;EACzD;EACA,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,KAAK,CAACL,YAAY,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;;EAElE;EACA,MAAMM,SAAS,GAAGjI,MAAM,CAAC,IAAIU,QAAQ,CAACwH,KAAK,CAAC,CAAC,CAAC,CAAC,CAACjD,OAAO,CAAC,CAAC;EACzD,MAAMkD,OAAO,GAAGnI,MAAM,CAAC,IAAIU,QAAQ,CAACwH,KAAK,CAAC,CAAC,CAAC,CAAC,CAACjD,OAAO,CAAC,CAAC;EACvD,MAAM,CAACmD,YAAY,EAAEC,eAAe,CAAC,GAAGpI,QAAQ,CAAC+C,MAAM,CAACsF,MAAM,CAAC;EAE/DxI,SAAS,CAAC,MAAM;IACd,IAAIkD,MAAM,CAACsF,MAAM,EAAE;MACjB;MACAD,eAAe,CAAC,IAAI,CAAC;MACrB3H,QAAQ,CAAC6H,QAAQ,CAAC,CAAC7H,QAAQ,CAAC8H,MAAM,CAACP,SAAS,EAAE;QAAEQ,OAAO,EAAE,CAAC;QAAEC,eAAe,EAAE,IAAI;QAAEC,OAAO,EAAE,EAAE;QAAEC,QAAQ,EAAE;MAAG,CAAC,CAAC,EAAElI,QAAQ,CAACmI,MAAM,CAACV,OAAO,EAAE;QAAEM,OAAO,EAAE,CAAC;QAAEK,QAAQ,EAAE,GAAG;QAAEJ,eAAe,EAAE;MAAK,CAAC,CAAC,CAAC,CAAC,CAACK,KAAK,CAAC,CAAC;IAC3M,CAAC,MAAM;MACL;MACArI,QAAQ,CAAC6H,QAAQ,CAAC,CAAC7H,QAAQ,CAACmI,MAAM,CAACZ,SAAS,EAAE;QAAEQ,OAAO,EAAE,CAAC;QAAEK,QAAQ,EAAE,GAAG;QAAEJ,eAAe,EAAE;MAAK,CAAC,CAAC,EAAEhI,QAAQ,CAAC8H,MAAM,CAACL,OAAO,EAAE;QAAEM,OAAO,EAAE,CAAC;QAAEC,eAAe,EAAE,IAAI;QAAEC,OAAO,EAAE,EAAE;QAAEC,QAAQ,EAAE;MAAG,CAAC,CAAC,CAAC,CAAC,CAACG,KAAK,CAAC,CAAC;QAAEC;MAAS,CAAC,KAAK;QACxN,IAAIA,QAAQ,EAAEX,eAAe,CAAC,KAAK,CAAC;MACtC,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACrF,MAAM,CAACsF,MAAM,EAAEL,SAAS,EAAEE,OAAO,CAAC,CAAC;EAEvC,MAAMc,eAAe,GAAGhB,SAAS,CAACiB,WAAW,CAAC;IAAEC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAAEC,WAAW,EAAE,CAACvB,WAAW,GAAG,GAAG,EAAE,CAAC;EAAE,CAAC,CAAC;EAC1G,MAAMwB,YAAY,GAAGpB,SAAS,CAACiB,WAAW,CAAC;IAAEC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAAEC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;EAAE,CAAC,CAAC;EACvF,MAAME,QAAQ,GAAGnB,OAAO;EACxB,MAAMoB,UAAU,GAAGpB,OAAO;EAE1B,oBACEhG,KAAA,CAAAE,SAAA;IAAAO,QAAA,gBAEEX,IAAA,CAACvB,QAAQ,CAACR,IAAI;MACZ8F,KAAK,EAAE,CACLwD,MAAM,CAACC,GAAG,EACV;QACEC,KAAK,EAAE/G,WAAW;QAClBoC,MAAM,EAAEpC,WAAW;QACnBgH,YAAY,EAAEhH,WAAW,GAAG,CAAC;QAC7BiH,eAAe,EAAE7G,aAAa,CAACD,KAAK,CAAC+G,YAAY,CAAC;QAClDC,SAAS,EAAE,CAAC;UAAEC,KAAK,EAAET;QAAS,CAAC,CAAC;QAChCU,OAAO,EAAET;MACX,CAAC,CACD;MACFU,aAAa,EAAEjH,MAAM,CAACsF,MAAM,GAAG,MAAM,GAAG,MAAO;MAAA1F,QAAA,eAE/CX,IAAA,CAAC9B,gBAAgB;QAAC6F,KAAK,EAAEwD,MAAM,CAACU,YAAa;QAACjE,OAAO,EAAEjD,MAAM,CAACmH,MAAO;QAACC,aAAa,EAAE,GAAI;QAAAxH,QAAA,eACvFX,IAAA,CAACL,eAAe;UAACyI,IAAI,EAAE,EAAG;UAACC,KAAK,EAAExH,KAAK,CAACyH;QAAiB,CAAE;MAAC,CAC5C;IAAC,CACN,CAAC,EAGfnC,YAAY,iBACXnG,IAAA,CAACvB,QAAQ,CAACR,IAAI;MACZ8F,KAAK,EAAE,CACLwD,MAAM,CAACgB,KAAK,EACZ;QACEzF,MAAM,EAAE8C,WAAW;QACnB+B,eAAe,EAAE9G,KAAK,CAAC8G,eAAe;QACtCa,WAAW,EAAE3H,KAAK,CAAC2H,WAAW;QAC9BT,OAAO,EAAEX,YAAY;QACrBS,SAAS,EAAE,CAAC;UAAEY,UAAU,EAAEzB;QAAgB,CAAC;MAC7C,CAAC,CACD;MACFgB,aAAa,EAAEjH,MAAM,CAACsF,MAAM,GAAG,MAAM,GAAG,MAAO;MAAA1F,QAAA,eAE/CT,KAAA,CAACjC,IAAI;QAAC8F,KAAK,EAAE,CAACwD,MAAM,CAACmB,UAAU,EAAE;UAAEf,eAAe,EAAE9G,KAAK,CAAC8G;QAAgB,CAAC,CAAE;QAAAhH,QAAA,gBAE3ET,KAAA,CAACjC,IAAI;UAAC8F,KAAK,EAAEwD,MAAM,CAACoB,YAAa;UAAAhI,QAAA,GAC9BK,IAAI,CAAC6C,WAAW,iBACf7D,IAAA,CAAC9B,gBAAgB;YAAC6F,KAAK,EAAE,CAACwD,MAAM,CAACqB,SAAS,EAAE;cAAEjB,eAAe,EAAE9G,KAAK,CAACgI;YAAa,CAAC,CAAE;YAAC7E,OAAO,EAAEyB,mBAAoB;YAACqD,OAAO,EAAE;cAAEC,GAAG,EAAE,EAAE;cAAEC,MAAM,EAAE,EAAE;cAAEC,IAAI,EAAE,EAAE;cAAEC,KAAK,EAAE;YAAG,CAAE;YAACf,aAAa,EAAE,GAAI;YAAAxH,QAAA,eAC5LX,IAAA,CAACH,SAAS;cAACuI,IAAI,EAAE,EAAG;cAACC,KAAK,EAAExH,KAAK,CAACsI;YAAe,CAAE;UAAC,CACpC,CACnB,eACDnJ,IAAA,CAAC9B,gBAAgB;YAAC6F,KAAK,EAAE,CAACwD,MAAM,CAACqB,SAAS,EAAE;cAAEjB,eAAe,EAAE9G,KAAK,CAACgI;YAAa,CAAC,CAAE;YAAC7E,OAAO,EAAEqB,gBAAiB;YAACyD,OAAO,EAAE;cAAEC,GAAG,EAAE,EAAE;cAAEC,MAAM,EAAE,EAAE;cAAEC,IAAI,EAAE,EAAE;cAAEC,KAAK,EAAE;YAAG,CAAE;YAACf,aAAa,EAAE,GAAI;YAAAxH,QAAA,eACzLX,IAAA,CAACJ,SAAS;cAACwI,IAAI,EAAE,EAAG;cAACC,KAAK,EAAExH,KAAK,CAACsI;YAAe,CAAE;UAAC,CACpC,CAAC;QAAA,CACf,CAAC,EAGNpI,MAAM,CAACuE,iBAAiB,gBACvBtF,IAAA,CAACP,cAAc;UAACoB,KAAK,EAAEA,KAAM;UAACuI,cAAc,EAAE9I,MAAM,CAAC+I,cAAe;UAAChI,QAAQ,EAAEL,IAAI,CAACK,QAAS;UAACiI,YAAY,EAAElI,QAAQ,CAACkI,YAAa;UAACC,QAAQ,EAAE5E,oBAAqB;UAAC6E,MAAM,EAAEpI,QAAQ,CAACmE;QAAa,CAAE,CAAC,gBAEpMrF,KAAA,CAACjC,IAAI;UAAC8F,KAAK,EAAEwD,MAAM,CAACkC,WAAY;UAAA9I,QAAA,gBAE9BT,KAAA,CAACjC,IAAI;YAAC8F,KAAK,EAAE,CAACwD,MAAM,CAACmC,YAAY,EAAE,CAAC,CAAC1I,IAAI,CAAC6C,WAAW,IAAI7C,IAAI,CAAC2I,SAAS,KAAKpC,MAAM,CAACqC,mBAAmB,CAAE;YAAAjJ,QAAA,gBAEtGX,IAAA,CAACX,YAAY;cAACmC,KAAK,EAAEA,KAAM;cAACC,WAAW,EAAEA,WAAY;cAACoI,OAAO,EAAEvJ,MAAM,CAACuJ,OAAQ;cAACC,UAAU,EAAExJ,MAAM,CAACwJ,UAAW;cAACjG,WAAW,EAAE7C,IAAI,CAAC6C,WAAY;cAAC8F,SAAS,EAAE3I,IAAI,CAAC2I,SAAU;cAAC9I,KAAK,EAAEA;YAAM,CAAE,CAAC,EAGvLG,IAAI,CAAC6C,WAAW,IAAIhC,YAAY,CAACkI,MAAM,GAAG,CAAC,iBAC1C/J,IAAA,CAAC7B,QAAQ;cACP6L,GAAG,EAAE3H,WAAY;cACjBH,IAAI,EAAEL,YAAa;cACnBoI,UAAU,EAAElF,iBAAkB;cAC9BmF,YAAY,EAAEA,CAAClF,IAAI,EAAEmF,KAAK,KAAK;gBAC7B,IAAInF,IAAI,CAAC/C,IAAI,KAAK,WAAW,EAAE;kBAC7B,OAAO,QAAQ+C,IAAI,CAAC9C,IAAI,CAACkI,YAAY,IAAID,KAAK,EAAE;gBAClD;gBACA,OAAO,OAAOnF,IAAI,CAAC9C,IAAI,CAACmI,SAAS,IAAIF,KAAK,EAAE;cAC9C,CAAE;cACFpG,KAAK,EAAEwD,MAAM,CAAC+C,WAAY;cAC1BC,qBAAqB,EAAEhD,MAAM,CAACiD,kBAAmB;cACjDC,QAAQ,EAAE,KAAM;cAChBC,QAAQ,EAAEnI,YAAa;cACvBoI,mBAAmB,EAAE,EAAG;cACxBC,mBAAmB,EAAE3H;YAAwB,CAC9C,CACF,EAGAjC,IAAI,CAAC6C,WAAW,IAAIhC,YAAY,CAACkI,MAAM,KAAK,CAAC,iBAAI/J,IAAA,CAAC/B,IAAI;cAAC8F,KAAK,EAAEwD,MAAM,CAACsD;YAAW,CAAE,CAAC,eAGpF7K,IAAA,CAACR,YAAY;cAAC6B,QAAQ,EAAEL,IAAI,CAACK,QAAS;cAACwC,WAAW,EAAE7C,IAAI,CAAC6C,WAAY;cAACiH,YAAY,EAAE9J,IAAI,CAAC8J,YAAa;cAACjK,KAAK,EAAEA,KAAM;cAACkK,WAAW,EAAErH,eAAgB;cAACsH,SAAS,EAAEpH,kBAAmB;cAACqH,aAAa,EAAE3H;YAAkB,CAAE,CAAC,EAGrNtC,IAAI,CAACkK,KAAK,IAAI,IAAI,iBAAIlL,IAAA,CAAC3B,IAAI;cAAC0F,KAAK,EAAE,CAACwD,MAAM,CAAC4D,SAAS,EAAE;gBAAE9C,KAAK,EAAExH,KAAK,CAACuK;cAAW,CAAC,CAAE;cAAAzK,QAAA,EAAEK,IAAI,CAACkK;YAAK,CAAO,CAAC,EAGvG,CAAClK,IAAI,CAAC6C,WAAW,iBAAI7D,IAAA,CAACT,YAAY;cAAC8B,QAAQ,EAAEA,QAAS;cAACsI,SAAS,EAAE3I,IAAI,CAAC2I,SAAU;cAAC9F,WAAW,EAAE7C,IAAI,CAAC6C,WAAY;cAACwH,YAAY,EAAE/K,MAAM,CAACgL,OAAQ;cAACzK,KAAK,EAAEA,KAAM;cAACmD,OAAO,EAAEK;YAAgB,CAAE,CAAC,EAGzL,CAACrD,IAAI,CAAC6C,WAAW,iBAChB7D,IAAA,CAAC/B,IAAI;cAAC8F,KAAK,EAAEwD,MAAM,CAACgE,mBAAoB;cAAA5K,QAAA,EACrCL,MAAM,CAACkL,eAAe,gBACrBxL,IAAA,CAAC3B,IAAI;gBAAC0F,KAAK,EAAE,CAACwD,MAAM,CAACkE,cAAc,EAAE;kBAAEpD,KAAK,EAAExH,KAAK,CAACsI;gBAAe,CAAC,CAAE;gBAAAxI,QAAA,EAAEL,MAAM,CAACkL,eAAe,CAACjI;cAAI,CAAO,CAAC,gBAE3GrD,KAAA,CAAC7B,IAAI;gBAAC0F,KAAK,EAAE,CAACwD,MAAM,CAACkE,cAAc,EAAE;kBAAEpD,KAAK,EAAExH,KAAK,CAACsI;gBAAe,CAAC,CAAE;gBAAAxI,QAAA,GAAC,+BACxC,EAAC,GAAG,eACjCX,IAAA,CAAC3B,IAAI;kBAAC0F,KAAK,EAAE;oBAAEsE,KAAK,EAAE3J,YAAY,CAACmC,KAAK,CAAC+G,YAAY;kBAAE,CAAE;kBAAC5D,OAAO,EAAEA,CAAA,KAAMzF,OAAO,CAACmN,OAAO,CAAC,8BAA8B,CAAE;kBAAA/K,QAAA,EAAC;gBAE1H,CAAM,CAAC,EACN,KAAK,eACNX,IAAA,CAAC3B,IAAI;kBAAC0F,KAAK,EAAE;oBAAEsE,KAAK,EAAE3J,YAAY,CAACmC,KAAK,CAAC+G,YAAY;kBAAE,CAAE;kBAAC5D,OAAO,EAAEA,CAAA,KAAMzF,OAAO,CAACmN,OAAO,CAAC,4BAA4B,CAAE;kBAAA/K,QAAA,EAAC;gBAExH,CAAM,CAAC;cAAA,CACH;YACP,CACG,CACP;UAAA,CACG,CAAC,EAGN,CAACK,IAAI,CAAC6C,WAAW,IAAI,CAACvD,MAAM,CAACqL,eAAe,iBAAI3L,IAAA,CAACN,WAAW;YAACkM,SAAS,EAAEvK,QAAS;YAACwK,WAAW,EAAEpH,eAAgB;YAAC5D,KAAK,EAAEA;UAAM,CAAE,CAAC;QAAA,CAC7H,CACP;MAAA,CACG;IAAC,CACM,CAChB;EAAA,CACD,CAAC;AAEP;;AAEA;;AAEA,MAAM0G,MAAM,GAAGnJ,UAAU,CAAC0N,MAAM,CAAC;EAC/B;EACAtE,GAAG,EAAE;IACHuE,QAAQ,EAAE,UAAU;IACpB/C,MAAM,EAAE,EAAE;IACVE,KAAK,EAAE,EAAE;IACT8C,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE,CAAC;IACZC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MAAE3E,KAAK,EAAE,CAAC;MAAE3E,MAAM,EAAE;IAAE,CAAC;IACrCuJ,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,CAAC;IACfC,MAAM,EAAE;EACV,CAAC;EACDtE,YAAY,EAAE;IACZuE,IAAI,EAAE,CAAC;IACP/E,KAAK,EAAE,MAAM;IACbuE,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EAED;EACA1D,KAAK,EAAE;IACLwD,QAAQ,EAAE,UAAU;IACpB/C,MAAM,EAAE,EAAE;IACVE,KAAK,EAAE,EAAE;IACTD,IAAI,EAAE,EAAE;IACRvB,YAAY,EAAE,EAAE;IAChB+E,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE,QAAQ;IAClBR,SAAS,EAAE,EAAE;IACbC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE;MAAE3E,KAAK,EAAE,CAAC;MAAE3E,MAAM,EAAE;IAAE,CAAC;IACrCuJ,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE;EACV,CAAC;EACD7D,UAAU,EAAE;IACV8D,IAAI,EAAE,CAAC;IACP9E,YAAY,EAAE,EAAE;IAChBgF,QAAQ,EAAE;EACZ,CAAC;EAED;EACA/D,YAAY,EAAE;IACZoD,QAAQ,EAAE,UAAU;IACpBhD,GAAG,EAAE,CAAC;IACNG,KAAK,EAAE,CAAC;IACRqD,MAAM,EAAE,IAAI;IACZI,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAE;EACP,CAAC;EACDhE,SAAS,EAAE;IACTnB,KAAK,EAAE,EAAE;IACT3E,MAAM,EAAE,EAAE;IACV4E,YAAY,EAAE,EAAE;IAChBsE,UAAU,EAAE,QAAiB;IAC7BC,cAAc,EAAE;EAClB,CAAC;EAED;EACAxC,WAAW,EAAE;IACX+C,IAAI,EAAE;EACR,CAAC;EACD9C,YAAY,EAAE;IACZ8C,IAAI,EAAE,CAAC;IACPK,iBAAiB,EAAE,EAAE;IACrBC,UAAU,EAAE,EAAE;IACdC,aAAa,EAAE,CAAC;IAChBH,GAAG,EAAE;EACP,CAAC;EACDhD,mBAAmB,EAAE;IACnBqC,cAAc,EAAE,QAAQ;IACxBD,UAAU,EAAE;EACd,CAAC;EAED;EACA1B,WAAW,EAAE;IACXkC,IAAI,EAAE,CAAC;IACPQ,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC;EACDxC,kBAAkB,EAAE;IAClByC,eAAe,EAAE,CAAC;IAClBL,GAAG,EAAE;EACP,CAAC;EACD/B,UAAU,EAAE;IACV2B,IAAI,EAAE,CAAC;IACPQ,SAAS,EAAE;EACb,CAAC;EAED;EACA7B,SAAS,EAAE;IACT+B,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBH,SAAS,EAAE,CAAC,EAAE;IACdI,YAAY,EAAE,CAAC;EACjB,CAAC;EAED;EACA7B,mBAAmB,EAAE;IACnBsB,iBAAiB,EAAE;EACrB,CAAC;EACDpB,cAAc,EAAE;IACdyB,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBE,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}