rn-kore-bot-sdk-v77-test
Version:
React Native Kore Bot SDK for building chatbot interfaces
25,184 lines • 1.21 MB
JavaScript
import {
DefaultLoader,
ErrorFallback,
FallbackCommunicationsAPI,
LazyLoader,
__esm,
__export,
__require,
__toCommonJS,
init_esm_shims
} from "./chunk-QZESD7RM.mjs";
// bot-sdk/utils/PlatformCheck.tsx
import { Platform as Platform3 } from "react-native";
var isIOS, isAndroid;
var init_PlatformCheck = __esm({
"bot-sdk/utils/PlatformCheck.tsx"() {
"use strict";
init_esm_shims();
isIOS = Platform3.OS === "ios";
isAndroid = Platform3.OS === "android";
}
});
// bot-sdk/utils/PermissionAlert.js
import { Alert as Alert6, Linking as Linking6 } from "react-native";
function showPermissionsAlert(title, on) {
let message = "It seems you denied the access for " + title + " earlier, To enable access tap Settings and turn on " + on;
Alert6.alert(isAndroid ? "" : message, isAndroid ? message : "", [
{
text: "Cancel",
onPress: () => console.log("Cancel Pressed"),
style: "Cancel"
},
{ text: "Settings", onPress: () => Linking6.openSettings() }
]);
}
var init_PermissionAlert = __esm({
"bot-sdk/utils/PermissionAlert.js"() {
"use strict";
init_esm_shims();
init_PlatformCheck();
}
});
// bot-sdk/utils/PermissionsUtils.js
var PermissionsUtils_exports = {};
__export(PermissionsUtils_exports, {
cameraPermission: () => cameraPermission,
documentPickIOSPermission: () => documentPickIOSPermission,
documentPickPermission: () => documentPickPermission
});
import { Platform as Platform15, PermissionsAndroid, Alert as Alert7, Linking as Linking7 } from "react-native";
import {
PERMISSIONS,
request,
check,
RESULTS
} from "react-native-permissions";
function documentPickPermission(callback = (isSuccess) => {
}) {
if (Platform15.OS !== "android") {
callback(false);
return;
}
const androidVersion = Platform15.Version;
let permissions = [];
if (androidVersion >= 33) {
permissions = [
PermissionsAndroid.PERMISSIONS.READ_MEDIA_IMAGES,
PermissionsAndroid.PERMISSIONS.READ_MEDIA_VIDEO
];
} else {
permissions = [PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE];
}
console.log("Requesting Android permissions:", permissions, "for API level:", androidVersion);
PermissionsAndroid.requestMultiple(permissions).then((result) => {
console.log("Permission request result:", result);
let allGranted = true;
let hasBlockedPermissions = false;
for (const permission of permissions) {
const status = result[permission];
if (status !== PermissionsAndroid.RESULTS.GRANTED) {
allGranted = false;
if (status === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) {
hasBlockedPermissions = true;
}
}
}
if (allGranted) {
console.log("All Android permissions granted");
callback(true);
} else {
console.log("Some Android permissions denied");
callback(false);
if (hasBlockedPermissions) {
Alert7.alert(
"Permission Required",
"This app needs access to your photos and media files to upload images. Please enable the permissions in your device settings.",
[
{ text: "Cancel", style: "cancel" },
{ text: "Settings", onPress: () => Linking7.openSettings() }
]
);
} else {
let title = "photos, media and files";
let on = "permission";
showPermissionsAlert(title, on);
}
}
}).catch((error) => {
console.error("Error requesting Android permissions:", error);
callback(false);
});
}
function documentPickIOSPermission(callback = (isSuccess) => {
}) {
if (Platform15.OS !== "ios") {
callback(false);
return;
}
if (!PERMISSIONS || !check || !request || !RESULTS) {
console.warn("react-native-permissions not available, trying native fallback");
tryIOSNativePermission(callback);
return;
}
const permission = PERMISSIONS.IOS.PHOTO_LIBRARY;
console.log("Checking iOS photo library permission");
check(permission).then((result) => {
console.log("iOS permission check result:", result);
if (result === RESULTS.GRANTED || result === RESULTS.LIMITED) {
console.log("iOS photo library permission already granted");
callback(true);
} else if (result === RESULTS.DENIED) {
console.log("iOS photo library permission denied, requesting...");
return request(permission);
} else if (result === RESULTS.UNAVAILABLE) {
console.error("iOS photo library permission unavailable - check Podfile configuration");
tryIOSNativePermission(callback);
return;
} else {
console.log("iOS photo library permission blocked:", result);
callback(false);
showPermissionBlockedAlert();
}
}).then((requestResult) => {
if (requestResult) {
console.log("iOS permission request result:", requestResult);
if (requestResult === RESULTS.GRANTED || requestResult === RESULTS.LIMITED) {
console.log("iOS photo library permission granted after request");
callback(true);
} else {
console.log("iOS photo library permission denied after request");
callback(false);
if (requestResult === RESULTS.BLOCKED) {
showPermissionBlockedAlert();
}
}
}
}).catch((error) => {
console.error("Error with iOS photo library permission:", error);
tryIOSNativePermission(callback);
});
}
async function tryIOSNativePermission(callback) {
console.log("Trying iOS native permission fallback");
try {
const ImagePicker = await import("react-native-image-picker");
if (ImagePicker && ImagePicker.requestMediaLibraryPermission) {
ImagePicker.requestMediaLibraryPermission().then((granted) => {
console.log("iOS native permission result:", granted);
callback(granted);
}).catch((error) => {
console.error("iOS native permission error:", error);
callback(false);
});
} else {
console.log("No native permission fallback available, proceeding...");
callback(true);
}
} catch (error) {
console.error("Error with iOS native permission fallback:", error);
callback(false);
}
}
function showPermissionBlockedAlert() {
Alert7.alert(
"Permission Required",
"This app needs access to your photo library to select and share images. Please enable photo library access in your device settings.",
[
{ text: "Cancel", style: "cancel" },
{ text: "Settings", onPress: () => Linking7.openSettings() }
]
);
}
function cameraPermission(callback = (isSuccess) => {
}) {
if (!PERMISSIONS || !check || !request || !RESULTS) {
console.warn("react-native-permissions not available for camera, trying native fallback");
tryNativeCameraPermission(callback);
return;
}
const permission = Platform15.select({
android: PERMISSIONS.ANDROID.CAMERA,
ios: PERMISSIONS.IOS.CAMERA
});
if (!permission) {
console.error("Camera permission not supported on this platform");
callback(false);
return;
}
console.log("Checking camera permission");
check(permission).then((result) => {
console.log("Camera permission check result:", result);
if (result === RESULTS.GRANTED) {
callback(true);
} else if (result === RESULTS.DENIED) {
console.log("Camera permission denied, requesting...");
return request(permission);
} else if (result === RESULTS.UNAVAILABLE) {
console.error("Camera permission unavailable - trying native fallback");
tryNativeCameraPermission(callback);
return;
} else {
console.log("Camera permission blocked or unavailable:", result);
callback(false);
showCameraPermissionBlockedAlert();
}
}).then((requestResult) => {
if (requestResult) {
console.log("Camera permission request result:", requestResult);
if (requestResult === RESULTS.GRANTED) {
callback(true);
} else {
callback(false);
if (requestResult === RESULTS.BLOCKED) {
showCameraPermissionBlockedAlert();
}
}
}
}).catch((error) => {
console.error("Error with camera permission:", error);
tryNativeCameraPermission(callback);
});
}
async function tryNativeCameraPermission(callback) {
console.log("Trying native camera permission fallback");
try {
const ImagePicker = await import("react-native-image-picker");
if (ImagePicker && ImagePicker.requestCameraPermission) {
ImagePicker.requestCameraPermission().then((granted) => {
console.log("Native camera permission result:", granted);
callback(granted);
}).catch((error) => {
console.error("Native camera permission error:", error);
callback(false);
});
} else {
console.log("No native camera permission fallback available, proceeding...");
callback(true);
}
} catch (error) {
console.error("Error with native camera permission fallback:", error);
callback(false);
}
}
function showCameraPermissionBlockedAlert() {
Alert7.alert(
"Camera Permission Required",
"This app needs camera access to take photos. Please enable camera permission in your device settings.",
[
{ text: "Cancel", style: "cancel" },
{ text: "Settings", onPress: () => Linking7.openSettings() }
]
);
}
var init_PermissionsUtils = __esm({
"bot-sdk/utils/PermissionsUtils.js"() {
"use strict";
init_esm_shims();
init_PermissionAlert();
}
});
// src/index.tsx
init_esm_shims();
// bot-sdk/constants/Constant.tsx
init_esm_shims();
import { Platform } from "react-native";
var MAX_SOURCE_LIMIT = 1;
var LIMIT_MESSAGE = "Only " + MAX_SOURCE_LIMIT + " sources are allowed";
var MAX_FILE_NAME_LENGTH = 24;
var FILE_CONTEXT = "workflows";
var attach_menu_buttons = [
{
id: 1,
title: "Take Photo"
},
{
id: 2,
title: "Upload Photo"
},
{
id: 3,
title: "Upload File"
},
{
id: 4,
title: "Upload Video"
}
];
var HeaderIconsId = {
BACK: "BACK",
HELP: "HELP",
LIVE_AGENT: "live_agent",
MINIMISE: "Minimise",
CLOSE: "CLOSE",
THREE_DOTS: "THREE_DOTS",
RECONNECT: "Reconnect",
EXPAND: "Expand"
};
var ChatHeaderType = {
COMPACT: "compact",
LARGE: "large",
MEDIUM: "medium",
REGULAR: "regular"
};
var SHOW_BUTTONS_LIMIT = 4;
var MAX_INPUT_TEXT_LENGTH = 256;
var MIN_COMPOSER_HEIGHT = Platform.select({
ios: 30,
android: 30
});
var MIN_TOOL_BAR_HEIGHT = Platform.select({
ios: 76,
android: 72
});
var MAX_TOOL_BAR_HEIGHT = Platform.select({
ios: 180,
android: 180
});
var MIN_HEADER_HEIGHT = Platform.select({
ios: 55,
android: 55,
web: 34
});
var BRANDING_RESPONSE_FILE = "branding";
var MAX_COMPOSER_HEIGHT = 200;
var DEFAULT_PLACEHOLDER = "Type a message";
var DATE_FORMAT = "ll";
var TIME_FORMAT = "LT, ddd";
var BOT_ICON_URL = "BOT_ICON_URL";
var URL_VERSION = "/1.1";
var TEMPLATE_TYPES = {
TEXT: "text",
BUTTON: "button",
CUSTOM: "custom",
OTHER: "other",
AUDIO_MESSAGE: "message",
VIDEO_MESSAGE: "video_message",
LINK_MESSAGE: "link",
IMAGE_MESSAGE: "image",
CARD_TEMPLATE: "cardTemplate",
LIST_TEMPLATE: "list",
IMAGE_TEMPLATE: "image",
TABLE_TEMPLATE: "table",
QUICK_REPLIES: "quick_replies",
HIDDEN_DIALOG: "hidden_dialog",
ERROR_TEMPLATE: "error",
CAROUSEL_TEMPLATE: "carousel",
LIVE_AGENT_TEMPLATE: "live_agent",
SYSTEM_TEMPLATE: "SYSTEM",
START_TIMER: "start_timer",
ADVANCED_LIST_TEMPLATE: "advancedListTemplate",
MINI_TABLE_TEMPLATE: "mini_table",
BAR_CHART_TEMPLATE: "barchart",
PIE_CHART_TEMPLATE: "piechart",
LINE_CHART_TEMPLATE: "linechart",
DATE_TEMPLATE: "dateTemplate",
DATE_RANGE_TEMPLATE: "daterange",
TABLE_LIST_TEMPLATE: "tableList",
ADVANCED_MULTI_SELECT_TEMPLATE: "advanced_multi_select",
MULTI_SELECT_TEMPLATE: "multi_select",
RADIO_OPTION_TEMPLATE: "radioOptionTemplate",
LIST_VIEW_TEMPLATE: "listView",
DROPDOWN_TEMPLATE: "dropdown_template",
FEEDBACK_TEMPLATE: "feedbackTemplate",
FORM_TEMPLATE: "form_template",
CLOCK_TEMPLATE: "clockTemplate",
LISTWIDGET_TEMPLATE: "listWidget",
USER_ATTACHEMENT_TEMPLATE: "user_attachement",
ARTICLE_TEMPLATE: "articleTemplate",
ANSWER_TEMPLATE: "answerTemplate",
OTP_TEMPLATE: "otpValidationTemplate",
RESET_PIN_TEMPLATE: "resetPinTemplate",
DIGITALFORM_TEMPLATE: "digitalform"
};
var RENDER_KORA_BUBBLE = "RENDER_KORA_BUBBLE";
var KORA_ITEM_CLICK = "KORA_ITEM_CLICK";
var WelcomeHeaderConstants = {
COMPACT: "compact",
LARGE: "large",
MEDIUM: "medium",
REGULAR: "regular"
};
// bot-sdk/theme/IThemeType.tsx
init_esm_shims();
// bot-sdk/templates/BotTemplate.tsx
init_esm_shims();
import * as React79 from "react";
import { Text as Text50 } from "react-native";
// bot-sdk/templates/AdvancedListTemplate.tsx
init_esm_shims();
import * as React19 from "react";
// bot-sdk/templates/BaseView.tsx
init_esm_shims();
import * as React3 from "react";
// bot-sdk/theme/ThemeContext.tsx
init_esm_shims();
import React2, { createContext, useContext, Component } from "react";
import AsyncStorage from "@react-native-async-storage/async-storage";
// bot-sdk/theme/AppTheme.tsx
init_esm_shims();
var defaultTheme = {
_id: "wsth-b578c51a-0518-57ad-bbb3-7f404a053528",
streamId: "st-b0439232-9345-508f-a1fb-cfcb5099c1fa",
__v: 0,
activeTheme: true,
createdBy: "u-e10dd737-167e-5e46-88d0-a2b55394f0f3",
createdOn: "2023-11-28T09:33:19.921Z",
defaultTheme: true,
lastModifiedBy: "u-e10dd737-167e-5e46-88d0-a2b55394f0f3",
lastModifiedOn: "2023-11-28T11:05:43.265Z",
refId: "06ad9db9-fb35-5632-b9b1-7dabacc323b1",
state: "published",
themeName: "Default dark theme 2",
v3: {
general: {
bot_icon: "url",
size: "small",
themeType: "light",
colors: {
primary: "#a37645",
secondary: "#101828",
primary_text: "#ffffff",
secondary_text: "#1d2939",
useColorPaletteOnly: false
}
},
chat_bubble: {
style: "rounded",
icon: {
icon_url: "icon-1.svg",
size: "medium",
type: "default"
},
minimise: {
icon: "m-icon-1.svg",
theme: "rounded",
type: "default"
},
sound: "themeOne",
alignment: "block",
animation: "slide",
expand_animation: "quick",
primary_color: "#a37645",
secondary_color: "#1d2939"
},
welcome_screen: {
show: true,
layout: "medium",
logo: {
logo_url: "/images/sc-small.svg"
},
title: {
name: "Hello"
},
sub_title: {
name: "Welcome to Kore.ai"
},
note: {
name: "Our Community is ready to help you to join our best platform"
},
background: {
type: "color",
color: "#a37645",
img: "https://picsum.photos/seed/picsum/200/300"
},
top_fonts: {
color: "#ffffff"
},
bottom_background: {
color: "#1d2939"
},
templates: [],
starter_box: {
show: true,
icon: {
show: true
},
title: "Start New Conversation",
sub_text: "I'm your personal assistant I'm here to help",
start_conv_button: {
color: "#a37645"
},
start_conv_text: {
color: "#ffffff"
},
quick_start_buttons: {
show: true,
style: "slack",
buttons: [
{
title: "Contact Sales",
action: {
type: "postback",
value: "Contact Sales"
}
},
{
title: "Free Trail",
action: {
type: "postback",
value: "Free Trail"
}
},
{
title: "Support",
action: {
type: "postback",
value: "Support"
}
},
{
title: "Hours of Operation",
action: {
type: "postback",
value: "Hours of Operation"
}
},
{
title: "Kore.ai",
action: {
type: "postback",
value: "https://kore.ai/"
}
}
],
input: "button",
action: {
type: "postback",
value: "Hello"
}
}
},
static_links: {
show: true,
layout: "carousel",
links: [
{
title: "Kore.ai",
description: "Kore.ai automates front-office and back-office interactions",
action: {
type: "url",
value: "https://kore.ai/"
}
},
{
title: "Kore",
description: "Kore.ai automates front-office and back-office interactions",
action: {
type: "url",
value: "https://kore.ai/"
}
}
]
},
promotional_content: {
show: true,
promotions: [
{
banner: "https://picsum.photos/seed/picsum/200/300",
action: {
type: "url",
value: "http://abc.com"
}
},
{
banner: "https://picsum.photos/seed/picsum/200/300",
action: {
type: "url",
value: "http://abc.com"
}
}
]
}
},
header: {
bg_color: "#EAECF0",
size: "compact",
icon: {
show: true,
icon_url: "/images/avatar-bot.svg",
//icon_url : "icon-1"
type: "default"
},
icons_color: "#000000",
title: {
name: "Support",
color: "#000000"
},
sub_title: {
name: "Your personal assistant",
color: "#000000"
},
buttons: {
close: {
show: true,
icon: "/images/close-large.svg"
},
minimise: {
show: true,
icon: "url|icomoon"
},
expand: {
show: false,
icon: "url|icomoon"
},
reconnect: {
show: false,
icon: "url|icomoon"
},
help: {
show: true,
action: {
type: "postback|url",
value: "https://kore.ai",
icon: "url|icomoon"
}
},
live_agent: {
show: true,
action: {
type: "postback|url",
value: "https://kore.ai",
icon: "url|icomoon"
}
}
}
},
footer: {
bg_color: "#EAECF0",
layout: "keypad",
compose_bar: {
bg_color: "#fffffe",
"outline-color": "#E5E5E5",
placeholder: "Type a message"
},
icons_color: "#000000",
buttons: {
menu: {
show: true,
icon_color: "#000000",
actions: [
{
title: "About",
type: "postback",
value: "About",
icon: "url|icomoon"
},
{
title: "Kore.ai",
type: "url",
value: "https://kore.ai/",
icon: "url|icomoon"
}
]
},
emoji: {
show: true,
icon: "url|icomoon"
},
microphone: {
show: true,
icon: "url|icomoon"
},
speaker: {
show: false,
icon: ""
},
attachment: {
show: true,
icon: "url|icomoon"
}
}
},
body: {
background: {
type: "color",
color: "#FFFFFF",
img: "https://picsum.photos/id/237/200/300"
},
font: {
family: "Inter",
size: "medium",
style: "1|2|3"
},
user_message: {
bg_color: "#a37645",
color: "#FFFFFF"
},
bot_message: {
bg_color: "#4B4EDE",
color: "#ffffff"
},
agent_message: {
bg_color: "#4B4EDE",
color: "#0D6EFD",
separator: "2",
icon: {
show: "true|false",
icon_url: "icomoon|url"
},
title: {
name: "Agent Support",
color: "#1d2939"
},
sub_title: {
name: "Agent support",
color: "#0D6EFD"
}
},
time_stamp: {
show: true,
show_type: "always",
position: "bottom",
separator: "line",
color: "#1d2939"
},
icon: {
show: true,
user_icon: false,
bot_icon: true,
agent_icon: true
},
buttons: {
bg_color: "#a37645",
color: "white"
},
bubble_style: "balloon",
primaryColor: "#3f42d4",
primaryHoverColor: "#de4bbc",
secondaryColor: "#3639e6",
secondaryHoverColor: "#b1b2f9",
img: "6495705b0d5bbd027d2e39ad"
}
},
version: "3.0.0"
};
// bot-sdk/theme/ThemeContext.tsx
var ThemeContext = createContext(void 0);
var ThemeProvider = class extends Component {
state = {
theme: defaultTheme
};
componentDidMount() {
this.fetchThemeFromDB();
}
fetchThemeFromDB = async () => {
try {
AsyncStorage.getItem(BRANDING_RESPONSE_FILE, (error, result) => {
if (result) {
const savedTheme = JSON.parse(result);
this.setState({ theme: savedTheme });
}
});
} catch (error) {
console.log("Error fetching theme from local storage:", error);
}
};
render() {
return /* @__PURE__ */ React2.createElement(ThemeContext.Provider, { value: this.state.theme }, this.props.children);
}
};
// bot-sdk/templates/BaseView.tsx
var BaseView = class extends React3.Component {
static contextType = ThemeContext;
static propTypes;
constructor(props) {
super(props);
}
static defaultProps;
isViewDisable = () => {
return this.props.onBottomSheetClose ? false : !this.props.payload?.isLastMessage || false;
};
// protected getTemplateWidth = () => {
// const value = this.props?.theme?.v3?.body?.icon?.show
// ? normalize(50)
// : normalize(30);
// return windowWidth - value;
// };
};
var BaseView_default = BaseView;
// bot-sdk/templates/AdvancedListTemplate.tsx
import {
Dimensions as Dimensions3,
FlatList,
Image as Image5,
StyleSheet as StyleSheet6,
Text as Text6,
TouchableOpacity as TouchableOpacity5,
View as View7
} from "react-native";
// bot-sdk/utils/helpers.tsx
init_esm_shims();
import * as React5 from "react";
import { Dimensions, Platform as Platform2, PixelRatio } from "react-native";
import dayjs from "dayjs";
// bot-sdk/theme/Color.tsx
init_esm_shims();
var Color_default = {
defaultColor: "#b2b2b2",
backgroundTransparent: "transparent",
transparent: "transparent",
defaultBlue: "#0084ff",
leftBubbleBackground: "#f0f0f0",
carrot: "#e67e22",
emerald: "#2ecc71",
peterRiver: "#3498db",
wisteria: "#8e44ad",
alizarin: "#e74c3c",
midnightBlue: "#2c3e50",
optionTintColor: "#007AFF",
timeTextColor: "#aaa",
bot_blue: "#4B4EDE",
red: "#FF0000",
green: "#009933",
//'#00FF00',
blue: "#0000FF",
cyan: "#00FFFF",
magenta: "#FF00FF",
yellow: "#FFFF00",
black: "#000000",
white: "#FFFFFF",
gray: "#808080",
silver: "#C0C0C0",
maroon: "#800000",
olive: "#808000",
navy: "#000080",
purple: "#800080",
teal: "#008080",
indigo: "#4B0082",
orange: "#FFA500",
pink: "#FFC0CB",
violet: "#EE82EE",
peach: "#FFDAB9",
lavender: "#E6E6FA",
coral: "#FF7F50",
turquoise: "#40E0D0",
chocolate: "#D2691E",
lime: "#00FF00",
gold: "#FFD700",
crimson: "#DC143C",
plum: "#DDA0DD",
slate: "#708090",
khaki: "#F0E68C",
aquamarine: "#7FFFD4",
bisque: "#FFE4C4",
cornsilk: "#FFF8DC",
firebrick: "#B22222",
midnightblue: "#191970",
text_color: "#444444",
sub_text_color: "#A4A4A4",
button_blue: "#303f9f",
header_blue: "#2D5BCC"
};
// bot-sdk/utils/colorMappings.tsx
init_esm_shims();
var ColorMappings = {
...Color_default
};
var colorMappings_default = ColorMappings;
// bot-sdk/utils/RenderImage.tsx
init_esm_shims();
import React4, { Component as Component3 } from "react";
import { View } from "react-native";
import { SvgCssUri } from "react-native-svg/css";
import FastImage from "react-native-fast-image";
// bot-sdk/assets/index.tsx
init_esm_shims();
var images = {
article: __require("./images/article.png"),
back: __require("./images/back.png"),
blur: __require("./images/blur.png"),
close: __require("./images/close.png"),
decrease10Seconds: __require("./images/decrease10Seconds.png"),
dot: __require("./images/dot.png"),
error: __require("./images/error.png"),
exitFullScreen: __require("./images/exitFullScreen.png"),
expand: __require("./images/expand.png"),
eye: __require("./images/eye.png"),
fullScreen: __require("./images/fullScreen.png"),
fullSound: __require("./images/fullSound.png"),
ic_automation_ai: __require("./images/ic_automation_ai.png"),
increase10Seconds: __require("./images/increase10Seconds.png"),
muteSound: __require("./images/muteSound.png"),
pause: __require("./images/pause.png"),
play: __require("./images/play.png"),
playlist: __require("./images/playlist.png"),
quality: __require("./images/quality.png"),
settings: __require("./images/settings.png"),
soundMixer: __require("./images/soundMixer.png"),
speed: __require("./images/speed.png")
};
var placeholder = {
default_bot_icon: __require("./placeholder/default_bot_icon.png"),
digitalForm: __require("./placeholder/digitalForm.png"),
download: __require("./placeholder/download.png"),
image: __require("./placeholder/image.png"),
mobile: __require("./placeholder/mobile.png"),
pdf: __require("./placeholder/pdf.png")
};
// bot-sdk/utils/RenderImage.tsx
var RenderImage = class extends Component3 {
constructor(props) {
super(props);
this.state = {
error: false
};
}
handleSvgError = () => {
this.setState({ error: true });
};
render() {
let {
image = "",
iconShape = void 0,
iconSize = "",
width: width8 = 10,
height = 10
} = this.props;
const { error } = this.state;
if (!image || image.length === 0) {
return null;
}
let fileExtension = image?.split?.(".")?.pop()?.toLowerCase();
if (iconSize && iconSize.trim() !== "") {
switch (iconSize) {
case "small":
width8 = 16;
height = 16;
break;
case "medium":
width8 = 22;
height = 22;
break;
case "large":
width8 = 35;
height = 35;
break;
default:
width8 = 16;
height = 16;
}
}
return /* @__PURE__ */ React4.createElement(
View,
{
style: {
...styles.image_container,
height: normalize(height),
width: normalize(width8)
}
},
fileExtension === "svg" ? /* @__PURE__ */ React4.createElement(
SvgCssUri,
{
uri: error ? placeholder.image : image,
height: normalize(height),
width: normalize(width8),
style: {
overflow: "hidden",
borderWidth: iconShape !== ICON_SHAPE.CIRCLE_IMG ? 1 : 0,
borderRadius: iconShape !== ICON_SHAPE.CIRCLE_IMG ? 5 : 0
},
onError: this.handleSvgError
}
) : this.state.error ? /* @__PURE__ */ React4.createElement(React4.Fragment, null) : /* @__PURE__ */ React4.createElement(
FastImage,
{
source: {
uri: image,
priority: FastImage.priority.high,
cache: FastImage.cacheControl.immutable
// Use cache effectively
},
style: {
...styles.unfurlUrl4,
borderRadius: iconShape === ICON_SHAPE.CIRCLE_IMG ? 150 / 2 : 0,
overflow: "hidden",
height: normalize(height),
width: normalize(width8)
},
resizeMode: FastImage.resizeMode.contain,
onError: () => {
this.setState({ error: true });
console.log("Image loading error:");
}
}
)
);
}
};
var ICON_SHAPE = {
CIRCLE_IMG: "circle-img"
};
var styles = {
image_container: {},
// Define your image container styles
unfurlUrl4: {
borderColor: "gray",
resizeMode: "cover",
//alignSelf: 'center',
// borderRadius: 6,
//alignContent: 'center',
overflow: "hidden"
}
};
var RenderImage_default = RenderImage;
// bot-sdk/utils/helpers.tsx
var { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get("window");
var NEW_SCREEN_WIDTH = SCREEN_WIDTH > SCREEN_HEIGHT ? SCREEN_HEIGHT : SCREEN_WIDTH;
var scale = NEW_SCREEN_WIDTH / 375;
var imageTypes = [
"bmp",
"dds",
"gif",
"heic",
"jpg",
"png",
"psd",
"pspimage",
"tga",
"thm",
"tif",
"tiff",
"yuv",
"jpeg"
];
var videoTypes = [
"3g2",
"3gp",
"asf",
"avi",
"flv",
"m4v",
"mov",
"mp4",
"mpg",
"rm",
"srt",
"swf",
"vob",
"wmv"
];
var renderImage = ({
image,
iconShape = void 0,
iconSize = "",
width: width8 = 10,
height = 10
}) => {
return /* @__PURE__ */ React5.createElement(
RenderImage_default,
{
image,
iconShape,
iconSize,
width: width8,
height
}
);
};
function createDateRange(start, end) {
const startDate = dayjs(start);
const endDate = dayjs(end);
let currentDate = startDate;
const dateArray = [];
while (currentDate.isBefore(endDate) || currentDate.isSame(endDate)) {
dateArray.push(currentDate.toDate());
currentDate = currentDate.add(1, "day");
}
return dateArray;
}
function padZero(str, len) {
len = len || 2;
var zeros = new Array(len).join("0");
return (zeros + str).slice(-len);
}
function invertColor(hex, bw) {
if (hex.indexOf("#") === 0) {
hex = hex.slice(1);
}
if (hex.length !== 6) {
const hexValue = colorMappings_default[hex?.toLowerCase()];
if (!hexValue) {
return Color_default.black;
}
hex = hexValue;
}
if (!hex) {
return void 0;
}
if (hex.length === 3) {
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
}
var r = parseInt(hex.slice(0, 2), 16), g = parseInt(hex.slice(2, 4), 16), b = parseInt(hex.slice(4, 6), 16);
if (hex?.toLowerCase() === "#000000") {
return "#FFFFFF";
}
if (hex?.toLowerCase() === "#ffffff") {
return "#000000";
}
if (bw) {
return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? "#000000" : "#FFFFFF";
}
r = (255 - r).toString(16);
g = (255 - g).toString(16);
b = (255 - b).toString(16);
let finalResultColor = "#" + padZero(r) + padZero(g) + padZero(b);
return finalResultColor;
}
function normalize(size) {
const newSize = size * scale;
if (Platform2.OS === "ios") {
return Math.round(PixelRatio.roundToNearestPixel(newSize));
} else {
return Math.ceil(PixelRatio.roundToNearestPixel(newSize));
}
}
function generateColor() {
const randomColor = Math.floor(Math.random() * 16777215).toString(16).padStart(6, "0");
return `#${randomColor}`;
}
function isSameDay(currentMessage, diffMessage) {
const currentCreatedAt = dayjs(currentMessage.createdOn);
const diffCreatedAt = dayjs(diffMessage.createdOn);
if (!currentCreatedAt.isValid() || !diffCreatedAt.isValid()) {
return false;
}
return currentCreatedAt.isSame(diffCreatedAt, "day");
}
function isSameUser(currentMessage, diffMessage) {
return !!(diffMessage?.user && currentMessage?.user && diffMessage.user._id === currentMessage.user._id);
}
var getItemId = (pattern) => {
var _pattern = pattern || "xyxxyxxy";
_pattern = _pattern.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c === "x" ? r : r & 3 | 8;
return v.toString(16);
});
return _pattern;
};
function getDrawableByExt(ext) {
if (imageTypes.includes(ext)) {
return "📷";
} else if (videoTypes.includes(ext)) {
return "🎥";
} else {
return "📃";
}
}
var hexToRGB = (hex) => {
const bigint = parseInt(hex.slice(1), 16);
const r = bigint >> 16 & 255;
const g = bigint >> 8 & 255;
const b = bigint & 255;
return { r, g, b };
};
var isWhite = (hex) => {
const { r, g, b } = hexToRGB(hex);
return r === 255 && g === 255 && b === 255;
};
function isHexColor(color) {
const hexPattern = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/;
return hexPattern.test(color);
}
function isNearWhiteRGB(r, g, b, threshold = 15) {
return Math.abs(255 - r) <= threshold && Math.abs(255 - g) <= threshold && Math.abs(255 - b) <= threshold;
}
function isWhiteStatusBar(color) {
if (!color || color.toLowerCase() === "white") {
return true;
}
color = color.trim();
if (isHexColor(color)) {
const { r, g, b } = hexToRGB(color);
return isWhite(color) || isNearWhiteRGB(r, g, b, 15);
}
return false;
}
function isDarkColor(r, g, b, brightnessThreshold = 80) {
const brightness = 0.2126 * r + 0.7152 * g + 0.0722 * b;
return brightness < brightnessThreshold;
}
function isBlackStatusBar(color) {
if (!color || color.toLowerCase() === "black") {
return true;
}
if (isHexColor(color)) {
const { r, g, b } = hexToRGB(color);
return isDarkColor(r, g, b);
}
return false;
}
function getTemplateType(message) {
if (message?.[0]?.component?.type === "template" && message[0].component?.payload?.type === "template" && message[0].component.payload?.payload && message[0].component.payload?.payload?.template_type) {
if (message[0].component.payload.payload.template_type === TEMPLATE_TYPES.BUTTON && message[0].component.payload.formData != null) {
return TEMPLATE_TYPES.DIGITALFORM_TEMPLATE;
}
return message[0].component.payload?.payload?.template_type;
}
if (message?.[0]?.component?.type === "text" && message?.[0]?.component?.payload?.text) {
return TEMPLATE_TYPES.TEXT;
}
if (message?.[0]?.component?.type === TEMPLATE_TYPES.USER_ATTACHEMENT_TEMPLATE) {
return TEMPLATE_TYPES.USER_ATTACHEMENT_TEMPLATE;
}
if (message?.[0]?.type === "text" && (message[0]?.component?.type === "template" || message[0]?.component?.type === "text") && message[0].component?.payload) {
if (message[0].component?.payload?.type === "link") {
return TEMPLATE_TYPES.LINK_MESSAGE;
}
if (message[0].component?.payload?.type === "message") {
if (message[0].component?.payload?.payload?.audioUrl) {
return TEMPLATE_TYPES.AUDIO_MESSAGE;
}
if (message[0].component?.payload?.payload?.videoUrl) {
return TEMPLATE_TYPES.VIDEO_MESSAGE;
}
}
if (message[0].component?.payload?.type === "image") {
return TEMPLATE_TYPES.IMAGE_MESSAGE;
}
if (message[0].component?.payload?.type === "error") {
return TEMPLATE_TYPES.ERROR_TEMPLATE;
}
if (typeof message[0].component?.payload === "string") {
return TEMPLATE_TYPES.TEXT;
}
if (message[0].component?.payload?.text && typeof message[0].component?.payload?.text === "string" || message[0].component?.payload?.text?.length === 0) {
return TEMPLATE_TYPES.TEXT;
}
if (message[0].component?.payload?.payload?.text && typeof message[0].component?.payload?.payload?.text === "string") {
return TEMPLATE_TYPES.TEXT;
}
if (message?.[0]?.component?.payload?.[0]?.isFromLocal && message?.[0]?.component?.payload?.[0]?.fileId) {
return TEMPLATE_TYPES.TEXT;
}
}
if (message?.[0]?.component?.payload?.lastMessage?.messagePayload?.message?.attachments?.[0]?.isFromLocal && message?.[0]?.component?.payload?.lastMessage?.messagePayload?.message?.attachments?.[0]?.fileId) {
return TEMPLATE_TYPES.TEXT;
}
return TEMPLATE_TYPES.OTHER;
}
function convertToRNStyle(elementStyles) {
const rnStyle = {};
for (const [key, value] of Object.entries(elementStyles)) {
switch (key) {
case "border":
const array = value.split(" ");
if (array?.length === 2) {
rnStyle.borderStyle = array[0];
let color1 = array?.[1].replace(";", "");
rnStyle.borderColor = color1;
} else if (array?.length === 3) {
rnStyle.borderStyle = array[1];
let color2 = array?.[2].replace(";", "");
rnStyle.borderColor = color2;
}
break;
case "border-width":
const borderWidths = value.split(" ").map((v) => parseFloat(v));
if (borderWidths.length === 1) {
rnStyle.borderWidth = borderWidths[0];
} else {
rnStyle.borderTopWidth = borderWidths[0];
rnStyle.borderRightWidth = borderWidths[1];
rnStyle.borderBottomWidth = borderWidths[2];
rnStyle.borderLeftWidth = borderWidths[3];
}
break;
case "padding-left":
rnStyle.paddingLeft = value.includes("%") ? `${value}` : parseFloat(value);
break;
case "box-shadow":
const [offsetX, offsetY, blurRadius] = value.split(" ").map((v) => parseFloat(v));
rnStyle.shadowOffset = { width: offsetX, height: offsetY };
rnStyle.shadowRadius = blurRadius;
rnStyle.shadowOpacity = 0.5;
rnStyle.shadowColor = "#000";
break;
case "border-radius":
rnStyle.borderRadius = parseFloat(value);
break;
case "font-style":
rnStyle.fontFamily = value;
break;
case "color":
rnStyle.color = value;
break;
case "font-size":
let num = value?.replace?.(/px/g, "") || "14";
rnStyle.fontSize = normalize(parseFloat(num));
break;
case "background-color":
rnStyle.backgroundColor = value;
break;
default:
break;
}
}
return rnStyle;
}
// bot-sdk/chat/components/UserAvatar.tsx
init_esm_shims();
import * as React6 from "react";
import { Text, TouchableOpacity, View as View2, StyleSheet } from "react-native";
import FastImage2 from "react-native-fast-image";
init_PlatformCheck();
var {
carrot,
emerald,
peterRiver,
wisteria,
alizarin,
turquoise,
midnightBlue
} = Color_default;
var styles2 = StyleSheet.create({
avatarStyle: {
justifyContent: "center",
alignItems: "center",
width: 40,
height: 40,
borderRadius: 20
},
avatarTransparent: {
backgroundColor: Color_default.backgroundTransparent
},
textStyle: {
color: Color_default.white,
fontSize: normalize(16),
backgroundColor: Color_default.backgroundTransparent,
fontWeight: "100"
}
});
var UserAvatar = class extends React6.Component {
avatarName = "";
avatarColor = "";
static defaultProps = {
user: {
name: null,
avatar: null
},
onPress: null,
onLongPress: null,
avatarStyle: {},
textStyle: {}
};
setAvatarColor() {
const userName = this.props.user && this.props.user.name || "";
const name = userName.toUpperCase().split(" ");
if (name.length === 1) {
this.avatarName = `${name[0].charAt(0)}`;
} else if (name.length > 1) {
this.avatarName = `${name[0].charAt(0)}${name[1].charAt(0)}`;
} else {
this.avatarName = "";
}
let sumChars = 0;
for (let i = 0; i < userName.length; i += 1) {
sumChars += userName.charCodeAt(i);
}
const colors3 = [
carrot,
emerald,
peterRiver,
wisteria,
alizarin,
turquoise,
midnightBlue
];
this.avatarColor = colors3[sumChars % colors3.length];
}
renderAvatar() {
const { user } = this.props;
if (user) {
if (typeof user.avatar === "function") {
return user.avatar([styles2.avatarStyle, this.props.avatarStyle]);
} else if (typeof user.avatar === "string") {
return /* @__PURE__ */ React6.createElement(
FastImage2,
{
source: {
uri: user.avatar,
priority: FastImage2.priority.normal,
cache: isAndroid ? FastImage2.cacheControl.immutable : FastImage2.cacheControl.web
},
style: [styles2.avatarStyle, this.props.avatarStyle]
}
);
} else if (typeof user.avatar === "number") {
return /* @__PURE__ */ React6.createElement(
FastImage2,
{
source: {
uri: user.avatar,
priority: FastImage2.priority.normal,
cache: isAndroid ? FastImage2.cacheControl.immutable : FastImage2.cacheControl.web
},
style: [styles2.avatarStyle, this.props.avatarStyle]
}
);
}
}
return null;
}
renderInitials() {
return /* @__PURE__ */ React6.createElement(Text, { style: [styles2.textStyle, this.props.textStyle] }, this.avatarName);
}
handleOnPress = () => {
const { onPress, ...other } = this.props;
if (onPress) {
onPress(other);
}
};
render() {
if (!this.props.user || !this.props.user.name && !this.props.user.avatar) {
return /* @__PURE__ */ React6.createElement(
View2,
{
style: [
styles2.avatarStyle,
styles2.avatarTransparent,
this.props.avatarStyle
],
accessibilityRole: "image"
}
);
}
if (this.props.user.avatar) {
return /* @__PURE__ */ React6.createElement(
TouchableOpacity,
{
disabled: !this.props.onPress,
onPress: this.props.onPress,
onLongPress: this.props.onLongPress,
accessibilityRole: "image"
},
this.renderAvatar()
);
} else {
this.setAvatarColor();
return /* @__PURE__ */ React6.createElement(
TouchableOpacity,
{
disabled: !this.props.onPress,
onPress: this.props.onPress,
onLongPress: this.props.onLongPress,
style: [
styles2.avatarStyle,
{ backgroundColor: this.avatarColor },
this.props.avatarStyle
],
accessibilityRole: "image"
},
this.renderInitials()
);
}
}
};
// bot-sdk/templates/AdvancedListTemplate.tsx
import dayjs2 from "dayjs";
import "dayjs/locale/en";
// bot-sdk/components/CustomCheckBox.tsx
init_esm_shims();
import React7 from "react";
import {
TouchableOpacity as TouchableOpacity2,
View as View3,
StyleSheet as StyleSheet2,
Animated
} from "react-native";
var CustomCheckBox = ({
style,
boxType = "square",
value,
onValueChange,
lineWidth = 2,
hideBox = false,
animationDuration = 0.5,
onAnimationType = "stroke",
offAnimationType = "stroke",
tintColor = "#aaaaaa",
onCheckColor = "#007aff",
onFillColor = "transparent",
onTintColor = "#007aff",
disabled = false,
// react-native-check-box compatibility
isChecked,
onClick,
checkBoxColor,
// Enhanced color customization
selectedColor = "#007AFF",
// Default blue
unselectedColor = "#CCCCCC",
// Default gray
selectedBackgroundColor = "transparent",
size = 24,
borderWidth = 2
}) => {
const isSelected = value !== void 0 ? value : isChecked || false;
const animatedValue = React7.useRef(new Animated.Value(isSelected ? 1 : 0)).current;
React7.useEffect(() => {
Animated.timing(animatedValue, {
toValue: isSelected ? 1 : 0,
duration: animationDuration * 1e3,
useNativeDriver: false
}).start();
}, [isSelected, animationDuration, animatedValue]);
const handlePress = () => {
if (disabled)
return;
if (onClick) {
onClick();
} else if (onValueChange) {
onValueChange(!isSelected);
}
};
const effectiveCheckColor = selectedColor || checkBoxColor || onCheckColor;
const effectiveUnselectedColor = unselectedColor || tintColor;
const effectiveSelectedColor = selectedColor || onTintColor || checkBoxColor;
const effectiveSelectedBackground = selectedBackgroundColor || onFillColor;
const effectiveBorderWidth = borderWidth || lineWidth;
const effectiveSize = size;
const borderColor = animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [effectiveUnselectedColor, effectiveSelectedColor]
});
const backgroundColor = animatedValue.interpolate({
inputRange: [0, 1],
outputRange: ["transparent", effectiveSelectedBackground]
});
if (hideBox) {
return null;
}
const flatStyle = StyleSheet2.flatten(style);
const {
paddingLeft = 0,
paddingRight = 0,
paddingTop = 0,
paddingBottom = 0,
padding = 0,
...restStyle
} = flatStyle || {};
const outerContainerStyle = {
paddingLeft: paddingLeft || padding,
paddingRight: paddingRight || padding,
paddingTop: paddingTop || padding,
paddingBottom: paddingBottom || padding
};
const boxStyle = [
styles3.container,
{
width: effectiveSize,
height: effectiveSize,
borderWidth: effectiveBorderWidth,
borderRadius: boxType === "circle" ? effectiveSize / 2 : 4,
opacity: disabled ? 0.5 : 1
},
{
borderColor,
backgroundColor
},
restStyle
// Apply style without padding
];
return /* @__PURE__ */ React7.createElement(View3, { style: outerContainerStyle }, /* @__PURE__ */ React7.createElement(TouchableOpacity2, { onPress: handlePress, disabled, activeOpacity: 0.7 }, /* @__PURE__ */ React7.createElement(Animated.View, { style: boxStyle }, isSelected && /* @__PURE__ */ React7.createElement(
Animated.Text,
{
style: [
styles3.checkmark,
{
color: effectiveCheckColor,
opacity: animatedValue,
fontSize: effectiveSize * 0.7
// Scale checkmark with checkbox size
}
]
},
"\u2713"
))));
};
var styles3 = StyleSheet2.create({
container: {
justifyContent: "center",
alignItems: "center",
borderWidth: 2,
borderColor: "#aaaaaa",
backgroundColor: "transparent"
},
checkmark: {
fontSize: 16,
fontWeight: "bold",
textAlign: "center",
includeFontPadding: false,
textAlignVertical: "center"
}
});
var CustomCheckBox_default = CustomCheckBox;
// bot-sdk/components/LazyPopover.tsx
init_esm_shims();
import React8, { Component as Component5 } from "react";
import { View as View4, StyleSheet as StyleSheet3, Modal, TouchableOpacity as TouchableOpacity3, Dimensions as Dimensions2 } from "react-native";
var LazyPopover = class extends Component5 {
mounted = true;
constructor(props) {
super(props);
this.state = {
PopoverModule: null,
isLoading: false,
loadError: null
};
}
componentDidMount() {
this.loadPopover();
}
componentWillUnmount() {
this.mounted = false;
}
async loadPopover() {
if (this.state.PopoverModule || this.state.isLoading) {
return this.state.PopoverModule;
}
this.setState({ isLoading: true, loadError: null });
try {
const PopoverModule = await LazyLoader.importModule(
() => import("react-native-popover-view"),
"popover"
);
if (this.mounted) {
const Popover = PopoverModule?.default || PopoverModule?.Popover || PopoverModule || null;
if (!Popover) {
throw new Error("Popover component not found in module");
}
this.setState({
PopoverModule: Popover,
isLoading: false,
loadError: null
});
if (this.props.onModuleLoaded) {
this.props.onModuleLoaded(Popover);
}
return Popover;
}
} catch (error) {
console.warn("Failed to load Popover:", error);
if (this.mounted) {
const errorMessage = error instanceof Error ? error.message : "Unknown error";
this.setState({
PopoverModule: null,
isLoading: false,
loadError: errorMessage
});
if (this.props.onModuleLoaded) {
this.props.onModuleLoaded(null);
}
}
}
return null;
}
render() {
const {
fallbackComponent: FallbackComponent,
loadingComponent: LoadingComponent,
errorComponent: ErrorComponent,
onModuleLoaded,
...popoverProps
} = this.props;
const { PopoverModule, isLoading, loadError } = this.state;
if (isLoading) {
if (LoadingComponent) {
return /* @__PURE__ */ React8.createElement(LoadingComponent, null);
}
return /* @__PURE__ */ React8.createElement(DefaultLoader, { text: "Loading popover..." });
}
if (loadError) {
if (ErrorComponent) {
return /* @__PURE__ */ React8.createElement(ErrorComponent, { error: loadError });
}
if (FallbackComponent) {
return /* @__PURE__ */ React8.createElement(FallbackComponent, { ...popoverProps });
}
return /* @__PURE__ */ React8.createElement(ErrorFallback, { error: `Popover unavailable: ${loadError}` });
}
if (PopoverModule) {
return /* @__PURE__ */ React8.createElement(PopoverModule, { ...popoverProps });
}
return /* @__PURE__ */ React8.createElement(DefaultLoader, { text: "Initializing popover..." });
}
};
var styles4 = StyleSheet3.create({
fallbackOverlay: {
flex: 1,
backgroundColor: "rgba(0, 0, 0, 0.3)"
},
fallbackPopover: {
position: "absolute",
backgroundColor: "white",
borderRadius: 8,
padding: 12,
shadowColor: "#000",
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.25,
shadowRadius: 4,
elevation: 5,
maxWidth: 200,
minWidth: 100
},
fallbackArrow: {
position: "absolute",
top: -8,
left: 20,
width: 0,
height: 0,
borderLeftWidth: 8,
borderRightWidth: 8,
borderBottomWidth: 8,
borderLeftColor: "transparent",
borderRightColor: "transparent",
borderBottomColor: "white"
}
});
var LazyPopover_default = LazyPopover;
// bot-sdk/utils/SvgIcon.js
init_esm_shims();
import * as React16 from "react";
// bot-sdk/assets/audio.tsx
init_esm_shims();
import React9 from "react";
import Svg, { Path } from "react-native-svg";
var WIDTH = 17;
var HEIGHT = 17;
var Play = (props) => {
let width8 = props.width || normalize(WIDTH);
let height = props.height || normalize(HEIGHT);
let strokeColor = props.color || Color_default.black;
let style = props.style;
return /* @__PURE__ */ React9.createElement(Svg, { width: width8, height, viewBox: "0 0 512 512" }, /* @__PURE__ */ React9.createElement(
Path,
{
fill: strokeColor,
d: "M405.2,232.9L126.8,67.2c-3.4,-2 -6.9,-3.2 -10.9,-3.2c-10.9,0 -19.8,9 -19.8,20H96v344h0.1c0,11 8.9,20 19.8,20c4.1,0 7.5,-1.4 11.2,-3.4l278.1,-165.5c6.6,-5.5 10.8,-13.8 10.8,-23.1C416,246.7 411.8,238.5 405.2,232.9z"
}
));
};
var Pause = (props) => {
let width8 = props.width || normalize(WIDTH);
let height = props.height || normalize(HEIGHT);
let strokeColor = props.color || Color_default.black;
let style = props.style;
return /* @__PURE__ */ React9.createElement(Svg, { width: width8, height, viewBox: "0 0 512 512" }, /* @__PURE__ */ React9.createElement(
Path,
{
fill: strokeColor,
d: "M224,435.8V76.1c0,-6.7 -5.4,-12.1 -12.2,-12.1h-71.6c-6.8,0 -12.2,5.4 -12.2,12.1v359.7c0,6.7 5.4,12.2 12.2,12.2h71.6C218.6,448 224,442.6 224,435.8z"
}
), /* @__PURE__ */ React9.createElement(
Path,
{
fill: strokeColor,
d: "M371.8,64h-71.6c-6.7,0 -12.2,5.4 -12.2,12.1v359.7c0,6.7 5.4,12.2 12.2,12.2h71.6c6.7,0 12.2,-5.4 12.2,-12.2V76.1C384,69.4 378.6,64 371.8,64z"
}
));
};
// bot-sdk/assets/boticons.tsx
init_esm_shims();
import * as React10 from "react";
import Svg2, { Defs as Defs2, G as G2, Image as Image2, Path as Path2, Pattern as Pattern2, Rect as Rect2, Use as Use2 } from "react-native-svg";
var WIDTH2 = 17;
var HEIGHT2 = 17;
var HeaderAvatar = (props) => {
let width8 = props.width || normalize(WIDTH2);
let height = props.height || normalize(HEIGHT2);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React10.createElement(Svg2, { width: width8, height, viewBox: "0 0 36 36", fill: "none" }, /* @__PURE__ */ React10.createElement(
Rect2,
{
x: "1.25",
y: "1.25",
width: "33.5",
height: "33.5",
rx: "16.75",
fill: "url(#pattern0)"
}
), /* @__PURE__ */ React10.createElement(
Rect2,
{
x: "1.25",
y: "1.25",
width: "33.5",
height: "33.5",
rx: "16.75",
stroke: "white",
"stroke-width": "1.5"
}
), /* @__PURE__ */ React10.createElement(Defs2, null, /* @__PURE__ */ React10.createElement(
Pattern2,
{
id: "pattern0",
patternContentUnits: "objectBoundingBox",
width: "1",
height: "1"
},
/* @__PURE__ */ React10.createElement(Use2, { xlinkHref: "#image0_11743_8911", transform: "scale(0.003125)" })
), /* @__PURE__ */ React10.createElement(
Image2,
{
id: "image0_11743_8911",
width: "320",
height: "320",
xlinkHref: {
uri: "data:image/jpeg;base64,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"
}
}
)));
};
{
}
var UpSolid = (props) => {
let width8 = props.width || normalize(WIDTH2);
let height = props.height || normalize(HEIGHT2);
let strokeColor = props.color || Color_default.black;
let style = props.style;
return /* @__PURE__ */ React10.createElement(
Svg2,
{
style,
width: width8,
height,
viewBox: "0 0 24 24",
fill: "none"
},
/* @__PURE__ */ React10.createElement(
Path2,
{
d: "M18.6806 13.9783L15.4706 10.7683L13.5106 8.79828C12.6806 7.96828 11.3306 7.96828 10.5006 8.79828L5.32056 13.9783C4.64056 14.6583 5.13056 15.8183 6.08056 15.8183H11.6906H17.9206C18.8806 15.8183 19.3606 14.6583 18.6806 13.9783Z",
fill: strokeColor
}
)
);
};
var RightSolid = (props) => {
let width8 = props.width || normalize(WIDTH2);
let height = props.height || normalize(HEIGHT2);
let strokeColor = props.color || Color_default.black;
let style = props.style;
return /* @__PURE__ */ React10.createElement(
Svg2,
{
style,
fill: strokeColor,
width: width8,
height,
viewBox: "0 0 24 24"
},
/* @__PURE__ */ React10.createElement(Path2, { d: "M5.536 21.886a1.004 1.004 0 0 0 1.033-.064l13-9a1 1 0 0 0 0-1.644l-13-9A1 1 0 0 0 5 3v18a1 1 0 0 0 .536.886z" })
);
};
var Left = (props) => {
let width8 = props.width || normalize(WIDTH2);
let height = props.height || normalize(HEIGHT2);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React10.createElement(Svg2, { width: width8, height, id: "Capa_1", viewBox: "0 0 34.075 34.075" }, /* @__PURE__ */ React10.createElement(G2, null, /* @__PURE__ */ React10.createElement(G2, null, /* @__PURE__ */ React10.createElement(
Path2,
{
fill: strokeColor,
d: "M24.57,34.075c-0.505,0-1.011-0.191-1.396-0.577L8.11,18.432c-0.771-0.771-0.771-2.019,0-2.79\n L23.174,0.578c0.771-0.771,2.02-0.771,2.791,0s0.771,2.02,0,2.79l-13.67,13.669l13.67,13.669c0.771,0.771,0.771,2.021,0,2.792\n C25.58,33.883,25.075,34.075,24.57,34.075z"
}
))));
};
var Right = (props) => {
let width8 = props.width || normalize(WIDTH2);
let height = props.height || normalize(HEIGHT2);
let strokeColor = props.color || Color_default.black;
let style = props.style;
return /* @__PURE__ */ React10.createElement(
Svg2,
{
fill: strokeColor,
width: width8,
height,
id: "Layer_1",
style,
viewBox: "0 0 492.004 492.004"
},
/* @__PURE__ */ React10.createElement(G2, null, /* @__PURE__ */ React10.createElement(G2, null, /* @__PURE__ */ React10.createElement(
Path2,
{
d: "M382.678,226.804L163.73,7.86C158.666,2.792,151.906,0,144.698,0s-13.968,2.792-19.032,7.86l-16.124,16.12\n c-10.492,10.504-10.492,27.576,0,38.064L293.398,245.9l-184.06,184.06c-5.064,5.068-7.86,11.824-7.86,19.028\n c0,7.212,2.796,13.968,7.86,19.04l16.124,16.116c5.068,5.068,11.824,7.86,19.032,7.86s13.968-2.792,19.032-7.86L382.678,265\n c5.076-5.084,7.864-11.872,7.848-19.088C390.542,238.668,387.754,231.884,382.678,226.804z"
}
)))
);
};
var ThreeDots = (props) => {
let width8 = props.width || normalize(WIDTH2);
let height = props.height || normalize(HEIGHT2);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React10.createElement(Svg2, { width: width8, height, fill: strokeColor, viewBox: "0 0 16 16" }, /* @__PURE__ */ React10.createElement(Path2, { d: "M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0" }));
};
// bot-sdk/assets/playerIcons.tsx
init_esm_shims();
import * as React11 from "react";
import Svg3, { G as G3, Image as Image3, Path as Path3 } from "react-native-svg";
var WIDTH3 = 17;
var HEIGHT3 = 17;
var Speed = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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\n MDowMFMWNYAAAAAASUVORK5CYII="
}
)
);
};
var Soundmixer = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var Playlist = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var Settings = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var PPlay = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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\n MDowMFMWNYAAAAAASUVORK5CYII="
}
)
);
};
var Quality = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(Svg3, { width: width8, height }, /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C1.42578077 -0.00478475 2.85155655 -0.01131837 4.27732226 -0.0194332 C8.19428645 -0.03665237 12.1108667 -0.02902943 16.02783668 -0.01732175 C20.28960764 -0.00897613 24.55130885 -0.02378785 28.81306285 -0.03562677 C36.28211662 -0.0531556 43.75106073 -0.05577332 51.22012997 -0.04862022 C62.3269741 -0.03801128 73.43371197 -0.05019163 84.54054455 -0.06678609 C105.53080823 -0.09728442 126.5210237 -0.10067434 147.51130489 -0.09574004 C163.71904238 -0.09207621 179.92676404 -0.09558965 196.13449955 -0.10418892 C198.46219295 -0.10539371 200.78988635 -0.10659611 203.11757975 -0.10779613 C206.62509725 -0.10961061 210.13261474 -0.11142794 213.64013222 -0.11326083 C246.25604276 -0.13012275 278.87194734 -0.1387893 311.48786163 -0.13044739 C312.7177046 -0.13013464 313.94754758 -0.12982188 315.21465852 -0.12949965 C321.44813454 -0.12788806 327.68161055 -0.12619652 333.91508655 -0.12447305 C335.77210211 -0.12395979 335.77210211 -0.12395979 337.66663314 -0.12343615 C340.17019139 -0.12274284 342.67374964 -0.12204579 345.1773079 -0.12134498 C384.13584049 -0.1106297 423.09428256 -0.12649266 462.05279827 -0.16341209 C505.81320708 -0.20483343 549.57355981 -0.22630111 593.33398932 -0.21826112 C597.99896855 -0.21747042 602.66394779 -0.21674733 607.32892704 -0.21606636 C608.47758066 -0.2158849 609.62623428 -0.21570343 610.80969559 -0.21551647 C628.1584059 -0.21318341 645.50705963 -0.22648956 662.85575581 -0.2476902 C682.58364667 -0.27177355 702.3114128 -0.27493602 722.03930549 -0.25010987 C733.0814287 -0.23683645 744.12325379 -0.24015183 755.16535326 -0.2672869 C762.54072906 -0.2837511 769.91588108 -0.27841337 777.29123862 -0.25533636 C781.49387548 -0.24279839 785.6959298 -0.23968478 789.89853344 -0.26306303 C793.72604942 -0.2841588 797.55249007 -0.2773706 801.37994872 -0.24885397 C803.39629296 -0.2408696 805.41268931 -0.26214779 807.42892203 -0.2848081 C816.77652847 -0.17339334 824.58737938 2.00395933 831.8584327 8.13224431 C838.22162831 14.96116731 840.53719275 22.87186174 840.44138813 32.01624203 C840.44780109 32.93475326 840.45421404 33.85326449 840.46082133 34.79960939 C840.47739374 37.87032333 840.46558344 40.94025423 840.45382977 44.01098061 C840.45987244 46.2375932 840.46765123 48.46420165 840.4770149 50.69080275 C840.49759724 56.80422272 840.49320564 62.91740839 840.48465371 69.03084767 C840.48022979 74.94856929 840.49453964 80.86623809 840.50817422 86.78393911 C840.53864009 100.38034244 840.5420658 113.97667124 840.53712817 127.57310156 C840.53346143 138.07336613 840.5369839 148.57360629 840.54557705 159.0738678 C840.54678186 160.5829698 840.54798425 162.09207181 840.54918426 163.60117381 C840.55099878 165.87531181 840.55281612 168.1494498 840.55464896 170.42358778 C840.57150605 191.5651126 840.58018079 212.70662824 840.57183552 233.84815884 C840.57152277 234.64500661 840.57121001 235.44185439 840.57088778 236.26284906 C840.56927624 240.30149271 840.5675847 244.34013632 840.56586118 248.37877993 C840.56534792 249.58188791 840.56534792 249.58188791 840.56482428 250.80930112 C840.56413097 252.43128524 840.56343391 254.05326936 840.56273311 255.67525347 C840.5520193 280.91194823 840.56787854 306.14850321 840.60480022 331.38517189 C840.64624438 359.74617495 840.66768485 388.10709143 840.65964925 416.46812648 C840.65885857 419.49294673 840.65813548 422.517767 840.65745449 425.54258728 C840.65727303 426.28736096 840.65709156 427.03213464 840.6569046 427.79947722 C840.65457393 439.03618111 840.66785952 450.27279749 840.68907833 461.50947952 C840.71319014 474.29112982 840.71629147 487.07258751 840.691498 499.85424069 C840.67941442 506.37522867 840.67755518 512.89591654 840.7015028 519.41688728 C840.72317882 525.38871227 840.71706437 531.3598456 840.68897943 537.33163794 C840.68367396 539.48971046 840.68845503 541.64783681 840.70445116 543.80585656 C840.79019504 556.23832247 840.79889366 566.48499388 832.30913985 576.40589267 C824.03801203 584.25521726 814.82699404 585.09160925 803.86487389 585.01790237 C802.43909311 585.02268712 801.01331733 585.02922075 799.58755162 585.03733557 C795.67058744 585.05455474 791.75400719 585.04693181 787.8370372 585.03522413 C783.57526625 585.02687851 779.31356503 585.04169023 775.05181104 585.05352914 C767.58275726 585.07105797 760.11381316 585.0736757 752.64474392 585.0665226 C741.53789978 585.05591366 730.43116192 585.06809401 719.32432933 585.08468846 C698.33406565 585.11518679 677.34385018 585.11857672 656.35356899 585.11364241 C640.1458315 585.10997858 623.93810984 585.11349203 607.73037434 585.12209129 C605.40268094 585.12329609 603.07498753 585.12449849 600.74729413 585.1256985 C597.23977664 585.12751299 593.73225915 585.12933032 590.22474167 585.1311632 C557.60883112 585.14802513 524.99292654 585.15669167 492.37701225 585.14834976 C491.14716928 585.14803701 489.91732631 585.14772426 488.65021537 585.14740203 C482.41673934 585.14579044 476.18326334 585.1440989 469.94978734 585.14237542 C468.09277178 585.14186216 468.09277178 585.14186216 466.19824075 585.14133853 C463.69468249 585.14064522 461.19112424 585.13994816 458.68756599 585.13924736 C419.7290334 585.12853208 380.77059132 585.14439503 341.81207561 585.18131447 C298.05166681 585.2227358 254.29131408 585.24420348 210.53088456 585.2361635 C205.86590533 585.23537279 201.20092609 585.2346497 196.53594685 585.23396873 C195.38729323 585.23378727 194.23863961 585.23360581 193.0551783 585.23341885 C175.70646799 585.23108578 158.35781425 585.24439193 141.00911808 585.26559258 C121.28122721 585.28967593 101.55346109 585.29283839 81.8255684 585.26801224 C70.78344518 585.25473883 59.74162009 585.2580542 48.69952062 585.28518927 C41.32414482 585.30165347 33.9489928 585.29631574 26.57363527 585.27323873 C22.3709984 585.26070076 18.16894409 585.25758715 13.96634044 585.2809654 C10.13882446 585.30206117 6.31238381 585.29527297 2.48492517 585.26675635 C0.46858092 585.25877198 -1.54781542 585.28005017 -3.56404814 585.30271047 C-12.91165459 585.19129571 -20.72250549 583.01394304 -27.99355881 576.88565806 C-34.35675442 570.05673507 -36.67231887 562.14604063 -36.57651424 553.00166035 C-36.5829272 552.08314912 -36.58934016 551.16463789 -36.59594744 550.21829298 C-36.61251985 547.14757905 -36.60070955 544.07764814 -36.58895588 541.00692177 C-36.59499855 538.78030917 -36.60277734 536.55370073 -36.61214101 534.32709962 C-36.63272336 528.21367966 -36.62833176 522.10049398 -36.61977983 515.98705471 C-36.61535591 510.06933308 -36.62966575 504.15166429 -36.64330033 498.23396327 C-36.6737662 484.63755993 -36.67719192 471.04123114 -36.67225428 457.44480082 C-36.66858754 446.94453625 -36.67211001 436.44429609 -36.68070316 425.94403458 C-36.68190797 424.43493257 -36.68311037 422.92583057 -36.68431037 421.41672856 C-36.6861249 419.14259057 -36.68794223 416.86845258 -36.68977507 414.5943146 C-36.70663216 393.45278977 -36.7153069 372.31127414 -36.70696163 351.16974354 C-36.70664888 350.37289576 -36.70633613 349.57604799 -36.7060139 348.75505331 C-36.70440236 344.71640966 -36.70271082 340.67776605 -36.70098729 336.63912245 C-36.70064512 335.83705046 -36.70030294 335.03497846 -36.6999504 334.20860126 C-36.69925709 332.58661714 -36.69856003 330.96463302 -36.69785923 329.3426489 C-36.68714541 304.10595415 -36.70300465 278.86939917 -36.73992634 253.63273048 C-36.78137049 225.27172742 -36.80281096 196.91081094 -36.79477537 168.5497759 C-36.79398469 165.52495564 -36.79326159 162.50013538 -36.7925806 159.47531509 C-36.79239914 158.73054141 -36.79221768 157.98576773 -36.79203072 157.21842515 C-36.78970004 145.98172126 -36.80298563 134.74510488 -36.82420444 123.50842285 C-36.84831625 110.72677256 -36.85141759 97.94531486 -36.82662411 85.16366168 C-36.81454054 78.64267371 -36.8126813 72.12198583 -36.83662891 65.60101509 C-36.85830493 59.62919011 -36.85219048 53.65805677 -36.82410555 47.68626443 C-36.81880008 45.52819192 -36.82358115 43.37006556 -36.83957727 41.21204581 C-36.92532115 28.7795799 -36.93401977 18.53290849 -28.44426596 8.6120097 C-20.17313815 0.76268512 -10.96212016 -0.07370688 0 0 Z M96.92853069 121.04020119 C89.19357136 128.12361967 85.44730993 137.92415322 84.7461437 148.2533108 C84.67282571 151.39438925 84.66103846 154.52994418 84.67174053 157.67186928 C84.66791498 158.87165671 84.66408944 160.07144413 84.66014796 161.30758876 C84.65165019 164.6162267 84.65203801 167.92464098 84.65632856 171.23327219 C84.65880415 174.8100758 84.64977127 178.38685375 84.64229107 181.96364784 C84.6295648 188.96290397 84.62774782 195.96212169 84.63009133 202.96138743 C84.6318771 208.653294 84.63011931 214.34518894 84.62586689 220.03709412 C84.6252717 220.84836624 84.62467651 221.65963836 84.62406329 222.49549448 C84.62285149 224.1438099 84.62163735 225.79212532 84.62042091 227.44044074 C84.6095532 242.8864616 84.61170413 258.33246061 84.61780576 273.7784827 C84.62297331 287.89272509 84.61172237 302.00689843 84.59270754 316.12112717 C84.57331053 330.63083579 84.56507646 345.14051178 84.56883079 359.65023345 C84.57074012 367.78940427 84.56828147 375.92851633 84.55411625 384.06767654 C84.54217766 390.99730623 84.5408252 397.926841 84.55290642 404.85647205 C84.55877799 408.38812262 84.55994265 411.91959981 84.54790401 415.45123863 C84.53497363 419.28927144 84.54555069 423.12704423 84.55821514 426.96508217 C84.55084086 428.06792779 84.54346657 429.17077342 84.53586882 430.30703861 C84.62229563 442.80908588 87.16179978 453.17045413 95.74884319 462.47770119 C102.64614733 469.05452453 111.36431537 472.63652614 120.93243694 472.50895119 C130.77103565 471.69871365 139.30226885 468.6231418 146.24493694 461.44645119 C155.32613613 450.4166546 156.09082067 438.24192746 156.04596233 424.58512306 C156.04614314 422.79948322 156.04614314 422.79948322 156.04632759 420.97776985 C156.04558433 417.14439428 156.03798284 413.31106801 156.03009319 409.47770119 C156.02862196 407.10302695 156.02760237 404.72835238 156.02704144 402.35367775 C156.02180959 393.57209727 156.00784833 384.79052374 155.99493694 376.00895119 C155.96399944 346.55645119 155.96399944 346.55645119 155.93243694 316.50895119 C206.75243694 316.50895119 257.57243694 316.50895119 309.93243694 316.50895119 C309.74493694 377.25895119 309.74493694 377.25895119 309.66217327 396.38688087 C309.65213525 402.0828318 309.65213525 402.0828318 309.64610577 407.77878761 C309.64152206 410.30077646 309.63101892 412.82275904 309.61571026 415.34470558 C309.59359818 419.18179551 309.59072405 423.01848632 309.59186077 426.85563087 C309.58106645 427.96476215 309.57027212 429.07389343 309.5591507 430.21663475 C309.60854821 442.75942794 312.13330177 453.13956597 320.74884319 462.47770119 C327.64614733 469.05452453 336.36431537 472.63652614 345.93243694 472.50895119 C355.77103565 471.69871365 364.30226885 468.6231418 371.24493694 461.44645119 C380.29558055 450.45376665 381.08550717 438.30783248 381.06614971 424.69407082 C381.06841527 423.51963913 381.07068082 422.34520744 381.07301503 421.13518691 C381.07823273 417.89276511 381.07900292 414.65037838 381.07782066 411.40795374 C381.07761591 407.90407894 381.08314252 404.40021229 381.08787823 400.89634132 C381.09616928 394.03799505 381.09893237 387.17965737 381.09949061 380.3213065 C381.09996651 374.74379561 381.10202497 369.16628754 381.10519123 363.58877754 C381.11399367 347.75962107 381.11861126 331.93047137 381.11786076 316.10131243 C381.1178208 315.24873361 381.11778084 314.39615479 381.11773968 313.51774025 C381.1176988 312.66411493 381.11765792 311.81048962 381.1176158 310.93099687 C381.11720947 297.10123392 381.12677677 283.27149823 381.14087804 269.44174317 C381.15525811 255.22587401 381.16214733 241.01001814 381.16128427 226.79414153 C381.16095286 218.81928783 381.16367543 210.84446269 381.17446232 202.86961555 C381.1835888 196.07905179 381.18572499 189.28852953 381.1789529 182.49796227 C381.17569847 179.03723561 381.17559178 175.5765885 381.18430614 172.11586952 C381.19204723 168.35443129 381.18736705 164.59320005 381.1796751 160.83176613 C381.18739045 159.21149305 381.18739045 159.21149305 381.19526166 157.55848718 C381.13544179 144.26229238 379.52341452 132.14708448 370.11993694 122.13395119 C362.70063495 115.2938512 354.98187645 113.07888468 344.93243694 112.50895119 C336.89695792 112.89299982 330.58159165 115.04412623 323.93243694 119.50895119 C322.60212444 120.34426369 322.60212444 120.34426369 321.24493694 121.19645119 C312.77788187 129.66350626 309.61170667 141.00023873 309.5591507 152.72572041 C309.56994502 153.69792436 309.58073935 154.67012831 309.59186077 155.67179298 C309.59149917 156.74363492 309.59113756 157.81547686 309.590765 158.91979885 C309.59298344 162.3494537 309.61573338 165.77860394 309.63946819 169.20816994 C309.64388546 171.34150902 309.64694204 173.47485136 309.64862347 175.60819435 C309.66427771 183.47099659 309.7061615 191.33372898 309.74493694 199.19645119 C309.80681194 216.78957619 309.86868694 234.38270119 309.93243694 252.50895119 C259.11243694 252.50895119 208.29243694 252.50895119 155.93243694 252.50895119 C156.05743694 201.82145119 156.05743694 201.82145119 156.11261272 185.88517189 C156.11930636 181.12329422 156.11930636 181.12329422 156.12332439 176.36141396 C156.12637228 174.2594766 156.13335747 172.15754249 156.14358807 170.05562782 C156.94988297 144.65397787 156.94988297 144.65397787 145.74493694 122.69645119 C131.78856582 109.9432155 111.76291111 109.7047682 96.92853069 121.04020119 Z M426.46368694 130.56363869 C418.79208112 140.30970934 417.62907339 150.20426846 417.67174053 162.29895973 C417.66791498 163.4586172 417.66408944 164.61827467 417.66014796 165.81307328 C417.65165319 169.00959741 417.65203689 172.20597348 417.65632856 175.40250134 C417.65880494 178.8586307 417.64977035 182.31473353 417.64229107 185.77085304 C417.62956733 192.53314983 417.62774747 199.29540687 417.63009133 206.05771361 C417.63187724 211.55655109 417.63011901 217.05537653 417.62586689 222.55421257 C417.6252717 223.3380198 417.62467651 224.12182703 417.62406329 224.929386 C417.62285149 226.52189715 417.62163735 228.1144083 417.62042091 229.70691945 C417.60955435 244.62832795 417.61170369 259.54971382 417.61780576 274.47112359 C417.62297424 288.10751955 417.61171972 301.74384406 417.59270754 315.38022588 C417.57331363 329.39837451 417.56507585 343.41648937 417.56883079 357.43465149 C417.57074046 365.29824687 417.56827808 373.16178143 417.55411625 381.02536583 C417.54218168 387.71970134 417.54082078 394.41393861 417.55290642 401.10827552 C417.55878056 404.52031363 417.55993544 407.93217224 417.54790401 411.34419823 C417.53742874 415.05128927 417.54554426 418.7579013 417.55821514 422.46497536 C417.55084086 423.53182434 417.54346657 424.59867332 417.53586882 425.69785106 C417.62256913 437.79642756 420.54824073 447.43873389 428.71368694 456.48160744 C437.81879385 465.26952825 449.60020104 466.67470402 461.75934124 466.63834572 C462.49730938 466.64009804 463.23527752 466.64185036 463.99560833 466.64365578 C466.41598201 466.64802596 468.83628136 466.64514943 471.25665569 466.64176369 C472.96611323 466.64243904 474.67557067 466.64341099 476.38502789 466.64466286 C479.9683044 466.64613411 483.55155593 466.64400716 487.13482952 466.63932228 C491.66436116 466.63368077 496.19383341 466.63697443 500.72336292 466.64274979 C534.04934165 466.95989151 534.04934165 466.95989151 567.18243694 463.88395119 C568.30521038 463.71282814 569.42798382 463.54170509 570.58478069 463.3653965 C589.49420353 460.2897037 607.64428642 454.75643859 624.93243694 446.50895119 C625.65334515 446.16638283 626.37425335 445.82381447 627.11700726 445.47086525 C643.9999853 437.30708181 658.55743255 426.59040267 671.93243694 413.50895119 C672.71747601 412.78578712 673.50251507 412.06262306 674.31134319 411.31754494 C685.96693807 400.32917552 694.68851571 386.69245696 701.93243694 372.50895119 C702.2558305 371.8760215 702.57922405 371.24309181 702.91241741 370.59098244 C724.12381307 328.4505753 726.39421454 276.99618393 711.68634319 232.38395119 C704.96750836 213.17621586 695.37752829 195.81347006 681.93243694 180.50895119 C681.22603069 179.68137306 680.51962444 178.85379494 679.79181194 178.00113869 C650.63964186 144.54954784 609.12676219 126.93812847 565.80743694 120.75895119 C564.99830853 120.64309669 564.18918011 120.5272422 563.35553265 120.40787697 C547.86447888 118.41480494 532.15544625 118.34777808 516.56134319 118.34098244 C514.77878577 118.33775514 512.9962286 118.33439008 511.21367168 118.33089638 C507.51713731 118.32497711 503.82062609 118.32304938 500.12408733 118.32364845 C495.41866332 118.3237507 490.71338806 118.31000203 486.00799942 118.29287624 C482.34201164 118.28170296 478.67605955 118.27973073 475.0100565 118.28025818 C473.27554014 118.27908982 471.5410225 118.27473355 469.80652332 118.26692581 C445.9914049 118.1353702 445.9914049 118.1353702 426.46368694 130.56363869 Z ",
fill: strokeColor,
transform: "translate(98.0675630569458,207.4910488128662)"
}
), /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C82.36047666 0 82.36047666 0 111 16 C111.98613281 16.54398437 112.97226562 17.08796875 113.98828125 17.6484375 C136.85487575 31.21617085 150.31242321 53.77078874 157 79 C164.46548875 111.06488609 159.35202131 144.83499402 142.24609375 172.875 C125.07244165 198.37647876 99.69824259 212.1077118 70.25390625 218.23828125 C46.94044071 222.41286874 24.15655817 220 0 220 C0 147.4 0 74.8 0 0 Z ",
fill: strokeColor,
transform: "translate(587,390)"
}
));
};
var PPause = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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\nABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKC\nDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCA\noANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAo\nIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0A\nCgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEH\ngAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQ\nAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQ\ndAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAF\nBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANA\nAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgA\nUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6\nABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKC\nDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCA\noANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAo\nIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0A\nCgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEH\ngAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQ\nAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQ\ndAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAF\nBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANA\nAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgA\nUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6\nABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKC\nDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCA\noANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAo\nIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0A\nCgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEH\ngAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQ\nAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQ\ndAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAF\nBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANA\nAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgA\nUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6\nABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKC\nDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCA\noANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAo\nIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0A\nCgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEH\ngAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQ\nAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQ\ndAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAF\nBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANA\nAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgA\nUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6\nABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKC\nDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACvQEfSGz0ROA/2NW9B4Dc67n\nYJNz5t/0fkoFnbWg5MjsOdh+nL2jJ8AjWD+xb5KWszu3Z2X0DNinhWwYPWF19AT9puwePQH2aSV3\nZs/E8nZHbp3YK2bt2Zs7Rk9YHT1B/4lP6My9H+Xu0RMOsHvzk9ET4BHcm52jJ6yOnqDvyPLoCbBP\ny9mZO0ePOMDuyZ2OTObc3nxv9ITV0RP0W33lzpxbzvX58egRB9hPcpOv3Jlzd+fboyesjp6g35sb\nsjR6BOzDcq6aXNDvynaf0JlrS7kxPxg9YnX0BD25MreOngD7sJyduW/0iANsT76X+0ePgH34Ya51\nlvu8Wcxl2TF6BOzDzvx4ct8iLea2bM/i6BnwsH7Y8xPaE/SlXJ6bRo+Ah3VPLs4tE/z6+ZZcmHtG\nj4CHdXMuavlFuyfoyT251qVrzK178pncNnrEAD/JJdkzegQ8jMVckx+3nLjZFPTkwlw9egI8jJvz\nlUmGbTFXOmGVuXVtLhw9YfV0Bf2SfGH0BHhId+QLuaXlc8Bjspyb8l+TO7uftWEln8vFo0esnq6g\n35crJ3cnLtaGb+YTk/2D0HI+k+tHj4CHcHu+2tSMrqAnX8o/jJ4AD3J/Lss3Ro8Y6Op8fnL3yGMt\n+LdcOnrCamoL+s58uuUWARS5LB+f9NXY9+eTuWL0CHiAlezIp3LL6BmrqS3oK/mffGj0CHiAO/Lx\nXDZ6xGDfyL/nR6NHwC+Y5R/z1a4LSduCntyeD+eLXf9JrGnL+XQ+NenP50mymE/mXyd5lj/zaTlf\nyd+3XUjaF/Tkxvx5rpJ05sJyLsuHc8PoGXPgpvxdLnb5GnNhOdfknfnW6BmrrTHoK7kkf5sbJ3mJ\nEPNmR96Tr40eMSeuz/s8e425cEv+IZ/t+1lceOfoBfvH9mzImTl09AwmblfelU80XRbzS1nMD/LD\nPDuHjR7CxO3NR/Oe3Dt6xuprDfreXJflnCHpDLQ778sH3VLlF+zJd3J7np7Hjx7CpH0kf935bM7W\noCe7c32WcrpPAwyyIx/IB7Nz9Iw5szfX5a6cns2jhzBRd+Wf895cO3rG/tEb9J8+rGUxJ3nrYIDt\neX8+6J4ID2Fvrs6ubM2Ro4cwQTfmn/LuXDd6xv7SHPRkVy7P3Tk+j8/60VOYkF35Zv4qH87u0UPm\n1FK+nh05KYfnoNFTmJD7c00+mPdnx+gh+0930JO9uSJX5ticlHWZjR7DBCzlzvx33p7P951Bu6q2\n5+Jsysk5qPJKG+bNcvbmy3lHPpFdo6fsT7MJvOtsyJb8Tv4kp44ewgR8Oe/NV7Jz8jeSeWTrc2TO\nyVty/ughTMD38v58LDvbH5A0haAnyRE5Ky/Ma0Sd/eii/Esuyg3uh/aobczWnJ/fzfNHD6HY9nws\nF+WK3D56yP43laAnyZNyXrblvLzAme+ssh25NF/LRfmaT+aP2cY8K7+WM/O8HD96CmV25dJcnK/n\n0qlcPDqloP/UOXlhnp6jc3S2ZEsWRs9hDVvOj/KD3Jwbck0umfTjUX95p+YFOTsn5Zgck81OluOX\ncltuzY7syPZc1PV41EcyvaD/1FNzZk7JaTkqm3JIZk5g4jFYl+XsyV35UbZne76Sm0cPqnFszsnT\nc3KOy+F5XBYSRyaP2izJntyb23JNrs7VvRen7eOfYKLHyyzrs5B12ZCjcmI2emQEj8GG3J/v58Yk\nS1nMkuismlkWsj4LSY7O8Tk0y/5tedTWZZZbc0t2ZTlLWZziz85Ugw4AVVwDCgAFBB0ACgg6ABQQ\ndAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAF\nBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANA\nAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgAUEDQAaCAoANAAUEHgAKCDgAFBB0ACgg6ABQQdAAoIOgA\nUEDQAaCAoANAAUEHgAKCDgAF/hffX0qNCAvCxwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNC0wNy0x\nNVQxMTozNzoyMyswMDowMK+WMIcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjQtMDctMTVUMTE6Mzc6\nMjMrMDA6MDDey4g7AAAAAElFTkSuQmCC"
}
)
);
};
var MuteSound = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var Increase10Seconds = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var FullSound = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var FullScreen = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = "#54efc45";
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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\noICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0\nACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUE\nHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0AB\nQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQ\nQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoA\nFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIO\nAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICg\nA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg\n6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAK\nCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeA\nAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNAB\noICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0\nACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUE\nHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0AB\nQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQ\nQNABoICgA0ABQQeAAoIOAAUEHQAKCDoAFBB0ACgg6ABQQNABoICgA0ABQQeAAoIOAAUEHQAKCDoA\n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\nMDA6MDDhgtT9AAAAAElFTkSuQmCC"
}
)
);
};
var Eye = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(Svg3, { width: width8, height }, /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C2.86854157 1.87875069 5.62286053 3.89305354 8.375 5.9375 C9.96603036 7.10302224 11.55717954 8.26838228 13.1484375 9.43359375 C13.9537793 10.02640137 14.75912109 10.61920898 15.58886719 11.22998047 C19.37578105 14.00996483 23.18848304 16.75390214 27 19.5 C28.49101865 20.57663843 29.98190357 21.65346208 31.47265625 22.73046875 C35.35063146 25.53127545 39.22921732 28.33123482 43.10839844 31.13037109 C44.64506456 32.24018552 46.18089095 33.3511637 47.71582031 34.46337891 C50.91595754 36.78152709 54.11827532 39.0926187 57.36328125 41.34765625 C69.66158716 49.98476148 69.66158716 49.98476148 72 57 C72.203125 59.05078125 72.203125 59.05078125 72.25 61.3125 C72.27578125 62.05113281 72.3015625 62.78976563 72.328125 63.55078125 C71.46260392 70.0112779 66.82859971 75.21432507 63.0625 80.3125 C61.88590244 81.92258087 60.71013988 83.53327221 59.53515625 85.14453125 C58.94234863 85.95615723 58.34954102 86.7677832 57.73876953 87.60400391 C55.12193729 91.20995612 52.55949346 94.85323509 50 98.5 C44.28306903 106.62852553 38.47174685 114.68667727 32.64111328 122.73388672 C29.92351837 126.48644785 27.21198061 130.24338045 24.5 134 C21.24130943 138.51391895 17.9813334 143.02687665 14.71484375 147.53515625 C9.43419578 154.82747964 4.1804866 162.1361012 -1 169.5 C-6.71791991 177.62784334 -12.52824095 185.68666044 -18.35888672 193.73388672 C-21.07648163 197.48644785 -23.78801939 201.24338045 -26.5 205 C-29.75869057 209.51391895 -33.0186666 214.02687665 -36.28515625 218.53515625 C-41.56580422 225.82747964 -46.8195134 233.1361012 -52 240.5 C-57.71791991 248.62784334 -63.52824095 256.68666044 -69.35888672 264.73388672 C-72.07648163 268.48644785 -74.78801939 272.24338045 -77.5 276 C-80.75869057 280.51391895 -84.0186666 285.02687665 -87.28515625 289.53515625 C-92.56580422 296.82747964 -97.8195134 304.1361012 -103 311.5 C-108.71791991 319.62784334 -114.52824095 327.68666044 -120.35888672 335.73388672 C-123.07648163 339.48644785 -125.78801939 343.24338045 -128.5 347 C-131.75869057 351.51391895 -135.0186666 356.02687665 -138.28515625 360.53515625 C-143.56580422 367.82747964 -148.8195134 375.1361012 -154 382.5 C-159.71791991 390.62784334 -165.52824095 398.68666044 -171.35888672 406.73388672 C-174.07648163 410.48644785 -176.78801939 414.24338045 -179.5 418 C-182.75869057 422.51391895 -186.0186666 427.02687665 -189.28515625 431.53515625 C-194.56580422 438.82747964 -199.8195134 446.1361012 -205 453.5 C-210.71370051 461.62184561 -216.51947472 469.67493568 -222.34570312 477.71630859 C-225.12918202 481.55879112 -227.90874599 485.4040997 -230.6875 489.25 C-231.23140381 490.00273193 -231.77530762 490.75546387 -232.33569336 491.53100586 C-235.97301042 496.56843408 -239.59122906 501.61907054 -243.1965332 506.67944336 C-246.5674928 511.40635742 -249.97022626 516.10990663 -253.375 520.8125 C-257.62242981 526.68131403 -261.83239752 532.57424407 -266 538.5 C-271.717802 546.62792476 -277.52824238 554.68666241 -283.35888672 562.73388672 C-286.07648163 566.48644785 -288.78801939 570.24338045 -291.5 574 C-294.75869057 578.51391895 -298.0186666 583.02687665 -301.28515625 587.53515625 C-306.56580422 594.82747964 -311.8195134 602.1361012 -317 609.5 C-322.71791991 617.62784334 -328.52824095 625.68666044 -334.35888672 633.73388672 C-337.07648163 637.48644785 -339.78801939 641.24338045 -342.5 645 C-345.75869057 649.51391895 -349.0186666 654.02687665 -352.28515625 658.53515625 C-357.56580422 665.82747964 -362.8195134 673.1361012 -368 680.5 C-373.71791991 688.62784334 -379.52824095 696.68666044 -385.35888672 704.73388672 C-388.07648163 708.48644785 -390.78801939 712.24338045 -393.5 716 C-396.75869057 720.51391895 -400.0186666 725.02687665 -403.28515625 729.53515625 C-408.56580422 736.82747964 -413.8195134 744.1361012 -419 751.5 C-424.71791991 759.62784334 -430.52824095 767.68666044 -436.35888672 775.73388672 C-438.53495938 778.73869279 -440.70701264 781.7463908 -442.87866211 784.75439453 C-443.95596675 786.24649633 -445.0336013 787.73835999 -446.11157227 789.22998047 C-448.89983674 793.08844956 -451.68371993 796.94997674 -454.4609375 800.81640625 C-457.17233203 804.5902703 -459.89795403 808.35346373 -462.6328125 812.11035156 C-463.81059145 813.73821033 -464.96963675 815.37959347 -466.125 817.0234375 C-469.64266544 821.87593134 -472.12203113 824.45316609 -478 826 C-487.94866267 827.10540696 -494.67289918 821.78406061 -502.375 816.0625 C-503.96603036 814.89697776 -505.55717954 813.73161772 -507.1484375 812.56640625 C-507.9537793 811.97359863 -508.75912109 811.38079102 -509.58886719 810.77001953 C-513.37578105 807.99003517 -517.18848304 805.24609786 -521 802.5 C-522.49101865 801.42336157 -523.98190357 800.34653792 -525.47265625 799.26953125 C-529.35063146 796.46872455 -533.22921732 793.66876518 -537.10839844 790.86962891 C-538.64506456 789.75981448 -540.18089095 788.6488363 -541.71582031 787.53662109 C-544.91595754 785.21847291 -548.11827532 782.9073813 -551.36328125 780.65234375 C-563.66158716 772.01523852 -563.66158716 772.01523852 -566 765 C-566.203125 762.94921875 -566.203125 762.94921875 -566.25 760.6875 C-566.27578125 759.94886719 -566.3015625 759.21023438 -566.328125 758.44921875 C-565.46260392 751.9887221 -560.82859971 746.78567493 -557.0625 741.6875 C-555.88590244 740.07741913 -554.71013988 738.46672779 -553.53515625 736.85546875 C-552.64594482 735.63802979 -552.64594482 735.63802979 -551.73876953 734.39599609 C-549.12193729 730.79004388 -546.55949346 727.14676491 -544 723.5 C-538.28306903 715.37147447 -532.47174685 707.31332273 -526.64111328 699.26611328 C-523.92351837 695.51355215 -521.21198061 691.75661955 -518.5 688 C-515.24130943 683.48608105 -511.9813334 678.97312335 -508.71484375 674.46484375 C-503.43419578 667.17252036 -498.1804866 659.8638988 -493 652.5 C-487.28208009 644.37215666 -481.47175905 636.31333956 -475.64111328 628.26611328 C-472.92351837 624.51355215 -470.21198061 620.75661955 -467.5 617 C-464.24130943 612.48608105 -460.9813334 607.97312335 -457.71484375 603.46484375 C-452.43419578 596.17252036 -447.1804866 588.8638988 -442 581.5 C-436.28208009 573.37215666 -430.47175905 565.31333956 -424.64111328 557.26611328 C-421.92351837 553.51355215 -419.21198061 549.75661955 -416.5 546 C-413.24130943 541.48608105 -409.9813334 536.97312335 -406.71484375 532.46484375 C-401.43419578 525.17252036 -396.1804866 517.8638988 -391 510.5 C-385.28208009 502.37215666 -379.47175905 494.31333956 -373.64111328 486.26611328 C-370.92351837 482.51355215 -368.21198061 478.75661955 -365.5 475 C-362.24130943 470.48608105 -358.9813334 465.97312335 -355.71484375 461.46484375 C-350.43419578 454.17252036 -345.1804866 446.8638988 -340 439.5 C-334.28208009 431.37215666 -328.47175905 423.31333956 -322.64111328 415.26611328 C-319.92351837 411.51355215 -317.21198061 407.75661955 -314.5 404 C-311.24130943 399.48608105 -307.9813334 394.97312335 -304.71484375 390.46484375 C-299.43419578 383.17252036 -294.1804866 375.8638988 -289 368.5 C-283.28629949 360.37815439 -277.48052528 352.32506432 -271.65429688 344.28369141 C-268.87081798 340.44120888 -266.09125401 336.5959003 -263.3125 332.75 C-262.76859619 331.99726807 -262.22469238 331.24453613 -261.66430664 330.46899414 C-258.02853373 325.43370447 -254.41223916 320.38494014 -250.80786133 315.32714844 C-246.83523893 309.75764846 -242.82520452 304.21536402 -238.81640625 298.671875 C-235.12737458 293.56799118 -231.45825648 288.45049271 -227.80419922 283.3215332 C-224.43293741 278.59433503 -221.03001243 273.89042306 -217.625 269.1875 C-213.37757019 263.31868597 -209.16760248 257.42575593 -205 251.5 C-199.282198 243.37207524 -193.47175762 235.31333759 -187.64111328 227.26611328 C-184.92351837 223.51355215 -182.21198061 219.75661955 -179.5 216 C-176.24130943 211.48608105 -172.9813334 206.97312335 -169.71484375 202.46484375 C-164.43419578 195.17252036 -159.1804866 187.8638988 -154 180.5 C-148.28208009 172.37215666 -142.47175905 164.31333956 -136.64111328 156.26611328 C-133.92351837 152.51355215 -131.21198061 148.75661955 -128.5 145 C-125.24130943 140.48608105 -121.9813334 135.97312335 -118.71484375 131.46484375 C-113.43419578 124.17252036 -108.1804866 116.8638988 -103 109.5 C-97.28208009 101.37215666 -91.47175905 93.31333956 -85.64111328 85.26611328 C-82.92351837 81.51355215 -80.21198061 77.75661955 -77.5 74 C-74.24130943 69.48608105 -70.9813334 64.97312335 -67.71484375 60.46484375 C-62.43419429 53.1725183 -57.18061353 45.86381112 -52 38.5 C-46.22729138 30.29697913 -40.38146338 22.1496787 -34.47363281 14.04345703 C-33.11321772 12.15699673 -31.78254936 10.25359266 -30.4609375 8.33984375 C-21.88702118 -3.78443998 -13.22902739 -7.59577126 0 0 Z ",
fill: strokeColor,
transform: "translate(747,89)"
}
), /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C2.29954192 0.00481802 4.59906256 0.0058411 6.89860916 0.00624466 C29.97671982 0.02081866 52.9570111 0.50534847 75.89174271 3.3172493 C77.1402803 3.45654861 78.3888179 3.59584793 79.67518997 3.73936844 C82.89174271 4.3172493 82.89174271 4.3172493 84.89174271 6.3172493 C85.38701288 10.32624376 84.60032466 12.33560435 82.22377396 15.53209305 C81.37782669 16.68548172 81.37782669 16.68548172 80.51478958 17.86217117 C79.91730911 18.65172195 79.31982864 19.44127274 78.70424271 20.2547493 C77.83702591 21.43327469 77.83702591 21.43327469 76.95228958 22.63560867 C75.81419719 24.17235489 74.66098178 25.69803367 73.49184036 27.21129227 C71.89896512 29.25448222 71.89896512 29.25448222 70.6314888 31.25523758 C69.46596146 32.94615555 69.46596146 32.94615555 66.89174271 35.3172493 C63.79511954 35.3404078 61.81643847 35.07562088 58.89174271 34.3172493 C58.08478958 34.13823074 57.27783646 33.95921219 56.44643021 33.77476883 C52.86136161 32.97259619 49.29407663 32.10268664 45.72768021 31.22154617 C31.73509656 27.90279236 17.84070272 26.90409267 3.51674271 26.9422493 C2.73926682 26.94279312 1.96179092 26.94333694 1.16075516 26.94389725 C-40.04288262 27.07530148 -81.68116333 39.81670884 -115.10825729 64.3172493 C-116.16013229 65.08553055 -117.21200729 65.8538118 -118.29575729 66.6453743 C-125.48492101 71.99312548 -132.1989999 77.76516945 -138.67612839 83.9525032 C-140.05524782 85.26673396 -141.45060942 86.56385591 -142.84653854 87.86021805 C-177.4758564 120.98609229 -200.07779379 171.90146392 -201.37235641 219.72029495 C-201.43477653 223.46139955 -201.43881569 227.20074698 -201.42075729 230.9422493 C-201.41893448 231.72994705 -201.41711166 232.51764481 -201.41523361 233.32921219 C-201.36654392 245.86355702 -200.73715557 258.02426446 -198.10825729 270.3172493 C-197.93665085 271.13467606 -197.7650444 271.95210281 -197.58823776 272.79430008 C-191.33298186 301.72276238 -179.45195876 326.8016971 -163.10825729 351.3172493 C-163.1925389 357.64603164 -165.61274196 360.99223971 -169.42075729 365.6922493 C-170.52454877 367.10717996 -171.62604354 368.52390474 -172.72544479 369.9422493 C-173.2897319 370.66541336 -173.85401901 371.38857742 -174.43540573 372.13365555 C-177.07620209 375.58071956 -179.56194545 379.13122131 -182.04575729 382.6922493 C-186.762396 389.42487692 -191.54549155 396.10563257 -196.36899948 402.76207352 C-198.9531726 406.32961149 -201.52999342 409.90161475 -204.08091354 413.49303055 C-204.77096481 414.46429886 -204.77096481 414.46429886 -205.47495651 415.45518875 C-206.33110601 416.66218547 -207.18569712 417.87028969 -208.03843307 419.07970047 C-209.62696586 421.31876557 -211.16261599 423.37160799 -213.10825729 425.3172493 C-221.79396434 425.28028884 -229.43476896 421.78262403 -237.35825729 418.5672493 C-238.82639338 417.97924817 -240.29457445 417.39135934 -241.76279831 416.80357742 C-288.59649583 397.9433164 -333.98534351 374.75411811 -375.10825729 345.3172493 C-375.83448288 344.8006575 -376.56070847 344.2840657 -377.30894089 343.75181961 C-402.09298429 326.10503612 -425.91793254 307.15149865 -448.10825729 286.3172493 C-448.99513229 285.50771805 -449.88200729 284.6981868 -450.79575729 283.8641243 C-465.5328834 269.93574292 -472.60612193 251.66158816 -473.42075729 231.5672493 C-472.70073677 205.47709383 -460.41086884 187.62468926 -442.02671432 170.09703445 C-438.683851 166.99580339 -435.18982722 164.13164453 -431.60435104 161.31334305 C-429.06625466 159.28366034 -426.684417 157.14508134 -424.29575729 154.9422493 C-418.16977663 149.38189126 -411.67466119 144.33898336 -405.10825729 139.3172493 C-404.37848679 138.75763504 -403.64871628 138.19802078 -402.89683151 137.62144852 C-327.45956657 79.93785803 -241.37990091 38.69505499 -79.48325729 4.5047493 C-78.70945724 4.4051088 -77.9356572 4.30546829 -77.13840866 4.20280838 C-51.47300481 0.94707767 -25.84083846 -0.06097409 0 0 Z ",
fill: strokeColor,
transform: "translate(497.1082572937012,268.6827507019043)"
}
), /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C8.68578735 0.0369608 16.32639612 3.53477121 24.25 6.75 C25.71666744 7.33727823 27.18338372 7.9244345 28.65014648 8.51147461 C59.4743506 20.92202193 89.28953296 35.25822819 118 52 C118.86077148 52.49999512 119.72154297 52.99999023 120.60839844 53.51513672 C161.72920828 77.49041858 200.29773103 106.41842524 235 139 C235.886875 139.80953125 236.77375 140.6190625 237.6875 141.453125 C252.42462611 155.38150638 259.49786464 173.65566114 260.3125 193.75 C259.81767681 211.68006374 254.25043247 226.9938948 243 241 C242.33226562 241.86238281 241.66453125 242.72476563 240.9765625 243.61328125 C239.24590957 245.70306177 237.57169119 247.38950431 235.5 249.125 C232.51133973 251.67561916 229.59287253 254.28344515 226.71411133 256.95776367 C221.64485731 261.6638279 216.47524274 266.1716396 211.08203125 270.5078125 C208.76835882 272.37869084 206.47813421 274.26731879 204.19921875 276.1796875 C193.77838213 284.90321894 183.04596797 293.08522447 172 301 C170.77144287 301.88220215 170.77144287 301.88220215 169.51806641 302.78222656 C143.26630545 321.56939651 115.56381256 337.98507404 87 353 C86.1037793 353.47147461 85.20755859 353.94294922 84.28417969 354.42871094 C16.63734337 389.74341726 -58.10665626 411.19551346 -133.625 420.8125 C-134.78570007 420.96196075 -134.78570007 420.96196075 -135.96984863 421.11444092 C-161.63525249 424.37017163 -187.26741883 425.37822339 -213.10825729 425.3172493 C-215.40779922 425.31243128 -217.70731985 425.3114082 -220.00686646 425.31100464 C-243.08497711 425.29643064 -266.06526839 424.81190083 -289 422 C-290.2485376 421.86070068 -291.4970752 421.72140137 -292.78344727 421.57788086 C-296 421 -296 421 -298 419 C-298.49527017 414.99100553 -297.70858195 412.98164495 -295.33203125 409.78515625 C-294.76806641 409.01623047 -294.20410156 408.24730469 -293.62304688 407.45507812 C-293.02556641 406.66552734 -292.42808594 405.87597656 -291.8125 405.0625 C-291.23435547 404.27681641 -290.65621094 403.49113281 -290.06054688 402.68164062 C-288.92245448 401.1448944 -287.76923907 399.61921563 -286.60009766 398.10595703 C-285.00722241 396.06276707 -285.00722241 396.06276707 -283.73974609 394.06201172 C-282.57421875 392.37109375 -282.57421875 392.37109375 -280 390 C-276.90337684 389.97684149 -274.92469576 390.24162841 -272 391 C-270.78957031 391.26852783 -270.78957031 391.26852783 -269.5546875 391.54248047 C-265.9696189 392.34465311 -262.40233392 393.21456266 -258.8359375 394.09570312 C-244.84335385 397.41445694 -230.94896001 398.41315663 -216.625 398.375 C-215.84752411 398.37445618 -215.07004822 398.37391235 -214.26901245 398.37335205 C-173.06537467 398.24194782 -131.42709396 385.50054046 -98 361 C-96.948125 360.23171875 -95.89625 359.4634375 -94.8125 358.671875 C-87.62333628 353.32412382 -80.90925739 347.55207985 -74.43212891 341.36474609 C-73.05300947 340.05051533 -71.65764787 338.75339339 -70.26171875 337.45703125 C-62.1751205 329.72151541 -55.50630144 321.07922027 -49 312 C-48.52030762 311.33258789 -48.04061523 310.66517578 -47.54638672 309.97753906 C-28.80786897 283.50076828 -18.09638657 252.83617613 -13 221 C-12.83201904 219.95416748 -12.83201904 219.95416748 -12.66064453 218.88720703 C-9.89484065 198.37292905 -10.69508133 175.19183769 -15 155 C-15.18804199 154.07960938 -15.37608398 153.15921875 -15.56982422 152.2109375 C-21.24442573 125.12453411 -32.10292419 99.64475547 -48 77 C-50 74 -50 74 -49.95703125 70.7734375 C-48.76566992 66.07606999 -46.69635856 63.33865734 -43.6875 59.625 C-42.58370852 58.21006934 -41.48221375 56.79334455 -40.3828125 55.375 C-39.81852539 54.65183594 -39.25423828 53.92867188 -38.67285156 53.18359375 C-36.03205521 49.73652974 -33.54631184 46.18602799 -31.0625 42.625 C-26.3458613 35.89237237 -21.56276575 29.21161673 -16.73925781 22.55517578 C-14.15508469 18.98763781 -11.57826388 15.41563455 -9.02734375 11.82421875 C-8.33729248 10.85295044 -8.33729248 10.85295044 -7.63330078 9.86206055 C-6.77715128 8.65506383 -5.92256017 7.4469596 -5.06982422 6.23754883 C-3.48129143 3.99848373 -1.94564131 1.94564131 0 0 Z ",
fill: strokeColor,
transform: "translate(716,306)"
}
), /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C3.51572409 1.20049115 3.89927592 2.5702084 5.5625 5.875 C16.79196316 36.99700367 14.39199749 72.19496319 0.57373047 102.00830078 C-4.32708326 112.23300361 -10.11398773 121.23502555 -17.4375 129.875 C-17.86256836 130.38369629 -18.28763672 130.89239258 -18.72558594 131.41650391 C-39.53830021 156.12083556 -70.04945686 170.89185288 -102 174.25 C-102.79615723 174.33475586 -103.59231445 174.41951172 -104.41259766 174.50683594 C-110.08566828 175.00138099 -115.84213898 175.06453872 -121.4375 173.875 C-123.4375 171.875 -123.4375 171.875 -123.890625 169.20703125 C-123.26106246 164.57757569 -121.08117774 162.12319948 -118.1875 158.5625 C-117.07457534 157.13847245 -115.96396603 155.71263288 -114.85546875 154.28515625 C-114.28489746 153.55570801 -113.71432617 152.82625977 -113.12646484 152.07470703 C-110.47719866 148.62430398 -107.98754911 145.06788226 -105.5 141.5 C-101.37580022 135.6144584 -97.2129913 129.75985649 -93 123.9375 C-92.46068848 123.19201904 -91.92137695 122.44653809 -91.36572266 121.6784668 C-89.17562663 118.65297668 -86.98377414 115.62876105 -84.79199219 112.60449219 C-78.96287139 104.55871227 -73.15422884 96.50115028 -67.4375 88.375 C-61.71958009 80.24715666 -55.90925905 72.18833956 -50.07861328 64.14111328 C-47.36101837 60.38855215 -44.64948061 56.63161955 -41.9375 52.875 C-38.67880943 48.36108105 -35.4188334 43.84812335 -32.15234375 39.33984375 C-26.23499118 31.16796842 -20.35515834 22.9730357 -14.57006836 14.70678711 C-12.15227507 11.26142097 -9.70615922 7.83796676 -7.21484375 4.4453125 C-6.73136475 3.78547363 -6.24788574 3.12563477 -5.74975586 2.44580078 C-3.87186542 0.19792226 -2.93555876 -0.15054147 0 0 Z ",
fill: strokeColor,
transform: "translate(614.4375,452.125)"
}
), /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C2 3 2 3 1.984375 5.671875 C0.62600276 10.26446685 -1.87486984 13.46697744 -4.75 17.25 C-5.94166526 18.85788099 -7.13306411 20.46595945 -8.32421875 22.07421875 C-9.24146729 23.30084229 -9.24146729 23.30084229 -10.17724609 24.55224609 C-13.01269349 28.35993368 -15.78758203 32.21059749 -18.5625 36.0625 C-19.10036133 36.80661133 -19.63822266 37.55072266 -20.19238281 38.31738281 C-23.82948448 43.35421092 -27.42533121 48.41872073 -31 53.5 C-36.71791991 61.62784334 -42.52824095 69.68666044 -48.35888672 77.73388672 C-51.07648163 81.48644785 -53.78801939 85.24338045 -56.5 89 C-59.75869057 93.51391895 -63.0186666 98.02687665 -66.28515625 102.53515625 C-71.56580422 109.82747964 -76.8195134 117.1361012 -82 124.5 C-87.70342454 132.60723863 -93.49891504 140.64565784 -99.31494141 148.67236328 C-101.08094577 151.11181353 -102.84364663 153.5536215 -104.60546875 155.99609375 C-105.19465088 156.81279541 -105.78383301 157.62949707 -106.39086914 158.47094727 C-107.51915051 160.03510137 -108.64725252 161.59938488 -109.77514648 163.16381836 C-110.54000366 164.22354858 -110.54000366 164.22354858 -111.3203125 165.3046875 C-111.76648926 165.92327637 -112.21266602 166.54186523 -112.67236328 167.17919922 C-113.1104834 167.78006348 -113.54860352 168.38092773 -114 169 C-114.47808105 169.72461426 -114.95616211 170.44922852 -115.44873047 171.19580078 C-117 173 -117 173 -120.5 173.5625 C-124 173 -124 173 -125.55859375 171 C-138.07852865 144.94224932 -136.17620094 110.56153042 -127.03295898 83.84790039 C-121.66665851 69.15285664 -114.10155864 55.91739773 -104 44 C-103.36239746 43.23695557 -103.36239746 43.23695557 -102.71191406 42.45849609 C-81.89919979 17.75416444 -51.38804314 2.98314712 -19.4375 -0.375 C-18.64134277 -0.45975586 -17.84518555 -0.54451172 -17.02490234 -0.63183594 C-11.42969884 -1.11959299 -5.47370478 -1.42429695 0 0 Z ",
fill: strokeColor,
transform: "translate(507,374)"
}
));
};
var Expand = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(Svg3, { width: width8, height }, /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C0.61875 0.33 1.2375 0.66 1.875 1 C3.91018344 2.14193235 3.91018344 2.14193235 6 2 C6.66 1.67 7.32 1.34 8 1 C8 3.31 8 5.62 8 8 C5.69 8 3.38 8 1 8 C1.66 7.01 2.32 6.02 3 5 C2.2575 4.319375 2.2575 4.319375 1.5 3.625 C0 2 0 2 0 0 Z ",
fill: strokeColor,
transform: "translate(9,9)"
}
), /* @__PURE__ */ React11.createElement(
Path3,
{
d: "M0 0 C2.31 0 4.62 0 7 0 C6.01 1.485 6.01 1.485 5 3 C5.495 3.45375 5.99 3.9075 6.5 4.375 C8 6 8 6 8 8 C7.38125 7.67 6.7625 7.34 6.125 7 C4.08981656 5.85806765 4.08981656 5.85806765 2 6 C1.01 6.495 1.01 6.495 0 7 C0 4.69 0 2.38 0 0 Z ",
fill: strokeColor,
transform: "translate(0,0)"
}
));
};
var ExitFullScreen = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAQAAADnqhxvAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAAmJLR0QA/4ePzL8AAAAJcEhZ\ncwAACxMAAAsTAQCanBgAAAAHdElNRQfoBw8LIARCPPBTAAAe5ElEQVR42u3d38/e9X3f8bdrx9km\n4L4bCBsYEJbaLi1x1QYSBuKHTeDA0iYVMkAyB+1BK7SsmdatPooWkWzpQcjCGpbkIEc9SCMZxZ62\nSRZSwy8TuUlIQ2ZIq2UNK+HHcGJqG0sBgvEO7iaFCG7ftu/78/5er+vx+AP4vO7ok+vp63v/uNad\nKABg1v1C9wAA4MwJOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA\n0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAE\nEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4A\nAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKAD\nQIAN3QOIsVBX1RV1WW2uTbVYZ636f/9YHa7n6vv1ZD1W++tI95dLOPeZmbPuRPcCZt9FdXvdUlfW\n+mEnHq+v1+66r57u/tIJ5D4zowSdM3Nd7aztA1/63uh47a1P18Pd/xMQxH1mhgk6p29rfaKu7R5R\n++pj9VD3CAK4z8w4Qef0XFB31x3dI37mS7Wznu8ewQxznwkg6JyOW+uLtdA94k2O1O/Vfd0jmFHu\nMxH82hqnamPdW7sm9vJXtVC76t56Z/cMZo77TAzv0Dk1Z9ee+mD3iLf1SN1cL3aPYIa4zwQRdE7F\nu2tvXd49YlnfqZvqh90jmBHuM1EEnZVbqAfqfd0jTurbtc2f6WAF3GfC+B46K7Wxds/Ay1/Vb9bu\n2tg9gslzn4kj6KzUPXVD94QVuqHu6Z7A5LnPxPHInZW5tXZ1Tzglt8/YXsZynwkk6KzEpnqiFrtH\nnJLDtaWe6R7BRLnPRPLInZW4d8Ze/qoW67PdE5gs95lI3qFzctvqge4Jp+XG+mr3BCbIfSaUoHNy\n++qa7gmn5dEJfNQG0+M+E8ojd07muhl9+au6pq7rnsDkuM/EEnROZmf3gDndztqY5Tsxy9sZwCN3\nlnd+PVsbukecttdqUx3sHsGEuM8E8w6d5e2Y4Ze/qg21o3sCk+I+E0zQWd6HugfM+X5W16zfh1nf\nz5ryyJ3lLNShWt894owcr3N9tAV/x30mmnfoLOfqGX/5q1pfV3dPYDLcZ6IJOsuZhU+jOpkrugcw\nGe4z0QSd5WzpHrAKLusewGS4z0QTdJazuXuAr4FVlHAXEr4G1oigs5wLuwesgk3dA5gM95logs5y\nFrsHrIJzugcwGYvdA1aB+8zb8mtrLCfjeqzrHsBEuM9E8w4dAAIIOgAEEHQACCDoABBA0AEggKAD\nQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDo\nABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAII\nOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AA\ngg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEg\ngKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQA\nCCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQd\nAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABB\nB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA\n0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAE\nEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4A\nAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKAD\n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\ngg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEg\ngKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQA\nCCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQd\nAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABB\nB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA\n0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAE\nEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4A\nAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKAD\nQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDo\nABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAII\nOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AA\ngg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEg\ngKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQA\nCCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQd\nAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABB\nB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA\n0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAE\nEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4A\nAQQdAAIIOgAEEHQACCDoABBA0AEggKADQABBB4AAgg4AAQQdAAIIOgAE2NA9YBkLdVVdUZfV5tpU\ni3VW9xyanajX6+U6VN+rh+pP6gfdcwh3cf12ba1frnfVP6xfqHXdc2h2rA7Xc/X9erIeq/11pHvO\nW1t3onvBW7mobq9b6spa3z2EyXqpHqo/qj/vnkGg99d/qK11dvcMJut4fb121331dPeQnze9oF9X\nO2u7lLMiL9Qf1We7RxDkI/XR+sfdI5gJx2tvfboe7p7xRtMK+tb6RF3bPYIZc6Tuqv/SPYIA/7bu\nqoXuEcyYffWxeqh7xE9NJ+gX1N11R/cIZtT/rZvr8e4RzLDfqD11afcIZtSXamc93z2iajo/5X5r\n/aWcc9ourb+oz3SPYGZ9pv5Czjltd9Rf1q3dI6qm8Q59Y/3n+v3uEQT4X3VtHe0ewYw5q75Wv949\nggD/tf6wXumd0B/0s2tPfbB7BCGO1OX1190jmCEX1BP1ru4RhHikbq4XOwd0B/3dtbcu751AlB/X\n++qvukcwI95T36p/1D2CIN+pm+qHfcf3Bn2hHqj3dQ4g0I/rn/qzM6zAxfVXcs4q+3Zt6/uzM51B\n31h764a+44n1t3VJHesewcSdVU/XL3aPINADtb1e7Tm686fc75Fz1sQv1v7uCUzefjlnTdxQ93Qd\n3Rf0W+vDbWeT7r19/5diJnym3ts9gVgfrtt6Du565L6pnqjFnqOZCyfqyvpm9wgm6vL6po9bYQ0d\nri31zPhju96h3yvnrKl19d+6JzBZ/13OWVOLPZ8x0RP0bXVzy7nMkwvrD7snMEl/UBd2TyDezR1/\nX6Xnkfu+uqbjWObMUR+1wVs4Uud0T2AOPDr+o8Y63qFfJ+cMcU59pHsCk/MROWeIa+q60Ud2vEP/\nH/XPxx/KXHqh/kn3BCbm//m8cwb5n/Uvxh44Pujn17O1YfShzK3L6rvdE5iQX6snuycwN16rTXVw\n5IHjH7nvkHMG+mT3ACbFfWCcDbVj7IHjg/6h4Scyz/w1Qt7IfWCkwb0b/ch9oQ7V+rFHMucu8VEt\n/J2L6+nuCcyV43XuyI9qGf0O/Wo5Z7Df6R7AZPxO9wDmzPq6euRxo4Puw1IZbWv3ACZj+K8RMfeu\nGHnY6KBvGXwe/FL3ACbjV7oHMHcuG3nY6KBvHnwenNs9gMlwFxhtaPNGB93fUGa0f9A9gMlwFxht\n08jDRgd9cfB50PWJgkyPu8BoQ//Q8OhfW2v6+HXmmo/KZInXH8Yb+PrjX6wAEEDQASCAoANAAEEH\ngACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQ\nASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQ\ndAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdABYG6+OPGx00I8NPg8Augxt3uigHx58\nHgB0eWnkYaOD/tzg8wCgywsjDxsd9KcGnwcAXYY2b3TQnxh8HgB0eXLkYaOD/q3B5wFAl8dGHrbu\nxNgvbqEO1fqxRzL31nUPYCIGv9wx947XeSN/FHz0O/QjtX/wiQDQYf/Y3+wa/4dlvjL8RAAYb3Dv\nRj9yrzq/nq0Now9lrnnkzhKP3BnptdpUB0ceOP4d+sG6f/iZADDW/WNz3vO33D/VcCYAjDS8dR1B\nf6QebTgVAEZ5tB4ZfWTPp63d1XIqAIzx8fFH9gT9q7Wn5VwAWHt76s/GHzr+p9yXXFQHarHnaOaO\nn3JniZ9yZ4zDtaWeGX9szzv0qmfqzqaTAWAt3dmR876gV+2qL7SdDQBr4wu1q+fgrkfuVVUb6/7a\n2nc8c8Mjd5Z45M7ae6Ruqld7ju4MetW59WBt6RzAXBB0lgg6a+1AbatDXYf3PXKvqjpUN9bjrQsA\nYHUcqBv7ct4d9KqDdX092LwBAM7Uvto6+o+9vll30KuO1vb6XPcIADgDn6+b6sXeCb3fQ/97t9YX\na6F7BKF8D50lE3m5I87R+t26r3vEFN6hL7mvfrX+tHsEAJyiL9d7ppDz6QS96vm6o7b52BYAZsbX\n6obaUc93z1gylUfuf+/62lnbJ/QPDWafR+4smdzLHTPs9dpbd9fD3TPeaHpBr6q6pG6rW+oDtb57\nCBEEnSWTfLlj5hyvb9Tu2lVPdw/5edMM+pKFuqquqC21uc6rxTqr3tE9iBkl6CyZ8Msdk/aTOlaH\n60f1VB2ox2p/Heke9NamHHT6ZVwPQWeJ+0w036sGgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCA\noANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAI\nIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0A\nAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEH\ngACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQ\nASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQ\ndAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgAB\nBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANA\nAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgA\nEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6\nAAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACC\nDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCA\noANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAI\nIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCTrpXuwfA\nKnKfeVuCznKOdQ/wNbCKEu5CwtfAGhF0lnO4e8AqeKl7AJNxuHvAKnCfeVuCznKe6x6wCl7oHsBk\nuM9EE3SW81T3AF8DqyjhLiR8DawRQWc5T3QPWAVPdg9gMtxnogk6y/lW94BV8Fj3ACbDfSbauhPd\nC5iyhTpU67tHnJHjdV7Ej0KxGtxnonmHznKO1P7uCWdov5c/fsZ9Jpqgs7yvdA+Y8/2srlm/D7O+\nnzXlkTvLO7+erQ3dI07ba7WpDnaPYELcZ4J5h87yDtb93RPOwP1e/ngT95lggs7JfKp7wJxuZ23M\n8p2Y5e0M4JE7J7evrumecFoerWu7JzBB7jOhvEPn5O7qHnCaPt49gEm6q3vAaXKfOQlB5+S+Wnu6\nJ5yGPfVn3ROYJPeZUB65sxIX1YFa7B5xSg7XlnqmewQT5T4TyTt0VuKZurN7wim608sfb8t9JpKg\nszK76gvdE07BF2pX9wQmzX0mkEfurNTGur+2do9YkUfqpnq1ewQT5z4TR9BZuXPrwdrSPeKkDtS2\nOtQ9ghngPhPGI3dW7lDdWI93jziJA3Wjlz9WxH0mjKBzKg7W9fVg94hl7Kut/jgmK+Y+E0XQOTVH\na3t9rnvE2/h83VQvdo9gprjPBPE9dE7HrfXFWuge8SZH63frvu4RzCj3mQjeoXM67qtfrT/tHvEG\nX673ePnjtLnPRBB0Ts/zdUdtq0e7Z1TV1+qG2lHPd89gprnPBPDInTNzfe2s7U3/MHy99tbd9XD3\n/wQEcZ+ZYYLOmbukbqtb6gO1ftiJx+sbtbt21dPdXzqB3GdmlKCzWhbqqrqittTmOq8W66x6x6r+\n139Sx+pw/aieqgP1WO2vI91fLuHcZ2aOoANAAD8UBwABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANA\nAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgA\nEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6\nAAQQdAAIIOgAEEDQASCAoANAAEEHgACCDgABBB0AAgg6AAQQdAAIIOgAEEDQASCAoANAAEEHgACC\nDgABBB0AAgg6AAQQdAAIIOgAEOD/A+bVXzYHtskmAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI0LTA3\nLTE1VDExOjMyOjA0KzAwOjAwzj3CMAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNC0wNy0xNVQxMToz\nMjowNCswMDowML9geowAAAAASUVORK5CYII="
}
)
);
};
var Error2 = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
width: width8,
height,
viewBox: "0 0 1000.000000 1000.000000",
preserveAspectRatio: "xMidYMid meet"
},
/* @__PURE__ */ React11.createElement(
G3,
{
transform: "translate(0.000000,1000.000000) scale(0.100000,-0.100000)",
fill: strokeColor,
stroke: "none"
},
/* @__PURE__ */ React11.createElement(
Path3,
{
d: "M4868 8720 c-58 -10 -205 -58 -210 -68 -2 -4 -28 -19 -58 -33 -60\n -29 -80 -45 -202 -165 -94 -92 -128 -130 -128 -144 0 -6 -5 -10 -10 -10 -6 0\n -14 -8 -17 -17 -4 -10 -16 -31 -29 -48 -12 -16 -37 -58 -55 -91 -19 -34 -52\n -93 -74 -130 -22 -38 -45 -80 -51 -94 -7 -14 -24 -40 -38 -59 -14 -19 -26 -38\n -26 -42 0 -4 -22 -44 -50 -88 -27 -44 -50 -83 -50 -86 0 -3 -22 -43 -48 -88\n -150 -254 -182 -309 -182 -316 0 -4 -7 -16 -16 -26 -18 -23 -62 -99 -96 -165\n -13 -25 -26 -46 -30 -48 -5 -2 -8 -8 -8 -14 0 -6 -17 -38 -38 -72 -22 -34 -54\n -88 -72 -121 -18 -33 -36 -62 -39 -65 -3 -3 -15 -23 -27 -45 -39 -74 -59 -110\n -65 -115 -3 -3 -14 -21 -24 -40 -14 -28 -70 -125 -125 -220 -15 -26 -82 -143\n -103 -180 -11 -19 -28 -46 -38 -59 -11 -13 -19 -28 -19 -32 0 -5 -25 -49 -55\n -98 -30 -49 -55 -92 -55 -96 0 -4 -8 -19 -19 -33 -10 -15 -34 -58 -54 -95 -19\n -37 -40 -73 -45 -80 -9 -12 -98 -165 -150 -257 -14 -25 -32 -56 -41 -70 -9\n -14 -23 -38 -31 -55 -8 -16 -18 -32 -21 -35 -3 -3 -12 -17 -20 -32 -36 -68\n -142 -254 -148 -258 -3 -3 -13 -19 -22 -35 -8 -17 -42 -75 -74 -130 -32 -55\n -68 -118 -79 -140 -12 -22 -24 -42 -27 -45 -4 -3 -15 -22 -25 -42 -11 -20 -35\n -63 -54 -95 -19 -32 -34 -61 -32 -65 1 -5 -3 -8 -8 -8 -6 0 -10 -4 -10 -8 0\n -7 -28 -56 -124 -215 -11 -18 -31 -53 -45 -80 -14 -26 -68 -119 -118 -207 -51\n -88 -93 -164 -93 -168 0 -4 -11 -20 -25 -36 -14 -16 -25 -33 -25 -38 0 -5 -11\n -26 -24 -47 -14 -21 -22 -42 -19 -45 4 -3 1 -6 -5 -6 -6 0 -17 -12 -25 -28\n -33 -62 -66 -121 -89 -158 -14 -22 -34 -57 -45 -79 -11 -22 -41 -74 -67 -116\n -25 -42 -46 -81 -46 -86 0 -6 -14 -27 -30 -48 -16 -21 -30 -42 -30 -47 0 -5\n -18 -37 -40 -70 -22 -34 -40 -68 -40 -75 0 -7 -4 -13 -9 -13 -5 0 -14 -15 -21\n -32 -8 -18 -19 -40 -26 -48 -20 -25 -69 -123 -84 -167 -7 -24 -16 -43 -20 -43\n -7 0 -35 -85 -56 -170 -21 -82 -29 -282 -15 -368 12 -77 37 -158 64 -208 9\n -16 21 -41 28 -56 6 -16 15 -28 20 -28 5 0 9 -7 9 -15 0 -23 155 -185 178\n -185 6 0 12 -4 12 -9 0 -11 104 -81 120 -81 6 0 38 -14 72 -30 72 -36 181 -65\n 298 -79 118 -15 6592 -15 6710 0 117 14 226 43 298 79 34 16 66 30 72 30 16 0\n 120 70 120 81 0 5 6 9 13 9 26 0 166 151 198 215 13 25 34 65 46 88 43 83 58\n 171 58 332 0 175 -21 282 -80 410 -13 28 -31 68 -41 90 -9 22 -29 58 -43 80\n -15 22 -33 55 -40 73 -7 17 -17 32 -22 32 -5 0 -9 6 -9 13 0 7 -20 44 -45 82\n -25 39 -45 75 -45 81 0 6 -7 17 -15 24 -8 7 -29 42 -47 79 -18 36 -47 87 -65\n 112 -18 26 -33 50 -33 53 0 4 -19 40 -42 79 -40 67 -59 103 -95 169 -8 16 -19\n 28 -25 28 -6 0 -9 3 -5 6 3 3 -5 24 -19 45 -13 21 -24 42 -24 47 0 5 -11 22\n -25 38 -14 16 -25 32 -25 36 0 4 -42 80 -92 168 -51 88 -105 181 -119 207 -14\n 27 -34 62 -45 80 -96 159 -124 208 -124 215 0 4 -4 8 -10 8 -5 0 -9 3 -8 8 2\n 4 -13 33 -32 65 -19 32 -43 75 -54 95 -10 20 -21 39 -25 42 -3 3 -15 23 -27\n 45 -11 22 -47 85 -79 140 -32 55 -66 113 -74 130 -9 16 -19 32 -22 35 -6 4\n -112 190 -148 258 -8 15 -17 29 -20 32 -3 3 -13 19 -21 35 -13 26 -31 58 -87\n 150 -33 56 -142 245 -171 299 -19 34 -44 78 -58 98 -13 21 -24 40 -24 44 0 3\n -25 46 -55 95 -30 49 -55 93 -55 98 0 4 -8 19 -19 32 -10 13 -27 40 -38 59\n -21 37 -88 154 -103 180 -55 95 -111 192 -125 220 -10 19 -21 37 -24 40 -6 5\n -26 41 -65 115 -12 22 -24 42 -27 45 -3 3 -21 32 -39 65 -18 33 -50 87 -72\n 121 -21 34 -38 66 -38 73 0 6 -5 11 -12 11 -6 0 -9 3 -5 6 3 3 -8 27 -23 52\n -16 26 -41 70 -56 97 -15 28 -30 52 -34 55 -3 3 -13 19 -22 35 -8 17 -57 102\n -108 190 -51 88 -107 185 -123 215 -16 30 -45 79 -63 108 -19 29 -34 56 -34\n 60 0 5 -12 24 -26 43 -14 19 -31 45 -38 59 -6 14 -29 56 -51 94 -22 37 -55 96\n -74 130 -18 33 -43 75 -55 91 -13 17 -25 38 -29 48 -3 9 -11 17 -17 17 -5 0\n -10 4 -10 10 0 14 -34 52 -128 144 -122 120 -142 136 -202 165 -30 14 -56 29\n -58 33 -2 4 -47 22 -100 39 -82 26 -116 32 -217 34 -66 2 -141 0 -167 -5z\n m209 -2060 c162 -26 278 -125 339 -287 31 -82 31 -83 -19 -763 -19 -267 -38\n -537 -42 -600 -3 -63 -10 -124 -15 -135 -8 -20 -15 -110 -65 -920 -14 -220\n -30 -416 -35 -435 -5 -19 -11 -46 -14 -60 -19 -87 -98 -135 -222 -135 -72 0\n -86 3 -129 30 -64 40 -95 97 -95 176 0 32 -4 68 -10 81 -5 13 -19 178 -30 368\n -32 517 -66 983 -72 1000 -7 17 -90 1186 -91 1265 -1 133 61 243 197 353 42\n 34 123 58 231 71 6 0 38 -4 72 -9z m110 -3680 c64 -29 186 -127 177 -141 -2\n -4 2 -11 9 -16 8 -4 27 -42 42 -83 24 -62 29 -90 29 -163 -1 -53 -5 -92 -12\n -99 -7 -7 -12 -21 -12 -31 0 -69 -110 -195 -215 -248 -67 -34 -70 -34 -199\n -34 -128 0 -133 1 -199 33 -105 52 -217 180 -217 249 0 10 -5 24 -11 30 -7 7\n -12 48 -12 100 0 134 42 237 134 324 95 90 187 121 334 114 72 -4 102 -11 152\n -35z"
}
)
)
);
};
var Dot = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
width: width8,
height,
viewBox: "0 0 1000.000000 1000.000000",
preserveAspectRatio: "xMidYMid meet"
},
/* @__PURE__ */ React11.createElement(
G3,
{
transform: "translate(0.000000,1000.000000) scale(0.100000,-0.100000)",
fill: strokeColor,
stroke: "none"
}
)
);
};
var Decrease10Seconds = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
id: "Layer_1",
x: "0px",
y: "0px",
width: width8,
height,
viewBox: "0 0 1000 1000",
"enable-background": "new 0 0 1000 1000"
},
/* @__PURE__ */ React11.createElement(
Image3,
{
id: "image0",
width: "1000",
height: "1000",
x: "0",
y: "0",
href: "data:image/png;base64,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"
}
)
);
};
var Close = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
width: width8,
height,
viewBox: "0 0 1000.000000 1000.000000",
preserveAspectRatio: "xMidYMid meet"
},
/* @__PURE__ */ React11.createElement(
G3,
{
transform: "translate(0.000000,1000.000000) scale(0.100000,-0.100000)",
fill: strokeColor,
stroke: "none"
}
)
);
};
var Back = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
width: width8,
height,
viewBox: "0 0 1000.000000 1000.000000",
preserveAspectRatio: "xMidYMid meet"
},
/* @__PURE__ */ React11.createElement(
G3,
{
transform: "translate(0.000000,1000.000000) scale(0.100000,-0.100000)",
fill: strokeColor,
stroke: "none"
}
)
);
};
var Blur = (props) => {
let width8 = props.width || normalize(WIDTH3);
let height = props.height || normalize(HEIGHT3);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React11.createElement(
Svg3,
{
width: width8,
height,
viewBox: "0 0 800.000000 455.000000",
preserveAspectRatio: "xMidYMid meet"
},
/* @__PURE__ */ React11.createElement(
G3,
{
transform: "translate(0.000000,455.000000) scale(0.100000,-0.100000)",
fill: strokeColor,
stroke: "none"
},
/* @__PURE__ */ React11.createElement(
Path3,
{
d: "M3829 1514 c-5 -7 -19 -10 -30 -7 -12 4 -25 0 -30 -8 -5 -9 -9 -9 -9\n-2 0 15 -40 4 -40 -11 0 -6 -5 -4 -10 4 -5 8 -10 10 -10 3 0 -6 -9 -9 -20 -6\n-11 3 -28 -1 -37 -8 -10 -9 -14 -9 -10 -2 9 14 -28 9 -47 -7 -7 -5 -16 -6 -20\n-2 -12 12 -30 9 -44 -8 -12 -13 -12 -13 -6 0 7 13 6 13 -10 1 -21 -18 -54 -22\n-63 -8 -3 6 -1 7 5 3 6 -3 13 -2 16 3 4 5 -2 8 -11 6 -10 -1 -17 -9 -17 -18 1\n-9 -5 -14 -15 -12 -9 2 -20 4 -24 4 -5 1 -5 7 -1 14 4 6 -4 2 -18 -11 -19 -17\n-28 -20 -33 -11 -5 7 -4 10 3 5 6 -3 13 -2 16 2 7 12 -41 9 -51 -2 -5 -5 -2\n-6 6 -1 10 6 12 4 7 -4 -6 -9 -11 -9 -22 0 -9 7 -14 8 -14 1 0 -7 -10 -8 -29\n-2 -15 4 -34 4 -41 0 -7 -4 -24 -5 -39 -1 -14 4 -42 6 -61 5 -19 -1 -131 -3\n-247 -4 -145 -2 -213 -7 -213 -14 0 -6 -5 -4 -10 4 -6 9 -10 11 -10 3 0 -7 -7\n-10 -17 -6 -10 4 -14 2 -10 -4 3 -5 0 -10 -8 -10 -8 0 -11 5 -7 11 3 6 -7 3\n-22 -8 -16 -10 -25 -13 -22 -7 10 16 -6 13 -33 -6 -14 -9 -21 -11 -17 -5 5 8\n2 10 -8 6 -9 -3 -13 -11 -9 -18 4 -6 0 -5 -9 2 -14 11 -18 10 -27 -5 -7 -13\n-10 -14 -11 -4 0 11 -4 10 -16 -5 -8 -10 -12 -13 -8 -5 8 16 -8 9 -40 -18 -11\n-9 -16 -10 -12 -3 4 6 5 12 1 12 -3 0 -10 -10 -15 -22 -8 -21 -9 -22 -10 -3\n-1 19 -2 18 -10 -2 -7 -16 -14 -21 -26 -16 -13 5 -15 3 -9 -8 8 -12 6 -12 -8\n0 -15 12 -18 10 -26 -10 -5 -13 -10 -17 -11 -9 0 13 -2 13 -9 0 -6 -8 -7 -19\n-3 -25 3 -5 -2 -4 -12 4 -14 12 -17 12 -14 1 2 -8 -3 -15 -9 -16 -7 -1 -16 -2\n-19 -3 -4 0 -1 -8 6 -16 10 -12 8 -14 -9 -10 -12 2 -20 -1 -18 -8 1 -7 -4 -11\n-11 -9 -6 1 -11 -4 -10 -10 2 -7 -3 -12 -10 -10 -8 1 -11 -2 -7 -7 3 -6 -7\n-23 -22 -39 -15 -15 -21 -19 -13 -8 15 21 15 21 -8 2 -15 -13 -19 -23 -12 -30\n13 -13 -7 -37 -26 -29 -21 8 -47 -16 -34 -33 9 -10 6 -11 -12 -7 -22 5 -22 5\n-4 -9 15 -12 16 -17 6 -23 -9 -5 -11 -4 -6 3 4 7 1 12 -8 12 -16 0 -105 -89\n-106 -106 0 -12 -54 -66 -67 -66 -4 0 -7 -4 -6 -8 2 -5 -6 -7 -17 -5 -23 4\n-45 -19 -34 -37 6 -10 5 -11 -8 -1 -18 15 -28 7 -28 -21 0 -16 -2 -18 -9 -7\n-10 16 -41 8 -41 -10 0 -8 6 -7 18 2 15 13 16 12 3 -4 -8 -9 -16 -15 -19 -12\n-3 3 -17 -2 -31 -11 l-26 -15 25 22 c14 12 18 19 10 15 -8 -3 -23 -9 -33 -12\n-9 -4 -16 -12 -15 -20 2 -7 -1 -13 -6 -12 -5 0 -13 -6 -18 -14 -8 -10 -9 -10\n-5 2 2 8 10 14 16 12 7 -1 9 2 5 9 -5 9 -12 6 -25 -9 -12 -15 -19 -18 -22 -10\n-3 7 -6 2 -7 -12 -1 -23 -2 -23 -10 -5 -5 11 -9 14 -9 7 -1 -7 -5 -10 -11 -7\n-5 3 -10 -2 -11 -12 0 -11 -3 -13 -6 -5 -4 10 -8 10 -21 0 -13 -11 -15 -11 -8\n2 4 8 0 6 -8 -4 -17 -22 -50 -31 -40 -13 3 7 -2 3 -10 -7 -12 -15 -16 -16 -17\n-5 0 8 -4 6 -9 -6 -6 -13 -9 -15 -9 -5 -1 13 -2 13 -11 0 -8 -13 -10 -13 -10\n-1 0 11 -4 9 -15 -5 -12 -14 -14 -15 -9 -2 4 13 1 15 -15 11 -12 -3 -21 -10\n-21 -15 0 -5 4 -7 9 -4 11 7 8 -20 -3 -31 -4 -4 -6 -1 -4 7 2 8 -2 14 -9 13\n-8 -2 -10 4 -7 15 4 10 2 13 -3 7 -11 -14 -113 -14 -113 0 0 5 -4 3 -9 -5 -13\n-20 -2 -34 15 -19 19 15 18 2 -1 -17 -10 -10 -15 -11 -15 -3 0 8 -5 8 -17 -2\n-10 -8 -14 -9 -10 -2 4 6 3 14 -3 18 -5 3 -10 15 -10 25 0 14 -5 18 -17 13\n-10 -4 -14 -2 -10 4 4 7 0 10 -10 9 -10 -2 -21 1 -24 6 -3 5 -9 3 -12 -5 -4\n-11 0 -15 13 -12 13 3 17 -1 13 -12 -5 -12 -7 -12 -14 -1 -5 7 -9 9 -9 4 0 -5\n-7 -2 -17 5 -9 8 -17 12 -19 9 -1 -3 -6 -1 -11 4 -5 5 -3 6 5 2 7 -4 12 -2 12\n6 0 9 3 9 10 -2 9 -13 10 -13 10 0 0 8 -15 21 -32 29 -18 8 -41 21 -50 29 -10\n8 -18 12 -18 8 0 -3 -11 1 -24 9 -18 12 -26 13 -32 4 -5 -8 -3 -9 6 -4 9 5 11\n4 6 -4 -6 -8 -12 -9 -20 -2 -7 6 -16 8 -20 4 -4 -4 -4 1 0 11 5 14 9 15 16 4\n8 -11 9 -11 6 0 -2 8 -8 13 -13 13 -6 0 -17 7 -27 15 -12 12 -18 12 -24 3 -4\n-7 -3 -10 4 -5 6 3 13 2 16 -3 4 -5 -2 -8 -11 -6 -10 1 -17 10 -17 19 1 10 0\n15 -3 12 -3 -3 -15 0 -27 6 -27 15 -48 19 -40 7 3 -5 10 -6 16 -3 7 5 8 2 3\n-6 -6 -9 -4 -11 5 -5 9 6 11 4 5 -5 -6 -10 -14 -7 -32 14 -12 15 -23 21 -23\n14 0 -8 -4 -7 -10 4 -6 9 -19 15 -30 13 -11 -2 -22 1 -26 6 -4 6 -10 6 -19 -1\n-10 -8 -15 -8 -21 1 -5 8 -3 10 7 4 8 -5 11 -4 6 1 -10 10 -58 14 -51 3 12\n-19 -16 -17 -30 3 -11 15 -16 18 -16 8 0 -13 -2 -13 -10 0 -9 13 -10 13 -10 0\n0 -13 -1 -13 -10 0 -9 13 -10 13 -10 0 0 -13 -1 -13 -10 0 -9 13 -10 13 -10 0\n0 -9 -3 -11 -8 -5 -10 15 -38 12 -34 -4 1 -7 -2 -10 -8 -6 -6 3 -8 10 -6 14 6\n9 -54 8 -69 0 -5 -4 -18 -5 -28 -4 -9 2 -17 -2 -17 -8 0 -7 -5 -5 -10 3 -5 8\n-10 10 -10 3 0 -6 -8 -10 -17 -9 -10 2 -29 0 -43 -4 -91 -27 -110 -34 -110\n-39 0 -4 -9 -7 -19 -8 -11 -1 -31 -9 -45 -18 l-26 -17 0 -369 0 -369 4000 0\n4000 0 0 455 c0 296 -3 455 -10 456 -13 2 -29 6 -32 8 -8 5 -233 13 -463 15\n-143 1 -270 5 -282 9 -13 3 -25 1 -29 -4 -3 -6 -16 -4 -31 6 -14 10 -22 12\n-19 6 4 -6 3 -11 -3 -11 -5 0 -13 5 -16 10 -4 7 -13 6 -27 -1 -16 -9 -19 -8\n-13 2 6 9 2 11 -13 7 -12 -4 -22 -2 -22 2 0 5 -11 7 -25 6 -14 -2 -22 1 -18 7\n4 6 -2 8 -15 5 -15 -4 -25 0 -32 10 -7 13 -9 14 -10 3 0 -11 -4 -10 -16 5 -8\n10 -12 12 -8 4 5 -10 -1 -8 -16 5 -13 11 -20 14 -16 8 4 -7 2 -13 -3 -13 -6 0\n-11 5 -11 11 0 5 -4 8 -9 4 -5 -3 -12 -1 -16 5 -4 6 -11 8 -16 5 -5 -4 -9 -1\n-9 6 0 7 -3 9 -7 6 -3 -4 -15 1 -26 10 -15 13 -18 14 -12 3 6 -11 3 -10 -12 3\n-11 9 -23 14 -26 10 -4 -3 -7 -1 -7 6 0 7 -4 10 -9 6 -5 -3 -12 -1 -16 5 -4 6\n-11 8 -16 5 -5 -4 -9 2 -9 12 0 15 -2 16 -10 3 -7 -11 -10 -11 -10 -2 0 7 -4\n10 -10 7 -5 -3 -10 -1 -10 5 0 6 -4 8 -10 5 -5 -3 -10 -1 -10 5 0 6 -4 9 -9 6\n-5 -3 -11 1 -14 9 -4 8 -15 12 -27 10 -11 -2 -20 1 -20 8 0 7 -4 6 -10 -3 -7\n-12 -10 -12 -10 -1 0 7 -6 11 -15 8 -8 -4 -17 -1 -21 5 -4 6 -3 8 4 4 6 -3 13\n-2 16 3 7 11 -13 9 -33 -3 -10 -6 -12 -5 -7 2 4 7 2 12 -4 12 -6 0 -9 4 -6 8\n3 5 -1 9 -9 9 -8 0 -12 -5 -9 -11 3 -6 -2 -2 -10 8 -12 15 -16 16 -16 5 0 -12\n-2 -12 -10 1 -5 8 -10 11 -10 5 0 -5 -5 -3 -10 5 -11 17 -30 20 -47 7 -8 -5\n-16 -1 -25 12 -14 22 -33 30 -23 9 4 -7 0 -5 -8 5 -11 14 -16 15 -20 5 -4 -11\n-6 -11 -6 0 -1 7 -5 11 -10 7 -5 -3 -17 2 -25 11 -11 11 -16 12 -16 3 0 -7 -7\n-5 -16 7 -8 10 -13 14 -10 7 4 -6 1 -15 -5 -19 -7 -4 -9 -3 -6 2 3 6 2 16 -4\n24 -7 13 -9 13 -9 0 -1 -12 -2 -12 -10 2 -6 9 -18 15 -28 14 -9 -2 -20 2 -24\n8 -5 7 -8 6 -8 -4 0 -12 -2 -12 -9 -2 -4 7 -17 15 -27 17 -10 2 -19 4 -19 5 0\n1 -8 3 -18 5 -11 2 -15 -1 -10 -8 4 -8 1 -7 -9 1 -19 15 -49 23 -100 26 -21 1\n-41 6 -45 11 -5 4 -1 5 7 0 8 -5 12 -4 7 0 -12 14 -38 15 -31 2 3 -7 -2 -3\n-10 7 -12 15 -16 16 -16 5 0 -12 -2 -12 -10 1 -9 13 -10 13 -11 0 0 -10 -3 -8\n-9 5 -6 13 -9 15 -9 5 -1 -13 -2 -13 -11 0 -9 13 -10 13 -10 0 0 -13 -1 -13\n-10 0 -8 13 -10 13 -10 1 0 -11 -4 -10 -16 5 -8 10 -12 12 -8 4 7 -13 5 -13\n-9 -1 -9 7 -17 10 -17 5 0 -5 -5 -2 -10 6 -9 13 -10 13 -10 0 0 -11 -3 -12 -8\n-3 -10 17 -62 25 -62 10 0 -7 -4 -6 -10 3 -5 8 -20 15 -34 16 -14 0 -23 -3\n-21 -7 7 -10 -22 -5 -32 6 -4 4 -2 5 6 0 9 -5 12 -4 8 2 -7 11 -46 11 -64 0\n-8 -5 -13 -3 -13 3 0 6 -4 8 -10 5 -5 -3 -10 -1 -10 6 0 7 -6 5 -14 -6 -13\n-18 -13 -18 -24 1 -8 14 -12 15 -12 4 0 -13 -1 -13 -10 0 -5 8 -10 10 -10 3 0\n-11 -17 -12 -35 -2 -5 4 -19 5 -30 3 -11 -2 -62 -4 -113 -5 -51 -1 -95 -5 -98\n-10 -3 -5 -14 -5 -24 1 -11 6 -21 6 -24 1 -4 -5 -17 -8 -31 -6 -14 1 -25 -1\n-25 -5 0 -3 -17 -7 -37 -7 -91 -2 -104 -3 -100 -10 3 -5 -17 -8 -44 -7 -28 0\n-52 -3 -55 -8 -3 -5 -11 -5 -17 0 -15 11 -88 9 -106 -2 -10 -7 -12 -6 -6 3 5\n9 0 12 -16 10 -13 -1 -31 0 -39 3 -41 15 -88 25 -112 24 -15 -1 -24 3 -21 8 4\n5 -3 7 -15 4 -12 -4 -20 -2 -16 3 4 8 -40 14 -49 7 -2 -2 -10 2 -18 8 -8 6\n-22 10 -31 9 -10 -2 -18 0 -18 5 0 4 -13 6 -30 5 -16 -1 -30 2 -30 8 0 6 -3 8\n-6 4 -3 -3 -17 -2 -31 4 -18 7 -22 6 -17 -4 6 -9 3 -8 -8 1 -9 8 -25 13 -35\n12 -10 -1 -21 -1 -25 0 -5 1 -17 4 -28 5 -11 1 -21 4 -22 5 -2 1 -45 3 -96 4\n-60 1 -97 -3 -103 -10z m-1789 -458 c0 -2 -7 -7 -16 -10 -8 -3 -12 -2 -9 4 6\n10 25 14 25 6z m-63 -70 c0 -8 -5 -14 -11 -13 -6 1 -10 -4 -8 -10 1 -7 -4 -12\n-10 -10 -7 1 -12 -4 -10 -10 1 -7 -4 -12 -10 -10 -7 1 -12 -4 -10 -11 1 -8 -2\n-11 -9 -7 -7 5 3 21 27 46 21 22 39 39 39 39 1 0 2 -6 2 -14z m-1617 -152 c0\n-8 -19 -13 -24 -6 -3 5 1 9 9 9 8 0 15 -2 15 -3z m301 -29 c9 2 16 -3 16 -11\n0 -9 -4 -11 -12 -4 -7 5 -14 8 -17 5 -3 -3 -11 3 -19 12 -12 16 -12 17 1 7 8\n-6 22 -10 31 -9z m321 -139 c3 3 9 1 12 -4 8 -14 -18 -9 -36 6 -8 6 -17 10\n-20 7 -2 -3 -5 2 -5 10 0 12 5 11 22 -5 12 -11 24 -18 27 -14z m228 -82 c6 19\n7 19 12 -1 4 -15 1 -20 -11 -18 -9 1 -16 8 -17 16 -1 10 0 10 4 -1 4 -12 6\n-11 12 4z m42 -16 c-8 -8 -9 -4 -5 13 4 13 8 18 11 10 2 -7 -1 -18 -6 -23z"
}
),
/* @__PURE__ */ React11.createElement(Path3, { d: "M2045 1080 c4 -6 11 -8 16 -5 14 9 11 15 -7 15 -8 0 -12 -5 -9 -10z" }),
/* @__PURE__ */ React11.createElement(
Path3,
{
d: "M1841 883 c-12 -13 -21 -26 -19 -29 3 -2 15 7 28 21 13 14 22 27 19\n29 -2 2 -15 -8 -28 -21z"
}
),
/* @__PURE__ */ React11.createElement(Path3, { d: "M530 841 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z" }),
/* @__PURE__ */ React11.createElement(Path3, { d: "M1124 609 c-3 -6 -2 -15 3 -20 5 -5 9 -1 9 11 0 23 -2 24 -12 9z" })
)
);
};
// bot-sdk/assets/headerIcons.tsx
init_esm_shims();
import * as React12 from "react";
import Svg4, { Path as Path4 } from "react-native-svg";
var WIDTH4 = 17;
var HEIGHT4 = 17;
var HeaderHelp = (props) => {
let width8 = props.width || normalize(WIDTH4);
let height = props.height || normalize(HEIGHT4);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React12.createElement(Svg4, { width: width8, height, viewBox: "0 0 20 20", fill: strokeColor }, /* @__PURE__ */ React12.createElement(
Path4,
{
d: "M7.11956 8.09317C7.11956 5.60254 9.59056 4.46819 11.41 5.36853C12.5593 5.93725 13.26 7.30009 13.0294 8.41579C12.8581 9.24476 12.4996 9.72966 11.7763 10.3211L11.4973 10.5424C10.791 11.0964 10.5927 11.3836 10.5927 12.0489C10.5927 12.3713 10.3313 12.6326 10.0089 12.6326C9.68653 12.6326 9.42516 12.3713 9.42516 12.0489C9.42516 11.0017 9.77624 10.4383 10.6297 9.7413L10.905 9.52313C11.5325 9.02974 11.772 8.73156 11.8861 8.17946C12.0071 7.59409 11.5743 6.75251 10.8922 6.41495C9.78568 5.8674 8.28709 6.55535 8.28709 8.09317C8.28709 8.41558 8.02573 8.67694 7.70332 8.67694C7.38092 8.67694 7.11956 8.41558 7.11956 8.09317Z",
fill: strokeColor
}
), /* @__PURE__ */ React12.createElement(
Path4,
{
d: "M10.7681 14.227C10.7681 14.62 10.4496 14.9385 10.0566 14.9385C9.66369 14.9385 9.34516 14.62 9.34516 14.227C9.34516 13.8341 9.66369 13.5156 10.0566 13.5156C10.4496 13.5156 10.7681 13.8341 10.7681 14.227Z",
fill: strokeColor
}
), /* @__PURE__ */ React12.createElement(
Path4,
{
"fill-rule": "evenodd",
"clip-rule": "evenodd",
d: "M10.0002 1.11133C5.09102 1.11133 1.11133 5.09102 1.11133 10.0002C1.11133 14.9094 5.09102 18.8891 10.0002 18.8891C14.9094 18.8891 18.8891 14.9094 18.8891 10.0002C18.8891 5.09102 14.9094 1.11133 10.0002 1.11133ZM10.0002 2.4282C14.1821 2.4282 17.5722 5.81831 17.5722 10.0002C17.5722 14.1821 14.1821 17.5722 10.0002 17.5722C5.81831 17.5722 2.4282 14.1821 2.4282 10.0002C2.4282 5.81831 5.81831 2.4282 10.0002 2.4282Z",
fill: strokeColor
}
));
};
var HeaderReconnect = (props) => {
let width8 = props.width || normalize(WIDTH4);
let height = props.height || normalize(HEIGHT4);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React12.createElement(Svg4, { width: width8, height, viewBox: "0 0 14 14", fill: "none" }, /* @__PURE__ */ React12.createElement(
Path4,
{
d: "M12.8333 5.83333C12.8333 5.83333 11.6638 4.23979 10.7136 3.28898C9.76343 2.33816 8.4504 1.75 7 1.75C4.1005 1.75 1.75 4.1005 1.75 7C1.75 9.89949 4.1005 12.25 7 12.25C9.39347 12.25 11.4129 10.6483 12.0448 8.45833M12.8333 5.83333V2.33333M12.8333 5.83333H9.33333",
stroke: strokeColor,
"stroke-width": "1",
"stroke-linecap": "round",
"stroke-linejoin": "round"
}
));
};
var HeaderClose = (props) => {
let width8 = props.width || normalize(WIDTH4);
let height = props.height || normalize(HEIGHT4);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React12.createElement(Svg4, { width: width8, height, viewBox: "0 0 20 20", fill: "none" }, /* @__PURE__ */ React12.createElement(
Path4,
{
d: "M10.8838 10.0001L16.0669 4.81694C16.311 4.57286 16.311 4.17714 16.0669 3.93306C15.8229 3.68898 15.4271 3.68898 15.1831 3.93306L9.99988 9.11624L4.81694 3.93352C4.57286 3.68944 4.17713 3.68945 3.93306 3.93354C3.68899 4.17762 3.689 4.57335 3.93308 4.81742L9.116 10.0001L3.93306 15.1831C3.68898 15.4272 3.68898 15.8229 3.93306 16.067C4.17714 16.311 4.57286 16.311 4.81694 16.067L9.9999 10.884L15.1831 16.067C15.4272 16.311 15.8229 16.311 16.067 16.0669C16.311 15.8229 16.311 15.4271 16.0669 15.1831L10.8838 10.0001Z",
fill: strokeColor
}
));
};
var HeaderLiveAgent = (props) => {
let width8 = props.width || normalize(WIDTH4);
let height = props.height || normalize(HEIGHT4);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React12.createElement(Svg4, { width: width8, height, viewBox: "0 0 20 20", fill: strokeColor }, /* @__PURE__ */ React12.createElement(
Path4,
{
d: "M9.32692 1.25C2.94321 1.25 2.61719 5.45147 2.59615 8.79057C1.81791 9.09555 1.25 9.84225 1.25 10.6731C1.25 11.7458 2.05454 13.3654 3.26923 13.3654C3.3744 13.3654 3.48483 13.3549 3.59525 13.3444C4.58383 16.41 7.02374 18.75 9.32692 18.75C10.4259 18.75 11.5565 18.2031 12.5503 17.2987C12.1454 17.3618 11.7458 17.4038 11.3462 17.4038H9.32692C7.74414 17.4038 5.53561 15.4425 4.76262 12.524L4.54177 11.7563L3.91076 11.9141C3.52163 12.014 3.32182 12.0192 3.26923 12.0192C3.05364 11.9929 2.59615 11.2252 2.59615 10.6731C2.59615 10.3471 2.93795 10.021 3.3113 10L3.94231 9.95793V9.32692C3.94231 5.14123 4.30514 2.59615 9.32692 2.59615C9.48468 2.59615 11.3724 2.60141 12.6187 2.60667L12.1612 3.53741C12.0928 3.70042 11.8457 4.2473 10.9886 4.95192C10 5.77224 8.28576 6.63462 5.28846 6.63462V7.98077C8.54868 7.98077 10.6152 7.00796 11.851 5.99309C12.5083 5.44621 12.9079 4.90986 13.1603 4.49444C14.5433 5.19907 14.7115 6.59781 14.7115 9.32692V12.645C14.559 14.3382 12.2348 14.7115 11.3462 14.7115H10.6731C10.6731 13.9701 10.0684 13.3654 9.32692 13.3654C8.58549 13.3654 7.98077 13.9701 7.98077 14.7115C7.98077 15.453 8.58549 16.0577 9.32692 16.0577H11.3462C13.2024 16.0577 15.2479 15.2689 15.8736 13.5337H16.7308C17.8403 13.5337 18.75 12.6239 18.75 11.5144V10C18.75 8.89047 17.8403 7.98077 16.7308 7.98077H16.0314C15.963 6.05093 15.6318 4.23678 13.7861 3.29026L14.7852 1.27103L13.7019 1.26578C13.7019 1.26578 9.56355 1.25 9.32692 1.25ZM7.30769 9.32692C6.93434 9.32692 6.63462 9.62665 6.63462 10C6.63462 10.3733 6.93434 10.6731 7.30769 10.6731C7.68104 10.6731 7.98077 10.3733 7.98077 10C7.98077 9.62665 7.68104 9.32692 7.30769 9.32692ZM11.3462 9.32692C10.9728 9.32692 10.6731 9.62665 10.6731 10C10.6731 10.3733 10.9728 10.6731 11.3462 10.6731C11.7195 10.6731 12.0192 10.3733 12.0192 10C12.0192 9.62665 11.7195 9.32692 11.3462 9.32692ZM16.0577 9.32692H16.7308C17.1094 9.32692 17.4038 9.62139 17.4038 10V11.5144C17.4038 11.893 17.1094 12.1875 16.7308 12.1875H16.0577V9.32692Z",
fill: strokeColor
}
));
};
var HeaderLeft = (props) => {
let width8 = props.width || normalize(WIDTH4);
let height = props.height || normalize(HEIGHT4);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React12.createElement(Svg4, { width: width8, height, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ React12.createElement(
Path4,
{
d: "M14.3999 18L8.3999 12L14.3999 6",
stroke: strokeColor,
"stroke-width": "1.67",
"stroke-linecap": "round",
"stroke-linejoin": "round"
}
));
};
var HeaderMinimize = (props) => {
let width8 = props.width || normalize(WIDTH4);
let height = props.height || normalize(HEIGHT4);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React12.createElement(Svg4, { width: width8, height, viewBox: "0 0 20 20", fill: strokeColor }, /* @__PURE__ */ React12.createElement(
Path4,
{
"fill-rule": "evenodd",
"clip-rule": "evenodd",
d: "M16.8548 10C17.2112 10 17.5 10.2798 17.5 10.625C17.5 10.951 17.2424 11.2187 16.9136 11.2474L16.8548 11.25H3.14516C2.78885 11.25 2.5 10.9702 2.5 10.625C2.5 10.299 2.75765 10.0313 3.08644 10.0026L3.14516 10H16.8548Z",
fill: strokeColor
}
));
};
// bot-sdk/assets/composebarIcons.tsx
init_esm_shims();
import * as React13 from "react";
import Svg5, { Path as Path5 } from "react-native-svg";
var WIDTH5 = 17;
var HEIGHT5 = 17;
var MicIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, fill: "none", viewBox: "0 0 20 20" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M10 1.875C8.28613 1.875 6.875 3.28613 6.875 5V10C6.875 11.7139 8.28613 13.125 10 13.125C11.7139 13.125 13.125 11.7139 13.125 10V5C13.125 3.28613 11.7139 1.875 10 1.875ZM10 3.125C11.0352 3.125 11.875 3.96484 11.875 5V10C11.875 11.0352 11.0352 11.875 10 11.875C8.96484 11.875 8.125 11.0352 8.125 10V5C8.125 3.96484 8.96484 3.125 10 3.125ZM5 9.375C4.65482 9.375 4.375 9.65482 4.375 10C4.375 12.876 6.57715 15.2441 9.375 15.5615V16.875H7.5C7.15482 16.875 6.875 17.1548 6.875 17.5C6.875 17.8452 7.15482 18.125 7.5 18.125H12.5C12.8452 18.125 13.125 17.8452 13.125 17.5C13.125 17.1548 12.8452 16.875 12.5 16.875H10.625V15.5615C13.4229 15.2441 15.625 12.876 15.625 10C15.625 9.65482 15.3452 9.375 15 9.375C14.6548 9.375 14.375 9.65482 14.375 10C14.375 12.4072 12.4072 14.375 10 14.375C7.59277 14.375 5.625 12.4072 5.625 10C5.625 9.65482 5.34518 9.375 5 9.375Z",
fill: strokeColor
}
));
};
var SpeakerIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 18 16", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M15.4564 2.28917C16.6375 3.93104 17.3332 5.94554 17.3332 8.12251C17.3332 10.2995 16.6375 12.314 15.4564 13.9558M12.1209 4.78917C12.78 5.73404 13.1665 6.88313 13.1665 8.12251C13.1665 9.36188 12.78 10.511 12.1209 11.4558M7.02843 1.76058L4.39036 4.39865C4.24624 4.54278 4.17417 4.61484 4.09007 4.66637C4.01551 4.71207 3.93423 4.74574 3.8492 4.76615C3.75329 4.78917 3.65138 4.78917 3.44755 4.78917H1.99984C1.53313 4.78917 1.29977 4.78917 1.12151 4.88C0.96471 4.9599 0.837226 5.08738 0.757332 5.24418C0.666504 5.42244 0.666504 5.6558 0.666504 6.12251V10.1225C0.666504 10.5892 0.666504 10.8226 0.757332 11.0008C0.837226 11.1576 0.96471 11.2851 1.12151 11.365C1.29977 11.4558 1.53313 11.4558 1.99984 11.4558H3.44755C3.65138 11.4558 3.75329 11.4558 3.8492 11.4789C3.93423 11.4993 4.01551 11.533 4.09007 11.5786C4.17417 11.6302 4.24624 11.7022 4.39036 11.8464L7.02843 14.4844C7.38541 14.8414 7.5639 15.0199 7.71715 15.032C7.85011 15.0424 7.98005 14.9886 8.06667 14.8872C8.1665 14.7703 8.1665 14.5179 8.1665 14.013V2.23198C8.1665 1.72714 8.1665 1.47471 8.06667 1.35783C7.98005 1.25641 7.85011 1.20258 7.71715 1.21305C7.5639 1.22511 7.38541 1.4036 7.02843 1.76058Z",
stroke: strokeColor,
"stroke-width": "1.5",
"stroke-linecap": "round",
"stroke-linejoin": "round"
}
));
};
var SpeakerOffIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
"fill-rule": "evenodd",
"clip-rule": "evenodd",
d: "M10 5.41415L7.17574 8.23841C7.16402 8.25013 7.15202 8.2622 7.13972 8.27456C7.00579 8.40921 6.83714 8.57876 6.63079 8.70521C6.45185 8.81487 6.25676 8.89568 6.05268 8.94467C5.81735 9.00117 5.57821 9.00053 5.3883 9.00002C5.37086 8.99998 5.35383 8.99993 5.33726 8.99993H3.60001C3.30348 8.99993 3.14122 9.00071 3.02464 9.01024C3.02 9.01061 3.0156 9.011 3.01145 9.01138C3.01107 9.01553 3.01069 9.01992 3.01031 9.02457C3.00078 9.14115 3.00001 9.30341 3.00001 9.59993V14.3999C3.00001 14.6965 3.00078 14.8587 3.01031 14.9753C3.01069 14.9799 3.01107 14.9843 3.01145 14.9885C3.0156 14.9889 3.02 14.9893 3.02464 14.9896C3.14122 14.9992 3.30348 14.9999 3.60001 14.9999H5.33726C5.35383 14.9999 5.37086 14.9999 5.3883 14.9998C5.57821 14.9993 5.81735 14.9987 6.05268 15.0552C6.25676 15.1042 6.45185 15.185 6.63079 15.2947C6.83715 15.4211 7.00579 15.5907 7.13972 15.7253C7.15202 15.7377 7.16403 15.7497 7.17574 15.7615L10 18.5857V5.41415ZM10.3823 2.71166C10.861 2.67399 11.3288 2.86775 11.6406 3.23287C11.9199 3.55981 11.9642 3.95307 11.9811 4.14396C12.0001 4.35793 12 4.62369 12 4.89407C12 4.90647 12 4.91888 12 4.9313L12 19.1058C12 19.3762 12.0001 19.6419 11.9811 19.8559C11.9642 20.0468 11.9199 20.4401 11.6406 20.767C11.3288 21.1321 10.861 21.3259 10.3823 21.2882C9.95368 21.2545 9.64424 21.0078 9.4973 20.8847C9.33259 20.7469 9.1447 20.5589 8.95355 20.3677L5.76153 17.1757C5.6689 17.083 5.6225 17.037 5.58738 17.0049C5.58646 17.0041 5.58557 17.0033 5.58472 17.0025C5.58358 17.0025 5.58238 17.0024 5.58114 17.0023C5.53365 17.0002 5.46826 16.9999 5.33726 16.9999L3.56812 16.9999C3.31574 17 3.06994 17 2.86178 16.983C2.63318 16.9643 2.36345 16.9202 2.09202 16.7819C1.7157 16.5902 1.40974 16.2842 1.21799 15.9079C1.07969 15.6365 1.03563 15.3668 1.01695 15.1382C0.999943 14.93 0.999973 14.6842 1 14.4318L1.00001 9.59993C1.00001 9.58929 1 9.57866 1 9.56803C0.999973 9.31565 0.999943 9.06986 1.01695 8.8617C1.03563 8.63311 1.07969 8.36338 1.21799 8.09195C1.40974 7.71563 1.7157 7.40967 2.09202 7.21792C2.36345 7.07962 2.63318 7.03555 2.86178 7.01688C3.06993 6.99987 3.31572 6.9999 3.56811 6.99993C3.57873 6.99993 3.58936 6.99993 3.60001 6.99993H5.33726C5.46826 6.99993 5.53365 6.99969 5.58114 6.99752C5.58238 6.99747 5.58358 6.99741 5.58472 6.99735C5.58557 6.99658 5.58646 6.99578 5.58738 6.99494C5.6225 6.96289 5.6689 6.91683 5.76153 6.8242L8.92721 3.65851C8.93599 3.64973 8.94477 3.64095 8.95354 3.63218C9.1447 3.44097 9.33259 3.25302 9.4973 3.11512C9.64424 2.9921 9.95368 2.7454 10.3823 2.71166ZM15.2929 8.29283C15.6834 7.9023 16.3166 7.9023 16.7071 8.29283L19 10.5857L21.2929 8.29283C21.6834 7.9023 22.3166 7.9023 22.7071 8.29283C23.0976 8.68335 23.0976 9.31651 22.7071 9.70704L20.4142 11.9999L22.7071 14.2928C23.0976 14.6834 23.0976 15.3165 22.7071 15.707C22.3166 16.0976 21.6834 16.0976 21.2929 15.707L19 13.4141L16.7071 15.707C16.3166 16.0976 15.6834 16.0976 15.2929 15.707C14.9024 15.3165 14.9024 14.6834 15.2929 14.2928L17.5858 11.9999L15.2929 9.70704C14.9024 9.31651 14.9024 8.68335 15.2929 8.29283Z",
fill: strokeColor
}
));
};
var MenuIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 20 20", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M2.5 3.125C2.15482 3.125 1.875 3.40482 1.875 3.75C1.875 4.09518 2.15482 4.375 2.5 4.375H17.5C17.8452 4.375 18.125 4.09518 18.125 3.75C18.125 3.40482 17.8452 3.125 17.5 3.125H2.5ZM2.5 9.375C2.15482 9.375 1.875 9.65482 1.875 10C1.875 10.3452 2.15482 10.625 2.5 10.625H17.5C17.8452 10.625 18.125 10.3452 18.125 10C18.125 9.65482 17.8452 9.375 17.5 9.375H2.5ZM2.5 15.625C2.15482 15.625 1.875 15.9048 1.875 16.25C1.875 16.5952 2.15482 16.875 2.5 16.875H17.5C17.8452 16.875 18.125 16.5952 18.125 16.25C18.125 15.9048 17.8452 15.625 17.5 15.625H2.5Z",
fill: strokeColor
}
));
};
var AttachmentIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 20 20", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M10 2.5C12.7733 2.5 15 4.79988 15 7.61355V13.341C15 13.7049 14.6924 13.9999 14.313 13.9999C13.9547 13.9999 13.6605 13.7368 13.6289 13.401L13.6261 13.341V7.61355C13.6261 5.5067 11.9908 3.81769 10 3.81769C8.00922 3.81769 6.37393 5.5067 6.37393 7.61355V13.9774C6.37393 15.1951 7.40322 16.1823 8.67291 16.1823C9.94261 16.1823 10.9719 15.1951 10.9719 13.9774V7.61355C10.9719 7.09876 10.5368 6.68143 10 6.68143C9.4856 6.68143 9.06454 7.0647 9.03035 7.54973L9.0281 7.61355V13.341C9.0281 13.7049 8.72054 13.9999 8.34114 13.9999C7.98282 13.9999 7.68857 13.7368 7.65698 13.401L7.65418 13.341V7.61355C7.65418 6.37101 8.70444 5.36374 10 5.36374C11.2956 5.36374 12.3458 6.37101 12.3458 7.61355L12.3458 13.9774C12.3453 15.9224 10.7011 17.5 8.67291 17.5C6.64442 17.5 5 15.9229 5 13.9774V7.61355C5 4.79988 7.22674 2.5 10 2.5Z",
fill: strokeColor
}
));
};
var KeyboardIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 20 20", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M1.875 3.75C0.844726 3.75 0 4.59473 0 5.625V13.125C0 14.1553 0.844726 15 1.875 15H16.875C17.9053 15 18.75 14.1553 18.75 13.125V5.625C18.75 4.59473 17.9053 3.75 16.875 3.75H1.875ZM1.875 5H16.875C17.2266 5 17.5 5.27344 17.5 5.625V13.125C17.5 13.4766 17.2266 13.75 16.875 13.75H1.875C1.52344 13.75 1.25 13.4766 1.25 13.125V5.625C1.25 5.27344 1.52344 5 1.875 5ZM3.125 6.25C2.77982 6.25 2.5 6.52982 2.5 6.875C2.5 7.22018 2.77982 7.5 3.125 7.5C3.47018 7.5 3.75 7.22018 3.75 6.875C3.75 6.52982 3.47018 6.25 3.125 6.25ZM5.625 6.25C5.27982 6.25 5 6.52982 5 6.875C5 7.22018 5.27982 7.5 5.625 7.5C5.97018 7.5 6.25 7.22018 6.25 6.875C6.25 6.52982 5.97018 6.25 5.625 6.25ZM8.125 6.25C7.77982 6.25 7.5 6.52982 7.5 6.875C7.5 7.22018 7.77982 7.5 8.125 7.5C8.47018 7.5 8.75 7.22018 8.75 6.875C8.75 6.52982 8.47018 6.25 8.125 6.25ZM10.625 6.25C10.2798 6.25 10 6.52982 10 6.875C10 7.22018 10.2798 7.5 10.625 7.5C10.9702 7.5 11.25 7.22018 11.25 6.875C11.25 6.52982 10.9702 6.25 10.625 6.25ZM13.125 6.25C12.7798 6.25 12.5 6.52982 12.5 6.875C12.5 7.22018 12.7798 7.5 13.125 7.5C13.4702 7.5 13.75 7.22018 13.75 6.875C13.75 6.52982 13.4702 6.25 13.125 6.25ZM15.625 6.25C15.2798 6.25 15 6.52982 15 6.875C15 7.22018 15.2798 7.5 15.625 7.5C15.9702 7.5 16.25 7.22018 16.25 6.875C16.25 6.52982 15.9702 6.25 15.625 6.25ZM3.125 8.75C2.77982 8.75 2.5 9.02982 2.5 9.375C2.5 9.72018 2.77982 10 3.125 10C3.47018 10 3.75 9.72018 3.75 9.375C3.75 9.02982 3.47018 8.75 3.125 8.75ZM5.625 8.75C5.27982 8.75 5 9.02982 5 9.375C5 9.72018 5.27982 10 5.625 10C5.97018 10 6.25 9.72018 6.25 9.375C6.25 9.02982 5.97018 8.75 5.625 8.75ZM8.125 8.75C7.77982 8.75 7.5 9.02982 7.5 9.375C7.5 9.72018 7.77982 10 8.125 10C8.47018 10 8.75 9.72018 8.75 9.375C8.75 9.02982 8.47018 8.75 8.125 8.75ZM10.625 8.75C10.2798 8.75 10 9.02982 10 9.375C10 9.72018 10.2798 10 10.625 10C10.9702 10 11.25 9.72018 11.25 9.375C11.25 9.02982 10.9702 8.75 10.625 8.75ZM13.125 8.75C12.7798 8.75 12.5 9.02982 12.5 9.375C12.5 9.72018 12.7798 10 13.125 10C13.4702 10 13.75 9.72018 13.75 9.375C13.75 9.02982 13.4702 8.75 13.125 8.75ZM15.625 8.75C15.2798 8.75 15 9.02982 15 9.375C15 9.72018 15.2798 10 15.625 10C15.9702 10 16.25 9.72018 16.25 9.375C16.25 9.02982 15.9702 8.75 15.625 8.75ZM6.875 11.25C6.52982 11.25 6.25 11.5298 6.25 11.875C6.25 12.2202 6.52982 12.5 6.875 12.5H11.875C12.2202 12.5 12.5 12.2202 12.5 11.875C12.5 11.5298 12.2202 11.25 11.875 11.25H6.875ZM3.12744 11.2598C2.78092 11.2598 2.5 11.5407 2.5 11.8872C2.5 12.2337 2.78092 12.5146 3.12744 12.5146H4.37256C4.71909 12.5146 5 12.2337 5 11.8872C5 11.5407 4.71909 11.2598 4.37256 11.2598H3.12744ZM14.397 11.2598C14.0504 11.2598 13.7695 11.5407 13.7695 11.8872C13.7695 12.2337 14.0504 12.5146 14.397 12.5146H15.6421C15.9886 12.5146 16.2695 12.2337 16.2695 11.8872C16.2695 11.5407 15.9886 11.2598 15.6421 11.2598H14.397Z",
fill: strokeColor
}
));
};
var SendIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.white;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 15 14", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M1.67123 5.0568C1.30302 5.19159 1.27011 5.69959 1.61729 5.88181L6.20644 8.29374L8.61632 12.8819C8.79859 13.2289 9.30601 13.1953 9.44085 12.8272L13.5965 1.4834C13.7288 1.12213 13.378 0.771245 13.0167 0.903509L1.67123 5.0568ZM2.9406 5.55723L11.4048 2.45618L6.45612 7.40487L2.9406 5.55723ZM7.0953 8.04405L12.044 3.09537L8.94544 11.5621L7.0953 8.04405Z",
fill: strokeColor
}
));
};
var HappyIcon = (props) => {
let width8 = props.width || normalize(WIDTH5);
let height = props.height || normalize(HEIGHT5);
let strokeColor = props.color || Color_default.white;
return /* @__PURE__ */ React13.createElement(Svg5, { width: width8, height, viewBox: "0 0 20 20", fill: "none" }, /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M5.96154 8.29627C5.96154 7.65625 6.47987 7.14243 7.11538 7.14243C7.7509 7.14243 8.26923 7.65625 8.26923 8.29627C8.26923 8.93179 7.7509 9.45012 7.11538 9.45012C6.47987 9.45012 5.96154 8.93179 5.96154 8.29627Z",
fill: strokeColor
}
), /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M11.7308 8.29627C11.7308 7.65625 12.2491 7.14243 12.8846 7.14243C13.5201 7.14243 14.0385 7.65625 14.0385 8.29627C14.0385 8.93179 13.5201 9.45012 12.8846 9.45012C12.2491 9.45012 11.7308 8.93179 11.7308 8.29627Z",
fill: strokeColor
}
), /* @__PURE__ */ React13.createElement(
Path5,
{
d: "M6.52563 12.561C6.41013 12.4503 6.34275 12.2963 6.33794 12.1375C6.32831 11.8824 6.4775 11.6466 6.71331 11.5504C6.94912 11.4493 7.21862 11.5023 7.39669 11.6899C8.06562 12.3541 8.98481 12.7679 10.0051 12.7679C11.0253 12.7679 11.9445 12.3541 12.6134 11.6899C12.854 11.4493 13.2439 11.4493 13.4845 11.6899C13.7251 11.9306 13.7251 12.3204 13.4845 12.561C12.5942 13.4465 11.3622 13.9999 10.0051 13.9999C8.64793 13.9999 7.41594 13.4465 6.52563 12.561Z",
fill: strokeColor
}
), /* @__PURE__ */ React13.createElement(
Path5,
{
"fill-rule": "evenodd",
"clip-rule": "evenodd",
d: "M2.5 10C2.5 5.86689 5.86689 2.5 10 2.5C14.1331 2.5 17.5 5.86689 17.5 10C17.5 14.1331 14.1331 17.5 10 17.5C5.86689 17.5 2.5 14.1331 2.5 10ZM16.3462 10C16.3462 6.48888 13.5111 3.65385 10 3.65385C6.48888 3.65385 3.65385 6.48888 3.65385 10C3.65385 13.5111 6.48888 16.3462 10 16.3462C13.5111 16.3462 16.3462 13.5111 16.3462 10Z",
fill: strokeColor
}
));
};
// bot-sdk/assets/welcome.tsx
init_esm_shims();
import * as React14 from "react";
import Svg6, { Defs as Defs3, LinearGradient, Path as Path6, Stop } from "react-native-svg";
var WIDTH6 = 17;
var HEIGHT6 = 17;
var AvatarBot = (props) => {
let width8 = props.width || normalize(WIDTH6);
let height = props.height || normalize(HEIGHT6);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React14.createElement(Svg6, { width: width8, height, viewBox: "0 0 16 16" }, /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M7.668,4.886C7.668,5.446 7.214,5.9 6.654,5.9C6.095,5.9 5.641,5.446 5.641,4.886C5.641,4.327 6.095,3.873 6.654,3.873C7.214,3.873 7.668,4.327 7.668,4.886Z",
fill: strokeColor
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M9.578,5.9C10.138,5.9 10.592,5.446 10.592,4.886C10.592,4.327 10.138,3.873 9.578,3.873C9.018,3.873 8.565,4.327 8.565,4.886C8.565,5.446 9.018,5.9 9.578,5.9Z",
fill: strokeColor
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
"fill-rule": "evenodd",
"clip-rule": "evenodd",
d: "M8.616,1C8.616,0.724 8.392,0.5 8.116,0.5C7.84,0.5 7.616,0.724 7.616,1V1.463H5.758C4.362,1.463 3.231,2.594 3.231,3.99V5.783C3.231,7.179 4.362,8.31 5.758,8.31H10.475C11.871,8.31 13.002,7.179 13.002,5.783V3.99C13.002,2.594 11.871,1.463 10.475,1.463H8.616V1ZM4.231,3.99C4.231,3.146 4.915,2.463 5.758,2.463H10.475C11.318,2.463 12.002,3.146 12.002,3.99V5.783C12.002,6.626 11.318,7.31 10.475,7.31H5.758C4.915,7.31 4.231,6.626 4.231,5.783V3.99Z",
fill: strokeColor
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M4.473,10.883C4.683,10.704 4.709,10.388 4.53,10.178C4.351,9.968 4.035,9.942 3.825,10.121L2.916,10.895L2.671,11.109C2.491,11.266 2.447,11.529 2.568,11.736L2.731,12.018L3.542,13.373L3.704,13.653C3.821,13.855 4.063,13.95 4.286,13.88L4.601,13.781L5.539,13.468C5.757,13.62 5.99,13.756 6.239,13.871L6.426,14.78L6.489,15.097C6.535,15.331 6.74,15.5 6.979,15.5H9.253C9.491,15.5 9.697,15.332 9.743,15.098L9.807,14.78L9.993,13.871C10.242,13.756 10.475,13.62 10.693,13.468L11.621,13.778L11.946,13.88C12.169,13.949 12.41,13.856 12.528,13.654L12.691,13.374L13.498,12.024L13.665,11.737C13.786,11.53 13.742,11.266 13.561,11.108L13.321,10.899L12.407,10.121C12.197,9.942 11.881,9.968 11.702,10.178C11.523,10.388 11.549,10.704 11.759,10.883L12.591,11.591L11.865,12.805L10.763,12.437C10.604,12.384 10.428,12.414 10.296,12.517C10.014,12.738 9.709,12.919 9.378,13.046C9.218,13.107 9.101,13.245 9.067,13.412L8.843,14.5H7.39L7.166,13.412C7.131,13.245 7.014,13.107 6.854,13.046C6.523,12.919 6.218,12.738 5.936,12.517C5.804,12.414 5.628,12.384 5.469,12.437L4.367,12.805L3.641,11.591L4.473,10.883Z",
fill: strokeColor
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M9.659,10.101C9.914,10.207 10.035,10.5 9.929,10.755C9.634,11.464 8.934,11.964 8.116,11.964C7.302,11.964 6.604,11.467 6.307,10.762C6.2,10.508 6.32,10.215 6.574,10.107C6.829,10 7.122,10.12 7.229,10.374C7.375,10.721 7.718,10.964 8.116,10.964C8.516,10.964 8.86,10.72 9.005,10.371C9.111,10.116 9.404,9.995 9.659,10.101Z",
fill: strokeColor
}
));
};
var IcIcon_1 = (props) => {
let width8 = props.width || normalize(WIDTH6);
let height = props.height || normalize(HEIGHT6);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React14.createElement(Svg6, { width: width8, height, viewBox: "0 0 24 18" }, /* @__PURE__ */ React14.createElement(
Path6,
{
fill: strokeColor,
"fill-rule": "nonzero",
d: "M12.6667 7.4618V10.0965C12.0584 10.8017 11.2505 11.0427 10.4419 11.0427C9.00304 11.0427 8 9.99141 8 8.78878C8 7.56693 9.00304 6.49573 10.4419 6.49573C11.2505 6.49573 12.0584 6.74061 12.6667 7.4618Z"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
fill: strokeColor,
"fill-rule": "evenodd",
d: "M21.1338 0H4.86687C4.49043 0 4.11765 0.073067 3.76982 0.215302C3.422 0.357538 3.10596 0.566062 2.83973 0.828966C2.57351 1.09187 2.36233 1.404 2.21824 1.74754C2.07416 2.09107 2 2.45928 2 2.83112V11.889C4.15213 11.8975 5.83353 13.5193 5.83353 15.5982C5.83702 16.2822 5.64868 16.9538 5.28938 17.5385H21.1338C21.8938 17.5379 22.6225 17.2394 23.1599 16.7086C23.6973 16.1778 23.9994 15.458 24 14.7073V2.83397C24.0005 2.46191 23.9267 2.09342 23.7828 1.74956C23.639 1.4057 23.428 1.09323 23.1617 0.830014C22.8955 0.5668 22.5794 0.35801 22.2315 0.215588C21.8835 0.0731658 21.5105 0 21.1338 0ZM15.3965 13.5328H12.7088V12.8055C11.9948 13.2655 11.1253 13.5328 10.0824 13.5328C7.52933 13.5328 5.46069 11.4326 5.46069 8.77776C5.46069 6.08457 7.52933 4.0014 10.0824 4.0014C11.1232 4.0014 11.9948 4.26873 12.7088 4.72873V4.0014H15.3965V13.5328ZM20.5415 13.5328H17.8538V4.0014H20.5451L20.5415 13.5328Z"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
fill: strokeColor,
"fill-rule": "nonzero",
d: "M1.98691 13.6411C0.899346 13.6411 0 14.4768 0 15.5772C0 16.7028 0.899346 17.5385 1.98691 17.5385C3.10065 17.5385 4 16.7028 4 15.5772C4 14.4761 3.10065 13.6411 1.98691 13.6411Z"
}
));
};
var IcIcon_2 = (props) => {
let width8 = props.width || normalize(WIDTH6);
let height = props.height || normalize(HEIGHT6);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React14.createElement(Svg6, { width: width8, height, viewBox: "0 0 22 20" }, /* @__PURE__ */ React14.createElement(
Path6,
{
fill: strokeColor,
"fill-rule": "nonzero",
d: "M2.5 0C1.26606 0 0.25 1.01606 0.25 2.25V9.75C0.25 10.9839 1.26606 12 2.5 12H4.74414V15L8.74316 12H13C14.2339 12 15.25 10.9839 15.25 9.75V2.25C15.25 1.01606 14.2339 0 13 0H2.5ZM2.5 1.5H13C13.4191 1.5 13.75 1.83094 13.75 2.25V9.75C13.75 10.1691 13.4191 10.5 13 10.5H8.24512L6.24414 12V10.5H2.5C2.08094 10.5 1.75 10.1691 1.75 9.75V2.25C1.75 1.83094 2.08094 1.5 2.5 1.5ZM3.25 3V4.5H12.25V3H3.25ZM16.75 4.5V6H19C19.42 6 19.75 6.33 19.75 6.75V14.25C19.75 14.67 19.42 15 19 15H15.25V16.5L13.2549 15H8.5C8.185 15 7.93117 14.8214 7.82617 14.5664L6.625 15.4805C7.015 16.0955 7.705 16.5 8.5 16.5H12.7598L16.75 19.5V16.5H19C20.245 16.5 21.25 15.495 21.25 14.25V6.75C21.25 5.505 20.245 4.5 19 4.5H16.75ZM3.25 6V7.5H9.25V6H3.25Z"
}
));
};
var IcIcon_3 = (props) => {
let width8 = props.width || normalize(WIDTH6);
let height = props.height || normalize(HEIGHT6);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React14.createElement(Svg6, { width: width8, height, viewBox: "0 0 19 18" }, /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M5.766,9H5.776M9.5,9H9.509M13.233,9H13.242M17.9,9C17.9,13.124 14.139,16.467 9.5,16.467C8.063,16.467 6.711,16.146 5.528,15.581L1.1,16.467L2.402,12.995C1.577,11.84 1.1,10.469 1.1,9C1.1,4.876 4.86,1.533 9.5,1.533C14.139,1.533 17.9,4.876 17.9,9Z",
fill: "none",
stroke: strokeColor,
"stroke-width": "1.67",
"stroke-linecap": "round",
"stroke-linejoin": "round"
}
));
};
var IcIcon_4 = (props) => {
let width8 = props.width || normalize(WIDTH6);
let height = props.height || normalize(HEIGHT6);
let strokeColor = props.color || Color_default.black;
return /* @__PURE__ */ React14.createElement(Svg6, { width: width8, height, viewBox: "0 0 22 22" }, /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M11.25,0.5C5.451,0.5 0.75,5.201 0.75,11C0.75,16.799 5.451,21.5 11.25,21.5C17.049,21.5 21.75,16.799 21.75,11C21.75,5.201 17.049,0.5 11.25,0.5ZM11.25,2.056C16.19,2.056 20.195,6.06 20.195,11C20.195,15.94 16.19,19.945 11.25,19.945C6.31,19.945 2.306,15.94 2.306,11C2.306,6.06 6.31,2.056 11.25,2.056ZM11.282,6.4C11.705,6.4 12.052,6.711 12.089,7.107L12.092,7.178V7.25C12.092,7.68 11.729,8.028 11.282,8.028C10.86,8.028 10.513,7.717 10.476,7.321L10.472,7.25V7.178C10.472,6.749 10.835,6.4 11.282,6.4ZM11.25,9.5C11.656,9.5 11.989,9.811 12.024,10.207L12.028,10.278V16.074C12.028,16.504 11.679,16.852 11.25,16.852C10.844,16.852 10.511,16.541 10.475,16.145L10.472,16.074V10.278C10.472,9.848 10.82,9.5 11.25,9.5Z",
fill: strokeColor,
"fill-rule": "evenodd"
}
));
};
var Koreai_logo = (props) => {
let width8 = props.width || normalize(WIDTH6);
let height = props.height || normalize(HEIGHT6);
return /* @__PURE__ */ React14.createElement(Svg6, { width: width8, height, viewBox: "0 0 41 10", fill: "none" }, /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M13.2751 5.23168C12.7964 4.75169 12.1468 4.48127 11.4689 4.47979C10.7911 4.47831 10.1403 4.74588 9.65953 5.22378C9.98131 4.90831 10.4144 4.73232 10.865 4.73392C11.3156 4.73553 11.7474 4.9146 12.0669 5.23235C12.3865 5.55011 12.568 5.98096 12.5722 6.4316C12.5763 6.88224 12.4028 7.31639 12.0893 7.64001L12.0869 7.64239L12.0754 7.65424L12.0569 7.67242C11.5772 8.15393 10.926 8.42517 10.2465 8.42647C9.56689 8.42776 8.91464 8.15901 8.4332 7.67934C7.95176 7.19966 7.68056 6.54835 7.67926 5.86869C7.67796 5.18903 7.94668 4.53669 8.42629 4.05518C7.78623 4.69453 7.42634 5.562 7.42578 6.46675C7.42523 7.3715 7.78405 8.23941 8.42332 8.87955C9.06259 9.5197 9.92994 9.87964 10.8346 9.8802C11.7392 9.88075 12.607 9.52188 13.247 8.88252C13.2514 8.87856 13.2557 8.87461 13.2597 8.87027L13.2755 8.85485L13.2806 8.84932C13.2877 8.8426 13.2944 8.83549 13.3012 8.82837L13.3103 8.81928C13.7751 8.33569 14.0318 7.68908 14.0252 7.0183C14.0186 6.34752 13.7493 5.70607 13.2751 5.23168Z",
fill: "url(#paint0_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "#17A674"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "url(#paint1_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "url(#paint2_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "url(#paint3_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "url(#paint4_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "url(#paint5_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M12.4082 3.42157C11.7709 3.09462 11.0469 2.97655 10.3387 3.08408C9.63061 3.19161 8.97426 3.51929 8.46271 4.02069L8.45125 4.03215L8.43939 4.04401L8.41647 4.06693C7.93802 4.54964 7.67089 5.20268 7.67385 5.88238C7.67682 6.56208 7.94963 7.21276 8.43228 7.69128C8.91493 8.16981 9.56788 8.43697 10.2475 8.43401C10.9271 8.43104 11.5777 8.15819 12.0561 7.67548C11.7339 7.99493 11.2981 8.1735 10.8444 8.17202C10.3907 8.17053 9.95606 7.98911 9.63591 7.66756C9.31576 7.34601 9.13621 6.91057 9.13665 6.45679C9.13709 6.003 9.31748 5.56792 9.63826 5.24699L9.64893 5.23671C10.1305 4.77099 10.7753 4.51243 11.4452 4.51644C12.1151 4.52045 12.7568 4.7867 13.2328 5.25815C13.7087 5.7296 13.9812 6.36875 13.9917 7.03866C14.0022 7.70856 13.7499 8.35595 13.289 8.8421C13.6623 8.45999 13.9407 7.99557 14.1017 7.48622C14.2628 6.97687 14.3021 6.43682 14.2164 5.90952C14.1308 5.38221 13.9225 4.88239 13.6084 4.45027C13.2944 4.01815 12.8833 3.6658 12.4082 3.42157Z",
fill: "url(#paint6_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M34.372 4.19049V5.8073C34.0482 6.24002 33.6181 6.38793 33.1877 6.38793C32.4217 6.38793 31.8877 5.74278 31.8877 5.00479C31.8877 4.255 32.4217 3.59766 33.1877 3.59766C33.6181 3.59766 34.0482 3.74793 34.372 4.19049Z",
fill: "#111827"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M38.9445 0.147949H30.1164C29.9121 0.147898 29.7098 0.188377 29.521 0.267076C29.3323 0.345775 29.1608 0.461151 29.0163 0.606615C28.8718 0.752079 28.7572 0.924782 28.679 1.11486C28.6008 1.30494 28.5605 1.50866 28.5605 1.71441V6.72613C29.7285 6.73085 30.641 7.62816 30.641 8.77842C30.6429 9.15686 30.5407 9.52844 30.3457 9.85196H38.9445C39.357 9.85165 39.7524 9.68651 40.0441 9.39281C40.3357 9.09911 40.4997 8.70086 40.5 8.28551V1.71598C40.5003 1.51012 40.4602 1.30624 40.3821 1.11598C40.3041 0.925722 40.1895 0.752831 40.0451 0.607195C39.9006 0.461559 39.729 0.346036 39.5402 0.267234C39.3514 0.188432 39.1489 0.147897 38.9445 0.147949ZM35.8309 7.63563H34.3723V7.2332C33.9848 7.48772 33.5129 7.63563 32.9469 7.63563C31.5613 7.63563 30.4387 6.47358 30.4387 5.00468C30.4387 3.51454 31.5613 2.36192 32.9469 2.36192C33.5117 2.36192 33.9848 2.50983 34.3723 2.76435V2.36192H35.8309V7.63563ZM38.623 7.63563H37.1644V2.36192H38.625L38.623 7.63563Z",
fill: "#111827"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M4.87813 5.87122L7.49766 3.06206H5.0625L2.45742 5.88539V0.145508H0.5V9.85424H2.45742V8.44947L3.54258 7.30196L5.32969 9.85424H7.79297L4.87813 5.87122Z",
fill: "#111827"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M16.8527 3.92404V3.05859H14.9258V9.85431H16.8527V5.86421C17.4082 5.25014 18.1418 4.94291 19.1813 4.90239V3.05977C18.1977 3.05977 17.4484 3.36661 16.8527 3.92404Z",
fill: "#111827"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M25.9139 6.29483C25.9139 4.29997 24.5498 2.99512 22.7178 2.99512C20.6963 2.99512 19.3193 4.43569 19.3193 6.42819C19.3193 8.35577 20.7096 9.85063 22.7686 9.85063C24.2815 9.85063 25.485 9.00053 25.8322 7.76019H23.8951C23.6938 8.08407 23.3321 8.24602 22.81 8.24602C21.7943 8.24602 21.2994 7.65319 21.1525 6.89867H25.8737C25.9028 6.69877 25.9163 6.49686 25.9139 6.29483ZM21.1643 5.79484C21.3389 5.06904 21.833 4.54269 22.7291 4.54269C23.4787 4.54269 23.9608 4.988 24.067 5.79484H21.1643Z",
fill: "#111827"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M28.5539 7.71143C27.9535 7.71143 27.457 8.1709 27.457 8.77592C27.457 9.39472 27.9535 9.85419 28.5539 9.85419C29.1688 9.85419 29.6652 9.39472 29.6652 8.77592C29.6652 8.17051 29.1688 7.71143 28.5539 7.71143Z",
fill: "#111827"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M9.63184 5.25069L9.64009 5.24268C9.63791 5.24457 9.63586 5.24663 9.63398 5.24884L9.63184 5.25069Z",
fill: "url(#paint7_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(
Path6,
{
d: "M13.2143 8.85636L13.2182 8.85205L13.2051 8.8653L13.2143 8.85636Z",
fill: "url(#paint8_linear_12409_520)"
}
), /* @__PURE__ */ React14.createElement(Defs3, null, /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint0_linear_12409_520",
x1: "8.09462",
y1: "8.5346",
x2: "13.7939",
y2: "4.76037",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#8C8EFF" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "0.549246", stopColor: "#4B4EFC" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#3D40F2" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint1_linear_12409_520",
x1: "11.9113",
y1: "5.50395",
x2: "14.4807",
y2: "3.86994",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#BFC527", stopOpacity: "0" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#BFC527" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint2_linear_12409_520",
x1: "11.2253",
y1: "4.58099",
x2: "10.6141",
y2: "6.76368",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#FEC412" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#FEC412", stopOpacity: "0" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint3_linear_12409_520",
x1: "9.19214",
y1: "6.27724",
x2: "12.6347",
y2: "6.37703",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#E05063" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#E05063", stopOpacity: "0" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint4_linear_12409_520",
x1: "9.29193",
y1: "7.13784",
x2: "11.1004",
y2: "4.76799",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#AF348D" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#AF348D", stopOpacity: "0" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint5_linear_12409_520",
x1: "11.2627",
y1: "8.1107",
x2: "10.3023",
y2: "4.84288",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#3596D5" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#3596D5", stopOpacity: "0" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint6_linear_12409_520",
x1: "13.5827",
y1: "8.41004",
x2: "11.6744",
y2: "6.87583",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#17A674" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#17A674", stopOpacity: "0" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint7_linear_12409_520",
x1: "10.8559",
y1: "6.96799",
x2: "11.5368",
y2: "6.26582",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { stopColor: "#009DAB", stopOpacity: "0" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#009DAB" })
), /* @__PURE__ */ React14.createElement(
LinearGradient,
{
id: "paint8_linear_12409_520",
x1: "15.0438",
y1: "6.94979",
x2: "11.8605",
y2: "10.2201",
gradientUnits: "userSpaceOnUse"
},
/* @__PURE__ */ React14.createElement(Stop, { offset: "0.24", stopColor: "#009DAB", stopOpacity: "0" }),
/* @__PURE__ */ React14.createElement(Stop, { offset: "1", stopColor: "#009DAB" })
)));
};
// bot-sdk/assets/thumbsup.tsx
init_esm_shims();
import * as React15 from "react";
import Svg7, { Path as Path7 } from "react-native-svg";
var UnLike = (props) => {
return /* @__PURE__ */ React15.createElement(Svg7, { width: "21", height: "20", viewBox: "0 0 21 20", fill: "none" }, /* @__PURE__ */ React15.createElement(
Path7,
{
d: "M17.3083 9.5625C17.3083 10.2874 16.7207 10.875 15.9958 10.875C15.2709 10.875 14.6833 10.2874 14.6833 9.5625V4.3125C14.6833 3.58763 15.2709 3 15.9958 3C16.7207 3 17.3083 3.58763 17.3083 4.3125V9.5625Z",
fill: props.color ? props.color : "#DC2626"
}
), /* @__PURE__ */ React15.createElement(
Path7,
{
d: "M13.8083 9.70833V4.95656C13.8083 4.29371 13.4338 3.68775 12.8409 3.39131L12.7973 3.3695C12.3113 3.12651 11.7754 3 11.2321 3L6.49298 3C5.65879 3 4.94056 3.5888 4.77696 4.4068L3.72696 9.6568C3.51038 10.7397 4.33865 11.75 5.44298 11.75H8.55832V15.25C8.55832 16.2165 9.34182 17 10.3083 17C10.7916 17 11.1833 16.6082 11.1833 16.125V15.5417C11.1833 14.7844 11.4289 14.0475 11.8833 13.4417L13.1083 11.8083C13.5627 11.2025 13.8083 10.4656 13.8083 9.70833Z",
fill: props.color ? props.color : "#DC2626"
}
));
};
var Like = (props) => {
return /* @__PURE__ */ React15.createElement(Svg7, { width: "21", height: "20", viewBox: "0 0 21 20", fill: "none" }, /* @__PURE__ */ React15.createElement(
Path7,
{
d: "M3.69238 10.4375C3.69238 9.71263 4.28001 9.125 5.00488 9.125C5.72976 9.125 6.31738 9.71263 6.31738 10.4375V15.6875C6.31738 16.4124 5.72976 17 5.00488 17C4.28001 17 3.69238 16.4124 3.69238 15.6875V10.4375Z",
fill: props.color ? props.color : "#16A34A"
}
), /* @__PURE__ */ React15.createElement(
Path7,
{
d: "M7.19238 10.2917V15.0434C7.19238 15.7063 7.56689 16.3123 8.15976 16.6087L8.20337 16.6305C8.68937 16.8735 9.22526 17 9.76862 17H14.5077C15.3419 17 16.0601 16.4112 16.2237 15.5932L17.2737 10.3432C17.4903 9.26032 16.6621 8.25 15.5577 8.25H12.4424V4.75C12.4424 3.7835 11.6589 3 10.6924 3C10.2091 3 9.81738 3.39175 9.81738 3.875V4.45833C9.81738 5.21563 9.57176 5.9525 9.11738 6.55833L7.89238 8.19167C7.43801 8.7975 7.19238 9.53437 7.19238 10.2917Z",
fill: props.color ? props.color : "#16A34A"
}
));
};
// bot-sdk/utils/SvgIcon.js
var SvgIcon = class extends React16.Component {
// shouldComponentUpdate(nextProps) {
// const differentName = this.props.name !== nextProps.name;
// const differentWidth = this.props.width !== [];
// const differentHeight = this.props.height !== [];
// return differentName || differentWidth || differentHeight;
// }
render() {
const { name, width: width8, height, color = "black", style = {} } = this.props;
const iconsMap = {
DownSolid: /* @__PURE__ */ React16.createElement(
RightSolid,
{
width: width8,
height,
color,
style: { transform: [{ rotate: "90deg" }] }
}
),
Like: /* @__PURE__ */ React16.createElement(Like, { width: width8, height, color }),
Unlike: /* @__PURE__ */ React16.createElement(UnLike, { width: width8, height, color }),
UpSolid: /* @__PURE__ */ React16.createElement(UpSolid, { width: width8, height }),
RightArrow: /* @__PURE__ */ React16.createElement(RightSolid, { width: width8, height, color }),
Right: /* @__PURE__ */ React16.createElement(Right, { width: width8, height, color }),
Left: /* @__PURE__ */ React16.createElement(Left, { width: width8, height }),
Play: /* @__PURE__ */ React16.createElement(Play, { width: width8, height, color }),
Pause: /* @__PURE__ */ React16.createElement(Pause, { width: width8, height, color }),
ThreeDots: /* @__PURE__ */ React16.createElement(ThreeDots, { width: width8, height, color }),
Speed: /* @__PURE__ */ React16.createElement(Speed, { width: width8, height, color }),
Soundmixer: /* @__PURE__ */ React16.createElement(Soundmixer, { width: width8, height, color }),
Playlist: /* @__PURE__ */ React16.createElement(Playlist, { width: width8, height, color }),
Settings: /* @__PURE__ */ React16.createElement(Settings, { width: width8, height, color }),
PPlay: /* @__PURE__ */ React16.createElement(PPlay, { width: width8, height, color }),
Quality: /* @__PURE__ */ React16.createElement(Quality, { width: width8, height, color }),
PPause: /* @__PURE__ */ React16.createElement(PPause, { width: width8, height, color }),
MuteSound: /* @__PURE__ */ React16.createElement(MuteSound, { width: width8, height, color }),
Increase10Seconds: /* @__PURE__ */ React16.createElement(Increase10Seconds, { width: width8, height, color }),
FullSound: /* @__PURE__ */ React16.createElement(FullSound, { width: width8, height, color }),
FullScreen: /* @__PURE__ */ React16.createElement(FullScreen, { width: width8, height, color }),
Eye: /* @__PURE__ */ React16.createElement(Eye, { width: width8, height, color }),
Expand: /* @__PURE__ */ React16.createElement(Expand, { width: width8, height, color }),
ExitFullScreen: /* @__PURE__ */ React16.createElement(ExitFullScreen, { width: width8, height, color }),
Error: /* @__PURE__ */ React16.createElement(Error2, { width: width8, height, color }),
Dot: /* @__PURE__ */ React16.createElement(Dot, { width: width8, height, color }),
Decrease10Seconds: /* @__PURE__ */ React16.createElement(Decrease10Seconds, { width: width8, height, color }),
Close: /* @__PURE__ */ React16.createElement(Close, { width: width8, height, color }),
Back: /* @__PURE__ */ React16.createElement(Back, { width: width8, height, color }),
Blur: /* @__PURE__ */ React16.createElement(Blur, { width: width8, height, color }),
HeaderHelp: /* @__PURE__ */ React16.createElement(
HeaderHelp,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
HeaderTalk: /* @__PURE__ */ React16.createElement(
HeaderLiveAgent,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
HeaderMenu: /* @__PURE__ */ React16.createElement(
HeaderMinimize,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
HeaderReconnect: /* @__PURE__ */ React16.createElement(
HeaderReconnect,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
HeaderClose: /* @__PURE__ */ React16.createElement(
HeaderClose,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
HeaderLeft: /* @__PURE__ */ React16.createElement(
HeaderLeft,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
HeaderAvatar: /* @__PURE__ */ React16.createElement(HeaderAvatar, { width: width8, height }),
MicIcon: /* @__PURE__ */ React16.createElement(
MicIcon,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
AttachmentIcon: /* @__PURE__ */ React16.createElement(
AttachmentIcon,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
MenuIcon: /* @__PURE__ */ React16.createElement(
MenuIcon,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
KeyboardIcon: /* @__PURE__ */ React16.createElement(
KeyboardIcon,
{
width: width8,
height,
color: color ? color : "#697586"
}
),
SendIcon: /* @__PURE__ */ React16.createElement(
SendIcon,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
HappyIcon: /* @__PURE__ */ React16.createElement(
HappyIcon,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
SpeakerIcon: /* @__PURE__ */ React16.createElement(
SpeakerIcon,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
SpeakerOffIcon: /* @__PURE__ */ React16.createElement(
SpeakerOffIcon,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
IcIcon_1: /* @__PURE__ */ React16.createElement(
IcIcon_1,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
IcIcon_2: /* @__PURE__ */ React16.createElement(
IcIcon_2,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
IcIcon_3: /* @__PURE__ */ React16.createElement(
IcIcon_3,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
IcIcon_4: /* @__PURE__ */ React16.createElement(
IcIcon_4,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
AvatarBot: /* @__PURE__ */ React16.createElement(
AvatarBot,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
"icon-1": /* @__PURE__ */ React16.createElement(
IcIcon_1,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
"icon-2": /* @__PURE__ */ React16.createElement(
IcIcon_2,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
"icon-3": /* @__PURE__ */ React16.createElement(
IcIcon_3,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
"icon-4": /* @__PURE__ */ React16.createElement(
IcIcon_4,
{
width: width8,
height,
color: color ? color : Color_default.white
}
),
Koreai_logo: /* @__PURE__ */ React16.createElement(
Koreai_logo,
{
width: width8,
height,
color: color ? color : Color_default.white
}
)
};
return iconsMap[name];
}
};
// bot-sdk/components/CollapsableContainer.tsx
init_esm_shims();
import React17, { useState } from "react";
import { View as View5 } from "react-native";
import Animated2, {
useAnimatedStyle,
useSharedValue,
withTiming
} from "react-native-reanimated";
var CollapsableContainer = ({
children,
expanded
}) => {
const [height, setHeight] = useState(0);
const animatedHeight = useSharedValue(0);
const onLayout = (event) => {
const onLayoutHeight = event.nativeEvent.layout.height;
if (onLayoutHeight > 0 && height !== onLayoutHeight) {
setHeight(onLayoutHeight);
}
};
const collapsableStyle = useAnimatedStyle(() => {
animatedHeight.value = expanded ? withTiming(height) : withTiming(0);
return {
height: animatedHeight.value
};
}, [expanded, height]);
return /* @__PURE__ */ React17.createElement(Animated2.View, { style: [collapsableStyle, { overflow: "scroll" }] }, /* @__PURE__ */ React17.createElement(View5, { style: { position: "relative" }, onLayout }, children));
};
// bot-sdk/components/CustomRadioButton.tsx
init_esm_shims();
import * as React18 from "react";
import { TouchableOpacity as TouchableOpacity4, View as View6, Text as Text5, StyleSheet as StyleSheet4 } from "react-native";
var CustomRadioButton = ({
id,
label,
value,
selected = false,
onPress,
size = 20,
borderSize = 2,
color = "#007AFF",
borderColor = "#CCCCCC",
labelStyle,
containerStyle: containerStyle2
}) => {
console.log(`CustomRadioButton ${id} rendered with selected: ${selected}`);
const handlePress = () => {
console.log(`RadioButton ${id} pressed, current selected: ${selected}`);
if (onPress) {
onPress(id);
}
};
const outerCircleStyle = {
width: size,
height: size,
borderRadius: size / 2,
borderWidth: selected ? 3 : borderSize,
borderColor: selected ? color : borderColor,
justifyContent: "center",
alignItems: "center",
backgroundColor: selected ? "#E3F2FD" : "white"
};
const innerCircleStyle = {
width: size * 0.6,
height: size * 0.6,
borderRadius: size * 0.6 / 2,
backgroundColor: selected ? color : "transparent"
};
return /* @__PURE__ */ React18.createElement(
TouchableOpacity4,
{
style: [styles5.container, containerStyle2],
onPress: handlePress,
activeOpacity: 0.7
},
/* @__PURE__ */ React18.createElement(View6, { style: outerCircleStyle }, /* @__PURE__ */ React18.createElement(View6, { style: innerCircleStyle })),
label && /* @__PURE__ */ React18.createElement(Text5, { style: [styles5.label, labelStyle] }, label)
);
};
var CustomRadioGroup = ({
radioButtons,
onPress,
containerStyle: containerStyle2,
color = "#007AFF",
// Default blue for selected state
borderColor = "#CCCCCC"
// Default gray for unselected border
}) => {
const handlePress = (selectedId) => {
console.log(`RadioGroup received press for: ${selectedId}`);
if (onPress) {
onPress(selectedId);
}
};
return /* @__PURE__ */ React18.createElement(View6, { style: [styles5.groupContainer, containerStyle2] }, radioButtons.map((button, index) => {
const radioProps = {
id: button.id,
label: button.label,
value: button.value,
selected: button.selected,
size: button.size,
borderSize: button.borderSize,
// Individual button colors override group colors
color: button.color || color,
borderColor: button.borderColor || borderColor,
labelStyle: button.labelStyle,
containerStyle: button.containerStyle,
onPress: handlePress
};
return React18.createElement(CustomRadioButton, {
...radioProps,
key: `radio-${index}-${button.id}`
});
}));
};
var RadioButton = CustomRadioButton;
var CustomRadioButton_default = CustomRadioGroup;
var styles5 = StyleSheet4.create({
container: {
flexDirection: "row",
alignItems: "center",
marginVertical: 8,
paddingVertical: 4
},
label: {
marginLeft: 8,
fontSize: 16,
color: "#333333",
flex: 1
},
groupContainer: {
backgroundColor: "transparent"
}
});
// bot-sdk/theme/styles.tsx
init_esm_shims();
import { StyleSheet as StyleSheet5 } from "react-native";
var TEMPLATE_STYLE_VALUES = {
BORDER_WIDTH: StyleSheet5.hairlineWidth,
BORDER_COLOR: "#728387",
//'#E0E1E9',
BORDER_RADIUS: 6,
BUBBLE_RADIUS: 10,
TEXT_COLOR: Color_default.text_color,
//'#202124',
TEXT_SIZE: normalize(15),
FONT_FAMILY: "Inter",
SUB_TEXT_SIZE: normalize(13),
TEMPLATE_RIGHT_MARGIN: 12,
TEMPLATE_LEFT_MARGIN: 12,
MIN_WIDTH: 200,
VIEW_MORE_TEXT_COLOR: "#4B4EDE"
// TEXT_SIZE1: [{small: normalize(12)}],
};
var botTimeStyles = {
medium: StyleSheet5.create({
size: {
fontSize: normalize(11)
}
}),
small: StyleSheet5.create({
size: {
fontSize: normalize(10)
}
}),
large: StyleSheet5.create({
size: {
fontSize: normalize(14)
}
})
};
var botStyles = {
medium: StyleSheet5.create({
size: {
fontSize: normalize(14)
}
}),
small: StyleSheet5.create({
size: {
fontSize: normalize(12)
}
}),
large: StyleSheet5.create({
size: {
fontSize: normalize(18)
}
})
};
var image_size = {
medium: StyleSheet5.create({
size: {
height: normalize(50),
width: normalize(50)
}
}),
small: StyleSheet5.create({
size: {
height: normalize(25),
width: normalize(25)
}
}),
large: StyleSheet5.create({
size: {
height: normalize(70),
width: normalize(70)
}
})
};
var rightBubbleStyles = {
balloon: StyleSheet5.create({
bubble_style: {
borderBottomLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS
}
}),
rounded: StyleSheet5.create({
bubble_style: {
borderBottomLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderBottomRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS
}
}),
rectangle: StyleSheet5.create({
bubble_style: {
// borderBottomLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
// borderTopRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
// borderTopLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
// borderBottomStartRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
}
})
};
var leftBubbleStyles = {
balloon: StyleSheet5.create({
bubble_style: {
borderBottomRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS
}
}),
rounded: StyleSheet5.create({
bubble_style: {
borderBottomLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderTopLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
borderBottomRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS
}
}),
rectangle: StyleSheet5.create({
bubble_style: {
// borderBottomLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
// borderTopRightRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
// borderTopLeftRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
// borderBottomStartRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS,
}
})
};
// bot-sdk/theme/themeHelper.tsx
init_esm_shims();
function getButtonTheme(propsTheme) {
let theme = {
ACTIVE_BG_COLOR: "#a37645",
ACTIVE_TXT_COLOR: "#505968",
INACTIVE_BG_COLOR: "#101828",
INACTIVE_TXT_COLOR: "#1d2939"
};
if (!propsTheme) {
return theme;
}
if (propsTheme.v3?.general?.colors?.useColorPaletteOnly) {
theme = {
...theme,
ACTIVE_BG_COLOR: propsTheme.v3?.general?.colors?.primary || "#ffffff",
ACTIVE_TXT_COLOR: propsTheme.v3?.general?.colors?.primary_text || "#505968",
INACTIVE_BG_COLOR: propsTheme.v3?.general?.colors?.secondary || "#101828",
INACTIVE_TXT_COLOR: propsTheme.v3?.general?.colors?.secondary_text || "#1d2939"
};
}
return theme;
}
function getBubbleTheme(propsTheme) {
let theme = {
BUBBLE_LEFT_BG_COLOR: "#3F51B5",
BUBBLE_LEFT_TEXT_COLOR: "#FFFFFF",
BUBBLE_RIGHT_BG_COLOR: "#3F51B5",
BUBBLE_RIGHT_TEXT_COLOR: "#ffffff"
};
if (!propsTheme) {
return theme;
}
if (propsTheme.v3?.body?.user_message) {
theme = {
...theme,
BUBBLE_RIGHT_BG_COLOR: propsTheme.v3?.body?.user_message.bg_color || "#3F51B5",
BUBBLE_RIGHT_TEXT_COLOR: propsTheme.v3?.body?.user_message.color || "#FFFFFF"
};
}
if (propsTheme.v3?.body?.bot_message) {
theme = {
...theme,
BUBBLE_LEFT_BG_COLOR: propsTheme.v3?.body?.bot_message.bg_color || "#3F51B5",
BUBBLE_LEFT_TEXT_COLOR: propsTheme.v3?.body?.bot_message.color || "#FFFFFF"
};
}
if (propsTheme.v3?.general?.colors?.useColorPaletteOnly) {
theme = {
...theme,
BUBBLE_LEFT_BG_COLOR: propsTheme.v3?.general?.colors?.secondary || "#3F51B5",
BUBBLE_LEFT_TEXT_COLOR: propsTheme.v3?.general?.colors?.primary_text || "#FFFFFF",
BUBBLE_RIGHT_BG_COLOR: propsTheme.v3?.general?.colors?.primary || "#3F51B5",
BUBBLE_RIGHT_TEXT_COLOR: propsTheme.v3?.general?.colors?.secondary_text || "#FFFFFF"
};
}
return theme;
}
// bot-sdk/templates/AdvancedListTemplate.tsx
import "dayjs/locale/en";
import advancedFormat from "dayjs/plugin/advancedFormat";
import customParseFormat from "dayjs/plugin/customParseFormat";
dayjs2.extend(advancedFormat);
dayjs2.extend(customParseFormat);
var windowWidth = Dimensions3.get("window").width;
var LIST_TEMPLATE_TYPES = {
NORMAL: "normal",
DEFAULT: "default"
};
var koraStyles = StyleSheet6.create({
pbutton: {
backgroundColor: "#0D6EFD"
//border: 0,
// padding: 7px 20px,
// fontweight: normal,
// fontsize: 14px,
// lineheight: 20px,
// cursor: pointer,
// background: #0D6EFD,
// borderradius: 4px,
// color: #FFFFFF,
// width: 100%,
// margin: 0 5px,
// textalign: center,
},
sbutton: {
backgroundColor: "#FFFFFF",
// padding: 7px 20px,
// fontweight: normal,
// fontsize: 14px,
// lineheight: 20px,
// cursor: pointer,
// width: 100%,
// margin: 0 5px,
// background: #FFFFFF,
// border: 1px solid
borderColor: "#BDC1C6",
borderWidth: 1
// boxsizing: borderbox,
// borderradius: 4px,
// color: #202124,
// textalign: center,
},
pbutton_text: {
//border: 0,
// padding: 7px 20px,
// fontweight: normal,
// fontsize: 14px,
// lineheight: 20px,
// cursor: pointer,
// background: #0D6EFD,
// borderradius: 4px,
color: "#FFFFFF"
// width: 100%,
// margin: 0 5px,
// textalign: center,
},
sbutton_text: {
// padding: 7px 20px,
// fontweight: normal,
// fontsize: 14px,
// lineheight: 20px,
// cursor: pointer,
// width: 100%,
// margin: 0 5px,
// background: #FFFFFF,
// border: 1px solid #BDC1C6,
// boxsizing: borderbox,
// borderradius: 4px,
color: "#202124"
// textalign: center,
}
});
var AdvancedListTemplate = class extends BaseView_default {
popoverRef;
popoverBtnRef;
constructor(props) {
super(props);
this.state = {
otherOptions: [],
payload: this.props.payload,
listItems: [],
radioOtherOptions: []
};
}
renderImage(imageObj) {
return /* @__PURE__ */ React19.createElement(
RenderImage_default,
{
image: imageObj?.image,
iconShape: imageObj?.iconShape,
iconSize: imageObj?.iconSize,
width: imageObj?.width,
height: imageObj?.height
}
);
}
componentDidMount() {
let listItems = [];
let splitIndex = (this.props.payload?.listItems?.length >= this.props.payload?.listItemDisplayCount ? this.props.payload?.listItemDisplayCount : this.props.payload?.listItems?.length) || 0;
listItems = this.props.payload?.listItems?.slice(0, splitIndex);
listItems = listItems.map((item) => {
return {
...item,
defaultIsCollapsed: item?.isCollapsed
};
});
this.setState({
listItems
});
}
listViewTemplate = (payload) => {
let viewType = payload?.listViewType;
switch (viewType) {
case LIST_TEMPLATE_TYPES.NORMAL:
return /* @__PURE__ */ React19.createElement(Text6, null, TEMPLATE_TYPES.ADVANCED_LIST_TEMPLATE, "_", viewType, "_pending");
case LIST_TEMPLATE_TYPES.DEFAULT:
return this.defaultListView(payload, this.state.listItems);
default:
return this.defaultListView(payload, this.state.listItems);
}
};
defaultListView = (payload, listItems) => {
if (!listItems || listItems?.length === 0) {
return /* @__PURE__ */ React19.createElement(React19.Fragment, null);
}
let title = payload?.title || void 0;
if (title && title?.trim() === "") {
title = void 0;
}
let modalTitle = payload?.description || void 0;
if (modalTitle && modalTitle?.trim() === "") {
modalTitle = void 0;
}
return /* @__PURE__ */ React19.createElement(
View7,
{
style: { backgroundColor: Color_default.white, width: windowWidth / 4 * 3.5 }
},
/* @__PURE__ */ React19.createElement(
View7,
{
style: [
styles6.default_main_container,
{ backgroundColor: Color_default.white }
]
},
title && /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.main_title,
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
title
),
modalTitle && /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.main_sub_title,
{
color: "#A4A4A4",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
modalTitle
),
listItems && /* @__PURE__ */ React19.createElement(
FlatList,
{
data: listItems,
removeClippedSubviews: false,
scrollIndicatorInsets: { top: 0, left: 20, bottom: 0, right: 0 },
automaticallyAdjustContentInsets: false,
renderItem: this.renderDefaultListViewItem
}
)
),
payload?.seeMore && /* @__PURE__ */ React19.createElement(View7, { style: styles6.see_main }, /* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload?.template_type.trim(),
this.props.payload?.listItems,
true,
this.props?.theme
);
}
},
style: styles6.see_sub
},
/* @__PURE__ */ React19.createElement(Text6, { style: styles6.see_more_text }, "See More")
))
);
};
renderDefaultListViewItem = ({ item, index }) => {
let infoList = item?.textInformation || void 0;
let Wrapper;
if (item?.type) {
switch (item?.type) {
case "url":
case "web_url":
case "postback":
Wrapper = TouchableOpacity5;
break;
default:
Wrapper = View7;
}
} else {
Wrapper = View7;
}
return /* @__PURE__ */ React19.createElement(View7, { key: index + "_id", style: styles6.main }, index !== 0 && /* @__PURE__ */ React19.createElement(View7, { style: styles6.line }), /* @__PURE__ */ React19.createElement(
Wrapper,
{
style: {
flexDirection: "column"
},
onPress: () => {
if (item?.type && this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload?.template_type.trim(),
{
...item
}
);
}
}
},
/* @__PURE__ */ React19.createElement(View7, { style: {} }, this.renderHeaderView(
item,
index,
item?.isCollapsed,
item?.defaultIsCollapsed
), /* @__PURE__ */ React19.createElement(CollapsableContainer, { expanded: !item?.isCollapsed }, /* @__PURE__ */ React19.createElement(View7, { style: { flex: 1 } }, infoList?.map((info, i) => {
let isLeft = info?.iconAlignment === "left" || true;
let icon = info?.icon || null;
if (icon?.trim() === "") {
icon = null;
}
return /* @__PURE__ */ React19.createElement(
View7,
{
key: i + "",
style: [styles6.imageStyle1, { marginStart: 5, flex: 1 }]
},
isLeft ? /* @__PURE__ */ React19.createElement(
View7,
{
style: {
flexDirection: "row"
}
},
icon && /* @__PURE__ */ React19.createElement(View7, { style: [styles6.info_main_container] }, this.renderImage({
image: icon,
iconShape: info?.iconShape,
iconSize: info?.iconSize,
width: 15,
height: 15
})),
info?.title && /* @__PURE__ */ React19.createElement(
Text6,
{
numberOfLines: 1,
style: [
styles6.item_title1,
{ color: "#202124" },
icon ? { marginLeft: 10 } : {},
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
info.title
)
) : /* @__PURE__ */ React19.createElement(View7, { style: { flexDirection: "row" } }, info?.title && /* @__PURE__ */ React19.createElement(
Text6,
{
numberOfLines: 1,
style: [
styles6.item_title1,
{ color: "#202124" },
icon ? { marginRight: 10 } : {},
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
info.title
), icon && /* @__PURE__ */ React19.createElement(View7, { style: [styles6.info_main_container, {}] }, this.renderImage({
image: icon,
iconShape: info?.iconShape,
iconSize: info?.iconSize,
width: 10,
height: 15
})))
);
}))))
), this.renderTableListData(item), item?.defaultIsCollapsed ? /* @__PURE__ */ React19.createElement(CollapsableContainer, { expanded: !item?.isCollapsed }, /* @__PURE__ */ React19.createElement(View7, { style: {} }, this.renderOtherOptions(item), " ", this.renderButtons(item))) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, this.renderOtherOptions(item), this.renderButtons(item)));
};
renderSenderView = (user) => {
if (!user) {
return /* @__PURE__ */ React19.createElement(React19.Fragment, null);
}
if (!user?.id && user?.senderInitials && user?.color) {
return /* @__PURE__ */ React19.createElement(
View7,
{
style: [
styles6.circleStyle,
styles6.assigne_container,
{ backgroundColor: user?.color }
]
},
/* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.assigne_text,
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
user?.senderInitials
)
);
}
return /* @__PURE__ */ React19.createElement(View7, { style: [styles6.circleStyle, { marginEnd: 6 }] }, /* @__PURE__ */ React19.createElement(
UserAvatar,
{
color: user?.color,
name: user?.fN,
size: 32,
borderRadius: 32,
style: styles6.circleStyle,
textStyle: { fontSize: normalize(18) },
profileIcon: user?.icon,
userId: user?.id
}
));
};
renderHeaderView = (item, index, expanded, defaultIsCollapsed) => {
if (!item) {
return null;
}
let description = item?.description || void 0;
if (description) {
description = description?.replace?.(/\n/g, " ");
}
let icon = item?.icon;
if (icon?.trim() === "") {
icon = null;
}
let descriptionIcon = item?.descriptionIcon;
if (descriptionIcon?.trim() === "") {
descriptionIcon = null;
}
let title = item?.title;
if (title?.trim() === "") {
title = null;
}
const Wrapper = item?.defaultIsCollapsed ? TouchableOpacity5 : View7;
let elementStyles;
if (item?.elementStyles) {
elementStyles = convertToRNStyle(item?.elementStyles);
}
let descriptionStyles;
if (item?.descriptionStyles) {
descriptionStyles = convertToRNStyle(item?.descriptionStyles);
}
let titleStyles;
if (item?.titleStyles) {
titleStyles = convertToRNStyle(item?.titleStyles);
}
return /* @__PURE__ */ React19.createElement(
Wrapper,
{
key: index + " " + index,
onPress: () => {
const newList = this.state?.listItems?.map(
(value, i) => {
if (i === index) {
return {
...value,
isCollapsed: !item?.isCollapsed
};
}
return value;
}
);
this.setState({
listItems: newList || []
});
item = {
...item,
isCollapsed: !item?.isCollapsed
};
},
style: [styles6.header_view_con, elementStyles]
},
icon && /* @__PURE__ */ React19.createElement(
View7,
{
style: [
styles6.header_view_container,
styles6.header_view_container1
]
},
this.renderImage({
image: icon,
iconShape: item?.iconShape,
iconSize: "medium"
})
),
item?.sender && this.renderSenderView(item.sender),
/* @__PURE__ */ React19.createElement(
View7,
{
style: [
styles6.header_sub_con,
item?.elementStyles && {
backgroundColor: item?.elementStyles?.background || "transparent"
}
]
},
/* @__PURE__ */ React19.createElement(View7, { style: { flex: 1 } }, title && /* @__PURE__ */ React19.createElement(
Text6,
{
numberOfLines: 1,
style: [
styles6.item_title,
{
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
{
color: "#444444",
...botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
},
titleStyles
]
},
title
), description && /* @__PURE__ */ React19.createElement(
Text6,
{
numberOfLines: 1,
style: [
styles6.item_desc,
{ marginBottom: 5 },
{
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
{
color: "#444444",
...botStyles["small"]?.size
},
descriptionStyles
]
},
description
)),
descriptionIcon && /* @__PURE__ */ React19.createElement(
View7,
{
style: [
styles6.header_view_container,
styles6.header_view_container2
]
},
this.renderImage({
image: descriptionIcon,
iconShape: item?.iconShape,
iconSize: "small"
})
)
),
this.renderHederOptions(item, expanded, defaultIsCollapsed)
);
};
dateToFromNowDaily = (dateStr) => {
if (!dateStr) {
return "";
}
const date = dayjs2(dateStr).toDate();
const now = dayjs2();
const diffInDays = now.diff(date, "day");
if (diffInDays === 0) {
return dayjs2(date).format("hh:mm a - [Today]");
} else if (diffInDays === -1) {
return dayjs2(date).format("hh:mm a - [Yesterday]");
} else if (diffInDays === 1) {
return dayjs2(date).format("hh:mm a - [Tomorrow]");
} else if (diffInDays < -1 && diffInDays >= -7) {
return dayjs2(date).format("hh:mm a - [Last] dddd");
} else if (diffInDays > 1 && diffInDays <= 7) {
return dayjs2(date).format("dddd");
} else {
return dayjs2(date).format("ddd, MMM D, YYYY hh:mm a");
}
};
renderHederOptions = (item, expanded, defaultIsCollapsed) => {
if (!item || !item?.headerOptions) {
return null;
}
let options = item.headerOptions;
return options?.map((item2, index) => {
if (!(item2?.type || item2?.contenttype)) {
return null;
}
const item_type = item2?.contenttype || item2?.type;
switch (item_type) {
case "icon":
return /* @__PURE__ */ React19.createElement(View7, { key: index + " " + index, style: [styles6.icon_type_con] }, item2?.icon && /* @__PURE__ */ React19.createElement(View7, { style: styles6.icon_type_sub1 }, /* @__PURE__ */ React19.createElement(
Image5,
{
style: [
styles6.image,
defaultIsCollapsed && {
transform: [{ rotate: expanded ? "90deg" : "180deg" }]
}
],
source: { uri: item2.icon },
resizeMode: "contain"
}
)));
case "text":
let value = item2?.value;
if (this.props?.payload?.localTemplateName === "email-lookup") {
value = this.dateToFromNowDaily(value);
}
return /* @__PURE__ */ React19.createElement(View7, { key: index + " " + index, style: { justifyContent: "center" } }, item2?.value && /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
{
color: item2?.styles?.color || "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
value + ""
));
case "button":
return /* @__PURE__ */ React19.createElement(
View7,
{
key: index + " " + index,
style: {
justifyContent: "center",
alignItems: "center"
}
},
/* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
onPress: () => {
this.props.onListItemClick(
this.props.payload?.template_type.trim(),
{ ...item2, item_type }
);
},
style: [
styles6.item_button,
item2?.buttonStyles?.background && {
backgroundColor: item2?.buttonStyles?.background
},
item2?.buttonStyles?.border && {
borderColor: item2?.buttonStyles?.border?.split(" ")?.[2] || Color_default.white,
borderWidth: 1
}
]
},
/* @__PURE__ */ React19.createElement(
Text6,
{
style: [
{
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
item2?.buttonStyles ? {
color: item2?.buttonStyles?.color
} : {
color: "#444444"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
item2?.title
)
)
);
case "dropdown":
return /* @__PURE__ */ React19.createElement(
LazyPopover_default,
{
key: index + " " + index,
ref: (ref) => this.popoverRef = ref,
isVisible: this.state.showPopover,
onRequestClose: () => {
this.setState({
showPopover: false
});
},
from: /* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
style: styles6.popover_main,
onPress: () => {
this.setState({
showPopover: true
});
}
},
/* @__PURE__ */ React19.createElement(
SvgIcon,
{
name: "ThreeDots",
width: normalize(18),
height: normalize(18)
}
)
)
},
/* @__PURE__ */ React19.createElement(View7, { style: { marginTop: 5 } }, item2?.dropdownOptions?.map((option, index2) => {
return /* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
key: index2 + "",
onPress: () => {
this.setState({
showPopover: false
});
this.props.onListItemClick(
this.props.payload?.template_type.trim(),
{ ...option, item_type }
);
},
style: styles6.opt_title_con
},
/* @__PURE__ */ React19.createElement(View7, null, /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
option?.title
))
);
}))
);
}
return /* @__PURE__ */ React19.createElement(Text6, null, item2?.type);
});
};
renderOtherOptions = (item) => {
if (!item || !item.optionsData) {
return /* @__PURE__ */ React19.createElement(React19.Fragment, null);
}
let listItems = item?.optionsData.map((item2) => {
return {
...item2,
isChecked: false,
id: item2.id + "_" + item2.type
};
});
let isRadio = listItems.filter((item2) => item2.type === "radio")?.[0];
let radioButtons = listItems.map((item2, _index) => {
const isSelected = this.state.radioOtherOptions.some((selectedItem) => selectedItem.id === item2.id);
return {
id: item2.id,
label: item2.label,
value: item2.label,
selected: isSelected,
// Use radioOtherOptions state instead of item.isChecked
labelStyle: {
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter",
...botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
},
// Allow customization of colors through item properties
// Only set individual colors if they exist in the item data
// This allows RadioGroup colors to take effect as fallback
...item2.borderColor && { borderColor: item2.borderColor },
...item2.color && { color: item2.color },
...item2.size && { size: item2.size },
...item2.borderSize && { borderSize: item2.borderSize }
};
});
if (isRadio) {
let filterList = this.state.radioOtherOptions.filter(
(obj) => obj?.isChecked
);
const buttonTheme = getBubbleTheme(this.props.theme);
return /* @__PURE__ */ React19.createElement(View7, { style: { backgroundColor: "transparent" } }, /* @__PURE__ */ React19.createElement(
CustomRadioButton_default,
{
radioButtons,
color: buttonTheme.BUBBLE_RIGHT_BG_COLOR,
borderColor: buttonTheme.BUBBLE_LEFT_BG_COLOR,
containerStyle: {
alignItems: "flex-start",
marginStart: 10
},
onPress: (setSelectedId) => {
let selectedItem = listItems.filter(
(btn) => btn.id === setSelectedId
);
let isSelect = !selectedItem[0].isChecked;
let obj = {
...selectedItem[0],
isChecked: isSelect
};
this.setSeletedSlot(obj, isSelect, true);
}
}
));
}
return listItems && /* @__PURE__ */ React19.createElement(View7, null, /* @__PURE__ */ React19.createElement(
FlatList,
{
data: listItems,
renderItem: this.renderOtherOptionItem
}
));
};
renderTableListData = (item) => {
if (!item || !item.tableListData || !item.tableListData?.[0]?.rowData) {
return /* @__PURE__ */ React19.createElement(React19.Fragment, null);
}
let listItems = item.tableListData?.[0]?.rowData;
return listItems && /* @__PURE__ */ React19.createElement(View7, { style: styles6.table_main_con }, listItems.map((item2, index) => {
return this.renderTableListItem({ item: item2, index });
}));
};
renderTableListItem = ({ item, index }) => {
return /* @__PURE__ */ React19.createElement(View7, { key: index + "", style: styles6.table_item_con }, /* @__PURE__ */ React19.createElement(View7, { style: { minHeight: 20, minWidth: 20 } }, item.icon && this.renderImage({
image: item.icon,
iconShape: item?.iconShape,
width: 14,
height: 14,
iconSize: item?.iconSize || "medium"
})), /* @__PURE__ */ React19.createElement(View7, { style: styles6.table_sub2 }, /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
item?.title
), /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
item?.description
)));
};
setSeletedSlot = (item, isSelect, isFromRadio) => {
let newArrayList = isFromRadio ? [...this.state.radioOtherOptions] : [...this.state.otherOptions];
if (isSelect) {
if (isFromRadio) {
newArrayList = [item];
} else {
newArrayList.push(item);
}
} else {
newArrayList = newArrayList.filter((obj) => obj.id !== item.id);
}
if (isFromRadio) {
this.setState({
radioOtherOptions: newArrayList
}, () => {
this.forceUpdate();
});
} else {
this.setState({
otherOptions: newArrayList
});
}
};
renderOtherOptionItem = ({ item, index }) => {
const buttontheme = getBubbleTheme(this.props.theme);
let filterList = this.state.otherOptions.filter(
(obj) => obj?.id === item?.id
);
if (filterList?.length !== 0) {
item = {
...item,
isChecked: filterList?.[0]?.isChecked
};
}
const Wrapper = item?.type === "checkbox" ? TouchableOpacity5 : View7;
return /* @__PURE__ */ React19.createElement(View7, { key: index + "_id1" }, /* @__PURE__ */ React19.createElement(
Wrapper,
{
onPress: () => {
let isSelect = !item.isChecked;
let obj = {
...item,
isChecked: isSelect
};
this.setSeletedSlot(obj, isSelect);
},
style: styles6.other_opt_con
},
item.type === "checkbox" && /* @__PURE__ */ React19.createElement(View7, { style: { flexDirection: "row" } }, /* @__PURE__ */ React19.createElement(
CustomCheckBox_default,
{
style: styles6.check_box,
checkBoxColor: "#3c51f0",
isChecked: item.isChecked,
onClick: () => {
let isSelect = !item.isChecked;
let obj = {
...item,
isChecked: isSelect
};
this.setSeletedSlot(obj, isSelect);
},
selectedColor: buttontheme.BUBBLE_RIGHT_BG_COLOR || "#3c51f0",
unselectedColor: buttontheme.BUBBLE_LEFT_BG_COLOR || "#CCCCCC",
selectedBackgroundColor: "transparent",
size: item.size || 24,
borderWidth: item.borderWidth || 2
}
), /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.check_box_text,
{
color: "#444444",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
item.label
)),
item.type === "radio" && /* @__PURE__ */ React19.createElement(
RadioButton,
{
id: item?.id,
label: item.label,
value: item.label,
selected: item.isChecked,
onPress: (_id) => {
}
}
)
));
};
renderButtons = (item) => {
const buttonTheme = getBubbleTheme(this.props.theme);
if (item && item?.buttons && item?.buttons?.length > 0) {
let displayLimit = item?.buttonsLayout?.displayLimit?.count || 4;
let listItems = [];
console.log("displayLimit", displayLimit);
let splitIndex = (item?.buttons?.length >= displayLimit ? displayLimit : item?.buttons?.length) || 0;
listItems = item?.buttons?.slice(0, splitIndex);
let buttonAligment = item?.buttonsLayout?.buttonAligment || item?.buttonAligment || "left";
return /* @__PURE__ */ React19.createElement(
View7,
{
style: [
styles6.buttons_container,
buttonAligment === "fullwidth" && styles6.full_width1,
buttonAligment === "right" && styles6.right1
]
},
listItems?.map((button, index) => {
return /* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
key: index + "",
onPress: () => {
if (this.props.onListItemClick) {
let other = {};
let allSelections = [];
if (this.state.otherOptions?.length > 0) {
allSelections = [...allSelections, ...this.state.otherOptions];
}
if (this.state.radioOtherOptions?.length > 0) {
allSelections = [...allSelections, ...this.state.radioOtherOptions];
}
if (allSelections.length > 0) {
let msz = button.title + ": ";
allSelections.map((obj) => {
msz = msz + obj.value + ",";
});
other = {
title: msz,
payload: msz,
selectedOptions: allSelections
// Include structured data
};
}
this.props.onListItemClick(
this.props.payload?.template_type,
{
...button,
...other
}
);
}
},
style: [
styles6.button_container,
button?.class === "p-button" ? koraStyles.pbutton : koraStyles.sbutton,
styles6.button_container1,
buttonAligment === "fullwidth" && styles6.full_width2,
buttonAligment === "left" && {},
{ backgroundColor: item?.view == "options" ? index % 2 == 0 ? buttonTheme.BUBBLE_RIGHT_BG_COLOR : Color_default.transparent : "#E5E5FD" },
{ borderColor: item?.view == "options" ? index % 2 == 0 ? buttonTheme.BUBBLE_RIGHT_BG_COLOR : buttonTheme.BUBBLE_LEFT_BG_COLOR : "#DEDDFC" }
]
},
/* @__PURE__ */ React19.createElement(View7, { style: styles6.btn_main_con }, button?.icon && /* @__PURE__ */ React19.createElement(View7, { style: styles6.btn_icon }, this.renderImage({
image: button.icon,
iconShape: button?.iconShape,
width: 14,
//14,
height: 14,
//8,
iconSize: button?.iconSize
})), /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.button_text,
button?.class === "p-button" ? koraStyles.pbutton_text : koraStyles.sbutton_text,
{
color: item?.view == "options" ? index % 2 == 0 ? buttonTheme.BUBBLE_RIGHT_TEXT_COLOR : buttonTheme.BUBBLE_LEFT_TEXT_COLOR : "#3A35F6",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
button.title
))
);
}),
item?.buttons?.length > displayLimit && /* @__PURE__ */ React19.createElement(
LazyPopover_default,
{
ref: (ref) => this.popoverBtnRef = ref,
isVisible: this.state.showBtnPopover,
onRequestClose: () => {
this.setState({
showBtnPopover: false
});
},
from: /* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
onPress: () => {
this.setState({
showBtnPopover: true
});
},
style: [styles6.button_container, styles6.button_container2]
},
/* @__PURE__ */ React19.createElement(View7, { style: styles6.btn_sub2 }, /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.button_text,
{
color: "#3A35F6",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
"... More"
))
)
},
/* @__PURE__ */ React19.createElement(View7, { style: { marginTop: 10, marginBottom: 10 } }, item?.buttons?.map((button, index) => {
return /* @__PURE__ */ React19.createElement(
TouchableOpacity5,
{
key: index + "",
onPress: () => {
if (this.props.onListItemClick) {
let other = {};
let allSelections = [];
if (this.state.otherOptions?.length > 0) {
allSelections = [...allSelections, ...this.state.otherOptions];
}
if (this.state.radioOtherOptions?.length > 0) {
allSelections = [...allSelections, ...this.state.radioOtherOptions];
}
if (allSelections.length > 0) {
let msz = button.title + ": ";
allSelections.map((obj) => {
msz = msz + obj.value + ",";
});
other = {
title: msz,
payload: msz,
selectedOptions: allSelections
// Include structured data
};
}
this.props.onListItemClick(
this.props.payload?.template_type,
{
...button,
...other
}
);
this.setState({
showBtnPopover: false
});
}
},
style: [
styles6.button_container,
button?.class === "p-button" ? koraStyles.pbutton : koraStyles.sbutton,
styles6.button_container1,
buttonAligment === "fullwidth" && styles6.full_width2,
buttonAligment === "left" && {}
]
},
/* @__PURE__ */ React19.createElement(View7, { style: styles6.btn_main_con }, button?.icon && /* @__PURE__ */ React19.createElement(View7, { style: styles6.btn_icon }, this.renderImage({
image: button.icon,
iconShape: button?.iconShape,
width: 14,
//14,
height: 14,
//8,
iconSize: button?.iconSize
})), /* @__PURE__ */ React19.createElement(
Text6,
{
style: [
styles6.button_text,
button?.class === "p-button" ? koraStyles.pbutton_text : koraStyles.sbutton_text,
{
color: "#3A35F6",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
button.title
))
);
}))
)
);
}
};
render() {
return /* @__PURE__ */ React19.createElement(
View7,
{
style: {
alignContent: "flex-start",
justifyContent: "flex-start"
},
pointerEvents: this.isViewDisable() ? "none" : "auto"
},
this.state?.payload && this.state.listItems && this.listViewTemplate(this.state.payload)
);
}
};
var styles6 = StyleSheet6.create({
image: {
width: normalize(12),
height: normalize(12)
},
see_more_text: {
fontSize: normalize(14),
flexWrap: "wrap",
flexShrink: 1,
color: "#0D6EFD"
},
see_sub: {
justifyContent: "flex-start",
alignContent: "flex-start",
flexWrap: "wrap",
paddingBottom: 10,
paddingTop: 10,
paddingRight: 5,
paddingLeft: 20
},
see_main: {
marginEnd: 10,
justifyContent: "flex-end",
alignItems: "flex-end"
},
popover_main: {
paddingLeft: 15,
paddingTop: 10,
paddingBottom: 10,
marginRight: -5
//backgroundColor: 'yellow',
},
main: {
flexDirection: "column",
marginStart: 10,
marginEnd: 5,
paddingStart: 5,
padding: 5
},
check_box_text: {
color: "black",
fontSize: normalize(14),
alignSelf: "center"
},
opt_title_con: { padding: 10, marginBottom: 10 },
icon_type_sub1: {
marginEnd: 5,
marginStart: 5
},
btn_sub2: {
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
flexWrap: "wrap"
},
btn_icon: {
marginEnd: 5,
marginStart: 5
},
btn_main_con: {
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
flexWrap: "wrap"
},
full_width2: {
flex: 1
},
right1: {
//flex: 1,
alignItems: "flex-end",
justifyContent: "flex-end"
//backgroundColor: 'yellow',
},
full_width1: {
flexDirection: "column",
flexWrap: "nowrap",
flex: 1,
marginLeft: 10
//alignItems: 'center',
//justifyContent: 'center',
},
check_box: { paddingLeft: 8, paddingRight: 8 },
other_opt_con: {
flexDirection: "row",
padding: 10,
backgroundColor: "transparent",
marginBottom: 3
},
table_sub2: {
marginLeft: 5,
//backgroundColor: 'green',
minWidth: 50
},
table_item_con: {
flexWrap: "wrap",
marginBottom: 10,
flexDirection: "row",
padding: 5,
margin: 10
},
table_main_con: {
//flexWrap: 'wrap',
//flexDirection: 'row',
flexDirection: "row",
flexWrap: "wrap",
justifyContent: "flex-start",
// Align items to the start of the line
width: "100%"
},
icon_type_con: {
alignItems: "flex-end",
justifyContent: "center"
},
header_sub_con: {
flexDirection: "row",
flex: 1
//marginEnd: 10,
},
header_view_con: { flexDirection: "row", marginTop: 5, padding: 10 },
item_button: {
backgroundColor: "#E6E6FD",
borderRadius: 5,
padding: 6,
borderWidth: 1,
borderColor: "#DEDEFC"
},
assigne_text: {
alignContent: "center",
alignItems: "center",
justifyContent: "center",
fontSize: normalize(15),
color: "#FFFFFF"
},
assigne_container: {
width: normalize(28),
height: normalize(28),
marginEnd: 6,
alignItems: "center",
alignContent: "center",
justifyContent: "center"
},
circleStyle: {
borderColor: "#ffffff",
//borderWidth: 0.7,
borderRadius: 50,
//(48 * 0.62) / 2,
overflow: "hidden"
},
button_container1: {
flexDirection: "row",
alignItems: "center",
justifyContent: "center",
// flexWrap: 'wrap',
backgroundColor: "#E5E5FD",
borderColor: "#DEDDFC",
borderWidth: 1,
borderRadius: 5,
padding: 5,
marginBottom: 2,
marginLeft: 10
},
button_container2: {
flexDirection: "row",
//flex: 1,
alignItems: "center",
justifyContent: "center",
flexWrap: "wrap",
backgroundColor: "#E5E5FD",
borderColor: "#DEDDFC",
borderWidth: 1,
borderRadius: 5,
padding: 5,
marginBottom: 2,
marginLeft: 10
},
button_container: {
marginRight: 10,
marginTop: 10,
borderRadius: 3,
backgroundColor: "#E7F1FF"
},
header_view_container1: {
alignItems: "flex-start",
justifyContent: "flex-start"
},
header_view_container2: {
justifyContent: "center",
alignItems: "center"
},
header_view_container: {
marginEnd: 10,
marginStart: 10,
alignItems: "center",
justifyContent: "center"
},
info_main_container: {
alignContent: "center",
alignItems: "center",
justifyContent: "center",
marginEnd: 3
},
button_text: {
minWidth: 50,
padding: 2,
borderRadius: 8,
alignSelf: "center",
color: "#3A35F6",
alignContent: "center",
justifyContent: "center"
},
default_main_container: {
borderRadius: 5,
paddingTop: 10,
borderWidth: 1,
borderColor: "#E4E5E7",
width: "95%",
alignSelf: "flex-start"
},
buttons_container: {
minWidth: 50,
flexDirection: "row",
flexWrap: "wrap"
// backgroundColor: 'yellow',
},
main_title: {
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "600",
fontSize: 18,
lineHeight: 20,
alignItems: "flex-end",
color: "#202124",
marginTop: 10,
marginStart: 10
},
main_sub_title: {
fontFamily: "Inter",
fontStyle: "normal",
// fontWeight: 'bold',
fontSize: 18,
lineHeight: 20,
alignItems: "flex-end",
marginBottom: 15,
color: "#202124",
marginStart: 10,
marginTop: 5
},
item_title: {
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "bold",
fontSize: 16,
color: "#202124"
},
item_desc: {
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "normal",
fontSize: 14,
letterSpacing: 0.270833,
marginTop: 2,
marginLeft: 0,
color: "#5F6368"
},
item_title1: {
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "normal",
fontSize: 14,
letterSpacing: 0.270833,
marginTop: 2,
color: "#5F6368"
},
line: {
backgroundColor: "#E4E5E7",
height: 0.5,
width: "100%",
marginTop: 10,
marginBottom: 15,
marginStart: -5
},
imageStyle1: {
flexDirection: "row",
marginBottom: 5
}
});
// bot-sdk/templates/CardTemplate.tsx
init_esm_shims();
import * as React20 from "react";
import {
View as View8,
Text as Text7,
StyleSheet as StyleSheet7,
TouchableOpacity as TouchableOpacity6,
Dimensions as Dimensions4
} from "react-native";
var BORDER = {
WIDTH: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
COLOR: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
//'#728387', //'#E0E1E9',
RADIUS: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
TEXT_COLOR: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
TEXT_SIZE: TEMPLATE_STYLE_VALUES.TEXT_SIZE
};
var windowWidth2 = Dimensions4.get("window").width;
var CardTemplate = class extends BaseView_default {
constructor(props) {
super(props);
}
defaultCardView = (item, index, width8) => {
let headerStyles;
if (item?.cardHeading?.headerStyles) {
headerStyles = convertToRNStyle(item?.cardHeading?.headerStyles);
} else {
if (item?.cardStyles) {
headerStyles = convertToRNStyle(item?.cardStyles);
}
}
let cardStyles;
if (item?.cardStyles) {
cardStyles = convertToRNStyle(item?.cardStyles);
}
let cardContentStyles;
if (item?.cardContentStyles) {
cardContentStyles = convertToRNStyle(item?.cardContentStyles);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React20.createElement(
View8,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
key: index,
style: [
styles7.container,
{
width: width8
}
]
},
/* @__PURE__ */ React20.createElement(
View8,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles7.sub_container, cardStyles]
},
/* @__PURE__ */ React20.createElement(
View8,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [
styles7.sub_container_1,
cardContentStyles,
(item?.cardContentStyles?.["border-left"] || item?.cardStyles?.["border-left"]) && {
borderColor: item?.cardContentStyles?.["border-left"]?.split(" ")?.[2] || item?.cardStyles?.["border-left"]?.split(" ")?.[2] || BORDER.COLOR,
borderLeftWidth: normalize(5),
borderRadius: 10
}
]
},
item?.cardHeading?.title && /* @__PURE__ */ React20.createElement(
View8,
{
style: [
styles7.header_container,
item?.cardHeading?.headerStyles && {
borderWidth: StyleSheet7.hairlineWidth
},
headerStyles,
!item?.cardDescription && {
borderBottomEndRadius: BORDER.RADIUS,
borderBottomStartRadius: BORDER.RADIUS,
borderColor: "transparent",
margin: 3
},
{ flexDirection: "column" }
]
},
/* @__PURE__ */ React20.createElement(View8, { style: [styles7.header_sub_container, { flexDirection: "row", backgroundColor: "transparent" }] }, item?.cardHeading?.icon && /* @__PURE__ */ React20.createElement(
View8,
{
style: {
justifyContent: "flex-start",
marginTop: 5,
marginLeft: 8
}
},
renderImage({
image: item?.cardHeading?.icon,
iconShape: void 0,
iconSize: item?.cardHeading?.iconSize || "medium"
})
), /* @__PURE__ */ React20.createElement(View8, { style: { flex: 1, flexDirection: "column" } }, /* @__PURE__ */ React20.createElement(
Text7,
{
numberOfLines: 1,
style: [
styles7.item_title,
styles7.title_style,
headerStyles,
{
paddingEnd: 10,
fontWeight: "bold",
fontSize: normalize(12),
flex: 1,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
item?.cardHeading?.title
), item?.cardHeading?.description && /* @__PURE__ */ React20.createElement(
Text7,
{
style: [
styles7.item_title,
styles7.title_style,
{
fontWeight: "normal",
paddingTop: 0,
fontSize: normalize(14),
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size,
{ paddingBottom: 0 }
]
},
item?.cardHeading?.description
)), item?.cardHeading?.headerExtraInfo?.title && /* @__PURE__ */ React20.createElement(
Text7,
{
style: [
styles7.item_title,
styles7.title_style,
{
letterSpacing: 0,
fontWeight: "normal",
color: Color_default.gray,
fontSize: normalize(12),
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter",
paddingTop: 8,
flex: 0
}
]
},
item?.cardHeading?.headerExtraInfo?.title
), item?.cardHeading?.headerExtraInfo?.icon && /* @__PURE__ */ React20.createElement(
View8,
{
style: {
marginTop: 10,
marginEnd: 6,
marginStart: 6
}
},
renderImage({
image: item?.cardHeading?.headerExtraInfo?.icon,
iconShape: "square"
})
)),
/* @__PURE__ */ React20.createElement(View8, { style: [styles7.header_sub_container, { flexDirection: "column", backgroundColor: "transparent" }] }, item?.cardType === "list" && item?.cardDescription && //Horizontal list
/* @__PURE__ */ React20.createElement(View8, { style: [styles7.sub_view_container, { paddingBottom: 5, paddingStart: 5, paddingTop: 0, borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || "#ff0000", flexDirection: "row", flex: 1, borderWidth: 0 }] }, item?.cardDescription?.map((desc, index2) => {
return /* @__PURE__ */ React20.createElement(View8, { key: index2 + "", style: [styles7.desc_container, { flexDirection: "column", paddingBottom: 0 }] }, /* @__PURE__ */ React20.createElement(
View8,
{
style: {
alignItems: "center",
justifyContent: "center"
}
},
renderImage({
image: desc?.icon,
iconShape: void 0,
iconSize: desc?.iconSize
})
), /* @__PURE__ */ React20.createElement(
Text7,
{
style: [
styles7.desc_text,
{
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
desc.description
), /* @__PURE__ */ React20.createElement(
Text7,
{
style: [
styles7.desc_text,
{
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter",
fontWeight: "bold"
},
botStyles["small"]?.size,
{ marginTop: 5, marginBottom: 5 }
]
},
desc.title
));
})))
),
item?.cardType !== "list" && item?.cardDescription && //vertical list
/* @__PURE__ */ React20.createElement(View8, { style: [styles7.sub_view_container, { borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || "#ff0000" }] }, item?.cardDescription?.map((desc, index2) => {
return /* @__PURE__ */ React20.createElement(View8, { key: index2 + "", style: styles7.desc_container }, /* @__PURE__ */ React20.createElement(
View8,
{
style: {
alignItems: "center",
justifyContent: "center"
}
},
renderImage({
image: desc?.icon,
iconShape: void 0,
iconSize: desc?.iconSize
})
), /* @__PURE__ */ React20.createElement(
Text7,
{
style: [
styles7.desc_text,
{
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
desc.title
));
})),
item?.buttons && /* @__PURE__ */ React20.createElement(View8, { style: { flexDirection: "row" } }, item?.buttons?.map((btn, index2) => {
let buttonStyles;
if (btn?.buttonStyles) {
buttonStyles = convertToRNStyle(btn?.buttonStyles);
}
return /* @__PURE__ */ React20.createElement(
View8,
{
key: index2 + "",
style: [
styles7.buttons_container,
buttonStyles,
index2 === 0 && {
borderBottomLeftRadius: BORDER.RADIUS - 1
},
index2 === item?.buttons.length - 1 && {
borderBottomRightRadius: BORDER.RADIUS - 1,
marginEnd: 0
}
]
},
/* @__PURE__ */ React20.createElement(
TouchableOpacity6,
{
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
btn
);
}
},
style: styles7.button
},
/* @__PURE__ */ React20.createElement(
Text7,
{
style: [
styles7.button_text,
btn?.buttonStyles && {
color: btn?.buttonStyles?.color || Color_default.black
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size,
{
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
btn?.title
)
)
);
}))
)
)
);
};
getCardViews = (cards = []) => {
if (!cards.length) {
return /* @__PURE__ */ React20.createElement(React20.Fragment, null);
}
const width8 = windowWidth2 * 0.8;
return /* @__PURE__ */ React20.createElement(View8, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, cards.map((item, index) => {
return this.defaultCardView(item, index, width8);
}));
};
render() {
return this.props?.payload?.cards ? this.getCardViews(this.props.payload.cards) : /* @__PURE__ */ React20.createElement(React20.Fragment, null);
}
};
var styles7 = StyleSheet7.create({
card_heading_desc: {
fontWeight: "normal",
paddingTop: 0,
fontSize: normalize(14)
},
button_text: {
alignContent: "center",
alignSelf: "center",
fontSize: normalize(15)
},
button: {
//backgroundColor: 'green',
height: normalize(40),
justifyContent: "center"
},
buttons_container: {
flex: 1,
//margin: StyleSheet.hairlineWidth,
borderWidth: BORDER.WIDTH,
borderColor: BORDER.COLOR,
marginEnd: 2,
backgroundColor: Color_default.white
},
extra_icon: {
marginStart: 5,
marginTop: 3
},
header_extra_info: {
flexDirection: "row",
justifyContent: "flex-start",
marginTop: 5,
marginEnd: 5,
marginStart: 5
},
list_card_header_icon: {
justifyContent: "flex-start",
marginTop: 5,
marginLeft: 8
},
list_title_container: {
paddingTop: 5,
paddingBottom: 5,
flexDirection: "row"
},
desc_text: {
fontFamily: "Inter",
fontStyle: "normal",
fontSize: normalize(14),
paddingStart: 8,
color: Color_default.black
//flex: 1,
},
desc_container: {
flexDirection: "row",
marginTop: 10,
paddingBottom: 8,
//flexGrow: 1,
//flexWrap: 'wrap',
//flex: 1,
paddingEnd: 10
},
title_style: {
fontFamily: "inter",
fontSize: normalize(15),
flexDirection: "row",
paddingStart: 8,
paddingBottom: 5,
paddingTop: 5
},
header_container: {
paddingTop: 5,
paddingBottom: 5,
//paddingEnd: 5,
// marginTop: 5,
//marginEnd: 0.2,
flexDirection: "row",
//flex: 1,
borderTopEndRadius: BORDER.RADIUS,
borderTopStartRadius: BORDER.RADIUS,
backgroundColor: Color_default.white,
borderColor: BORDER.COLOR,
borderWidth: 1
},
header_sub_container: {
backgroundColor: Color_default.white
},
sub_container_1: {
//flex: 1,
// marginEnd: 10,
//marginStart: 10,
borderWidth: BORDER.WIDTH,
flex: 1,
borderRadius: BORDER.RADIUS,
borderBottomEndRadius: BORDER.RADIUS,
borderBottomStartRadius: BORDER.RADIUS,
borderColor: BORDER.COLOR
},
sub_container: {
flexDirection: "column",
backgroundColor: Color_default.white,
marginBottom: 0,
width: "100%",
borderRadius: BORDER.RADIUS
},
container: {
backgroundColor: "transparent",
paddingBottom: 10
},
sub_view_container: {
paddingTop: 5,
marginEnd: BORDER.WIDTH,
paddingStart: 10,
borderBottomEndRadius: BORDER.RADIUS,
borderBottomStartRadius: BORDER.RADIUS,
paddingBottom: 10,
borderWidth: 1
},
image_container: {},
unfurlUrl4: {
borderColor: "gray",
resizeMode: "cover",
alignSelf: "center",
alignContent: "center",
overflow: "hidden",
marginTop: 3
},
item_title: {
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "bold",
fontSize: 16,
letterSpacing: 0.270833,
color: "#202124",
flex: 1
},
item_desc: {
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "normal",
fontSize: normalize(14),
letterSpacing: 0.270833,
alignItems: "flex-start",
textAlign: "justify",
color: "#616368"
//'#5F6368',
}
});
// bot-sdk/templates/CarouselTemplate.tsx
init_esm_shims();
import * as React21 from "react";
import {
Dimensions as Dimensions5,
Platform as Platform4,
StyleSheet as StyleSheet8,
Text as Text8,
TouchableOpacity as TouchableOpacity7,
View as View9
} from "react-native";
import FastImage3 from "react-native-fast-image";
init_PlatformCheck();
var windowWidth3 = Dimensions5.get("window").width;
var CarouselTemplate = class extends BaseView_default {
max_btn_count = 0;
constructor(props) {
super(props);
this.state = {
elements: null,
CarouselComponent: null,
isCarouselLoading: false
};
}
// Lazy loading method for carousel
loadCarouselComponent = async () => {
if (this.state.CarouselComponent || this.state.isCarouselLoading) {
return this.state.CarouselComponent;
}
this.setState({ isCarouselLoading: true });
try {
const CarouselModule = await import("react-native-reanimated-carousel");
const CarouselComponent = CarouselModule.default || CarouselModule;
this.setState({
CarouselComponent,
isCarouselLoading: false
});
return CarouselComponent;
} catch (error) {
console.warn("Failed to load Carousel component:", error);
this.setState({
CarouselComponent: null,
isCarouselLoading: false
});
return null;
}
};
componentDidMount() {
const payload = this.props.payload;
payload?.elements.map((item) => {
if (this.max_btn_count < item?.buttons.length) {
this.max_btn_count = item?.buttons.length;
}
});
this.setState({
elements: payload.elements
});
this.loadCarouselComponent();
}
getSingleCarouselView = (item, index, isStacked) => {
let btnViews = item?.buttons.map((btn, _index) => {
return this.getSingleButtonView(
btn,
_index,
item?.buttons.length,
isStacked
);
});
let Image_Http_URL = {
uri: item.image_url,
priority: FastImage3.priority.high,
cache: FastImage3.cacheControl.immutable
// Use cache effectively
};
const MainWrapper = item?.default_action ? TouchableOpacity7 : View9;
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React21.createElement(View9, { key: index, style: [styles8.container, { borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || "transparent", borderWidth: 1 }] }, /* @__PURE__ */ React21.createElement(
MainWrapper,
{
style: { flex: 1 },
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
item?.default_action
);
}
}
},
/* @__PURE__ */ React21.createElement(View9, { style: {} }, item?.image_url && /* @__PURE__ */ React21.createElement(View9, { style: styles8.image_con }, /* @__PURE__ */ React21.createElement(FastImage3, { source: Image_Http_URL, style: styles8.image })), /* @__PURE__ */ React21.createElement(View9, null, item?.title && /* @__PURE__ */ React21.createElement(
Text8,
{
style: [
styles8.title,
{
color: Color_default.black,
fontFamily: this.props.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size,
{}
],
numberOfLines: 1
},
item?.title
), item?.subtitle ? /* @__PURE__ */ React21.createElement(
Text8,
{
style: [
styles8.subtitle,
{
color: Color_default.black,
fontFamily: this.props.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
],
numberOfLines: 2
},
item?.subtitle
) : /* @__PURE__ */ React21.createElement(React21.Fragment, null))),
/* @__PURE__ */ React21.createElement(View9, { style: styles8.stack_main }, item?.topSection && /* @__PURE__ */ React21.createElement(View9, { style: styles8.top_sec_main }, /* @__PURE__ */ React21.createElement(Text8, { numberOfLines: 2, style: styles8.top_sec_text }, item?.topSection?.title)), item?.middleSection && /* @__PURE__ */ React21.createElement(View9, { style: styles8.mid_sec_main }, /* @__PURE__ */ React21.createElement(Text8, { numberOfLines: 2, style: styles8.mid_sec_text }, item?.middleSection?.description)), item?.bottomSection && /* @__PURE__ */ React21.createElement(View9, { style: styles8.bot_sec_main }, /* @__PURE__ */ React21.createElement(Text8, { numberOfLines: 2, style: styles8.bot_sec_text }, item?.bottomSection?.title), /* @__PURE__ */ React21.createElement(Text8, { style: styles8.bot_sec_desc }, item?.bottomSection?.description)), item?.default_action?.type === "web_url" && /* @__PURE__ */ React21.createElement(
TouchableOpacity7,
{
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
item?.default_action
);
}
},
style: [
styles8.top_sec_main,
isIOS ? { marginTop: 5 } : { marginTop: 15 }
]
},
/* @__PURE__ */ React21.createElement(Text8, { numberOfLines: 2, style: [{ color: Color_default.blue }] }, item?.default_action?.url)
))
), /* @__PURE__ */ React21.createElement(View9, { key: index }, /* @__PURE__ */ React21.createElement(View9, { style: styles8.btnStyles }, btnViews)));
};
getSingleButtonView = (item, index, count, isStacked) => {
const bTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React21.createElement(
TouchableOpacity7,
{
disabled: this.isViewDisable(),
key: index,
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
item
);
}
},
style: [
styles8.btn_view,
{
borderRadius: 5
},
isStacked && {
borderColor: bTheme.BUBBLE_RIGHT_BG_COLOR,
borderWidth: 1
},
{
backgroundColor: isStacked ? Color_default.white : bTheme.BUBBLE_RIGHT_BG_COLOR
}
]
},
/* @__PURE__ */ React21.createElement(View9, { style: [styles8.main_view_1] }, /* @__PURE__ */ React21.createElement(
Text8,
{
style: [
styles8.item_text,
{
color: isStacked ? bTheme.BUBBLE_RIGHT_BG_COLOR : bTheme.BUBBLE_RIGHT_TEXT_COLOR,
fontFamily: this.props?.theme?.v3?.body?.font?.family
}
]
},
item.title
))
);
};
getTemplateWidth = () => {
const value = this.props?.theme?.v3?.body?.icon?.show ? normalize(50) : normalize(30);
return windowWidth3 - value;
};
renderCarouselView = (list) => {
if (!list || list?.length <= 0) {
return /* @__PURE__ */ React21.createElement(React21.Fragment, null);
}
const { CarouselComponent, isCarouselLoading } = this.state;
if (isCarouselLoading || !CarouselComponent) {
return /* @__PURE__ */ React21.createElement(View9, { style: { padding: 20, alignItems: "center" } }, /* @__PURE__ */ React21.createElement(Text8, { style: { color: Color_default.text_color } }, "Loading carousel..."));
}
const isStacked = this.props.payload?.carousel_type === "stacked" || false;
const width8 = this.getTemplateWidth();
if (isStacked) {
const height1 = normalize(150) + normalize(42) * this.max_btn_count;
return /* @__PURE__ */ React21.createElement(View9, { style: { marginTop: 20 } }, /* @__PURE__ */ React21.createElement(
CarouselComponent,
{
loop: false,
width: windowWidth3 * 0.85,
height: height1,
data: list,
pagingEnabled: true,
mode: "parallax",
modeConfig: {
parallaxScrollingScale: 0.9,
parallaxScrollingOffset: 140,
// Fine-tune offset for visibility
parallaxAdjacentItemScale: 0.6
},
style: { overflow: "visible" },
snapEnabled: true,
renderItem: ({ item, index }) => /* @__PURE__ */ React21.createElement(View9, { style: [{}, styles8.shadowContainer1] }, this.getSingleCarouselView(item, index, true))
}
));
}
const height = normalize(320) + normalize(42) * this.max_btn_count;
return /* @__PURE__ */ React21.createElement(
CarouselComponent,
{
loop: false,
width: width8 * 0.85,
height,
data: list,
mode: "undefined",
style: { alignSelf: "flex-start", overflow: "visible", justifyContent: "flex-start" },
onSnapToItem: (index) => console.log("parallax current index:", index),
renderItem: ({ item, index }) => /* @__PURE__ */ React21.createElement(View9, { style: [{ width: width8 * 0.8 }, styles8.shadowContainer] }, this.getSingleCarouselView(item, index))
}
);
};
render() {
return /* @__PURE__ */ React21.createElement(
View9,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles8.sub_container, isAndroid ? {} : {}]
},
this.renderCarouselView(this.state.elements)
);
}
};
var styles8 = StyleSheet8.create({
bot_sec_desc: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontWeight: "normal"
},
bot_sec_text: {
flex: 1,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontWeight: "normal"
},
bot_sec_main: {
flex: 1,
flexDirection: "row",
alignItems: "flex-start"
},
mid_sec_text: {
flex: 1,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontWeight: "normal"
},
mid_sec_main: {
flex: 1,
flexDirection: "row",
alignItems: "center"
},
top_sec_text: {
flex: 1,
marginTop: 10,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontWeight: "700"
},
top_sec_main: {
flex: 1,
flexDirection: "row",
alignItems: "flex-start"
},
stack_main: {
flex: 1,
marginHorizontal: 15
},
sub_container: {
backgroundColor: Color_default.white
// flex: 1, //Comment for BotSDK, uncomment for Templates NPM lib
/*
for Template npm lib
"react-native-reanimated-carousel": "^3.4.0”,
For BotSDK NPM lib
"react-native-reanimated-carousel": “^3.1.5”,
*/
},
image: {
height: normalize(150),
width: "95%",
resizeMode: "stretch",
//margin: 0,
marginTop: 10,
borderRadius: 5,
borderColor: Color_default.black,
borderWidth: StyleSheet8.hairlineWidth
},
image_con: {
justifyContent: "center",
alignItems: "center",
padding: 5
},
shadowContainer: {
flex: 1,
justifyContent: "flex-start",
// marginRight: '18.5%',
// margin: 5,
borderRadius: 10,
backgroundColor: "white",
// Set the background color of the view
// borderRadius: 10, // Optional: Set borderRadius for rounded corners
padding: 1,
// Optional: Set padding for inner content
...Platform4.select({
ios: {
shadowColor: "#000",
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.25,
shadowRadius: 3.84
},
android: {
elevation: 5
}
})
},
shadowContainer1: {
flex: 1,
justifyContent: "center",
//marginRight: '20.5%',
margin: 5,
borderRadius: 5,
// borderRadius: 10, // Optional: Set borderRadius for rounded corners
padding: 1,
// Optional: Set padding for inner content
...Platform4.select({
ios: {
shadowColor: "#000",
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.25,
shadowRadius: 3.84
},
android: {
elevation: 3
}
})
},
container: {
flex: 1,
// padding: 5,
backgroundColor: Color_default.white,
borderRadius: 10,
margin: -1
// width: width * 0.6,
},
btnStyles: {
//flex: 1,
justifyContent: "flex-end",
marginBottom: 5,
marginEnd: 5
},
title: {
fontStyle: "normal",
fontFamily: "Inter",
marginHorizontal: 15,
marginBottom: 5,
alignSelf: "flex-start",
marginTop: 10,
fontWeight: "500"
},
subtitle: {
fontWeight: "400",
fontStyle: "normal",
fontFamily: "Inter",
marginHorizontal: 15,
marginBottom: 5,
alignSelf: "flex-start",
marginTop: 0,
opacity: 0.8
},
btn_view: {
paddingBottom: 0,
flexDirection: "column",
alignItems: "center",
backgroundColor: "blue",
marginLeft: 10,
marginRight: 5,
marginBottom: 5
},
line: { backgroundColor: Color_default.white, width: "100%", height: normalize(1.3) },
item_text: {
fontFamily: "Inter",
alignSelf: "center",
color: "white",
padding: 5,
textTransform: "uppercase",
fontSize: TEMPLATE_STYLE_VALUES.SUB_TEXT_SIZE
},
main_view_1: { margin: 5, padding: 3 },
itemContainer: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
imageContainer: {
width: windowWidth3 * 0.8,
height: 200,
overflow: "hidden",
borderRadius: 15
},
image1: {
width: "100%",
height: "100%",
resizeMode: "cover"
},
title1: {
marginTop: 10,
fontSize: 18,
fontWeight: "bold",
color: "#333"
}
});
// bot-sdk/templates/DateTemplate.tsx
init_esm_shims();
import * as React38 from "react";
import { StyleSheet as StyleSheet21, View as View26 } from "react-native";
// bot-sdk/components/datePicker/ComposePicker.tsx
init_esm_shims();
import React35, { Component as Component20 } from "react";
import {
View as View23,
Modal as Modal4,
Text as Text19,
TouchableOpacity as TouchableOpacity12,
StyleSheet as StyleSheet18,
Alert as Alert4
} from "react-native";
// bot-sdk/components/datePicker/DateRange.js
init_esm_shims();
import React34, { Component as Component19 } from "react";
import { Text as Text18, View as View22, TouchableOpacity as TouchableOpacity11, Platform as Platform8 } from "react-native";
import dayjs5 from "dayjs";
// bot-sdk/components/datePicker/normalizeText.js
init_esm_shims();
import { PixelRatio as PixelRatio2, Dimensions as Dimensions6 } from "react-native";
var pixelRatio = PixelRatio2.get();
var deviceHeight = Dimensions6.get("window").height;
var deviceWidth = Dimensions6.get("window").width;
var normalize2 = (size) => {
if (pixelRatio === 2) {
if (deviceWidth < 360) {
return size * 0.95;
}
if (deviceHeight < 667) {
return size;
} else if (deviceHeight >= 667 && deviceHeight <= 735) {
return size * 1.15;
}
return size * 1.25;
}
if (pixelRatio === 3) {
if (deviceWidth <= 360) {
return size;
}
if (deviceHeight < 667) {
return size * 1.15;
}
if (deviceHeight >= 667 && deviceHeight <= 735) {
return size * 1.2;
}
return size * 1.27;
}
if (pixelRatio === 3.5) {
if (deviceWidth <= 360) {
return size;
}
if (deviceHeight < 667) {
return size * 1.2;
}
if (deviceHeight >= 667 && deviceHeight <= 735) {
return size * 1.25;
}
return size * 1.4;
}
return size;
};
var normalizeText_default = normalize2;
// bot-sdk/components/datePicker/Month.js
init_esm_shims();
import React23, { Component as Component8 } from "react";
import { View as View11, Text as Text10 } from "react-native";
import dayjs4 from "dayjs";
// bot-sdk/components/datePicker/Week.js
init_esm_shims();
import React22, { Component as Component7 } from "react";
import { Text as Text9, TouchableOpacity as TouchableOpacity8, View as View10 } from "react-native";
import dayjs3 from "dayjs";
// bot-sdk/components/datePicker/dates.js
init_esm_shims();
var dates = (startDate, endDate, focusedInput) => {
if (focusedInput === "startDate") {
if (startDate && endDate) {
return { startDate, endDate: null, focusedInput: "endDate" };
}
return { startDate, endDate, focusedInput: "endDate" };
}
if (focusedInput === "endDate") {
if (endDate && startDate && endDate.isBefore(startDate)) {
return { startDate: endDate, endDate: null, focusedInput: "endDate" };
}
return { startDate, endDate, focusedInput: "startDate" };
}
return { startDate, endDate, focusedInput };
};
// bot-sdk/components/datePicker/Week.js
import "dayjs/locale/en";
import isBetween from "dayjs/plugin/isBetween";
dayjs3.extend(isBetween);
var styles9 = {
week: {
flexDirection: "row",
marginVertical: 5
},
day: {
flexGrow: 1,
flexBasis: 1,
alignItems: "center"
},
dayText: {
color: "#555555",
fontWeight: "500",
fontSize: normalizeText_default(12)
},
dayBlocked: {
backgroundColor: "rgb(255, 255, 255)"
},
daySelected: {
backgroundColor: "rgb(71, 81, 177)"
},
dayDisabledText: {
color: "gray",
opacity: 0.5,
fontWeight: "400"
},
daySelectedText: {
color: "rgb(252, 252, 252)"
},
dayStarted: {
borderTopLeftRadius: 20,
borderBottomLeftRadius: 20
},
dayEnded: {
borderTopRightRadius: 20,
borderBottomRightRadius: 20
},
borderContainer: {
width: 40,
height: 40,
alignItems: "center",
justifyContent: "center"
}
};
var Week = class extends Component7 {
render() {
const {
customStyles: customStyles2 = {},
mode,
date,
startDate,
endDate,
focusedInput,
startOfWeek,
onDatesChange,
isDateBlocked,
onDisableClicked,
selectedBgColor,
selectedTextColor,
currentDate,
endOfMonth,
startOfMonth
} = this.props;
const days = [];
const endOfWeek = dayjs3(startOfWeek).endOf("week");
const areDatesInSameMonth = (date1, date2) => {
return dayjs3(date1).isSame(date2, "month");
};
const weekRange = [];
let currentDay = dayjs3(startOfWeek).startOf("day");
while (currentDay.isBefore(endOfWeek) || currentDay.isSame(endOfWeek, "day")) {
weekRange.push(currentDay);
currentDay = currentDay.add(1, "day");
}
weekRange.forEach((day) => {
const onPress = () => {
if (isDateBlocked(day)) {
onDisableClicked(day);
} else if (mode === "range") {
let isPeriodBlocked = false;
const start = focusedInput === "startDate" ? day : startDate;
const end = focusedInput === "endDate" ? day : endDate;
if (start && end) {
createDateRange(start, end).forEach((dayPeriod) => {
if (isDateBlocked(dayPeriod))
isPeriodBlocked = true;
});
}
onDatesChange(
isPeriodBlocked ? dates(end, null, "startDate") : dates(start, end, focusedInput)
);
} else if (mode === "single") {
onDatesChange({ currentDate: day });
} else {
onDatesChange({ date: day });
}
};
const isDateRangeSelected = () => {
if (mode === "range") {
if (startDate && endDate) {
return (day.isSame(startDate, "day") || day.isAfter(startDate, "day")) && (day.isSame(endDate, "day") || day.isBefore(endDate, "day"));
}
return startDate && day.isSame(startDate, "day") || endDate && day.isSame(endDate, "day");
}
return date && day.isSame(date, "day");
};
const isDateSelected = () => {
if (mode === "single") {
return currentDate && day.isSame(currentDate, "day");
}
return date && day.isSame(date, "day");
};
const isDateStart = () => {
return startDate && day.isSame(startDate, "day");
};
const isDateEnd = () => {
return endDate && day.isSame(endDate, "day");
};
let isBlocked = !areDatesInSameMonth(endOfMonth, day);
if (isDateBlocked(day)) {
isBlocked = true;
}
const isRangeSelected = isDateRangeSelected();
const isStart = isDateStart();
const isEnd = isDateEnd();
const isSelected = isDateSelected();
const dayRangeSelectedStyle = selectedBgColor ? [styles9.daySelected, { backgroundColor: selectedBgColor }] : styles9.daySelected;
const daySelectedText = selectedTextColor ? [styles9.daySelectedText, { color: selectedTextColor }] : styles9.daySelectedText;
const style = [
styles9.day,
isBlocked && styles9.dayBlocked,
isRangeSelected && dayRangeSelectedStyle,
isStart && styles9.dayStarted,
isEnd && styles9.dayEnded
];
const styleText = [
styles9.dayText,
customStyles2.datePickerText,
isBlocked && styles9.dayDisabledText,
isRangeSelected && daySelectedText,
isSelected && daySelectedText
];
const borderContainer = mode === "single" && isSelected ? [
styles9.borderContainer,
{
borderRadius: 20,
backgroundColor: selectedBgColor ? selectedBgColor : styles9.daySelected.backgroundColor
}
] : styles9.borderContainer;
days.push(
/* @__PURE__ */ React22.createElement(
TouchableOpacity8,
{
key: day.format("YYYY-MM-DD"),
style,
onPress,
disabled: isBlocked && !onDisableClicked
},
/* @__PURE__ */ React22.createElement(View10, { style: borderContainer }, /* @__PURE__ */ React22.createElement(Text9, { style: styleText }, day.format("DD")))
)
);
});
return /* @__PURE__ */ React22.createElement(View10, { style: styles9.week }, days);
}
};
// bot-sdk/components/datePicker/Month.js
dayjs4.extend(__require("dayjs/plugin/advancedFormat"));
var styles10 = {
month: {},
week: {
flexDirection: "row",
marginVertical: 5
// justifyContent: 'space-between',
},
dayName: {
flexGrow: 1,
flexBasis: 1,
textAlign: "center",
color: "#555555",
opacity: 0.9,
fontWeight: "500",
fontSize: normalizeText_default(12)
}
};
var Month = class extends Component8 {
render() {
const {
customStyles: customStyles2 = {},
mode,
date,
startDate,
endDate,
focusedInput,
currentDate,
focusedMonth,
onDatesChange,
isDateBlocked,
onDisableClicked,
selectedBgColor,
selectedTextColor
} = this.props;
const dayNames = [];
const weeks = [];
const startOfMonth = focusedMonth?.clone()?.startOf("month");
const endOfMonth = focusedMonth?.clone?.()?.endOf("month");
const currentDate1 = startOfMonth ? dayjs4(startOfMonth) : dayjs4();
const weekStart = currentDate1.clone().startOf("week");
const weekEnd = currentDate1.clone().endOf("week");
let currentDay = weekStart;
while (currentDay.isBefore(weekEnd) || currentDay.isSame(weekEnd)) {
dayNames.push(
/* @__PURE__ */ React23.createElement(
Text10,
{
key: currentDay.format("YYYY-MM-DD"),
style: [styles10.dayName, customStyles2.dayNameText]
},
currentDay.format("dd")[0]
)
);
currentDay = currentDay.add(1, "day");
}
const weekRange = [];
currentDay = weekStart;
while (currentDay.isBefore(endOfMonth) || currentDay.isSame(weekEnd)) {
weekRange.push(currentDay);
currentDay = currentDay.add(7, "day");
}
weekRange.forEach((week) => {
weeks.push(
/* @__PURE__ */ React23.createElement(
Week,
{
customStyles: customStyles2,
key: week.format("YYYY-MM-DD"),
mode,
date,
startDate,
endDate,
focusedInput,
currentDate,
focusedMonth,
startOfWeek: week,
onDatesChange,
isDateBlocked,
onDisableClicked,
selectedBgColor,
selectedTextColor,
startOfMonth,
endOfMonth
}
)
);
});
return /* @__PURE__ */ React23.createElement(View11, { style: styles10.month }, /* @__PURE__ */ React23.createElement(View11, { style: styles10.week }, dayNames), weeks);
}
};
// bot-sdk/components/lazy-loading/index.ts
init_esm_shims();
// bot-sdk/components/LazyDateTimePicker.tsx
init_esm_shims();
import React24, { Component as Component9 } from "react";
import { View as View12, Text as Text11, StyleSheet as StyleSheet9, Platform as Platform5 } from "react-native";
var LazyDateTimePicker = class extends Component9 {
mounted = true;
constructor(props) {
super(props);
this.state = {
DateTimePickerComponent: null,
isLoading: false,
loadError: null
};
}
componentDidMount() {
this.loadDateTimePicker();
}
componentWillUnmount() {
this.mounted = false;
}
async loadDateTimePicker() {
if (this.state.DateTimePickerComponent || this.state.isLoading) {
return;
}
this.setState({ isLoading: true, loadError: null });
try {
const DateTimePickerModule = await LazyLoader.importModule(
() => import("@react-native-community/datetimepicker"),
"datetimepicker"
);
if (this.mounted) {
const DateTimePickerComponent = DateTimePickerModule?.default || DateTimePickerModule || null;
if (!DateTimePickerComponent) {
throw new Error("DateTimePicker component not found in module");
}
this.setState({
DateTimePickerComponent,
isLoading: false,
loadError: null
});
}
} catch (error) {
console.warn("Failed to load DateTimePicker:", error);
if (this.mounted) {
this.setState({
isLoading: false,
loadError: error instanceof Error ? error.message : "Unknown error"
});
}
}
}
render() {
const {
fallbackComponent: FallbackComponent,
loadingComponent: LoadingComponent,
errorComponent: ErrorComponent,
...dateTimePickerProps
} = this.props;
const { DateTimePickerComponent, isLoading, loadError } = this.state;
if (isLoading) {
if (LoadingComponent) {
return /* @__PURE__ */ React24.createElement(LoadingComponent, null);
}
return /* @__PURE__ */ React24.createElement(DefaultLoader, { text: "Loading date picker..." });
}
if (loadError) {
if (ErrorComponent) {
return /* @__PURE__ */ React24.createElement(ErrorComponent, { error: loadError });
}
if (FallbackComponent) {
return /* @__PURE__ */ React24.createElement(FallbackComponent, { ...dateTimePickerProps });
}
return /* @__PURE__ */ React24.createElement(ErrorFallback, { error: `Date picker unavailable: ${loadError}` });
}
if (DateTimePickerComponent) {
return /* @__PURE__ */ React24.createElement(DateTimePickerComponent, { ...dateTimePickerProps });
}
if (FallbackComponent) {
return /* @__PURE__ */ React24.createElement(FallbackComponent, { ...dateTimePickerProps });
}
return /* @__PURE__ */ React24.createElement(DefaultLoader, { text: "Initializing date picker..." });
}
};
var FallbackDateTimePicker = ({
value,
mode = "date",
onChange,
style
}) => {
const handlePress = () => {
if (Platform5.OS === "web") {
console.log("Fallback: Use native browser date picker");
} else {
console.log("Fallback: DateTimePicker not available");
}
};
return /* @__PURE__ */ React24.createElement(View12, { style: [styles11.fallbackContainer, style] }, /* @__PURE__ */ React24.createElement(Text11, { style: styles11.fallbackText }, mode === "time" ? "Time" : "Date", " Picker Unavailable"), /* @__PURE__ */ React24.createElement(Text11, { style: styles11.fallbackValue }, mode === "time" ? value.toLocaleTimeString() : value.toLocaleDateString()));
};
var styles11 = StyleSheet9.create({
fallbackContainer: {
padding: 16,
backgroundColor: "#f5f5f5",
borderRadius: 8,
alignItems: "center",
justifyContent: "center",
minHeight: 100
},
fallbackText: {
fontSize: 14,
color: "#666",
marginBottom: 8
},
fallbackValue: {
fontSize: 16,
fontWeight: "500",
color: "#333"
}
});
// bot-sdk/components/LazyPicker.tsx
init_esm_shims();
import React25, { Component as Component10 } from "react";
import { View as View13, Text as Text12, StyleSheet as StyleSheet10, TouchableOpacity as TouchableOpacity9, Modal as Modal2, FlatList as FlatList2 } from "react-native";
var LazyPicker = class _LazyPicker extends Component10 {
mounted = true;
constructor(props) {
super(props);
this.state = {
PickerComponent: null,
PickerItem: null,
isLoading: false,
loadError: null
};
}
componentDidMount() {
this.loadPicker();
}
componentWillUnmount() {
this.mounted = false;
}
async loadPicker() {
if (this.state.PickerComponent || this.state.isLoading) {
return;
}
this.setState({ isLoading: true, loadError: null });
try {
const PickerModule = await import("@react-native-picker/picker");
if (this.mounted) {
const PickerComponent = PickerModule?.Picker || PickerModule?.default || null;
const PickerItem = PickerModule?.Picker?.Item || PickerModule?.default?.Item || null;
if (!PickerComponent) {
throw new Error("Picker component not found in module");
}
this.setState({
PickerComponent,
PickerItem,
isLoading: false,
loadError: null
});
}
} catch (error) {
console.warn("Failed to load Picker:", error);
if (this.mounted) {
this.setState({
isLoading: false,
loadError: error instanceof Error ? error.message : "Unknown error"
});
}
}
}
render() {
const {
fallbackComponent: FallbackComponent,
loadingComponent: LoadingComponent,
errorComponent: ErrorComponent,
children,
...pickerProps
} = this.props;
const { PickerComponent, isLoading, loadError } = this.state;
if (isLoading) {
if (LoadingComponent) {
return /* @__PURE__ */ React25.createElement(LoadingComponent, null);
}
return /* @__PURE__ */ React25.createElement(DefaultLoader, { text: "Loading picker..." });
}
if (loadError) {
if (ErrorComponent) {
return /* @__PURE__ */ React25.createElement(ErrorComponent, { error: loadError });
}
if (FallbackComponent) {
return /* @__PURE__ */ React25.createElement(FallbackComponent, { ...pickerProps }, children);
}
return /* @__PURE__ */ React25.createElement(ErrorFallback, { error: `Picker unavailable: ${loadError}` });
}
if (PickerComponent) {
if (this.state.PickerItem) {
_LazyPicker.Item = this.state.PickerItem;
}
return /* @__PURE__ */ React25.createElement(PickerComponent, { ...pickerProps }, children);
}
if (FallbackComponent) {
return /* @__PURE__ */ React25.createElement(FallbackComponent, { ...pickerProps }, children);
}
return /* @__PURE__ */ React25.createElement(DefaultLoader, { text: "Initializing picker..." });
}
};
var LazyPickerItem = class _LazyPickerItem extends Component10 {
static contextType = React25.createContext(null);
render() {
const { label, value, ...itemProps } = this.props;
const ActualPickerItem = LazyPicker.Item || this.context?.PickerItem || null;
if (ActualPickerItem && ActualPickerItem !== _LazyPickerItem) {
return /* @__PURE__ */ React25.createElement(ActualPickerItem, { label, value, ...itemProps });
}
return null;
}
};
var FallbackPicker = ({
selectedValue,
onValueChange,
mode = "dropdown",
children,
style,
prompt = "Select an option"
}) => {
const [isVisible, setIsVisible] = React25.useState(false);
const [items, setItems] = React25.useState([]);
React25.useEffect(() => {
const extractedItems = [];
React25.Children.forEach(children, (child) => {
if (child && child.props) {
extractedItems.push({
label: child.props.label || String(child.props.value),
value: child.props.value
});
}
});
setItems(extractedItems);
}, [children]);
const selectedItem = items.find((item) => item.value === selectedValue);
const handleItemSelect = (item, index) => {
onValueChange(item.value, index);
setIsVisible(false);
};
return /* @__PURE__ */ React25.createElement(View13, { style: [styles12.fallbackContainer, style] }, /* @__PURE__ */ React25.createElement(
TouchableOpacity9,
{
style: styles12.fallbackButton,
onPress: () => setIsVisible(true)
},
/* @__PURE__ */ React25.createElement(Text12, { style: styles12.fallbackButtonText }, selectedItem ? selectedItem.label : prompt),
/* @__PURE__ */ React25.createElement(Text12, { style: styles12.fallbackArrow }, "\u25BC")
), /* @__PURE__ */ React25.createElement(
Modal2,
{
visible: isVisible,
transparent: true,
animationType: "fade",
onRequestClose: () => setIsVisible(false)
},
/* @__PURE__ */ React25.createElement(
TouchableOpacity9,
{
style: styles12.fallbackModalOverlay,
activeOpacity: 1,
onPress: () => setIsVisible(false)
},
/* @__PURE__ */ React25.createElement(View13, { style: styles12.fallbackModalContent }, /* @__PURE__ */ React25.createElement(Text12, { style: styles12.fallbackModalTitle }, prompt), /* @__PURE__ */ React25.createElement(
FlatList2,
{
data: items,
keyExtractor: (item, index) => `${item.value}_${index}`,
renderItem: ({ item, index }) => /* @__PURE__ */ React25.createElement(
TouchableOpacity9,
{
style: [
styles12.fallbackModalItem,
item.value === selectedValue && styles12.fallbackModalItemSelected
],
onPress: () => handleItemSelect(item, index)
},
/* @__PURE__ */ React25.createElement(Text12, { style: [
styles12.fallbackModalItemText,
item.value === selectedValue && styles12.fallbackModalItemTextSelected
] }, item.label)
)
}
))
)
));
};
var FallbackPickerItem = ({ label, value }) => {
return null;
};
LazyPicker.Item = LazyPickerItem;
FallbackPicker.Item = FallbackPickerItem;
var styles12 = StyleSheet10.create({
fallbackContainer: {
minHeight: 40
},
fallbackButton: {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
padding: 12,
backgroundColor: "#f5f5f5",
borderRadius: 8,
borderWidth: 1,
borderColor: "#ddd"
},
fallbackButtonText: {
fontSize: 16,
color: "#333",
flex: 1
},
fallbackArrow: {
fontSize: 12,
color: "#666",
marginLeft: 8
},
fallbackModalOverlay: {
flex: 1,
backgroundColor: "rgba(0, 0, 0, 0.5)",
justifyContent: "center",
alignItems: "center"
},
fallbackModalContent: {
backgroundColor: "white",
borderRadius: 12,
padding: 20,
maxWidth: "90%",
maxHeight: "70%",
minWidth: 250
},
fallbackModalTitle: {
fontSize: 18,
fontWeight: "600",
marginBottom: 15,
textAlign: "center",
color: "#333"
},
fallbackModalItem: {
padding: 15,
borderBottomWidth: 1,
borderBottomColor: "#eee"
},
fallbackModalItemSelected: {
backgroundColor: "#4ECDC4"
},
fallbackModalItemText: {
fontSize: 16,
color: "#333"
},
fallbackModalItemTextSelected: {
color: "white",
fontWeight: "500"
}
});
// bot-sdk/components/LazyVoice.tsx
init_esm_shims();
import React26, { Component as Component11 } from "react";
import { View as View14, Text as Text13, StyleSheet as StyleSheet11, Alert } from "react-native";
var styles13 = StyleSheet11.create({
availableContainer: {
padding: 16,
backgroundColor: "#e8f5e8",
borderRadius: 8,
alignItems: "center",
justifyContent: "center"
},
availableText: {
fontSize: 14,
color: "#2e7d2e",
fontWeight: "500"
},
unavailableContainer: {
padding: 16,
backgroundColor: "#ffeaea",
borderRadius: 8,
alignItems: "center",
justifyContent: "center"
},
unavailableText: {
fontSize: 14,
color: "#d32f2f",
textAlign: "center"
},
fallbackContainer: {
padding: 16,
backgroundColor: "#f5f5f5",
borderRadius: 8,
alignItems: "center",
justifyContent: "center",
minHeight: 100
},
fallbackText: {
fontSize: 16,
color: "#666",
fontWeight: "500",
textAlign: "center",
marginBottom: 8
},
fallbackSubText: {
fontSize: 12,
color: "#999",
textAlign: "center"
}
});
// bot-sdk/components/LazyVideo.tsx
init_esm_shims();
import React27, { Component as Component12 } from "react";
import { View as View15, Text as Text14, StyleSheet as StyleSheet12, TouchableOpacity as TouchableOpacity10 } from "react-native";
var styles14 = StyleSheet12.create({
fallbackContainer: {
backgroundColor: "#000",
justifyContent: "center",
alignItems: "center",
minHeight: 200,
borderRadius: 8
},
fallbackContent: {
alignItems: "center",
justifyContent: "center",
padding: 20
},
fallbackPosterContainer: {
alignItems: "center",
justifyContent: "center",
padding: 20,
backgroundColor: "rgba(0, 0, 0, 0.7)",
borderRadius: 8
},
fallbackIcon: {
width: 60,
height: 60,
borderRadius: 30,
backgroundColor: "rgba(255, 255, 255, 0.2)",
justifyContent: "center",
alignItems: "center",
marginBottom: 16
},
fallbackIconText: {
fontSize: 24,
color: "white",
marginLeft: 4
// Adjust for play button visual balance
},
fallbackText: {
fontSize: 16,
color: "white",
fontWeight: "600",
textAlign: "center",
marginBottom: 8
},
fallbackSubText: {
fontSize: 12,
color: "rgba(255, 255, 255, 0.7)",
textAlign: "center",
lineHeight: 16
}
});
// bot-sdk/components/LazyTTS.tsx
init_esm_shims();
import React28, { Component as Component13 } from "react";
import { View as View16, Text as Text15, StyleSheet as StyleSheet13, Alert as Alert2 } from "react-native";
var styles15 = StyleSheet13.create({
availableContainer: {
padding: 16,
backgroundColor: "#e8f5e8",
borderRadius: 8,
alignItems: "center",
justifyContent: "center"
},
availableText: {
fontSize: 14,
color: "#2e7d2e",
fontWeight: "500"
},
unavailableContainer: {
padding: 16,
backgroundColor: "#ffeaea",
borderRadius: 8,
alignItems: "center",
justifyContent: "center"
},
unavailableText: {
fontSize: 14,
color: "#d32f2f",
textAlign: "center"
},
fallbackContainer: {
padding: 16,
backgroundColor: "#f5f5f5",
borderRadius: 8,
alignItems: "center",
justifyContent: "center",
minHeight: 100
},
fallbackText: {
fontSize: 16,
color: "#666",
fontWeight: "500",
textAlign: "center",
marginBottom: 8
},
fallbackSubText: {
fontSize: 12,
color: "#999",
textAlign: "center"
}
});
// bot-sdk/components/LazySound.tsx
init_esm_shims();
import React29, { Component as Component14 } from "react";
import { View as View17, Text as Text16, StyleSheet as StyleSheet14 } from "react-native";
var useLazySound = () => {
const [state, setState] = React29.useState({
SoundModule: null,
isLoading: false,
loadError: null
});
const loadSound = React29.useCallback(async () => {
if (state.SoundModule || state.isLoading) {
return state.SoundModule;
}
setState((prev) => ({ ...prev, isLoading: true, loadError: null }));
try {
const SoundModule = await LazyLoader.importModule(
() => import("react-native-sound"),
"sound"
);
const Sound2 = SoundModule || null;
if (!Sound2 || typeof Sound2 !== "function") {
throw new Error("Sound module or constructor not found");
}
try {
if (Sound2.setCategory) {
Sound2.setCategory("Playback", true);
}
} catch (error) {
console.warn("Failed to set sound category:", error);
}
setState({
SoundModule: Sound2,
isLoading: false,
loadError: null
});
return Sound2;
} catch (error) {
console.warn("Failed to load Sound:", error);
setState({
SoundModule: null,
isLoading: false,
loadError: error instanceof Error ? error.message : "Unknown error"
});
return null;
}
}, [state.SoundModule, state.isLoading]);
const createSound = React29.useCallback(async (filename, basePath, onError, options) => {
const Sound2 = await loadSound();
if (!Sound2) {
throw new Error("Sound not available");
}
return new Sound2(filename, basePath || "", onError, options);
}, [loadSound]);
const setCategory = React29.useCallback(async (category, mixWithOthers) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.setCategory) {
throw new Error("Sound setCategory not available");
}
return Sound2.setCategory(category, mixWithOthers);
}, [loadSound]);
const getCategory = React29.useCallback(async (callback) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.getCategory) {
throw new Error("Sound getCategory not available");
}
return Sound2.getCategory(callback);
}, [loadSound]);
const setMode = React29.useCallback(async (mode) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.setMode) {
throw new Error("Sound setMode not available");
}
return Sound2.setMode(mode);
}, [loadSound]);
const getMode = React29.useCallback(async (callback) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.getMode) {
throw new Error("Sound getMode not available");
}
return Sound2.getMode(callback);
}, [loadSound]);
const setSpeakerphoneOn = React29.useCallback(async (speaker) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.setSpeakerphoneOn) {
throw new Error("Sound setSpeakerphoneOn not available");
}
return Sound2.setSpeakerphoneOn(speaker);
}, [loadSound]);
const setActive = React29.useCallback(async (active) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.setActive) {
throw new Error("Sound setActive not available");
}
return Sound2.setActive(active);
}, [loadSound]);
const isWiredHeadsetPluggedIn = React29.useCallback(async (callback) => {
const Sound2 = await loadSound();
if (!Sound2 || !Sound2.isWiredHeadsetPluggedIn) {
throw new Error("Sound isWiredHeadsetPluggedIn not available");
}
return Sound2.isWiredHeadsetPluggedIn(callback);
}, [loadSound]);
React29.useEffect(() => {
loadSound();
}, [loadSound]);
return {
SoundModule: state.SoundModule,
isLoading: state.isLoading,
loadError: state.loadError,
loadSound,
createSound,
setCategory,
getCategory,
setMode,
getMode,
setSpeakerphoneOn,
setActive,
isWiredHeadsetPluggedIn
};
};
var styles16 = StyleSheet14.create({
readyContainer: {
padding: 16,
backgroundColor: "#e8f5e8",
borderRadius: 8,
alignItems: "center",
justifyContent: "center"
},
readyText: {
fontSize: 14,
color: "#2e7d2e",
fontWeight: "500"
},
fallbackContainer: {
padding: 16,
backgroundColor: "#f5f5f5",
borderRadius: 8,
alignItems: "center",
justifyContent: "center",
minHeight: 100
},
fallbackText: {
fontSize: 16,
color: "#666",
fontWeight: "500",
textAlign: "center",
marginBottom: 8
},
fallbackSubText: {
fontSize: 12,
color: "#999",
textAlign: "center"
}
});
// bot-sdk/components/LazyParsedText.tsx
init_esm_shims();
import React30, { Component as Component15 } from "react";
import { Text as Text17, StyleSheet as StyleSheet15 } from "react-native";
var LazyParsedText = class extends Component15 {
mounted = true;
constructor(props) {
super(props);
this.state = {
ParsedTextComponent: null,
isLoading: false,
loadError: null,
hasAttemptedLoad: false
};
}
componentDidMount() {
if (this.props.autoLoad !== false) {
setTimeout(() => {
this.loadParsedText();
}, 10);
}
}
componentWillUnmount() {
this.mounted = false;
}
async loadParsedText() {
if (this.state.ParsedTextComponent || this.state.isLoading || this.state.hasAttemptedLoad) {
return this.state.ParsedTextComponent;
}
this.setState({ isLoading: true, loadError: null, hasAttemptedLoad: true });
try {
const ParsedTextModule = await LazyLoader.importModule(
() => import("react-native-parsed-text"),
"parsedtext"
);
if (this.mounted) {
const ParsedTextComponent = ParsedTextModule;
if (!ParsedTextComponent) {
throw new Error("ParsedText module not found");
}
this.setState({
ParsedTextComponent,
isLoading: false,
loadError: null
});
if (this.props.onModuleLoaded) {
this.props.onModuleLoaded(ParsedTextComponent);
}
return ParsedTextComponent;
}
} catch (error) {
console.warn("Failed to load ParsedText:", error);
if (this.mounted) {
let errorMessage = error instanceof Error ? error.message : "Unknown error";
this.setState({
ParsedTextComponent: null,
isLoading: false,
loadError: errorMessage
});
if (this.props.onModuleLoaded) {
this.props.onModuleLoaded(null);
}
}
}
return null;
}
render() {
const {
fallbackComponent: FallbackComponent,
loadingComponent: LoadingComponent,
errorComponent: ErrorComponent,
hideUI = false,
children,
style,
autoLoad,
onModuleLoaded,
...parsedTextProps
} = this.props;
const { ParsedTextComponent, isLoading, loadError } = this.state;
if (hideUI) {
return null;
}
if (isLoading) {
if (LoadingComponent) {
return /* @__PURE__ */ React30.createElement(LoadingComponent, null);
}
return /* @__PURE__ */ React30.createElement(Text17, { style, ...parsedTextProps }, children);
}
if (loadError || !ParsedTextComponent && this.state.hasAttemptedLoad) {
if (ErrorComponent) {
return /* @__PURE__ */ React30.createElement(ErrorComponent, { error: loadError || "ParsedText not available" });
}
if (FallbackComponent) {
return /* @__PURE__ */ React30.createElement(FallbackComponent, null);
}
return /* @__PURE__ */ React30.createElement(Text17, { style, ...parsedTextProps }, children);
}
if (ParsedTextComponent) {
return /* @__PURE__ */ React30.createElement(
ParsedTextComponent,
{
style,
...parsedTextProps
},
children
);
}
if (!this.state.hasAttemptedLoad) {
this.loadParsedText();
}
return /* @__PURE__ */ React30.createElement(Text17, { style, ...parsedTextProps }, children);
}
};
var styles17 = StyleSheet15.create({
container: {
flex: 1
}
});
// bot-sdk/components/LazySlider.tsx
init_esm_shims();
import React31, { Component as Component16 } from "react";
import { View as View19 } from "react-native";
var LazySlider = class extends Component16 {
mounted = true;
constructor(props) {
super(props);
this.state = {
SliderComponent: null,
isLoading: false,
loadError: null,
hasAttemptedLoad: false
};
}
componentDidMount() {
if (this.props.autoLoad !== false) {
setTimeout(() => {
this.loadSlider();
}, 10);
}
}
componentWillUnmount() {
this.mounted = false;
}
async loadSlider() {
if (this.state.SliderComponent || this.state.isLoading || this.state.hasAttemptedLoad) {
return this.state.SliderComponent;
}
this.setState({ isLoading: true, loadError: null, hasAttemptedLoad: true });
try {
const SliderModule = await LazyLoader.importModule(
() => import("@react-native-community/slider"),
"slider"
);
if (this.mounted) {
const SliderComponent = SliderModule;
if (!SliderComponent) {
throw new Error("Slider module not found");
}
this.setState({
SliderComponent,
isLoading: false,
loadError: null
});
if (this.props.onModuleLoaded) {
this.props.onModuleLoaded(SliderComponent);
}
return SliderComponent;
}
} catch (error) {
console.warn("Failed to load Slider:", error);
if (this.mounted) {
let errorMessage = error instanceof Error ? error.message : "Unknown error";
this.setState({
SliderComponent: null,
isLoading: false,
loadError: errorMessage
});
if (this.props.onModuleLoaded) {
this.props.onModuleLoaded(null);
}
}
}
return null;
}
render() {
const {
fallbackComponent: FallbackComponent,
loadingComponent: LoadingComponent,
errorComponent: ErrorComponent,
hideUI = false,
autoLoad,
onModuleLoaded,
...sliderProps
} = this.props;
const { SliderComponent, isLoading, loadError } = this.state;
if (hideUI) {
return null;
}
if (isLoading) {
if (LoadingComponent) {
return /* @__PURE__ */ React31.createElement(LoadingComponent, null);
}
return /* @__PURE__ */ React31.createElement(
View19,
{
style: [
{
height: 40,
justifyContent: "center",
alignItems: "center",
opacity: 0.5
},
sliderProps.style
]
}
);
}
if (loadError || !SliderComponent && this.state.hasAttemptedLoad) {
if (ErrorComponent) {
return /* @__PURE__ */ React31.createElement(ErrorComponent, { error: loadError || "Slider not available" });
}
if (FallbackComponent) {
return /* @__PURE__ */ React31.createElement(FallbackComponent, null);
}
return /* @__PURE__ */ React31.createElement(
View19,
{
style: [
{
height: 40,
justifyContent: "center",
alignItems: "center",
backgroundColor: "#f0f0f0",
borderRadius: 4
},
sliderProps.style
]
}
);
}
if (SliderComponent) {
return /* @__PURE__ */ React31.createElement(
SliderComponent,
{
...sliderProps
}
);
}
if (!this.state.hasAttemptedLoad) {
this.loadSlider();
}
return /* @__PURE__ */ React31.createElement(
View19,
{
style: [
{
height: 40,
justifyContent: "center",
alignItems: "center",
opacity: 0.5
},
sliderProps.style
]
}
);
}
};
// bot-sdk/components/CustomDateTimePickerModal.tsx
init_esm_shims();
import React33, { Component as Component18 } from "react";
import { View as View21, StyleSheet as StyleSheet17, Platform as Platform7, Button } from "react-native";
// bot-sdk/components/CustomModal.tsx
init_esm_shims();
import React32, { Component as Component17 } from "react";
import {
Modal as Modal3,
View as View20,
Animated as Animated3,
TouchableWithoutFeedback,
BackHandler,
StyleSheet as StyleSheet16,
Dimensions as Dimensions7
} from "react-native";
var { width: screenWidth, height: screenHeight } = Dimensions7.get("window");
var CustomModal = class extends Component17 {
backHandler;
constructor(props) {
super(props);
this.state = {
modalVisible: false,
animatedValue: new Animated3.Value(0)
};
}
componentDidMount() {
if (this.props.isVisible) {
this.showModal();
}
}
componentDidUpdate(prevProps) {
if (this.props.isVisible !== prevProps.isVisible) {
if (this.props.isVisible) {
this.showModal();
} else {
this.hideModal();
}
}
}
componentWillUnmount() {
if (this.backHandler) {
this.backHandler.remove();
}
}
showModal = () => {
this.setState({ modalVisible: true }, () => {
this.backHandler = BackHandler.addEventListener(
"hardwareBackPress",
this.handleBackButton
);
Animated3.timing(this.state.animatedValue, {
toValue: 1,
duration: 300,
useNativeDriver: this.props.useNativeDriver !== false
}).start();
});
};
hideModal = () => {
if (this.backHandler) {
this.backHandler.remove();
this.backHandler = null;
}
Animated3.timing(this.state.animatedValue, {
toValue: 0,
duration: 250,
useNativeDriver: this.props.useNativeDriver !== false
}).start(() => {
this.setState({ modalVisible: false });
});
};
handleBackButton = () => {
if (this.props.onBackButtonPress) {
this.props.onBackButtonPress();
return true;
}
return false;
};
handleBackdropPress = () => {
if (this.props.onBackdropPress) {
this.props.onBackdropPress();
}
};
render() {
const { modalVisible, animatedValue } = this.state;
const { animationType = "fade", hideModalContentWhileAnimating } = this.props;
if (!modalVisible) {
return null;
}
let animatedStyle = {};
switch (animationType) {
case "slide":
animatedStyle = {
transform: [
{
translateY: animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [screenHeight, 0]
})
}
]
};
break;
case "fade":
default:
animatedStyle = {
opacity: animatedValue
};
break;
}
const backdropStyle = {
opacity: animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [0, 0.5]
})
};
return /* @__PURE__ */ React32.createElement(
Modal3,
{
transparent: true,
visible: modalVisible,
animationType: "none",
onRequestClose: this.handleBackButton
},
/* @__PURE__ */ React32.createElement(View20, { style: styles18.container }, /* @__PURE__ */ React32.createElement(Animated3.View, { style: [styles18.backdrop, backdropStyle] }), /* @__PURE__ */ React32.createElement(TouchableWithoutFeedback, { onPress: this.handleBackdropPress }, /* @__PURE__ */ React32.createElement(View20, { style: styles18.backdropTouchable })), /* @__PURE__ */ React32.createElement(
Animated3.View,
{
style: [
styles18.contentContainer,
animatedStyle,
this.props.style,
hideModalContentWhileAnimating && {
opacity: animatedValue
}
]
},
this.props.children
))
);
}
};
var styles18 = StyleSheet16.create({
container: {
flex: 1,
justifyContent: "center",
alignItems: "center"
},
backdrop: {
position: "absolute",
top: 0,
left: 0,
right: 0,
bottom: 0,
backgroundColor: "black"
},
backdropTouchable: {
position: "absolute",
top: 0,
left: 0,
right: 0,
bottom: 0
},
contentContainer: {
justifyContent: "center",
alignItems: "center",
padding: 20
}
});
var CustomModal_default = CustomModal;
// bot-sdk/components/CustomDateTimePickerModal.tsx
var CustomDateTimePickerModal = class extends Component18 {
constructor(props) {
super(props);
this.state = {
selectedDate: props.date || /* @__PURE__ */ new Date()
};
}
componentDidUpdate(prevProps) {
if (prevProps.date !== this.props.date && this.props.date) {
this.setState({ selectedDate: this.props.date });
}
}
handleDateChange = (event, selectedDate) => {
if (Platform7.OS === "android") {
if (event.type === "set" && selectedDate) {
this.setState({ selectedDate });
this.props.onConfirm(selectedDate);
} else if (event.type === "dismissed") {
this.props.onCancel();
}
} else {
if (selectedDate) {
this.setState({ selectedDate });
}
}
};
handleConfirm = () => {
this.props.onConfirm(this.state.selectedDate);
};
handleCancel = () => {
this.setState({ selectedDate: this.props.date || /* @__PURE__ */ new Date() });
this.props.onCancel();
};
render() {
const {
isVisible,
mode = "date",
is24Hour = false,
minimumDate,
maximumDate,
display = "default"
} = this.props;
if (Platform7.OS === "android") {
return isVisible ? /* @__PURE__ */ React33.createElement(
LazyDateTimePicker,
{
value: this.state.selectedDate,
mode,
is24Hour: Boolean(is24Hour),
display,
minimumDate,
maximumDate,
onChange: this.handleDateChange,
fallbackComponent: FallbackDateTimePicker
}
) : null;
}
return /* @__PURE__ */ React33.createElement(
CustomModal_default,
{
isVisible,
onBackdropPress: this.handleCancel,
onBackButtonPress: this.handleCancel,
animationType: "slide"
},
/* @__PURE__ */ React33.createElement(View21, { style: styles19.modalContent }, /* @__PURE__ */ React33.createElement(View21, { style: styles19.pickerContainer }, /* @__PURE__ */ React33.createElement(
LazyDateTimePicker,
{
value: this.state.selectedDate,
mode,
is24Hour: Boolean(is24Hour),
display,
minimumDate,
maximumDate,
onChange: this.handleDateChange,
style: styles19.picker,
fallbackComponent: FallbackDateTimePicker
}
)), /* @__PURE__ */ React33.createElement(View21, { style: styles19.buttonContainer }, /* @__PURE__ */ React33.createElement(View21, { style: styles19.button }, /* @__PURE__ */ React33.createElement(Button, { title: "Cancel", onPress: this.handleCancel, color: "#ff6b6b" })), /* @__PURE__ */ React33.createElement(View21, { style: styles19.button }, /* @__PURE__ */ React33.createElement(Button, { title: "Confirm", onPress: this.handleConfirm, color: "#4ECDC4" }))))
);
}
};
var styles19 = StyleSheet17.create({
modalContent: {
backgroundColor: "white",
borderRadius: 12,
padding: 20,
alignItems: "center",
shadowColor: "#000",
shadowOffset: {
width: 0,
height: 2
},
shadowOpacity: 0.25,
shadowRadius: 3.84,
elevation: 5,
maxWidth: "90%",
width: Platform7.OS === "ios" ? 300 : "100%"
},
pickerContainer: {
backgroundColor: "transparent",
alignItems: "center",
justifyContent: "center"
},
picker: {
height: Platform7.OS === "ios" ? 200 : 40,
width: Platform7.OS === "ios" ? 280 : "100%"
},
buttonContainer: {
flexDirection: "row",
justifyContent: "space-between",
marginTop: 20,
width: "100%"
},
button: {
flex: 1,
marginHorizontal: 10
}
});
var CustomDateTimePickerModal_default = CustomDateTimePickerModal;
// bot-sdk/components/datePicker/DateRange.js
init_PlatformCheck();
import "dayjs/locale/en";
import advancedFormat2 from "dayjs/plugin/advancedFormat";
import customParseFormat2 from "dayjs/plugin/customParseFormat";
dayjs5.extend(advancedFormat2);
dayjs5.extend(customParseFormat2);
var styles20 = {
calendar: {
backgroundColor: "rgb(255, 255, 255)"
//marginHorizontal: normalize(10),
},
headActionContainer: {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
paddingTop: 10,
paddingBottom: 10
//paddingLeft: 10,
// paddingRight: 10,
},
headCoverContainer: {
paddingTop: 20,
paddingBottom: 20,
//height: normalize(120),
width: "100%",
justifyContent: "center",
backgroundColor: "#ff3431",
paddingHorizontal: 20
},
dateContainer: {
flexDirection: "row",
justifyContent: "space-between"
},
headTitleText: {
fontSize: normalizeText_default(18),
color: "white",
fontWeight: "bold"
},
headerDateSingle: {
fontSize: normalizeText_default(20),
color: "white",
fontWeight: "bold"
}
};
var min = 1900;
var max = 2100;
var interval = max - min + 1;
var rangeArray = Array.from(new Array(interval), (val, index) => index + min);
var DateRange = class extends Component19 {
constructor(props) {
super(props);
const defalutFormat = "MMM DD YYYY";
this.state = {
focusedMonth: props.currentDate || dayjs5().startOf("month"),
currentDate: props.currentDate,
startDate: props.startDate || "",
endDate: props.endDate || "",
focus: props.focusedInput || "startDate",
clearStart: "",
clearEnd: "",
clearSingle: props.currentDate?.format(defalutFormat) || "Select Date",
selectState: "monthAndDate",
// or year
selectedYear: null,
textStartDate: props.textStartDate || "Start Date",
textEndDate: props.textEndDate || "End Date"
};
}
previousMonth = () => {
this.setState({
focusedMonth: this.state.focusedMonth.add(-1, "M")
});
};
nextMonth = () => {
this.setState({
focusedMonth: this.state.focusedMonth.add(1, "M")
});
};
onDatesChange = (event) => {
this.props.onDatesChange(event);
const defalutFormat = "MMM DD YYYY";
const headFormat = this.props.headFormat || defalutFormat;
const { startDate, endDate, focusedInput, currentDate } = event;
if (currentDate && !this.props.isDateBlocked(currentDate)) {
this.setState({ currentDate });
this.setState({ clearSingle: currentDate.format(headFormat) });
return;
}
this.setState({ ...this.state, focus: focusedInput }, () => {
this.setState({ ...this.state, startDate, endDate });
if (endDate) {
this.setState({
clearStart: startDate.format(headFormat),
clearEnd: endDate.format(headFormat)
});
} else {
this.setState({
clearStart: startDate.format(headFormat),
clearEnd: ""
});
}
});
};
selectYear = () => {
this.setState({
selectState: "year",
selectedYear: parseInt(this.state.focusedMonth.format("YYYY"))
});
};
selectMonthAndDate = () => {
this.setState({
selectState: "monthAndDate"
});
};
changeYear = (itemValue) => {
if (this.state.currentDate) {
let newDate = dayjs5(this.state.currentDate).year(itemValue);
if (this.props.isDateBlocked(newDate)) {
return;
}
}
this.setState({ selectedYear: itemValue });
this.setState({
focusedMonth: this.state.focusedMonth.year(itemValue),
currentDate: this.state.currentDate?.year(itemValue)
});
const defalutFormat = "MMM DD YYYY";
const headFormat = this.props.headFormat || defalutFormat;
this.setState({ clearSingle: this.state.currentDate?.format(headFormat) });
this.selectMonthAndDate();
};
componentDidUpdate(preProps, preState) {
if (preState.selectState !== this.state.selectState) {
if (this.props.getSelectState) {
this.props.getSelectState?.(this.state.selectState);
}
}
}
renderButton = () => {
return /* @__PURE__ */ React34.createElement(View22, { style: {} }, /* @__PURE__ */ React34.createElement(
View22,
{
style: {
flexWrap: "wrap",
alignSelf: "flex-end",
marginEnd: 10
}
},
/* @__PURE__ */ React34.createElement(
TouchableOpacity11,
{
underlayColor: "transparent",
onPress: () => {
this.changeYear(this.state.selectedYear);
},
style: [
{
padding: 5,
paddingStart: 20
},
this.props.ButtonStyle
]
},
/* @__PURE__ */ React34.createElement(
Text18,
{
style: [{ fontSize: 20, textAlign: "center", color: "#555555" }]
},
"Select"
)
)
));
};
render() {
const markText = this.props.markText || "";
const { customStyles: customStyles2 = {} } = this.props;
const headerContainer = {
...styles20.headCoverContainer,
...customStyles2.headerStyle
};
const markTitleText = {
opacity: 1,
marginBottom: 10,
fontSize: normalizeText_default(14),
color: "white",
fontWeight: "500"
};
const markTitle = {
// ...styles.headTitleText,
color: "white",
//opacity: 0.8,
marginBottom: 15,
//fontSize: normalize(18),
...customStyles2.headerMarkTitle
};
const headerDate = {
...styles20.headTitleText,
...customStyles2.headerDateTitle
};
const headerDateSingle = {
...styles20.headerDateSingle,
...customStyles2.headerDateSingle
};
return /* @__PURE__ */ React34.createElement(View22, null, /* @__PURE__ */ React34.createElement(View22, { style: headerContainer }, /* @__PURE__ */ React34.createElement(View22, { style: {} }, /* @__PURE__ */ React34.createElement(
Text18,
{
style: [
markTitleText,
isAndroid && {
marginBottom: -10,
fontSize: normalizeText_default(17),
fontWeight: "400"
}
]
},
this.props.headerText
), /* @__PURE__ */ React34.createElement(View22, { style: {} }, /* @__PURE__ */ React34.createElement(View22, null, Platform8.OS == "ios" ? /* @__PURE__ */ React34.createElement(TouchableOpacity11, { onPress: this.selectYear }, /* @__PURE__ */ React34.createElement(Text18, { style: markTitle }, this.state.focusedMonth.format("YYYY"))) : /* @__PURE__ */ React34.createElement(View22, { style: {} }, /* @__PURE__ */ React34.createElement(
View22,
{
style: {
width: 150,
marginStart: -10
}
},
/* @__PURE__ */ React34.createElement(
LazyPicker,
{
mode: "dropdown",
prompt: this.state.selectedYear + "",
selectedValue: parseInt(
this.state.focusedMonth.format("YYYY")
),
style: {
color: Color_default.white,
fontSize: normalizeText_default(20),
height: normalizeText_default(60),
marginBottom: this.props.mode != "single" ? -50 : -10,
backgroundColor: "transparent",
...customStyles2.headerMarkTitle
},
itemStyle: {
fontWeight: "900",
height: normalizeText_default(50)
},
fallbackComponent: FallbackPicker,
onValueChange: this.changeYear
},
rangeArray.map((value, index) => {
return /* @__PURE__ */ React34.createElement(
LazyPickerItem,
{
key: index,
label: String(value),
value,
style: {
fontSize: normalizeText_default(20),
fontWeight: "900"
}
}
);
})
)
))), this.props.mode === "single" && /* @__PURE__ */ React34.createElement(View22, { style: {}, onPress: this.selectMonthAndDate }, /* @__PURE__ */ React34.createElement(Text18, { style: headerDateSingle }, this.state.clearSingle)))), this.props.mode === "range" && /* @__PURE__ */ React34.createElement(View22, null, /* @__PURE__ */ React34.createElement(Text18, { style: markTitle }, markText), /* @__PURE__ */ React34.createElement(View22, { style: styles20.dateContainer }, /* @__PURE__ */ React34.createElement(Text18, { style: headerDate }, this.state.clearStart ? this.state.clearStart : this.state.textStartDate), /* @__PURE__ */ React34.createElement(Text18, { style: styles20.headTitleText }), /* @__PURE__ */ React34.createElement(Text18, { style: headerDate }, this.state.clearEnd ? this.state.clearEnd : this.state.textEndDate)))), this.state.selectState === "monthAndDate" && /* @__PURE__ */ React34.createElement(
View22,
{
style: [
styles20.calendar,
{ backgroundColor: this.props.calendarBgColor }
]
},
/* @__PURE__ */ React34.createElement(View22, { style: styles20.headActionContainer }, /* @__PURE__ */ React34.createElement(
TouchableOpacity11,
{
style: {
paddingHorizontal: 20,
paddingBottom: 10,
paddingTop: 5
},
onPress: this.previousMonth
},
/* @__PURE__ */ React34.createElement(
SvgIcon,
{
name: "Left",
width: normalizeText_default(13),
height: normalizeText_default(13),
color: "#555555"
}
)
), /* @__PURE__ */ React34.createElement(
Text18,
{
style: {
fontSize: 20,
color: "#555555",
fontWeight: "400",
...customStyles2.monthPickerText
}
},
this.state.focusedMonth.format("MMMM YYYY")
), /* @__PURE__ */ React34.createElement(
TouchableOpacity11,
{
style: {
paddingHorizontal: 20,
paddingBottom: 10,
paddingTop: 5
},
onPress: this.nextMonth
},
/* @__PURE__ */ React34.createElement(
SvgIcon,
{
name: "Right",
width: normalizeText_default(13),
height: normalizeText_default(13),
color: "#555555"
}
)
)),
/* @__PURE__ */ React34.createElement(
Month,
{
customStyles: customStyles2,
mode: this.props.mode,
date: this.props.date,
startDate: this.props.startDate,
endDate: this.props.endDate,
focusedInput: this.props.focusedInput,
currentDate: this.state.currentDate,
focusedMonth: this.state.focusedMonth,
onDatesChange: this.onDatesChange,
isDateBlocked: this.props.isDateBlocked,
onDisableClicked: this.props.onDisableClicked,
selectedBgColor: this.props.selectedBgColor,
selectedTextColor: this.props.selectedTextColor
}
)
), this.state.selectState === "year" && /* @__PURE__ */ React34.createElement(
View22,
{
style: [
styles20.calendar,
{
justifyContent: "center",
backgroundColor: this.props.calendarBgColor
}
]
},
/* @__PURE__ */ React34.createElement(
LazyPicker,
{
selectedValue: this.state.selectedYear,
mode: "dropdown",
fallbackComponent: FallbackPicker,
onValueChange: (itemValue) => {
this.setState({ selectedYear: itemValue });
}
},
rangeArray.map((value, index) => {
return /* @__PURE__ */ React34.createElement(
LazyPickerItem,
{
key: index,
label: String(value),
value
}
);
})
),
this.renderButton()
));
}
};
// bot-sdk/components/datePicker/ComposePicker.tsx
import dayjs6 from "dayjs";
var ComposePicker = class extends Component20 {
constructor(props) {
super(props);
this.state = {
modalVisible: false,
allowPointerEvents: true,
showContent: false,
selected: "",
startDate: null,
endDate: null,
date: /* @__PURE__ */ new Date(),
focus: "startDate",
currentDate: this.props.currentDate,
textStartDate: props.textStartDate || "Start Date",
textEndDate: props.textEndDate || "End Date",
alertMessageText: props.alertMessageText || "Please select a date range",
selectState: void 0
};
}
componentDidMount() {
setTimeout(() => {
if (this.props.modalVisible) {
this.setState({
modalVisible: this.props.modalVisible
});
}
}, 1e3);
}
isDateBlocked = (date) => {
if (this.props.blockBefore) {
if (dayjs6(date).isBefore(this.props.blockBefore)) {
return true;
}
}
if (this.props.blockAfter) {
if (dayjs6(date).isAfter(this.props.blockAfter)) {
return true;
}
}
return false;
};
onDatesChange = (event) => {
const { startDate, endDate, focusedInput, currentDate } = event;
if (currentDate && !this.isDateBlocked(currentDate)) {
this.setState({ currentDate });
return;
}
this.setState({ ...this.state, focus: focusedInput }, () => {
this.setState({ ...this.state, startDate, endDate });
});
};
setModalVisible = (visible) => {
this.setState({ modalVisible: visible });
};
onCancel = () => {
this.setModalVisible(false);
};
onConfirm = () => {
if (!this.state.currentDate) {
return 0;
}
let returnFormat = this.props.returnFormat || "DD-MM-YYYY";
const outFormat = this.props.outFormat || "LL";
if (!this.props.mode || this.props.mode === "single") {
this.setState({
showContent: true,
selected: this.state.currentDate?.format(returnFormat)
});
this.setModalVisible(false);
if (typeof this.props.onConfirm === "function") {
this.props.onConfirm({
currentDate: this.state.currentDate?.format(returnFormat.toUpperCase().replaceAll("EEE", "ddd"))
});
}
return;
}
if (this.state.startDate && this.state.endDate) {
const start = this.state.startDate.format(outFormat);
const end = this.state.endDate.format(outFormat);
this.setState({
showContent: true,
selected: `${start} ${this.props.dateSplitter} ${end}`
});
this.setModalVisible(false);
if (typeof this.props.onConfirm === "function") {
this.props.onConfirm({
startDate: this.state.startDate.format(returnFormat),
endDate: this.state.endDate.format(returnFormat)
});
}
} else {
Alert4.alert(this.state.alertMessageText);
}
};
getTitleElement() {
const { customStyles: customStyles2 = {}, allowFontScaling } = this.props;
return /* @__PURE__ */ React35.createElement(
Text19,
{
allowFontScaling,
style: [styles21.contentText, customStyles2.contentText]
},
"Select date"
);
}
renderButton = () => {
const { customButton } = this.props;
if (customButton) {
return customButton(this.onConfirm);
}
return /* @__PURE__ */ React35.createElement(View23, { style: styles21.main }, /* @__PURE__ */ React35.createElement(View23, { style: styles21.btn_con }, /* @__PURE__ */ React35.createElement(
TouchableOpacity12,
{
onPress: this.onConfirm,
style: [styles21.btn_style, this.props.ButtonStyle]
},
/* @__PURE__ */ React35.createElement(
Text19,
{
style: [styles21.btn_default_style]
},
this.props.ButtonText ? this.props.ButtonText : "CONFIRM"
)
)));
};
renderCancelButton = () => {
return /* @__PURE__ */ React35.createElement(View23, { style: styles21.can_main }, /* @__PURE__ */ React35.createElement(View23, { style: styles21.can_main1 }, /* @__PURE__ */ React35.createElement(
TouchableOpacity12,
{
onPress: this.onCancel,
style: [styles21.can_btn_default, this.props.ButtonStyle]
},
/* @__PURE__ */ React35.createElement(Text19, { style: [styles21.can_btn_text] }, "CANCEL")
)));
};
render() {
const { customStyles: customStyles2 = {} } = this.props;
return /* @__PURE__ */ React35.createElement(
Modal4,
{
animationType: "slide",
onRequestClose: () => this.setModalVisible(false),
transparent: true,
hardwareAccelerated: true,
visible: this.state.modalVisible
},
/* @__PURE__ */ React35.createElement(View23, { style: styles21.main_con1 }, /* @__PURE__ */ React35.createElement(View23, { style: styles21.date_ran_con }, /* @__PURE__ */ React35.createElement(
DateRange,
{
headFormat: this.props.headFormat,
customStyles: customStyles2,
markText: this.props.markText,
onDatesChange: this.onDatesChange,
isDateBlocked: this.isDateBlocked,
startDate: this.state.startDate,
endDate: this.state.endDate,
focusedInput: this.state.focus,
calendarBgColor: this.props.calendarBgColor || void 0,
selectedBgColor: this.props.selectedBgColor || void 0,
selectedTextColor: this.props.selectedTextColor || void 0,
mode: this.props.mode || "single",
currentDate: this.state.currentDate,
textStartDate: this.state.textStartDate,
textEndDate: this.state.textEndDate,
headerText: this.props.headerText,
getSelectState: (selectState) => {
if (this.state?.selectState !== selectState) {
this.setState({
selectState
});
}
}
}
), this.state?.selectState !== "year" && /* @__PURE__ */ React35.createElement(View23, { style: styles21.main_con }, this.renderCancelButton(), this.renderButton())))
);
}
};
var styles21 = StyleSheet18.create({
can_btn_text: { fontSize: normalizeText_default(16), textAlign: "left" },
can_btn_default: {
padding: 5,
paddingEnd: 20,
marginBottom: 10
},
can_main1: { flexWrap: "wrap", marginStart: 10 },
can_main: { flex: 1 },
btn_default_style: { fontSize: normalizeText_default(16), textAlign: "right" },
btn_style: {
padding: 5,
paddingStart: 20,
marginBottom: 10
},
main: { flex: 1 },
btn_con: {
flexWrap: "wrap",
alignSelf: "flex-end",
marginEnd: 10
},
date_ran_con: { width: "90%", borderColor: "transparent" },
main_con1: {
flexDirection: "column",
// justifyContent: 'center',
// alignSelf: 'center',
// alignItems: 'center',
//backgroundColor: this.props.calendarBgColor,
flex: 1,
justifyContent: "center",
alignItems: "center",
width: "100%",
backgroundColor: "rgba(0, 0, 0, 0.3)"
},
main_con: {
paddingTop: 5,
paddingBottom: 5,
flexDirection: "row",
justifyContent: "center",
alignItems: "center",
backgroundColor: "white",
borderBottomEndRadius: 2,
borderBottomStartRadius: 2
},
placeholderText: {
color: "#c9c9c9",
fontSize: normalizeText_default(18)
},
contentInput: {
alignItems: "center",
justifyContent: "center"
},
contentText: {
fontSize: normalizeText_default(18)
},
stylish: {
borderColor: "transparent",
borderWidth: 1
}
});
// bot-sdk/templates/BotText.tsx
init_esm_shims();
import * as React37 from "react";
import { Linking as Linking2, StyleSheet as StyleSheet20, View as View25 } from "react-native";
// bot-sdk/utils/ParseList.tsx
init_esm_shims();
import React36 from "react";
import { Alert as Alert5, Linking, StyleSheet as StyleSheet19, Text as Text20, View as View24 } from "react-native";
var WWW_URL_PATTERN = /^www\./i;
var emojiMap = {
":)": "\u{1F600}",
":(": "\u{1F61E}",
":D": "\u{1F601}",
":P": "\u{1F61B}",
";)": "\u{1F609}",
":O": "\u{1F62E}",
":|": "\u{1F610}",
":\u2019(": "\u{1F622}",
":\u2019D": "\u{1F602}",
":3": "\u{1F63A}",
":*)": "\u{1F60D}",
":S": "\u{1F616}",
">:( ": "\u{1F620}",
":/": "\u{1F615}",
":o": "\u{1F632}",
":c": "\u{1F614}",
":X": "\u{1F636}",
xD: "\u{1F606}",
"B-)": "\u{1F60E}",
":^)": "\u{1F604}",
">.<": "\u{1F623}",
"-_-": "\u{1F611}"
};
var htmlEntities = {
""": '"',
"'": "'",
"&": "&",
"<": "<",
">": ">",
" ": " ",
"©": "\xA9",
"®": "\xAE",
"€": "\u20AC",
"¥": "\xA5",
"¢": "\xA2",
"£": "\xA3",
"°": "\xB0",
"¶": "\xB6",
"§": "\xA7",
"™": "\u2122",
"×": "\xD7",
"÷": "\xF7",
"«": "\xAB",
"»": "\xBB"
};
function getParseList() {
const renderHeaderNew = (level, matchingString, matches) => {
const Header = `h${level}`;
return /* @__PURE__ */ React36.createElement(Text20, { style: styles1[Header] }, matches[1]);
};
const renderBold = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.bold }, matches[1]);
const renderItalic = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: [styles1.italic] }, matches[1]);
const renderBoldItalic = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.boldItalic }, matches[1]);
const renderLink = (matchingString, matches) => /* @__PURE__ */ React36.createElement(
Text20,
{
style: styles1.link,
onPress: () => console.log("Link pressed:", matches[2])
},
matches[1]
);
const renderHeader = (level) => (matchingString, matches) => {
const Header = `h${level}`;
return /* @__PURE__ */ React36.createElement(Text20, { style: styles1[Header] }, matches[3], "\n");
};
const renderStrikethrough = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.strikethrough }, matches[1]);
const renderBlockquote = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.blockquote }, matches[1]);
const renderCode = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.code }, matches[1]);
const renderUnorderedList = (matchingString, matches) => {
return `
\u2022 ${matches[1]}`;
};
const renderCheckboxList = (matchingString, matches) => {
const isChecked = matches[1] === "x";
return /* @__PURE__ */ React36.createElement(View24, { key: matchingString, style: styles1.taskItem }, /* @__PURE__ */ React36.createElement(Text20, { style: styles1.taskCheckbox }, isChecked ? "\u2714\uFE0F" : "\u2B1C"), /* @__PURE__ */ React36.createElement(Text20, { style: styles1.taskText }, matches[2]));
};
const renderOrderedList = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.orderedList }, matches[1]);
const renderHorizontalRule = () => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.horizontalRule }, "\n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "\n");
const renderBlockCode = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.codeBlock }, matches[1]);
const renderTable_2 = (matchingString, _matches) => {
const rows = matchingString.trim().split("\n").map(
(row) => row.split("|").map((cell) => cell.trim()).filter((cell) => cell)
);
const headers = rows[0];
const body = rows.slice(2);
return /* @__PURE__ */ React36.createElement(View24, { key: matchingString, style: styles1.table }, /* @__PURE__ */ React36.createElement(View24, { style: styles1.tableRow }, headers.map((cell, i) => /* @__PURE__ */ React36.createElement(Text20, { key: i, style: styles1.tableHeader }, cell))), body.map((row, i) => /* @__PURE__ */ React36.createElement(View24, { key: i, style: styles1.tableRow }, row.map((cell, j) => /* @__PURE__ */ React36.createElement(Text20, { key: j, style: styles1.tableCell }, cell)))));
};
const renderTable = (matchingString, matches) => {
const rows = matches[0].trim().split("\n");
const header = rows[0].split("|").map((cell) => cell.trim()).filter((cell) => cell);
const body = rows.slice(2).map(
(row) => row.split("|").map((cell) => cell.trim()).filter((cell) => cell)
);
return /* @__PURE__ */ React36.createElement(View24, { style: styles1.table }, /* @__PURE__ */ React36.createElement(View24, { style: styles1.tableRow }, header.map((cell, i) => /* @__PURE__ */ React36.createElement(Text20, { key: i, style: styles1.tableHeader }, cell))), body.map((row, i) => /* @__PURE__ */ React36.createElement(View24, { key: i, style: styles1.tableRow }, row.map((cell, j) => /* @__PURE__ */ React36.createElement(Text20, { key: j, style: styles1.tableCell }, cell)))));
};
const renderTaskList = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.taskListItem }, matches[1] === "x" ? "\u2611\uFE0F" : "\u2B1C\uFE0F", " ", matches[2]);
const renderFootnote = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.footnote }, matches[1], ": ", matches[2]);
const renderFootnoteReference = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { key: matchingString, style: styles1.footnoteReference }, `[${matches[1]}]`);
const renderHTML = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.html }, matches[1]);
const renderParagraph = (matchingString, matches) => /* @__PURE__ */ React36.createElement(View24, { style: styles1.paragraph }, /* @__PURE__ */ React36.createElement(Text20, { style: styles1.paragraph }, matches[1]));
const renderPhone = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.phone, onPress: () => onPhonePress(matches[0]) }, matches[0]);
const renderUrl = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.url, onPress: () => onUrlPress(matches[0]) }, matches[0]);
const renderUrl_2 = (matchingString, matches) => /* @__PURE__ */ React36.createElement(
Text20,
{
key: matchingString,
style: styles1.link,
onPress: () => onUrlPress(matches[2])
},
matches[1]
);
const renderEmail = (matchingString, matches) => /* @__PURE__ */ React36.createElement(Text20, { style: styles1.email, onPress: () => onEmailPress(matches[0]) }, matches[0]);
const renderEmoticon = (match) => {
return emojiMap[match] || match;
};
const onUrlPress = (url) => {
if (WWW_URL_PATTERN.test(url)) {
onUrlPress(`http://${url}`);
} else {
Linking.canOpenURL(url).then((supported) => {
if (!supported) {
console.log("No handler for URL:", url);
try {
Linking.openURL(url);
} catch (e) {
}
} else {
Linking.openURL(url);
}
});
}
};
const onPhonePress = async (phone) => {
try {
const communications = await loadCommunications();
if (communications) {
communications.phonecall(phone, true);
} else {
FallbackCommunicationsAPI.phonecall(phone, true);
}
} catch (error) {
console.warn("Failed to load communications, using fallback:", error);
FallbackCommunicationsAPI.phonecall(phone, true);
}
};
const sendEmail = (email, subject, body) => {
let url = `mailto:${email}`;
let params = [];
if (subject) {
params.push(`subject=${encodeURIComponent(subject)}`);
}
if (body) {
params.push(`body=${encodeURIComponent(body)}`);
}
if (params.length > 0) {
url += `?${params.join("&")}`;
}
Linking.openURL(url).then(() => console.log("Email client opened successfully")).catch((err) => {
console.error("Error opening email client:", err);
Alert5.alert("Error", `An error occurred: ${err.message}`);
});
};
const loadCommunications = async () => {
try {
const CommunicationsModule = await import("react-native-communications");
return CommunicationsModule.default || CommunicationsModule;
} catch (error) {
console.warn("react-native-communications not available:", error);
return null;
}
};
const onEmailPress = (email) => {
console.log("email ------------>:", email);
sendEmail(email);
};
let parseList = [
// Smileys & Emotion
{
pattern: /(^|[^\w]):\)(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):\((?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):D(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):P(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]);\)(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):O(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):\|(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):’\((?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):’D(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):3(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):\*\)(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):S(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w])>:\((?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):\/(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):o(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):c(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):X(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w])xD(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w])B-\)(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w]):\^\)(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w])>.<(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /(^|[^\w])-_-(?=[^\w]|$)/g,
renderText: (match) => renderEmoticon(match.trim())
},
{
pattern: /#h1(\w+)/,
renderText: (matchingString, matches) => renderHeaderNew(1, matchingString, matches)
},
{
pattern: /#h2(\w+)/,
renderText: (matchingString, matches) => renderHeaderNew(2, matchingString, matches)
},
{
pattern: /#h3(\w+)/,
renderText: (matchingString, matches) => renderHeaderNew(3, matchingString, matches)
},
{
pattern: /#h4(\w+)/,
renderText: (matchingString, matches) => renderHeaderNew(4, matchingString, matches)
},
{
pattern: /#h5(\w+)/,
renderText: (matchingString, matches) => renderHeaderNew(5, matchingString, matches)
},
{
pattern: /#h6(\w+)/,
renderText: (matchingString, matches) => renderHeaderNew(6, matchingString, matches)
},
{
pattern: /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/,
renderText: renderPhone,
onPress: onPhonePress
},
{
pattern: /\[([^\]]+)\]\(([^)]+)\)/g,
renderText: renderUrl_2,
onPress: onUrlPress
},
{
pattern: /https?:\/\/[a-zA-Z0-9.-]+\/[a-zA-Z0-9\/.-]+\?(?:[a-zA-Z0-9]+=[a-zA-Z0-9$+=\/]+&?)+/,
renderText: renderUrl,
onPress: onUrlPress
},
{
pattern: /(\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b)/,
renderText: renderEmail,
onPress: onEmailPress
},
{ pattern: /~(.*?)~/, renderText: renderItalic },
{ pattern: /<p>(.*?)<\/p>/, renderText: renderParagraph },
{ pattern: /<div>(.*?)<\/div>/g, renderText: renderHTML },
{ pattern: /(^|\s)(#)\s(.*)/, renderText: renderHeader(1) },
{ pattern: /(^|\s)(##)\s(.*)/, renderText: renderHeader(2) },
{ pattern: /(^|\s)(###)\s(.*)/, renderText: renderHeader(3) },
{ pattern: /(^|\s)(####)\s(.*)/, renderText: renderHeader(4) },
{ pattern: /(^|\s)(#####)\s(.*)/, renderText: renderHeader(5) },
{ pattern: /(^|\s)(######)\s(.*)/, renderText: renderHeader(6) },
{ pattern: /\~\~(.*?)\~\~/, renderText: renderStrikethrough },
// {pattern: /~(.*?)~/, renderText: renderItalic},
{ pattern: />(.*?)$/, renderText: renderBlockquote },
{ pattern: />\s*(.*)$/gm, renderText: renderBlockquote },
{ pattern: /`([^`]*)`/, renderText: renderCode },
{ pattern: /^\d+\.\s(.*?)$/, renderText: renderOrderedList },
{ pattern: /^---$/, renderText: renderHorizontalRule },
{ pattern: /```([\s\S]*?)```/, renderText: renderBlockCode },
{ pattern: /\[(.*?)\]\((.*?)\)/, renderText: renderLink },
{ pattern: /\|([^|]+)\|([^|]+)\|$/, renderText: renderTable },
{
pattern: /(?:\|([\s\S]*?)\|\r?\n)(?:\|[-:| ]+\|\r?\n)(?:\|([\s\S]*?)\|\r?\n)+/g,
renderText: renderTable_2
},
{
pattern: /^\s*\|.*\|\r?\n(?:^\s*\|.*\|\r?\n)*/gm,
renderText: renderTable_2
},
{
pattern: /^\s*\|.*\|\s*\r?\n(?:^\s*\|.*\|\s*\r?\n)*/gm,
renderText: renderTable_2
},
//{pattern: /~(.*?)~/, renderText: renderItalic},
{ pattern: /-\s\[(\s|x)\]\s(.*?)$/, renderText: renderTaskList },
{ pattern: /\[\^(\d+)\]:\s(.*?)$/, renderText: renderFootnote },
{ pattern: /^\[\^(\d+)\]:\s*(.*)$/gm, renderText: renderFootnote },
{ pattern: /\[\^(\d+)\]/g, renderText: renderFootnoteReference },
{ pattern: /\*\*\*(.*?)\*\*\*/, renderText: renderBoldItalic },
{ pattern: /\*(.*?)\*/, renderText: renderBold },
//{pattern: /\*(.*?)\*/g, renderText: renderItalic}, // Correct renderText to renderItalic
{ pattern: /(?:^\s*\*\s)(.*)/gm, renderText: renderUnorderedList },
{ pattern: /^\s*-\s+(.*)$/, renderText: renderUnorderedList },
{ pattern: /^\s*\*\s+(.*)$/, renderText: renderUnorderedList },
{ pattern: /^\s*[-*]\s+(.*)$/, renderText: renderUnorderedList },
{ pattern: /- \[([ x])\] (.+)/g, renderText: renderCheckboxList },
{ pattern: /^-{3,}$/gm, renderText: renderHorizontalRule },
{
pattern: /"|'|&|<|>| |©|®|€|¥|¢|£|°|¶|§|™|×|÷|«|»/g,
renderText: (match) => {
return htmlEntities[match];
}
}
];
return parseList;
}
var styles1 = StyleSheet19.create({
taskItem: {
flexDirection: "row",
alignItems: "center",
marginVertical: 4
},
taskCheckbox: {
// fontSize: 16,
marginRight: 8,
color: "#000"
// Change the color as needed
},
taskText: {
//fontSize: 14,
//color: '#333', // Change the color as needed
},
footnoteReference: {
color: "blue",
textDecorationLine: "underline"
},
container: {
flex: 1,
justifyContent: "center",
padding: 10
},
text: {
fontSize: 16
},
bold: {
fontWeight: "bold"
},
italic: {
fontStyle: "italic"
},
boldItalic: {
fontWeight: "bold",
fontStyle: "italic"
},
link: {
color: "blue",
textDecorationLine: "underline"
},
h1: {
fontSize: 24,
fontWeight: "bold"
},
h2: {
fontSize: 22,
fontWeight: "bold"
},
h3: {
fontSize: 20,
fontWeight: "bold"
},
h4: {
fontSize: 18,
fontWeight: "bold"
},
h5: {
fontSize: 16,
fontWeight: "bold"
},
h6: {
fontSize: 14,
fontWeight: "bold"
},
strikethrough: {
textDecorationLine: "line-through"
},
blockquote: {
// borderLeftWidth: 4,
// borderLeftColor: '#cccccc',
// paddingLeft: 10,
// color: '#666666',
// fontStyle: 'italic',
borderLeftWidth: 4,
//borderLeftColor: 'gray',
paddingLeft: 10,
marginVertical: 10,
backgroundColor: "#f9f9f9",
fontStyle: "italic",
// Add italic if needed
color: "#666666"
// Add color if needed
},
code: {
fontFamily: "monospace",
// backgroundColor: '#f5f5f5',
padding: 2,
borderRadius: 4
},
unorderedList: {
//fontSize: 16,
marginBottom: 5,
marginLeft: 20
// Indent list items
},
orderedList: {
marginLeft: 20
},
horizontalRule: {
textAlign: "center"
},
codeBlock: {
fontFamily: "monospace",
// backgroundColor: '#f5f5f5',
padding: 10,
borderRadius: 4
},
table: {
borderWidth: 1,
borderColor: "#cccccc",
marginTop: 10,
marginBottom: 10
},
tableRow: {
flexDirection: "row"
},
tableHeader: {
flex: 1,
fontWeight: "bold",
padding: 5,
borderWidth: 1,
borderColor: "#cccccc",
backgroundColor: "#f0f0f0"
},
tableCell: {
flex: 1,
padding: 5,
borderWidth: 1,
borderColor: "#cccccc"
},
taskListItem: {
marginLeft: 20
},
footnote: {
fontSize: 12,
color: "#666666"
},
html: {
paddingTop: 5,
fontFamily: "serif",
//color: '#333333',
paddingBottom: 5
},
paragraph: {
paddingBottom: 5,
paddingTop: 5
},
phone: {
//color: 'blue',
textDecorationLine: "underline"
},
url: {
color: "blue",
textDecorationLine: "underline"
},
email: {
color: "blue",
textDecorationLine: "underline"
}
});
// bot-sdk/templates/BotText.tsx
var WWW_URL_PATTERN2 = /^www\./i;
var BotText = class extends BaseView_default {
static contextType = ThemeContext;
// static contextTypes: {
// actionSheet: PropTypes.Requireable<(...args: any[]) => any>;
// };
//static BotText: {};
static defaultProps;
// shouldComponentUpdate(nextProps: any) {
// return (
// !!this.props.text &&
// !!nextProps.text &&
// this.props.text !== nextProps.text
// );
// }
onLinkCallback = (url) => {
let isErrorResult = false;
return new Promise((resolve, reject) => {
isErrorResult = this.onUrlPress(url);
isErrorResult ? reject() : resolve();
});
};
onUrlPress = (url) => {
if (WWW_URL_PATTERN2.test(url)) {
this.onUrlPress(`http://${url}`);
} else {
Linking2.canOpenURL(url).then((supported) => {
if (!supported) {
try {
Linking2.openURL(url);
} catch (e) {
}
console.log("No handler for URL:", url);
} else {
Linking2.openURL(url);
}
});
}
return true;
};
// private onPhonePress = (phone: string | null | undefined) => {
// const {optionTitles} = this.props;
// const options =
// optionTitles && optionTitles.length > 0
// ? optionTitles.slice(0, 3)
// : DEFAULT_OPTION_TITLES;
// const cancelButtonIndex = options.length - 1;
// // this.context.actionSheet().showActionSheetWithOptions(
// // {
// // options,
// // cancelButtonIndex,
// // },
// // buttonIndex => {
// // switch (buttonIndex) {
// // case 0:
// // Communications.phonecall(phone, true);
// // break;
// // case 1:
// // Communications.text(phone);
// // break;
// // default:
// // break;
// // }
// // },
// // );
// };
isViewDisable = () => {
if (this.props.isFromViewMore) {
return false;
}
return !this.props?.isLastMsz;
};
onEmailPress = async (email) => {
try {
const { useLazyCommunications: useLazyCommunications2 } = await import("./LazyCommunications-HY7BPSTW.mjs");
const communications = await this.loadCommunications();
if (communications) {
communications.email([email], null, null, null, null);
} else {
FallbackCommunicationsAPI.email([email], null, null, null, null);
}
} catch (error) {
console.warn("Failed to load communications, using fallback:", error);
FallbackCommunicationsAPI.email([email], null, null, null, null);
}
};
async loadCommunications() {
try {
const CommunicationsModule = await import("react-native-communications");
return CommunicationsModule.default || CommunicationsModule;
} catch (error) {
console.warn("react-native-communications not available:", error);
return null;
}
}
render() {
let text = this.props?.text;
const bubbleTheme = getBubbleTheme(this.props?.theme);
return text ? /* @__PURE__ */ React37.createElement(View25, { style: { flexWrap: "wrap", marginBottom: 5, marginEnd: 30 } }, /* @__PURE__ */ React37.createElement(
View25,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [
styles22.container,
{
backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR
},
leftBubbleStyles[this.props?.theme?.v3?.body?.bubble_style || "balloon"].bubble_style
]
},
/* @__PURE__ */ React37.createElement(
LazyParsedText,
{
style: [
styles22.text,
{
color: bubbleTheme.BUBBLE_LEFT_TEXT_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size,
this.props.text_color && {
color: this.props.text_color
}
],
parse: getParseList()
},
this.props.isFilterApply ? text.toString().replace(/\s\s+/g, "\n").trim() : text.trim()
)
)) : /* @__PURE__ */ React37.createElement(React37.Fragment, null);
}
};
var styles22 = StyleSheet20.create({
text: {
color: "#202124",
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
marginTop: 5,
marginBottom: 5,
marginLeft: 5,
marginRight: 10
},
container: {
padding: 5,
//backgroundColor: 'red', //'#EFF0F0',
// marginRight: 30,
//flexWrap: 'wrap',
marginLeft: 0,
minHeight: 10,
justifyContent: "flex-start"
}
});
// bot-sdk/templates/DateTemplate.tsx
import dayjs7 from "dayjs";
import "dayjs/locale/en";
import advancedFormat3 from "dayjs/plugin/advancedFormat";
import customParseFormat3 from "dayjs/plugin/customParseFormat";
dayjs7.extend(advancedFormat3);
dayjs7.extend(customParseFormat3);
var DateTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
startDate: null,
endDate: null,
isPickerVisible: false
};
}
getPickerMode() {
return this.props.payload?.template_type === TEMPLATE_TYPES.DATE_RANGE_TEMPLATE ? "range" : "single";
}
handleConfirm = (dateObj) => {
if (!dateObj) {
return;
}
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
dateObj
);
}
};
getStartDate = () => {
let sDate = this.props.payload?.startDate ? dayjs7(this.props.payload?.startDate, this.props.payload?.format, true) : void 0;
if (!sDate?.isValid()) {
return dayjs7();
}
return sDate;
};
getBlockBeforeDate = () => {
let sDate = this.getStartDate();
if (!this.props.payload?.endDate && sDate) {
sDate = sDate.subtract(1, "day");
}
return sDate;
};
getEndDate = () => {
let eDate = this.props.payload?.endDate ? dayjs7(this.props.payload?.endDate, this.props.payload?.format, true) : void 0;
return eDate;
};
getCurrentDate() {
let startDate = this.getStartDate();
if (startDate) {
return startDate;
}
return dayjs7();
}
render() {
return /* @__PURE__ */ React38.createElement(View26, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload?.text && /* @__PURE__ */ React38.createElement(
BotText,
{
text: this.props.payload?.text_message?.trim() || this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), /* @__PURE__ */ React38.createElement(
ComposePicker,
{
modalVisible: !this.isViewDisable(),
customStyles,
selectedBgColor: customStyles.styles.selectedBgColor,
selectedTextColor: customStyles.styles.selectedTextColor,
currentDate: this.getCurrentDate(),
ButtonTextStyle: styles23.btn_text,
headerText: this.props.payload?.title,
mode: this.getPickerMode(),
calendarBgColor: Color_default.white,
blockBefore: this.getBlockBeforeDate(),
blockAfter: this.getEndDate(),
returnFormat: this.props.payload?.format,
onConfirm: this.handleConfirm
}
));
}
};
var customStyles = {
styles: {
selectedBgColor: "#4751B1",
selectedTextColor: Color_default.white,
textColor: "#555555"
},
placeholderText: { fontSize: normalize(20) },
// placeHolder style
headerStyle: {
backgroundColor: "rgba(71, 81, 177, 1)",
borderTopRightRadius: 3,
borderTopLeftRadius: 2
},
headerMarkTitle: {
color: Color_default.white,
fontSize: normalize(18),
fontWeight: "500"
},
// title mark style
headerDateTitle: {
//color: Color.carrot,
},
// title Date style
headerDateSingle: {
color: Color_default.white,
fontSize: normalize(18),
fontWeight: "500"
},
contentInput: {},
//content text container style
contentText: {},
//after selected text style
monthPickerText: {},
//focused month picker text style
datePickerText: {},
//calendar dates text style
dayNameText: {}
//day of week title text style (M, T, W, T, F, S, S)
};
var styles23 = StyleSheet21.create({
btn_text: { color: customStyles.styles.textColor, fontSize: normalize(17) }
});
// bot-sdk/templates/ErrorTemplate.tsx
init_esm_shims();
import * as React39 from "react";
import { View as View27 } from "react-native";
var ErrorTemplate = class extends BaseView_default {
static contextType = ThemeContext;
static propTypes;
constructor(props) {
super(props);
}
// shouldComponentUpdate(nextProps: ErrorProps) {
// return (
// !!this.props.payload &&
// !!nextProps.payload &&
// this.props.payload !== nextProps.payload
// );
// }
render() {
return /* @__PURE__ */ React39.createElement(View27, null, this.props.payload && /* @__PURE__ */ React39.createElement(View27, null, this.props.payload?.text && /* @__PURE__ */ React39.createElement(
BotText,
{
text: this.props.payload?.text,
isFilterApply: true,
text_color: this.props.payload?.color,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
)));
}
};
// bot-sdk/templates/ImageTemplate.tsx
init_esm_shims();
import * as React40 from "react";
import { Text as Text21, View as View28, StyleSheet as StyleSheet22, ImageBackground } from "react-native";
import FastImage4 from "react-native-fast-image";
import { TouchableOpacity as TouchableOpacity13 } from "react-native-gesture-handler";
var ImageTemplate = class extends BaseView_default {
static propTypes;
placeholderImage;
constructor(props) {
super(props);
this.state = {
imageUri: this.props.payload?.url
};
this.placeholderImage = placeholder.image;
}
componentDidMount() {
}
handleImageError = () => {
};
shouldComponentUpdate(nextProps) {
return !!this.props.payload && !!nextProps.payload && this.props.payload !== nextProps.payload;
}
getFileNameFromUrl = (url) => {
const matches = url?.match?.(/\/([^\/?#]+)[^\/]*$/);
if (matches && matches.length > 1) {
return matches[1];
}
return null;
};
renderImageView(item) {
const bbtheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React40.createElement(View28, { style: [styles24.main_container_1] }, /* @__PURE__ */ React40.createElement(
View28,
{
style: [
styles24.main_container,
{
borderColor: bbtheme?.BUBBLE_LEFT_BG_COLOR || "#4B4EDE",
borderWidth: 1
}
]
},
this.state.imageUri && /* @__PURE__ */ React40.createElement(
ImageBackground,
{
style: styles24.image_view,
source: this.placeholderImage
},
/* @__PURE__ */ React40.createElement(
FastImage4,
{
source: { uri: this.state.imageUri },
style: styles24.image,
onError: this.handleImageError
}
)
),
/* @__PURE__ */ React40.createElement(View28, { style: styles24.image_name_con }),
/* @__PURE__ */ React40.createElement(
TouchableOpacity13,
{
onPress: () => {
console.log("url " + this.state.imageUri);
if (this.props.onListItemClick) {
this.props.onListItemClick(
TEMPLATE_TYPES.IMAGE_MESSAGE,
this.state.imageUri
);
}
}
},
/* @__PURE__ */ React40.createElement(
Text21,
{
style: [
styles24.button_text,
{
color: bbtheme.BUBBLE_RIGHT_BG_COLOR || Color_default.blue,
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"].size
]
},
"Download"
)
)
));
}
render() {
return this.props.payload ? /* @__PURE__ */ React40.createElement(View28, { style: styles24.main_container_3 }, this.renderImageView(this.props.payload)) : /* @__PURE__ */ React40.createElement(React40.Fragment, null);
}
};
var styles24 = StyleSheet22.create({
main_container_3: {
backgroundColor: Color_default.white,
minWidth: "90%"
},
main_container_1: {
//backgroundColor: 'yellow',
minHeight: 50
// width: '100%',
// width: windowWidth - normalize(30),
},
main_container: {
// backgroundColor: 'yellow',
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
//borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
padding: 10,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
image_view: {
justifyContent: "center",
alignItems: "center",
marginTop: 10,
alignSelf: "center",
height: normalize(140),
width: normalize(200)
},
image_name_con: {
width: "100%",
height: 0.5,
backgroundColor: Color_default.white,
marginTop: 20,
marginBottom: 10
},
image_name: {
alignSelf: "center",
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "normal",
fontSize: normalize(13),
letterSpacing: 0.270833,
alignItems: "flex-start",
textAlign: "justify",
color: "#616368"
//'#5F6368',
},
image: {
height: normalize(140),
width: normalize(200),
resizeMode: "stretch",
margin: 0
},
button_text: {
minWidth: 50,
paddingHorizontal: 20,
paddingVertical: 10,
borderRadius: 8,
backgroundColor: "#eaf1fc",
alignSelf: "flex-end",
color: "#3A35F6",
alignContent: "center",
justifyContent: "center"
}
});
// bot-sdk/templates/ListTemplate.tsx
init_esm_shims();
import * as React41 from "react";
import {
Dimensions as Dimensions8,
StyleSheet as StyleSheet23,
Text as Text22,
TouchableOpacity as TouchableOpacity14,
View as View29
} from "react-native";
import FastImage5 from "react-native-fast-image";
var windowWidth4 = Dimensions8.get("window").width;
var width = windowWidth4 * 0.8;
var ListTemplate = class extends BaseView_default {
constructor(props) {
super(props);
}
getSingleElementView = (item, index, _size = 0) => {
let Image_Http_URL = { uri: item?.image_url };
let buttons = item?.buttons ? [...item?.buttons] : [];
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React41.createElement(View29, { key: index + "_" + index, style: [styles25.main_view_1, { borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR }] }, /* @__PURE__ */ React41.createElement(
TouchableOpacity14,
{
style: styles25.sub_container,
onPress: !item?.default_action ? void 0 : () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
item?.default_action
);
}
}
},
/* @__PURE__ */ React41.createElement(View29, null, /* @__PURE__ */ React41.createElement(View29, { style: styles25.image_container }, /* @__PURE__ */ React41.createElement(FastImage5, { source: Image_Http_URL, style: styles25.image }))),
/* @__PURE__ */ React41.createElement(View29, { style: styles25.sub_container_1 }, /* @__PURE__ */ React41.createElement(
Text22,
{
style: [
styles25.displayTextStyle,
{
color: Color_default.black,
////this.props.theme?.v3?.general?.colors?.primary_text,
fontFamily: this.props.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
item.title
), /* @__PURE__ */ React41.createElement(
Text22,
{
style: [
styles25.descTextStyle,
{
//color: this.props.theme?.v3?.general?.colors?.primary_text,
color: Color_default.black,
fontFamily: this.props.theme?.v3?.body?.font?.family
},
botStyles["small"]?.size
]
},
item.subtitle
))
), buttons && /* @__PURE__ */ React41.createElement(
View29,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [
styles25.buttons_container,
buttons?.length > 0 && { marginBottom: 10 }
]
},
buttons.map((btn, i) => {
return /* @__PURE__ */ React41.createElement(
TouchableOpacity14,
{
key: i + "_",
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
btn
);
}
},
style: [
styles25.buttons_container_1,
{
backgroundColor: this.props?.theme?.v3?.body?.buttons?.bg_color || "#a37645"
}
]
},
/* @__PURE__ */ React41.createElement(
Text22,
{
style: [
styles25.btn_text,
{
color: this.props?.theme?.v3?.body?.buttons?.color || "#ffffff",
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
},
botStyles["small"]?.size
]
},
btn?.title
)
);
})
));
};
renderElementsView = (list) => {
if (!list || list.length === 0) {
return /* @__PURE__ */ React41.createElement(React41.Fragment, null);
}
return /* @__PURE__ */ React41.createElement(
View29,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [{ width }]
},
list?.map((item, index) => {
return this.getSingleElementView(item, index, list.length);
}),
this.props.payload?.buttons && /* @__PURE__ */ React41.createElement(
View29,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: styles25.more_btn_container
},
this.props.payload?.buttons.map((btn) => {
return /* @__PURE__ */ React41.createElement(
TouchableOpacity14,
{
style: styles25.more_sub_con1,
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
btn,
true
);
}
}
},
/* @__PURE__ */ React41.createElement(
Text22,
{
style: [
styles25.more_text,
{
fontFamily: this.props.theme?.v3?.body?.font?.family,
color: Color_default.black
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
btn?.title
)
);
})
)
);
};
render() {
return this.props.payload ? /* @__PURE__ */ React41.createElement(View29, { style: styles25.main_container }, this.renderElementsView(this.props.payload?.elements)) : /* @__PURE__ */ React41.createElement(React41.Fragment, null);
}
};
var styles25 = StyleSheet23.create({
main_container: {
backgroundColor: Color_default.transparent,
alignItems: "center",
justifyContent: "center"
},
more_text: {
flex: 1,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.VIEW_MORE_TEXT_COLOR,
// alignSelf: 'flex-start',
alignSelf: "center",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
more_sub_con1: {
flex: 1,
justifyContent: "flex-start",
alignItems: "flex-start",
backgroundColor: "transparent",
paddingBottom: 10
},
more_btn_container: {
flexDirection: "row",
justifyContent: "flex-start",
alignItems: "flex-start"
},
btn_text: {
padding: 12,
color: Color_default.white,
fontWeight: "500"
},
buttons_container_1: {
// backgroundColor: Color.blue,
paddingLeft: 5,
paddingRight: 5,
marginBottom: 5,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
alignItems: "center"
},
buttons_container: {
flexDirection: "column",
// backgroundColor: 'green',
justifyContent: "flex-end",
marginTop: 10,
marginEnd: 10,
marginStart: 10
},
sub_container_1: {
flexDirection: "column",
marginStart: 10,
flex: 1
},
sub_container: { flexDirection: "row", marginTop: 10 },
image: {
height: normalize(55),
width: normalize(55),
resizeMode: "stretch",
borderRadius: 4,
margin: 0
},
image_container: {
backgroundColor: "transparent",
minHeight: normalize(55),
minWidth: normalize(55)
},
line: {
backgroundColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
width: "100%",
height: StyleSheet23.hairlineWidth
},
main_view_1: {
paddingEnd: 5,
paddingStart: 5,
flexDirection: "column",
marginBottom: 15,
backgroundColor: Color_default.white,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
btn_views_1: {
backgroundColor: "white",
marginBottom: 2,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
displayTextStyle: {
fontWeight: "500",
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
marginBottom: 5,
marginEnd: 10
},
descTextStyle: {
fontWeight: "400",
fontSize: normalize(13),
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
color: "#485260",
marginBottom: 3,
marginEnd: 10,
opacity: 0.6
}
});
// bot-sdk/templates/MiniTableTemplate.tsx
init_esm_shims();
import * as React42 from "react";
import { Dimensions as Dimensions9, Platform as Platform9, StyleSheet as StyleSheet24, Text as Text23, View as View30 } from "react-native";
var windowWidth5 = Dimensions9.get("window").width;
var MiniTableTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
CarouselComponent: null,
isCarouselLoading: false
};
}
// Lazy loading method for carousel
loadCarouselComponent = async () => {
if (this.state.CarouselComponent || this.state.isCarouselLoading) {
return this.state.CarouselComponent;
}
this.setState({ isCarouselLoading: true });
try {
const CarouselModule = await import("react-native-reanimated-carousel");
const CarouselComponent = CarouselModule.default || CarouselModule;
this.setState({
CarouselComponent,
isCarouselLoading: false
});
return CarouselComponent;
} catch (error) {
console.warn("Failed to load Carousel component:", error);
this.setState({
CarouselComponent: null,
isCarouselLoading: false
});
return null;
}
};
componentDidMount() {
this.loadCarouselComponent();
}
renderVerticalTable = (payload) => {
if (!payload) {
return /* @__PURE__ */ React42.createElement(React42.Fragment, null);
}
return /* @__PURE__ */ React42.createElement(View30, { style: {} }, payload.elements.map((item, index) => {
return this.renderTablesViewMore(item, true, index);
}));
};
getTemplateWidth = () => {
return windowWidth5 * 0.7;
};
renderHorizontalTable = (payload) => {
if (!payload) {
return /* @__PURE__ */ React42.createElement(React42.Fragment, null);
}
const { CarouselComponent, isCarouselLoading } = this.state;
if (isCarouselLoading || !CarouselComponent) {
return /* @__PURE__ */ React42.createElement(View30, { style: { padding: 20, alignItems: "center" } }, /* @__PURE__ */ React42.createElement(Text23, { style: { color: Color_default.text_color } }, "Loading table..."));
}
const height = this.getColumnCount(payload) * normalize(45);
const width8 = this.getTemplateWidth();
const viewportWidth = windowWidth5 * 0.8;
return /* @__PURE__ */ React42.createElement(
CarouselComponent,
{
vertical: false,
loop: false,
width: width8,
height,
data: payload.elements,
style: { width: viewportWidth },
renderItem: ({ item, index }) => /* @__PURE__ */ React42.createElement(View30, { style: [styles26.shadowContainer] }, this.renderTablesViewMore(item, false, index))
}
);
};
renderMiniTableTemplate() {
const payload = this.props.payload;
if (!payload) {
return /* @__PURE__ */ React42.createElement(React42.Fragment, null);
}
let type = payload?.layout;
switch (type) {
case "horizontal":
return this.renderHorizontalTable(payload);
default:
return this.renderVerticalTable(payload);
}
}
getColumnCount(payload) {
let maxColCount = 0;
for (let i = 0; i <= payload.elements?.length; i++) {
if (!payload?.elements[i]?.additional) {
continue;
}
if (payload.elements[i]?.additional?.length > maxColCount) {
maxColCount = payload.elements[i].additional?.length + 1;
}
}
maxColCount = maxColCount + 1;
return maxColCount;
}
renderTablesViewMore = (element, isVertical, index) => {
if (!element) {
return null;
}
let flexArry = [];
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React42.createElement(View30, { key: index + "", style: [[styles26.mainContainer, styles26.main_con2]] }, /* @__PURE__ */ React42.createElement(View30, { style: [styles26.sub_con] }, /* @__PURE__ */ React42.createElement(View30, { style: [styles26.subContainer_more, { borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR }] }, /* @__PURE__ */ React42.createElement(
View30,
{
style: [
styles26.subContainer2_more,
isVertical && {
paddingTop: 10,
paddingBottom: 10
}
]
},
element?.primary?.map((coloum, i) => {
flexArry[i] = coloum?.[0]?.length;
return /* @__PURE__ */ React42.createElement(
Text23,
{
key: i + " " + i,
style: [
styles26.titles,
{
flex: coloum?.[0]?.length,
color: Color_default.black,
paddingEnd: 5,
paddingStart: 5
},
{
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles[isVertical ? "small" : "medium"]?.size,
coloum?.[1] && {
textAlign: coloum?.[1] || "center"
}
]
},
coloum?.[0]
);
})
), /* @__PURE__ */ React42.createElement(View30, { style: [styles26.thick_line, { backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR }] }), /* @__PURE__ */ React42.createElement(View30, { style: styles26.view_more_main }, this.getTableRowViewsMore(element, flexArry, isVertical)))));
};
getTableRowViewsMore = (element, flexArry = [], isVertical) => {
let elements = element?.additional;
let views = [];
if (!elements || elements?.length === 0) {
return null;
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
for (let i = 0; i < elements?.length; i++) {
let view = /* @__PURE__ */ React42.createElement(View30, { key: "key_" + i, style: [{ flexDirection: "column" }, { backgroundColor: i % 2 == 0 ? bubbleTheme.BUBBLE_LEFT_BG_COLOR || "#ffffff" : "#ffffff" }] }, /* @__PURE__ */ React42.createElement(
View30,
{
style: {
flexDirection: "row"
}
},
elements[i].map((value, index) => {
return /* @__PURE__ */ React42.createElement(
View30,
{
key: index + "_" + index + "_",
style: [
{
flex: flexArry[index],
paddingEnd: 5,
paddingLeft: 5
},
styles26.view_more_sub,
isVertical && {
paddingTop: 10,
paddingBottom: 10
}
]
},
/* @__PURE__ */ React42.createElement(
Text23,
{
style: [
styles26.row_text,
{
color: Color_default.black,
// this.props.theme?.v3?.general?.colors?.primary_text,
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles[isVertical ? "small" : "medium"]?.size,
element?.primary?.[index][1] && {
textAlign: element?.primary?.[index][1] || "center"
//'right',
}
]
},
value
)
);
})
), i !== elements?.length - 1 && /* @__PURE__ */ React42.createElement(View30, { style: [styles26.line, { backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR }] }));
views[i] = view;
}
return views;
};
render() {
return this.props.payload ? /* @__PURE__ */ React42.createElement(View30, { style: { width: windowWidth5 } }, this.props.payload?.text && /* @__PURE__ */ React42.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isLastMsz: !this.isViewDisable(),
isFilterApply: true,
theme: this.props.theme
}
), this.renderMiniTableTemplate()) : /* @__PURE__ */ React42.createElement(React42.Fragment, null);
}
};
var styles26 = StyleSheet24.create({
shadowContainer: {
//flex: 1,
// justifyContent: 'center',
marginRight: "2.5%",
//paddingBottom: '10%',
//borderRadius: 10,
//backgroundColor: 'white', // Set the background color of the view
// borderRadius: 10, // Optional: Set borderRadius for rounded corners
// padding: 1, // Optional: Set padding for inner content
...Platform9.select({
ios: {
// shadowColor: '#000',
// shadowOffset: {width: 0, height: 2},
// shadowOpacity: 0.25,
// shadowRadius: 3.84,
},
android: {
//elevation: 5,
}
})
},
view_more_sub: {
paddingTop: 15,
paddingBottom: 15
},
view_more_main: {
flexDirection: "column"
},
sub_con: {
flexDirection: "row"
},
main_con2: {
minHeight: 50,
marginTop: 10,
marginRight: 10
},
mainContainer: {
flexDirection: "column"
},
subContainer_more: {
flexDirection: "column",
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
flex: 1,
// width: windowWidth - normalize(0),
overflow: "scroll",
backgroundColor: Color_default.white
},
subContainer2_more: {
flexDirection: "row",
justifyContent: "center",
alignItems: "center",
paddingTop: 15,
paddingBottom: 15
},
row_text: {
textAlign: "left",
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontWeight: "regular",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
line: {
width: "100%",
height: 1,
opacity: 0.5,
backgroundColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
thick_line: {
height: 1,
opacity: 1,
backgroundColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
titles: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
justifyContent: "center",
textAlign: "left",
fontWeight: "regular",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
}
});
// bot-sdk/templates/TableTemplate.tsx
init_esm_shims();
import * as React43 from "react";
import {
Dimensions as Dimensions10,
StyleSheet as StyleSheet25,
Text as Text24,
TouchableOpacity as TouchableOpacity15,
View as View31
} from "react-native";
import { ScrollView } from "react-native-gesture-handler";
var windowWidth6 = Dimensions10.get("window").width;
var SLICE = 2;
var TABLE_TYPES = {
RESPONSIVE: "responsive",
NORMAL: "normal"
};
var TableTemplate = class extends BaseView_default {
static propTypes;
downSVG;
upSVG;
flatListRef;
constructor(props) {
super(props);
this.state = {
payload: void 0
};
}
componentDidMount() {
this.updatePayloadValues();
}
componentDidUpdate(prevProps, prevState, snapshot) {
if (prevProps.payload !== this.props.payload) {
this.updatePayloadValues();
}
}
updatePayloadValues() {
let payload = this.props.payload;
const elements = payload?.elements.slice(0, 3).map((element) => {
let values = element.Values.map((value, i) => {
return {
value,
title: payload?.columns?.[i]?.[0]
};
});
return {
...element,
isCollapse: false,
Values: values
};
});
this.setState({
payload: {
elements
}
});
}
renderTablesView = () => {
const payload = this.state.payload;
if (!payload) {
return null;
}
let flexArry = [];
return /* @__PURE__ */ React43.createElement(View31, { style: [styles27.mainContainer, { width: windowWidth6 * 0.8 }] }, /* @__PURE__ */ React43.createElement(View31, { style: styles27.subContainer }, this.getTableRowViews(payload?.elements, flexArry), !this.props.isFromViewMore && /* @__PURE__ */ React43.createElement(View31, null, /* @__PURE__ */ React43.createElement(View31, { style: styles27.line }), /* @__PURE__ */ React43.createElement(
TouchableOpacity15,
{
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload?.template_type,
this.props.payload,
true,
this.props.theme
);
}
},
style: styles27.show_more_con
},
/* @__PURE__ */ React43.createElement(
Text24,
{
style: [
styles27.row_text,
{ color: Color_default.blue },
{
color: Color_default.blue,
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
"Show More"
)
))));
};
getTableRowViews = (elements, flexArry = []) => {
let views = [];
if (!elements || elements.length === 0) {
return null;
}
for (let i = 0; i < elements.length; i++) {
let view = /* @__PURE__ */ React43.createElement(View31, { key: i + "__" + i, style: styles27.tr_con }, /* @__PURE__ */ React43.createElement(View31, { style: styles27.tr_con_2 }, elements[i].Values.slice(0, SLICE).map(
(value, index) => {
return /* @__PURE__ */ React43.createElement(
TouchableOpacity15,
{
key: index + "",
onPress: () => {
this.toggleButton(i, !elements[i].isCollapse);
},
style: styles27.tb_row_con
},
elements[i].isCollapse && /* @__PURE__ */ React43.createElement(
Text24,
{
style: [
styles27.item_title,
{
color: Color_default.text_color,
//this.props.theme?.v3?.general?.colors
// ?.primary_text,
fontFamily: this.props?.theme?.v3?.body?.font?.family,
opacity: 0.8
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
value.title
),
/* @__PURE__ */ React43.createElement(
Text24,
{
style: [
{ flex: flexArry[index] },
styles27.row_text,
{
color: Color_default.text_color,
// this.props.theme?.v3?.general?.colors?.primary_text,
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
value.value
)
);
}
), /* @__PURE__ */ React43.createElement(
TouchableOpacity15,
{
style: styles27.icon_style,
onPress: () => {
this.toggleButton(i, !elements?.[i]?.isCollapse);
}
},
/* @__PURE__ */ React43.createElement(
SvgIcon,
{
name: elements?.[i]?.isCollapse ? "DownSolid" : "RightArrow",
width: normalize(10),
height: normalize(10)
}
)
)), elements[i].isCollapse && this.renderTableItems1(elements[i]), i !== elements.length - 1 && /* @__PURE__ */ React43.createElement(View31, { style: styles27.line }));
views[i] = view;
}
return views;
};
toggleButton = (index, isCollapse) => {
let payload = this.state.payload;
payload.elements = payload?.elements.map((element, i) => {
if (index === i) {
return {
...element,
isCollapse
};
}
return {
...element,
isCollapse: false
};
});
this.setState({
payload
});
};
renderTableItems1 = (element) => {
const renderedItems = [];
{
for (let i = 1; i <= element.Values.length / SLICE; i++) {
renderedItems.push(
this.renderTableItems(element, i * SLICE, i * SLICE + SLICE, i)
);
}
}
return renderedItems;
};
renderTableItems = (element, fromValue, toValue, i) => {
return /* @__PURE__ */ React43.createElement(View31, { key: i + " " + i + "_", style: styles27.ti_con }, element.Values.slice(fromValue, toValue).map(
(value, index) => {
return /* @__PURE__ */ React43.createElement(View31, { key: index + "", style: { flex: 1 } }, /* @__PURE__ */ React43.createElement(
Text24,
{
style: [
styles27.item_title,
{
color: Color_default.text_color,
// this.props.theme?.v3?.general?.colors?.primary_text,
fontFamily: this.props?.theme?.v3?.body?.font?.family,
opacity: 0.8
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
value.title
), /* @__PURE__ */ React43.createElement(
Text24,
{
style: [
{},
styles27.row_text,
{
color: Color_default.text_color,
// this.props.theme?.v3?.general?.colors?.primary_text,
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size
]
},
value.value
));
}
), /* @__PURE__ */ React43.createElement(View31, { style: styles27.empty_view }));
};
renderTablesViewMore = () => {
const payload = this.props.payload;
if (!payload) {
return null;
}
let flexArry = [];
const btheme = getBubbleTheme(this.props?.theme);
const Wrapper = this.props.isFromViewMore ? ScrollView : View31;
return /* @__PURE__ */ React43.createElement(
View31,
{
style: [
[
styles27.mainContainer,
styles27.main_con2,
{ width: windowWidth6 * 0.8 }
]
]
},
/* @__PURE__ */ React43.createElement(
Wrapper,
{
ref: (ref) => this.flatListRef = ref,
style: [styles27.sub_con],
nestedScrollEnabled: true,
scrollEnabled: true,
keyboardShouldPersistTaps: "handled",
keyboardDismissMode: "none",
contentInsetAdjustmentBehavior: "scrollableAxes",
horizontal: true
},
/* @__PURE__ */ React43.createElement(View31, { style: [styles27.subContainer_more, { borderColor: btheme?.BUBBLE_LEFT_BG_COLOR }] }, /* @__PURE__ */ React43.createElement(View31, { style: [styles27.subContainer2_more] }, payload?.columns.map((coloum, i) => {
flexArry[i] = coloum[0].length;
return /* @__PURE__ */ React43.createElement(
Text24,
{
key: i + "",
style: [
styles27.titles,
{ flex: coloum[0].length, color: Color_default.black },
{
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles.small?.size
]
},
coloum[0]
);
})), /* @__PURE__ */ React43.createElement(View31, { style: [styles27.thick_line] }), /* @__PURE__ */ React43.createElement(View31, { style: styles27.view_more_main }, this.getTableRowViewsMore(payload?.elements, flexArry)))
)
);
};
getTableRowViewsMore = (elements, flexArry = []) => {
let views = [];
if (!elements || elements.length === 0) {
return null;
}
const btheme = getBubbleTheme(this.props?.theme);
for (let i = 0; i < elements.length; i++) {
const isEvenRow = i % 2 === 0;
let view = /* @__PURE__ */ React43.createElement(View31, { key: "_" + i + i, style: { flexDirection: "column" } }, /* @__PURE__ */ React43.createElement(
View31,
{
style: {
flexDirection: "row",
backgroundColor: isEvenRow ? btheme?.BUBBLE_LEFT_BG_COLOR : "white"
}
},
elements[i].Values.map((value, index) => {
return /* @__PURE__ */ React43.createElement(
View31,
{
key: index + "",
style: [
{
flex: flexArry[index]
},
styles27.view_more_sub
]
},
/* @__PURE__ */ React43.createElement(
Text24,
{
style: [
{},
styles27.row_text,
{ fontSize: 13 },
{
color: Color_default.text_color,
// color:
// this.props.theme?.v3?.general?.colors?.primary_text,
fontFamily: this.props?.theme?.v3?.body?.font?.family
},
botStyles.small?.size
]
},
value
)
);
})
), i !== elements.length - 1 && /* @__PURE__ */ React43.createElement(View31, { style: styles27.line }));
views[i] = view;
}
return views;
};
renderTableTemplate = () => {
const table_design = this.props.payload?.table_design;
switch (table_design) {
case TABLE_TYPES.RESPONSIVE:
return this.renderTablesView();
case TABLE_TYPES.NORMAL:
return this.renderTablesViewMore();
default:
return this.renderTablesViewMore();
}
};
render() {
if (this.props.isFromViewMore) {
return this.renderTablesViewMore();
}
return this.props.payload ? /* @__PURE__ */ React43.createElement(View31, null, this.props.payload?.text && /* @__PURE__ */ React43.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isLastMsz: !this.isViewDisable(),
isFilterApply: true,
theme: this.props.theme
}
), /* @__PURE__ */ React43.createElement(View31, { style: styles27.mainContainer_2 }, this.renderTableTemplate())) : /* @__PURE__ */ React43.createElement(React43.Fragment, null);
}
};
var styles27 = StyleSheet25.create({
mainContainer_2: {
alignSelf: "flex-start",
justifyContent: "center",
alignItems: "center"
},
view_more_sub: {
marginEnd: 2,
marginStart: 2,
paddingTop: 7,
paddingBottom: 7
},
view_more_main: {
flexDirection: "column",
backgroundColor: Color_default.white
},
sub_con: {
backgroundColor: "transparent",
flexDirection: "row"
},
main_con2: {
backgroundColor: "transparent",
minHeight: 50,
marginTop: 10
},
tb_row_con: {
flex: 1,
padding: 10,
justifyContent: "center"
},
empty_view: {
backgroundColor: "transparent",
alignItems: "center",
justifyContent: "center",
flex: 0.45
},
ti_con: {
width: "100%",
flexDirection: "row",
paddingBottom: 5
},
tr_con_2: {
flexDirection: "row",
padding: 5,
flex: 1
},
tr_con: { flexDirection: "column", flex: 1 },
show_more_con: {
backgroundColor: "transparent",
margin: 3,
justifyContent: "center",
alignItems: "center",
padding: 10
},
icon_style: {
alignItems: "center",
flex: 0.5,
justifyContent: "center"
},
item_title: {
textAlign: "center",
fontSize: TEMPLATE_STYLE_VALUES.SUB_TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
fontWeight: "300",
padding: 5,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
marginEnd: 5
},
mainContainer: {
flexDirection: "column",
backgroundColor: "transparent"
},
subContainer: {
marginTop: 10,
flexDirection: "column",
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
backgroundColor: Color_default.white,
flex: 1
},
subContainer_more: {
flexDirection: "column",
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
flex: 1,
width: windowWidth6 - normalize(0),
overflow: "scroll",
backgroundColor: "transparent"
//width: windowWidth - normalize(50),
},
subContainer2: {
flexDirection: "row",
justifyContent: "center",
alignItems: "center",
flex: 1
},
subContainer2_more: {
flexDirection: "row",
justifyContent: "center",
alignItems: "center",
backgroundColor: "transparent",
paddingTop: 7,
paddingBottom: 7
},
row_text: {
textAlign: "center",
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontWeight: "500",
//padding: 12,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
line: {
width: "100%",
height: StyleSheet25.hairlineWidth,
opacity: 0.5,
backgroundColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
thick_line: {
height: 1,
opacity: 1,
backgroundColor: "transparent"
},
titles: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
justifyContent: "center",
textAlign: "center",
//padding: 10,
fontWeight: "500",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
}
});
// bot-sdk/templates/charts/BarChartTemplate.tsx
init_esm_shims();
import * as React47 from "react";
import { View as View35, StyleSheet as StyleSheet29, Dimensions as Dimensions12, Text as Text26 } from "react-native";
// bot-sdk/charts/index.tsx
init_esm_shims();
// bot-sdk/charts/LineChart/index.tsx
init_esm_shims();
import React44 from "react";
import { View as View32, StyleSheet as StyleSheet26 } from "react-native";
import Svg8, { Path as Path8, Circle, Line, Text as SvgText } from "react-native-svg";
// bot-sdk/charts/common/utils.ts
init_esm_shims();
import { Dimensions as Dimensions11 } from "react-native";
var getWindowWidth = () => Dimensions11.get("window").width;
var convertTextStyleToSvg = (style = {}, baseX = 0, baseY = 0) => {
const svgProps = {};
svgProps.fontSize = style.fontSize || "8";
if (style.fontFamily)
svgProps.fontFamily = style.fontFamily;
if (style.fontWeight)
svgProps.fontWeight = style.fontWeight;
if (style.fontStyle)
svgProps.fontStyle = style.fontStyle;
svgProps.fill = style.color || "#666";
if (style.textAlign) {
switch (style.textAlign) {
case "left":
svgProps.textAnchor = "start";
break;
case "center":
svgProps.textAnchor = "middle";
break;
case "right":
svgProps.textAnchor = "end";
break;
default:
svgProps.textAnchor = style.textAlign;
}
}
let dx = 0, dy = 0;
if (style.marginLeft)
dx += style.marginLeft;
if (style.marginStart)
dx += style.marginStart;
if (style.marginTop)
dy += style.marginTop;
if (style.marginBottom)
dy -= style.marginBottom;
svgProps.x = baseX + dx;
svgProps.y = baseY + dy;
if (style.transform && Array.isArray(style.transform)) {
const transforms = [];
style.transform.forEach((t) => {
if (t.rotate) {
const rotation = typeof t.rotate === "string" ? parseFloat(t.rotate.replace("deg", "")) : t.rotate;
transforms.push(`rotate(${rotation}, ${svgProps.x || baseX}, ${svgProps.y || baseY})`);
}
if (t.scale) {
transforms.push(`scale(${t.scale})`);
}
if (t.translateX || t.translateY) {
transforms.push(`translate(${t.translateX || 0}, ${t.translateY || 0})`);
}
});
if (transforms.length > 0) {
svgProps.transform = transforms.join(" ");
}
}
return svgProps;
};
var generatePath = (points, smooth = true) => {
if (points.length === 0)
return "";
if (!smooth) {
return points.reduce((path2, point, index) => {
return index === 0 ? `M${point.x},${point.y}` : `${path2}L${point.x},${point.y}`;
}, "");
}
let path = `M${points[0].x},${points[0].y}`;
for (let i = 1; i < points.length; i++) {
const prevPoint = points[i - 1];
const currentPoint = points[i];
const nextPoint = points[i + 1];
if (nextPoint) {
const cp1x = prevPoint.x + (currentPoint.x - prevPoint.x) / 3;
const cp1y = prevPoint.y + (currentPoint.y - prevPoint.y) / 3;
const cp2x = currentPoint.x - (nextPoint.x - prevPoint.x) / 3;
const cp2y = currentPoint.y - (nextPoint.y - prevPoint.y) / 3;
path += `C${cp1x},${cp1y} ${cp2x},${cp2y} ${currentPoint.x},${currentPoint.y}`;
} else {
path += `L${currentPoint.x},${currentPoint.y}`;
}
}
return path;
};
var scaleValue = (value, min2, max2, outputMin, outputMax) => {
if (max2 === min2)
return outputMin;
return outputMin + (value - min2) / (max2 - min2) * (outputMax - outputMin);
};
var getMaxValue = (data) => {
return Math.max(...data.map((d) => d.value), 0);
};
var getMinValue = (data) => {
return Math.min(...data.map((d) => d.value), 0);
};
// bot-sdk/charts/LineChart/index.tsx
var LineChart = ({
width: width8 = getWindowWidth() - 120,
height = 210,
dataSet = [],
thickness = 3,
isAnimated = true,
hideDataPoints = false,
dataPointsRadius = 4,
initialSpacing = 50,
noOfSections = 4,
xAxisLabelTexts = [],
xAxisLabelTextStyle = {},
yAxisTextStyle = {}
}) => {
if (!dataSet || dataSet.length === 0) {
return /* @__PURE__ */ React44.createElement(View32, { style: [styles28.container, { width: width8, height }] });
}
const chartWidth = width8 - initialSpacing * 2;
const chartHeight = height - 80;
const allValues = dataSet.flatMap((dataset) => dataset.data.map((point) => point.value));
const maxValue = getMaxValue(allValues.map((v) => ({ value: v })));
const minValue = getMinValue(allValues.map((v) => ({ value: v })));
const maxDataLength = Math.max(...dataSet.map((dataset) => dataset.data.length));
const stepX = chartWidth / (maxDataLength - 1 || 1);
return /* @__PURE__ */ React44.createElement(View32, { style: [styles28.container, { width: width8, height }] }, /* @__PURE__ */ React44.createElement(Svg8, { width: width8, height }, Array.from({ length: noOfSections + 1 }, (_, i) => {
const y = 40 + i * chartHeight / noOfSections;
return /* @__PURE__ */ React44.createElement(
Line,
{
key: `grid-${i}`,
x1: initialSpacing,
y1: y,
x2: width8 - initialSpacing,
y2: y,
stroke: "#f0f0f0",
strokeWidth: 1
}
);
}), Array.from({ length: noOfSections + 1 }, (_, i) => {
const y = 40 + i * chartHeight / noOfSections;
const value = maxValue - i * (maxValue - minValue) / noOfSections;
const textProps = convertTextStyleToSvg(yAxisTextStyle, initialSpacing - 5, y + 4);
return /* @__PURE__ */ React44.createElement(
SvgText,
{
key: `y-label-${i}`,
...textProps,
textAnchor: textProps.textAnchor || "end"
},
Math.round(value)
);
}), dataSet.map((dataset, datasetIndex) => {
const points = dataset.data.map((point, index) => ({
x: initialSpacing + index * stepX,
y: 40 + scaleValue(point.value, minValue, maxValue, chartHeight, 0)
}));
const pathData = generatePath(points, false);
return /* @__PURE__ */ React44.createElement(React44.Fragment, { key: `dataset-${datasetIndex}` }, /* @__PURE__ */ React44.createElement(
Path8,
{
d: pathData,
stroke: dataset.color,
strokeWidth: thickness,
fill: "none",
strokeLinecap: "butt",
strokeLinejoin: "miter"
}
), !hideDataPoints && points.map((point, pointIndex) => /* @__PURE__ */ React44.createElement(
Circle,
{
key: `point-${datasetIndex}-${pointIndex}`,
cx: point.x,
cy: point.y,
r: dataPointsRadius,
fill: dataset.color,
stroke: "white",
strokeWidth: 2
}
)));
}), xAxisLabelTexts.map((label, index) => {
const x = initialSpacing + index * stepX + 25;
const y = height - 25;
const textProps = convertTextStyleToSvg(xAxisLabelTextStyle, x, y);
return /* @__PURE__ */ React44.createElement(
SvgText,
{
key: `x-label-${index}`,
...textProps,
textAnchor: textProps.textAnchor || "middle"
},
label
);
})));
};
var styles28 = StyleSheet26.create({
container: {
backgroundColor: "white"
}
});
var LineChart_default = LineChart;
// bot-sdk/charts/BarChart/index.tsx
init_esm_shims();
import React45 from "react";
import { View as View33, StyleSheet as StyleSheet27 } from "react-native";
import Svg9, { Rect as Rect4, Line as Line2, Text as SvgText2 } from "react-native-svg";
var BarChart = ({
width: width8 = getWindowWidth() - 115,
height = 220,
data = [],
stackData = null,
barWidth = 50,
horizontal = false,
noOfSections = 4,
initialSpacing = 10,
yAxisThickness = 1,
yAxisColor = "#ccc",
xAxisLabelTextStyle = {},
spacing = 30
}) => {
if ((!data || data.length === 0) && (!stackData || stackData.length === 0)) {
return /* @__PURE__ */ React45.createElement(View33, { style: [styles29.container, { width: width8, height }] });
}
const chartData = stackData || data;
const maxValue = stackData ? Math.max(...stackData.map(
(item) => item.stacks.reduce((sum, stack) => sum + stack.value, 0)
)) : getMaxValue(data);
const chartWidth = horizontal ? height - 60 : width8 - 60;
const chartHeight = horizontal ? width8 - 80 : height - 60;
const barSpacing = 5;
const actualBarWidth = barWidth;
if (horizontal) {
return /* @__PURE__ */ React45.createElement(View33, { style: [styles29.container, { width: height, height: width8 }] }, /* @__PURE__ */ React45.createElement(Svg9, { width: height, height: width8 }, /* @__PURE__ */ React45.createElement(
Line2,
{
x1: 40,
y1: 20,
x2: 40,
y2: width8 - 40,
stroke: yAxisColor,
strokeWidth: yAxisThickness
}
), Array.from({ length: noOfSections + 1 }, (_, i) => {
const x = 40 + i * chartWidth / noOfSections;
const value = i * maxValue / noOfSections;
return /* @__PURE__ */ React45.createElement(React45.Fragment, { key: `grid-h-${i}` }, /* @__PURE__ */ React45.createElement(
Line2,
{
x1: x,
y1: 20,
x2: x,
y2: width8 - 40,
stroke: "#f0f0f0",
strokeWidth: 1
}
), /* @__PURE__ */ React45.createElement(
SvgText2,
{
x,
y: width8 - 25,
fontSize: "10",
fill: "#666",
textAnchor: "middle"
},
Math.round(value)
));
}), chartData.map((item, index) => {
const barY = 20 + index * (chartHeight / chartData.length);
const barHeight = Math.min(actualBarWidth, chartHeight / chartData.length - 5);
if (stackData) {
let currentX = 40;
return item.stacks.map((stack, stackIndex) => {
const barLength = scaleValue(stack.value, 0, maxValue, 0, chartWidth);
const rect = /* @__PURE__ */ React45.createElement(
Rect4,
{
key: `bar-${index}-${stackIndex}`,
x: currentX,
y: barY,
width: barLength,
height: barHeight,
fill: stack.color
}
);
currentX += barLength;
return rect;
});
} else {
const barLength = scaleValue(item.value, 0, maxValue, 0, chartWidth);
return /* @__PURE__ */ React45.createElement(
Rect4,
{
key: `bar-${index}`,
x: 40,
y: barY,
width: barLength,
height: barHeight,
fill: item.frontColor
}
);
}
}), chartData.map((item, index) => {
const barY = 20 + index * (chartHeight / chartData.length) + actualBarWidth / 2;
const textProps = convertTextStyleToSvg(xAxisLabelTextStyle, 30, barY + 4);
return /* @__PURE__ */ React45.createElement(
SvgText2,
{
key: `label-h-${index}`,
...textProps,
textAnchor: textProps.textAnchor || "end"
},
item.label || ""
);
})));
}
return /* @__PURE__ */ React45.createElement(View33, { style: [styles29.container, { width: width8, height }] }, /* @__PURE__ */ React45.createElement(Svg9, { width: width8, height }, /* @__PURE__ */ React45.createElement(
Line2,
{
x1: initialSpacing + 20,
y1: 20,
x2: initialSpacing + 20,
y2: height - 40,
stroke: yAxisColor,
strokeWidth: yAxisThickness
}
), Array.from({ length: noOfSections + 1 }, (_, i) => {
const y = 20 + i * chartHeight / noOfSections;
const value = maxValue - i * maxValue / noOfSections;
return /* @__PURE__ */ React45.createElement(React45.Fragment, { key: `grid-v-${i}` }, /* @__PURE__ */ React45.createElement(
Line2,
{
x1: initialSpacing + 20,
y1: y,
x2: width8 - 20,
y2: y,
stroke: "#f0f0f0",
strokeWidth: 1
}
), /* @__PURE__ */ React45.createElement(
SvgText2,
{
x: 15,
y: y + 4,
fontSize: "10",
fill: "#666",
textAnchor: "end"
},
Math.round(value)
));
}), chartData.map((item, index) => {
const barX = initialSpacing + 20 + index * (actualBarWidth + barSpacing);
const actualBarWidth2 = actualBarWidth;
if (stackData) {
let currentY = height - 40;
return item.stacks.map((stack, stackIndex) => {
const barHeight = scaleValue(stack.value, 0, maxValue, 0, chartHeight);
currentY -= barHeight;
return /* @__PURE__ */ React45.createElement(
Rect4,
{
key: `bar-${index}-${stackIndex}`,
x: barX + (chartWidth / chartData.length - actualBarWidth2) / 2,
y: currentY,
width: actualBarWidth2,
height: barHeight,
fill: stack.color
}
);
});
} else {
const barHeight = scaleValue(item.value, 0, maxValue, 0, chartHeight);
return /* @__PURE__ */ React45.createElement(
Rect4,
{
key: `bar-${index}`,
x: barX + (chartWidth / chartData.length - actualBarWidth2) / 2,
y: height - 40 - barHeight,
width: actualBarWidth2,
height: barHeight,
fill: item.frontColor
}
);
}
}), chartData.map((item, index) => {
const barX = initialSpacing + 20 + index * (actualBarWidth + barSpacing) + actualBarWidth / 2;
const textProps = convertTextStyleToSvg(xAxisLabelTextStyle, barX, height - 20);
return /* @__PURE__ */ React45.createElement(
SvgText2,
{
key: `label-v-${index}`,
...textProps,
textAnchor: textProps.textAnchor || "middle"
},
item.label || ""
);
})));
};
var styles29 = StyleSheet27.create({
container: {
backgroundColor: "white"
}
});
var BarChart_default = BarChart;
// bot-sdk/charts/PieChart/index.tsx
init_esm_shims();
import React46 from "react";
import { View as View34, StyleSheet as StyleSheet28 } from "react-native";
import Svg10, { Path as Path9, Circle as Circle2, Text as SvgText3 } from "react-native-svg";
var PieChart = ({
data = [],
radius = 145,
innerCircleColor = "white",
innerRadius = 60,
showText = false,
donut = false,
textColor = "white",
textSize = 12,
strokeWidth = 2,
strokeColor = "#fff",
animationDuration = 500
}) => {
if (!data || data.length === 0) {
return /* @__PURE__ */ React46.createElement(View34, { style: [styles30.container, { width: radius * 2, height: radius * 2 }] });
}
const total = data.reduce((sum, item) => sum + item.value, 0);
const centerX = radius;
const centerY = radius;
let currentAngle = -Math.PI / 2;
const createArcPath = (startAngle, endAngle, outerRadius, innerRadius2 = 0) => {
const x1 = centerX + outerRadius * Math.cos(startAngle);
const y1 = centerY + outerRadius * Math.sin(startAngle);
const x2 = centerX + outerRadius * Math.cos(endAngle);
const y2 = centerY + outerRadius * Math.sin(endAngle);
const largeArcFlag = endAngle - startAngle > Math.PI ? 1 : 0;
if (innerRadius2 > 0) {
const x3 = centerX + innerRadius2 * Math.cos(endAngle);
const y3 = centerY + innerRadius2 * Math.sin(endAngle);
const x4 = centerX + innerRadius2 * Math.cos(startAngle);
const y4 = centerY + innerRadius2 * Math.sin(startAngle);
return `M ${x1} ${y1} A ${outerRadius} ${outerRadius} 0 ${largeArcFlag} 1 ${x2} ${y2} L ${x3} ${y3} A ${innerRadius2} ${innerRadius2} 0 ${largeArcFlag} 0 ${x4} ${y4} Z`;
} else {
return `M ${centerX} ${centerY} L ${x1} ${y1} A ${outerRadius} ${outerRadius} 0 ${largeArcFlag} 1 ${x2} ${y2} Z`;
}
};
const getTextPosition = (startAngle, endAngle, radius2) => {
const midAngle = (startAngle + endAngle) / 2;
const textRadius = donut ? (radius2 + innerRadius) / 2 : radius2 * 0.7;
return {
x: centerX + textRadius * Math.cos(midAngle),
y: centerY + textRadius * Math.sin(midAngle)
};
};
return /* @__PURE__ */ React46.createElement(View34, { style: [styles30.container, { width: radius * 2, height: radius * 2 }] }, /* @__PURE__ */ React46.createElement(Svg10, { width: radius * 2, height: radius * 2 }, data.map((item, index) => {
const angle = item.value / total * 2 * Math.PI;
const endAngle = currentAngle + angle;
const arcPath = createArcPath(
currentAngle,
endAngle,
radius - strokeWidth / 2,
donut ? innerRadius : 0
);
const textPos = getTextPosition(currentAngle, endAngle, radius);
const slice = /* @__PURE__ */ React46.createElement(React46.Fragment, { key: `slice-${index}` }, /* @__PURE__ */ React46.createElement(
Path9,
{
d: arcPath,
fill: item.color,
stroke: strokeColor,
strokeWidth
}
), showText && item.text && /* @__PURE__ */ React46.createElement(
SvgText3,
{
x: textPos.x,
y: textPos.y,
fontSize: textSize,
fill: textColor,
textAnchor: "middle",
alignmentBaseline: "middle"
},
item.text
));
currentAngle = endAngle;
return slice;
}), donut && /* @__PURE__ */ React46.createElement(
Circle2,
{
cx: centerX,
cy: centerY,
r: innerRadius,
fill: innerCircleColor
}
)));
};
var styles30 = StyleSheet28.create({
container: {
backgroundColor: "transparent",
justifyContent: "center",
alignItems: "center"
}
});
var PieChart_default = PieChart;
// bot-sdk/charts/common/types.ts
init_esm_shims();
// bot-sdk/templates/charts/BarChartTemplate.tsx
var windowWidth7 = Dimensions12.get("window").width;
var MATERIAL_COLORS = [
"#5BC8C4",
"#4A9AF2",
"#e74c3c",
"#3498db"
];
var BarChartTemplate = class extends BaseView_default {
renderBarChartView = (payload) => {
let elementSize = Math.max(...payload?.elements?.map((element) => element.values.length) || [0]);
let dataSet = payload?.elements?.flatMap((element, index) => {
return element.values.map((value, i) => ({
value,
label: index === 0 ? payload?.X_axis[i] || "" : "",
// Only assign labels to the first dataset
frontColor: MATERIAL_COLORS[index],
// Using different colors for each dataset based on index
spacing: 5,
legend: element.title
}));
});
const vertical = payload?.direction;
const groupedData = dataSet.slice(0, elementSize).flatMap((item, index) => [
{ ...item, spacing: 3 },
// Person 1
{ ...dataSet.slice(elementSize, dataSet.length)[index], spacing: 10 }
// Person 2
]);
return /* @__PURE__ */ React47.createElement(View35, { style: [styles31.container, { height: vertical !== "vertical" ? 380 : 280 }] }, /* @__PURE__ */ React47.createElement(View35, { style: styles31.legendContainer }, payload?.elements?.map((item, index) => /* @__PURE__ */ React47.createElement(View35, { key: index, style: styles31.legendItem }, /* @__PURE__ */ React47.createElement(View35, { style: [styles31.legendColor, { backgroundColor: MATERIAL_COLORS[index] }] }), /* @__PURE__ */ React47.createElement(Text26, { style: styles31.legendText }, item.title)))), /* @__PURE__ */ React47.createElement(
BarChart_default,
{
width: vertical !== "vertical" ? windowWidth7 - 50 : windowWidth7 - 85,
height: vertical !== "vertical" ? 260 : 220,
barWidth: 27,
data: groupedData,
horizontal: vertical !== "vertical",
noOfSections: 4,
initialSpacing: 10,
yAxisThickness: 1,
yAxisColor: "#ccc",
xAxisLabelTextStyle: { marginStart: vertical !== "vertical" ? 32 : 23, fontSize: 8, transform: [{ rotate: vertical !== "vertical" ? "315deg" : "0deg" }] }
}
));
};
render() {
if (!this.props.payload) {
return /* @__PURE__ */ React47.createElement(React47.Fragment, null);
}
return /* @__PURE__ */ React47.createElement(View35, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload?.text && /* @__PURE__ */ React47.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), /* @__PURE__ */ React47.createElement(View35, { style: styles31.main_container }, this.renderBarChartView(this.props.payload)));
}
};
var styles31 = StyleSheet29.create({
main_container: {
marginTop: 10
},
container: {
paddingTop: 5,
marginBottom: 5,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
width: windowWidth7 - 55
},
legendContainer: {
flexDirection: "row",
marginStart: 10,
justifyContent: "center"
},
legendItem: {
flexDirection: "row",
alignItems: "center",
marginRight: 15
},
legendColor: {
width: 10,
height: 10,
marginRight: 5
},
legendText: {
fontSize: 14,
color: "#333"
},
chart: {
flex: 1
}
});
// bot-sdk/templates/charts/LineChartTemplate.tsx
init_esm_shims();
import * as React48 from "react";
import { View as View36, StyleSheet as StyleSheet30, processColor, Dimensions as Dimensions13, Text as Text27 } from "react-native";
var windowWidth8 = Dimensions13.get("window").width;
var MATERIAL_COLORS2 = [
"#5BC8C4",
"#4A9AF2",
"#e74c3c",
"#3498db"
];
var colors = [
processColor("#78C6C3"),
processColor("#5F98EB"),
processColor("#9BC96D"),
processColor(generateColor()),
processColor(generateColor()),
processColor(generateColor()),
processColor(generateColor()),
processColor(generateColor()),
processColor(generateColor()),
processColor(generateColor())
];
var LineChartTemplate = class extends BaseView_default {
renderLineChart = (payload) => {
let dataSet = payload?.elements?.map((element, index) => {
return {
data: element.values.map((value) => ({
value,
dataPointText: `${value}`
})),
label: element?.title,
color: MATERIAL_COLORS2[index % 4]
};
});
const getXAxisLabels = (payload2) => {
return payload2?.X_axis?.map((element) => String(element)) ?? [];
};
let marker = {
enabled: true,
digits: 4,
backgroundTint: processColor("teal"),
markerColor: processColor("#F0C0FF8C"),
textColor: processColor("black")
};
let xAxis = {
valueFormatter: payload.X_axis,
granularityEnabled: true,
granularity: 1,
axisMaximum: payload?.X_axis?.length || 1,
axisMinimum: 0,
//centerAxisLabels: true,
position: "BOTTOM",
labelRotationAngle: 30,
//drawLimitLinesBehindData: false,
textSize: 8,
drawGridLines: false,
avoidFirstLastClipping: true,
enabled: true,
drawLabels: true,
drawAxisLine: true
};
let yAxis = {
left: {
spaceTop: 0,
drawGridLines: false
},
right: {
spaceTop: 0,
drawGridLines: false,
enabled: false
}
};
const xAxisLabels = getXAxisLabels(payload);
return /* @__PURE__ */ React48.createElement(View36, { style: [styles32.container] }, /* @__PURE__ */ React48.createElement(
LineChart_default,
{
width: windowWidth8 - 120,
dataSet,
thickness: 3,
areaChart1: true,
stepValue: 15,
adjustToWidth: true,
isAnimated: true,
hideDataPoints: false,
dataPointsRadius: 4,
initialSpacing: 25,
yAxisTextStyle: { color: "#000", fontSize: 12, fontWeight: "bold" },
noOfSections: 4,
xAxisLabelTexts: xAxisLabels,
xAxisLabelTextStyle: { marginTop: 10, marginLeft: -27, color: "#000", fontSize: 7, fontWeight: "bold", transform: [{ rotate: "315deg" }] }
}
), /* @__PURE__ */ React48.createElement(View36, { style: styles32.legendContainer }, dataSet.map((item, index) => /* @__PURE__ */ React48.createElement(View36, { key: index, style: styles32.legendItem }, /* @__PURE__ */ React48.createElement(View36, { style: [styles32.legendColor, { backgroundColor: item.color }] }), /* @__PURE__ */ React48.createElement(Text27, { style: styles32.legendText }, item.label)))));
};
render() {
return this.props.payload ? /* @__PURE__ */ React48.createElement(View36, { style: {} }, this.props.payload?.text && /* @__PURE__ */ React48.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), this.renderLineChart(this.props.payload)) : null;
}
};
var styles32 = StyleSheet30.create({
container: {
marginTop: 15,
padding: 5,
height: 280,
marginBottom: 5,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
width: windowWidth8 - 60
},
legendContainer: {
marginTop: 20,
width: "80%",
flexDirection: "row"
},
legendItem: {
flexDirection: "row",
alignItems: "center",
marginBottom: 10,
marginStart: 10
},
legendColor: {
width: 20,
height: 3,
borderRadius: 0,
marginRight: 4
},
legendText: {
fontSize: 10,
color: "#333"
},
chart: {
flex: 1
}
});
// bot-sdk/templates/charts/PieChartView.tsx
init_esm_shims();
import * as React49 from "react";
import { View as View37, StyleSheet as StyleSheet31, processColor as processColor2, Dimensions as Dimensions14, Text as Text28 } from "react-native";
var windowWidth9 = Dimensions14.get("window").width;
var PIE_TYPE_DONUT = "donut";
var MATERIAL_COLORS3 = [
"#5BC8C4",
"#4A9AF2",
"#8ECB60",
"#BDA100",
"#E36CA2",
"#591880",
"#3AB961",
"#654BAF",
"#E36CA2",
"#1B3880",
"#9D1850",
"#DB9400",
"#008930"
];
var colors2 = [
processColor2("#78C6C3"),
processColor2("#5F98EB"),
processColor2("#9BC96D"),
processColor2(generateColor()),
processColor2(generateColor()),
processColor2(generateColor()),
processColor2(generateColor()),
processColor2(generateColor()),
processColor2(generateColor()),
processColor2(generateColor())
];
var PieChartTemplate = class extends BaseView_default {
getExtraConfig = (payload) => {
if (!payload) {
return {};
}
return payload.pie_type === PIE_TYPE_DONUT ? {
xValuePosition: "OUTSIDE_SLICE",
yValuePosition: "OUTSIDE_SLICE",
drawValues: true,
valueTextColor: processColor2("black"),
valueLinePart2Length: 0.2
} : {
valueLinePart2Length: 0,
valueLineWidth: 0,
valueLineColor: processColor2("white"),
drawValues: true,
valueTextColor: processColor2("white")
};
};
renderPieChartView = (payload) => {
let extraConfig = this.getExtraConfig(payload);
const isDonut = payload.pie_type === PIE_TYPE_DONUT;
let dataSet = payload?.elements?.map((element, i) => {
return {
value: parseFloat(element?.value),
color: MATERIAL_COLORS3[i],
text: element?.displayValue,
displayText: element?.title
};
});
let highlights = [];
let description = {
text: "",
textSize: 15,
textColor: processColor2("darkgray")
};
let holeRadius = 0;
let transparentCircleRadius = 0;
let pieType = payload.pie_type;
if (pieType && pieType === PIE_TYPE_DONUT) {
holeRadius = 55;
transparentCircleRadius = 60;
}
let marker = {
enabled: true,
digits: 3,
backgroundTint: processColor2("teal"),
markerColor: processColor2("#F0C0FF8C"),
textColor: processColor2("black")
};
let styledCenterText = {
text: "",
color: processColor2(generateColor()),
fontFamily: "HelveticaNeue-Medium",
size: normalize(12)
};
return /* @__PURE__ */ React49.createElement(
View37,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [
styles33.container,
{
width: windowWidth9 / 4 * 3
//normalize(280), //
}
]
},
/* @__PURE__ */ React49.createElement(
PieChart_default,
{
data: dataSet,
radius: 145,
innerCircleColor: "white",
innerRadius: 60,
showText: true,
donut: isDonut,
textColor: "white",
textSize: 12,
strokeWidth: 2,
strokeColor: "#fff",
animationDuration: 500
}
),
/* @__PURE__ */ React49.createElement(View37, { style: styles33.legendContainer }, dataSet.map((item, index) => /* @__PURE__ */ React49.createElement(View37, { key: index, style: styles33.legendItem }, /* @__PURE__ */ React49.createElement(View37, { style: [styles33.legendColor, { backgroundColor: item.color }] }), /* @__PURE__ */ React49.createElement(Text28, { style: styles33.legendText }, item.displayText, " ", item.value))))
);
};
render() {
return this.props.payload ? /* @__PURE__ */ React49.createElement(View37, null, /* @__PURE__ */ React49.createElement(View37, { style: styles33.sub_container }, this.props.payload?.text && /* @__PURE__ */ React49.createElement(
BotText,
{
text: this.props.payload?.text?.trim?.(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
)), /* @__PURE__ */ React49.createElement(View37, { style: [styles33.chart_view] }, this.renderPieChartView(this.props.payload))) : /* @__PURE__ */ React49.createElement(React49.Fragment, null);
}
};
var styles33 = StyleSheet31.create({
chart_view: {
padding: 10,
backgroundColor: "white",
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
alignItems: "center"
},
legendContainer: {
marginTop: 20,
width: "80%",
flexDirection: "row"
},
legendItem: {
flexDirection: "row",
alignItems: "center",
marginBottom: 10,
marginStart: 10
},
legendColor: {
width: 16,
height: 16,
borderRadius: 8,
marginRight: 4
},
legendText: {
fontSize: 10,
color: "#333"
},
text: {
flexWrap: "wrap",
color: "#485260",
fontSize: normalize(16),
margin: 5,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
sub_container: {
marginBottom: 0,
marginTop: 2
},
centerLabel: {
fontSize: 16,
fontWeight: "bold",
color: "#333"
},
container: {
//flex: 1,
// backgroundColor: 'red',
// width: '100%',
height: normalize(300),
marginBottom: 5
// justifyContent: 'center',
// alignItems: 'center',
},
chart: {
flex: 1,
justifyContent: "center",
alignItems: "center"
}
});
// bot-sdk/templates/charts/StackBarChartTemplate.tsx
init_esm_shims();
import * as React50 from "react";
import { View as View38, StyleSheet as StyleSheet32, Dimensions as Dimensions15 } from "react-native";
var windowWidth10 = Dimensions15.get("window").width;
var MATERIAL_COLORS4 = [
"#4A9AF2",
"#5BC8C4",
"#e74c3c",
"#3498db"
];
var StackBarChartTemplate = class extends BaseView_default {
renderBarChartView = (payload) => {
const convertToStackedFormat = (payload2) => {
const { X_axis, elements } = payload2;
return X_axis.map((label, index) => ({
label,
stacks: elements.map((element, i) => ({
value: element.values[index] || 0,
// Taking value for this X-axis
color: MATERIAL_COLORS4[i % MATERIAL_COLORS4.length]
}))
}));
};
const formattedDataSet = convertToStackedFormat(payload);
return /* @__PURE__ */ React50.createElement(View38, null, /* @__PURE__ */ React50.createElement(
BarChart_default,
{
width: windowWidth10 - 50,
height: 220,
barWidth: 50,
stackData: formattedDataSet,
noOfSections: 4,
spacing: 30,
initialSpacing: 30,
yAxisThickness: 1,
yAxisColor: "#ccc",
xAxisLabelTextStyle: { marginStart: 0, fontSize: 8, transform: [{ rotate: "330deg" }] }
}
));
};
render() {
if (!this.props.payload) {
return /* @__PURE__ */ React50.createElement(React50.Fragment, null);
}
return /* @__PURE__ */ React50.createElement(View38, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload?.text && /* @__PURE__ */ React50.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), /* @__PURE__ */ React50.createElement(View38, { style: styles34.main_container }, this.renderBarChartView(this.props.payload)));
}
};
var styles34 = StyleSheet32.create({
main_container: {
marginTop: 10
},
container: {
backgroundColor: Color_default.white,
padding: 2
},
chart: {
flex: 1
}
});
// bot-sdk/templates/Button.tsx
init_esm_shims();
import * as React51 from "react";
import { Text as Text29, TouchableOpacity as TouchableOpacity16, View as View39, StyleSheet as StyleSheet33 } from "react-native";
var Button2 = class extends BaseView_default {
static contextType = ThemeContext;
static propTypes;
constructor(props) {
super(props);
}
// shouldComponentUpdate(nextProps: ButtonProps) {
// return (
// !!this.props.payload &&
// !!nextProps.payload &&
// this.props.payload !== nextProps.payload
// );
// }
getSingleButtonsViewForFlatList = (item, payload) => {
return this.getSingleButtonView(
item.item,
item.index,
item?.btheme,
item?.bbtheme,
payload
);
};
getSingleButtonView = (item, index = 0, btheme, bbtheme, payload) => {
return /* @__PURE__ */ React51.createElement(View39, { key: index + "", style: styles35.item_container }, /* @__PURE__ */ React51.createElement(
TouchableOpacity16,
{
key: index,
style: [
styles35.btn_view,
{
width: payload.fullWidth ? getWindowWidth() * 0.75 : void 0,
backgroundColor: payload.variation == "backgroundInverted" ? bbtheme.BUBBLE_RIGHT_BG_COLOR : payload.variation == "textInverted" ? bbtheme?.BUBBLE_LEFT_BG_COLOR : Color_default.white,
borderColor: bbtheme?.BUBBLE_LEFT_BG_COLOR || "#3F51B5",
borderWidth: payload.variation == "backgroundInverted" ? 0 : 1
}
],
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
item
);
}
}
},
/* @__PURE__ */ React51.createElement(
Text29,
{
style: [
styles35.item_text,
{
color: payload.variation == "backgroundInverted" ? bbtheme.BUBBLE_RIGHT_TEXT_COLOR : payload.variation == "textInverted" ? bbtheme.BUBBLE_RIGHT_BG_COLOR : btheme.ACTIVE_TXT_COLOR,
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"].size
]
},
item.title
)
));
};
renderButtonsView = (payload) => {
let list = payload.buttons;
if (!list || list.length === 0) {
return /* @__PURE__ */ React51.createElement(React51.Fragment, null);
}
const btheme = getButtonTheme(this.props?.theme);
const bbtheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React51.createElement(
View39,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: { flexDirection: payload.stackedButtons || payload.fullWidth ? "column" : "row" }
},
list.map((item, index) => {
return this.getSingleButtonsViewForFlatList({
item,
index,
btheme,
bbtheme
}, payload);
})
);
};
render() {
return /* @__PURE__ */ React51.createElement(View39, null, this.props.payload && /* @__PURE__ */ React51.createElement(View39, null, this.props.payload?.text && /* @__PURE__ */ React51.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), this.renderButtonsView(this.props.payload)));
}
};
var styles35 = StyleSheet33.create({
item_container: {
flexWrap: "wrap",
marginBottom: 10,
marginRight: 10,
marginTop: 10
},
mainContainer: {
backgroundColor: Color_default.white,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
minWidth: TEMPLATE_STYLE_VALUES.MIN_WIDTH,
marginRight: TEMPLATE_STYLE_VALUES.TEMPLATE_RIGHT_MARGIN,
marginLeft: TEMPLATE_STYLE_VALUES.TEMPLATE_LEFT_MARGIN
},
text: {
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
marginStart: 10,
marginEnd: 10,
marginTop: 10,
marginBottom: 10,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
bottom_btns: { flexDirection: "row", marginTop: 0 },
btn_view: {
flexDirection: "column",
alignItems: "center",
borderRadius: 5,
padding: 10,
fontWeight: "bold"
},
item_text: {
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
alignSelf: "center",
color: Color_default.blue,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "normal"
//marginTop: 10,
},
main_view_1: {
padding: 5
},
btn_views_1: {
flexDirection: "column"
}
});
// bot-sdk/templates/MessageText.tsx
init_esm_shims();
import * as React52 from "react";
import {
Linking as Linking3,
StyleSheet as StyleSheet34,
View as View40
} from "react-native";
var WWW_URL_PATTERN3 = /^www\./i;
var textStyle = {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
// lineHeight: 20,
marginTop: 5,
marginBottom: 5,
marginLeft: 10,
marginRight: 10
};
var styles36 = {
left: StyleSheet34.create({
container: {
marginRight: 30,
minHeight: 20,
justifyContent: "flex-end",
paddingBottom: 5,
paddingTop: 5
},
text: {
color: Color_default.black,
...textStyle
},
link: {
color: Color_default.black,
textDecorationLine: "underline"
}
}),
center: StyleSheet34.create({
container: {},
text: {
color: Color_default.white,
...textStyle
},
link: {
color: Color_default.white,
textDecorationLine: "underline"
}
}),
right: StyleSheet34.create({
container: {
//backgroundColor: Color.defaultBlue,
marginLeft: 30,
minHeight: 20,
minWidth: 40,
justifyContent: "flex-end",
paddingBottom: 5,
paddingTop: 5
},
text: {
color: Color_default.white,
...textStyle,
alignSelf: "center"
},
link: {
color: Color_default.white,
textDecorationLine: "underline"
}
})
};
var MessageText = class extends BaseView_default {
//private actionSheet?: any;
static contextType = ThemeContext;
static propTypes;
constructor(props) {
super(props);
}
static defaultProps;
onUrlPress = (url) => {
if (WWW_URL_PATTERN3.test(url)) {
this.onUrlPress(`http://${url}`);
} else {
Linking3.canOpenURL(url).then((supported) => {
if (!supported) {
console.log("No handler for URL:", url);
try {
Linking3.openURL(url);
} catch (e) {
}
} else {
Linking3.openURL(url);
}
});
}
};
onPhonePress = (_phone) => {
};
onEmailPress = async (email) => {
try {
const communications = await this.loadCommunications();
if (communications) {
communications.email([email], null, null, null, null);
} else {
FallbackCommunicationsAPI.email([email], null, null, null, null);
}
} catch (error) {
console.warn("Failed to load communications, using fallback:", error);
FallbackCommunicationsAPI.email([email], null, null, null, null);
}
};
async loadCommunications() {
try {
const CommunicationsModule = await import("react-native-communications");
return CommunicationsModule.default || CommunicationsModule;
} catch (error) {
console.warn("react-native-communications not available:", error);
return null;
}
}
parseTextWithIcons = (text) => {
const entityRegex = /&#(\d+);/g;
const parsedText = text?.replace(
entityRegex,
(match, decimal) => String.fromCodePoint(decimal)
);
return parsedText;
};
render() {
const linkStyle = [
styles36[this.props.position]?.link,
this.props.linkStyle && this.props.linkStyle[this.props.position]
];
const payload = this.props?.payload?.payload || this.props?.payload;
let message = payload?.text;
if (!message && typeof message !== "string") {
message = payload?.payload?.text;
}
if (!message && typeof message !== "string") {
try {
if (payload?.lastMessage?.messagePayload?.message?.attachments?.[0]?.isFromLocal && payload?.lastMessage?.messagePayload?.message?.attachments?.[0]?.fileId) {
message = JSON.stringify(
payload?.lastMessage?.messagePayload?.message?.attachments?.[0]
);
} else {
try {
message = JSON.stringify(payload);
} catch (error) {
message = payload;
}
}
} catch (error) {
message = payload;
}
}
let text = message;
let parseList = [];
if (this.props.parsePatterns && this.props.parsePatterns(linkStyle)) {
parseList = { ...this.props.parsePatterns(linkStyle) };
}
const position = this.props.position ? this.props.position : "left";
const bubbleTheme = getBubbleTheme(this.props?.theme);
const isPassword = this.checkIsPassword(text);
return text ? /* @__PURE__ */ React52.createElement(
View40,
{
style: this.props.containerStyle ? this.props.containerStyle : [
styles36[position]?.container,
position === "left" && {
backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR,
...leftBubbleStyles[this.props?.theme?.v3?.body?.bubble_style || "balloon"].bubble_style
},
position === "right" && {
backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR,
...rightBubbleStyles[this.props?.theme?.v3?.body?.bubble_style || "balloon"].bubble_style
}
]
},
/* @__PURE__ */ React52.createElement(
LazyParsedText,
{
style: [
styles36[position]?.text,
this.props.textStyle && this.props.textStyle[position],
this.props.customTextStyle,
{
fontFamily: this.props?.theme?.v3?.body?.font?.family,
color: this.props?.theme?.v3?.general?.colors?.primary_text || "#ffffff"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size,
position === "left" && {
color: bubbleTheme.BUBBLE_LEFT_TEXT_COLOR
},
position === "right" && {
color: bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR
}
],
parse: isPassword ? [] : [...parseList, ...getParseList()],
childrenProps: { ...this.props.textProps }
},
this.parseTextWithIcons(text?.trim?.())?.trim()
)
) : /* @__PURE__ */ React52.createElement(View40, null);
}
checkIsPassword(text) {
if (!text || text?.trim?.().length === 0) {
return false;
}
const code = text?.trim?.();
if (!code || code?.trim?.().length === 0) {
return false;
}
for (let i = 0; i < code.length; i++) {
if (code[i] !== "*") {
return false;
}
}
return true;
}
};
var MessageText_default = MessageText;
// bot-sdk/templates/TableListTemplate.tsx
init_esm_shims();
import * as React53 from "react";
import {
Dimensions as Dimensions16,
ImageBackground as ImageBackground2,
StyleSheet as StyleSheet35,
Text as Text30,
TouchableOpacity as TouchableOpacity17,
View as View41
} from "react-native";
import FastImage6 from "react-native-fast-image";
var windowWidth11 = Dimensions16.get("window").width;
var width2 = windowWidth11 * 0.8;
var TableListTemplate = class extends BaseView_default {
placeholderImage;
constructor(props) {
super(props);
}
renderElements(elements) {
if (!elements || elements?.length === 0) {
return /* @__PURE__ */ React53.createElement(React53.Fragment, null);
}
const data = elements?.[0] || null;
if (!data) {
return /* @__PURE__ */ React53.createElement(React53.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React53.createElement(View41, { style: styles37.main }, /* @__PURE__ */ React53.createElement(View41, { style: styles37.sub }, /* @__PURE__ */ React53.createElement(Text30, { style: styles37.sectionHeader }, data?.sectionHeader), /* @__PURE__ */ React53.createElement(Text30, { style: styles37.sectionHeaderDesc }, data?.sectionHeaderDesc)), data?.rowItems?.map((item, index) => {
let title = item?.title?.url ? item?.title?.url?.title : item?.title?.text?.title;
let subtitle = item?.title?.url ? item?.title?.url?.subtitle : item?.title?.text?.subtitle;
let value = item?.value?.url ? item?.value?.url?.title : item?.value?.text;
const MainWrapper = item?.default_action ? TouchableOpacity17 : View41;
const TitleWrapper = item?.title?.url ? TouchableOpacity17 : View41;
const ValueWrapper = item?.value?.url ? TouchableOpacity17 : View41;
return /* @__PURE__ */ React53.createElement(
MainWrapper,
{
key: index + "___",
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
item?.default_action
);
}
}
},
/* @__PURE__ */ React53.createElement(
View41,
{
style: [
styles37.rowItems_main,
{ backgroundColor: item?.bgcolor || Color_default.white },
index === data?.rowItems.length - 1 && { marginBottom: 3 }
]
},
/* @__PURE__ */ React53.createElement(
ImageBackground2,
{
style: [
styles37.image_view,
{ backgroundColor: item?.bgcolor || Color_default.transparent },
item?.title?.image?.radius && {
borderRadius: item?.title?.image?.radius
},
item?.title?.image?.size && image_size[item?.title?.image?.size || "medium"]
],
source: this.placeholderImage
},
/* @__PURE__ */ React53.createElement(
FastImage6,
{
source: { uri: item?.title?.image?.image_src },
style: [
styles37.image,
item?.title?.image?.radius && {
borderRadius: item?.title?.image?.radius
},
item?.title?.image?.size && image_size[item?.title?.image?.size || "medium"]
]
}
)
),
/* @__PURE__ */ React53.createElement(View41, { style: styles37.rowItems_sub }, /* @__PURE__ */ React53.createElement(
TitleWrapper,
{
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
...item?.title?.url,
type: item?.title?.type
}
);
}
},
style: styles37.rowItem_title
},
/* @__PURE__ */ React53.createElement(
Text30,
{
style: [
styles37.rowItem_title_text,
{ color: item?.title?.rowColor || Color_default.black },
TitleWrapper === TouchableOpacity17 && {
textDecorationLine: "underline"
}
]
},
title
)
), /* @__PURE__ */ React53.createElement(
Text30,
{
style: [
styles37.subtitle_text,
{ color: item?.title?.rowColor || Color_default.black }
]
},
subtitle
)),
/* @__PURE__ */ React53.createElement(
ValueWrapper,
{
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
...item?.value,
url: item?.value?.url?.link
}
);
}
},
style: [
styles37.value_main,
{
justifyContent: item?.value?.layout?.align || "flex-start"
}
//{justifyContent: 'flex-start'},
]
},
/* @__PURE__ */ React53.createElement(
Text30,
{
style: [
styles37.value_text,
{
color: item?.title?.rowColor || Color_default.black,
textDecorationLine: ValueWrapper === TouchableOpacity17 ? "underline" : "none"
}
]
},
value
)
)
),
index !== data?.rowItems?.length - 1 && /* @__PURE__ */ React53.createElement(View41, { style: [styles37.line, { backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR }] })
);
}));
}
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
const title = this.props?.payload?.title;
const description = this.props?.payload?.description;
return /* @__PURE__ */ React53.createElement(
View41,
{
style: [
{ width: width2, backgroundColor: Color_default.white }
]
},
/* @__PURE__ */ React53.createElement(
View41,
{
style: [
styles37.main_con,
{ width: width2, backgroundColor: Color_default.white, borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR, borderWidth: 1 }
]
},
this.renderElements(this.props?.payload?.elements)
)
);
}
};
var styles37 = StyleSheet35.create({
main_con: {
borderRadius: 5,
borderWidth: StyleSheet35.hairlineWidth,
borderColor: Color_default.black,
marginBottom: normalize(10)
},
line: {
height: StyleSheet35.hairlineWidth,
width: "100%",
backgroundColor: Color_default.black
},
value_text: {
fontSize: normalize(12),
fontWeight: "600"
},
value_main: {
marginLeft: normalize(5)
},
subtitle_text: {
fontSize: normalize(13),
fontWeight: "normal",
flex: 1
},
rowItem_title_text: {
fontSize: normalize(15),
fontWeight: "600",
textDecorationLine: "none",
paddingBottom: 5,
paddingRight: 5
},
rowItem_title: { flex: 1 },
rowItems_sub: {
justifyContent: "center",
marginLeft: normalize(8),
flex: 1
},
rowItems_main: {
flexDirection: "row",
padding: normalize(8)
// marginBottom: 3,
},
sectionHeaderDesc: {
fontWeight: "normal",
fontSize: normalize(14),
color: Color_default.black,
opacity: 1
},
sectionHeader: {
fontWeight: "700",
fontSize: normalize(15),
color: Color_default.black
},
title: {
fontWeight: "600",
fontSize: normalize(15),
color: Color_default.black
},
sub: { padding: normalize(8), backgroundColor: Color_default.white, marginTop: 3 },
main: { flexDirection: "column" },
image_view: {
// marginTop: 10,
height: normalize(50),
width: normalize(50),
borderColor: Color_default.bisque,
borderWidth: StyleSheet35.hairlineWidth / 2
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch",
margin: 0
}
});
// bot-sdk/templates/AdvanceMultiSelectTemplate.tsx
init_esm_shims();
import * as React54 from "react";
import {
Dimensions as Dimensions17,
ImageBackground as ImageBackground3,
StyleSheet as StyleSheet36,
Text as Text31,
TouchableOpacity as TouchableOpacity18,
View as View42
} from "react-native";
import FastImage7 from "react-native-fast-image";
var windowWidth12 = Dimensions17.get("window").width;
var AdvanceMultiSelectTemplate = class extends BaseView_default {
placeholderImage;
constructor(props) {
super(props);
this.state = {
elements: [],
limit: 1,
showViewMore: false,
totalLength: 0
};
}
componentDidMount() {
this.setState({
elements: this.props.payload.elements,
limit: this.props.payload?.showViewMore ? this.props.payload?.limit ? this.props.payload?.limit : 1 : this.props.payload.elements.length,
showViewMore: this.props.payload?.showViewMore,
totalLength: this.props.payload.elements.length
});
}
render() {
let selectList = this.getSelectedList();
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React54.createElement(View42, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload?.heading && /* @__PURE__ */ React54.createElement(
BotText,
{
text: this.props.payload?.heading?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), this.renderMultiSelectView(
this.state.showViewMore ? this.state.elements?.slice(0, this.state.limit) : this.state.elements
), this.state.showViewMore && /* @__PURE__ */ React54.createElement(
TouchableOpacity18,
{
style: styles38.view_more_main,
onPress: () => {
this.setState({
showViewMore: false
});
}
},
/* @__PURE__ */ React54.createElement(Text31, { style: styles38.view_more_text }, "View more")
), /* @__PURE__ */ React54.createElement(
View42,
{
pointerEvents: selectList?.length === 0 || this.isViewDisable() ? "none" : "auto"
},
this.props.payload.buttons.map((btn, _btnIndex) => {
return /* @__PURE__ */ React54.createElement(
TouchableOpacity18,
{
key: "btn" + _btnIndex,
onPress: selectList?.length === 0 ? void 0 : () => {
let itemsStr = "Here are selected items: ";
selectList?.map((item, index) => {
if (index < selectList.length - 1) {
itemsStr = itemsStr + "" + item + " ";
} else {
itemsStr = itemsStr + "" + item;
}
});
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
title: itemsStr,
type: btn?.type
}
);
}
},
style: [
styles38.btn_main,
selectList?.length === 0 ? { backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR || Color_default.gray } : { backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR || "#303f9f" }
// this.isViewDisable() && {backgroundColor: Color.gray},
]
},
/* @__PURE__ */ React54.createElement(Text31, { style: [styles38.btn_text, { color: bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR || Color_default.white }] }, btn?.title)
);
})
));
}
getSelectedList = () => {
let selectList = [];
this.state.elements?.map((ele) => {
let list = ele?.collection?.filter((col) => col?.isChecked).map((item) => {
return item?.value;
});
selectList.push(...list);
});
return selectList;
};
renderMultiSelectView(elements) {
if (!elements || elements?.length === 0) {
return /* @__PURE__ */ React54.createElement(React54.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React54.createElement(View42, null, elements.map((item, index) => {
return /* @__PURE__ */ React54.createElement(View42, { key: "ele_" + index, style: styles38.ele_main }, /* @__PURE__ */ React54.createElement(View42, { style: { marginBottom: 10 } }, /* @__PURE__ */ React54.createElement(Text31, { style: styles38.ele_title }, item?.collectionTitle)), this.state.elements?.[index]?.collection?.length > 1 && /* @__PURE__ */ React54.createElement(View42, { style: styles38.che_main }, /* @__PURE__ */ React54.createElement(
CustomCheckBox_default,
{
style: styles38.check_box,
boxType: "square",
value: item?.isChecked || false,
selectedColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR || item.selectedColor || "#007AFF",
unselectedColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || item.unselectedColor || "#CCCCCC",
selectedBackgroundColor: item.selectedBackgroundColor || "transparent",
size: item.size || 24,
borderWidth: item.borderWidth || 2,
onValueChange: (value) => {
let allElements = this.unselectElemets(
this.state.elements,
index
);
allElements[index] = {
...item,
isChecked: value,
collection: item?.collection.map((col) => {
return {
...col,
isChecked: value
};
})
};
this.setState({
elements: allElements
});
}
}
), /* @__PURE__ */ React54.createElement(Text31, { style: [styles38.select_all, { marginLeft: normalize(5) }] }, "Select all")), this.renderCollections(item?.collection, index));
}));
}
unselectElemets = (elements, _index) => {
return elements.map((item, index) => {
if (index === _index) {
return item;
}
return {
...item,
isChecked: false,
collection: item?.collection.map((col, _colIndex) => {
return {
...col,
isChecked: false
};
})
};
});
};
renderCollections(collections, elementIndex) {
if (!collections || collections?.length === 0) {
return /* @__PURE__ */ React54.createElement(React54.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React54.createElement(View42, { style: [styles38.col_main, { width: windowWidth12 / 4 * 3 }] }, collections.map((item, index) => {
return /* @__PURE__ */ React54.createElement(View42, { style: styles38.col_item_main }, /* @__PURE__ */ React54.createElement(View42, { style: styles38.col_check_main }, /* @__PURE__ */ React54.createElement(
CustomCheckBox_default,
{
style: [styles38.check_box, { marginStart: normalize(4) }],
value: item?.isChecked || false,
lineWidth: 2,
hideBox: false,
boxType: "square",
animationDuration: 0.2,
onAnimationType: "stroke",
offAnimationType: "stroke",
selectedColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR || item.selectedColor || "#007AFF",
unselectedColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || item.unselectedColor || "#CCCCCC",
selectedBackgroundColor: item.selectedBackgroundColor || "transparent",
size: item.size || 24,
borderWidth: item.borderWidth || 2,
onValueChange: (value) => {
const elements = this.unselectElemets(
this.state.elements,
elementIndex
);
elements[elementIndex] = {
...elements[elementIndex],
collection: elements[elementIndex]?.collection.map(
(col, colIndex) => {
if (colIndex === index) {
return {
...col,
isChecked: value
};
}
return col;
}
)
};
const selectList = elements[elementIndex]?.collection.filter((col) => col?.isChecked || false);
elements[elementIndex] = {
...elements[elementIndex],
isChecked: selectList.length === 0 ? false : selectList.length === elements[elementIndex]?.collection?.length ? true : false
};
this.setState({
elements
});
}
}
), /* @__PURE__ */ React54.createElement(
ImageBackground3,
{
style: [
styles38.image_view,
{ marginLeft: normalize(7) }
],
source: this.placeholderImage
},
/* @__PURE__ */ React54.createElement(
FastImage7,
{
source: { uri: item?.image_url },
style: [styles38.image],
resizeMode: "cover"
}
)
), /* @__PURE__ */ React54.createElement(View42, { style: styles38.col_item_content }, /* @__PURE__ */ React54.createElement(Text31, { numberOfLines: 1, style: styles38.item_title }, item?.title), /* @__PURE__ */ React54.createElement(Text31, { numberOfLines: 1, style: [styles38.item_title, { fontSize: normalize(12), marginTop: 5 }] }, item?.description))));
}));
}
};
var styles38 = StyleSheet36.create({
btn_text: { fontSize: normalize(14) },
btn_main: {
backgroundColor: "#303f9f",
padding: 10,
borderRadius: 5,
justifyContent: "center",
alignItems: "center"
},
view_more_text: { color: "#0076FF", fontSize: normalize(15) },
view_more_main: { padding: 10 },
item_title: {
textAlign: "left",
alignSelf: "left",
color: Color_default.black,
fontWeight: "normal",
fontSize: normalize(14),
flexShrink: 1,
marginStart: 5
},
col_check_main: {
flexDirection: "row",
alignItems: "center"
},
col_item_main: {
flexDirection: "column",
marginBottom: normalize(10),
borderRadius: 5,
borderColor: Color_default.black,
borderWidth: StyleSheet36.hairlineWidth,
padding: normalize(8)
},
col_item_content: {
flexDirection: "column",
flexShrink: 1
},
col_main: { marginStart: normalize(0) },
select_all: {
justifyContent: "center",
textAlign: "center",
alignSelf: "center",
color: Color_default.black,
fontWeight: "normal",
fontSize: normalize(14)
},
che_main: {
flexDirection: "row",
marginStart: normalize(0),
marginBottom: normalize(10)
},
ele_main: { flexDirection: "column", marginBottom: normalize(5) },
ele_title: {
color: Color_default.black,
fontWeight: "800",
marginTop: normalize(15),
fontSize: normalize(15)
},
check_box: {
justifyContent: "center",
alignSelf: "center",
height: normalize(25)
},
image_view: {
height: normalize(45),
width: normalize(45),
justifyContent: "center",
alignSelf: "center",
marginEnd: 5,
borderColor: Color_default.bisque,
borderWidth: StyleSheet36.hairlineWidth / 2
},
image: {
height: normalize(35),
width: normalize(35),
resizeMode: "stretch",
justifyContent: "center",
alignSelf: "center",
margin: 0
}
});
// bot-sdk/templates/MultiSelectTemplate.tsx
init_esm_shims();
import * as React55 from "react";
import {
Dimensions as Dimensions18,
StyleSheet as StyleSheet37,
Text as Text32,
TouchableOpacity as TouchableOpacity19,
View as View43
} from "react-native";
var windowWidth13 = Dimensions18.get("window").width;
var MultiSelectTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
mPayload: null
};
}
componentDidMount() {
this.setState({
mPayload: this.props.payload
});
}
renderMultiSelectView(payload) {
if (!payload?.elements || payload.elements?.length === 0) {
return /* @__PURE__ */ React55.createElement(React55.Fragment, null);
}
const btheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React55.createElement(View43, { style: [styles39.ele_main] }, /* @__PURE__ */ React55.createElement(View43, { style: styles39.che_main }, /* @__PURE__ */ React55.createElement(
CustomCheckBox_default,
{
style: styles39.check_box,
boxType: "square",
selectedColor: btheme?.BUBBLE_RIGHT_BG_COLOR,
unselectedColor: btheme?.BUBBLE_LEFT_BG_COLOR,
value: payload?.isChecked || false,
onValueChange: (value) => {
let payload2 = this.state.mPayload;
payload2 = {
...payload2,
isChecked: value,
elements: this.state.mPayload?.elements.map((col) => {
return {
...col,
isChecked: value
};
})
};
this.setState({
mPayload: payload2
});
}
}
), /* @__PURE__ */ React55.createElement(
Text32,
{
style: [styles39.select_all, { marginLeft: normalize(5) }]
},
"Select all"
)), this.renderCollections(payload?.elements));
}
renderCollections(collections) {
if (!collections || collections?.length === 0) {
return /* @__PURE__ */ React55.createElement(React55.Fragment, null);
}
const btheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React55.createElement(View43, { style: [styles39.col_main, { width: windowWidth13 / 4 * 3 }] }, collections.map((item, index) => {
return /* @__PURE__ */ React55.createElement(View43, { style: [styles39.col_item_main, { borderColor: btheme?.BUBBLE_LEFT_BG_COLOR }] }, /* @__PURE__ */ React55.createElement(View43, { style: styles39.col_check_main }, /* @__PURE__ */ React55.createElement(
CustomCheckBox_default,
{
style: styles39.check_box,
value: item?.isChecked || false,
lineWidth: 2,
hideBox: false,
boxType: "square",
animationDuration: 0,
onAnimationType: "stroke",
offAnimationType: "stroke",
selectedColor: btheme?.BUBBLE_RIGHT_BG_COLOR,
unselectedColor: btheme?.BUBBLE_LEFT_BG_COLOR,
selectedBackgroundColor: item.selectedBackgroundColor || "transparent",
size: item.size || 24,
borderWidth: item.borderWidth || 2,
onValueChange: (value) => {
let payload = this.state.mPayload;
payload = {
...payload,
elements: this.state.mPayload?.elements.map(
(col, colIndex) => {
if (colIndex === index) {
return {
...col,
isChecked: value
};
}
return col;
}
)
};
let checkedElements = payload?.elements.filter(
(ele) => ele?.isChecked
);
if (checkedElements?.length < this.state.mPayload?.elements?.length) {
payload = {
...payload,
isChecked: false
};
} else if (checkedElements?.length === this.state.mPayload?.elements?.length) {
payload = {
...payload,
isChecked: true
};
}
this.setState({
mPayload: payload
});
}
}
), /* @__PURE__ */ React55.createElement(
Text32,
{
numberOfLines: 1,
style: [
styles39.item_title,
{ marginLeft: normalize(5) }
]
},
item?.title
)));
}));
}
render() {
const btheme = getBubbleTheme(this.props?.theme);
let selectList = this.getSelectedList();
if (!this.state.mPayload) {
return /* @__PURE__ */ React55.createElement(React55.Fragment, null);
}
return /* @__PURE__ */ React55.createElement(View43, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.renderMultiSelectView(this.state.mPayload), /* @__PURE__ */ React55.createElement(View43, { pointerEvents: selectList?.length === 0 ? "none" : "auto" }, this.props.payload.buttons.map((btn) => {
return /* @__PURE__ */ React55.createElement(
TouchableOpacity19,
{
onPress: () => {
let msgsStr = "";
let botStr = "";
selectList?.map((item, index) => {
if (index < selectList.length - 1) {
msgsStr = msgsStr + "" + item?.title + ",";
botStr = botStr + "" + item?.value + ",";
} else {
msgsStr = msgsStr + "" + item?.title;
botStr = botStr + "" + item?.value;
}
});
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
message: msgsStr,
payload: botStr,
type: btn.type
}
);
}
},
style: [
styles39.btn_main,
selectList?.length === 0 ? { backgroundColor: btheme?.BUBBLE_RIGHT_BG_COLOR } : { backgroundColor: btheme?.BUBBLE_RIGHT_BG_COLOR }
//this.isViewDisable() && {backgroundColor: Color.gray},
]
},
/* @__PURE__ */ React55.createElement(Text32, { style: [styles39.btn_text] }, btn?.title)
);
})));
}
getSelectedList = () => {
let selectList = [];
if (!this.state?.mPayload || !this.state?.mPayload?.elements) {
return selectList;
}
selectList = this.state?.mPayload?.elements?.filter(
(col) => col?.isChecked
);
return selectList;
};
};
var styles39 = StyleSheet37.create({
btn_text: { color: Color_default.white, fontSize: normalize(14) },
btn_main: {
backgroundColor: "#303f9f",
//marginBottom: 10,
padding: 10,
borderRadius: 5,
justifyContent: "center",
alignItems: "center",
marginStart: normalize(5)
},
item_title: {
textAlign: "center",
alignSelf: "center",
color: Color_default.black,
fontWeight: "normal",
fontSize: normalize(14),
flexShrink: 1
},
col_check_main: {
flexDirection: "row"
// backgroundColor: 'yellow',
},
col_item_main: {
flexDirection: "column",
marginBottom: normalize(5),
borderRadius: 5,
borderColor: Color_default.black,
borderWidth: StyleSheet37.hairlineWidth,
padding: normalize(8),
marginTop: 5,
marginStart: normalize(0)
},
col_main: { marginStart: normalize(5), marginTop: normalize(5) },
select_all: {
justifyContent: "center",
// backgroundColor: 'red',
textAlign: "center",
alignSelf: "center",
color: Color_default.black,
fontWeight: "normal",
fontSize: normalize(14)
},
che_main: {
flexDirection: "row",
marginBottom: normalize(5)
},
ele_main: { flexDirection: "column", marginBottom: normalize(5) },
check_box: {
justifyContent: "center",
alignSelf: "center",
height: normalize(25)
}
});
// bot-sdk/templates/RadioOptionTemplate.tsx
init_esm_shims();
import * as React56 from "react";
import {
Dimensions as Dimensions19,
StyleSheet as StyleSheet38,
Text as Text33,
TouchableOpacity as TouchableOpacity20,
View as View44
} from "react-native";
var windowWidth14 = Dimensions19.get("window").width;
var RadioOptionTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
radioOptions: [],
selectedItem: null
};
}
componentDidMount() {
const initialOptions = this.props.payload.radioOptions?.map((option, index) => ({
...option,
isChecked: option.isChecked || false
// Ensure isChecked property exists
})) || [];
console.log("Initial radioOptions from payload:", this.props.payload.radioOptions);
console.log("Processed initial options:", initialOptions);
this.setState({
radioOptions: initialOptions
});
}
onPressRadioButton = (index) => {
console.log(`onPressRadioButton called for index: ${index}`);
console.log("Current radioOptions state:", this.state.radioOptions);
let options = this.state.radioOptions.map((opt, optIndex) => {
if (optIndex === index) {
return {
...opt,
isChecked: true
};
}
return {
...opt,
isChecked: false
};
});
console.log("New options after mapping:", options);
this.setState({
radioOptions: options,
selectedItem: options[index]
}, () => {
console.log("State updated. New radioOptions:", this.state.radioOptions);
this.forceUpdate();
});
};
renderRadioOptions = (radioOptions) => {
if (!radioOptions || radioOptions?.length === 0) {
return /* @__PURE__ */ React56.createElement(React56.Fragment, null);
}
const btheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React56.createElement(
View44,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: styles40.radio_main
},
radioOptions.map((item, index) => {
console.log(`Rendering radio ${index}: isChecked=${item?.isChecked}, title=${item?.title}`);
return /* @__PURE__ */ React56.createElement(
RadioButton,
{
color: btheme?.BUBBLE_RIGHT_BG_COLOR,
borderColor: btheme?.BUBBLE_LEFT_BG_COLOR,
size: 25,
borderSize: 1,
id: item?.id || `option-${index}`,
label: `${item?.title}
${item?.value}`,
selected: !!item?.isChecked,
onPress: (id) => {
console.log(`Radio option ${index} pressed for id: ${id}, current isChecked: ${item?.isChecked}`);
this.onPressRadioButton(index);
}
}
);
})
);
return /* @__PURE__ */ React56.createElement(React56.Fragment, null);
};
render() {
const btheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React56.createElement(View44, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload && /* @__PURE__ */ React56.createElement(View44, null, this.props.payload?.heading && /* @__PURE__ */ React56.createElement(
Text33,
{
style: {
color: Color_default.black,
fontSize: normalize(14),
fontWeight: "500",
marginLeft: 5
}
},
this.props.payload?.heading?.trim()
), this.renderRadioOptions(this.state.radioOptions), /* @__PURE__ */ React56.createElement(
TouchableOpacity20,
{
onPress: () => {
const item = this.state.selectedItem?.postback;
if (item && this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
title: item?.title,
payload: item?.value,
type: "postback"
}
);
}
},
style: [styles40.btn_main, { backgroundColor: btheme?.BUBBLE_RIGHT_BG_COLOR }]
},
/* @__PURE__ */ React56.createElement(Text33, { style: [styles40.btn_text] }, "Confirm")
)));
}
};
var styles40 = StyleSheet38.create({
item_value: {
color: Color_default.black,
fontSize: normalize(12),
fontWeight: "400",
// marginBottom: 5,
opacity: 0.5
},
item_title: {
flex: 1,
color: Color_default.black,
fontSize: normalize(14),
fontWeight: "600",
marginBottom: 3,
marginTop: 5
},
title_main: { flexDirection: "column", flex: 1 },
item_main: {
padding: 5,
marginBottom: 5,
flexDirection: "row"
},
radio_main: { width: windowWidth14 / 4 * 3, marginBottom: 10 },
btn_main: {
backgroundColor: "#303f9f",
//marginBottom: 10,
padding: 10,
borderRadius: 5,
justifyContent: "center",
alignItems: "center"
//marginStart: normalize(20),
},
btn_text: { color: Color_default.white, fontSize: normalize(14) }
});
// bot-sdk/templates/ListViewTemplate.tsx
init_esm_shims();
import * as React57 from "react";
import {
Dimensions as Dimensions20,
ImageBackground as ImageBackground4,
StyleSheet as StyleSheet39,
Text as Text34,
TouchableOpacity as TouchableOpacity21,
View as View45
} from "react-native";
import FastImage8 from "react-native-fast-image";
var windowWidth15 = Dimensions20.get("window").width;
var width3 = windowWidth15 * 0.75;
var ListViewTemplate = class extends BaseView_default {
placeholderImage;
constructor(props) {
super(props);
}
getSingleElementView = (item, index, _size = 0) => {
const btheme = getBubbleTheme(this.props?.theme);
let Image_Http_URL = { uri: item?.image_url };
let buttons = item?.buttons ? [...item?.buttons] : [];
return /* @__PURE__ */ React57.createElement(View45, { key: index + "_" + index, style: [styles41.main_view_1, { width: width3, borderColor: btheme?.BUBBLE_LEFT_BG_COLOR }] }, /* @__PURE__ */ React57.createElement(
TouchableOpacity21,
{
style: styles41.sub_container,
onPress: !item?.default_action ? void 0 : () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
TEMPLATE_TYPES.LIST_VIEW_TEMPLATE,
item?.default_action,
false,
this.props?.theme
);
}
}
},
item?.image_url && /* @__PURE__ */ React57.createElement(View45, null, /* @__PURE__ */ React57.createElement(
ImageBackground4,
{
style: [styles41.image_view],
source: this.placeholderImage
},
/* @__PURE__ */ React57.createElement(FastImage8, { source: Image_Http_URL, style: [styles41.image] })
)),
/* @__PURE__ */ React57.createElement(View45, { style: styles41.sub_container_1 }, /* @__PURE__ */ React57.createElement(Text34, { style: [styles41.displayTextStyle] }, item.title), /* @__PURE__ */ React57.createElement(Text34, { style: [styles41.descTextStyle, { color: Color_default.black }] }, item.subtitle)),
/* @__PURE__ */ React57.createElement(View45, { style: styles41.item_value_con }, /* @__PURE__ */ React57.createElement(Text34, { style: styles41.item_value }, item?.value))
), buttons && /* @__PURE__ */ React57.createElement(
View45,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [
styles41.buttons_container,
buttons?.length > 0 && { marginBottom: 10 }
]
},
buttons.map((btn, i) => {
return /* @__PURE__ */ React57.createElement(
TouchableOpacity21,
{
key: i + "_",
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
btn
);
}
},
style: [
styles41.buttons_container_1,
{
backgroundColor: this.props?.theme?.v3?.body?.buttons?.bg_color || "#a37645"
}
]
},
/* @__PURE__ */ React57.createElement(
Text34,
{
style: [
styles41.btn_text,
{
color: this.props?.theme?.v3?.body?.buttons?.color || "#ffffff",
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
},
botStyles.small?.size
]
},
btn?.title
)
);
})
));
};
renderElementsView = (list) => {
return /* @__PURE__ */ React57.createElement(
View45,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [{ width: width3, marginTop: 15 }]
},
list?.map((item, index) => {
return this.getSingleElementView(item, index, list.length);
}),
this.props.payload?.seeMore && /* @__PURE__ */ React57.createElement(
View45,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: styles41.more_btn_container
},
/* @__PURE__ */ React57.createElement(
TouchableOpacity21,
{
style: styles41.more_sub_con1,
onPress: () => {
let data = null;
if (this.props?.payload?.moreData) {
data = this.props?.payload?.moreData;
} else {
data = this.props?.payload?.elements;
}
let data1 = {
...data,
heading: this.props.payload?.heading
};
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
data1,
true
);
}
}
},
/* @__PURE__ */ React57.createElement(
Text34,
{
style: [
styles41.more_text,
{
fontFamily: this.props.theme?.v3?.body?.font?.family
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"]?.size,
{
textDecorationLine: "underline"
}
]
},
"See more"
)
)
)
);
};
render() {
if (this.props.onBottomSheetClose) {
width3 = windowWidth15 * 0.9;
} else {
width3 = windowWidth15 * 0.8;
}
const size = this.props.payload?.moreCount || this.props.payload.elements?.length || 0;
return this.props.payload ? /* @__PURE__ */ React57.createElement(View45, null, this.props.payload?.text && /* @__PURE__ */ React57.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), this.props.payload?.heading && /* @__PURE__ */ React57.createElement(View45, { style: styles41.sub_container_title1 }, /* @__PURE__ */ React57.createElement(Text34, { style: [styles41.displayTextHeaderStyle] }, this.props.payload?.heading)), this.renderElementsView(this.props.payload.elements.slice(0, size))) : /* @__PURE__ */ React57.createElement(React57.Fragment, null);
}
};
var styles41 = StyleSheet39.create({
item_value: {
color: "#008000",
fontWeight: "400",
fontSize: normalize(13),
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
item_value_con: { alignSelf: "center", marginEnd: normalize(5) },
image_view: {
height: normalize(45),
width: normalize(45),
justifyContent: "center",
alignSelf: "center",
marginEnd: 5,
borderColor: Color_default.bisque,
borderWidth: StyleSheet39.hairlineWidth / 2
},
more_text: {
flex: 1,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: TEMPLATE_STYLE_VALUES.VIEW_MORE_TEXT_COLOR,
alignSelf: "flex-end",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
more_sub_con1: {
flex: 1,
justifyContent: "flex-start",
alignItems: "flex-start",
backgroundColor: "transparent",
paddingBottom: 10
},
more_btn_container: {
flexDirection: "row",
justifyContent: "flex-start",
alignItems: "flex-start"
},
btn_text: {
padding: 12,
color: Color_default.white,
fontWeight: "500"
},
buttons_container_1: {
// backgroundColor: Color.blue,
paddingLeft: 5,
paddingRight: 5,
marginBottom: 5,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
alignItems: "center"
},
buttons_container: {
flexDirection: "column",
// backgroundColor: 'green',
justifyContent: "flex-end",
marginTop: 10,
marginEnd: 10,
marginStart: 10
},
sub_container_1: {
flexDirection: "column",
marginStart: 5,
marginEnd: 10,
flex: 1
},
sub_container_title1: {
flexDirection: "column",
marginStart: 5,
marginEnd: 10
},
sub_container: { flexDirection: "row", marginTop: 10 },
image: {
height: normalize(45),
width: normalize(45),
resizeMode: "stretch",
margin: 0
},
image_container: {
backgroundColor: "transparent",
minHeight: normalize(50),
minWidth: normalize(50)
},
line: {
backgroundColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
width: "100%",
height: StyleSheet39.hairlineWidth
},
main_view_1: {
paddingEnd: 5,
paddingStart: 5,
flexDirection: "column",
marginBottom: 15,
backgroundColor: Color_default.white,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: StyleSheet39.hairlineWidth,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
btn_views_1: {
backgroundColor: Color_default.white,
marginBottom: 2,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
},
displayTextStyle: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
marginEnd: 10,
//backgroundColor: 'yellow',
textAlign: "left",
justifyContent: "center",
color: Color_default.text_color,
fontWeight: "500"
},
displayTextHeaderStyle: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
marginTop: 10,
//backgroundColor: 'yellow',
textAlign: "left",
justifyContent: "center",
color: Color_default.text_color,
fontWeight: "500"
},
descTextStyle: {
fontWeight: "400",
fontSize: normalize(13),
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
marginTop: 10,
flex: 1,
color: Color_default.sub_text_color
// backgroundColor: 'green',
}
});
// bot-sdk/templates/DropdownTemplate.tsx
init_esm_shims();
import * as React59 from "react";
import {
Dimensions as Dimensions22,
StyleSheet as StyleSheet41,
Text as Text36,
TouchableOpacity as TouchableOpacity23,
View as View47
} from "react-native";
init_PlatformCheck();
// bot-sdk/components/CustomSelectDropdown.tsx
init_esm_shims();
import * as React58 from "react";
import {
View as View46,
Text as Text35,
TouchableOpacity as TouchableOpacity22,
FlatList as FlatList3,
Modal as Modal5,
StyleSheet as StyleSheet40,
Animated as Animated4,
Dimensions as Dimensions21
} from "react-native";
var { width: screenWidth2, height: screenHeight2 } = Dimensions21.get("window");
var CustomSelectDropdown = class extends React58.Component {
fadeAnim;
scaleAnim;
buttonRef;
flatListRef;
constructor(props) {
super(props);
this.state = {
isVisible: false,
selectedItem: null,
selectedIndex: -1,
buttonLayout: { x: 0, y: 0, width: 0, height: 0 }
};
this.fadeAnim = new Animated4.Value(0);
this.scaleAnim = new Animated4.Value(0.95);
this.buttonRef = React58.createRef();
this.flatListRef = React58.createRef();
}
closeDropdown = () => {
const { animationDuration = 300 } = this.props;
Animated4.parallel([
Animated4.timing(this.fadeAnim, {
toValue: 0,
duration: animationDuration,
useNativeDriver: true
}),
Animated4.timing(this.scaleAnim, {
toValue: 0.95,
duration: animationDuration,
useNativeDriver: true
})
]).start(() => {
this.setState({ isVisible: false });
});
};
handleItemPress = (item, index) => {
this.setState({
selectedItem: item,
selectedIndex: index
});
this.closeDropdown();
this.props.onSelect?.(item, index);
};
scrollToSelectedItem = () => {
const { data } = this.props;
const { selectedIndex } = this.state;
const isControlled = this.props.hasOwnProperty("value");
const currentSelectedIndex = isControlled ? data.findIndex((item) => item === this.props.value || item?.value === this.props.value?.value || item?.title === this.props.value?.title) : selectedIndex;
if (this.flatListRef.current && currentSelectedIndex >= 0 && currentSelectedIndex < data.length) {
console.log("Scrolling to selected item at index:", currentSelectedIndex);
setTimeout(() => {
try {
this.flatListRef.current?.scrollToIndex({
index: currentSelectedIndex,
animated: true,
viewPosition: 0
// 0 = top, 0.5 = center, 1 = bottom
});
} catch (error) {
this.flatListRef.current?.scrollToOffset({
offset: currentSelectedIndex * 45,
// Updated to match actual item height
animated: true
});
}
}, 100);
}
};
openDropdown = () => {
const { disabled, data, animationDuration = 300 } = this.props;
if (disabled || data.length === 0)
return;
if (this.buttonRef.current) {
this.buttonRef.current.measureInWindow((x, y, width8, height) => {
this.setState({
isVisible: true,
buttonLayout: { x, y, width: width8, height }
});
Animated4.parallel([
Animated4.timing(this.fadeAnim, {
toValue: 1,
duration: animationDuration,
useNativeDriver: true
}),
Animated4.timing(this.scaleAnim, {
toValue: 1,
duration: animationDuration,
useNativeDriver: true
})
]).start(() => {
this.scrollToSelectedItem();
});
});
} else {
this.setState({ isVisible: true });
Animated4.parallel([
Animated4.timing(this.fadeAnim, {
toValue: 1,
duration: animationDuration,
useNativeDriver: true
}),
Animated4.timing(this.scaleAnim, {
toValue: 1,
duration: animationDuration,
useNativeDriver: true
})
]).start(() => {
this.scrollToSelectedItem();
});
}
};
renderDefaultButton = () => {
const {
borderColor = "#CCCCCC",
borderRadius = 8,
borderWidth = 1,
buttonStyle = {},
buttonTextStyle = {},
selectedColor = "#007AFF",
unselectedColor = "#333333",
defaultButtonText = "Select an option",
value
} = this.props;
const { selectedItem } = this.state;
const isControlled = this.props.hasOwnProperty("value");
const currentSelectedItem = isControlled ? value : selectedItem;
return /* @__PURE__ */ React58.createElement(View46, { style: [styles42.defaultButton, { borderColor, borderRadius, borderWidth }, buttonStyle] }, /* @__PURE__ */ React58.createElement(
Text35,
{
style: [
styles42.defaultButtonText,
{ color: currentSelectedItem ? selectedColor : unselectedColor },
buttonTextStyle
],
numberOfLines: 1
},
currentSelectedItem?.title || currentSelectedItem?.label || currentSelectedItem?.name || defaultButtonText
), /* @__PURE__ */ React58.createElement(Text35, { style: [styles42.arrow, { color: borderColor }] }, "\u25BC"));
};
renderDefaultItem = (item, index, isSelected) => {
const {
selectedRowColor = "#E3F2FD",
rowStyle = {},
selectedColor = "#007AFF",
unselectedColor = "#333333",
rowTextStyle = {}
} = this.props;
return /* @__PURE__ */ React58.createElement(
TouchableOpacity22,
{
style: [
styles42.defaultRow,
{ backgroundColor: isSelected ? selectedRowColor : "transparent" },
rowStyle
],
onPress: () => this.handleItemPress(item, index),
activeOpacity: 0.7
},
/* @__PURE__ */ React58.createElement(
Text35,
{
style: [
styles42.defaultRowText,
{ color: isSelected ? selectedColor : unselectedColor },
rowTextStyle
],
numberOfLines: 1
},
item?.title || item?.label || item?.name || item.toString()
)
);
};
getDropdownPosition = () => {
const {
data,
maxHeight = 200,
dropdownBackgroundColor = "#FFFFFF",
borderRadius = 8,
borderWidth = 1,
borderColor = "#CCCCCC"
} = this.props;
const { buttonLayout } = this.state;
const dropdownHeight = Math.min(data.length * 50 + 20, maxHeight);
const spaceBelow = screenHeight2 - (buttonLayout.y + buttonLayout.height);
const spaceAbove = buttonLayout.y;
let top = buttonLayout.y + buttonLayout.height + 5;
if (spaceBelow < dropdownHeight && spaceAbove > dropdownHeight) {
top = buttonLayout.y - dropdownHeight - 5;
}
const dropdownWidth = Math.max(buttonLayout.width, 200);
const buttonCenterX = buttonLayout.x + buttonLayout.width / 2;
const left = Math.max(10, Math.min(
screenWidth2 - dropdownWidth - 10,
buttonCenterX - dropdownWidth / 2
));
console.log("Dropdown positioning:", {
buttonLayout,
dropdownWidth,
buttonCenterX,
left,
top,
screenWidth: screenWidth2,
screenHeight: screenHeight2
});
return {
position: "absolute",
top,
left,
width: dropdownWidth,
maxHeight,
backgroundColor: dropdownBackgroundColor,
borderRadius,
borderWidth,
borderColor,
elevation: 5,
shadowColor: "#000",
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.25,
shadowRadius: 4,
zIndex: 1e3
};
};
render() {
const {
disabled = false,
renderButton,
renderItem,
data,
dropdownStyle = {},
showsVerticalScrollIndicator = true,
value
// Add value prop
} = this.props;
const { isVisible, selectedItem, selectedIndex } = this.state;
const isControlled = this.props.hasOwnProperty("value");
const currentSelectedItem = isControlled ? value : selectedItem;
const currentSelectedIndex = isControlled ? data.findIndex((item) => item === value || item?.value === value?.value || item?.title === value?.title) : selectedIndex;
return /* @__PURE__ */ React58.createElement(View46, { style: styles42.container }, /* @__PURE__ */ React58.createElement(
TouchableOpacity22,
{
ref: this.buttonRef,
onPress: this.openDropdown,
disabled,
activeOpacity: 0.7,
style: [disabled && styles42.disabled]
},
renderButton ? renderButton(currentSelectedItem, isVisible) : this.renderDefaultButton()
), /* @__PURE__ */ React58.createElement(
Modal5,
{
visible: isVisible,
transparent: true,
animationType: "none",
onRequestClose: this.closeDropdown
},
/* @__PURE__ */ React58.createElement(
TouchableOpacity22,
{
style: styles42.modalOverlay,
activeOpacity: 1,
onPress: this.closeDropdown
},
/* @__PURE__ */ React58.createElement(
Animated4.View,
{
style: [
this.getDropdownPosition(),
dropdownStyle,
{
opacity: this.fadeAnim,
transform: [{ scale: this.scaleAnim }]
}
]
},
/* @__PURE__ */ React58.createElement(
FlatList3,
{
ref: this.flatListRef,
data,
keyExtractor: (item, index) => `dropdown-item-${index}`,
showsVerticalScrollIndicator,
bounces: false,
getItemLayout: (data2, index) => ({
length: 45,
// Actual item height from DropdownTemplate styles
offset: 45 * index,
index
}),
onScrollToIndexFailed: (info) => {
console.log("ScrollToIndex failed:", info);
this.flatListRef.current?.scrollToOffset({
offset: info.index * 45,
animated: true
});
},
renderItem: ({ item, index }) => {
const isSelected = index === currentSelectedIndex;
return renderItem ? renderItem(item, index, isSelected, this.handleItemPress) : this.renderDefaultItem(item, index, isSelected);
}
}
)
)
)
));
}
};
var styles42 = StyleSheet40.create({
container: {
position: "relative"
},
defaultButton: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
paddingHorizontal: 12,
paddingVertical: 12,
backgroundColor: "#FFFFFF",
minHeight: 44
},
defaultButtonText: {
flex: 1,
fontSize: 16,
color: "#333333"
},
arrow: {
fontSize: 12,
marginLeft: 8,
color: "#666666"
},
disabled: {
opacity: 0.5
},
modalOverlay: {
flex: 1,
backgroundColor: "rgba(0, 0, 0, 0.1)"
},
defaultRow: {
paddingHorizontal: 15,
paddingVertical: 12,
borderBottomWidth: 0.5,
borderBottomColor: "#E0E0E0",
minHeight: 44,
justifyContent: "center"
},
defaultRowText: {
fontSize: 16,
color: "#333333"
}
});
var CustomSelectDropdown_default = CustomSelectDropdown;
// bot-sdk/templates/DropdownTemplate.tsx
var windowWidth16 = Dimensions22.get("window").width;
var DropdownTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
selectedValue: void 0,
item: void 0
};
}
renderDropdownNewDesign = () => {
return /* @__PURE__ */ React59.createElement(
CustomSelectDropdown_default,
{
data: this.props.payload.elements,
value: this.state.item,
onSelect: (selectedItem, index) => {
this.setState({
selectedValue: selectedItem,
item: this.props.payload.elements[index]
});
},
renderButton: (selectedItem, isOpened) => {
return /* @__PURE__ */ React59.createElement(View47, { style: [styles43.calendar, styles43.calendar1] }, /* @__PURE__ */ React59.createElement(Text36, { numberOfLines: 1, style: styles43.btn_text }, selectedItem?.title || "Select value"), /* @__PURE__ */ React59.createElement(View47, { style: { padding: 10 } }, /* @__PURE__ */ React59.createElement(
SvgIcon,
{
name: isOpened ? "DownSolid" : "RightArrow",
width: normalize(15),
height: normalize(15)
}
)));
},
renderItem: (selectedItem, index, isSelected, onItemPress) => {
return /* @__PURE__ */ React59.createElement(
TouchableOpacity23,
{
key: "item_" + index,
onPress: () => {
onItemPress(selectedItem, index);
},
activeOpacity: 0.7
},
/* @__PURE__ */ React59.createElement(View47, { style: styles43.single_item }, /* @__PURE__ */ React59.createElement(
Text36,
{
style: {
color: isSelected ? Color_default.bot_blue : Color_default.text_color,
fontSize: normalize(14)
}
},
selectedItem?.title
)),
/* @__PURE__ */ React59.createElement(View47, { style: styles43.line })
);
}
}
);
};
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
const btnTheme = getButtonTheme(this.props?.theme);
return /* @__PURE__ */ React59.createElement(View47, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload && /* @__PURE__ */ React59.createElement(
View47,
{
style: {
backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR,
padding: 5,
borderRadius: 8
}
},
this.props.payload?.label && /* @__PURE__ */ React59.createElement(
BotText,
{
text: this.props.payload?.label?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
),
/* @__PURE__ */ React59.createElement(
View47,
{
style: {
marginTop: normalize(isIOS ? 10 : 10),
marginBottom: normalize(isIOS ? 10 : 10)
}
},
this.renderDropdownNewDesign()
),
/* @__PURE__ */ React59.createElement(View47, { style: styles43.btn_main }, /* @__PURE__ */ React59.createElement(
TouchableOpacity23,
{
style: [
styles43.btn_con,
{
backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR
},
this.isViewDisable() && {
backgroundColor: btnTheme?.ACTIVE_BG_COLOR
}
],
onPress: () => {
const item = this.state.item;
if (!item) {
return;
}
this.props.onListItemClick(
this.props.payload.template_type,
{
title: item?.title,
payload: item?.value,
type: "postback"
}
);
}
},
/* @__PURE__ */ React59.createElement(
Text36,
{
style: {
color: this.isViewDisable() ? btnTheme?.INACTIVE_TXT_COLOR : bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR,
fontSize: normalize(14)
}
},
"Submit"
)
))
));
}
};
var styles43 = StyleSheet41.create({
btn_text: {
padding: 10,
flex: 1,
color: Color_default.text_color,
fontSize: normalize(14)
},
btn_main: { marginTop: 10, marginBottom: 5 },
btn_con: {
padding: 12,
borderRadius: 8,
alignItems: "center"
},
calendar: {
backgroundColor: Color_default.white,
width: windowWidth16 / 4 * 3,
height: normalize(45),
borderRadius: normalize(8),
borderWidth: StyleSheet41.hairlineWidth,
borderColor: Color_default.black,
marginTop: normalize(5),
marginBottom: normalize(5),
justifyContent: "center"
//marginHorizontal: normalize(10),
},
calendar1: {
flexDirection: "row",
justifyContent: "center",
alignItems: "center"
},
single_item: {
//padding: 10,
height: normalize(45),
backgroundColor: Color_default.white,
width: windowWidth16 / 4 * 3,
alignItems: "flex-start",
justifyContent: "center",
//marginBottom: 10,
paddingHorizontal: 10
},
line: {
height: StyleSheet41.hairlineWidth,
width: "100%",
backgroundColor: Color_default.sub_text_color
}
});
// bot-sdk/templates/FeedbackTemplate.tsx
init_esm_shims();
import * as React61 from "react";
import {
Dimensions as Dimensions23,
StyleSheet as StyleSheet43,
Text as Text37,
TouchableOpacity as TouchableOpacity25,
View as View49
} from "react-native";
import Svg11, { Path as Path10 } from "react-native-svg";
// bot-sdk/components/CustomRatingBar.tsx
init_esm_shims();
import React60, { useState as useState2 } from "react";
import { View as View48, TouchableOpacity as TouchableOpacity24, StyleSheet as StyleSheet42 } from "react-native";
var CustomRatingBar = ({
initialRating = 0,
direction = "horizontal",
allowHalfRating = false,
itemCount = 5,
itemPadding = 4,
itemBuilder,
ratingElement,
onRatingUpdate
}) => {
const [currentRating, setCurrentRating] = useState2(initialRating);
const handlePress = (index) => {
const newRating = index + 1;
setCurrentRating(newRating);
onRatingUpdate?.(newRating);
};
const renderRatingItem = (index) => {
if (itemBuilder) {
return /* @__PURE__ */ React60.createElement(
TouchableOpacity24,
{
key: index,
onPress: () => handlePress(index),
style: [styles44.itemContainer, { padding: itemPadding }]
},
itemBuilder(index)
);
}
if (ratingElement) {
const isSelected = index < currentRating;
const isHalfSelected = allowHalfRating && index + 0.5 === currentRating;
let element = ratingElement.empty;
if (isSelected) {
element = ratingElement.full;
} else if (isHalfSelected) {
element = ratingElement.half;
}
return /* @__PURE__ */ React60.createElement(
TouchableOpacity24,
{
key: index,
onPress: () => handlePress(index),
style: [styles44.itemContainer, { padding: itemPadding }]
},
element
);
}
return null;
};
return /* @__PURE__ */ React60.createElement(
View48,
{
style: [
styles44.container,
direction === "vertical" ? styles44.vertical : styles44.horizontal
]
},
Array.from({ length: itemCount }, (_, index) => renderRatingItem(index))
);
};
var styles44 = StyleSheet42.create({
container: {
alignItems: "center"
},
horizontal: {
flexDirection: "row"
},
vertical: {
flexDirection: "column"
},
itemContainer: {
alignItems: "center",
justifyContent: "center"
}
});
// bot-sdk/templates/FeedbackTemplate.tsx
var windowWidth17 = Dimensions23.get("window").width;
var width4 = windowWidth17 * 0.8;
var FeedbackTypes = {
star: "star",
CSAT: "CSAT",
NPS: "NPS",
THUMBS_UP_DOWN: "ThumbsUpDown"
};
var ThumbsUpDown = [
{
icon: "Like",
bg: "#E2FBE8",
color: "#16A34A"
},
{
icon: "Unlike",
bg: "#FCF2F2",
color: "#DC2626"
}
];
var FeedbackTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
rating: 0,
selectedThumbIndex: -1
};
if (this.props.onBottomSheetClose) {
width4 = windowWidth17 * 0.9;
} else {
width4 = windowWidth17 * 0.8;
}
}
// SVG Star Components
renderFullStar = (size, color) => /* @__PURE__ */ React61.createElement(Svg11, { width: size, height: size, viewBox: "0 0 24 24" }, /* @__PURE__ */ React61.createElement(
Path10,
{
d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
fill: color
}
));
renderHalfStar = (size, color) => /* @__PURE__ */ React61.createElement(Svg11, { width: size, height: size, viewBox: "0 0 24 24" }, /* @__PURE__ */ React61.createElement(
Path10,
{
d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
fill: "none",
stroke: color,
strokeWidth: "2"
}
), /* @__PURE__ */ React61.createElement(
Path10,
{
d: "M12 2v15.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
fill: color
}
));
renderEmptyStar = (size, color) => /* @__PURE__ */ React61.createElement(Svg11, { width: size, height: size, viewBox: "0 0 24 24" }, /* @__PURE__ */ React61.createElement(
Path10,
{
d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z",
fill: "none",
stroke: color,
strokeWidth: "2"
}
));
// SVG Emoji Components
renderSadFace = (size, color) => /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: size, color } }, "\u{1F61E}");
renderNeutralFace = (size, color) => /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: size, color } }, "\u{1F610}");
renderHappyFace = (size, color) => /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: size, color } }, "\u{1F60A}");
renderFeedbackView = (viewType) => {
switch (viewType) {
case FeedbackTypes.star:
return this.renderStarViewFeedback();
case FeedbackTypes.CSAT:
return this.renderEmojiViewFeedback();
case FeedbackTypes.THUMBS_UP_DOWN:
return this.renderThumbsUpDownFeedback();
default:
return this.renderPendingFeedback(viewType);
}
};
renderPendingFeedback = (viewType) => {
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React61.createElement(
View49,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles45.container, { width: width4, borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || Color_default.black }]
},
this.props.payload?.text && /* @__PURE__ */ React61.createElement(Text37, { style: styles45.title }, this.props.payload?.text),
/* @__PURE__ */ React61.createElement(View49, { style: { marginTop: 10, marginBottom: 10 } }, /* @__PURE__ */ React61.createElement(View49, null, /* @__PURE__ */ React61.createElement(Text37, null, 'The feedback template view type "' + viewType + '" is pending')))
);
};
renderEmojiViewFeedback = () => {
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React61.createElement(
View49,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles45.container, { width: width4, borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || Color_default.black }]
},
/* @__PURE__ */ React61.createElement(Text37, { style: styles45.title }, this.props.payload?.text),
/* @__PURE__ */ React61.createElement(View49, { style: { marginTop: 10, marginBottom: 10 } }, /* @__PURE__ */ React61.createElement(
CustomRatingBar,
{
initialRating: 0,
itemCount: 5,
itemPadding: 4,
itemBuilder: (index) => {
switch (index) {
case 0:
return /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: 40 } }, "\u{1F621}");
case 1:
return /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: 40 } }, "\u{1F61E}");
case 2:
return /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: 40 } }, "\u{1F610}");
case 3:
return /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: 40 } }, "\u{1F60A}");
case 4:
return /* @__PURE__ */ React61.createElement(Text37, { style: { fontSize: 40 } }, "\u{1F60D}");
default:
return /* @__PURE__ */ React61.createElement(View49, null);
}
},
onRatingUpdate: (value) => {
let starObjArray = this.props.payload?.starArrays.filter(
(obj) => obj?.starId === value
);
let startObj = starObjArray?.[0] || null;
if (startObj && startObj?.value) {
if (this.props.onListItemClick) {
setTimeout(() => {
this.props.onListItemClick(
this.props.payload.template_type,
{
title: startObj?.value + "",
type: "postback"
}
);
}, 1e3);
}
if (this.props.onBottomSheetClose) {
this.props.onBottomSheetClose();
}
}
}
}
))
);
};
renderStarViewFeedback = () => {
const bubbleTheme = getBubbleTheme(this.props?.theme);
let paddingHorizontal = this.props.onBottomSheetClose ? normalize(35) : normalize(25);
return /* @__PURE__ */ React61.createElement(
View49,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles45.container, { width: width4, borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || Color_default.black }]
},
/* @__PURE__ */ React61.createElement(Text37, { style: styles45.title }, this.props.payload?.text),
/* @__PURE__ */ React61.createElement(View49, { style: [styles45.rating_container, { paddingHorizontal }] }, /* @__PURE__ */ React61.createElement(
CustomRatingBar,
{
initialRating: 0,
direction: "horizontal",
allowHalfRating: false,
itemCount: 5,
itemPadding: 4,
ratingElement: {
full: this.renderFullStar(40, "#F59E0B"),
half: this.renderHalfStar(40, "#F59E0B"),
empty: this.renderEmptyStar(40, "#a7b0be")
},
onRatingUpdate: (value) => {
let starObjArray = this.props.payload?.starArrays.filter(
(obj) => obj?.starId === value
);
let startObj = starObjArray?.[0] || null;
if (startObj && startObj?.value) {
if (this.props.onListItemClick) {
setTimeout(() => {
this.props.onListItemClick(
this.props.payload.template_type,
{
title: startObj?.value + "",
type: "postback"
}
);
}, 1e3);
}
if (this.props.onBottomSheetClose) {
this.props.onBottomSheetClose();
}
}
}
}
))
);
};
renderThumbsUpDownFeedback = () => {
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React61.createElement(
View49,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles45.container, { width: width4, borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || Color_default.black }]
},
/* @__PURE__ */ React61.createElement(Text37, { style: [styles45.title1, {}] }, this.props.payload?.text),
/* @__PURE__ */ React61.createElement(View49, { style: styles45.thumb_main }, this.props.payload?.thumpsUpDownArrays.map(
(item, index) => {
const isLiked = this.state.selectedThumbIndex === index;
return /* @__PURE__ */ React61.createElement(
TouchableOpacity25,
{
onPress: () => {
this.setState({ selectedThumbIndex: index });
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
title: item?.value + "",
type: "postback",
...item
}
);
}
if (this.props.onBottomSheetClose) {
this.props.onBottomSheetClose();
}
},
style: styles45.thumb_item_main
},
/* @__PURE__ */ React61.createElement(
View49,
{
style: [
styles45.thumb_item,
{ backgroundColor: isLiked ? ThumbsUpDown[index % 2].color : ThumbsUpDown[index % 2].bg }
]
},
/* @__PURE__ */ React61.createElement(
SvgIcon,
{
name: ThumbsUpDown[index % 2].icon,
width: normalize(22),
height: normalize(22),
color: isLiked ? "#ffffff" : ThumbsUpDown[index % 2].color
}
),
/* @__PURE__ */ React61.createElement(
Text37,
{
style: [
styles45.thumb_text,
{ color: isLiked ? "#ffffff" : ThumbsUpDown[index % 2].color }
]
},
item?.reviewText
)
)
);
}
))
);
};
render() {
let viewType = this.props.payload?.view;
return /* @__PURE__ */ React61.createElement(View49, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.renderFeedbackView(viewType));
}
};
var styles45 = StyleSheet43.create({
thumb_text: {
fontSize: normalize(12),
marginLeft: 2,
fontFamily: "inter"
},
thumb_item: {
padding: 10,
margin: 7,
flexDirection: "row",
borderRadius: 5,
alignItems: "center",
justifyContent: "center",
flex: 1
},
thumb_item_main: {
flexShrink: 1,
alignItems: "center",
justifyContent: "center"
},
thumb_main: {
marginTop: 10,
marginBottom: 10,
flexDirection: "row"
},
rating_container: {
flexShrink: 1,
marginTop: normalize(10),
paddingVertical: normalize(10),
borderRadius: 6,
alignSelf: "center",
backgroundColor: "#EEF2F6"
},
title: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
color: Color_default.text_color,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontWeight: "800"
},
title1: {
color: Color_default.text_color,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontWeight: "500",
fontSize: TEMPLATE_STYLE_VALUES.SUB_TEXT_SIZE
},
container: {
marginBottom: 10,
padding: 10,
borderRadius: 6,
borderWidth: StyleSheet43.hairlineWidth
// borderColor removed - will be applied dynamically
}
});
// bot-sdk/templates/FormTemplate.tsx
init_esm_shims();
import * as React62 from "react";
import {
Dimensions as Dimensions24,
StyleSheet as StyleSheet44,
Text as Text38,
TextInput,
TouchableOpacity as TouchableOpacity26,
View as View50
} from "react-native";
var windowWidth18 = Dimensions24.get("window").width;
var FormTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
inputText: void 0
};
}
renderFormFields = (formFields) => {
if (!formFields || formFields?.length === 0) {
return /* @__PURE__ */ React62.createElement(React62.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
const Wrapper = this.state.inputText ? TouchableOpacity26 : View50;
return /* @__PURE__ */ React62.createElement(View50, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, formFields.map((form) => {
return /* @__PURE__ */ React62.createElement(View50, null, /* @__PURE__ */ React62.createElement(Text38, { style: styles46.lable }, form?.label), /* @__PURE__ */ React62.createElement(
TextInput,
{
editable: !this.isViewDisable(),
maxLength: 50,
numberOfLines: 1,
textContentType: form?.type === "text" ? "none" : "password",
secureTextEntry: form?.type !== "text",
autoCorrect: false,
style: [styles46.input, {}],
placeholder: form?.placeholder,
placeholderTextColor: "#e4e5eb",
autoCapitalize: "none",
onChangeText: (text) => {
if (text?.trim().length === 0) {
this.setState({
inputText: void 0
});
} else {
this.setState({
inputText: text
});
}
}
}
), form?.fieldButton && /* @__PURE__ */ React62.createElement(
Wrapper,
{
onPress: () => {
if (!this.state?.inputText) {
return;
}
let title = "";
const length = this.state?.inputText?.length || 0;
for (let i = 0; i < length; i++) {
title = title + "*";
}
if (form?.type === "text") {
title = this.state?.inputText;
}
this.props.onListItemClick(
this.props.payload.template_type,
{
title,
payload: this.state?.inputText,
type: "postback"
}
);
},
style: [
styles46.button,
{
backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR || Color_default.button_blue
}
]
},
/* @__PURE__ */ React62.createElement(Text38, { style: { color: bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR || Color_default.white } }, form?.fieldButton?.title)
));
}));
};
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
return this.props?.payload?.formFields ? /* @__PURE__ */ React62.createElement(
View50,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles46.container, { backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR || "#e4e5eb" }]
},
/* @__PURE__ */ React62.createElement(Text38, { style: styles46.heading }, this.props?.payload?.heading),
this.renderFormFields(this.props?.payload?.formFields)
) : /* @__PURE__ */ React62.createElement(React62.Fragment, null);
}
};
var styles46 = StyleSheet44.create({
button: {
marginHorizontal: 10,
marginBottom: 15,
padding: 10,
borderRadius: 5,
justifyContent: "center",
alignItems: "center"
},
lable: {
paddingHorizontal: 10,
marginTop: 0,
color: Color_default.black,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
letterSpacing: 0.2,
marginBottom: 3
},
heading: {
color: Color_default.black,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "500",
padding: 10,
letterSpacing: 0.2,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
container: {
marginEnd: 10,
borderRadius: 5,
width: windowWidth18 / 4 * 3
},
input: {
height: 40,
borderColor: Color_default.gray,
borderWidth: 1,
backgroundColor: Color_default.white,
paddingLeft: 8,
marginBottom: 15,
borderRadius: 5,
letterSpacing: 0.2,
marginHorizontal: 10
}
});
// bot-sdk/templates/ClockTemplate.tsx
init_esm_shims();
import * as React63 from "react";
import { View as View51, Text as Text39, TouchableOpacity as TouchableOpacity27, StyleSheet as StyleSheet45 } from "react-native";
var ClockTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
isShowTime: false
};
}
componentDidMount() {
setTimeout(() => {
if (!this.isViewDisable()) {
this.setState({
isShowTime: true
});
}
}, 1e3);
}
handleConfirm = (date) => {
const time = this.getCurrentTime(date);
this.setState(
{
isShowTime: false,
isClickCancel: false
},
() => {
setTimeout(() => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
{
title: time,
type: "postback"
}
);
}
}, 500);
}
);
};
getCurrentTime = (date) => {
return date.toLocaleTimeString("en-US", {
hour: "2-digit",
minute: "2-digit",
hour12: true
});
};
handleCancel = () => {
this.setState({
isShowTime: false,
isClickCancel: true
});
};
render() {
const btheme = getButtonTheme(this.props?.theme);
return /* @__PURE__ */ React63.createElement(View51, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, this.props.payload && /* @__PURE__ */ React63.createElement(View51, null, this.props.payload?.title && /* @__PURE__ */ React63.createElement(
BotText,
{
text: this.props.payload?.title?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), this.state.isClickCancel && /* @__PURE__ */ React63.createElement(View51, null, /* @__PURE__ */ React63.createElement(
TouchableOpacity27,
{
disabled: this.isViewDisable(),
style: [
styles47.btn_main,
this.isViewDisable() && {
backgroundColor: btheme?.INACTIVE_BG_COLOR
}
],
onPress: () => {
this.setState({
isShowTime: true
});
}
},
/* @__PURE__ */ React63.createElement(
Text39,
{
style: [
{ padding: 8 },
{
color: this.isViewDisable() ? btheme?.INACTIVE_TXT_COLOR : Color_default.white,
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
}
]
},
"Open clock"
)
)), /* @__PURE__ */ React63.createElement(
CustomDateTimePickerModal_default,
{
isVisible: this.state.isShowTime,
mode: "time",
date: /* @__PURE__ */ new Date(),
onConfirm: this.handleConfirm,
onCancel: this.handleCancel,
is24Hour: false
}
)));
}
};
var styles47 = StyleSheet45.create({
btn_main: {
backgroundColor: Color_default.button_blue,
width: normalize(100),
alignItems: "center",
borderRadius: 5
}
});
// bot-sdk/templates/ListWidgetTemplate.tsx
init_esm_shims();
import * as React65 from "react";
import {
View as View53,
Text as Text41,
Dimensions as Dimensions25,
StyleSheet as StyleSheet47,
ImageBackground as ImageBackground5,
TouchableOpacity as TouchableOpacity29
} from "react-native";
import FastImage9 from "react-native-fast-image";
// bot-sdk/components/ListWidgetButtonsView.tsx
init_esm_shims();
import React64 from "react";
import { StyleSheet as StyleSheet46, Text as Text40, TouchableOpacity as TouchableOpacity28, View as View52, Modal as Modal6 } from "react-native";
var ListWidgetButtonsView = class extends React64.Component {
constructor(props) {
super(props);
this.state = {
showBtnPopover: false
};
}
renderButtonsView = (buttonsLayout, buttons) => {
if (!buttons || buttons?.length === 0) {
return /* @__PURE__ */ React64.createElement(React64.Fragment, null);
}
const limitCount = buttonsLayout?.displayLimit?.count;
let dButtons = buttons.slice(0, limitCount || buttons?.length);
const bStyle = buttonsLayout?.style || "float";
const lCount = limitCount ? limitCount : 0;
if (buttons?.length > lCount) {
dButtons = [
...dButtons,
{
isMoreButton: true
}
];
}
return /* @__PURE__ */ React64.createElement(
View52,
{
style: [
{ marginBottom: 5 },
bStyle !== "fitToWidth" && styles48.btn_main2
]
},
dButtons.map((btn, index) => {
return /* @__PURE__ */ React64.createElement(
View52,
{
style: [bStyle !== "fitToWidth" && { marginEnd: 10 }],
key: index + "_" + index
},
btn?.isMoreButton ? this.renderMoreButton(buttons, index) : this.renderButtonView(btn)
);
})
);
};
renderMoreButton = (buttons, index) => {
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React64.createElement(React64.Fragment, null, /* @__PURE__ */ React64.createElement(
TouchableOpacity28,
{
style: [styles48.popover_main],
onPress: () => {
this.setState({
showBtnPopover: true
});
}
},
/* @__PURE__ */ React64.createElement(
Text40,
{
style: [
styles48.more_text,
{
color: bubbleTheme.BUBBLE_RIGHT_BG_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
"...More"
)
), /* @__PURE__ */ React64.createElement(
Modal6,
{
visible: this.state.showBtnPopover,
transparent: true,
onRequestClose: () => {
this.setState({
showBtnPopover: false
});
}
},
/* @__PURE__ */ React64.createElement(
TouchableOpacity28,
{
style: styles48.modalBackdrop,
onPress: () => {
this.setState({
showBtnPopover: false
});
},
activeOpacity: 1
},
/* @__PURE__ */ React64.createElement(View52, { style: styles48.modalContent }, buttons.map((btn, index2) => {
return /* @__PURE__ */ React64.createElement(View52, { style: {}, key: index2 + "_" + index2 }, this.renderButtonView(btn, () => {
this.setState({
showBtnPopover: false
});
}));
}))
)
));
};
renderButtonView = (btn, onBtnPress) => {
if (!btn) {
return /* @__PURE__ */ React64.createElement(React64.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React64.createElement(
TouchableOpacity28,
{
onPress: () => {
onBtnPress?.();
if (!btn?.isMoreButton) {
this.props.onListItemClick(
this.props.payload?.template_type.trim(),
btn
);
}
},
style: styles48.btn_sub
},
/* @__PURE__ */ React64.createElement(View52, { style: styles48.btn_sub2 }, /* @__PURE__ */ React64.createElement(View52, { style: { marginRight: 5 } }, /* @__PURE__ */ React64.createElement(
RenderImage_default,
{
image: btn?.image?.image_src,
width: 15,
height: 15
}
)), /* @__PURE__ */ React64.createElement(
Text40,
{
style: [
styles48.btn_title,
{
color: bubbleTheme.BUBBLE_RIGHT_BG_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
btn?.title || btn?.text
))
);
};
render() {
return this.renderButtonsView(this.props.buttonsLayout, this.props.buttons);
}
};
var styles48 = StyleSheet46.create({
btn_title: {
color: "#4741fa",
fontSize: normalize(13)
},
btn_sub2: { flexDirection: "row", alignSelf: "center" },
btn_sub: {
padding: 10,
borderRadius: 5,
backgroundColor: "rgba(71, 65, 250, 0.13)",
// flexShrink: 1,
marginBottom: 10
//marginEnd: 10,
},
btn_main: {
marginTop: 5,
padding: 10,
minWidth: normalize(150)
// justifyContent: 'center',
//alignItems: 'center',
},
more_text: {
color: "#4741fa",
//flexShrink: 1,
fontSize: normalize(13)
},
btn_main2: {
flexDirection: "row",
flexShrink: 1,
flexWrap: "wrap"
},
opt_title_con: { padding: 10, margin: 10 },
popover_main: {
paddingLeft: 15,
paddingTop: 10,
//paddingBottom: 10,
marginRight: -5,
//backgroundColor: 'yellow',
padding: 10,
borderRadius: 5,
backgroundColor: "rgba(71, 65, 250, 0.13)",
minWidth: normalize(60),
marginBottom: 10,
alignItems: "center"
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch",
margin: 0
},
value_image: {
height: normalize(22),
width: normalize(22),
resizeMode: "stretch",
borderRadius: 3,
margin: 0
},
btn_image: {
height: normalize(15),
width: normalize(15),
resizeMode: "stretch",
borderRadius: 3,
margin: 0
},
image_view: {
// justifyContent: 'center',
// alignItems: 'center',
// marginTop: 10,
//alignSelf: 'center',
height: normalize(55),
width: normalize(55)
},
modalBackdrop: {
flex: 1,
backgroundColor: "rgba(0,0,0,0.3)",
justifyContent: "center",
alignItems: "center"
},
modalContent: {
backgroundColor: "white",
margin: 20,
borderRadius: 8,
padding: 10,
maxHeight: "70%"
}
});
// bot-sdk/templates/ListWidgetTemplate.tsx
var windowWidth19 = Dimensions25.get("window").width;
var ValueTypes = {
BUTTON: "button",
MENU: "menu",
TEXT: "text",
URL: "url",
IMAGE: "image"
};
var ListWidgetTemplate = class extends BaseView_default {
placeholderImage;
btheme;
popoverRef;
constructor(props) {
super(props);
this.state = {
showPopover: false,
showBtnPopover: false
};
this.btheme = getButtonTheme(this.props?.theme);
this.placeholderImage = placeholder.image;
}
renderValueTypeComponent = (value, index, buttonsLayout) => {
if (!value || !value?.type) {
return /* @__PURE__ */ React65.createElement(React65.Fragment, null);
}
const type = value?.type;
switch (type) {
case ValueTypes.BUTTON:
return /* @__PURE__ */ React65.createElement(View53, null, /* @__PURE__ */ React65.createElement(TouchableOpacity29, { style: styles49.values_btn_main }, /* @__PURE__ */ React65.createElement(
Text41,
{
style: [
styles49.values_btn_title,
{
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
value?.title || value?.text
)));
case ValueTypes.MENU:
if (buttonsLayout) {
buttonsLayout = {
...buttonsLayout,
displayLimit: {
count: value?.menu.length
}
};
}
return /* @__PURE__ */ React65.createElement(
LazyPopover_default,
{
key: index + " " + index,
ref: (ref) => this.popoverRef = ref,
onRequestClose: () => {
this.setState({
showPopover: false
});
},
isVisible: this.state.showPopover,
from: /* @__PURE__ */ React65.createElement(
TouchableOpacity29,
{
style: styles49.popover_main,
onPress: () => {
this.setState({
showPopover: true
});
}
},
/* @__PURE__ */ React65.createElement(
SvgIcon,
{
name: "ThreeDots",
width: normalize(18),
height: normalize(18)
}
)
)
},
/* @__PURE__ */ React65.createElement(View53, { style: { margin: 10 } }, /* @__PURE__ */ React65.createElement(
ListWidgetButtonsView,
{
buttonsLayout,
buttons: value?.menu,
theme: this.props.theme,
payload: this.props.payload,
onListItemClick: this.props.onListItemClick
}
))
);
case ValueTypes.TEXT:
return /* @__PURE__ */ React65.createElement(View53, null, /* @__PURE__ */ React65.createElement(
Text41,
{
style: {
color: Color_default.text_color,
fontSize: normalize(13),
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
},
value?.title || value?.text
));
case ValueTypes.URL:
return /* @__PURE__ */ React65.createElement(View53, null, /* @__PURE__ */ React65.createElement(TouchableOpacity29, { style: styles49.url_main }, /* @__PURE__ */ React65.createElement(
Text41,
{
style: [
styles49.url_text,
{
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
value?.title || value?.text
)));
case ValueTypes.IMAGE:
return /* @__PURE__ */ React65.createElement(View53, null, /* @__PURE__ */ React65.createElement(
FastImage9,
{
source: { uri: value?.image?.image_src },
style: styles49.value_image,
onError: this.handleImageError
}
));
}
return /* @__PURE__ */ React65.createElement(React65.Fragment, null);
};
handleImageError = () => {
};
renderDetailsView = (details) => {
if (!details || details?.length === 0) {
return /* @__PURE__ */ React65.createElement(React65.Fragment, null);
}
return /* @__PURE__ */ React65.createElement(View53, { style: { marginTop: 5, marginBottom: 5 } }, details?.map((item, _index) => {
return /* @__PURE__ */ React65.createElement(View53, { style: { flexDirection: "row", marginBottom: 10 } }, /* @__PURE__ */ React65.createElement(View53, { style: { marginRight: 5 } }, /* @__PURE__ */ React65.createElement(
FastImage9,
{
source: { uri: item?.image?.image_src },
style: styles49.value_image,
onError: this.handleImageError
}
)), /* @__PURE__ */ React65.createElement(
Text41,
{
style: {
color: this.btheme?.ACTIVE_TXT_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter",
fontSize: normalize(12),
flexShrink: 1
}
},
item?.description
));
}));
};
renderElements = (elements) => {
if (!elements || elements?.length === 0) {
return /* @__PURE__ */ React65.createElement(React65.Fragment, null);
}
return /* @__PURE__ */ React65.createElement(View53, null, elements?.map((item, index) => {
return /* @__PURE__ */ React65.createElement(View53, { key: index + "__" }, /* @__PURE__ */ React65.createElement(View53, { style: styles49.ele_main }), /* @__PURE__ */ React65.createElement(View53, { style: { flexDirection: "row" } }, item?.image?.image_src && /* @__PURE__ */ React65.createElement(View53, { style: { marginRight: 10 } }, /* @__PURE__ */ React65.createElement(
ImageBackground5,
{
style: styles49.image_view,
source: this.placeholderImage
},
/* @__PURE__ */ React65.createElement(
FastImage9,
{
source: { uri: item?.image?.image_src },
style: styles49.image,
onError: this.handleImageError
}
)
)), /* @__PURE__ */ React65.createElement(
View53,
{
style: [
styles49.title_main,
item?.value?.layout?.align && {
alignItems: item?.value?.layout?.align
}
]
},
/* @__PURE__ */ React65.createElement(
Text41,
{
style: [
{
color: this.btheme?.ACTIVE_TXT_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter",
fontSize: normalize(16)
}
]
},
item?.title
),
/* @__PURE__ */ React65.createElement(
Text41,
{
style: [
{
color: this.btheme?.ACTIVE_TXT_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter",
fontSize: normalize(14)
}
]
},
item?.subtitle
)
), this.renderValueTypeComponent(
item?.value,
index,
item?.buttonsLayout
)), this.renderDetailsView(item?.details), item?.buttons && /* @__PURE__ */ React65.createElement(
ListWidgetButtonsView,
{
buttonsLayout: item?.buttonsLayout,
buttons: item?.buttons,
theme: this.props.theme,
payload: this.props.payload,
onListItemClick: this.props.onListItemClick
}
));
}));
};
render() {
return /* @__PURE__ */ React65.createElement(
View53,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: styles49.mainContainer
},
/* @__PURE__ */ React65.createElement(View53, { style: { marginBottom: 5 } }, this.props.payload?.title && /* @__PURE__ */ React65.createElement(
Text41,
{
style: [
styles49.main_title,
{
color: this.btheme?.ACTIVE_TXT_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter"
}
]
},
this.props.payload?.title
), this.props.payload?.description && /* @__PURE__ */ React65.createElement(
Text41,
{
style: [
{
color: this.btheme?.ACTIVE_TXT_COLOR,
fontFamily: this.props.theme?.v3?.body?.font?.family || "Inter",
fontSize: normalize(14)
}
]
},
this.props.payload?.description
)),
this.renderElements(this.props.payload?.elements)
);
}
};
var styles49 = StyleSheet47.create({
main_title: {
fontSize: normalize(17),
fontWeight: "bold",
letterSpacing: 0.1
},
title_main: { marginRight: 10, flex: 1, marginBottom: 10 },
ele_main: {
backgroundColor: "#A7A9BE",
width: "100%",
height: 1,
marginTop: 5,
marginBottom: 10
},
url_text: {
color: "#4741fa",
fontSize: normalize(11),
textDecorationLine: "underline"
},
url_main: {
paddingBottom: 15,
paddingLeft: 10,
borderRadius: 5
},
menu_image_main: {
marginRight: 5,
justifyContent: "center",
alignItems: "center"
},
menu_main: {
flexDirection: "row",
justifyContent: "center",
alignItems: "center"
},
values_btn_title: {
color: "#4741fa",
fontSize: normalize(13)
},
values_btn_main: {
padding: 5,
borderRadius: 5,
backgroundColor: "rgba(71, 65, 250, 0.13)"
},
popover_main: {
paddingLeft: 15,
paddingTop: 10,
//paddingBottom: 10,
marginRight: -5
//backgroundColor: 'yellow',
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch",
margin: 0
},
value_image: {
height: normalize(22),
width: normalize(22),
resizeMode: "stretch",
borderRadius: 3,
margin: 0
},
btn_image: {
height: normalize(15),
width: normalize(15),
resizeMode: "stretch",
borderRadius: 3,
margin: 0
},
image_view: {
// justifyContent: 'center',
// alignItems: 'center',
// marginTop: 10,
//alignSelf: 'center',
height: normalize(55),
width: normalize(55)
},
mainContainer: {
flexDirection: "column",
backgroundColor: "transparent",
width: windowWidth19 / 4 * 3.2,
borderRadius: 10,
borderWidth: StyleSheet47.hairlineWidth,
padding: 10,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR
}
});
// bot-sdk/templates/AudioTemplate.tsx
init_esm_shims();
import React67 from "react";
import { Dimensions as Dimensions26, StyleSheet as StyleSheet49, View as View55 } from "react-native";
// bot-sdk/components/AudioPlayer.tsx
init_esm_shims();
import React66, { useEffect, useState as useState3, useRef } from "react";
import { View as View54, Text as Text42, TouchableOpacity as TouchableOpacity30, StyleSheet as StyleSheet48, Modal as Modal7, ActivityIndicator as ActivityIndicator3 } from "react-native";
import RNFS from "react-native-fs";
import Toast from "react-native-toast-message";
var AudioPlayer = ({ audioUrl }) => {
const { createSound, isLoading: soundLoading, loadError } = useLazySound();
const [isPlaying, setIsPlaying] = useState3(false);
const [duration, setDuration] = useState3(0);
const [position, setPosition] = useState3(0);
const [showMenu, setShowMenu] = useState3(false);
const [soundReady, setSoundReady] = useState3(false);
const soundRef = useRef(null);
const intervalRef = useRef(null);
useEffect(() => {
loadSound();
return () => {
releaseSound();
if (intervalRef.current) {
clearInterval(intervalRef.current);
}
};
}, [audioUrl]);
useEffect(() => {
return () => {
releaseSound();
if (intervalRef.current) {
clearInterval(intervalRef.current);
}
};
}, []);
const loadSound = async () => {
try {
setSoundReady(false);
setPosition(0);
setDuration(0);
const sound = await createSound(audioUrl, "", (error) => {
if (error) {
console.log("Failed to load sound", error);
Toast.show({
type: "error",
text1: "Audio Error",
text2: "Failed to load audio file"
});
return;
}
if (sound) {
setDuration(sound.getDuration() || 0);
setSoundReady(true);
}
});
soundRef.current = sound;
} catch (error) {
console.error("Error loading sound with lazy loading:", error);
Toast.show({
type: "error",
text1: "Audio Unavailable",
text2: "Sound module could not be loaded"
});
}
};
const releaseSound = () => {
if (soundRef.current) {
soundRef.current.release();
soundRef.current = null;
}
setSoundReady(false);
setIsPlaying(false);
if (intervalRef.current) {
clearInterval(intervalRef.current);
intervalRef.current = null;
}
};
const togglePlayPause = () => {
if (!soundRef.current || !soundReady) {
Toast.show({
type: "warning",
text1: "Audio Not Ready",
text2: "Please wait for audio to load"
});
return;
}
if (isPlaying) {
soundRef.current.pause(() => {
setIsPlaying(false);
if (intervalRef.current) {
clearInterval(intervalRef.current);
intervalRef.current = null;
}
});
} else {
soundRef.current.play((success) => {
if (success) {
console.log("Playback finished");
} else {
console.log("Playback failed due to audio decoding errors");
Toast.show({
type: "error",
text1: "Playback Failed",
text2: "Could not play audio file"
});
}
setIsPlaying(false);
setPosition(0);
if (intervalRef.current) {
clearInterval(intervalRef.current);
intervalRef.current = null;
}
});
setIsPlaying(true);
startTimer();
}
};
const startTimer = () => {
intervalRef.current = setInterval(() => {
if (soundRef.current) {
soundRef.current.getCurrentTime((seconds) => {
setPosition(seconds);
});
}
}, 500);
};
const onSeek = (value) => {
if (soundRef.current) {
soundRef.current.setCurrentTime(value);
setPosition(value);
}
};
const downloadFile = async () => {
try {
const fileName = audioUrl.split("/").pop();
const destPath = `${RNFS.DocumentDirectoryPath}/${fileName}`;
const exists = await RNFS.exists(destPath);
if (exists) {
Toast.show({ type: "info", position: "bottom", text1: "Already downloaded", text2: destPath });
return;
}
await RNFS.downloadFile({
fromUrl: audioUrl,
toFile: destPath
}).promise;
Toast.show({ type: "success", position: "bottom", text1: "Downloaded", text2: destPath });
} catch (err) {
Toast.show({ type: "error", position: "bottom", text1: "Download failed!" });
}
};
const formatTime = (seconds) => {
const minutes = Math.floor(seconds / 60);
const secs = Math.floor(seconds % 60);
return `${minutes}:${secs < 10 ? "0" : ""}${secs}`;
};
const renderPopoverMenu = () => {
return /* @__PURE__ */ React66.createElement(
LazyPopover,
{
isVisible: showMenu,
onRequestClose: () => setShowMenu(false),
backgroundStyle: { backgroundColor: "rgba(0,0,0,0.1)" },
from: /* @__PURE__ */ React66.createElement(TouchableOpacity30, { onPress: () => setShowMenu(true) }, /* @__PURE__ */ React66.createElement(
SvgIcon,
{
name: "ThreeDots",
width: normalize(18),
height: normalize(18)
}
)),
fallbackComponent: () => /* @__PURE__ */ React66.createElement(React66.Fragment, null, /* @__PURE__ */ React66.createElement(TouchableOpacity30, { onPress: () => setShowMenu(true) }, /* @__PURE__ */ React66.createElement(
SvgIcon,
{
name: "ThreeDots",
width: normalize(18),
height: normalize(18)
}
)), showMenu && /* @__PURE__ */ React66.createElement(
Modal7,
{
visible: showMenu,
transparent: true,
onRequestClose: () => setShowMenu(false),
animationType: "fade"
},
/* @__PURE__ */ React66.createElement(
TouchableOpacity30,
{
style: styles50.modalBackdrop,
onPress: () => setShowMenu(false),
activeOpacity: 1
},
/* @__PURE__ */ React66.createElement(View54, { style: styles50.menuContainer }, /* @__PURE__ */ React66.createElement(
TouchableOpacity30,
{
style: styles50.menuItem,
onPress: () => {
setShowMenu(false);
downloadFile();
}
},
/* @__PURE__ */ React66.createElement(Text42, { style: styles50.menuItemText }, "Download")
))
)
))
},
/* @__PURE__ */ React66.createElement(
TouchableOpacity30,
{
style: styles50.menuItem,
onPress: () => {
setShowMenu(false);
downloadFile();
}
},
/* @__PURE__ */ React66.createElement(Text42, { style: styles50.menuItemText }, "Download")
)
);
};
if (soundLoading) {
return /* @__PURE__ */ React66.createElement(View54, { style: styles50.loadingContainer }, /* @__PURE__ */ React66.createElement(ActivityIndicator3, { size: "small", color: "#4ECDC4" }), /* @__PURE__ */ React66.createElement(Text42, { style: styles50.loadingText }, "Loading audio..."));
}
if (loadError) {
return /* @__PURE__ */ React66.createElement(View54, { style: styles50.errorContainer }, /* @__PURE__ */ React66.createElement(Text42, { style: styles50.errorText }, "Audio unavailable"), /* @__PURE__ */ React66.createElement(Text42, { style: styles50.errorSubText }, loadError));
}
return /* @__PURE__ */ React66.createElement(View54, { style: { flex: 1, padding: 4 } }, /* @__PURE__ */ React66.createElement(View54, { style: styles50.container }, /* @__PURE__ */ React66.createElement(
TouchableOpacity30,
{
onPress: togglePlayPause,
disabled: !soundReady || soundLoading,
style: [
styles50.playButton,
(!soundReady || soundLoading) && styles50.playButtonDisabled
]
},
soundLoading ? /* @__PURE__ */ React66.createElement(ActivityIndicator3, { size: "small", color: "#4ECDC4" }) : /* @__PURE__ */ React66.createElement(
SvgIcon,
{
name: isPlaying ? "Pause" : "Play",
width: normalize(22),
height: normalize(22),
color: soundReady ? void 0 : "#CCCCCC"
}
)
), /* @__PURE__ */ React66.createElement(Text42, { style: [styles50.timeText, !soundReady && styles50.textDisabled] }, formatTime(position), "/", formatTime(duration)), /* @__PURE__ */ React66.createElement(
LazySlider,
{
style: styles50.slider,
minimumValue: 0,
maximumValue: duration,
value: position,
onSlidingComplete: onSeek,
disabled: !soundReady,
minimumTrackTintColor: soundReady ? "#4ECDC4" : "#CCCCCC",
maximumTrackTintColor: "#E0E0E0"
}
), renderPopoverMenu()));
};
var styles50 = StyleSheet48.create({
container: {
padding: 16,
backgroundColor: "#fff",
borderRadius: 12,
elevation: 2,
flexDirection: "row",
alignItems: "center"
},
playButton: {
padding: 4
},
playButtonDisabled: {
opacity: 0.5
},
slider: {
flex: 1,
marginHorizontal: 8
},
timeText: {
marginVertical: 5,
marginHorizontal: 5,
fontSize: normalize(12),
color: "#000"
},
textDisabled: {
color: "#CCCCCC"
},
loadingContainer: {
padding: 16,
backgroundColor: "#fff",
borderRadius: 12,
elevation: 2,
flexDirection: "row",
alignItems: "center",
justifyContent: "center"
},
loadingText: {
marginLeft: 8,
fontSize: normalize(12),
color: "#666",
fontStyle: "italic"
},
errorContainer: {
padding: 16,
backgroundColor: "#ffebee",
borderRadius: 12,
elevation: 2,
alignItems: "center",
justifyContent: "center"
},
errorText: {
fontSize: normalize(14),
color: "#c62828",
fontWeight: "500",
textAlign: "center"
},
errorSubText: {
fontSize: normalize(12),
color: "#e57373",
textAlign: "center",
marginTop: 4
},
modalBackdrop: {
flex: 1,
backgroundColor: "rgba(0,0,0,0.3)",
justifyContent: "flex-end"
},
menuContainer: {
backgroundColor: "white",
margin: 20,
borderRadius: 8,
padding: 0
},
menuItem: {
paddingVertical: 12,
paddingHorizontal: 16
},
menuItemText: {
fontSize: normalize(14),
color: "#000"
}
});
var AudioPlayer_default = AudioPlayer;
// bot-sdk/templates/AudioTemplate.tsx
var windowWidth20 = Dimensions26.get("window").width;
var AudioTemplate = class extends BaseView_default {
intervalId;
constructor(props) {
super(props);
this.state = { isPlaying: false };
}
render() {
const url = this.props.payload?.audioUrl;
const bubbleTheme = getBubbleTheme(this.props.theme);
const isDisable = this.isViewDisable();
return /* @__PURE__ */ React67.createElement(View55, { pointerEvents: isDisable ? "none" : "auto" }, this.props.payload?.text && /* @__PURE__ */ React67.createElement(View55, { style: { marginBottom: 10 } }, /* @__PURE__ */ React67.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
)), url && /* @__PURE__ */ React67.createElement(View55, { style: [styles51.container] }, /* @__PURE__ */ React67.createElement(
AudioPlayer_default,
{
audioUrl: url
}
)));
}
};
var styles51 = StyleSheet49.create({
container: {
flexDirection: "row",
width: windowWidth20 * 0.8,
// iOS shadow
shadowColor: "#000",
shadowOffset: { width: 0, height: 1 },
shadowOpacity: 0.2,
shadowRadius: 2,
// Android shadow
elevation: 4
}
});
// bot-sdk/templates/VideoTemplate.tsx
init_esm_shims();
import * as React68 from "react";
import { createRef as createRef2 } from "react";
import {
Dimensions as Dimensions27,
Platform as Platform10,
StyleSheet as StyleSheet50,
View as View56
} from "react-native";
import Video from "react-native-video";
var WIDTH7 = Dimensions27.get("window").width;
var VideoTemplate = class extends BaseView_default {
videoRef = createRef2();
dur;
constructor(props) {
super(props);
this.state = {
myVideoRef: null,
duration: 0,
url: this.props?.payload?.videoUrl || "https://www.w3schools.com/html/mov_bbb.mp4",
currentTime: 0
};
}
componentDidUpdate(_prevProps, _snapshot) {
if (this.isViewDisable() && this.state.url) {
this.setState({ url: void 0 });
this.videoRef?.current?.seek?.(0);
}
}
onLoad = (data) => {
this.setState({ duration: data.duration });
this.dur = data.duration;
};
onProgress = (data) => {
this.setState({ currentTime: data.currentTime });
};
renderPlayerView = () => {
return /* @__PURE__ */ React68.createElement(View56, { pointerEvents: this.isViewDisable() ? "none" : "auto" }, /* @__PURE__ */ React68.createElement(
Video,
{
ref: this.videoRef,
source: { uri: this.state.url },
style: styles52.video,
controls: true,
resizeMode: "contain",
onLoad: this.onLoad,
onProgress: this.onProgress
}
));
};
render() {
return /* @__PURE__ */ React68.createElement(View56, null, this.props.payload && /* @__PURE__ */ React68.createElement(View56, null, this.props.payload?.text && /* @__PURE__ */ React68.createElement(
BotText,
{
text: this.props.payload?.text?.trim(),
isFilterApply: true,
isLastMsz: !this.isViewDisable(),
theme: this.props.theme
}
), this.renderPlayerView()));
}
};
var styles52 = StyleSheet50.create({
video: {
width: WIDTH7 / 4 * 3.2,
height: normalize(200),
marginTop: Platform10.OS === "ios" ? 30 : 0,
backgroundColor: "black"
},
timeText: {
marginTop: 8,
textAlign: "center",
color: "#fff",
fontSize: 14
}
});
// bot-sdk/templates/Attachemnts.tsx
init_esm_shims();
import * as React70 from "react";
import {
Text as Text43,
View as View57,
StyleSheet as StyleSheet51,
Dimensions as Dimensions28,
Platform as Platform11,
TouchableOpacity as TouchableOpacity31
} from "react-native";
// bot-sdk/utils/FileIcon.tsx
init_esm_shims();
import * as React69 from "react";
import Icon from "react-native-vector-icons/FontAwesome";
var iconMappings = {
txt: "file-text-o",
pdf: "file-pdf-o",
doc: "file-word-o",
docx: "file-word-o",
xls: "file-excel-o",
xlsx: "file-excel-o",
ppt: "file-powerpoint-o",
pptx: "file-powerpoint-o",
jpg: "file-image-o",
jpeg: "file-image-o",
png: "file-image-o",
gif: "file-image-o",
mp3: "file-audio-o",
mp4: "file-video-o",
avi: "file-video-o",
mov: "file-video-o",
zip: "file-zip-o",
rar: "file-zip-o",
default: "file-o"
// Default icon for unknown file types
};
var FileIcon = class extends React69.Component {
getColor = (fileType) => {
switch (fileType) {
case "txt":
return "#00f";
case "pdf":
return "#f00";
case "doc":
case "docx":
return "#6495ED";
case "xls":
case "xlsx":
return "#008000";
case "ppt":
case "pptx":
return "#FF4500";
case "jpg":
case "jpeg":
case "png":
case "gif":
return "#FFA500";
case "mp3":
return "#800080";
case "mp4":
case "avi":
case "mov":
return "#FFD700";
case "zip":
case "rar":
return "#808000";
default:
return "#000";
}
};
renderIcon = (fileType) => {
fileType = fileType?.toLowerCase?.()?.trim?.();
let size = this.props.size || 45;
const iconName = iconMappings[fileType] || iconMappings.default;
const color = this.getColor(fileType);
return /* @__PURE__ */ React69.createElement(Icon, { name: iconName, size: normalize(size), color });
};
render() {
return this.renderIcon(this.props.fileType);
}
};
// bot-sdk/templates/Attachemnts.tsx
var windowWidth21 = Dimensions28.get("window").width;
var FileViewer = null;
var RNFS2 = null;
var RNBlobUtil = null;
var loadNativeModules = () => {
if (FileViewer && RNFS2 && RNBlobUtil) {
return { FileViewer, RNFS: RNFS2, RNBlobUtil };
}
try {
FileViewer = __require("react-native-file-viewer").default;
RNFS2 = __require("react-native-fs").default;
RNBlobUtil = __require("react-native-blob-util").default;
return { FileViewer, RNFS: RNFS2, RNBlobUtil };
} catch (error) {
console.warn("File handling modules not available:", error);
return { FileViewer: null, RNFS: null, RNBlobUtil: null };
}
};
var imageFilesTypes = ["jpg", "jpeg", "png"];
var audioTypes = [
"aac",
"aiff",
"amr",
"flac",
"m4a",
"mp3",
"ogg",
"opus",
"pcm",
"wav",
"wma"
];
var videoTypes2 = [
"3g2",
"3gp",
"asf",
"avi",
"flv",
"m4v",
"mov",
"mp4",
"mpg",
"rm",
"srt",
"swf",
"vob",
"wmv"
];
var Attachements = class extends BaseView_default {
static contextType = ThemeContext;
static propTypes = {
payload: {},
onListItemClick: void 0,
onBottomSheetClose: void 0
};
nativeModules = null;
constructor(props) {
super(props);
this.nativeModules = loadNativeModules();
}
getFileType = (fileName) => {
if (!fileName) {
return "";
}
try {
let fileType = fileName?.slice?.(
fileName?.lastIndexOf(".") + 1,
fileName?.length
);
return fileType?.toLowerCase?.()?.trim?.();
} catch (error) {
}
return "";
};
getMediaView = (media, fileType) => {
if (!fileType) {
return /* @__PURE__ */ React70.createElement(React70.Fragment, null);
}
if (imageFilesTypes.includes(fileType)) {
return /* @__PURE__ */ React70.createElement(
TouchableOpacity31,
{
onPress: () => {
this.openFile(media?.uri);
}
},
renderImage({
image: media?.uri,
iconShape: null,
iconSize: null,
width: windowWidth21 / 4 * 3,
height: 200
})
);
}
if (videoTypes2.includes(fileType)) {
return /* @__PURE__ */ React70.createElement(
VideoTemplate,
{
payload: { videoUrl: media?.uri, isLastMessage: true },
theme: this.props.theme
}
);
}
if (audioTypes.includes(fileType)) {
return /* @__PURE__ */ React70.createElement(
AudioTemplate,
{
payload: { audioUrl: media?.uri, isLastMessage: true },
theme: this.props.theme
}
);
}
return /* @__PURE__ */ React70.createElement(
TouchableOpacity31,
{
onPress: () => {
this.handleOpenFile(media?.uri, fileType);
}
},
/* @__PURE__ */ React70.createElement(FileIcon, { fileType, size: 45 })
);
};
handleOpenFile = async (fileUri, fileType) => {
if (!this.nativeModules.RNBlobUtil || !this.nativeModules.RNFS) {
console.warn("File handling modules not available");
return;
}
try {
let localFilePath;
if (Platform11.OS === "android" && fileUri.startsWith("content://")) {
const blob = await this.nativeModules.RNBlobUtil.fs.readFile(fileUri, "base64");
let temp = (/* @__PURE__ */ new Date()).getTime() + "_file.";
const filePath = `${this.nativeModules.RNFS.DocumentDirectoryPath}/` + temp + fileType;
await this.nativeModules.RNFS.writeFile(filePath, blob, "base64");
localFilePath = filePath;
} else {
localFilePath = fileUri;
}
this.openFile(localFilePath);
} catch (error) {
}
};
openFile = (localFilePath) => {
if (!localFilePath || !this.nativeModules.FileViewer) {
console.warn("FileViewer not available or invalid file path");
return;
}
this.nativeModules.FileViewer.open(localFilePath, {
showOpenWithDialog: true,
showAppsSuggestions: true
}).then(() => {
}).catch((error) => {
console.log("Error opening the image:", error);
});
};
renderAttachment = (payload) => {
let attachments;
const bubbleTheme = getBubbleTheme(this.props?.theme);
console.log("\u{1F4CE} Attachments - Processing payload:", JSON.stringify(payload, null, 2));
let attachmentsList = null;
if (payload?.payload?.attachments && Array.isArray(payload.payload.attachments)) {
attachmentsList = payload.payload.attachments;
} else if (payload?.attachments && Array.isArray(payload.attachments)) {
attachmentsList = payload.attachments;
} else if (Array.isArray(payload)) {
attachmentsList = payload;
} else if (payload?.payload?.attachments === "attachments") {
console.log("\u{1F4CE} Attachments - Found attachment indicator but no actual attachment data");
return null;
}
console.log("\u{1F4CE} Attachments - Found attachments list:", JSON.stringify(attachmentsList, null, 2));
if (attachmentsList && Array.isArray(attachmentsList) && attachmentsList.length > 0) {
attachments = attachmentsList.map(
(media, index) => {
let fileType = this.getFileType(media?.fileName);
return /* @__PURE__ */ React70.createElement(
View57,
{
key: "att_" + index,
style: [
styles53.main,
{ borderColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR }
]
},
/* @__PURE__ */ React70.createElement(View57, { style: styles53.main1 }, this.getMediaView(media, fileType)),
/* @__PURE__ */ React70.createElement(
View57,
{
style: [
styles53.main2,
{ backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR }
]
},
/* @__PURE__ */ React70.createElement(
Text43,
{
style: [
styles53.fileName,
{
color: bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR
}
]
},
media?.fileName || "Unknown file"
)
)
);
}
);
} else {
console.warn("\u26A0\uFE0F Attachments - No valid attachments array found");
return null;
}
return attachments;
};
renderMessageText = () => {
const text = this.props.payload?.payload?.text || this.props.payload?.text;
if (text && typeof text === "string" && text.trim()) {
const cleanText = text.split("\n")[0].trim();
if (cleanText && cleanText !== "") {
return /* @__PURE__ */ React70.createElement(View57, { style: styles53.textContainer }, /* @__PURE__ */ React70.createElement(Text43, { style: styles53.messageText }, cleanText));
}
}
return null;
};
render() {
try {
const textView = this.renderMessageText();
const attachmentView = this.renderAttachment(this.props.payload);
return /* @__PURE__ */ React70.createElement(View57, null, textView, attachmentView);
} catch (error) {
console.error("\u274C Attachments render error:", error);
return /* @__PURE__ */ React70.createElement(View57, { style: styles53.errorContainer }, /* @__PURE__ */ React70.createElement(Text43, { style: styles53.errorText }, "Unable to load attachments"));
}
}
};
var styles53 = StyleSheet51.create({
main1: { padding: 10 },
main2: {
width: "100%",
borderBottomEndRadius: 3,
borderBottomStartRadius: 3
},
fileName: {
color: Color_default.black,
fontSize: normalize(14),
marginTop: normalize(3),
marginBottom: normalize(3),
padding: 5,
alignSelf: "center"
},
player: {
width: windowWidth21 / 4 * 3.2,
height: normalize(200),
marginTop: Platform11.OS === "ios" ? 30 : 0,
backgroundColor: "green"
},
main: {
margin: 6,
alignItems: "center",
borderRadius: 3,
borderWidth: StyleSheet51.hairlineWidth,
borderColor: Color_default.black
},
item_container: {
flexWrap: "wrap",
marginBottom: 10,
marginRight: 10,
marginTop: 10
},
mainContainer: {
backgroundColor: Color_default.white,
borderWidth: TEMPLATE_STYLE_VALUES.BORDER_WIDTH,
borderColor: TEMPLATE_STYLE_VALUES.BORDER_COLOR,
borderRadius: TEMPLATE_STYLE_VALUES.BORDER_RADIUS,
minWidth: TEMPLATE_STYLE_VALUES.MIN_WIDTH,
marginRight: TEMPLATE_STYLE_VALUES.TEMPLATE_RIGHT_MARGIN,
marginLeft: TEMPLATE_STYLE_VALUES.TEMPLATE_LEFT_MARGIN
},
text: {
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
marginStart: 10,
marginEnd: 10,
marginTop: 10,
marginBottom: 10,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
bottom_btns: { flexDirection: "row", marginTop: 0 },
btn_view: {
flexDirection: "column",
alignItems: "center",
borderRadius: 10,
padding: 10,
fontWeight: "bold"
},
item_text: {
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
alignSelf: "center",
color: Color_default.blue,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "normal"
//marginTop: 10,
},
main_view_1: {
padding: 5
},
btn_views_1: {
flexDirection: "column"
},
errorContainer: {
padding: 16,
backgroundColor: "#ffebee",
borderRadius: 8,
alignItems: "center",
justifyContent: "center",
marginVertical: 8
},
errorText: {
fontSize: 14,
color: "#c62828",
textAlign: "center"
},
textContainer: {
padding: 12,
marginBottom: 8
},
messageText: {
fontSize: normalize(16),
color: Color_default.text_color,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
lineHeight: normalize(20)
}
});
// bot-sdk/templates/ArticleTemplate.tsx
init_esm_shims();
import * as React72 from "react";
import {
Dimensions as Dimensions29,
Image as Image7,
Linking as Linking4,
StyleSheet as StyleSheet52,
Text as Text44,
TouchableOpacity as TouchableOpacity32,
View as View59
} from "react-native";
import FastImage10 from "react-native-fast-image";
// bot-sdk/utils/Base64Converter.tsx
init_esm_shims();
import React71 from "react";
import { View as View58, Image as Image6 } from "react-native";
import { SvgXml } from "react-native-svg";
import RNFS3 from "react-native-fs";
function Base64Image({ base64String, width: width8 = 100, height = 100, style }) {
if (!base64String)
return null;
const lowerCaseStr = base64String.toLowerCase();
const isSvg = lowerCaseStr.includes("image/svg+xml");
if (isSvg) {
const onlyBase64 = base64String.split("base64,")[1];
const svgXml = global.atob ? global.atob(onlyBase64) : decodeBase64(onlyBase64);
return /* @__PURE__ */ React71.createElement(View58, { style }, /* @__PURE__ */ React71.createElement(SvgXml, { xml: svgXml, width: width8, height }));
}
return /* @__PURE__ */ React71.createElement(
Image6,
{
source: { uri: base64String },
style: [{ width: width8, height, resizeMode: "contain" }, style]
}
);
}
function decodeBase64(base64) {
return decodeURIComponent(
atob(base64).split("").map((c) => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join("")
);
}
var saveBase64File = async (base64Data, fileName) => {
try {
const matches = base64Data.match(/^data:(.+);base64,(.*)$/);
if (!matches || matches.length !== 3)
throw new Error("Invalid base64 string");
const mimeType = matches[1];
const data = matches[2];
const mimeMap = {
"image/png": "png",
"image/jpeg": "jpg",
"image/jpg": "jpg",
"image/gif": "gif",
"application/pdf": "pdf",
"audio/mpeg": "mp3",
"audio/mp3": "mp3",
"video/mp4": "mp4",
"text/plain": "txt"
};
const extension = mimeMap[mimeType];
if (!extension)
throw new Error(`Unsupported MIME type: ${mimeType}`);
const path = `${RNFS3.DocumentDirectoryPath}/${fileName}.${extension}`;
await RNFS3.writeFile(path, data, "base64");
console.log("Saved file path:", path);
return path;
} catch (error) {
console.error("Error saving file:", error);
return void 0;
}
};
// bot-sdk/constants/Localization.tsx
init_esm_shims();
import { Platform as Platform12 } from "react-native";
var LOCALIZED_STRINGS = {
en: {
back_dialog_title: "Would you like to close the conversation or minimize?",
cancel: "CANCEL",
close: "CLOSE",
minimize: "MINIMIZE",
view_more: "View More",
answered_by_ai: "Answered by AI",
did_not_get_code: "Didn't get a code?",
load_earlier_messages: "Chat history"
},
es: {
back_dialog_title: "\xBFTe gustar\xEDa cerrar la conversaci\xF3n o minimizar?",
cancel: "CANCELAR",
close: "CERRAR",
minimize: "MINIMIZAR"
},
fr: {
back_dialog_title: "Souhaitez-vous fermer la conversation ou la minimiser?",
cancel: "ANNULER",
close: "FERMER",
minimize: "MINIMISER"
},
de: {
back_dialog_title: "M\xF6chten Sie das Gespr\xE4ch schlie\xDFen oder minimieren?",
cancel: "ABBRECHEN",
close: "SCHLIE\xDFEN",
minimize: "MINIMIEREN"
}
};
var Localization = class _Localization {
static instance;
currentLocale = "en";
constructor() {
}
// Singleton pattern to ensure single instance
static getInstance() {
if (!_Localization.instance) {
_Localization.instance = new _Localization();
}
return _Localization.instance;
}
/**
* Get device locale using multiple detection methods
* @returns Device locale code (e.g., 'en', 'fr', 'es')
*/
getDeviceLocale() {
try {
const intlLocale = Intl.DateTimeFormat().resolvedOptions().locale;
if (intlLocale) {
const langCode = intlLocale.split(/[-_]/)[0];
return langCode;
}
} catch (error) {
console.warn("Localization: Intl API locale detection failed:", error);
}
try {
const deviceLocale = Platform12.select({
ios: __require("react-native").NativeModules.SettingsManager?.settings?.AppleLanguages?.[0],
android: __require("react-native").NativeModules.I18nManager?.localeIdentifier,
default: null
});
if (deviceLocale) {
const langCode = deviceLocale.split(/[-_]/)[0];
console.log("Localization: Device locale from platform API:", deviceLocale, "\u2192", langCode);
return langCode;
}
} catch (error) {
console.warn("Localization: Platform locale detection failed:", error);
}
console.log("Localization: No device locale detected, using English");
return "en";
}
/**
* Set the current locale
* @param locale - Locale code (e.g., 'en', 'fr', 'es')
*/
setLocale(locale) {
this.currentLocale = locale;
console.log("Localization: Current locale set to:", locale);
}
/**
* Get the current locale
* @returns Current locale code
*/
getLocale() {
return this.currentLocale;
}
/**
* Initialize locale with auto-detection if no locale provided
* @param providedLocale - Optional locale to override auto-detection
* @param validateTranslations - Whether to validate translation completeness on init
*/
initializeLocale(providedLocale, validateTranslations = true) {
if (providedLocale === null || providedLocale === void 0) {
const deviceLocale = this.getDeviceLocale();
console.log("Localization: No locale provided, auto-detecting:", deviceLocale);
this.setLocale(deviceLocale);
} else {
console.log("Localization: Using provided locale:", providedLocale);
this.setLocale(providedLocale);
}
if (validateTranslations) {
const missingTranslations = this.validateTranslations();
if (Object.keys(missingTranslations).length > 0) {
console.warn("\u{1F6A8} Translation Validation Results:", missingTranslations);
} else {
console.log("\u2705 All translations are complete!");
}
}
}
/**
* Get localized string for a given key
* @param key - The string key to translate
* @param locale - Optional locale override
* @returns Localized string or fallback
*/
getLocalizedString(key, locale) {
const targetLocale = locale || this.currentLocale;
const strings = LOCALIZED_STRINGS[targetLocale];
if (strings && strings[key]) {
const translatedString = strings[key];
return translatedString;
}
const fallbackStrings = LOCALIZED_STRINGS.en;
const fallbackString = fallbackStrings[key] || key;
if (targetLocale !== "en" && strings) {
console.warn(`\u26A0\uFE0F Missing translation for "${key}" in locale "${targetLocale}", using English fallback: "${fallbackString}"`);
}
return fallbackString;
}
/**
* Check for missing translations in a specific locale
* @param locale - Locale to check
* @returns Array of missing translation keys
*/
getMissingTranslations(locale) {
const englishKeys = Object.keys(LOCALIZED_STRINGS.en);
const localeStrings = LOCALIZED_STRINGS[locale];
if (!localeStrings) {
return englishKeys;
}
const localeKeys = Object.keys(localeStrings);
const missingKeys = englishKeys.filter((key) => !localeKeys.includes(key));
return missingKeys;
}
/**
* Validate translation completeness for all locales
* @returns Object with missing translations per locale
*/
validateTranslations() {
const results = {};
const supportedLocales = this.getSupportedLocales();
supportedLocales.forEach((locale) => {
if (locale !== "en") {
const missing = this.getMissingTranslations(locale);
if (missing.length > 0) {
results[locale] = missing;
console.warn(`\u{1F6A8} Incomplete translations for "${locale}":`, missing);
}
}
});
return results;
}
/**
* Check if a locale is supported
* @param locale - Locale code to check
* @returns True if locale is supported
*/
isLocaleSupported(locale) {
return locale in LOCALIZED_STRINGS;
}
/**
* Get all supported locales
* @returns Array of supported locale codes
*/
getSupportedLocales() {
return Object.keys(LOCALIZED_STRINGS);
}
/**
* Add or update locale strings (smart merge behavior)
*
* Behavior:
* - If locale doesn't exist: Creates new locale with provided strings
* - If locale exists:
* - Existing keys: Overrides values with new ones
* - New keys: Adds them to existing locale
* - Untouched keys: Preserves existing values
*
* @param locale - Locale code
* @param strings - Object containing localized strings to add/update
*/
addLocaleStrings(locale, strings) {
const existingStrings = LOCALIZED_STRINGS[locale];
if (!existingStrings) {
LOCALIZED_STRINGS[locale] = strings;
console.log(`Localization: Created new locale "${locale}" with ${Object.keys(strings).length} strings`);
} else {
LOCALIZED_STRINGS[locale] = {
...existingStrings,
// Keep all existing keys
...strings
// Override existing + add new keys
};
const updatedKeys = [];
const newKeys = [];
Object.keys(strings).forEach((key) => {
if (existingStrings[key]) {
updatedKeys.push(key);
} else {
newKeys.push(key);
}
});
console.log(`Localization: Updated locale "${locale}"`);
if (updatedKeys.length > 0) {
console.log(` \u270F\uFE0F Overridden keys: [${updatedKeys.join(", ")}]`);
}
if (newKeys.length > 0) {
console.log(` \u2795 Added new keys: [${newKeys.join(", ")}]`);
}
const preservedCount = Object.keys(existingStrings).length - updatedKeys.length;
console.log(` \u2705 Preserved ${preservedCount} existing keys`);
}
}
/**
* Update a single localized string key
* @param locale - Locale code
* @param key - String key to update
* @param value - New value for the key
*/
updateLocalizedString(locale, key, value) {
this.addLocaleStrings(locale, { [key]: value });
}
/**
* Get current strings for a locale (useful for debugging)
* @param locale - Locale code
* @returns Object with current strings or undefined if locale doesn't exist
*/
getLocaleStrings(locale) {
return LOCALIZED_STRINGS[locale];
}
};
var LocalizationManager = Localization.getInstance();
// bot-sdk/templates/ArticleTemplate.tsx
var windowWidth22 = Dimensions29.get("window").width;
var width5 = windowWidth22 * 0.8;
var ArticleTemplate = class extends BaseView_default {
constructor(props) {
super(props);
}
getLocalizedString = (key) => {
return LocalizationManager.getLocalizedString(key);
};
render() {
if (this.props.onBottomSheetClose) {
width5 = windowWidth22 * 0.9;
} else {
width5 = windowWidth22 * 0.8;
}
return this.props.payload ? /* @__PURE__ */ React72.createElement(View59, { style: styles54.main_container }, this.renderElementsView(this.props.payload?.elements, this.props.payload?.displayLimit)) : /* @__PURE__ */ React72.createElement(React72.Fragment, null);
}
renderElementsView = (list, displayLimit) => {
if (!list || list.length === 0) {
return /* @__PURE__ */ React72.createElement(React72.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
let limit = !this.props.onBottomSheetClose && displayLimit > 0 ? displayLimit : list.length;
return /* @__PURE__ */ React72.createElement(
View59,
{
style: [{ width: width5 }]
},
list?.slice(0, limit).map((item, index) => {
return this.getSingleElementView(item, index, limit);
}),
list.length > limit ? /* @__PURE__ */ React72.createElement(
TouchableOpacity32,
{
style: { alignSelf: "flex-end" },
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
this.props.payload.template_type,
this.props.payload,
true
);
}
}
},
/* @__PURE__ */ React72.createElement(Text44, { style: { fontSize: normalize(14), marginVertical: normalize(2), color: bubbleTheme.BUBBLE_RIGHT_BG_COLOR } }, this.getLocalizedString("view_more"))
) : /* @__PURE__ */ React72.createElement(React72.Fragment, null)
);
};
getSingleElementView = (item, index, _size = 0) => {
if (!item) {
return /* @__PURE__ */ React72.createElement(React72.Fragment, null);
}
const bubbleTheme = getBubbleTheme(this.props?.theme);
return /* @__PURE__ */ React72.createElement(
View59,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles54.item_container, { borderColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR, marginBottom: index < _size - 1 ? normalize(5) : 0 }]
},
/* @__PURE__ */ React72.createElement(View59, { style: { flexDirection: "row", marginBottom: normalize(5) } }, item.icon.includes("base64,") ? /* @__PURE__ */ React72.createElement(Base64Image, { width: 14, height: 14, base64String: item.icon, style: { alignSelf: "center" } }) : /* @__PURE__ */ React72.createElement(
FastImage10,
{
source: { uri: item.icon },
style: { width: 14, height: 14, alignSelf: "center" },
resizeMode: FastImage10.resizeMode.contain
}
), /* @__PURE__ */ React72.createElement(Text44, { numberOfLines: 1, style: { marginStart: 5, flexShrink: 1, fontWeight: "bold", fontSize: normalize(14) } }, item.title)),
/* @__PURE__ */ React72.createElement(Text44, { numberOfLines: !this.props.onBottomSheetClose ? 3 : void 0, style: { flexShrink: 1, fontSize: normalize(12), marginBottom: normalize(5) } }, item.description),
/* @__PURE__ */ React72.createElement(View59, { style: { flexDirection: "row" } }, /* @__PURE__ */ React72.createElement(Text44, { style: { flexShrink: 1, fontSize: normalize(12), marginBottom: normalize(5) } }, item.createdOn + "\n" + item.updatedOn), item.button.title ? /* @__PURE__ */ React72.createElement(View59, { style: { flex: 1, justifyContent: "flex-end", alignSelf: "center", flexDirection: "row" } }, /* @__PURE__ */ React72.createElement(
TouchableOpacity32,
{
style: { alignSelf: "center", flexDirection: "row", paddingVertical: normalize(5) },
onPress: () => {
Linking4.openURL(item.button.url);
}
},
/* @__PURE__ */ React72.createElement(Image7, { style: { tintColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR, width: 10, height: 10, alignSelf: "center" }, source: images.article }),
/* @__PURE__ */ React72.createElement(Text44, { style: { flexShrink: 1, fontSize: 12, color: bubbleTheme.BUBBLE_RIGHT_BG_COLOR, marginStart: normalize(3) } }, item.button.title)
)) : /* @__PURE__ */ React72.createElement(React72.Fragment, null))
);
};
};
var styles54 = StyleSheet52.create({
main_container: {
flexDirection: "column"
},
item_container: {
flexDirection: "column",
position: "relative",
borderWidth: 1,
borderRadius: normalize(10),
paddingHorizontal: normalize(10),
paddingVertical: normalize(5),
backgroundColor: Color_default.white
},
image_container: {
backgroundColor: "transparent",
minHeight: 24,
minWidth: 24
}
});
// bot-sdk/templates/AnswerTemplate.tsx
init_esm_shims();
import * as React73 from "react";
import {
Dimensions as Dimensions30,
Image as Image8,
Linking as Linking5,
StyleSheet as StyleSheet53,
Text as Text45,
TouchableOpacity as TouchableOpacity33,
View as View60
} from "react-native";
var windowWidth23 = Dimensions30.get("window").width;
var width6 = windowWidth23 * 0.8;
var AnswerTemplate = class extends BaseView_default {
constructor(props) {
super(props);
}
getLocalizedString = (key) => {
return LocalizationManager.getLocalizedString(key);
};
render() {
return this.props.payload ? /* @__PURE__ */ React73.createElement(View60, null, this.renderAnswersView(this.props.payload)) : /* @__PURE__ */ React73.createElement(React73.Fragment, null);
}
renderAnswersView = (payload) => {
if (!payload) {
return /* @__PURE__ */ React73.createElement(React73.Fragment, null);
}
let sourceLinks = /* @__PURE__ */ new Map();
if (payload.answer_payload?.center_panel?.data) {
payload.answer_payload.center_panel.data.map((dataItem, indexDataItems) => {
dataItem.snippet_content.map((snippetItem, indexSnippetItem) => {
snippetItem.sources.map((sourceItem, indexSourceItem) => {
if (sourceItem.title)
sourceLinks.set(sourceItem.title, sourceItem.url);
});
});
});
}
return /* @__PURE__ */ React73.createElement(View60, { style: styles55.main_container }, /* @__PURE__ */ React73.createElement(Text45, { style: styles55.title }, payload.answer), [...sourceLinks.entries()].map(([key, value], index) => {
return /* @__PURE__ */ React73.createElement(TouchableOpacity33, { style: styles55.item_container, onPress: () => {
console.log("pressed url.....", value);
Linking5.openURL(value);
} }, /* @__PURE__ */ React73.createElement(Text45, { style: styles55.source_item }, index + 1 + ". " + key));
}), " : ", /* @__PURE__ */ React73.createElement(React73.Fragment, null), /* @__PURE__ */ React73.createElement(View60, { style: { flexDirection: "row", marginTop: 4 } }, /* @__PURE__ */ React73.createElement(Image8, { style: styles55.image_container1 }), /* @__PURE__ */ React73.createElement(Image8, { style: styles55.image_container2, source: images.ic_automation_ai }), /* @__PURE__ */ React73.createElement(Text45, { style: { color: "#6938EF", fontSize: normalize(10), alignSelf: "center", marginStart: 4 } }, this.getLocalizedString("answered_by_ai"))));
};
};
var styles55 = StyleSheet53.create({
main_container: {
width: width6,
flexDirection: "column",
marginBottom: normalize(4),
borderWidth: 1,
borderColor: Color_default.gray,
shadowRadius: 4,
shadowColor: Color_default.gray,
borderRadius: normalize(10),
paddingHorizontal: normalize(6),
paddingVertical: normalize(6),
backgroundColor: Color_default.white
},
title: {
fontSize: normalize(12),
color: Color_default.black,
marginTop: normalize(5),
marginBottom: normalize(2)
},
source_item: {
fontSize: normalize(10),
color: Color_default.gray,
paddingVertical: normalize(2),
flexShrink: 1
},
item_container: {
flexDirection: "column",
marginStart: normalize(4)
},
image_container1: {
backgroundColor: "#d8d8d8",
width: 24,
height: 24,
borderRadius: 30
},
image_container2: {
width: 18,
height: 18,
position: "absolute",
marginStart: normalize(2),
marginTop: normalize(2),
tintColor: "#6938EF"
}
});
// bot-sdk/templates/OTPTemplate.tsx
init_esm_shims();
import * as React75 from "react";
import {
Dimensions as Dimensions31,
StyleSheet as StyleSheet55,
Text as Text46,
TouchableOpacity as TouchableOpacity34,
View as View62,
Image as Image9,
Keyboard
} from "react-native";
// bot-sdk/templates/PinInputGroup.tsx
init_esm_shims();
import React74, { useRef as useRef2, useState as useState4 } from "react";
import { View as View61, TextInput as TextInput2, StyleSheet as StyleSheet54 } from "react-native";
function PinInputGroup({
pinLength,
value,
onChange,
themeColors
}) {
const [focusedIndex, setFocusedIndex] = useState4(-1);
const inputsRef = useRef2([]);
const handleChange = (text, index) => {
const newValue = [...value];
newValue[index] = text;
onChange(newValue);
if (text.length > 0 && index < pinLength - 1) {
inputsRef.current[index + 1]?.focus();
}
};
const handleKeyPress = (e, index) => {
if (e.nativeEvent.key === "Backspace" && value[index] === "" && index > 0) {
inputsRef.current[index - 1]?.focus();
}
};
return /* @__PURE__ */ React74.createElement(View61, { style: styles56.container }, Array.from({ length: pinLength }).map((_, index) => /* @__PURE__ */ React74.createElement(
TextInput2,
{
key: index,
ref: (ref) => inputsRef.current[index] = ref,
style: [
styles56.input,
{
borderColor: focusedIndex === index ? themeColors.active : themeColors.inactive
}
],
placeholder: "0",
placeholderTextColor: "#e4e5eb",
keyboardType: "numeric",
maxLength: 1,
value: value[index],
onChangeText: (text) => handleChange(text, index),
onKeyPress: (e) => handleKeyPress(e, index),
onFocus: () => setFocusedIndex(index),
onBlur: () => setFocusedIndex(-1)
}
)));
}
var styles56 = StyleSheet54.create({
container: {
flexDirection: "row",
padding: 5
},
input: {
height: 40,
width: 40,
textAlign: "center",
borderWidth: 1,
backgroundColor: "white",
marginBottom: 10,
borderRadius: 5,
marginEnd: normalize(10)
}
});
// bot-sdk/templates/OTPTemplate.tsx
init_PlatformCheck();
var windowWidth24 = Dimensions31.get("window").width;
var width7 = windowWidth24 * 0.8;
var OTPTemplate = class extends BaseView_default {
inputsRef = [];
constructor(props) {
super(props);
this.state = {
otpValues: Array(props?.payload?.pinLength || 4).fill(""),
inputText: ""
};
this.inputsRef = [];
if (this.props.onBottomSheetClose) {
width7 = windowWidth24 * 0.9;
}
}
getLocalizedString = (key) => {
return LocalizationManager.getLocalizedString(key);
};
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
const Wrapper = this.state.inputText ? TouchableOpacity34 : View62;
let payload = this.props.payload;
let borderColor = this.props.onBottomSheetClose ? Color_default.transparent : bubbleTheme.BUBBLE_LEFT_BG_COLOR;
let padding = this.props.onBottomSheetClose ? 0 : 10;
const themeColors = {
active: bubbleTheme?.BUBBLE_RIGHT_BG_COLOR || "blue",
inactive: bubbleTheme?.BUBBLE_LEFT_BG_COLOR || "gray"
};
return payload ? /* @__PURE__ */ React75.createElement(React75.Fragment, null, /* @__PURE__ */ React75.createElement(
View62,
{
pointerEvents: this.isViewDisable() ? "none" : "auto",
style: [styles57.main_Container, { width: width7, padding, borderColor }]
},
/* @__PURE__ */ React75.createElement(Text46, { style: [styles57.label, { fontSize: 16, fontWeight: "bold" }] }, payload.title),
/* @__PURE__ */ React75.createElement(Text46, { style: [styles57.label, { fontSize: 14, marginTop: 5 }] }, payload.description),
/* @__PURE__ */ React75.createElement(View62, { style: [styles57.mobileNo_Circle_Container, { backgroundColor: "transparent", flexDirection: "row", marginBottom: 10 }] }, /* @__PURE__ */ React75.createElement(View62, { style: [styles57.circle_Container, { backgroundColor: bubbleTheme.BUBBLE_LEFT_BG_COLOR }] }), /* @__PURE__ */ React75.createElement(
Image9,
{
source: placeholder.mobile,
style: [styles57.image, { position: "absolute", marginStart: 8, marginTop: 8 }]
}
), /* @__PURE__ */ React75.createElement(Text46, { style: [styles57.label, { fontSize: 14, alignSelf: "center", marginStart: 5 }] }, payload.mobileNumber)),
/* @__PURE__ */ React75.createElement(
PinInputGroup,
{
pinLength: payload.pinLength,
value: this.state.otpValues,
onChange: (v) => this.setState({ otpValues: v }),
themeColors
}
),
/* @__PURE__ */ React75.createElement(View62, { style: [styles57.otpBtns_Container, { flexDirection: "row", marginTop: 0 }] }, /* @__PURE__ */ React75.createElement(Text46, { style: { fontSize: 15, marginEnd: 4 } }, this.getLocalizedString("did_not_get_code")), /* @__PURE__ */ React75.createElement(
Text46,
{
style: {
fontSize: 15,
textDecorationLine: "underline",
color: bubbleTheme.BUBBLE_RIGHT_BG_COLOR
},
onPress: () => {
console.log("Resend OTP clicked");
if (this.props.onListItemClick) {
this.props.onListItemClick(payload.template_type, {
title: payload.otpButtons[1].payload,
payload: payload.otpButtons[1].payload,
type: "postback"
});
}
if (this.props.onBottomSheetClose) {
this.props.onBottomSheetClose();
}
}
},
payload.otpButtons[1].title
)),
/* @__PURE__ */ React75.createElement(
TouchableOpacity34,
{
onPress: () => {
const pin1 = this.state.otpValues.join("");
if ((pin1.length || 0) == payload.pinLength) {
Keyboard.dismiss();
if (this.props.onListItemClick) {
this.props.onListItemClick(payload.template_type, {
title: "*".repeat(pin1.length),
payload: payload.piiReductionChar + pin1 + payload.piiReductionChar,
type: "postback"
});
}
if (this.props.onBottomSheetClose) {
this.props.onBottomSheetClose();
}
}
},
style: [
styles57.button,
{ backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR || Color_default.button_blue, marginBottom: isIOS ? 10 : 0 }
]
},
/* @__PURE__ */ React75.createElement(
Text46,
{
style: {
color: bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR || Color_default.white,
fontSize: 15,
fontWeight: "500"
}
},
payload.otpButtons[0].title
)
)
)) : null;
}
};
var styles57 = StyleSheet55.create({
main_Container: {
marginTop: 0,
marginEnd: 10,
borderRadius: 5,
backgroundColor: Color_default.white,
borderWidth: 1
},
label: {
color: Color_default.black,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "400",
letterSpacing: 0.2,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
mobileNo_Circle_Container: {
marginTop: 10
},
circle_Container: {
width: 30,
height: 30,
borderRadius: 15,
backgroundColor: Color_default.red
},
image: {
width: 15,
// must set width
height: 15,
// must set height
resizeMode: "contain"
// contain, cover, stretch, repeat, center
},
feilds_Container: {
flexDirection: "row",
marginTop: 15
},
input: {
height: 40,
width: 40,
textAlign: "center",
borderColor: Color_default.gray,
borderWidth: 1,
backgroundColor: Color_default.white,
marginBottom: 10,
borderRadius: 5,
letterSpacing: 0.2,
marginEnd: normalize(10)
},
otpBtns_Container: {
marginTop: 0
},
button: {
marginTop: 10,
padding: 10,
borderRadius: 5,
justifyContent: "center",
alignItems: "center"
}
});
// bot-sdk/templates/ResetPinTemplate.tsx
init_esm_shims();
import * as React76 from "react";
import {
Dimensions as Dimensions32,
StyleSheet as StyleSheet56,
Text as Text47,
TouchableOpacity as TouchableOpacity35,
View as View63,
Keyboard as Keyboard2
} from "react-native";
var windowWidth25 = Dimensions32.get("window").width;
var window = windowWidth25 * 0.8;
var ResetPinTemplate = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
otpValues1: Array(props?.payload?.pinLength || 4).fill(""),
otpValues2: Array(props?.payload?.pinLength || 4).fill(""),
inputText: "",
isPinMatch: true
};
if (this.props.onBottomSheetClose) {
window = windowWidth25 * 0.9;
}
}
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
const payload = this.props.payload;
if (!payload)
return null;
const themeColors = {
active: bubbleTheme?.BUBBLE_RIGHT_BG_COLOR || "blue",
inactive: bubbleTheme?.BUBBLE_LEFT_BG_COLOR || "gray"
};
let borderColor = this.props.onBottomSheetClose ? Color_default.transparent : bubbleTheme?.BUBBLE_LEFT_BG_COLOR;
return /* @__PURE__ */ React76.createElement(View63, { pointerEvents: this.isViewDisable() ? "none" : "auto", style: [styles58.main_Container, { width: window, borderColor }] }, /* @__PURE__ */ React76.createElement(Text47, { style: [styles58.label, { fontSize: 16, fontWeight: "bold" }] }, payload.title), /* @__PURE__ */ React76.createElement(Text47, { style: [styles58.label, { fontSize: 14, marginTop: 10, marginLeft: 5 }] }, payload.enterPinTitle), /* @__PURE__ */ React76.createElement(
PinInputGroup,
{
pinLength: payload.pinLength,
value: this.state.otpValues1,
onChange: (v) => this.setState({ otpValues1: v }),
themeColors
}
), /* @__PURE__ */ React76.createElement(Text47, { style: [styles58.label, { fontSize: 14, marginTop: 10, marginLeft: 5 }] }, payload.reEnterPinTitle), /* @__PURE__ */ React76.createElement(
PinInputGroup,
{
pinLength: payload.pinLength,
value: this.state.otpValues2,
onChange: (v) => this.setState({ otpValues2: v }),
themeColors
}
), !this.state.isPinMatch && /* @__PURE__ */ React76.createElement(Text47, { style: [styles58.label, { fontSize: 14, alignSelf: "center", marginBottom: 10, fontWeight: "bold" }] }, payload.warningMessage), /* @__PURE__ */ React76.createElement(
TouchableOpacity35,
{
onPress: () => {
const pin1 = this.state.otpValues1.join("");
const pin2 = this.state.otpValues2.join("");
this.setState({ isPinMatch: pin1 === pin2 && pin1.length === payload.pinLength });
if (pin1 === pin2 && pin1.length === payload.pinLength) {
Keyboard2.dismiss();
if (this.props.onListItemClick) {
this.props.onListItemClick(payload.template_type, {
title: "*".repeat(pin1.length),
payload: payload.piiReductionChar + pin1 + payload.piiReductionChar,
type: "postback"
});
}
if (this.props.onBottomSheetClose) {
this.props.onBottomSheetClose();
}
}
},
style: [styles58.button, { backgroundColor: themeColors.active }]
},
/* @__PURE__ */ React76.createElement(Text47, { style: {
color: bubbleTheme.BUBBLE_RIGHT_TEXT_COLOR || "white",
fontSize: 15,
fontWeight: "500"
} }, payload.resetButtons[0].title)
));
}
};
var styles58 = StyleSheet56.create({
main_Container: {
marginTop: 0,
marginEnd: 10,
padding: 10,
borderRadius: 5,
backgroundColor: Color_default.white,
borderWidth: 1
},
label: {
color: Color_default.black,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "400",
letterSpacing: 0.2,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
textFeids_Container: {
marginTop: 0,
marginEnd: 10,
padding: 5,
backgroundColor: "Transparent",
flexDirection: "row"
},
input: {
height: 40,
width: 40,
textAlign: "center",
borderColor: Color_default.gray,
borderWidth: 1,
backgroundColor: Color_default.white,
marginBottom: 10,
borderRadius: 5,
letterSpacing: 0.2,
marginEnd: 10
},
button: {
marginTop: 0,
padding: 10,
borderRadius: 5,
justifyContent: "center",
alignItems: "center"
}
});
// bot-sdk/templates/LinkTemplate.tsx
init_esm_shims();
import * as React77 from "react";
import {
Dimensions as Dimensions33,
StyleSheet as StyleSheet57,
Text as Text48,
TouchableOpacity as TouchableOpacity36,
View as View64,
Image as Image10
} from "react-native";
import Toast2 from "react-native-toast-message";
import RNFS4 from "react-native-fs";
var windowWidth26 = Dimensions33.get("window").width;
var window2 = windowWidth26 * 0.8;
var LinkTemplate = class extends BaseView_default {
intervalId;
constructor(props) {
super(props);
this.state = { isPlaying: false };
}
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
const payload = this.props.payload;
if (!payload)
return null;
const themeColors = {
active: bubbleTheme?.BUBBLE_RIGHT_BG_COLOR || "blue",
inactive: bubbleTheme?.BUBBLE_LEFT_BG_COLOR || "gray"
};
const downloadFile = async (url, fileName) => {
console.log("url " + url);
console.log("fileName " + fileName);
try {
if (!fileName)
fileName = url.split("/").pop() || "file";
if (url.includes("base64,")) {
if (fileName?.includes("."))
fileName = fileName.split(".")[0];
const path = await saveBase64File(url, fileName);
if (path) {
Toast2.show({
type: "info",
text1: "Success File saved to:",
text2: path,
position: "bottom",
visibilityTime: 3e3,
autoHide: true
});
} else {
Toast2.show({
type: "error",
text1: "Failed to save file",
position: "bottom",
visibilityTime: 3e3,
autoHide: true
});
}
return;
}
const destPath = `${RNFS4.DocumentDirectoryPath}/${fileName}`;
const exists = await RNFS4.exists(destPath);
if (exists) {
Toast2.show({
type: "info",
text1: "Already downloaded",
text2: destPath
});
return;
}
const result = await RNFS4.downloadFile({
fromUrl: url,
toFile: destPath
}).promise;
if (result && result.statusCode === 200) {
Toast2.show({
type: "success",
text1: "Downloaded",
text2: destPath
});
} else {
Toast2.show({
type: "error",
text1: "Download failed!"
});
}
} catch (err) {
console.error("Download error:", err);
Toast2.show({
type: "error",
text1: "Download failed!"
});
}
};
let borderColor = this.props.onBottomSheetClose ? Color_default.transparent : bubbleTheme?.BUBBLE_LEFT_BG_COLOR;
return /* @__PURE__ */ React77.createElement(View64, { pointerEvents: this.isViewDisable() ? "none" : "auto", style: [styles59.main_Container, { width: window2, borderColor }] }, /* @__PURE__ */ React77.createElement(
Image10,
{
source: placeholder.pdf,
style: [styles59.image, { position: "absolute", marginStart: 8, marginTop: 10 }]
}
), /* @__PURE__ */ React77.createElement(Text48, { style: [styles59.label, { fontSize: 16, marginTop: 5, marginLeft: 55 }] }, payload.fileName), /* @__PURE__ */ React77.createElement(
TouchableOpacity36,
{
onPress: () => {
downloadFile(payload.url.trim(), payload.fileName);
},
style: [styles59.button, { backgroundColor: Color_default.white }]
},
/* @__PURE__ */ React77.createElement(
Image10,
{
source: placeholder.download,
style: styles59.buttonImage
}
)
), /* @__PURE__ */ React77.createElement(Toast2, null));
}
};
var styles59 = StyleSheet57.create({
main_Container: {
marginTop: 0,
marginEnd: 10,
height: 80,
padding: 10,
borderRadius: 5,
backgroundColor: Color_default.white,
borderWidth: 1
},
label: {
color: Color_default.black,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "500",
letterSpacing: 0.2,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY
},
button: {
position: "absolute",
bottom: 5,
right: 10,
borderRadius: 5,
width: 35,
height: 35,
justifyContent: "center",
alignItems: "center"
},
image: {
width: 50,
// must set width
height: 50,
// must set height
resizeMode: "contain"
},
buttonImage: {
width: 30,
height: 30,
resizeMode: "contain"
}
});
// bot-sdk/templates/DigitalFormTemplate.tsx
init_esm_shims();
import * as React78 from "react";
import {
Dimensions as Dimensions34,
StyleSheet as StyleSheet58,
Text as Text49,
TouchableOpacity as TouchableOpacity37,
View as View65,
Image as Image11
} from "react-native";
var windowWidth27 = Dimensions34.get("window").width;
var window3 = windowWidth27 * 0.8;
var DigitalFormTemplate = class extends BaseView_default {
intervalId;
constructor(props) {
super(props);
this.state = { isPlaying: false };
}
render() {
const bubbleTheme = getBubbleTheme(this.props?.theme);
const payload = this.props.payload;
if (!payload)
return null;
const themeColors = {
active: bubbleTheme?.BUBBLE_RIGHT_BG_COLOR || "blue",
inactive: bubbleTheme?.BUBBLE_LEFT_BG_COLOR || "gray"
};
let list = payload.buttons;
if (!list || list.length === 0) {
return /* @__PURE__ */ React78.createElement(React78.Fragment, null);
}
const bbtheme = getBubbleTheme(this.props?.theme);
let borderColor = this.props.onBottomSheetClose ? Color_default.transparent : bubbleTheme?.BUBBLE_LEFT_BG_COLOR;
return /* @__PURE__ */ React78.createElement(View65, null, /* @__PURE__ */ React78.createElement(View65, { pointerEvents: this.isViewDisable() ? "none" : "auto", style: [styles60.main_Container, { width: window3, borderColor }] }, /* @__PURE__ */ React78.createElement(Text49, { style: [styles60.label] }, payload.text), /* @__PURE__ */ React78.createElement(View65, { style: { marginHorizontal: 10 } }, list.map((item, index) => {
return this.getSingleButtonView(
item,
index,
bbtheme,
payload
);
}))), /* @__PURE__ */ React78.createElement(Image11, { source: placeholder.digitalForm, style: [styles60.image, { borderColor, position: "absolute", marginStart: 20 }] }));
}
getSingleButtonView = (item, index = 0, bbtheme, payload) => {
return /* @__PURE__ */ React78.createElement(View65, { key: index + "", style: styles60.item_container }, /* @__PURE__ */ React78.createElement(
TouchableOpacity37,
{
key: index,
style: [
styles60.btn_view,
{
backgroundColor: Color_default.transparent
}
],
onPress: () => {
if (this.props.onListItemClick) {
this.props.onListItemClick(
TEMPLATE_TYPES.DIGITALFORM_TEMPLATE,
item
);
}
}
},
/* @__PURE__ */ React78.createElement(
Text49,
{
style: [
styles60.item_text,
{
color: bbtheme.BUBBLE_RIGHT_BG_COLOR,
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"].size
]
},
item.title
)
));
};
};
var styles60 = StyleSheet58.create({
main_Container: {
marginTop: 30,
marginEnd: 10,
borderRadius: 5,
backgroundColor: Color_default.white,
borderWidth: 1
},
label: {
color: Color_default.black,
fontWeight: "500",
flexShrink: 1,
flexWrap: "wrap",
letterSpacing: 0.2,
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
fontSize: 14,
marginTop: 40,
marginHorizontal: 20
},
button: {
position: "absolute",
bottom: 5,
right: 10,
borderRadius: 5,
width: 35,
height: 35,
justifyContent: "center",
alignItems: "center"
},
image: {
width: 60,
height: 60,
padding: 15,
borderWidth: 1,
borderRadius: 100,
backgroundColor: Color_default.white,
resizeMode: "contain"
},
item_container: {
flexWrap: "wrap",
marginBottom: 10,
marginRight: 10,
marginTop: 10
},
btn_view: {
flexDirection: "column",
alignItems: "center",
borderRadius: 5,
padding: 10,
fontWeight: "bold"
},
item_text: {
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
alignSelf: "center",
color: Color_default.blue,
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontWeight: "normal"
}
});
// bot-sdk/templates/BotTemplate.tsx
var BotTemplate = class extends React79.Component {
static defaultProps;
renderBubbleViews = (templateType, payload, theme, onListItemClick, onSeeMoreClick) => {
if (onListItemClick) {
payload = {
...payload,
onListItemClick: (type, data, isFromSeeMore = false) => {
if (onSeeMoreClick && isFromSeeMore) {
onSeeMoreClick(type, data);
} else if (onListItemClick) {
onListItemClick(type, data, isFromSeeMore);
}
}
};
}
switch (templateType) {
case TEMPLATE_TYPES.TEXT:
case TEMPLATE_TYPES.LIVE_AGENT_TEMPLATE:
case TEMPLATE_TYPES.SYSTEM_TEMPLATE:
return this.renderMessageText(payload, theme, templateType);
case TEMPLATE_TYPES.BUTTON:
return /* @__PURE__ */ React79.createElement(Button2, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.CARD_TEMPLATE:
return /* @__PURE__ */ React79.createElement(CardTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.LIST_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ListTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.IMAGE_MESSAGE:
return /* @__PURE__ */ React79.createElement(ImageTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.TABLE_TEMPLATE:
return /* @__PURE__ */ React79.createElement(TableTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.QUICK_REPLIES:
return this.renderBotText(payload, templateType, theme);
case TEMPLATE_TYPES.ERROR_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ErrorTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.CAROUSEL_TEMPLATE:
return /* @__PURE__ */ React79.createElement(CarouselTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.ADVANCED_LIST_TEMPLATE:
return /* @__PURE__ */ React79.createElement(AdvancedListTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.MINI_TABLE_TEMPLATE:
return /* @__PURE__ */ React79.createElement(MiniTableTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.BAR_CHART_TEMPLATE:
if (payload?.stacked) {
return /* @__PURE__ */ React79.createElement(StackBarChartTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
}
return /* @__PURE__ */ React79.createElement(BarChartTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.PIE_CHART_TEMPLATE:
return /* @__PURE__ */ React79.createElement(PieChartTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.LINE_CHART_TEMPLATE:
return /* @__PURE__ */ React79.createElement(LineChartTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.DATE_TEMPLATE:
return /* @__PURE__ */ React79.createElement(DateTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.DATE_RANGE_TEMPLATE:
return /* @__PURE__ */ React79.createElement(DateTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.TABLE_LIST_TEMPLATE:
return /* @__PURE__ */ React79.createElement(TableListTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.ADVANCED_MULTI_SELECT_TEMPLATE:
return /* @__PURE__ */ React79.createElement(AdvanceMultiSelectTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.MULTI_SELECT_TEMPLATE:
return /* @__PURE__ */ React79.createElement(MultiSelectTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.RADIO_OPTION_TEMPLATE:
return /* @__PURE__ */ React79.createElement(RadioOptionTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.LIST_VIEW_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ListViewTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.DROPDOWN_TEMPLATE:
return /* @__PURE__ */ React79.createElement(DropdownTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.FEEDBACK_TEMPLATE:
return /* @__PURE__ */ React79.createElement(FeedbackTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.FORM_TEMPLATE:
return /* @__PURE__ */ React79.createElement(FormTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.CLOCK_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ClockTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.LISTWIDGET_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ListWidgetTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.AUDIO_MESSAGE:
return /* @__PURE__ */ React79.createElement(AudioTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.VIDEO_MESSAGE:
return /* @__PURE__ */ React79.createElement(VideoTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.USER_ATTACHEMENT_TEMPLATE:
return /* @__PURE__ */ React79.createElement(Attachements, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.ARTICLE_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ArticleTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.ANSWER_TEMPLATE:
return /* @__PURE__ */ React79.createElement(AnswerTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.OTP_TEMPLATE:
return /* @__PURE__ */ React79.createElement(OTPTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.RESET_PIN_TEMPLATE:
return /* @__PURE__ */ React79.createElement(ResetPinTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.LINK_MESSAGE:
return /* @__PURE__ */ React79.createElement(LinkTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
case TEMPLATE_TYPES.DIGITALFORM_TEMPLATE:
return /* @__PURE__ */ React79.createElement(DigitalFormTemplate, { payload, theme, onListItemClick: this.props.onListItemClick });
}
return /* @__PURE__ */ React79.createElement(Text50, { style: { padding: 10 } }, "This template is under development...");
};
renderMessageText = (payload, theme, template_type) => {
if (payload) {
const { ...messageTextProps } = this.props;
if (this.props.renderMessageText) {
return this.props.renderMessageText(messageTextProps);
}
return /* @__PURE__ */ React79.createElement(
MessageText_default,
{
...messageTextProps?.messageTextProps,
payload,
containerStyle: this.props.textContainerStyle,
theme,
template_type
}
);
}
return null;
};
renderBotText = (payload, template_type, theme) => {
let text = null;
if (payload) {
text = payload?.text;
text = text ? text : payload?.payload?.text;
text = text ? text : payload?.text?.text;
if (template_type && template_type !== TEMPLATE_TYPES.QUICK_REPLIES) {
text = text ? text : payload;
}
}
if (text && typeof text === "object") {
let newText = text;
text = newText?.text;
}
if (!text) {
return null;
}
if (typeof text !== "string") {
console.log("value is not a string type : ", text);
return /* @__PURE__ */ React79.createElement(React79.Fragment, null);
}
return /* @__PURE__ */ React79.createElement(
BotText,
{
text,
isFilterApply: true,
theme
}
);
};
render() {
return this.renderBubbleViews(
this.props.templateType,
this.props.payload,
this.props.theme,
this.props.onListItemClick,
this.props.onSeeMoreClick
);
}
};
// bot-sdk/templates/CustomTemplate.tsx
init_esm_shims();
var CustomTemplate = class extends BaseView_default {
static contextType = ThemeContext;
static propTypes;
constructor(props) {
super(props);
}
};
var CustomTemplate_default = CustomTemplate;
// bot-sdk/chat/KoreChat.tsx
init_esm_shims();
import * as React110 from "react";
import {
Platform as Platform16,
StyleSheet as StyleSheet84,
View as View93,
SafeAreaView as SafeAreaView2,
Linking as Linking9,
ActivityIndicator as ActivityIndicator5,
Text as Text72,
TouchableOpacity as TouchableOpacity46,
Modal as Modal9,
ScrollView as ScrollView5,
Keyboard as Keyboard5,
Dimensions as Dimensions37,
StatusBar as StatusBar3,
BackHandler as BackHandler2,
TouchableWithoutFeedback as TouchableWithoutFeedback3
} from "react-native";
// bot-sdk/utils/uuid.ts
init_esm_shims();
var UUID = class {
/**
* Generate a version 4 UUID string
* Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
* where x is any hexadecimal digit and y is one of 8, 9, A, or B
* @returns {string} UUID v4 string
*/
static v4() {
if (typeof globalThis !== "undefined" && globalThis.crypto && globalThis.crypto.getRandomValues) {
const buffer = new Uint8Array(16);
globalThis.crypto.getRandomValues(buffer);
buffer[6] = buffer[6] & 15 | 64;
buffer[8] = buffer[8] & 63 | 128;
const hexArray = Array.from(buffer, (byte) => byte.toString(16).padStart(2, "0"));
return [
hexArray.slice(0, 4).join(""),
hexArray.slice(4, 6).join(""),
hexArray.slice(6, 8).join(""),
hexArray.slice(8, 10).join(""),
hexArray.slice(10, 16).join("")
].join("-");
}
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0;
const v = c === "x" ? r : r & 3 | 8;
return v.toString(16);
});
}
};
var uuid_default = UUID;
// bot-sdk/chat/KoreChat.tsx
import dayjs10 from "dayjs";
import localizedFormat from "dayjs/plugin/localizedFormat";
// bot-sdk/chat/components/InputToolbar.tsx
init_esm_shims();
import * as React85 from "react";
import {
StyleSheet as StyleSheet64,
Text as Text53,
TouchableOpacity as TouchableOpacity40,
View as View71
} from "react-native";
// bot-sdk/chat/components/Composer.tsx
init_esm_shims();
import React80, { useRef as useRef3, useState as useState5, useEffect as useEffect2, useCallback } from "react";
import {
StyleSheet as StyleSheet59,
TextInput as TextInput6,
View as View66,
TouchableOpacity as TouchableOpacity38
} from "react-native";
init_PlatformCheck();
function Composer({
composerHeight = MIN_COMPOSER_HEIGHT,
disableComposer = false,
keyboardAppearance = "default",
multiline = true,
onInputSizeChanged = () => {
},
onTextChanged = () => {
},
placeholder: placeholder2 = DEFAULT_PLACEHOLDER,
placeholderTextColor = Color_default.defaultColor,
text = "",
textInputAutoFocus = false,
textInputProps = {},
theme,
onSpeakerClicked = () => {
},
isTTSenable = false
}) {
const dimensionsRef = useRef3();
const [isTTS, setTTS] = useState5(false);
useEffect2(() => {
setTTS(isTTSenable);
}, [isTTSenable]);
const composerHeightNew = composerHeight || 35;
const determineInputSizeChange = useCallback(
(dimensions) => {
if (!dimensions) {
return;
}
if (!dimensionsRef || !dimensionsRef.current || dimensionsRef.current && (dimensionsRef.current.width !== dimensions.width || dimensionsRef.current.height !== dimensions.height)) {
dimensionsRef.current = dimensions;
onInputSizeChanged(dimensions);
}
},
[onInputSizeChanged]
);
const handleContentSizeChange = ({
nativeEvent: { contentSize }
}) => determineInputSizeChange(contentSize);
const maxHeight = MAX_TOOL_BAR_HEIGHT || 180;
const bgColor = theme?.v3?.footer?.compose_bar?.bg_color || Color_default.white;
const outLineColor = theme?.v3?.footer?.compose_bar?.["outline-color"] || Color_default.gray;
const textColor = invertColor(bgColor, true);
return /* @__PURE__ */ React80.createElement(
View66,
{
style: [
{
justifyContent: "center",
alignItems: "stretch",
backgroundColor: Color_default.transparent
},
isIOS && {
borderWidth: StyleSheet59.hairlineWidth,
borderColor: outLineColor,
borderRadius: 4,
backgroundColor: bgColor,
minHeight: normalize(composerHeightNew + 16)
}
]
},
/* @__PURE__ */ React80.createElement(
View66,
{
style: [
{
justifyContent: "center",
maxHeight: normalize(maxHeight),
flexDirection: "row"
},
isAndroid && {
borderWidth: StyleSheet59.hairlineWidth,
borderColor: outLineColor,
borderRadius: 4,
backgroundColor: bgColor,
minHeight: normalize(composerHeightNew + 16)
}
]
},
/* @__PURE__ */ React80.createElement(
TextInput6,
{
testID: placeholder2,
accessible: true,
accessibilityLabel: placeholder2,
placeholder: theme?.v3?.footer?.compose_bar?.placeholder || placeholder2,
placeholderTextColor,
selectionColor: textColor,
multiline,
maxLength: MAX_INPUT_TEXT_LENGTH,
editable: !disableComposer,
onContentSizeChange: handleContentSizeChange,
onChangeText: onTextChanged,
style: [
styles61.textInput,
{
minHeight: normalize(composerHeightNew),
paddingRight: theme?.v3?.footer?.buttons?.emoji?.show ? 4 : 8
},
{
color: textColor
//bubbleTheme.BUBBLE_LEFT_TEXT_COLOR,
}
],
autoFocus: textInputAutoFocus,
value: text,
enablesReturnKeyAutomatically: true,
underlineColorAndroid: "transparent",
keyboardAppearance,
...textInputProps
}
),
theme?.v3?.footer?.buttons?.speaker?.show && /* @__PURE__ */ React80.createElement(
TouchableOpacity38,
{
onPress: () => {
const spacker = !isTTS;
setTTS(spacker);
onSpeakerClicked(spacker);
},
style: {
padding: 10,
backgroundColor: Color_default.transparent,
alignItems: "center",
justifyContent: "center"
}
},
/* @__PURE__ */ React80.createElement(
SvgIcon,
{
name: isTTS ? "SpeakerIcon" : "SpeakerOffIcon",
width: normalize(18),
height: normalize(18),
color: textColor
}
)
)
)
);
}
var styles61 = StyleSheet59.create({
emoji_main: {
justifyContent: "center",
alignItems: "center",
paddingEnd: 5,
paddingStart: 10,
paddingTop: 5,
paddingBottom: 5,
margin: 2
},
card_main: {
backgroundColor: "#FAFAFA"
//height: normalize(80),
//position: 'absolute',
// bottom: 10,
//alignSelf: 'center',
//justifyContent: 'center',
},
textInput: {
flex: 1,
fontSize: normalize(16),
paddingLeft: 8,
paddingRight: 8,
minHeight: normalize(isIOS ? 34 : 36),
paddingVertical: isIOS ? 8 : 6,
textAlignVertical: "center",
color: Color_default.text_color
}
});
// bot-sdk/chat/components/Send.tsx
init_esm_shims();
import * as React81 from "react";
import { Component as Component24 } from "react";
import {
StyleSheet as StyleSheet60,
Text as Text51,
TouchableOpacity as TouchableOpacity39,
View as View67
} from "react-native";
var styles62 = StyleSheet60.create({
container: {
width: normalize(38),
height: normalize(38),
alignItems: "center",
justifyContent: "center",
marginHorizontal: 8
},
text: {
color: Color_default.defaultBlue,
fontWeight: "600",
fontSize: normalize(17),
backgroundColor: Color_default.backgroundTransparent,
marginBottom: 12,
marginLeft: 10,
marginRight: 15
}
});
var Send = class extends Component24 {
static defaultProps;
constructor(props) {
super(props);
}
handleOnPress = () => {
const { text, onSend } = this.props;
if (text && text?.trim?.()?.length > 0) {
onSend?.({ text: text.trim() }, true);
} else if (this.props.isMediaAddedToSend) {
onSend?.({ text: "" }, true);
}
};
render() {
const {
text,
// containerStyle,
children,
textStyle: textStyle3,
label = "Send",
alwaysShowSend,
disabled,
sendButtonProps
} = this.props;
if (alwaysShowSend || text && text.trim().length > 0) {
return /* @__PURE__ */ React81.createElement(
TouchableOpacity39,
{
testID: "send",
accessible: true,
accessibilityLabel: "send",
style: [styles62.container],
onPress: this.handleOnPress,
accessibilityRole: "button",
disabled,
...sendButtonProps
},
/* @__PURE__ */ React81.createElement(View67, null, children || /* @__PURE__ */ React81.createElement(Text51, { style: [styles62.text, textStyle3] }, label))
);
}
return /* @__PURE__ */ React81.createElement(View67, null);
}
};
// bot-sdk/animation/FadeInToBottom.tsx
init_esm_shims();
import React82, { Component as Component25 } from "react";
import { Animated as Animated5, StyleSheet as StyleSheet61 } from "react-native";
var FadeInToBottom = class extends Component25 {
fadeAnim = new Animated5.Value(0);
translateAnim = new Animated5.Value(100);
// Initial position is off-screen
animation;
constructor(props) {
super(props);
this.state = {
animation: null,
isApplyAnim: false
};
}
componentDidMount() {
if (this.props.getRef) {
this.props.getRef(this);
}
const { duration = 500 } = this.props;
this.animation = Animated5.parallel([
Animated5.timing(this.fadeAnim, {
toValue: 1,
duration,
useNativeDriver: true
}),
Animated5.timing(this.translateAnim, {
toValue: 0,
// Adjust this value to control how far the element moves down
duration,
useNativeDriver: true
})
]);
}
startAnimation = () => {
this.setState({ animation: this.animation, isApplyAnim: true }, () => {
if (this.state.animation) {
this.state.animation.start();
}
});
};
render() {
if (!this.state.isApplyAnim) {
return this.props.children;
}
return /* @__PURE__ */ React82.createElement(
Animated5.View,
{
style: [
styles63.container,
{
opacity: this.fadeAnim,
transform: [{ translateY: this.translateAnim }]
}
]
},
this.props.children
);
}
};
var styles63 = StyleSheet61.create({
container: {
//flex: 1,
// position: 'absolute',
//bottom: 0,
// left: 0,
// right: 0,
// top: 0,
}
});
var FadeInToBottom_default = FadeInToBottom;
// bot-sdk/animation/FadeInToTop.tsx
init_esm_shims();
import React83, { Component as Component26 } from "react";
import { Animated as Animated6, StyleSheet as StyleSheet62 } from "react-native";
var FadeInToTop = class extends Component26 {
fadeAnim = new Animated6.Value(0);
translateAnim = new Animated6.Value(200);
// Initial position is off-screen
componentDidMount() {
const { duration = 500 } = this.props;
const animation = Animated6.parallel([
Animated6.timing(this.translateAnim, {
toValue: 0,
// Adjust this value to control how far the element moves up
duration,
useNativeDriver: true
}),
Animated6.timing(this.fadeAnim, {
toValue: 1,
duration,
useNativeDriver: true
})
]);
this.setState({ animation }, () => {
if (this.state.animation) {
this.state.animation.start();
}
});
}
render() {
return /* @__PURE__ */ React83.createElement(
Animated6.View,
{
style: [
styles64.container,
{
opacity: this.fadeAnim,
transform: [{ translateY: this.translateAnim }]
}
]
},
this.props.children
);
}
};
var styles64 = StyleSheet62.create({
container: {
flex: 1
// position: 'absolute',
// //top: 0,
// left: 0,
// right: 0,
// bottom: 0,
}
});
var FadeInToTop_default = FadeInToTop;
// bot-sdk/components/WaveFormView.tsx
init_esm_shims();
import React84, { Component as Component27 } from "react";
import { View as View70, Animated as Animated7, Easing, StyleSheet as StyleSheet63 } from "react-native";
var dotAnimations = Array.from({ length: 4 }).map(() => new Animated7.Value(1));
var keyframes1 = [0, 1, 0.8, 0.5, 0, 0.5, 0.8, 1, 0];
var keyframes3 = [0, 1, 0.5, 0.2, 0, 0.2, 0.5, 0.8, 1, 0];
var keyFramesList = [keyframes3, keyframes1];
var AnimatedSoundBars = ({ barColor = "white" }) => {
const loopAnimation = (node, index) => {
const loop = Animated7.sequence(
keyFramesList[index % keyFramesList.length].map((toValue) => {
return Animated7.timing(node, {
toValue,
easing: Easing.ease,
useNativeDriver: true
});
})
);
return loop;
};
const loadAnimation = (nodes) => Animated7.loop(Animated7.stagger(200, nodes.map(loopAnimation)))?.start?.();
React84.useEffect(() => {
setTimeout(() => {
loadAnimation(dotAnimations);
}, 1);
}, []);
return /* @__PURE__ */ React84.createElement(View70, { style: styles65.row }, dotAnimations.map((animation, index) => {
return /* @__PURE__ */ React84.createElement(
Animated7.View,
{
key: `${index}`,
style: [
styles65.bar,
{ backgroundColor: barColor },
{
transform: [
{
scale: animation
}
]
}
]
}
);
}));
};
var WaveFormView = class extends Component27 {
render() {
return /* @__PURE__ */ React84.createElement(AnimatedSoundBars, { barColor: this.props.barColor || "white" });
}
};
var styles65 = StyleSheet63.create({
row: {
// flex: 1,
flexDirection: "row",
justifyContent: "center"
},
bar: {
height: 17,
width: 3,
borderRadius: 20,
marginHorizontal: 1.5
}
});
// bot-sdk/utils/VoiceRecorder.tsx
init_esm_shims();
init_PlatformCheck();
var Voice = null;
var Permissions = null;
var loadNativeModules2 = () => {
if (Voice && Permissions) {
return { Voice, Permissions };
}
try {
const VoiceModule = __require("@react-native-voice/voice");
Voice = VoiceModule?.default || VoiceModule;
if (!Voice) {
console.warn("Voice module loaded but is null/undefined");
return { Voice: null, Permissions: null };
}
const permissionsModule = __require("react-native-permissions");
if (!permissionsModule) {
console.warn("Permissions module failed to load");
return { Voice: null, Permissions: null };
}
Permissions = {
check: permissionsModule.check,
request: permissionsModule.request,
PERMISSIONS: permissionsModule.PERMISSIONS,
RESULTS: permissionsModule.RESULTS
};
if (!Permissions.check || !Permissions.request || !Permissions.PERMISSIONS || !Permissions.RESULTS) {
console.warn("Permissions module missing required properties");
Permissions = null;
return { Voice: null, Permissions: null };
}
return { Voice, Permissions };
} catch (error) {
console.warn("Voice or Permissions module not available:", error);
Voice = null;
Permissions = null;
return { Voice: null, Permissions: null };
}
};
var DELAY_TIME = 8;
var VoiceHelper = class {
timer = void 0;
counter = 0;
isModulesLoaded = false;
Voice = null;
Permissions = null;
isVoiceRecognitionAvailable = false;
hasTestedAvailability = false;
constructor(onSpeechStart, onSpeechRecognized, onSpeechEnd, onSpeechError, onSpeechResults, onSpeechPartialResults, onSpeechVolumeChanged) {
this.initializeNativeModules();
if (this.Voice && this.isModulesLoaded) {
try {
this.Voice.onSpeechStart = onSpeechStart;
this.Voice.onSpeechRecognized = onSpeechRecognized;
this.Voice.onSpeechEnd = onSpeechEnd;
this.Voice.onSpeechError = onSpeechError;
this.Voice.onSpeechResults = onSpeechResults;
this.Voice.onSpeechPartialResults = onSpeechPartialResults;
this.Voice.onSpeechVolumeChanged = onSpeechVolumeChanged;
} catch (error) {
console.warn("Failed to set up voice listeners:", error);
}
}
this.timer = void 0;
this.counter = 0;
}
initializeNativeModules() {
try {
const modules = loadNativeModules2();
this.Voice = modules.Voice;
this.Permissions = modules.Permissions;
this.isModulesLoaded = !!(this.Voice && this.Permissions);
} catch (error) {
console.warn("Failed to initialize native modules:", error);
this.isModulesLoaded = false;
}
}
setTimer = () => {
this.timer = setInterval(() => {
if (this.counter >= DELAY_TIME) {
this.stopRecognizing();
clearInterval(this.timer);
this.timer = void 0;
}
this.counter++;
}, 500);
};
async requestMicrophonePermission() {
if (!this.isModulesLoaded || !this.Permissions) {
console.warn("Permissions module not available");
return false;
}
const permission = isIOS ? this.Permissions.PERMISSIONS.IOS.MICROPHONE : this.Permissions.PERMISSIONS.ANDROID.RECORD_AUDIO;
try {
if (!this.Permissions) {
console.warn("Permissions module became unavailable during execution");
return false;
}
const result = await this.Permissions.check(permission);
if (result === this.Permissions.RESULTS.GRANTED) {
return true;
} else {
const requestResult = await this.Permissions.request(permission);
return requestResult === this.Permissions.RESULTS.GRANTED;
}
} catch (error) {
console.error("Error requesting microphone permission", error);
return false;
}
}
resetCounter = () => {
this.counter = 0;
};
async testSpeechRecognitionAvailability() {
if (this.hasTestedAvailability) {
return this.isVoiceRecognitionAvailable;
}
try {
if (!this.Voice || !this.isModulesLoaded) {
this.isVoiceRecognitionAvailable = false;
this.hasTestedAvailability = true;
return false;
}
const hasPermission = await this.requestMicrophonePermission();
if (!hasPermission) {
this.isVoiceRecognitionAvailable = false;
this.hasTestedAvailability = true;
return false;
}
try {
const hasRequiredMethods = typeof this.Voice.start === "function" && typeof this.Voice.stop === "function" && typeof this.Voice.cancel === "function";
if (!hasRequiredMethods) {
throw new Error("Voice module missing required methods");
}
const isAvailable = await this.Voice.isAvailable();
if (!isAvailable) {
throw new Error("Speech recognition not available on device");
}
this.isVoiceRecognitionAvailable = true;
this.hasTestedAvailability = true;
return true;
} catch (methodError) {
console.warn("Voice availability check failed, assuming available:", methodError instanceof Error ? methodError.message : String(methodError));
this.isVoiceRecognitionAvailable = true;
this.hasTestedAvailability = true;
return true;
}
} catch (error) {
console.error("Voice recognition setup failed:", error instanceof Error ? error.message : String(error));
this.isVoiceRecognitionAvailable = false;
this.hasTestedAvailability = true;
return false;
}
}
isVoiceRecognitionSupported() {
return this.isVoiceRecognitionAvailable;
}
resetAvailabilityTest() {
this.hasTestedAvailability = false;
this.isVoiceRecognitionAvailable = false;
}
resetVoiceState = async () => {
try {
if (this.timer) {
clearInterval(this.timer);
this.timer = void 0;
}
this.counter = 0;
if (this.Voice && this.isVoiceRecognitionAvailable) {
try {
await this.Voice.cancel();
} catch (error) {
console.warn("Failed to cancel voice recognition during reset:", error instanceof Error ? error.message : String(error));
}
}
} catch (error) {
console.error("Voice state reset failed:", error instanceof Error ? error.message : String(error));
}
};
startRecognizing = async () => {
const isAvailable = await this.testSpeechRecognitionAvailability();
if (!isAvailable) {
try {
if (this.Voice && typeof this.Voice.onSpeechError === "function") {
this.Voice.onSpeechError({
error: "Speech recognition not available on this device"
});
}
} catch (error) {
console.error("Failed to call speech error handler:", error instanceof Error ? error.message : String(error));
}
return;
}
try {
await this.Voice.start("en-US", {
EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS: 1e3,
EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS: 1e3,
EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS: 1e3
});
if (isIOS) {
if (!this.timer) {
this.setTimer();
}
}
} catch (error) {
this.isVoiceRecognitionAvailable = false;
try {
if (this.Voice && typeof this.Voice.onSpeechError === "function") {
this.Voice.onSpeechError({
error: "Voice recognition failed to start"
});
}
} catch (errorHandlerError) {
console.error("Failed to call speech error handler:", errorHandlerError instanceof Error ? errorHandlerError.message : String(errorHandlerError));
}
}
};
stopRecognizing = async () => {
if (!this.isVoiceRecognitionAvailable || !this.Voice) {
console.warn("Voice recognition not available for stopping");
return;
}
try {
if (this.timer) {
clearInterval(this.timer);
this.timer = void 0;
}
await this.Voice.stop();
} catch (e) {
console.error("Error stopping voice recognition:", e instanceof Error ? e.message : String(e));
try {
await this.Voice.cancel();
console.log("Voice recognition cancelled after stop failure");
} catch (cancelError) {
console.error("Failed to cancel voice recognition:", cancelError instanceof Error ? cancelError.message : String(cancelError));
}
}
};
cancelRecognizing = async () => {
if (!this.isVoiceRecognitionAvailable || !this.Voice) {
console.warn("Voice recognition not available for canceling");
return;
}
try {
await this.Voice.cancel();
} catch (e) {
console.error("Error canceling voice recognition:", e instanceof Error ? e.message : String(e));
}
};
destroyRecognizer = async () => {
if (!this.Voice) {
return;
}
try {
await this.Voice.destroy();
this.Voice.removeAllListeners();
} catch (e) {
console.error("Error destroying voice recognizer:", e instanceof Error ? e.message : String(e));
}
};
};
var VoiceRecorder_default = VoiceHelper;
// bot-sdk/chat/components/InputToolbar.tsx
init_PlatformCheck();
var RECORD_STATE = {
onSpeechStart: "onSpeechStart",
onSpeechRecognized: "onSpeechRecognized",
onSpeechEnd: "onSpeechEnd",
onSpeechError: "onSpeechError",
onSpeechStop: "onSpeechStop"
};
var styles66 = StyleSheet64.create({
handle_container: {
alignItems: "center",
height: 26,
justifyContent: "center"
},
handle: {
width: 64,
height: 5.8,
backgroundColor: "white",
borderRadius: 10,
borderWidth: 0.45,
borderColor: "black",
justifyContent: "center"
},
pop_sub: {
marginTop: 5,
flexDirection: "column",
minWidth: normalize(80)
},
pop_main: {
position: "absolute",
end: 0,
justifyContent: "center",
paddingLeft: 15,
paddingTop: 5,
paddingEnd: 10,
paddingBottom: 5,
marginEnd: 5,
zIndex: 1
},
dropdown_main: {
alignItems: "center",
justifyContent: "center"
},
stt_title: {
color: "#697586",
fontSize: normalize(14),
backgroundColor: Color_default.transparent,
marginTop: 10,
textAlign: "left"
},
stt_mic_main: {
alignItems: "center",
justifyContent: "center"
},
stt_sub2: {
width: normalize(45),
minHeight: normalize(45),
borderRadius: 25,
backgroundColor: Color_default.bot_blue,
alignItems: "center",
justifyContent: "center",
position: "absolute",
top: -28
},
stt_sub: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
stt_main: {
alignItems: "center",
justifyContent: "center"
},
send_container1: {
backgroundColor: Color_default.bot_blue,
borderRadius: 7,
alignItems: "center",
justifyContent: "center",
alignSelf: "center"
},
goTextStyle: {
color: "#ffffff",
fontSize: normalize(12),
fontWeight: "500",
fontStyle: "normal",
fontFamily: "Inter"
},
send_container: {
width: normalize(40),
height: normalize(40),
borderRadius: 6,
alignItems: "center",
justifyContent: "center",
alignSelf: "center"
},
send_main_container: {
width: normalize(40),
height: normalize(40),
alignItems: "center",
justifyContent: "center",
marginHorizontal: 6,
backgroundColor: Color_default.red
},
container: {
justifyContent: "center"
},
primary: {
flexDirection: "row",
alignItems: "center"
},
accessory: {
height: 44
}
});
var InputToolbar = class extends React85.Component {
static contextType = ThemeContext;
voiceHelper;
constructor(props) {
super(props);
this.voiceHelper = new VoiceRecorder_default(
this.onSpeechStart,
this.onSpeechRecognized,
this.onSpeechEnd,
this.onSpeechError,
this.onSpeechResults,
this.onSpeechPartialResults,
this.onSpeechVolumeChanged
);
}
state = {
position: "absolute",
isSTTViewShow: false,
showMenuPopover: false,
showAttachedPopover: false,
isRecordingstart: false,
recordState: RECORD_STATE.onSpeechStop,
STT_value: ""
};
fadeInToBottomRef;
renderSuggestionsView() {
if (this.props.renderSuggestionsView) {
return this.props.renderSuggestionsView(this.props);
}
return null;
}
renderMediaView() {
if (this.props.renderMediaView) {
return this.props.renderMediaView(this.props);
}
return null;
}
renderActions = () => {
const { ...props } = this.props;
if (this.props.renderActions) {
return this.props.renderActions(props);
} else if (this.props.onPressActionButton) {
return this.props.onPressActionButton(props);
}
return this._renderActions(props);
};
_renderActions = (_props) => {
const theme = this.context;
return /* @__PURE__ */ React85.createElement(View71, { style: { flexDirection: "row" } }, theme?.v3?.footer?.buttons?.menu?.show && /* @__PURE__ */ React85.createElement(
TouchableOpacity40,
{
onPress: () => {
if (this.props.onMenuItemClick) {
this.props.onMenuItemClick?.(
theme?.v3?.footer?.buttons?.menu?.actions
);
}
},
style: { padding: 5, marginLeft: 5 }
},
/* @__PURE__ */ React85.createElement(
SvgIcon,
{
name: "MenuIcon",
width: normalize(22),
height: normalize(22),
color: theme?.v3?.footer?.buttons?.menu?.icon_color || theme?.v3?.footer?.icons_color || "#697586"
}
)
), theme?.v3?.footer?.buttons?.attachment?.show && /* @__PURE__ */ React85.createElement(
TouchableOpacity40,
{
onPress: () => {
if (this.props.onAttachedItemClick) {
this.props.onAttachedItemClick?.();
}
},
style: { padding: 5 }
},
/* @__PURE__ */ React85.createElement(
SvgIcon,
{
name: "AttachmentIcon",
width: normalize(22),
height: normalize(22),
color: theme?.v3?.footer?.buttons?.attachment?.icon_color || theme?.v3?.footer?.icons_color || "#697586"
}
)
));
};
renderSend() {
if (this.props.renderSend) {
return this.props.renderSend(this.props);
}
return this._renderSend(this.props);
}
_renderSend = (props) => {
let disabled = true;
let text = props?.text;
if (text && text?.trim().length > 0) {
disabled = false;
}
if (this.props?.isMediaAddedToSend) {
disabled = false;
if (this.state.isSTTViewShow) {
this.setState(
{
isRecordingstart: false,
isSTTViewShow: false,
recordState: RECORD_STATE.onSpeechStop
},
() => {
this.stopRecognizing();
this.fadeInToBottomRef?.startAnimation?.();
}
);
}
}
const theme = this.context;
const height = normalize(36);
return /* @__PURE__ */ React85.createElement(Send, { ...props }, disabled ? /* @__PURE__ */ React85.createElement(
View71,
{
pointerEvents: this.props.isMediaLoading ? "none" : "auto",
style: [styles66.send_container]
},
/* @__PURE__ */ React85.createElement(
TouchableOpacity40,
{
onPress: () => {
this.handleVoiceTextSwitch();
}
},
/* @__PURE__ */ React85.createElement(
SvgIcon,
{
name: this.state.isSTTViewShow ? "KeyboardIcon" : "MicIcon",
width: normalize(22),
height: normalize(22),
color: theme?.v3?.footer?.buttons?.attachment?.icon_color || theme?.v3?.footer?.icons_color || "#697586"
}
)
)
) : /* @__PURE__ */ React85.createElement(
View71,
{
pointerEvents: disabled ? "none" : "auto",
style: [
styles66.send_container1,
{
backgroundColor: disabled ? "grey" : theme?.v3?.body?.user_message?.bg_color ? theme?.v3?.body?.user_message?.bg_color : "#0D6EFD",
width: normalize(height),
height: normalize(height)
}
]
},
/* @__PURE__ */ React85.createElement(
SvgIcon,
{
name: "SendIcon",
width: normalize(16),
height: normalize(16),
color: theme?.v3?.body?.user_message?.color ? theme?.v3?.body?.user_message?.color : Color_default.white
}
)
));
};
renderComposer() {
if (this.props.renderComposer) {
return this.props.renderComposer(this.props);
}
const theme = this.context;
return /* @__PURE__ */ React85.createElement(
View71,
{
style: {
flex: 1,
marginTop: normalize(17),
marginBottom: normalize(17)
}
},
/* @__PURE__ */ React85.createElement(
FadeInToBottom_default,
{
getRef: (ref) => {
this.fadeInToBottomRef = ref;
}
},
/* @__PURE__ */ React85.createElement(Composer, { theme, ...this.props })
)
);
}
onSpeechStart = () => {
this.setState({
isRecordingstart: true,
recordState: RECORD_STATE.onSpeechStart
});
};
onSpeechRecognized = () => {
this.setState({ recordState: RECORD_STATE.onSpeechRecognized });
};
onSpeechEnd = () => {
this.setState({
isRecordingstart: false,
recordState: this.state.STT_value?.length > 0 ? RECORD_STATE.onSpeechEnd : RECORD_STATE.onSpeechStop
});
};
onSpeechError = async (e) => {
this.setState({
isRecordingstart: false,
recordState: this.state.STT_value?.length > 0 ? RECORD_STATE.onSpeechEnd : RECORD_STATE.onSpeechStop
});
console.log("onSpeechError --->:", e?.error);
try {
await this.voiceHelper.resetVoiceState();
} catch (resetError) {
console.warn("Failed to reset voice state after error:", String(resetError));
}
};
onSpeechResults = (e) => {
if (isIOS) {
this.onSpeechResultsIos(e);
} else {
if (e?.value?.length > 0) {
this.props?.onSTTValue?.(e.value[0]);
}
this.setState({
isRecordingstart: false,
recordState: RECORD_STATE.onSpeechStop,
STT_value: e.value?.[0]
});
this.stopRecognizing();
}
};
onSpeechResultsIos = (e) => {
this.setState({
STT_value: e.value?.[0]
});
};
onSpeechPartialResults = (e) => {
this.voiceHelper.resetCounter();
if (e?.value?.length > 0) {
this.props?.onSTTValue?.(e.value[0] + " ...");
}
};
onSpeechVolumeChanged = (_e) => {
};
handleVoiceTextSwitch = () => {
const newSTTViewState = !this.state.isSTTViewShow;
this.setState(
{
isSTTViewShow: newSTTViewState,
recordState: RECORD_STATE.onSpeechStop,
isRecordingstart: false
},
() => {
if (!this.state.isSTTViewShow) {
this.stopRecognizing();
if (this.props.onSendSTTClick) {
this.props.onSendSTTClick(true);
}
} else {
this.voiceHelper.resetVoiceState().catch(() => {
});
}
setTimeout(() => {
this.fadeInToBottomRef?.startAnimation?.();
}, 50);
}
);
};
startRecognizing = async () => {
try {
await this.voiceHelper.resetVoiceState();
setTimeout(() => {
this.voiceHelper.startRecognizing();
}, 100);
} catch (error) {
console.warn("Failed to reset voice state before start:", String(error));
this.voiceHelper.startRecognizing();
}
};
stopRecognizing = () => {
this.voiceHelper.stopRecognizing();
};
cancelRecognizing = () => {
this.voiceHelper.cancelRecognizing();
};
destroyRecognizer = () => {
this.voiceHelper.destroyRecognizer();
};
handleVoiceToTextSwitch = () => {
this.setState(
{
isSTTViewShow: false,
recordState: RECORD_STATE.onSpeechStop,
isRecordingstart: false,
STT_value: ""
},
() => {
this.stopRecognizing();
if (this.props.onSendSTTClick) {
this.props.onSendSTTClick(true);
}
setTimeout(() => {
this.fadeInToBottomRef?.startAnimation?.();
}, 50);
}
);
};
renderSTTView() {
return /* @__PURE__ */ React85.createElement(View71, { style: { flex: 1 } }, /* @__PURE__ */ React85.createElement(FadeInToTop_default, null, /* @__PURE__ */ React85.createElement(View71, { style: styles66.stt_sub }, /* @__PURE__ */ React85.createElement(View71, { style: styles66.stt_sub2 }, this.state.isRecordingstart ? /* @__PURE__ */ React85.createElement(WaveFormView, null) : /* @__PURE__ */ React85.createElement(
TouchableOpacity40,
{
onPress: () => {
if (this.state.recordState === RECORD_STATE.onSpeechEnd) {
if (this.props.onSendSTTClick) {
this.props.onSendSTTClick(false);
this.setState(
{
isSTTViewShow: false,
recordState: RECORD_STATE.onSpeechStop,
STT_value: ""
},
() => {
if (!this.state.isSTTViewShow) {
if (this.props.onSendSTTClick) {
this.props.onSendSTTClick(true);
}
}
this.fadeInToBottomRef?.startAnimation?.();
}
);
}
} else {
this.voiceHelper.startRecognizing();
}
},
style: styles66.stt_mic_main
},
/* @__PURE__ */ React85.createElement(
SvgIcon,
{
name: this.state.recordState === RECORD_STATE.onSpeechEnd ? "SendIcon" : "MicIcon",
width: normalize(22),
height: normalize(22),
color: Color_default.white
}
)
)), /* @__PURE__ */ React85.createElement(View71, { style: {} }, /* @__PURE__ */ React85.createElement(Text53, { style: styles66.stt_title }, this.getRecordTitle()), this.state.recordState !== RECORD_STATE.onSpeechStop && /* @__PURE__ */ React85.createElement(
TouchableOpacity40,
{
style: {
backgroundColor: Color_default.transparent,
justifyContent: "center",
alignItems: "center",
padding: 5
},
onPress: () => {
this.setState(
{
isSTTViewShow: false,
recordState: RECORD_STATE.onSpeechStop
},
() => {
if (!this.state.isSTTViewShow) {
if (this.props.onSendSTTClick) {
this.props.onSendSTTClick(true);
}
}
this.fadeInToBottomRef?.startAnimation?.();
}
);
}
},
/* @__PURE__ */ React85.createElement(
Text53,
{
style: {
color: "#4B4EDE"
}
},
"Cancel"
)
)))));
}
getRecordTitle() {
switch (this.state.recordState) {
case RECORD_STATE.onSpeechEnd:
return "Tap to send";
case RECORD_STATE.onSpeechStart:
case RECORD_STATE.onSpeechRecognized:
return "Listening... Tap to end";
case RECORD_STATE.onSpeechStop:
return "Tap microphone to speak";
}
return null;
}
renderQuickRepliesView(theme) {
if (this.props.renderQuickRepliesView) {
return this.props.renderQuickRepliesView({ ...this.props, theme });
}
return null;
}
renderAccessory() {
if (this.props.renderAccessory) {
return /* @__PURE__ */ React85.createElement(View71, { style: [styles66.accessory, this.props.accessoryStyle] }, this.props.renderAccessory(this.props));
}
return null;
}
renderSpeechToText() {
if (this.props.renderSpeechToText) {
return this.props.renderSpeechToText(this.props);
}
return null;
}
isShowActions = () => {
if (this.state.recordState === RECORD_STATE.onSpeechRecognized) {
return false;
}
if (this.state.recordState === RECORD_STATE.onSpeechStart) {
return false;
}
if (this.state.recordState === RECORD_STATE.onSpeechEnd) {
return false;
}
return true;
};
render() {
const theme = this.context;
const minHeight = this.state.isSTTViewShow && this.state.recordState === RECORD_STATE.onSpeechStop ? 52 : MIN_TOOL_BAR_HEIGHT || 72;
return /* @__PURE__ */ React85.createElement(View71, { style: [styles66.container, this.props.containerStyle] }, /* @__PURE__ */ React85.createElement(View71, { style: { flexDirection: "column" } }, this.renderSuggestionsView(), this.renderMediaView(), this.renderQuickRepliesView(theme), /* @__PURE__ */ React85.createElement(
View71,
{
style: [
styles66.primary,
this.props.primaryStyle,
{
minHeight: normalize(minHeight),
backgroundColor: theme?.v3?.footer?.bg_color || "#6975860D"
}
]
},
this.isShowActions() && this.renderActions(),
theme?.v3?.footer?.buttons?.microphone?.show ? this.state.isSTTViewShow ? this.renderSTTView() : this.renderComposer() : this.renderComposer(),
this.isShowActions() && this.renderSend()
)), this.renderAccessory(), this.renderSpeechToText());
}
};
// bot-sdk/chat/components/MessageContainer.tsx
init_esm_shims();
import * as React91 from "react";
import { PureComponent } from "react";
import {
View as View76,
StyleSheet as StyleSheet69,
TouchableOpacity as TouchableOpacity41,
Text as Text58,
Platform as Platform14,
FlatList as FlatList4,
ActivityIndicator as ActivityIndicator4
} from "react-native";
// bot-sdk/chat/components/Message.tsx
init_esm_shims();
import * as React90 from "react";
import { View as View75, StyleSheet as StyleSheet68 } from "react-native";
import FastImage11 from "react-native-fast-image";
// bot-sdk/chat/components/Bubble.tsx
init_esm_shims();
import * as React88 from "react";
import {
Text as Text55,
StyleSheet as StyleSheet66,
TouchableWithoutFeedback as TouchableWithoutFeedback2,
View as View73,
ToastAndroid,
Platform as Platform13,
Animated as Animated8
} from "react-native";
// bot-sdk/chat/components/Time.tsx
init_esm_shims();
import * as React86 from "react";
import { StyleSheet as StyleSheet65, Text as Text54, View as View72 } from "react-native";
import dayjs8 from "dayjs";
import "dayjs/locale/en";
import "dayjs/locale/en";
import advancedFormat4 from "dayjs/plugin/advancedFormat";
import customParseFormat4 from "dayjs/plugin/customParseFormat";
dayjs8.extend(advancedFormat4);
dayjs8.extend(customParseFormat4);
var containerStyle = {
//marginLeft: 5,
// marginRight: 10,
marginBottom: 5,
backgroundColor: "transparent"
};
var textStyle2 = {
fontSize: normalize(10),
backgroundColor: "transparent",
textAlign: "right",
marginTop: 5,
opacity: 0.8
};
var styles67 = {
main_con: {
flexDirection: "row",
backgroundColor: "transparent",
minHeight: normalize(20),
justifyContent: "center",
alignItems: "center"
},
left: StyleSheet65.create({
container: {
...containerStyle,
marginTop: 1
},
text: {
color: Color_default.timeTextColor,
...textStyle2
}
}),
center: StyleSheet65.create({
container: {
...containerStyle
},
text: {
color: Color_default.timeTextColor,
...textStyle2
}
}),
right: StyleSheet65.create({
container: {
...containerStyle,
marginTop: 0
},
text: {
// color: Color.white,
...textStyle2
}
})
};
var Time = class extends BaseView_default {
static contextType = ThemeContext;
// private actionSheet: any;
constructor(props) {
super(props);
}
static defaultProps;
// call this function, passing-in your date
dateToFromNowDaily = (myDate) => {
const now = dayjs8();
const date = dayjs8(myDate);
const diffInDays = date.diff(now, "day");
if (diffInDays === -1) {
return date.format("hh:mm A, [Yesterday]");
} else if (diffInDays === 0) {
return date.format("hh:mm A, [Today]");
} else if (diffInDays === 1) {
return date.format("hh:mm A, [Tomorrow]");
} else if (diffInDays < -1 && diffInDays >= -7) {
return date.format("[Last] dddd");
} else if (diffInDays > 1 && diffInDays <= 7) {
return date.format("hh:mm A, dddd");
} else {
return date.format("MM/DD/YYYY");
}
};
render() {
const { position, createdOn } = this.props;
if (createdOn && position) {
return /* @__PURE__ */ React86.createElement(
View72,
{
style: [
styles67[position].container
]
},
/* @__PURE__ */ React86.createElement(
Text54,
{
style: [
{
fontSize: normalize(10),
backgroundColor: "transparent",
marginTop: normalize(3),
opacity: 0.8
},
{
color: this.props?.theme?.v3?.body?.time_stamp?.color || "#1d2939",
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
{
fontSize: normalize(9)
}
]
},
" ",
this.dateToFromNowDaily(createdOn)
)
);
}
return /* @__PURE__ */ React86.createElement(React86.Fragment, null);
}
};
// bot-sdk/chat/BotChatContext.tsx
init_esm_shims();
import * as React87 from "react";
var BotChatContext = React87.createContext({
getLocale: () => "en",
actionSheet: () => ({
showActionSheetWithOptions: () => {
}
})
});
var useChatContext = () => React87.useContext(BotChatContext);
// bot-sdk/chat/components/Bubble.tsx
init_PlatformCheck();
import KoraBotClient from "rn-kore-bot-socket-lib-v77";
var Bubble = class extends React88.Component {
static contextType = ThemeContext;
actionSheet;
static Bubble;
constructor(props) {
super(props);
this.actionSheet = BotChatContext;
this.state = {
shakeAnim: new Animated8.Value(0),
// Initial X position
shakeInterpolate: new Animated8.Value(0)
};
}
static defaultProps;
componentDidMount() {
this.setState({
shakeInterpolate: this.state.shakeAnim.interpolate({
inputRange: [0, 0.5, 1],
outputRange: [0, -10, 0]
// Adjust the values for intensity
})
});
}
getTextComponent = () => {
let message = this.props.currentMessage?.message?.[0]?.component?.payload?.text;
if (!message) {
message = this.props.currentMessage?.message?.[0]?.component?.payload;
}
if (message?.payload && message?.payload?.text) {
return message?.payload?.text;
}
if (typeof message === "string") {
return message;
}
return void 0;
};
shake = () => {
this.state.shakeAnim.setValue(0);
Animated8.sequence([
Animated8.timing(this.state.shakeAnim, {
toValue: 1,
duration: 500,
// Duration of the shake
useNativeDriver: true
})
]).start(() => {
this.state.shakeAnim.setValue(0);
});
};
onLongPress = (event, isRight) => {
if (!isRight) {
return;
}
let textComponent = this.getTextComponent();
console.log("---->: onLongPress clicked <----:");
if (!textComponent) {
return;
}
try {
this.shake();
} catch (error) {
}
if (this.props.onLongPress) {
this.props.onLongPress(this.context, textComponent);
}
if (isIOS) {
} else {
try {
if (isAndroid) {
const androidVersion = parseInt(Platform13.Version, 10);
if (androidVersion < 33) {
ToastAndroid.showWithGravity(
"Copied",
ToastAndroid.SHORT,
ToastAndroid.BOTTOM
);
}
}
} catch (error) {
console.log("CustomClipboard Error -->:", error);
}
}
};
styledBubbleToNext = () => {
const { currentMessage, nextMessage, position, containerToNextStyle } = this.props;
if (currentMessage && nextMessage && position && isSameUser(currentMessage, nextMessage) && isSameDay(currentMessage, nextMessage)) {
return [
styles68[position].containerToNext,
containerToNextStyle && containerToNextStyle[position]
];
}
return null;
};
styledBubbleToPrevious = () => {
const {
currentMessage,
previousMessage,
position,
containerToPreviousStyle
} = this.props;
if (currentMessage && previousMessage && position && isSameUser(currentMessage, previousMessage) && isSameDay(currentMessage, previousMessage)) {
return [
styles68[position].containerToPrevious,
containerToPreviousStyle && containerToPreviousStyle[position]
];
}
return null;
};
renderBotText = (template_type) => {
let text = null;
if (this.props.currentMessage && this.props.currentMessage.message) {
let message = this.props.currentMessage.message[0];
text = message?.component?.payload?.text;
text = text ? text : message?.component?.payload?.payload?.text;
text = text ? text : message?.component?.payload?.text?.text;
if (template_type && template_type !== TEMPLATE_TYPES.QUICK_REPLIES) {
text = text ? text : message?.component?.payload;
}
}
if (text && typeof text === "object") {
let newText = text;
text = newText?.text;
}
if (!text) {
return null;
}
if (typeof text !== "string") {
console.log("\u26A0\uFE0F Bot text value is not a string type:", text);
console.log("\u26A0\uFE0F Type of text:", typeof text);
console.log("\u26A0\uFE0F Full message data:", JSON.stringify(this.props.currentMessage, null, 2));
return /* @__PURE__ */ React88.createElement(React88.Fragment, null);
}
console.log("\u2705 Rendering bot text:", text);
const theme = this.context;
return /* @__PURE__ */ React88.createElement(
BotText,
{
text,
isFilterApply: true,
theme
}
);
};
renderMessageText = () => {
if (this.props.currentMessage) {
const { containerStyle: containerStyle2, wrapperStyle, optionTitles, ...messageTextProps } = this.props;
if (this.props.renderMessageText) {
return this.props.renderMessageText(messageTextProps);
}
const theme = this.context;
return /* @__PURE__ */ React88.createElement(MessageText_default, { ...messageTextProps, theme });
}
return null;
};
renderTicks = () => {
return null;
};
renderBubbleViews = (templateType, payload, theme) => {
const { containerStyle: containerStyle2, wrapperStyle, optionTitles, ...messageTextProps } = this.props;
return /* @__PURE__ */ React88.createElement(
BotTemplate,
{
templateType,
payload,
theme,
currentMessage: this.props.currentMessage,
messageTextProps,
onListItemClick: this.props.onListItemClick
}
);
};
checkIsLastMessage = () => {
const { nextMessage } = this.props;
if (this.isHiddenDialog(nextMessage)) {
return true;
}
if (this.isEndOfTask(nextMessage)) {
return true;
}
return !nextMessage || Object.keys(nextMessage).length === 0 ? true : false;
};
isHiddenDialog = (data) => {
if (data && data.message && data.message[0] && data.message[0].component && data.message[0].component.type === "template" && data.message[0].component.payload) {
let payload = data.message[0].component.payload;
if (payload.payload && payload.payload.template_type) {
if (TEMPLATE_TYPES.HIDDEN_DIALOG === payload.payload.template_type) {
return true;
}
}
}
return false;
};
isEndOfTask = (data) => {
if (data && data.message && data.message[0] && data.message[0].component && data.message[0].component.payload) {
let payload = data.message[0].component.payload;
if (payload && payload.endOfTask) {
return true;
}
}
return false;
};
getPayload = (type) => {
let payloadProps = {};
if (type === TEMPLATE_TYPES.TEXT || type === TEMPLATE_TYPES.USER_ATTACHEMENT_TEMPLATE) {
payloadProps = this.props?.currentMessage?.message?.[0]?.component;
} else {
payloadProps = this.props?.currentMessage?.message?.[0]?.component?.payload?.payload;
}
if (!payloadProps) {
return {};
}
return {
...payloadProps,
onListItemClick: this.props.onListItemClick,
isLastMessage: this.checkIsLastMessage()
};
};
renderBubbleContent = () => {
let templateType = getTemplateType(this.props.currentMessage?.message);
const theme = this.context;
let payload = this.getPayload(templateType);
if (this.props?.templateInjection) {
let templateInjection = this.props?.templateInjection;
let CustomView = templateInjection?.get?.(templateType);
if (CustomView) {
try {
return /* @__PURE__ */ React88.createElement(
CustomView,
{
payload,
onListItemClick: this.props.onListItemClick,
isLastMessage: this.checkIsLastMessage()
}
);
} catch (error) {
console.log("templateType :", templateType);
console.log("CustomView error:", error);
}
}
}
return /* @__PURE__ */ React88.createElement(View73, { style: { marginTop: normalize(0) } }, this.renderBubbleViews(templateType, payload, theme));
};
renderUsername = () => {
return null;
};
renderTime = () => {
let createdOn = this.props.currentMessage?.createdOn || this.props.currentMessage.message?.[0]?.component?.payload?.createdOn;
if (createdOn) {
const { containerStyle: containerStyle2, wrapperStyle, textStyle: textStyle3, ...timeProps } = this.props;
if (this.props.renderTime) {
return this.props.renderTime(timeProps);
}
const theme = this.context;
const isUserMessage = this.props.currentMessage?.type === "user_message";
return /* @__PURE__ */ React88.createElement(View73, { style: { flexDirection: "row" } }, isUserMessage && /* @__PURE__ */ React88.createElement(
Time,
{
createdOn,
...timeProps,
theme
}
), /* @__PURE__ */ React88.createElement(
Text55,
{
style: [
{
fontSize: normalize(10),
textAlign: "center",
opacity: 0.8,
marginStart: 5
},
isUserMessage && {
marginEnd: 10
},
{
color: theme?.v3?.body?.time_stamp?.color || "#1d2939",
fontFamily: theme?.v3?.body?.font?.family || "Inter",
opacity: 1
},
{
fontWeight: "700",
alignSelf: "center",
fontSize: normalize(10)
}
]
},
isUserMessage ? "You" : KoraBotClient.getInstance().getBotName()
), !isUserMessage && /* @__PURE__ */ React88.createElement(
Time,
{
createdOn,
...timeProps,
theme
}
));
}
return /* @__PURE__ */ React88.createElement(React88.Fragment, null);
};
render() {
const { position, containerStyle: containerStyle2, wrapperStyle, bottomContainerStyle } = this.props;
const theme = this.context;
return /* @__PURE__ */ React88.createElement(
View73,
{
style: [
styles68[position].container,
containerStyle2 && containerStyle2[position]
]
},
theme?.v3?.body?.time_stamp?.show && theme?.v3?.body?.time_stamp?.position === "top" && this.renderTime(),
/* @__PURE__ */ React88.createElement(
View73,
{
style: [
styles68[position].wrapper,
this.styledBubbleToNext(),
this.styledBubbleToPrevious(),
wrapperStyle && wrapperStyle[position],
theme?.v3?.body?.icon?.show && position === "left" && { marginLeft: 5 }
]
},
/* @__PURE__ */ React88.createElement(
TouchableWithoutFeedback2,
{
onLongPress: (event) => this.onLongPress(event, position === "right"),
accessibilityRole: "text",
...this.props.touchableProps
},
/* @__PURE__ */ React88.createElement(
Animated8.View,
{
style: [
{ transform: [{ translateX: this.state.shakeInterpolate }] }
]
},
this.renderBubbleContent(),
/* @__PURE__ */ React88.createElement(
View73,
{
style: [
styles68[position].bottom,
bottomContainerStyle && bottomContainerStyle[position]
]
},
this.renderUsername(),
this.renderTicks()
)
)
)
),
theme?.v3?.body?.time_stamp?.show && theme?.v3?.body?.time_stamp?.position === "bottom" && this.renderTime()
);
}
};
var styles68 = {
left: StyleSheet66.create({
container: {
flex: 1,
alignItems: "flex-start"
},
wrapper: {
marginLeft: 8
},
containerToNext: {
borderBottomLeftRadius: 3
},
containerToPrevious: {
borderTopLeftRadius: 3
},
bottom: {
flexDirection: "row",
justifyContent: "flex-start"
}
}),
right: StyleSheet66.create({
container: {
flex: 1,
alignItems: "flex-end"
},
wrapper: {
marginRight: normalize(5)
},
containerToNext: {
borderBottomRightRadius: 3
},
containerToPrevious: {
borderTopRightRadius: 3
},
bottom: {
flexDirection: "row",
justifyContent: "flex-end"
}
}),
content: StyleSheet66.create({
tick: {
fontSize: normalize(10),
backgroundColor: Color_default.backgroundTransparent,
color: Color_default.black
},
tickView: {
flexDirection: "row",
marginRight: 10
},
username: {
top: -3,
left: 0,
fontSize: normalize(12),
backgroundColor: "transparent",
color: "#aaa"
},
usernameView: {
flexDirection: "row",
marginHorizontal: 10
}
}),
center: StyleSheet66.create({
containerToNext: {},
containerToPrevious: {},
container: {},
wrapper: {},
bottom: {}
})
};
Bubble.defaultProps = {
currentMessage: null
};
// bot-sdk/chat/components/Day.tsx
init_esm_shims();
import * as React89 from "react";
import {
StyleSheet as StyleSheet67,
Text as Text56,
View as View74
} from "react-native";
import dayjs9 from "dayjs";
import "dayjs/locale/en";
import advancedFormat5 from "dayjs/plugin/advancedFormat";
import customParseFormat5 from "dayjs/plugin/customParseFormat";
dayjs9.extend(advancedFormat5);
dayjs9.extend(customParseFormat5);
var styles69 = StyleSheet67.create({
container: {
alignItems: "center",
justifyContent: "center",
marginTop: 5,
marginBottom: 10
},
text: {
backgroundColor: Color_default.backgroundTransparent,
color: Color_default.defaultColor,
fontSize: 12,
fontWeight: "600",
// opacity: 0.6,
padding: normalize(5)
}
});
function Day({
dateFormat = DATE_FORMAT,
currentMessage,
previousMessage,
containerStyle: containerStyle2,
wrapperStyle,
textStyle: textStyle3,
isFirstMsz = false,
theme
}) {
const { getLocale } = useChatContext();
if (currentMessage == null || isSameDay(currentMessage, previousMessage)) {
if (!isFirstMsz) {
return null;
}
}
return /* @__PURE__ */ React89.createElement(View74, { style: [styles69.container, containerStyle2] }, /* @__PURE__ */ React89.createElement(View74, { style: wrapperStyle }, /* @__PURE__ */ React89.createElement(
Text56,
{
style: [
styles69.text,
textStyle3,
{
color: theme?.v3?.body?.time_stamp?.color,
fontFamily: theme?.v3?.body?.font?.family,
...botTimeStyles[theme?.v3?.body?.font?.size || "medium"]?.size
}
]
},
dayjs9(currentMessage.createdOn).locale(getLocale()).format(dateFormat)
)));
}
// bot-sdk/chat/components/Message.tsx
import AsyncStorage2 from "@react-native-async-storage/async-storage";
var styles70 = {
bot_icon: {
height: normalize(23),
width: normalize(23),
marginTop: 10
},
bot_icon_con2: {
height: normalize(23),
width: normalize(23),
borderRadius: 100
},
bot_icon_con: {
marginLeft: normalize(10),
marginEnd: normalize(-2)
},
image: {
height: normalize(25),
width: normalize(25),
resizeMode: "stretch",
margin: 0
},
left: StyleSheet68.create({
container: {
flexDirection: "row",
alignItems: "flex-end",
justifyContent: "flex-start",
marginLeft: 8,
marginRight: 0
}
}),
center: StyleSheet68.create({
container: {
flexDirection: "row",
alignItems: "stretch",
justifyContent: "center",
marginLeft: 0,
marginRight: 0
}
}),
right: StyleSheet68.create({
container: {
flexDirection: "row",
alignItems: "flex-end",
justifyContent: "flex-end",
marginLeft: 0,
marginRight: 8
}
})
};
var Message = class extends React90.Component {
botIconUrl = null;
state = {
imageLoadFailed: false
};
static defaultProps = {
renderAvatar: null,
renderDay: null,
position: "left",
currentMessage: {},
nextMessage: {},
previousMessage: {},
user: {},
containerStyle: {},
showUserAvatar: false,
inverted: true,
shouldUpdateMessage: null,
onListItemClick: () => {
},
onSendText: () => {
}
};
// shouldComponentUpdate(nextProps: MessageProps): boolean {
// const next = nextProps.currentMessage;
// const current = this.props.currentMessage;
// const {previousMessage, nextMessage} = this.props;
// const nextPropsMessage = nextProps.nextMessage;
// const nextPropsPreviousMessage = nextProps.previousMessage;
// const shouldUpdate =
// (this.props.shouldUpdateMessage &&
// this.props.shouldUpdateMessage(this.props, nextProps)) ||
// false;
// return (
// next.sent !== current.sent ||
// next.received !== current.received ||
// next.pending !== current.pending ||
// next.createdOn !== current.createdOn ||
// next.text !== current.text ||
// next.image !== current.image ||
// next.video !== current.video ||
// next.audio !== current.audio ||
// previousMessage !== nextPropsPreviousMessage ||
// nextMessage !== nextPropsMessage ||
// shouldUpdate
// );
// }
renderDay() {
if (this.props.currentMessage && this.props.currentMessage.createdOn) {
const { containerStyle: containerStyle2, ...props } = this.props;
if (this.props.renderDay) {
return this.props.renderDay(props);
}
return /* @__PURE__ */ React90.createElement(Day, { ...props });
}
return null;
}
renderBubble() {
const { containerStyle: containerStyle2, ...props } = this.props;
const newProps = {
...props,
onListItemClick: this.props.onListItemClick,
onSendText: this.props.onSendText
};
return /* @__PURE__ */ React90.createElement(Bubble, { ...newProps });
}
setBotIconUrl = async (url) => {
if (this.botIconUrl !== url) {
this.botIconUrl = url;
this.setState({ imageLoadFailed: false });
AsyncStorage2.setItem(BOT_ICON_URL, url);
}
};
renderAvatar() {
const { user, currentMessage, showUserAvatar } = this.props;
const isTimeTop = this.props.isDisplayTime && this.props?.theme?.v3?.body?.time_stamp?.show && this.props?.theme?.v3?.body?.time_stamp?.position === "top";
if (currentMessage?.type === "bot_response" && this.props?.theme?.v3?.body?.icon?.show) {
const iconUrl = currentMessage.icon || this.props.fallbackBotIcon || null;
if (iconUrl) {
this.setBotIconUrl(iconUrl);
}
const isShowBotIcon = this.props?.theme?.v3?.body?.icon?.bot_icon || false;
if (!isShowBotIcon) {
return /* @__PURE__ */ React90.createElement(View75, { style: { width: normalize(5) } });
}
return /* @__PURE__ */ React90.createElement(
View75,
{
style: [
styles70.bot_icon_con
]
},
/* @__PURE__ */ React90.createElement(
View75,
{
style: [
styles70.bot_icon_con2,
{
backgroundColor: Color_default.transparent,
alignItems: "center",
justifyContent: "center"
}
]
},
/* @__PURE__ */ React90.createElement(
FastImage11,
{
source: this.state.imageLoadFailed || !iconUrl ? placeholder.default_bot_icon : {
uri: iconUrl,
priority: FastImage11.priority.high,
cache: FastImage11.cacheControl.immutable
},
resizeMode: FastImage11.resizeMode.cover,
style: [styles70.bot_icon, { alignSelf: "center" }],
onError: () => {
this.setState({ imageLoadFailed: true });
}
}
)
)
);
}
return /* @__PURE__ */ React90.createElement(View75, { style: { width: normalize(5) } });
}
render() {
const { currentMessage, nextMessage, position, containerStyle: containerStyle2 } = this.props;
if (currentMessage) {
const sameUser = isSameUser(currentMessage, nextMessage);
const newPosition = position ? position : "left";
return /* @__PURE__ */ React90.createElement(View75, null, /* @__PURE__ */ React90.createElement(View75, { style: { flexDirection: "column" } }, this.renderDay(), /* @__PURE__ */ React90.createElement(View75, { style: { flexDirection: "row", marginBottom: normalize(5) } }, this.renderAvatar(), /* @__PURE__ */ React90.createElement(
View75,
{
style: [
styles70[newPosition].container,
{ marginBottom: sameUser ? 2 : 10 },
!this.props.inverted && { marginBottom: 2 },
containerStyle2 && containerStyle2[position ? position : "left"],
{ flex: 1 },
this.props?.theme?.v3?.body?.icon?.show && currentMessage?.type === "bot_response" && position === "left" && {
marginLeft: 0
},
position === "right" && {
marginRight: normalize(8)
}
]
},
this.renderBubble()
))));
}
return /* @__PURE__ */ React90.createElement(React90.Fragment, null);
}
};
// bot-sdk/chat/components/MessageContainer.tsx
import KoreBotClient, { ApiService } from "rn-kore-bot-socket-lib-v77";
var styles71 = StyleSheet69.create({
container: {
flex: 1
},
containerAlignTop: {
flexDirection: "column",
alignItems: "flex-end",
justifyContent: "flex-end",
flex: 1,
backgroundColor: Color_default.white
},
history_container: {
flex: 1,
justifyContent: "center",
// center vertically
alignItems: "center"
// center horizontally
},
heading: {
fontSize: 14,
fontWeight: "400",
color: "#000"
},
card: {
backgroundColor: "white",
borderRadius: 8,
paddingHorizontal: 7,
paddingVertical: 3,
margin: 5,
maxWidth: "80%",
alignItems: "center",
justifyContent: "center"
},
shadowProp: {
shadowColor: "#171717",
shadowOffset: { width: -2, height: 4 },
shadowOpacity: 0.2,
shadowRadius: 3,
elevation: 4
// Android shadow
},
contentContainerStyle: {
//flexGrow: 1,
//justifyContent: 'flex-end',
},
emptyChatContainer: {
flex: 1,
transform: [{ scaleY: -1 }]
},
headerWrapper: {
flex: 1
},
listStyle: {
flex: 1
},
scrollToBottomStyle: {
opacity: 0.8,
position: "absolute",
right: 10,
bottom: 30,
zIndex: 999,
height: 40,
width: 40,
borderRadius: 20,
backgroundColor: Color_default.white,
alignItems: "center",
justifyContent: "center",
shadowColor: Color_default.black,
shadowOpacity: 0.5,
shadowOffset: { width: 0, height: 0 },
shadowRadius: 1
}
});
var MessageContainer = class extends PureComponent {
listLayoutHeight = 0;
listContentHeight = 0;
static contextType = ThemeContext;
static defaultProps = {
messages: [],
isTyping: false,
renderChatEmpty: null,
renderFooter: null,
renderMessage: null,
onLoadEarlier: () => {
},
onQuickReply: () => {
},
inverted: true,
loadEarlier: false,
listViewProps: {},
invertibleScrollViewProps: {},
extraData: null,
scrollToBottom: false,
scrollToBottomOffset: 0,
alignTop: false,
scrollToBottomStyle: {},
infiniteScroll: false,
isLoadingEarlier: false,
position: "right",
onListItemClick: void 0
};
state = {
showScrollBottom: false,
hasMoreHististory: true,
loadingHistory: false,
isListScrollable: false
};
renderFooter = () => {
if (this.props.renderFooter) {
return this.props.renderFooter();
}
return null;
};
// renderLoadEarlier = (): any => {
// if (this.props.loadEarlier === true) {
// const loadEarlierProps = {
// ...this.props,
// };
// if (this.props.renderLoadEarlier) {
// return this.props.renderLoadEarlier(loadEarlierProps);
// }
// return <LoadEarlier {...loadEarlierProps} />;
// }
// return null;
// };
scrollTo(options) {
if (this.props.forwardRef && this.props.forwardRef.current && options) {
this.props.forwardRef.current.scrollToOffset(options);
}
}
scrollToBottom = (animated) => {
const { inverted } = this.props;
if (inverted) {
this.scrollTo({ offset: 0, animated });
} else if (this.props.forwardRef && this.props.forwardRef.current) {
this.props.forwardRef?.current?.scrollToEnd({ animated });
}
};
handleOnScroll = (event) => {
const {
nativeEvent: {
contentOffset: { y: contentOffsetY },
contentSize: { height: contentSizeHeight },
layoutMeasurement: { height: layoutMeasurementHeight }
}
} = event;
const { scrollToBottomOffset } = this.props;
if (this.props.onDragList) {
this.props.onDragList();
}
if (this.props.inverted) {
if (contentOffsetY > scrollToBottomOffset) {
this.setState({ showScrollBottom: true });
} else {
this.setState({ showScrollBottom: false });
}
} else {
if (contentOffsetY < scrollToBottomOffset && contentSizeHeight - layoutMeasurementHeight > scrollToBottomOffset) {
this.setState({ showScrollBottom: true });
} else {
this.setState({ showScrollBottom: false });
}
}
};
/** Most recent bot_response in the list that has an icon (for streaming chunks that omit icon). */
getFallbackBotIcon = (messages) => {
if (!messages?.length)
return null;
for (let i = 0; i < messages.length; i++) {
const m = messages[i];
if (m?.type === "bot_response" && m?.icon)
return m.icon;
}
return null;
};
renderRow = ({ item, index }) => {
const { messages, inverted, ...restProps } = this.props;
if (messages) {
const previousMessage = (inverted ? messages[index + 1] : messages[index - 1]) || {};
const nextMessage = (inverted ? messages[index - 1] : messages[index + 1]) || {};
const fallbackBotIcon = this.getFallbackBotIcon(messages);
let position = this.props.position;
let isDisplayTime = true;
switch (item.type) {
case "bot_response":
position = "left";
if (item.message && item.message[0] && item.message[0].component && item.message[0].component.payload && item.message[0].component.payload.type && item.message[0].component.type === "template" && item.message[0].component.payload.payload && item.message[0].component.payload.payload.template_type && item.message[0].component.payload.payload.template_type !== TEMPLATE_TYPES.START_TIMER && item.message[0].component.payload.payload.template_type !== TEMPLATE_TYPES.QUICK_REPLIES && item.message[0].component.payload.payload.template_type !== TEMPLATE_TYPES.LIVE_AGENT_TEMPLATE && item.message[0].component.payload.payload.template_type !== TEMPLATE_TYPES.SYSTEM_TEMPLATE) {
}
if (item?.message?.[0]?.component?.type === "template" && item?.message?.[0]?.component?.payload?.type === "image" && item.message[0].component.payload?.payload) {
isDisplayTime = false;
}
break;
case "user_message":
position = "right";
break;
default:
break;
}
let totalLength = messages ? messages.length : 0;
item = {
...item,
totalLength,
itemIndex: index,
position
};
const messageProps = {
...restProps,
key: item._id,
currentMessage: item,
previousMessage,
inverted,
nextMessage,
itemIndex: index,
isFirstMsz: totalLength - 1 === index,
position,
onListItemClick: this.onListItemClick,
onSendText: this.props.onSendText,
isDisplayTime,
fallbackBotIcon: fallbackBotIcon ?? void 0
};
if (this.props.renderMessage) {
return this.props.renderMessage(messageProps);
}
const theme = this.context;
return /* @__PURE__ */ React91.createElement(Message, { ...messageProps, theme });
}
return null;
};
onListItemClick = (template_type, item, isFromViewMore) => {
if (this.props.onListItemClick) {
const theme = this.context;
this.props.onListItemClick(template_type, item, isFromViewMore, theme);
}
};
renderChatEmpty = () => {
if (this.props.renderChatEmpty) {
return this.props.inverted ? this.props.renderChatEmpty() : /* @__PURE__ */ React91.createElement(View76, { style: styles71.emptyChatContainer }, this.props.renderChatEmpty());
}
return /* @__PURE__ */ React91.createElement(View76, { style: styles71.container });
};
renderHeaderWrapper = () => /* @__PURE__ */ React91.createElement(View76, { style: styles71.headerWrapper }, this.renderLoadEarlier());
renderScrollBottomComponent() {
const { scrollToBottomComponent } = this.props;
if (scrollToBottomComponent) {
return scrollToBottomComponent();
}
return /* @__PURE__ */ React91.createElement(Text58, null, "V");
}
renderScrollToBottomWrapper() {
const propsStyle = this.props.scrollToBottomStyle || {};
return /* @__PURE__ */ React91.createElement(View76, { style: [styles71.scrollToBottomStyle, propsStyle] }, /* @__PURE__ */ React91.createElement(
TouchableOpacity41,
{
onPress: () => this.scrollToBottom(false),
hitSlop: { top: 5, left: 5, right: 5, bottom: 5 }
},
this.renderScrollBottomComponent()
));
}
onLayoutList = (e) => {
const height = e?.nativeEvent?.layout?.height;
if (typeof height === "number" && height > 0 && height !== this.listLayoutHeight) {
this.listLayoutHeight = height;
this.setState({ isListScrollable: this.isListScrollable() });
}
if (!this.props.inverted && !!this.props.messages && this.props.messages?.length) {
setTimeout(
() => this.scrollToBottom && this.scrollToBottom(true),
15 * (this.props.messages?.length || 1)
);
}
};
isListScrollable = () => {
if (this.listLayoutHeight && this.listContentHeight) {
const canScroll = this.listContentHeight > this.listLayoutHeight + 1;
return canScroll;
}
return false;
};
onEndReached = (distanceFromEnd) => {
const { loadEarlier, onLoadEarlier, infiniteScroll, isLoadingEarlier } = this.props;
if (infiniteScroll && distanceFromEnd > 0 && distanceFromEnd <= 100 && loadEarlier && onLoadEarlier && !isLoadingEarlier && Platform14.OS !== "web") {
onLoadEarlier();
}
};
getItemId = (pattern) => {
let _pattern = pattern || "xyxxyx";
_pattern = _pattern.replace(/[xy]/g, function(c) {
const r = Math.random() * 16 | 0;
const v = c === "x" ? r : r & 3 | 8;
return v.toString(16);
});
return _pattern;
};
keyExtractor = (item) => {
const itemId = item.timeMillis;
item = {
...item,
itemId
};
return item.itemId;
};
loadHistory = async () => {
if (this.state.hasMoreHististory) {
const apiService = new ApiService(this.props.botConfig.botUrl, KoreBotClient.getInstance());
await apiService.getBotHistory(this.props.messages.length, 10, this.props.botConfig, (response) => {
this.setState({ loadingHistory: false });
if (response == null) {
console.log("BotHistory null");
return;
}
this.setState({ hasMoreHististory: response.data.moreAvailable });
this.props.onHistoryLoaded(response.data.botHistory);
});
} else {
await new Promise((res) => setTimeout(res, 1e3));
this.setState({ loadingHistory: false });
}
};
renderLoadEarlier = () => {
if (!this.state.isListScrollable)
return null;
if (this.props.loadEarlier) {
return /* @__PURE__ */ React91.createElement(ActivityIndicator4, { size: "small", style: { padding: 10 } });
}
return /* @__PURE__ */ React91.createElement(View76, { style: styles71.history_container }, /* @__PURE__ */ React91.createElement(
TouchableOpacity41,
{
style: [styles71.card, styles71.shadowProp],
onPress: this.loadHistory
},
/* @__PURE__ */ React91.createElement(Text58, { style: styles71.heading }, LocalizationManager.getLocalizedString("load_earlier_messages"))
));
};
render() {
const { inverted } = this.props;
return /* @__PURE__ */ React91.createElement(
View76,
{
style: [
this.props.alignTop ? styles71.containerAlignTop : styles71.container,
{ backgroundColor: this.getBackgroundColor() }
]
},
this.state.showScrollBottom && this.props.scrollToBottom ? this.renderScrollToBottomWrapper() : null,
/* @__PURE__ */ React91.createElement(
TouchableOpacity41,
{
style: { paddingHorizontal: 10, paddingVertical: 5, borderRadius: 10, backgroundColor: "#ffffff", alignSelf: "flex-end", marginEnd: 5 },
onPress: (v) => {
if (!this.state.loadingHistory) {
this.setState({ loadingHistory: true });
this.loadHistory();
}
}
},
/* @__PURE__ */ React91.createElement(Text58, { style: { fontSize: 10, color: "#000000", fontWeight: "bold", display: "none" } }, "Load history")
),
/* @__PURE__ */ React91.createElement(
FlatList4,
{
ref: this.props.forwardRef,
extraData: [this.props.extraData, this.props.isTyping],
keyExtractor: this.keyExtractor,
enableEmptySections: true,
automaticallyAdjustContentInsets: false,
inverted,
showsVerticalScrollIndicator: false,
data: this.props.messages,
contentContainerStyle: styles71.contentContainerStyle,
renderItem: this.renderRow,
...this.props.invertibleScrollViewProps,
ListEmptyComponent: this.renderChatEmpty,
ListFooterComponent: inverted ? this.renderHeaderWrapper : this.renderFooter,
ListHeaderComponent: inverted ? this.renderFooter : this.renderHeaderWrapper,
onScroll: this.handleOnScroll,
scrollEventThrottle: 100,
onLayout: this.onLayoutList,
onEndReached: this.onEndReached,
onEndReachedThreshold: 0.1,
...this.props.listViewProps,
nestedScrollEnabled: true,
scrollEnabled: true,
keyboardShouldPersistTaps: "always",
keyboardDismissMode: "on-drag",
estimatedItemSize: 100,
contentInsetAdjustmentBehavior: "scrollableAxes",
scrollIndicatorInsets: { top: 0, left: 20, bottom: 0, right: 0 },
onContentSizeChange: (w, h) => {
if (typeof h === "number" && h > 0 && h !== this.listContentHeight) {
this.listContentHeight = h;
this.setState({ isListScrollable: this.isListScrollable() });
}
}
}
),
this.state.loadingHistory ? /* @__PURE__ */ React91.createElement(ActivityIndicator4, { size: "large", style: { flex: 1, width: getWindowWidth(), position: "absolute" } }) : /* @__PURE__ */ React91.createElement(React91.Fragment, null)
);
}
getBackgroundColor = () => {
const theme = this.context;
if (theme?.v3?.body?.background?.type === "color") {
return theme?.v3?.body?.background?.color || "#FFFFFF";
}
return "#FFFFFF";
};
};
// bot-sdk/chat/KoreChat.tsx
import NetInfo from "@react-native-community/netinfo";
import KoreBotClient3, {
RTM_EVENT,
APP_STATE,
ActiveThemeAPI,
ApiService as ApiService2
} from "rn-kore-bot-socket-lib-v77";
// bot-sdk/templates/QuickReplies.tsx
init_esm_shims();
import * as React92 from "react";
import {
ScrollView as ScrollView2,
StyleSheet as StyleSheet70,
Text as Text59,
TouchableOpacity as TouchableOpacity42,
View as View77
} from "react-native";
import FastImage12 from "react-native-fast-image";
var QuickReplies = class extends BaseView_default {
constructor(props) {
super(props);
this.state = {
isClickedItem: false
};
}
componentDidUpdate(prevProps, _prevState, _snapshot) {
if (this.props?.quick_replies !== prevProps?.quick_replies) {
this.setState({
isClickedItem: false
});
}
}
renderQuickRepliesView = () => {
if (!this.props?.quick_replies) {
return /* @__PURE__ */ React92.createElement(React92.Fragment, null);
}
const btheme = getBubbleTheme(this.props?.theme);
const views = this.props?.quick_replies.map((item, index) => {
return /* @__PURE__ */ React92.createElement(
TouchableOpacity42,
{
key: index + "",
onPress: () => {
this.setState({
isClickedItem: true
});
this.props?.itemClick?.(item);
}
},
/* @__PURE__ */ React92.createElement(
View77,
{
style: this.props.quick_container_style ? this.props.quick_container_style : [
styles72.quick_container,
{
borderColor: btheme?.BUBBLE_LEFT_BG_COLOR || "#3F51B5",
backgroundColor: btheme?.BUBBLE_LEFT_BG_COLOR || "#3F51B5",
borderWidth: 1
}
]
},
item?.image_url && /* @__PURE__ */ React92.createElement(View77, { style: styles72.image_bg }, /* @__PURE__ */ React92.createElement(
FastImage12,
{
source: { uri: item?.image_url },
style: [
this.props.quick_image_style ? this.props.quick_image_style : styles72.image,
{
borderRadius: normalize(30)
}
]
}
)),
/* @__PURE__ */ React92.createElement(
Text59,
{
style: this.props.quck_text_style ? this.props.quck_text_style : [
{
padding: 5
},
{
color: btheme?.BUBBLE_RIGHT_BG_COLOR,
fontFamily: this.props?.theme?.v3?.body?.font?.family || "Inter"
},
botStyles[this.props?.theme?.v3?.body?.font?.size || "medium"].size
]
},
item?.title?.value || item?.title
)
)
);
});
return views && views.length > 0 ? /* @__PURE__ */ React92.createElement(
ScrollView2,
{
pointerEvents: this.state.isClickedItem ? "none" : "auto",
contentContainerStyle: {
justifyContent: "flex-start",
alignItems: "flex-start"
},
style: {
backgroundColor: this.props?.theme?.v3?.body?.background?.color || "#FFFFFF"
},
showsVerticalScrollIndicator: true,
showsHorizontalScrollIndicator: true,
keyboardShouldPersistTaps: "handled",
horizontal: !this.props.isVertical
},
/* @__PURE__ */ React92.createElement(
View77,
{
style: styles72.quick_main_container
},
/* @__PURE__ */ React92.createElement(
View77,
{
style: {
height: 1,
backgroundColor: btheme?.BUBBLE_LEFT_BG_COLOR || "#CCCCCC",
marginVertical: 2,
flexGrow: 1,
minWidth: "100%"
}
}
),
views
)
) : /* @__PURE__ */ React92.createElement(React92.Fragment, null);
};
render() {
return this.renderQuickRepliesView();
}
};
var styles72 = StyleSheet70.create({
image_bg: {
justifyContent: "center",
alignItems: "center"
},
image: {
height: normalize(30),
width: normalize(30),
resizeMode: "stretch",
margin: 0
},
quick_container: {
justifyContent: "flex-start",
flexDirection: "row",
padding: 8,
borderRadius: 5,
marginTop: 5,
marginBottom: 5,
marginStart: 15,
// borderWidth:0.5,
shadowColor: "#000000",
shadowOffset: {
width: 0,
height: 0.5
},
shadowRadius: 1,
shadowOpacity: 0.1,
//background: #0D6EFD;
borderColor: "#BDC1C6",
//'#F8F9FA',
borderWidth: 1,
backgroundColor: "white",
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR
//background: #0D6EFD;
},
quick_main_container: {
marginStart: 5,
marginEnd: 5,
alignItems: "flex-start",
elevation: 2,
flexDirection: "row",
//flexWrap: 'wrap',
// flexDirection: 'row-reverse',
flexWrap: "wrap",
alignSelf: "flex-start",
justifyContent: "flex-start",
marginBottom: 5,
backgroundColor: "transparent"
//backgroundColor:'yellow',
}
});
// bot-sdk/chat/components/BotTypingIndicator.tsx
init_esm_shims();
import * as React94 from "react";
import { Component as Component31 } from "react";
import AsyncStorage3 from "@react-native-async-storage/async-storage";
import { StyleSheet as StyleSheet72, Text as Text60, View as View79 } from "react-native";
// bot-sdk/components/CustomLoadingDots.tsx
init_esm_shims();
import React93, { useEffect as useEffect3, useRef as useRef4 } from "react";
import { View as View78, Animated as Animated9, StyleSheet as StyleSheet71 } from "react-native";
var CustomLoadingDots = ({
animation = "typing",
color = "#000000",
size = 6,
spacing = 8,
delay = 150,
numberOfDots = 3
}) => {
const animatedValues = useRef4(
Array.from({ length: numberOfDots }, () => new Animated9.Value(0))
).current;
useEffect3(() => {
const createTypingAnimation = () => {
const animations = animatedValues.map(
(animatedValue, index) => Animated9.sequence([
Animated9.delay(index * delay),
Animated9.loop(
Animated9.sequence([
Animated9.timing(animatedValue, {
toValue: 1,
duration: 300,
useNativeDriver: true
}),
Animated9.timing(animatedValue, {
toValue: 0,
duration: 300,
useNativeDriver: true
}),
Animated9.delay((numberOfDots - 1 - index) * delay)
])
)
])
);
Animated9.parallel(animations).start();
};
const createPulseAnimation = () => {
const animations = animatedValues.map(
(animatedValue, index) => Animated9.loop(
Animated9.sequence([
Animated9.delay(index * delay),
Animated9.timing(animatedValue, {
toValue: 1,
duration: 600,
useNativeDriver: true
}),
Animated9.timing(animatedValue, {
toValue: 0,
duration: 600,
useNativeDriver: true
})
])
)
);
Animated9.stagger(delay, animations).start();
};
const createBounceAnimation = () => {
const animations = animatedValues.map(
(animatedValue, index) => Animated9.loop(
Animated9.sequence([
Animated9.delay(index * delay),
Animated9.spring(animatedValue, {
toValue: 1,
friction: 3,
tension: 100,
useNativeDriver: true
}),
Animated9.spring(animatedValue, {
toValue: 0,
friction: 3,
tension: 100,
useNativeDriver: true
})
])
)
);
Animated9.stagger(delay, animations).start();
};
animatedValues.forEach((value) => value.setValue(0));
switch (animation) {
case "typing":
createTypingAnimation();
break;
case "pulse":
createPulseAnimation();
break;
case "bounce":
createBounceAnimation();
break;
default:
createTypingAnimation();
}
return () => {
animatedValues.forEach((value) => value.stopAnimation());
};
}, [animatedValues, animation, delay, numberOfDots]);
const getDotStyle = (animatedValue) => {
const opacity = animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [0.3, 1]
});
const scale2 = animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [0.8, 1.2]
});
return {
opacity,
transform: [{ scale: scale2 }]
};
};
return /* @__PURE__ */ React93.createElement(View78, { style: styles73.container }, animatedValues.map((animatedValue, index) => /* @__PURE__ */ React93.createElement(
Animated9.View,
{
key: index,
style: [
styles73.dot,
{
backgroundColor: color,
width: size,
height: size,
borderRadius: size / 2,
marginHorizontal: spacing / 2
},
getDotStyle(animatedValue)
]
}
)));
};
var styles73 = StyleSheet71.create({
container: {
flexDirection: "row",
alignItems: "center",
justifyContent: "center"
},
dot: {
backgroundColor: "#000000"
}
});
var CustomLoadingDots_default = CustomLoadingDots;
// bot-sdk/chat/components/BotTypingIndicator.tsx
import FastImage13 from "react-native-fast-image";
import KoraBotClient2 from "rn-kore-bot-socket-lib-v77";
init_PlatformCheck();
var TypingIndicator = class extends Component31 {
static contextType = ThemeContext;
botIconUrl = null;
theme;
bgColor;
getBackgroundColor = () => {
const theme = this.context;
if (theme?.v3?.body?.background?.type === "color") {
return theme?.v3?.body?.background?.color || "#FFFFFF";
}
return "#FFFFFF";
};
getAvatarBgColor = () => {
const theme = this.context;
if (theme?.v3?.general?.colors?.primary) {
return theme?.v3?.general?.colors?.primary || "#000000";
}
return "#000000";
};
getDotColor = () => {
const theme = this.context;
if (theme?.v3?.body?.time_stamp?.color) {
return theme?.v3?.body?.time_stamp?.color + "c8" || "#000000c8";
}
return "#000000c8";
};
getBotIconUrl = () => {
AsyncStorage3.getItem(BOT_ICON_URL).then((url) => {
this.botIconUrl = url;
});
return this.botIconUrl;
};
renderBotName() {
let name = KoraBotClient2.getInstance().getBotName() || " ";
const theme = this.context;
let textColor = theme?.v3?.general?.colors?.secondary_text || "#FFFFFF";
return /* @__PURE__ */ React94.createElement(
Text60,
{
style: [
{
color: textColor,
fontFamily: theme?.v3?.body?.font?.family,
...botStyles["small"]?.size
}
]
},
name?.[0]
);
}
renderBotIcon = (url) => {
let bg = this.getAvatarBgColor();
return /* @__PURE__ */ React94.createElement(View79, { style: styles74.bot_icon_con }, /* @__PURE__ */ React94.createElement(
View79,
{
style: [
styles74.bot_icon_con2,
{
backgroundColor: url ? Color_default.transparent : bg
}
]
},
url ? /* @__PURE__ */ React94.createElement(
FastImage13,
{
source: {
uri: url,
priority: FastImage13.priority.high,
cache: FastImage13.cacheControl.immutable
// Use cache effectively
},
style: [styles74.bot_icon]
}
) : this.renderBotName()
));
};
render() {
return /* @__PURE__ */ React94.createElement(View79, { style: styles74.container }, /* @__PURE__ */ React94.createElement(View79, { style: [styles74.box, styles74.box1] }, this.renderTyping()));
}
renderTyping = () => {
let isTypingIndicator = this.props.isTypingIndicator;
let url = void 0;
if (isTypingIndicator) {
url = this.getBotIconUrl();
}
return /* @__PURE__ */ React94.createElement(View79, { style: styles74.main }, isTypingIndicator && /* @__PURE__ */ React94.createElement(View79, { style: styles74.horizontalContainer }, this.renderBotIcon(url), /* @__PURE__ */ React94.createElement(
CustomLoadingDots_default,
{
animation: "typing",
color: this.getDotColor(),
size: isIOS ? 7 : 4,
spacing: isIOS ? 8 : 7,
delay: isIOS ? 120 : 180
}
)));
};
};
var styles74 = StyleSheet72.create({
bot_icon: {
height: normalize(22),
width: normalize(22),
margin: 0,
alignSelf: "center",
resizeMode: "stretch"
},
bot_icon_con2: {
height: normalize(22),
width: normalize(22),
borderRadius: 100,
alignItems: "center",
justifyContent: "center"
},
bot_icon_con: {
marginLeft: 6
},
main: {
//height: normalize(22),
//marginBottom: normalize(isIOS ? 0 : 8),
// position: 'absolute',
//left: 0,
//top: 0,
//bottom: 0,
//zIndex: 200,
//marginBottom: 3,
backgroundColor: "transparency"
},
container: {
//flex: 1,
justifyContent: "center",
alignItems: "center",
position: "relative"
// Parent container needs to have position relative
},
box: {
position: "absolute"
},
box1: {
top: -normalize(23),
left: 0,
zIndex: 1
// Higher zIndex brings the element to the front
},
horizontalContainer: {
flexDirection: "row",
alignItems: "center"
}
});
// bot-sdk/chat/components/header/ChatHeader.tsx
init_esm_shims();
import * as React99 from "react";
// bot-sdk/chat/components/header/CompactHeader.tsx
init_esm_shims();
import * as React96 from "react";
import { StyleSheet as StyleSheet74, Text as Text62, View as View81 } from "react-native";
// bot-sdk/chat/components/header/BaseHeader.tsx
init_esm_shims();
import React95 from "react";
import { Image as Image12, StyleSheet as StyleSheet73, Text as Text61, TouchableOpacity as TouchableOpacity43, View as View80 } from "react-native";
import KoraBotClient3 from "rn-kore-bot-socket-lib-v77";
var BaseHeader = class extends React95.Component {
static contextType = ThemeContext;
renderBackIcon(styleProps, stylePropsMain, colorIcon) {
return /* @__PURE__ */ React95.createElement(
View80,
{
style: stylePropsMain ? stylePropsMain : [styles75.back_icon_container, styleProps]
},
this.renderIcon(
HeaderIconsId.BACK,
"HeaderLeft",
22,
22,
styleProps,
colorIcon
)
);
}
getIconName = (theme) => {
let iconName = "IcIcon_1";
const headerIcon = theme?.v3?.header?.icon || void 0;
switch (headerIcon?.icon_url) {
case "icon-1":
iconName = "IcIcon_1";
break;
case "icon-2":
iconName = "IcIcon_2";
break;
case "icon-3":
iconName = "IcIcon_3";
break;
case "icon-4":
iconName = "IcIcon_4";
break;
default:
iconName = "AvatarBot";
}
return iconName;
};
getBotTitleName(name) {
if (this.props.isReconnecting) {
return "Reconnecting ...";
}
let botName = KoraBotClient3.getInstance().getBotName();
return name || botName || "No Title";
}
renderHeaderIcon = (theme, customProps) => {
if (!theme?.v3?.header?.icon?.show) {
return /* @__PURE__ */ React95.createElement(React95.Fragment, null);
}
let type = theme?.v3?.header?.icon?.type;
if (!type || type?.trim?.()?.length === 0) {
return /* @__PURE__ */ React95.createElement(React95.Fragment, null);
}
if (type === "custom" && theme?.v3?.header?.icon?.icon_url) {
return /* @__PURE__ */ React95.createElement(View80, { style: styles75.header_icon_main }, /* @__PURE__ */ React95.createElement(
Image12,
{
style: styles75.header_icon_main,
testID: "image-custom",
source: {
uri: theme?.v3?.header?.icon?.icon_url
},
height: normalize(30),
width: normalize(30)
}
));
}
return /* @__PURE__ */ React95.createElement(
View80,
{
style: [
styles75.header_icon_main,
customProps,
{
backgroundColor: theme?.v3?.body?.user_message?.bg_color ? theme?.v3?.body?.user_message?.bg_color : Color_default.header_blue
}
]
},
this.renderIcon(
void 0,
this.getIconName(theme),
14,
14,
customProps ? customProps : { marginStart: 0 },
theme?.v3?.body?.user_message?.color ? theme?.v3?.body?.user_message?.color : Color_default.white
)
);
};
renderIcon = (id = void 0, iconName, width8 = 17, height = 17, styleProps, iconColor) => {
if (!iconName) {
return /* @__PURE__ */ React95.createElement(React95.Fragment, null);
}
const Wrapper = id ? TouchableOpacity43 : View80;
return /* @__PURE__ */ React95.createElement(
Wrapper,
{
style: [styles75.icon_container, {}, styleProps, {}],
onPress: () => this.onHeaderIconPress(id)
},
/* @__PURE__ */ React95.createElement(
SvgIcon,
{
name: iconName,
width: normalize(width8),
height: normalize(height),
color: iconColor ? iconColor : "#697586"
}
)
);
};
onHeaderIconPress = (id) => {
if (this.props.onHeaderActionsClick) {
this.props.onHeaderActionsClick?.(id);
}
};
onDropdownMenuView = (theme, iconColor) => {
let buttons = theme?.v3?.header?.buttons;
const height = MIN_HEADER_HEIGHT || 45;
return /* @__PURE__ */ React95.createElement(View80, { style: [styles75.dropdown_main, { height: normalize(height) }] }, /* @__PURE__ */ React95.createElement(
LazyPopover_default,
{
mode: "rn-modal",
placement: "bottom",
isVisible: this.state?.showPopover || false,
onRequestClose: () => {
this.setState({
showPopover: false
});
},
from: /* @__PURE__ */ React95.createElement(
TouchableOpacity43,
{
style: [styles75.pop_main],
onPress: () => {
this.setState({
showPopover: true
});
}
},
/* @__PURE__ */ React95.createElement(
SvgIcon,
{
name: "ThreeDots",
width: normalize(18),
height: normalize(18),
color: iconColor ? iconColor : theme?.v3?.header?.sub_title?.color + "A6" || "#000000"
}
)
)
},
/* @__PURE__ */ React95.createElement(View80, { style: styles75.pop_sub }, buttons?.help?.show && this.renderMenuItem(HeaderIconsId.HELP, "Help", "HeaderHelp"), buttons?.live_agent?.show && this.renderMenuItem(
HeaderIconsId.LIVE_AGENT,
"Live Agent",
"HeaderTalk"
), buttons?.reconnect?.show && this.renderMenuItem(
HeaderIconsId.RECONNECT,
"Reconnect",
"HeaderHelp"
), buttons?.minimise?.show && this.renderMenuItem(
HeaderIconsId.MINIMISE,
"Minimise",
"HeaderMenu"
), buttons?.expand?.show && this.renderMenuItem(HeaderIconsId.EXPAND, "Expand", "HeaderHelp"), buttons?.close?.show && this.renderMenuItem(HeaderIconsId.CLOSE, "Close", "HeaderClose"))
));
};
renderMenuItem = (id, title, iconId = "HeaderHelp") => {
return /* @__PURE__ */ React95.createElement(
TouchableOpacity43,
{
onPress: () => {
this.setState({
showPopover: false
});
this.onHeaderIconPress(id);
},
style: styles75.popover_main_2
},
/* @__PURE__ */ React95.createElement(View80, { style: styles75.popover_item_main }, this.renderIcon(void 0, iconId, 17, 17, {
marginStart: 0
}), /* @__PURE__ */ React95.createElement(View80, { style: styles75.popover_item_text_main }, /* @__PURE__ */ React95.createElement(Text61, { style: { fontSize: normalize(13), paddingEnd: 10 } }, title)))
);
};
renderRightSideIcons(theme, styleProps, stylePropsMain, iconColor) {
let buttons = theme?.v3?.header?.buttons;
if (this.isMoreButtons(theme)) {
buttons = {
threeDots: {
show: true,
icon: "string"
}
};
stylePropsMain = {};
}
return /* @__PURE__ */ React95.createElement(View80, { style: [{ flexDirection: "row" }, stylePropsMain] }, buttons?.help?.show && this.renderIcon(
HeaderIconsId.HELP,
"HeaderHelp",
17,
17,
styleProps,
iconColor
), buttons?.live_agent?.show && this.renderIcon(
HeaderIconsId.LIVE_AGENT,
"HeaderTalk",
17,
17,
styleProps,
iconColor
), buttons?.reconnect?.show && this.renderIcon(
HeaderIconsId.RECONNECT,
"HeaderReconnect",
17,
17,
styleProps,
iconColor
), buttons?.close?.show && this.renderIcon(
HeaderIconsId.CLOSE,
"HeaderClose",
17,
17,
styleProps,
iconColor
), buttons?.threeDots?.show && this.onDropdownMenuView(theme, iconColor));
}
isMoreButtons(theme) {
let count = 0;
if (theme?.v3?.header?.buttons?.close?.show) {
count++;
}
if (theme?.v3?.header?.buttons?.help?.show) {
count++;
}
if (theme?.v3?.header?.buttons?.live_agent?.show) {
count++;
}
if (theme?.v3?.header?.buttons?.reconnect?.show) {
count++;
}
if (theme?.v3?.header?.buttons?.expand?.show) {
count++;
}
if (theme?.v3?.header?.buttons?.minimise?.show) {
count++;
}
return SHOW_BUTTONS_LIMIT < count;
}
};
var styles75 = StyleSheet73.create({
header_icon_main: {
backgroundColor: Color_default.header_blue,
width: normalize(30),
height: normalize(30),
alignItems: "center",
justifyContent: "center",
borderRadius: normalize(30)
//marginEnd: 5,
//marginStart: 5,
},
pop_sub: {
marginTop: 5,
flexDirection: "column",
minWidth: normalize(80)
},
pop_main: {
position: "absolute",
end: 0,
justifyContent: "center",
paddingLeft: 15,
paddingTop: 5,
paddingEnd: 10,
paddingBottom: 5,
marginEnd: 5,
zIndex: 1
},
dropdown_main: {
alignItems: "center",
justifyContent: "center"
// backgroundColor: 'green',
},
popover_item_text_main: {
alignItems: "center",
justifyContent: "center",
//backgroundColor: 'yellow',
// flex: 1,
height: normalize(30)
},
popover_main_2: {
height: normalize(30),
alignItems: "flex-start",
justifyContent: "flex-start",
marginBottom: 5
//backgroundColor: 'red',
},
popover_item_main: {
flexDirection: "row",
//backgroundColor: 'red',
alignItems: "flex-start"
},
popover_main: {
padding: 10
// paddingLeft: 15,
// paddingTop: 10,
// paddingBottom: 10,
// marginRight: -5,
//backgroundColor: 'yellow',
},
opt_title_con: { padding: 10, marginBottom: 10 },
back_icon_container: {
justifyContent: "center",
alignItems: "center",
width: normalize(40)
},
icon_container: {
paddingHorizontal: normalize(4),
flexWrap: "wrap",
height: "100%",
justifyContent: "center",
alignItems: "center",
marginStart: 5
}
});
// bot-sdk/chat/components/header/CompactHeader.tsx
var CompactHeader = class extends BaseHeader {
constructor(props) {
super(props);
}
render() {
const theme = this.context;
const height = MIN_HEADER_HEIGHT || 45;
const headerColor = theme?.v3?.header?.bg_color || "#EAECF0";
return /* @__PURE__ */ React96.createElement(
View81,
{
style: [
styles76.main,
{
height: normalize(height),
backgroundColor: headerColor
}
]
},
/* @__PURE__ */ React96.createElement(View81, { style: styles76.sub_con }, this.renderBackIcon(
{},
{},
theme?.v3?.header?.icons_color || invertColor(headerColor, true)
), /* @__PURE__ */ React96.createElement(View81, { style: styles76.sub_con1 }, theme?.v3?.header?.icon?.show && /* @__PURE__ */ React96.createElement(View81, { style: styles76.back_icon_container }, this.renderHeaderIcon(theme)), /* @__PURE__ */ React96.createElement(View81, { style: styles76.title_main }, /* @__PURE__ */ React96.createElement(View81, { style: styles76.title_sub_con }, /* @__PURE__ */ React96.createElement(
Text62,
{
numberOfLines: 1,
style: [
styles76.title_text,
{ color: theme?.v3?.header?.title?.color || "#000000" }
]
},
this.getBotTitleName(theme?.v3?.header?.title?.name)
)), /* @__PURE__ */ React96.createElement(View81, { style: styles76.title_sub_con1 }, /* @__PURE__ */ React96.createElement(
Text62,
{
numberOfLines: 1,
style: [
styles76.title_sub_text,
{ color: theme?.v3?.header?.sub_title?.color || "#000000" }
]
},
theme?.v3?.header?.sub_title?.name
)))), /* @__PURE__ */ React96.createElement(View81, { style: styles76.right_icon_container }, theme?.v3?.header?.buttons && this.renderRightSideIcons(
theme,
{},
{},
theme?.v3?.header?.icons_color || invertColor(headerColor, true)
))),
/* @__PURE__ */ React96.createElement(View81, { style: styles76.line })
);
}
};
var styles76 = StyleSheet74.create({
sub_con1: {
flex: 1,
flexDirection: "row",
marginStart: 10
},
title_sub_text: {
fontWeight: "normal",
fontSize: normalize(12),
opacity: 0.5
},
title_sub_con1: {
flex: 1
},
title_text: { fontWeight: "500", fontSize: normalize(14) },
title_sub_con: {
flex: 1,
justifyContent: "flex-end"
},
title_main: { flexDirection: "column", flex: 1, marginStart: 5 },
sub_con: { flex: 1, flexDirection: "row" },
main: {
width: "100%",
marginBottom: 2
},
back_icon_container: {
height: "100%",
width: normalize(33),
alignItems: "center",
justifyContent: "center"
},
right_icon_container: {
//backgroundColor: 'green',
alignItems: "center",
justifyContent: "center",
marginEnd: 5
},
line: {
backgroundColor: Color_default.black,
opacity: 0.3,
height: StyleSheet74.hairlineWidth,
width: "100%"
}
});
// bot-sdk/chat/components/header/MediumHeader.tsx
init_esm_shims();
import * as React97 from "react";
import { StyleSheet as StyleSheet75, Text as Text63, View as View82 } from "react-native";
init_PlatformCheck();
var MediumHeader = class extends BaseHeader {
constructor(props) {
super(props);
this.state = {
showPopover: false
};
}
render() {
const theme = this.context;
const height = MIN_HEADER_HEIGHT || 45;
const extraHeight = isIOS ? height + 25 : height + 35;
const headerColor = theme?.v3?.header?.bg_color || "#EAECF0";
return /* @__PURE__ */ React97.createElement(
View82,
{
style: [
styles77.main,
{
height: normalize(extraHeight),
backgroundColor: headerColor
}
]
},
/* @__PURE__ */ React97.createElement(View82, { style: [styles77.sub_con] }, this.renderBackIcon(
{},
{ ...styles77.back_icon, height: normalize(height) },
theme?.v3?.header?.icons_color || invertColor(headerColor, true)
), /* @__PURE__ */ React97.createElement(View82, { style: [styles77.sub_con1, {}] }, theme?.v3?.header?.icon?.show && /* @__PURE__ */ React97.createElement(View82, { style: [styles77.back_icon_container] }, this.renderHeaderIcon(theme, {
marginStart: 0
})), /* @__PURE__ */ React97.createElement(View82, { style: styles77.title_main }, /* @__PURE__ */ React97.createElement(View82, { style: styles77.title_sub_con }, /* @__PURE__ */ React97.createElement(
Text63,
{
numberOfLines: 1,
style: [
styles77.title_text,
{ color: theme?.v3?.header?.title?.color || "#000000" }
]
},
this.getBotTitleName(theme?.v3?.header?.title?.name)
)), /* @__PURE__ */ React97.createElement(View82, { style: styles77.title_sub_con1 }, /* @__PURE__ */ React97.createElement(
Text63,
{
numberOfLines: 1,
style: [
styles77.title_sub_text,
{ color: theme?.v3?.header?.sub_title?.color || "#000000" }
]
},
theme?.v3?.header?.sub_title?.name
)))), /* @__PURE__ */ React97.createElement(View82, { style: styles77.right_icon_container }, theme?.v3?.header?.buttons && this.renderRightSideIcons(
theme,
{ height },
styles77.itemProps,
theme?.v3?.header?.icons_color || invertColor(headerColor, true)
))),
/* @__PURE__ */ React97.createElement(View82, { style: styles77.line })
);
}
};
var styles77 = StyleSheet75.create({
itemProps: {
position: "absolute",
end: 0,
marginEnd: 5
},
render_icon: {
paddingHorizontal: 0,
flexWrap: "wrap",
marginStart: 0,
marginBottom: 5,
justifyContent: "flex-end",
alignItems: "center"
},
back_icon: {
position: "absolute",
left: 0,
zIndex: 1
},
sub_con1: {
flex: 1
//flexDirection: 'column',
//backgroundColor: 'yellow',
//marginStart: 10,
},
title_sub_text: {
fontWeight: "normal",
fontSize: normalize(12),
opacity: 0.5
},
title_sub_con1: {
flex: 1,
alignItems: "center",
justifyContent: "flex-start"
},
title_text: { fontWeight: "500", fontSize: normalize(14) },
title_sub_con: {
alignItems: "center",
justifyContent: "flex-start"
},
title_main: { flexDirection: "column", flex: 1, marginStart: 5 },
sub_con: { flex: 1, flexDirection: "row", alignSelf: "flex-start" },
main: {
width: "100%",
marginBottom: 2
},
back_icon_container: {
alignItems: "center",
justifyContent: "flex-start",
marginTop: 8
},
right_icon_container: {
//backgroundColor: 'green',
alignItems: "flex-start",
justifyContent: "flex-start"
},
line: {
backgroundColor: Color_default.black,
opacity: 0.3,
height: StyleSheet75.hairlineWidth,
width: "100%"
}
});
// bot-sdk/chat/components/header/LargeHeader.tsx
init_esm_shims();
import * as React98 from "react";
import { StyleSheet as StyleSheet76, Text as Text64, View as View83, Dimensions as Dimensions35 } from "react-native";
import LinearGradient2 from "react-native-linear-gradient";
var windowWidth28 = Dimensions35.get("window").width;
var LargeHeader = class extends BaseHeader {
static contextType = ThemeContext;
render() {
const theme = this.context;
const height = 140;
const headerColor = theme?.v3?.header?.bg_color || Color_default.blue;
return /* @__PURE__ */ React98.createElement(
LinearGradient2,
{
colors: [
headerColor,
headerColor,
headerColor,
Color_default.white,
Color_default.white
],
style: [
styles78.main,
{
height: normalize(height),
backgroundColor: theme?.v3?.header?.bg_color
}
]
},
/* @__PURE__ */ React98.createElement(View83, { style: { flex: 1 } }, /* @__PURE__ */ React98.createElement(View83, { style: styles78.sub_con }, this.renderBackIcon(
{
marginTop: 10,
justifyContent: "flex-start",
alignItems: "flex-start"
},
{},
theme?.v3?.header?.icons_color || invertColor(headerColor, true)
), /* @__PURE__ */ React98.createElement(View83, { style: styles78.sub_con1 }, /* @__PURE__ */ React98.createElement(View83, { style: styles78.title_main }, /* @__PURE__ */ React98.createElement(View83, { style: styles78.title_sub_con }), /* @__PURE__ */ React98.createElement(View83, { style: styles78.title_sub_con1 }))), /* @__PURE__ */ React98.createElement(View83, { style: styles78.right_icon_container }, theme?.v3?.header?.buttons && this.renderRightSideIcons(
theme,
styles78.right_side_icon_con,
{},
theme?.v3?.header?.icons_color || invertColor(headerColor, true)
))), /* @__PURE__ */ React98.createElement(
View83,
{
style: [
styles78.card_main,
{
width: windowWidth28 - normalize(30),
borderRadius: 5,
boxShadow: `
0 1px 3px rgba(0, 0, 0, 0.12),
0 1px 2px rgba(0, 0, 0, 0.24)
`
}
]
},
/* @__PURE__ */ React98.createElement(View83, { style: { flex: 1, marginStart: normalize(20) } }, /* @__PURE__ */ React98.createElement(View83, { style: styles78.card_con }, /* @__PURE__ */ React98.createElement(
Text64,
{
style: [
styles78.title_text,
{
color: theme?.v3?.header?.title?.color || "#000000",
fontFamily: this.props.theme?.v3?.body?.font?.family
}
]
},
this.getBotTitleName(theme?.v3?.header?.title?.name)
), /* @__PURE__ */ React98.createElement(
Text64,
{
style: [
styles78.sub_title_text,
{
color: theme?.v3?.header?.sub_title?.color || "#000000",
fontFamily: this.props.theme?.v3?.body?.font?.family
}
]
},
theme?.v3?.header?.sub_title?.name
)))
), /* @__PURE__ */ React98.createElement(View83, { style: styles78.icon_con }, theme?.v3?.header?.icon?.show && /* @__PURE__ */ React98.createElement(View83, { style: [styles78.back_icon_container] }, this.renderHeaderIcon(theme))))
);
}
};
var styles78 = StyleSheet76.create({
icon_con: {
position: "absolute",
// bottom: 0,
left: normalize(30),
// right: 0,
top: normalize(35),
justifyContent: "center",
alignItems: "center"
},
card_con: {
flex: 1,
justifyContent: "center",
alignItems: "baseline",
marginTop: normalize(5)
},
right_side_icon_con: {
marginTop: 10,
justifyContent: "flex-start",
alignItems: "flex-start"
},
card_main: {
backgroundColor: "#FAFAFA",
height: normalize(85),
position: "absolute",
bottom: 2,
alignSelf: "center"
//justifyContent: 'center',
},
title_text: {
fontWeight: "600",
letterSpacing: 0.3,
fontSize: normalize(15)
},
sub_title_text: {
fontWeight: "normal",
fontSize: normalize(12),
opacity: 0.5
},
render_icon: {
paddingHorizontal: 0,
flexWrap: "wrap",
marginStart: 0,
marginBottom: 5,
marginTop: -5,
justifyContent: "flex-end",
alignItems: "center"
},
sub_con1: {
flex: 1,
flexDirection: "row",
marginStart: 10
},
title_sub_text: {
fontWeight: "normal",
fontSize: normalize(12),
opacity: 0.5
},
title_sub_con1: {
flex: 1
},
title_sub_con: {
flex: 1,
justifyContent: "flex-end"
},
title_main: { flexDirection: "column", flex: 1, marginStart: 5 },
sub_con: { flex: 1, flexDirection: "row", paddingTop: 5 },
main: {
width: "100%",
marginBottom: 2
},
back_icon_container: {
// height: '100%',
// backgroundColor: 'green',
width: normalize(50),
alignItems: "flex-start",
justifyContent: "flex-start"
},
right_icon_container: {
alignItems: "flex-start",
justifyContent: "flex-start",
marginEnd: 5
},
line: {
backgroundColor: Color_default.black,
opacity: 0.3,
height: StyleSheet76.hairlineWidth,
width: "100%"
}
});
// bot-sdk/chat/components/header/ChatHeader.tsx
init_PlatformCheck();
var ChatHeader = class extends React99.Component {
static contextType = ThemeContext;
renderHeaderView = () => {
const theme = this.context;
const type = theme?.v3?.header?.size;
try {
if (this.props?.statusBarColor && isIOS) {
this.props?.statusBarColor(theme?.v3?.header?.bg_color || "#EAECF0");
}
} catch (error) {
}
switch (type) {
case ChatHeaderType.REGULAR:
return /* @__PURE__ */ React99.createElement(MediumHeader, { ...this.props, theme });
case ChatHeaderType.LARGE:
return /* @__PURE__ */ React99.createElement(LargeHeader, { ...this.props, theme });
case ChatHeaderType.COMPACT:
return /* @__PURE__ */ React99.createElement(CompactHeader, { ...this.props, theme });
default:
return /* @__PURE__ */ React99.createElement(CompactHeader, { ...this.props, theme });
}
};
render() {
return this.renderHeaderView();
}
};
// bot-sdk/chat/KoreChat.tsx
init_PlatformCheck();
init_PermissionsUtils();
// bot-sdk/FileUploader/FileUploadQueue.tsx
init_esm_shims();
// bot-sdk/FileUploader/FileUploadOnprem.js
init_esm_shims();
// bot-sdk/lib/services/api-constants.js
init_esm_shims();
var API_CONST = {
GET: "GET",
POST: "POST",
PUT: "PUT",
DELETE: "DELETE",
PATCH: "PATCH"
};
var api_constants_default = API_CONST;
// bot-sdk/FileUploader/MultipartData.js
init_esm_shims();
var MultipartData = class {
constructor(props) {
this.boundary = "--------MultipartData" + Math.random();
this.fields = [];
}
append(key, value) {
this.fields.push([key, value]);
}
toString() {
var boundary = this.boundary;
var body = "";
this.fields.forEach((field) => {
body += "--" + boundary + "\r\n";
if (field[1]?.data) {
var file = field[1];
if (file.fileName) {
body += 'Content-Disposition: form-data; name="' + field[0] + '"; filename="' + file.fileName + '"';
} else {
body += 'Content-Disposition: form-data; name="' + field[0] + '"';
}
body += "\r\n";
if (file.type) {
body += "Content-Type: UTF-8; charset=ISO-8859-1\r\n";
}
body += "Content-Transfer-Encoding: base64\r\n";
body += "\r\n" + file.data + "\r\n";
} else {
body += 'Content-Disposition: form-data; name="' + field[0] + '";\r\n\r\n';
body += field[1] + "\r\n";
}
});
body += "--" + boundary + "--";
return body;
}
};
var MultipartData_default = MultipartData;
// bot-sdk/FileUploader/FileUploadOnprem.js
import axios from "axios";
import KoreBotClient2 from "rn-kore-bot-socket-lib-v77";
import { getUserAgent } from "react-native-user-agent";
var FileUploadOnprem = class {
isStopLoading = false;
file = null;
fileContext = null;
userId = null;
accessToken = null;
onProgress = null;
onSuccess = null;
currentChunk = 0;
fileInfo = {};
uploadedChunks = null;
successChunks = 0;
baseUrl = null;
constructor(file, userId, fileContext, accessToken) {
this.CHUNK_SIZE = parseInt(512 * 1024, 10);
this.file = file;
this.fileContext = fileContext;
this.userId = userId;
this.accessToken = accessToken;
this.onProgress = null;
this.onSuccess = null;
this.currentChunk = 0;
this.fileInfo = {};
this.uploadedChunks = null;
this.successChunks = 0;
this.isStopLoading = false;
this.baseUrl = KoreBotClient2.getInstance().getBotUrl();
this.fileDataCache = null;
this.cacheFilePath = null;
}
start = (onProgress = (arg) => {
}, onSuccess = (arg) => {
}, onError = (arg) => {
}) => {
this.onProgress = onProgress;
this.onSuccess = onSuccess;
this.onError = onError;
this._processFile();
};
onError = (msg) => {
console.log(msg);
};
stopLoading = () => {
this.isStopLoading = true;
this.clearFileCache();
};
clearFileCache = () => {
this.fileDataCache = null;
this.cacheFilePath = null;
};
validateAndNormalizeExtension = (extension, mimeType) => {
const allowedExtensions = [
// Images
"jpg",
"jpeg",
"png",
"gif",
"bmp",
"webp",
"svg",
"tiff",
"ico",
// Documents
"pdf",
"doc",
"docx",
"xls",
"xlsx",
"ppt",
"pptx",
"txt",
"rtf",
"csv",
// Archives
"zip",
"rar",
"7z",
"tar",
"gz",
// Audio
"mp3",
"wav",
"aac",
"m4a",
"ogg",
"flac",
// Video
"mp4",
"avi",
"mov",
"wmv",
"flv",
"webm",
"mkv",
// Other
"json",
"xml",
"html",
"css",
"js"
];
const mimeToExtension = {
"image/jpeg": "jpg",
"image/jpg": "jpg",
"image/png": "png",
"image/gif": "gif",
"image/bmp": "bmp",
"image/webp": "webp",
"image/svg+xml": "svg",
"image/tiff": "tiff",
"application/pdf": "pdf",
"application/msword": "doc",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
"application/vnd.ms-excel": "xls",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
"text/plain": "txt",
"text/csv": "csv",
"application/json": "json",
"text/html": "html",
"video/mp4": "mp4",
"video/quicktime": "mov",
"audio/mpeg": "mp3",
"audio/wav": "wav"
};
let cleanExtension = extension ? extension.trim().replace(/[^a-z0-9]/g, "") : "";
if (cleanExtension && allowedExtensions.includes(cleanExtension)) {
return cleanExtension;
}
if (mimeType && mimeToExtension[mimeType]) {
console.log(`Using extension '${mimeToExtension[mimeType]}' derived from MIME type '${mimeType}'`);
return mimeToExtension[mimeType];
}
if (mimeType && mimeType.startsWith("image/")) {
console.log("Defaulting to jpg for unknown image type");
return "jpg";
}
if (cleanExtension) {
if (cleanExtension === "jpeg")
return "jpg";
if (cleanExtension === "tif")
return "tiff";
if (cleanExtension === "htm")
return "html";
if (cleanExtension.length <= 5 && cleanExtension.match(/^[a-z0-9]+$/)) {
console.log(`Using unrecognized but valid-looking extension: ${cleanExtension}`);
return cleanExtension;
}
}
console.warn("Could not determine valid file extension, defaulting to txt");
return "txt";
};
sanitizeFileName = (fileName, extension) => {
if (!fileName) {
return `file_${Date.now()}.${extension}`;
}
let nameWithoutExt = fileName;
const lastDotIndex = fileName.lastIndexOf(".");
if (lastDotIndex > 0) {
nameWithoutExt = fileName.substring(0, lastDotIndex);
}
let sanitized = nameWithoutExt.replace(/[^a-zA-Z0-9\-_\s]/g, "_").replace(/\s+/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
if (!sanitized || sanitized.length === 0) {
sanitized = "file_" + Date.now();
}
if (sanitized.length > 50) {
sanitized = sanitized.substring(0, 50);
}
const finalFileName = `${sanitized}.${extension}`;
if (finalFileName !== fileName) {
console.log(`Sanitized filename from '${fileName}' to '${finalFileName}'`);
}
return finalFileName;
};
_processFile = () => {
if (this.file && this.file.name) {
const rawFileSize = this.file.size || this.file.fileSize || 0;
const fileSize = Math.max(0, parseInt(Number(rawFileSize), 10));
if (fileSize <= 0) {
console.error("FileUploadOnprem: Invalid file size detected", {
rawFileSize,
fileSize,
fileObject: this.file
});
this.onError("INVALID_FILE_SIZE");
return;
}
console.log("FileUploadOnprem: File size determined as:", fileSize, "from file object:", {
size: this.file.size,
fileSize: this.file.fileSize,
processedSize: fileSize
});
const rawExtension = this.file.name.split(".").pop()?.toLowerCase() || "";
const validatedExtension = this.validateAndNormalizeExtension(rawExtension, this.file.type);
console.log("FileUploadOnprem: Extension processing", {
fileName: this.file.name,
rawExtension,
validatedExtension,
mimeType: this.file.type
});
const sanitizedFileName = this.sanitizeFileName(this.file.name, validatedExtension);
this.fileInfo = {
fileName: sanitizedFileName,
fileType: validatedExtension,
fileSize,
type: this.file.type,
isChunkUpload: true
};
this.fileInfo.totalChunks = this.fileInfo.isChunkUpload ? Math.ceil(this.fileInfo.fileSize / this.CHUNK_SIZE) : 1;
if (this.file?.type?.indexOf("image") !== -1) {
this.fileInfo.type = "image";
} else {
this.fileInfo.type = "attachment";
}
this.fileInfo.isThumbnail = false;
this._getFileToken();
} else {
this.onError("INVALID_FILE");
}
};
_getFileToken = () => {
const _self = this;
if (_self.isStopLoading) {
_self.onError("_getFileToken stop loading:" + this.file?.id);
return;
}
let url = this.baseUrl + "/api/1.1/attachment/file/token";
let userAgent = "RNApp/1.0";
try {
userAgent = getUserAgent() || "RNApp/1.0";
} catch (error) {
console.log("getUserAgent error:", error);
userAgent = "RNApp/1.0";
}
const auth = KoreBotClient2.getInstance().getAuthorization();
axios({
url,
method: api_constants_default.POST,
data: {
"User-Agent": userAgent
},
headers: {
Authorization: auth
}
}).then(function(data) {
if (_self.isStopLoading) {
_self.onError("_getFileToken stop loading : " + _self.file?.id);
return;
}
_self.fileInfo.fileToken = data.data.fileToken;
_self.fileInfo.fileTokenExpiresOn = data.data.expiresOn;
_self._readyForUpload();
}).catch(function(error) {
_self.onError("_getFileToken error --->:" + error);
});
};
_readyForUpload = () => {
this._initChunkUpload();
};
_initChunkUpload = () => {
const _self = this;
const totalChunks = this.fileInfo.totalChunks;
const chunkSize = this.CHUNK_SIZE;
console.log(
"Id " + _self.file?.id + " this.currentChunk -------->:" + this.currentChunk + "/" + (totalChunks - 1)
);
const start = Math.floor(this.currentChunk * chunkSize);
const fileSize = this.fileInfo.fileSize;
const end = this.currentChunk === totalChunks - 1 ? Math.floor(fileSize) : Math.floor((this.currentChunk + 1) * chunkSize);
const remainingBytes = Math.floor(fileSize) - start;
const actualLength = Math.max(0, Math.min(chunkSize, remainingBytes));
if (actualLength <= 0) {
console.log("_initChunkUpload: No more data to read", {
currentChunk: this.currentChunk,
totalChunks,
start,
fileSize,
remainingBytes,
actualLength
});
return;
}
const progress = Math.floor((this.currentChunk + 1) / totalChunks * 100);
this.onProgress(progress);
if (_self.currentChunk === totalChunks) {
return;
}
this.readChunkData(this.file?.path || this.file?.uri, actualLength, start).then((chunk) => {
if (chunk) {
this.uploadChunk(chunk, this.currentChunk);
} else {
console.log("readChunkData: No chunk data returned");
this.onError("No chunk data returned");
}
}).catch((error) => {
console.log("readChunkData error --->:", error);
this.onError("readChunkData error: " + error.message);
});
};
readChunkData = async (filePath, length, position) => {
const rawLength = Number(length);
const rawPosition = Number(position);
if (isNaN(rawLength) || isNaN(rawPosition)) {
console.log("readChunkData: Invalid numeric inputs", { length, position });
return Promise.reject(new Error("Invalid numeric inputs"));
}
const lengthInt = Math.max(0, Math.min(1048576, parseInt(rawLength, 10)));
const positionInt = Math.max(0, parseInt(rawPosition, 10));
if (lengthInt <= 0) {
console.log("readChunkData: Invalid length after conversion", { original: length, converted: lengthInt });
return Promise.reject(new Error("Invalid read length"));
}
if (positionInt < 0) {
console.log("readChunkData: Invalid position after conversion", { original: position, converted: positionInt });
return Promise.reject(new Error("Invalid read position"));
}
const blobUtilResult = await this.readChunkDataWithBlobUtil(filePath, lengthInt, positionInt);
if (blobUtilResult) {
return blobUtilResult;
}
return this.readChunkDataWithRNFSFullFile(filePath, lengthInt, positionInt);
};
readChunkDataWithBlobUtil = async (filePath, length, position) => {
try {
const RNBlobUtil2 = __require("react-native-blob-util");
if (!RNBlobUtil2 || !RNBlobUtil2.fs) {
return null;
}
const cleanFilePath = decodeURI(filePath);
if (!this.fileDataCache || this.cacheFilePath !== cleanFilePath) {
console.log("readChunkData: Reading file into cache with RNBlobUtil");
this.fileDataCache = await RNBlobUtil2.fs.readFile(cleanFilePath, "base64");
this.cacheFilePath = cleanFilePath;
}
const byteArray = this.base64ToByteArray(this.fileDataCache);
const endPosition = Math.min(position + length, byteArray.length);
if (position >= byteArray.length) {
console.log("readChunkData: Position beyond file size", { position, fileSize: byteArray.length });
return Promise.reject(new Error("Position beyond file size"));
}
const chunkArray = byteArray.slice(position, endPosition);
const chunkBase64 = this.byteArrayToBase64(chunkArray);
console.log(`readChunkData: Successfully read chunk of ${chunkArray.length} bytes using RNBlobUtil`);
return chunkBase64;
} catch (error) {
console.log("readChunkData: RNBlobUtil failed:", error.message);
return null;
}
};
readChunkDataWithRNFSFullFile = async (filePath, length, position) => {
try {
const RNFS5 = __require("react-native-fs");
if (!RNFS5 || !RNFS5.readFile) {
console.log("readChunkData: RNFS.readFile not available");
return Promise.reject(new Error("RNFS not available"));
}
const cleanFilePath = decodeURI(filePath);
console.log(`readChunkData: Using RNFS.readFile for ${length} bytes from position ${position}`);
if (!this.fileDataCache || this.cacheFilePath !== cleanFilePath) {
console.log("readChunkData: Reading file with RNFS.readFile (avoiding RNFS.read NSInteger issue)");
this.fileDataCache = await RNFS5.readFile(cleanFilePath, "base64");
this.cacheFilePath = cleanFilePath;
}
const byteArray = this.base64ToByteArray(this.fileDataCache);
const endPosition = Math.min(position + length, byteArray.length);
if (position >= byteArray.length) {
console.log("readChunkData: Position beyond file size", { position, fileSize: byteArray.length });
return Promise.reject(new Error("Position beyond file size"));
}
const chunkArray = byteArray.slice(position, endPosition);
const chunkBase64 = this.byteArrayToBase64(chunkArray);
console.log(`readChunkData: RNFS.readFile successfully read chunk of ${chunkArray.length} bytes`);
return chunkBase64;
} catch (error) {
console.log("readChunkData: RNFS.readFile failed:", error.message);
return Promise.reject(new Error("File reading failed: " + error.message));
}
};
// Helper function to convert base64 to byte array without Buffer
base64ToByteArray = (base64) => {
const binaryString = atob(base64);
const byteArray = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
byteArray[i] = binaryString.charCodeAt(i);
}
return byteArray;
};
// Helper function to convert byte array to base64 without Buffer
byteArrayToBase64 = (byteArray) => {
let binaryString = "";
for (let i = 0; i < byteArray.length; i++) {
binaryString += String.fromCharCode(byteArray[i]);
}
return btoa(binaryString);
};
uploadChunk = (chunk, chunkNumber) => {
const _self = this;
if (_self.isStopLoading) {
_self.onError("uploadChunk stop loading : " + _self.file?.id);
return;
}
let agent = "RNApp/1.0";
try {
agent = getUserAgent() || "RNApp/1.0";
} catch (error) {
console.log("getUserAgent error:", error);
agent = "RNApp/1.0";
}
const formData = new MultipartData_default();
formData.append("chunkNo", chunkNumber + "");
formData.append("fileToken", _self.fileInfo.fileToken + "");
formData.append("User-Agent", agent + "");
formData.append("chunk", {
data: chunk,
fileName: _self.fileInfo.fileName
});
console.log(`uploadChunk: Uploading chunk ${chunkNumber}/${_self.fileInfo.totalChunks - 1} for file ${_self.fileInfo.fileName}`);
let url = this.baseUrl + "/api/1.1/users/" + this.userId + "/file/" + this.fileInfo.fileToken + "/chunk";
const auth = KoreBotClient2.getInstance().getAuthorization();
axios({
url,
data: formData.toString(),
//contentType: 'multipart/form-data; boundary=' + formData.boundary,
method: api_constants_default.POST,
headers: {
Authorization: auth,
//'User-Agent': agent,
"Content-Type": "multipart/form-data; boundary=" + formData.boundary,
"Cache-Control": "no-cache"
}
}).then(function(data) {
if (_self.isStopLoading) {
_self.onError("uploadChunk stop loading : " + _self.file?.id);
return;
}
_self.currentChunk++;
if (_self.currentChunk === _self.fileInfo.totalChunks) {
_self._commitFile();
} else {
_self._initChunkUpload();
}
}).catch(function(error) {
_self.onError("uploadChunk error --->:" + error);
});
};
_commitFile = () => {
const _self = this;
if (_self.isStopLoading) {
console.log(
"_commitFile stop loading fileToken :",
_self.fileInfo.fileToken
);
_self.onError(
"_commitFile stop loading fileToken :" + _self.fileInfo.fileToken
);
return;
}
const auth = KoreBotClient2.getInstance().getAuthorization();
let agent = "RNApp/1.0";
try {
agent = getUserAgent() || "RNApp/1.0";
} catch (error) {
console.log("getUserAgent error:", error);
agent = "RNApp/1.0";
}
const formData = new MultipartData_default();
formData.append("totalChunks", _self.fileInfo.totalChunks + "");
formData.append("fileToken", _self.fileInfo.fileToken);
formData.append("fileExtension", _self.fileInfo.fileType);
formData.append("filename", _self.fileInfo.fileName);
formData.append("fileContext", _self.fileContext);
formData.append("thumbnailUpload", "false");
formData.append("User-Agent", agent + "");
formData.append("fileSize", _self.fileInfo.fileSize + "");
formData.append("fileType", _self.fileInfo.type);
if (_self.file && _self.file.type) {
formData.append("fileContentType", _self.file.type);
}
let url = this.baseUrl + "/api/1.1/users/" + _self.userId + "/file/" + _self.fileInfo.fileToken;
console.log("_commitFile: Making commit request", {
url,
fileInfo: _self.fileInfo,
fileContext: _self.fileContext,
userId: _self.userId,
originalFile: {
name: _self.file?.name,
type: _self.file?.type,
size: _self.file?.size || _self.file?.fileSize
},
formDataFields: {
totalChunks: _self.fileInfo.totalChunks,
fileToken: _self.fileInfo.fileToken,
fileExtension: _self.fileInfo.fileType,
// This is the extension being sent
filename: _self.fileInfo.fileName,
fileContext: _self.fileContext,
fileSize: _self.fileInfo.fileSize,
fileType: _self.fileInfo.type,
fileContentType: _self.file?.type
}
});
console.log("_commitFile: Sending extension to server:", _self.fileInfo.fileType);
axios({
url,
data: formData.toString(),
method: api_constants_default.PUT,
headers: {
Authorization: auth,
"Content-Type": "multipart/form-data; boundary=" + formData.boundary,
"Cache-Control": "no-cache"
}
}).then(function(data) {
if (_self.isStopLoading) {
_self.onError("_commitFile stop loading : " + _self.file?.id);
return;
}
console.log("_commitFile: Upload successful", data.data);
const response = {
type: _self.fileInfo.type,
fileName: _self.fileInfo.fileName,
filesize: _self.fileInfo.fileSize,
fileUrl: data.data
};
_self.clearFileCache();
if (_self.onSuccess)
_self.onSuccess(response);
}).catch(function(error) {
console.error("_commitFile: Upload failed", {
error: error.message,
status: error.response?.status,
statusText: error.response?.statusText,
responseData: error.response?.data,
url,
fileInfo: _self.fileInfo
});
_self.clearFileCache();
_self.onError("_commitFile error: " + error.message + (error.response?.data ? " - Server response: " + JSON.stringify(error.response.data) : ""));
});
};
};
var FileUploadOnprem_default = FileUploadOnprem;
// bot-sdk/FileUploader/FileUploadQueue.tsx
import KoraBotClient4 from "rn-kore-bot-socket-lib-v77";
var FileUploadQueue = class {
uploadQueue;
isUploading;
callback;
count;
remainCount;
progress;
uploadQueueObj;
constructor(callback, progress) {
this.uploadQueue = [];
this.isUploading = false;
this.callback = callback;
this.count = 0;
this.remainCount = 0;
this.progress = progress;
this.uploadQueueObj = [];
}
addToQueue(file) {
this.count = this.count + 1;
this.uploadQueue.push(file);
if (!this.isUploading) {
this.uploadNext();
}
}
removeFromQueue(file) {
this.uploadQueue = this.uploadQueue.filter(
(data) => data?.id !== file?.id
);
let obj = this.uploadQueueObj.filter((data) => data.id === file?.id);
if (obj && obj?.[0]) {
let uploader = obj[0]?.uploader;
uploader.stopLoading();
}
}
async uploadNext() {
if (this.uploadQueue.length > 0) {
const file = this.uploadQueue.shift();
this.remainCount = this.remainCount + 1;
this.isUploading = true;
try {
await this.uploadFile(file);
this.uploadNext();
} catch (error) {
console.log("File upload failed:", error);
this.uploadNext();
}
} else {
this.isUploading = false;
}
}
sendSignal(result) {
this.callback(result);
}
async uploadFile(file) {
const uploader = new FileUploadOnprem_default(
file,
KoraBotClient4.getInstance().getUserId(),
FILE_CONTEXT,
KoraBotClient4.getInstance().getAccessToken()
);
this.uploadQueueObj.push({ id: file?.id, uploader });
uploader.start(
(progress) => {
this.progress?.({
progress,
id: file?.id
});
},
(success) => {
let modifiedResult = {
...success,
uri: file?.uri,
...file,
status: true
};
this.sendSignal(modifiedResult);
},
(onError) => {
console.log("error in file upload", onError);
let item = { status: false };
this.sendSignal(item);
}
);
return uploader;
}
};
var FileUploadQueue_default = FileUploadQueue;
// bot-sdk/chat/KoreChat.tsx
import * as Progress from "react-native-progress";
import AsyncStorage4 from "@react-native-async-storage/async-storage";
import Toast3 from "react-native-toast-message";
// bot-sdk/components/WelcomeScreen/index.tsx
init_esm_shims();
import React108 from "react";
import { SafeAreaView, ScrollView as ScrollView4, StatusBar as StatusBar2, View as View90 } from "react-native";
// bot-sdk/components/WelcomeScreen/body.tsx
init_esm_shims();
import * as React101 from "react";
import {
Dimensions as Dimensions36,
Linking as Linking8,
ScrollView as ScrollView3,
StyleSheet as StyleSheet77,
Text as Text65,
TouchableOpacity as TouchableOpacity44,
View as View84
} from "react-native";
// bot-sdk/components/WelcomeScreen/WelcomeBaseView.tsx
init_esm_shims();
import React100 from "react";
var WelcomeBaseView = class extends React100.Component {
};
// bot-sdk/components/WelcomeScreen/body.tsx
import FastImage14 from "react-native-fast-image";
var windowWidth29 = Dimensions36.get("window").width;
var WelcomeBody = class extends WelcomeBaseView {
quickStartBtns = () => {
const startBox = this.props?.activetheme?.v3?.welcome_screen?.starter_box || void 0;
if (!startBox || !startBox?.quick_start_buttons?.show) {
return /* @__PURE__ */ React101.createElement(React101.Fragment, null);
}
if (!startBox?.quick_start_buttons?.buttons || startBox?.quick_start_buttons?.buttons?.length === 0) {
return /* @__PURE__ */ React101.createElement(React101.Fragment, null);
}
return /* @__PURE__ */ React101.createElement(View84, { style: styles79.btn_main }, startBox?.quick_start_buttons?.buttons.map(
(btn, index) => {
return /* @__PURE__ */ React101.createElement(
TouchableOpacity44,
{
key: index + "_",
onPress: () => {
if (this.props?.onStartConversationClick) {
this.props?.onStartConversationClick(btn?.title);
}
},
style: styles79.quick_btn
},
/* @__PURE__ */ React101.createElement(Text65, { style: styles79.btn_text }, btn?.title)
);
}
));
};
getIconName = () => {
let iconName = "IcIcon_1";
const headerIcon = this.props?.activetheme?.v3?.header?.icon || void 0;
switch (headerIcon?.icon_url) {
case "icon-1":
iconName = "IcIcon_1";
break;
case "icon-2":
iconName = "IcIcon_2";
break;
case "icon-3":
iconName = "IcIcon_3";
break;
case "icon-4":
iconName = "IcIcon_4";
break;
default:
iconName = "AvatarBot";
}
return iconName;
};
getBoxIcon = () => {
const startBox = this.props?.activetheme?.v3?.welcome_screen?.starter_box || void 0;
const headerIcon = this.props?.activetheme?.v3?.header?.icon || void 0;
if (!startBox || !headerIcon || !startBox?.show || !startBox?.icon?.show || !headerIcon?.show) {
return /* @__PURE__ */ React101.createElement(React101.Fragment, null);
}
if (headerIcon?.type === "custom") {
}
return /* @__PURE__ */ React101.createElement(
View84,
{
style: [
styles79.icon_main,
{
backgroundColor: this.props?.activetheme?.v3?.header?.bg_color || "#EAECF0"
}
]
},
headerIcon?.type === "custom" ? /* @__PURE__ */ React101.createElement(
FastImage14,
{
source: {
uri: headerIcon?.icon_url,
priority: FastImage14.priority.high,
cache: FastImage14.cacheControl.immutable
// Use cache effectively
},
style: styles79.image
}
) : /* @__PURE__ */ React101.createElement(
SvgIcon,
{
name: this.getIconName(),
width: normalize(18),
height: normalize(18),
color: this.props?.activetheme?.v3?.welcome_screen?.background?.color || "#4B4EDE"
}
)
);
};
renderStarterBox = () => {
const startBox = this.props?.activetheme?.v3?.welcome_screen?.starter_box || void 0;
if (!startBox || !startBox?.show) {
return /* @__PURE__ */ React101.createElement(React101.Fragment, null);
}
return /* @__PURE__ */ React101.createElement(View84, { style: styles79.box_main }, /* @__PURE__ */ React101.createElement(View84, { style: styles79.box_sub }, this.getBoxIcon(), /* @__PURE__ */ React101.createElement(View84, { style: styles79.title_main }, startBox?.title && /* @__PURE__ */ React101.createElement(Text65, { style: styles79.title }, startBox?.title), startBox?.sub_text && /* @__PURE__ */ React101.createElement(Text65, { style: styles79.sub_text }, startBox?.sub_text))), /* @__PURE__ */ React101.createElement(View84, { style: styles79.quick_btn_main }, this.quickStartBtns()), startBox?.quick_start_buttons?.action && /* @__PURE__ */ React101.createElement(
TouchableOpacity44,
{
onPress: () => {
if (this.props?.onStartConversationClick) {
this.props?.onStartConversationClick();
}
},
style: [
styles79.conversation_main,
{
backgroundColor: this.props?.activetheme?.v3?.welcome_screen?.background?.color || "#4B4EDE"
}
]
},
/* @__PURE__ */ React101.createElement(View84, { style: styles79.conversation_sub }, /* @__PURE__ */ React101.createElement(
Text65,
{
style: [
styles79.conversation_text,
{
color: this.props?.activetheme?.v3?.welcome_screen?.top_fonts?.color || Color_default.white
}
]
},
startBox?.quick_start_buttons?.action?.value
), /* @__PURE__ */ React101.createElement(
SvgIcon,
{
name: "Right",
width: normalize(10),
height: normalize(10),
color: this.props?.activetheme?.v3?.welcome_screen?.top_fonts?.color || Color_default.white
}
))
));
};
itemClick = (item) => {
switch (item?.type) {
case "web_url":
case "url":
if (item?.url) {
Linking8.openURL(item?.url);
} else if (item?.redirectUrl) {
let dweb = item?.redirectUrl?.dweb;
let mob = item?.redirectUrl?.mob;
let url = mob || dweb || "";
if (url?.length > 0) {
Linking8.canOpenURL(url).then((supported) => {
if (!supported) {
try {
Linking8.openURL(url);
} catch (e) {
}
console.log("No handler for URL:", url);
} else {
Linking8.openURL(url);
}
});
}
} else if (item?.value) {
Linking8.openURL(item?.value);
}
break;
}
};
getSingleLinkView = (link, index, isFromCarousel) => {
const Wrapper = link?.action?.type === "url" ? TouchableOpacity44 : View84;
return /* @__PURE__ */ React101.createElement(
Wrapper,
{
key: index + "_" + index,
onPress: () => {
this.itemClick(link?.action);
},
style: [
styles79.sin_link_main,
isFromCarousel && { width: windowWidth29 / 4 * 2.9 }
]
},
/* @__PURE__ */ React101.createElement(
View84,
{
style: [
styles79.sin_link_sub,
isFromCarousel && {
minHeight: normalize(65)
}
]
},
/* @__PURE__ */ React101.createElement(View84, { style: { flex: 1, marginRight: normalize(5) } }, /* @__PURE__ */ React101.createElement(Text65, { style: styles79.sin_link_title }, link?.title), /* @__PURE__ */ React101.createElement(Text65, { style: styles79.sin_link_desc }, link?.description)),
/* @__PURE__ */ React101.createElement(
SvgIcon,
{
name: "Right",
width: normalize(10),
height: normalize(10),
color: "#697586"
}
)
)
);
};
renderLinkViews = (static_links, isFromCarousel) => {
return static_links?.links?.map((link, index) => {
return this.getSingleLinkView(link, index, isFromCarousel);
});
};
renderStaticLinks = () => {
const static_links = this.props?.activetheme?.v3?.welcome_screen?.static_links || void 0;
if (!static_links || !static_links?.show) {
return /* @__PURE__ */ React101.createElement(React101.Fragment, null);
}
return /* @__PURE__ */ React101.createElement(View84, null, /* @__PURE__ */ React101.createElement(View84, { style: styles79.box_main }, /* @__PURE__ */ React101.createElement(Text65, { style: styles79.header_link_title }, "Links"), static_links?.layout === "carousel" ? (
// <View>
/* @__PURE__ */ React101.createElement(
ScrollView3,
{
showsHorizontalScrollIndicator: false,
horizontal: true,
style: {}
},
/* @__PURE__ */ React101.createElement(View84, { style: { flexDirection: "row" } }, this.renderLinkViews(static_links, true))
)
) : (
// {/* <Carousel
// loop={false}
// width={width}
// height={height}
// data={static_links?.links}
// mode="parallax"
// modeConfig={{
// parallaxAdjacentItemScale: 0.4,
// parallaxScrollingScale: 0.9,
// }}
// onSnapToItem={index => console.log('current index:', index)}
// renderItem={({item, index}: any) =>
// this.getSingleLinkView(item, index, true)
// }
// /> */}
// {/* </View> */}
/* @__PURE__ */ React101.createElement(View84, { style: {} }, this.renderLinkViews(static_links, false))
)));
};
renderPromotionContent = () => {
const promotional_content = this.props?.activetheme?.v3?.welcome_screen?.promotional_content || void 0;
if (!promotional_content || !promotional_content?.show || promotional_content?.promotions?.length === 0) {
return /* @__PURE__ */ React101.createElement(React101.Fragment, null);
}
const promotionsList = promotional_content?.promotions;
return /* @__PURE__ */ React101.createElement(View84, null, promotionsList?.map((item, index) => {
return /* @__PURE__ */ React101.createElement(
TouchableOpacity44,
{
key: index + "__",
onPress: () => {
this.itemClick(item?.action);
},
style: { marginBottom: normalize(16) }
},
/* @__PURE__ */ React101.createElement(
FastImage14,
{
source: {
uri: item?.banner,
priority: FastImage14.priority.high,
cache: FastImage14.cacheControl.immutable
// Use cache effectively
},
style: styles79.promotion_image
}
)
);
}));
};
render() {
return /* @__PURE__ */ React101.createElement(
View84,
{
style: { padding: normalize(16), backgroundColor: Color_default.transparent }
},
this.renderStarterBox(),
this.renderStaticLinks(),
this.renderPromotionContent()
);
}
};
var styles79 = StyleSheet77.create({
promotion_image: {
height: normalize(200),
width: windowWidth29 * 0.91
},
sin_link_desc: {
color: "#4B5565",
fontFamily: "Inter",
fontSize: normalize(12),
fontStyle: "normal",
fontWeight: "400"
},
sin_link_title: {
color: "#202124",
fontFamily: "Inter",
fontSize: normalize(14),
fontStyle: "normal",
fontWeight: "700"
},
sin_link_sub: {
flexDirection: "row",
alignItems: "center"
},
sin_link_main: {
margin: normalize(5),
padding: normalize(8),
borderRadius: 5,
borderWidth: 1,
borderColor: "#E4E5E7"
// backgroundColor: 'red',
},
header_link_title: {
color: "#202124",
fontFamily: "Inter",
fontSize: normalize(14),
fontStyle: "normal",
fontWeight: "700",
marginStart: normalize(5),
marginBottom: normalize(3)
},
conversation_text: { color: Color_default.white, flex: 1 },
conversation_sub: { flexDirection: "row", alignItems: "center" },
conversation_main: {
padding: 10,
borderRadius: 5,
marginTop: normalize(10)
},
quick_btn_main: {
//marginTop: normalize(16),
//marginBottom: normalize(16),
},
sub_text: {
fontFamily: "Inter",
fontSize: normalize(12),
fontStyle: "normal",
fontWeight: "400"
},
title: {
color: "#202124",
fontFamily: "Inter",
fontSize: normalize(14),
fontStyle: "normal",
fontWeight: "700"
},
title_main: {
marginStart: normalize(5),
marginEnd: normalize(5),
marginBottom: normalize(15)
},
box_sub: { flexDirection: "row" },
box_main: {
backgroundColor: Color_default.white,
borderRadius: 5,
borderWidth: 1,
borderColor: "#E4E5E7",
padding: normalize(16),
// minHeight: 100,
marginBottom: normalize(16)
},
btn_text: {
color: "#202124",
fontFamily: "Inter",
fontSize: normalize(14),
fontStyle: "normal",
fontWeight: "600"
},
quick_btn: {
borderRadius: 5,
padding: 10,
justifyContent: "flex-start",
flexDirection: "row",
marginTop: 5,
marginBottom: 5,
marginEnd: 15,
shadowColor: "#000000",
shadowOffset: {
width: 0,
height: 1
},
shadowRadius: 1,
shadowOpacity: 0.1,
backgroundColor: "white",
borderWidth: 1,
borderColor: "#E4E5E7"
},
btn_main: {
alignItems: "flex-start",
elevation: 2,
flexDirection: "row",
flexWrap: "wrap",
alignSelf: "flex-start",
justifyContent: "flex-start",
// marginBottom: 5,
backgroundColor: Color_default.transparent
},
icon_main: {
width: normalize(40),
height: normalize(40),
borderRadius: 25,
alignItems: "center",
justifyContent: "center"
},
image: {
height: normalize(22),
width: normalize(22),
resizeMode: "stretch"
}
});
// bot-sdk/components/WelcomeScreen/footer.tsx
init_esm_shims();
import React102 from "react";
import { StyleSheet as StyleSheet78, Text as Text66, View as View85 } from "react-native";
var WelcomeFooter = class extends React102.Component {
render() {
return /* @__PURE__ */ React102.createElement(View85, { style: { backgroundColor: Color_default.transparent, padding: normalizeText_default(4) } }, /* @__PURE__ */ React102.createElement(View85, { style: styles80.main }, /* @__PURE__ */ React102.createElement(Text66, { style: styles80.text }, "Powered by"), /* @__PURE__ */ React102.createElement(
SvgIcon,
{
name: "Koreai_logo",
width: normalizeText_default(41),
height: normalizeText_default(10),
color: Color_default.black
}
)));
}
};
var styles80 = StyleSheet78.create({
main: {
flexDirection: "row",
alignItems: "center",
justifyContent: "center"
},
text: {
color: "#9AA4B2",
marginEnd: normalizeText_default(5),
fontFamily: "Inter",
fontSize: normalizeText_default(10),
fontStyle: "normal",
fontWeight: "500"
}
});
// bot-sdk/components/WelcomeScreen/Header/index.tsx
init_esm_shims();
import React107 from "react";
// bot-sdk/components/WelcomeScreen/Header/largeHeader.tsx
init_esm_shims();
import React103 from "react";
import { StyleSheet as StyleSheet79, Text as Text67, View as View86 } from "react-native";
import FastImage15 from "react-native-fast-image";
var LargeHeader2 = class extends WelcomeBaseView {
render() {
const obj = this.props?.activetheme?.v3?.welcome_screen || null;
if (!obj) {
return /* @__PURE__ */ React103.createElement(React103.Fragment, null);
}
const isValidLogo = obj?.logo?.logo_url?.trim?.()?.length || false;
return /* @__PURE__ */ React103.createElement(
View86,
{
style: [
styles81.main_container,
{ backgroundColor: obj?.background?.color || "#4B4EDE" },
{ paddingTop: normalize(20) },
!isValidLogo ? { paddingBottom: normalize(20) } : {}
]
},
/* @__PURE__ */ React103.createElement(
Text67,
{
style: [styles81.title, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.title?.name
),
/* @__PURE__ */ React103.createElement(
Text67,
{
style: [
styles81.sub_title,
{ color: obj?.top_fonts?.color || Color_default.white }
]
},
obj?.sub_title?.name
),
/* @__PURE__ */ React103.createElement(
Text67,
{
style: [styles81.note, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.note?.name
),
obj?.logo?.logo_url && /* @__PURE__ */ React103.createElement(View86, { style: styles81.sub_container }, /* @__PURE__ */ React103.createElement(
FastImage15,
{
source: { uri: obj?.logo?.logo_url },
style: styles81.image
}
))
);
}
};
var styles81 = StyleSheet79.create({
note: {
fontSize: normalize(14),
marginTop: normalize(5),
fontFamily: "Inter",
fontStyle: "normal",
opacity: 0.8,
fontWeight: "400"
},
sub_title: {
fontSize: normalize(18),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "700"
},
title: {
fontSize: normalize(32),
opacity: 0.8,
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "600"
},
sub_container: {
height: normalize(50),
width: normalize(50),
backgroundColor: Color_default.transparent,
marginTop: normalize(10),
marginBottom: -normalize(25)
},
main_container: {
paddingLeft: normalize(16),
paddingRight: normalize(16),
// paddingBottom: normalize(32),
marginBottom: normalize(25)
//borderBottomRightRadius: 3,
//borderBottomLeftRadius: 3,
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch"
}
});
// bot-sdk/components/WelcomeScreen/Header/mediumHeader.tsx
init_esm_shims();
import React104 from "react";
import { StyleSheet as StyleSheet80, Text as Text68, View as View87 } from "react-native";
import FastImage16 from "react-native-fast-image";
var MediumHeader2 = class extends WelcomeBaseView {
render() {
const obj = this.props?.activetheme?.v3?.welcome_screen || null;
if (!obj) {
return /* @__PURE__ */ React104.createElement(React104.Fragment, null);
}
const isValidLogo = obj?.logo?.logo_url?.trim?.()?.length || false;
return /* @__PURE__ */ React104.createElement(
View87,
{
style: [
styles82.main_container,
{ backgroundColor: obj?.background?.color || "#4B4EDE" },
!isValidLogo && { paddingTop: normalize(20) }
]
},
obj?.logo?.logo_url && /* @__PURE__ */ React104.createElement(View87, { style: styles82.sub_container }, /* @__PURE__ */ React104.createElement(
FastImage16,
{
source: { uri: obj?.logo?.logo_url },
style: styles82.image
}
)),
/* @__PURE__ */ React104.createElement(
Text68,
{
style: [styles82.title, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.title?.name
),
/* @__PURE__ */ React104.createElement(
Text68,
{
style: [
styles82.sub_title,
{ color: obj?.top_fonts?.color || Color_default.white }
]
},
obj?.sub_title?.name
),
/* @__PURE__ */ React104.createElement(
Text68,
{
style: [styles82.note, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.note?.name
)
);
}
};
var styles82 = StyleSheet80.create({
note: {
fontSize: normalize(14),
marginTop: normalize(5),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "400"
},
sub_title: {
fontSize: normalize(18),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "700"
},
title: {
fontSize: normalize(32),
opacity: 0.8,
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "600"
},
sub_container: {
height: normalize(50),
width: normalize(50),
backgroundColor: Color_default.transparent,
marginTop: -normalize(25)
},
main_container: {
paddingLeft: normalize(16),
paddingRight: normalize(16),
paddingBottom: normalize(20),
marginTop: normalize(32),
borderTopRightRadius: 3,
borderTopLeftRadius: 3
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch"
}
});
// bot-sdk/components/WelcomeScreen/Header/compactHeader.tsx
init_esm_shims();
import React105 from "react";
import { StyleSheet as StyleSheet81, Text as Text69, View as View88 } from "react-native";
import "react-native-fast-image";
var CompactHeader2 = class extends WelcomeBaseView {
render() {
const obj = this.props?.activetheme?.v3?.welcome_screen || null;
if (!obj) {
return /* @__PURE__ */ React105.createElement(React105.Fragment, null);
}
const isValidLogo = obj?.logo?.logo_url?.trim?.()?.length || false;
return /* @__PURE__ */ React105.createElement(
View88,
{
style: [
styles83.main_container,
{ backgroundColor: obj?.background?.color || "#4B4EDE" },
isValidLogo ? { paddingTop: normalize(20) } : {}
]
},
obj?.logo?.logo_url && false,
/* @__PURE__ */ React105.createElement(
Text69,
{
style: [styles83.title, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.title?.name
),
/* @__PURE__ */ React105.createElement(
Text69,
{
style: [
styles83.sub_title,
{ color: obj?.top_fonts?.color || Color_default.white }
]
},
obj?.sub_title?.name
),
/* @__PURE__ */ React105.createElement(
Text69,
{
style: [styles83.note, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.note?.name
)
);
}
};
var styles83 = StyleSheet81.create({
note: {
fontSize: normalize(14),
marginTop: normalize(5),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "400"
},
sub_title: {
fontSize: normalize(18),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "700"
},
title: {
fontSize: normalize(32),
opacity: 0.8,
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "600"
},
sub_container: {
height: normalize(50),
width: normalize(50),
backgroundColor: Color_default.transparent,
marginTop: normalize(10)
},
main_container: {
paddingLeft: normalize(16),
paddingRight: normalize(16),
paddingBottom: normalize(20)
// marginTop: normalize(32),
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch"
}
});
// bot-sdk/components/WelcomeScreen/Header/regularHeader.tsx
init_esm_shims();
import React106 from "react";
import { StyleSheet as StyleSheet82, Text as Text70, View as View89 } from "react-native";
import FastImage18 from "react-native-fast-image";
var RegularHeader = class extends WelcomeBaseView {
render() {
const obj = this.props?.activetheme?.v3?.welcome_screen || null;
if (!obj) {
return /* @__PURE__ */ React106.createElement(React106.Fragment, null);
}
const isValidLogo = obj?.logo?.logo_url?.trim?.()?.length || false;
return /* @__PURE__ */ React106.createElement(
View89,
{
style: [
styles84.main_container,
{ backgroundColor: obj?.background?.color || "#4B4EDE" },
isValidLogo ? { paddingTop: normalize(20) } : {}
]
},
obj?.logo?.logo_url && /* @__PURE__ */ React106.createElement(View89, { style: styles84.sub_container }, /* @__PURE__ */ React106.createElement(
FastImage18,
{
source: { uri: obj?.logo?.logo_url },
style: styles84.image
}
)),
/* @__PURE__ */ React106.createElement(
Text70,
{
style: [styles84.title, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.title?.name
),
/* @__PURE__ */ React106.createElement(
Text70,
{
style: [
styles84.sub_title,
{ color: obj?.top_fonts?.color || Color_default.white }
]
},
obj?.sub_title?.name
),
/* @__PURE__ */ React106.createElement(
Text70,
{
style: [styles84.note, { color: obj?.top_fonts?.color || Color_default.white }]
},
obj?.note?.name
)
);
}
};
var styles84 = StyleSheet82.create({
note: {
fontSize: normalize(14),
marginTop: normalize(5),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "400"
},
sub_title: {
fontSize: normalize(18),
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "700"
},
title: {
fontSize: normalize(32),
opacity: 0.8,
fontFamily: "Inter",
fontStyle: "normal",
fontWeight: "600"
},
sub_container: {
height: normalize(50),
width: normalize(50),
backgroundColor: Color_default.transparent,
marginTop: normalize(15),
marginBottom: normalize(5)
},
main_container: {
paddingLeft: normalize(16),
paddingRight: normalize(16),
paddingBottom: normalize(20)
// marginTop: normalize(32),
},
image: {
height: normalize(50),
width: normalize(50),
resizeMode: "stretch"
}
});
// bot-sdk/components/WelcomeScreen/Header/index.tsx
var WelcomeHeader = class extends React107.Component {
render() {
const type = this.props?.activetheme?.v3?.welcome_screen?.layout;
switch (type) {
case WelcomeHeaderConstants.LARGE:
return /* @__PURE__ */ React107.createElement(LargeHeader2, { ...this.props });
case WelcomeHeaderConstants.MEDIUM:
return /* @__PURE__ */ React107.createElement(MediumHeader2, { ...this.props });
case WelcomeHeaderConstants.REGULAR:
return /* @__PURE__ */ React107.createElement(RegularHeader, { ...this.props });
default:
return /* @__PURE__ */ React107.createElement(CompactHeader2, { ...this.props });
}
}
};
// bot-sdk/components/WelcomeScreen/index.tsx
var Welcome = class extends WelcomeBaseView {
render() {
const bgColor = this.props.activetheme?.v3?.header?.bg_color;
const isWhiteStatus = isWhiteStatusBar(bgColor);
const isBlackStatus = isBlackStatusBar(bgColor);
return /* @__PURE__ */ React108.createElement(
SafeAreaView,
{
style: {
flex: 1,
alignItems: "center",
justifyContent: "center"
}
},
/* @__PURE__ */ React108.createElement(
View90,
{
style: {
backgroundColor: this.props.activetheme?.v3?.welcome_screen?.bottom_background?.color || Color_default.white,
flex: 1
}
},
bgColor && !isWhiteStatus ? /* @__PURE__ */ React108.createElement(
StatusBar2,
{
barStyle: isBlackStatus ? "default" : "dark-content",
backgroundColor: bgColor
}
) : /* @__PURE__ */ React108.createElement(
StatusBar2,
{
barStyle: "dark-content",
backgroundColor: Color_default.white
}
),
/* @__PURE__ */ React108.createElement(WelcomeHeader, { ...this.props }),
/* @__PURE__ */ React108.createElement(ScrollView4, { style: { flex: 1, backgroundColor: Color_default.transparent } }, /* @__PURE__ */ React108.createElement(WelcomeBody, { ...this.props })),
/* @__PURE__ */ React108.createElement(WelcomeFooter, { ...this.props })
)
);
}
};
// bot-sdk/components/CustomAlertComponent.tsx
init_esm_shims();
import React109, { Component as Component33 } from "react";
import { Button as Button3, View as View91, Text as Text71, StyleSheet as StyleSheet83 } from "react-native";
var CustomAlertComponent = class extends Component33 {
state = {
isModalVisible: false,
title: "",
message: "",
onPress: null
};
componentDidMount() {
if (this.props?.thisRef) {
this.props?.thisRef(this);
}
}
showAlert = (title, message, onPress) => {
this.setState({
isModalVisible: true,
title,
message,
onPress
});
};
hideAlert = () => {
this.setState({ isModalVisible: false });
if (this.state.onPress) {
this.state.onPress();
}
};
render() {
const { isModalVisible, title, message } = this.state;
return /* @__PURE__ */ React109.createElement(View91, { style: styles85.container }, /* @__PURE__ */ React109.createElement(
CustomModal_default,
{
isVisible: isModalVisible,
onBackdropPress: this.hideAlert,
onBackButtonPress: this.hideAlert,
useNativeDriver: true,
hideModalContentWhileAnimating: true
},
/* @__PURE__ */ React109.createElement(View91, { style: styles85.alertBox }, /* @__PURE__ */ React109.createElement(Text71, { style: styles85.alertTitle }, title), /* @__PURE__ */ React109.createElement(Text71, { style: styles85.alertMessage }, message), /* @__PURE__ */ React109.createElement(View91, { style: styles85.btn }, /* @__PURE__ */ React109.createElement(Button3, { title: " Ok ", onPress: this.hideAlert })))
));
}
};
var styles85 = StyleSheet83.create({
btn: {
alignItems: "flex-end",
justifyContent: "flex-end"
},
container: {
//flex: 1,
justifyContent: "center",
alignItems: "center"
},
alertBox: {
backgroundColor: "white",
padding: 20,
borderRadius: 5
//alignItems: 'center',
},
alertTitle: {
fontSize: normalize(18),
fontWeight: "bold",
marginBottom: 10,
color: Color_default.text_color
},
alertMessage: {
fontSize: normalize(16),
marginBottom: 20,
color: Color_default.text_color
}
});
var CustomAlertComponent_default = CustomAlertComponent;
// bot-sdk/chat/components/TemplateBottomSheet.tsx
init_esm_shims();
import { PureComponent as PureComponent2 } from "react";
import { Modal as Modal8, TouchableOpacity as TouchableOpacity45, View as View92 } from "react-native";
var TemplateBottomSheet = class extends PureComponent2 {
static contextType = ThemeContext;
constructor(props) {
super(props);
}
render() {
let payload = this.props.payload;
return /* @__PURE__ */ React.createElement(
Modal8,
{
animationType: "slide",
transparent: true,
onRequestClose: () => {
if (this.props.onSliderClosed)
this.props.onSliderClosed();
}
},
/* @__PURE__ */ React.createElement(View92, { style: {
flex: 1,
justifyContent: "flex-end",
backgroundColor: "rgba(0, 0, 0, 0.5)"
} }, /* @__PURE__ */ React.createElement(View92, { style: {
backgroundColor: "#fff",
paddingHorizontal: 20,
paddingVertical: 10,
borderTopLeftRadius: 20,
borderTopRightRadius: 20,
shadowColor: "#000",
shadowOffset: { width: 0, height: -2 },
shadowOpacity: 0.25,
shadowRadius: 10,
elevation: 10
} }, this.props.templateType !== TEMPLATE_TYPES.FEEDBACK_TEMPLATE && /* @__PURE__ */ React.createElement(
TouchableOpacity45,
{
style: {
marginBottom: 10,
alignSelf: "flex-end"
},
onPress: () => {
if (this.props.onSliderClosed)
this.props.onSliderClosed();
}
},
/* @__PURE__ */ React.createElement(
SvgIcon,
{
name: "HeaderClose",
width: normalize(20),
height: normalize(20),
color: Color_default.black
}
)
), this.renderSlideTemplates(this.props.templateType, payload)))
);
}
renderSlideTemplates = (templateType, payload) => {
let theme = this.context;
console.log("this.props?.templateInjection " + this.props?.templateInjection);
if (this.props?.templateInjection) {
let templateInjection = this.props?.templateInjection;
let CustomView = templateInjection?.get?.(templateType);
if (CustomView) {
try {
return /* @__PURE__ */ React.createElement(
CustomView,
{
payload,
theme,
onListItemClick: this.props.onListItemClick,
isLastMessage: true,
onBottomSheetClose: this.props.onSliderClosed
}
);
} catch (error) {
}
}
}
switch (templateType) {
case TEMPLATE_TYPES.OTP_TEMPLATE:
return /* @__PURE__ */ React.createElement(OTPTemplate, { payload, theme, onListItemClick: this.props.onListItemClick, onBottomSheetClose: this.props.onSliderClosed });
case TEMPLATE_TYPES.FEEDBACK_TEMPLATE:
return /* @__PURE__ */ React.createElement(FeedbackTemplate, { payload, theme, onListItemClick: this.props.onListItemClick, onBottomSheetClose: this.props.onSliderClosed });
case TEMPLATE_TYPES.RESET_PIN_TEMPLATE:
return /* @__PURE__ */ React.createElement(ResetPinTemplate, { payload, theme, onListItemClick: this.props.onListItemClick, onBottomSheetClose: this.props.onSliderClosed });
default:
return null;
}
};
};
// bot-sdk/chat/KoreChat.tsx
var Sound = null;
try {
Sound = __require("react-native-sound").default;
if (Sound) {
Sound.setCategory("Playback");
Sound.setActive(true);
}
} catch (error) {
}
dayjs10.extend(localizedFormat);
var imageFilesTypes2 = ["jpg", "jpeg", "png"];
var windowWidth30 = Dimensions37.get("window").width;
var isAgentConnect = false;
var isMinimizedWindow = false;
var historyMessages = 1;
var KoreChat = class _KoreChat extends React110.Component {
_messageContainerRef = React110.createRef();
ttsModule = null;
isTTSAvailable = false;
textInput = null;
alertRef = React110.createRef();
_isFirstLayout = true;
_locale = "en";
invertibleScrollViewProps = {};
_unsubscribeConn;
backHandler;
unsubscribeNavigation;
allowNavigation = false;
static defaultProps;
_isChatMounted = false;
fileUploadQueue;
themApi;
constructor(props) {
super(props);
this.themApi = new ActiveThemeAPI();
this.fileUploadQueue = void 0;
isAgentConnect = false;
this.state = {
isInitialized: false,
composerHeight: 0,
messagesContainerHeight: 0,
typingDisabled: false,
text: "",
messages: [],
isNetConnected: false,
showLoader: true,
quickReplies: [],
modalVisible: false,
viewMoreObj: void 0,
isBotResponseLoading: false,
menuItems: void 0,
showAttachmentModal: false,
showSeeMoreModal: false,
progressObj: {},
isShowProgress: false,
mediaPayload: [],
onSTTValue: null,
currentTemplate: null,
currentTemplateData: null,
activetheme: null,
wlcomeModalVisible: false,
currentTemplateHeading: void 0,
isReconnecting: false,
showBackButtonDialog: false,
showTemplateBottomSheet: false,
messageBottomSheet: null,
isTTSenable: false
};
}
lazyLaunchCamera = async (options, callback) => {
try {
const { launchCamera } = await import("react-native-image-picker");
launchCamera(options, callback);
} catch (error) {
console.warn("Failed to load ImagePicker:", error);
const errorResponse = {
errorMessage: "Image picker not available",
errorCode: "module_not_available",
didCancel: false
};
callback(errorResponse);
}
};
lazyDocumentPicker = async () => {
try {
const DocumentPickerModule = await import("react-native-document-picker");
return DocumentPickerModule.default || DocumentPickerModule;
} catch (error) {
console.warn("Failed to load DocumentPicker:", error);
return null;
}
};
getDocumentPickerTypes = async () => {
try {
const DocumentPickerModule = await import("react-native-document-picker");
const DocumentPicker = DocumentPickerModule.default || DocumentPickerModule;
return DocumentPicker?.types || {};
} catch (error) {
console.warn("Failed to load DocumentPicker types:", error);
return {
images: "public.image",
doc: "com.microsoft.word.doc",
docx: "org.openxmlformats.wordprocessingml.document",
plainText: "public.plain-text",
pdf: "com.adobe.pdf",
xls: "com.microsoft.excel.xls",
xlsx: "org.openxmlformats.spreadsheetml.sheet",
audio: "public.audio",
video: "public.movie"
};
}
};
handleDocumentTypeSelection = async (typeCategory) => {
try {
const types = await this.getDocumentPickerTypes();
let typeArray = [];
switch (typeCategory) {
case "images":
typeArray = [types.images];
break;
case "documents":
typeArray = [
types.doc,
types.docx,
types.plainText,
types.pdf,
types.xls,
types.xlsx,
types.audio
];
break;
case "video":
typeArray = [types.video];
break;
default:
console.warn("Unknown document type category:", typeCategory);
return;
}
this.onAttachItemClick(typeArray);
} catch (error) {
console.error("Error handling document type selection:", error);
}
};
init = () => {
if (!this.props.botConfig) {
setTimeout(() => {
try {
if (this.props.navigation?.canGoBack?.()) {
this.props.navigation?.goBack?.();
} else {
BackHandler2.exitApp();
}
} catch (error) {
BackHandler2.exitApp();
}
}, 5e3);
return;
}
console.log("this.props.botConfig ------>:", this.props.botConfig);
const botClient = KoreBotClient3.getInstance();
botClient.setAppState(APP_STATE.ACTIVE);
botClient.once(RTM_EVENT.CONNECTING, () => {
this.setState({
showLoader: true
});
});
botClient.on(RTM_EVENT.ERROR, (data) => {
let message = data?.message ? data?.message : "Connection to the bot failed. Please ensure your configuration is valid and try again.";
this.showAlert("Alert", message, data?.isBack);
return;
});
botClient.on(RTM_EVENT.ON_OPEN, (data) => {
console.log("-----> SUCCESS TO KORA BOT CONNECTED <------:", data);
if (isMinimizedWindow) {
this.loadHistory();
isMinimizedWindow = false;
}
this.getThemeData();
this.setBotClientListeners();
if (!data?.isReconnectionAttempt) {
if (this.props.route?.params?.postUtterance) {
setTimeout(() => {
if (this.props.route?.params?.postUtterance) {
this.onSend({
message: { text: this.props.route?.params?.postUtterance }
});
}
}, 2e3);
}
}
if (this.state.isReconnecting) {
this.setState({
isReconnecting: false,
showLoader: false
});
} else if (this.state.showLoader) {
this.setState({
showLoader: false
});
}
});
botClient.initializeBotClient(this.props.botConfig, !isMinimizedWindow);
};
showAlert = (title, message, isBack) => {
const { current } = this.alertRef;
if (current) {
current?.showAlert?.(title, message, () => {
if (isBack) {
if (this.props.onHeaderActionsClick) {
this.props.onHeaderActionsClick?.(HeaderIconsId.BACK);
} else {
this.onHeaderActionsClick(HeaderIconsId.BACK);
}
}
});
}
};
saveThemeData = async (data) => {
try {
if (!data || data?.length === 0) {
await AsyncStorage4.removeItem(BRANDING_RESPONSE_FILE);
console.log("KoreChat ============>>> Removed ThemeData Done");
} else {
const strData = JSON.stringify(data);
await AsyncStorage4.setItem(BRANDING_RESPONSE_FILE, strData);
console.log("KoreChat ============>>> saveThemeData Done");
}
} catch (error) {
console.log("KoreChat saveThemeData error --->:", error);
}
const preTheme = this.state.activetheme;
this.setState(
{
showLoader: false,
activetheme: data
},
() => {
if (!preTheme && data?.v3 && data?.v3?.welcome_screen?.show) {
this.setState({
wlcomeModalVisible: true
});
}
}
);
};
getThemeData = () => {
this.themApi?.getThemeAPI(this.props.botConfig, (data) => {
if (data?.v3) {
this.saveThemeData(data);
this.setState({
showLoader: false,
themeData: data
});
} else {
this.saveThemeData(null);
this.setState({
showLoader: false,
themeData: void 0
});
}
});
};
static append(currentMessages = [], messages) {
if (!Array.isArray(messages)) {
messages = [messages];
}
return messages.concat(currentMessages);
}
handleBackPress = () => {
if (!this.state.showBackButtonDialog) {
this.setState({ showBackButtonDialog: true });
}
return true;
};
handleDialogCancel = () => {
this.setState({ showBackButtonDialog: false });
this.allowNavigation = false;
};
handleDialogClose = () => {
isMinimizedWindow = false;
this.setState({ showBackButtonDialog: false });
if (isAgentConnect) {
KoreBotClient3.getInstance().sendEvent("close_agent_chat");
} else {
KoreBotClient3.getInstance().sendEvent("close_button_event");
}
setTimeout(() => {
try {
if (this.props.navigation?.canGoBack?.()) {
this.allowNavigation = true;
this.props.navigation.goBack();
} else {
BackHandler2.exitApp();
}
} catch (error) {
BackHandler2.exitApp();
}
}, 100);
};
handleDialogMinimize = () => {
isMinimizedWindow = true;
this.setState({ showBackButtonDialog: false });
KoreBotClient3.getInstance().sendEvent("minimize_button_event");
setTimeout(() => {
try {
if (this.props.navigation?.canGoBack?.()) {
this.allowNavigation = true;
this.props.navigation.goBack();
} else {
BackHandler2.exitApp();
}
} catch (error) {
BackHandler2.exitApp();
}
}, 100);
};
componentDidMount() {
const botClient = KoreBotClient3.getInstance();
this._unsubscribeConn = NetInfo.addEventListener((state) => {
const { isConnected } = state;
if (!this.state.isNetConnected && isConnected) {
setTimeout(() => {
botClient.setIsNetworkAvailable(isConnected);
botClient.checkSocketAndReconnect();
}, 10);
}
this.setState({ isNetConnected: isConnected ? isConnected : false });
});
botClient.setSessionActive(true);
if (isAndroid) {
this.backHandler = BackHandler2.addEventListener("hardwareBackPress", this.handleBackPress);
}
if (this.props.navigation) {
this.unsubscribeNavigation = this.props.navigation.addListener("beforeRemove", (e) => {
if (this.allowNavigation) {
this.allowNavigation = false;
return;
}
e.preventDefault();
this.setState({ showBackButtonDialog: true });
});
}
const { text } = this.props;
this.setisChatMounted(true);
this.initLocale();
this.setTextFromProp(text);
this.stopTTS();
setTimeout(() => {
this.init();
}, 1e3);
}
clickedQuickReply = () => {
this.refreshView();
};
componentWillUnmount() {
this.setisChatMounted(false);
const botClient = KoreBotClient3.getInstance();
botClient.removeAllListeners(RTM_EVENT.CONNECTING);
botClient.removeAllListeners(RTM_EVENT.ON_OPEN);
botClient.removeAllListeners(RTM_EVENT.ON_MESSAGE);
botClient?.disconnect();
this.stopTTS();
}
componentDidUpdate(prevProps, prevState) {
const { messages, text, inverted } = this.props;
if (this.props.messages !== prevProps.messages) {
this.setMessages(messages || []);
}
if (inverted === false && messages && prevProps.messages && messages?.length !== prevProps.messages?.length) {
setTimeout(() => this.scrollToBottom(false), 200);
}
if (text !== prevProps.text) {
this.setTextFromProp(text);
}
}
setBotClientListeners = () => {
const botClient = KoreBotClient3.getInstance();
botClient?.on(RTM_EVENT.ON_ACK, (data) => {
if (data.type === "ack") {
}
});
botClient?.on(RTM_EVENT.ON_EVENTS, (data) => {
if (data.type === "events") {
this.setIsBotResponseLoading(data.message.type === "typing");
}
});
botClient?.on(RTM_EVENT.ON_MESSAGE, (data) => {
if (data.type === "ack") {
console.log("Received ACK message, setting loading state");
this.setIsBotResponseLoading(true);
return;
}
this.setIsBotResponseLoading(false);
this.processMessage(data);
if (isAgentConnect) {
KoreBotClient3.getInstance().sendEvent("message_read");
}
const quickReplies = this.isQuickReplies(data);
if (quickReplies) {
this.setState({
quickReplies
});
this.clickedQuickReply();
}
});
};
onReconnect = () => {
if (this.state.isReconnecting) {
return;
}
this.setState({ isReconnecting: true }, () => {
const botClient = KoreBotClient3.getInstance();
botClient.reconnect(true, true);
});
};
isQuickReplies = (data) => {
if (data && data.message && data.message[0] && data.message[0].component && data.message[0].component.type === "template" && data.message[0].component.payload && data.message[0].component.payload.payload && data.message[0].component.payload.payload.template_type && data.message[0].component.payload.payload.template_type === TEMPLATE_TYPES.QUICK_REPLIES) {
return data.message[0].component.payload.payload.quick_replies;
}
return null;
};
processMessage = (newMessages) => {
let modifiedMessages = null;
const itemId = getItemId();
const isStreamChunk = newMessages?.sM === true && newMessages?.type === "bot_response";
const streamText = isStreamChunk && newMessages?.message?.[0]?.component?.payload?.text;
const endChunk = isStreamChunk && newMessages?.endChunk === true;
const completeResponse = newMessages?.completeResponse;
if (isStreamChunk && (streamText != null || endChunk)) {
const messageId = newMessages.messageId;
this.setMessages((prevMessages) => {
const messages = prevMessages || [];
const idx = messages.findIndex((m) => m.messageId === messageId && m.type === "bot_response");
if (idx >= 0) {
const prev = messages[idx];
const prevPayload = prev?.message?.[0]?.component?.payload;
const prevText = (prevPayload?.text ?? "") || "";
const prevCInfo = prev?.message?.[0]?.cInfo;
const prevBody = (prevCInfo?.body ?? "") || "";
const nextMessages = messages.slice();
const nextMessage = { ...prev };
const nextMsgEntry = nextMessage.message?.[0] ? { ...nextMessage.message[0] } : null;
if (nextMsgEntry?.component?.payload) {
nextMsgEntry.component = { ...nextMsgEntry.component, payload: { ...nextMsgEntry.component.payload, text: prevText + (streamText ?? "") } };
if (nextMsgEntry.cInfo)
nextMsgEntry.cInfo = { ...nextMsgEntry.cInfo, body: prevBody + (streamText ?? "") };
nextMessage.message = [nextMsgEntry];
nextMessages[idx] = nextMessage;
return nextMessages;
}
}
const modifiedMessages2 = [{ ...newMessages, itemId }];
return _KoreChat.append(messages, modifiedMessages2);
});
if (endChunk && completeResponse != null) {
const ttsPayload = { ...newMessages, message: [{ component: { payload: { payload: { text: completeResponse }, text: completeResponse } } }] };
setTimeout(() => this.textToSpeech(ttsPayload), 1e3);
}
return;
}
const hasRealAttachments = newMessages?.message?.[0]?.component?.payload?.attachments && newMessages?.message?.[0]?.component?.payload?.attachments !== "attachments" && newMessages?.message?.[0]?.component?.payload?.attachments !== "";
if (hasRealAttachments) {
let attachmentTemplate = {
type: "user_message",
message: [
{
type: TEMPLATE_TYPES.USER_ATTACHEMENT_TEMPLATE,
component: {
type: TEMPLATE_TYPES.USER_ATTACHEMENT_TEMPLATE,
payload: newMessages?.message?.[0]?.component?.payload
}
}
]
};
modifiedMessages = [
{
...attachmentTemplate,
itemId
}
];
} else {
modifiedMessages = [
{
...newMessages,
itemId
}
];
}
if (modifiedMessages.length === 1 && !newMessages?.message?.[0]?.component?.payload?.attachments) {
let message = modifiedMessages[0];
if (message.type === "bot_response" && this.isSliderView(message)) {
this.setState({ showTemplateBottomSheet: true, messageBottomSheet: message });
return;
}
if (message.type === "bot_response") {
if (message.fromAgent == true) {
isAgentConnect = true;
} else {
isAgentConnect = false;
}
}
}
this.setMessages(_KoreChat.append(this.state.messages, modifiedMessages));
if (!isStreamChunk) {
setTimeout(() => {
this.textToSpeech(newMessages);
}, 1e3);
}
};
stopTTS = async () => {
if (!this.ttsModule || !this.isTTSAvailable) {
return;
}
try {
await this.ttsModule.stop();
} catch (error) {
}
};
initializeTTS = async () => {
if (this.ttsModule && this.isTTSAvailable) {
return;
}
try {
const TTS = await LazyLoader.importModule(
() => import("react-native-tts"),
"tts"
);
if (!TTS || !TTS.speak) {
throw new Error("TTS module or required methods not found");
}
try {
await TTS.getInitStatus();
this.isTTSAvailable = true;
} catch (error) {
this.isTTSAvailable = true;
}
this.ttsModule = TTS;
try {
await TTS.setDefaultRate(0.5);
await TTS.setDefaultPitch(1);
await TTS.setIgnoreSilentSwitch("ignore");
await TTS.setDucking(false);
} catch (configError) {
console.warn("TTS: Configuration failed:", configError);
}
} catch (error) {
console.error("TTS: Failed to initialize:", error);
this.ttsModule = null;
this.isTTSAvailable = false;
}
};
cleanupTTS = async () => {
if (!this.ttsModule) {
return;
}
try {
await this.ttsModule.stop();
} catch (error) {
console.warn("TTS: Error during cleanup:", error);
}
this.ttsModule = null;
this.isTTSAvailable = false;
};
speakMessage = async (message) => {
if (!this.ttsModule || !this.isTTSAvailable) {
return;
}
try {
await this.ttsModule.speak(message, {
iosVoiceId: "com.apple.ttsbundle.Moira-compact",
rate: 0.5,
pitch: 1
});
} catch (error) {
console.error("TTS: Speak failed:", error);
try {
await this.ttsModule.speak(message);
} catch (fallbackError) {
console.error("TTS: Fallback speak also failed:", fallbackError);
}
}
};
isSliderView = (message) => {
return message.message && message.message[0] && message.message[0].component && message.message[0].component.type === "template" && message.message[0].component.payload && message.message[0].component.payload.payload && message.message[0].component.payload.payload.template_type && message.message[0].component.payload.payload.sliderView && (message.message[0].component.payload.payload.template_type === TEMPLATE_TYPES.OTP_TEMPLATE || message.message[0].component.payload.payload.template_type === TEMPLATE_TYPES.FEEDBACK_TEMPLATE || message.message[0].component.payload.payload.template_type === TEMPLATE_TYPES.RESET_PIN_TEMPLATE);
};
textToSpeech = (botResponse) => {
if (!this.state.isTTSenable) {
this.stopTTS();
return;
}
if (botResponse.type === "bot_response") {
let message;
let component = botResponse.message[0].component;
if (component?.payload?.payload?.speech_hint) {
message = component?.payload?.payload?.speech_hint;
} else {
let tType = getTemplateType(botResponse.message);
const payload = component.payload?.payload || component?.payload;
if (tType === TEMPLATE_TYPES.TEXT) {
message = payload?.text;
if (!message) {
message = payload?.payload?.text;
if (!message) {
message = payload;
}
}
} else {
message = payload?.title || payload?.text || payload?.heading;
}
}
if (message) {
this.speakMessage(message);
}
}
};
initLocale = () => {
LocalizationManager.initializeLocale(this.props.locale);
this.setLocale(LocalizationManager.getLocale());
};
setLocale = (locale) => {
this._locale = locale;
LocalizationManager.setLocale(locale);
};
getLocalizedString = (key) => {
return LocalizationManager.getLocalizedString(key);
};
setTextFromProp = (textProp) => {
if (textProp !== void 0 && textProp !== this.state.text) {
this.setState({ text: textProp });
}
};
getTextFromProp = (fallback) => {
if (this.props.text === null) {
return fallback;
}
return this.props.text;
};
setMessages = (messagesOrUpdater) => {
this.setState((prevState) => {
const nextMessages = typeof messagesOrUpdater === "function" ? messagesOrUpdater(prevState.messages || []) : messagesOrUpdater;
historyMessages = nextMessages.length;
return { messages: nextMessages };
});
};
getMessages = () => {
return this.state.messages;
};
setIsFirstLayout = (value) => {
this._isFirstLayout = value;
};
getIsFirstLayout = () => {
return this._isFirstLayout;
};
setIsTypingDisabled = (value) => {
this.setState({
typingDisabled: value
});
};
getIsTypingDisabled = () => {
return this.state.typingDisabled;
};
setIsBotResponseLoading = (value) => {
this.setState({
isBotResponseLoading: value
});
};
getIsBotResponseLoading = () => {
return this.state.isBotResponseLoading;
};
setisChatMounted = (value) => {
this._isChatMounted = value;
};
getisChatMounted = () => {
return this._isChatMounted;
};
scrollToBottom = (animated = true) => {
if (this._messageContainerRef && this._messageContainerRef.current) {
const { inverted } = this.props;
if (!inverted) {
this._messageContainerRef.current.scrollToEnd({ animated });
} else {
this._messageContainerRef.current.scrollToOffset({
offset: 0,
animated
});
}
}
};
renderMessages = () => {
const { messagesContainerStyle, ...messagesContainerProps } = this.props;
return /* @__PURE__ */ React110.createElement(View93, { style: [messagesContainerStyle, { flex: 1 }] }, /* @__PURE__ */ React110.createElement(
MessageContainer,
{
...messagesContainerProps,
onListItemClick: this.onListItemClick,
onSendText: this.onSendPlainText,
invertibleScrollViewProps: this.invertibleScrollViewProps,
messages: this.getMessages(),
forwardRef: this._messageContainerRef,
isTyping: this.props.isTyping,
onDragList: this.props.onDragList,
onHistoryLoaded: this.onHistoryLoaded
}
), this.state.messageBottomSheet && this.state.showTemplateBottomSheet && this.renderTemplateBottomSheet(), this.renderChatFooter());
};
renderTemplateBottomSheet = () => {
let message = this.state.messageBottomSheet;
let isShow = this.state.showTemplateBottomSheet;
if (!message)
return /* @__PURE__ */ React110.createElement(React110.Fragment, null);
return /* @__PURE__ */ React110.createElement(
TemplateBottomSheet,
{
isShow: isShow && message,
messageId: message.messageId,
payload: message.message[0].component.payload.payload,
templateType: message.message[0].component.payload.payload.template_type,
onListItemClick: this.onListItemClick,
onSliderClosed: () => {
this.setState({ showTemplateBottomSheet: false });
},
templateInjection: this.props.templateInjection
}
);
};
onSendPlainText = (message) => {
this.onSendText({ text: message });
};
getAttachmentPayload = (msz) => {
let fileNames = msz;
this.state?.mediaPayload.map((media) => {
let ext = getDrawableByExt(this.getFileType(media?.fileName));
let fileName = media?.fileName;
if (fileName?.length > MAX_FILE_NAME_LENGTH) {
fileName = fileName?.slice(
fileName.length - MAX_FILE_NAME_LENGTH,
fileName.length
);
}
fileNames = fileNames + "\n" + ext + " " + fileName + "\n";
});
return {
message: { text: fileNames },
data: this.state?.mediaPayload,
data_type: "attachments"
};
};
onSendText = (message, shouldResetInputToolbar = false, data_type = "") => {
this.stopTTS();
if (this.props.onSend) {
this.props.onSend(message.text, data_type);
} else {
let data;
if (this.state?.mediaPayload?.length > 0) {
let payload = this.getAttachmentPayload(message.text);
this.setState({
mediaPayload: []
});
this.onSend({
message: payload.message,
data: payload.data,
shouldResetInputToolbar,
data_type: payload.data_type
});
} else {
this.onSend({
message,
data,
shouldResetInputToolbar,
data_type
});
}
}
};
renderQuickRepliesView = (props) => {
const itemClick = (item) => {
this.computePostBack(item, TEMPLATE_TYPES.QUICK_REPLIES);
};
if (this.props?.renderQuickRepliesView) {
return this.props.renderQuickRepliesView({ ...props, itemClick });
}
return /* @__PURE__ */ React110.createElement(QuickReplies, { ...props, itemClick });
};
renderMediaView = (props) => {
if (this.props.renderMediaView) {
return this.props.renderMediaView(this.state.mediaPayload || []);
}
return this.renderInternalMediaView();
};
getFileType = (fileName) => {
if (!fileName) {
return "";
}
try {
let fileType = fileName?.slice(
fileName?.lastIndexOf(".") + 1,
fileName?.length
);
return fileType?.toLowerCase?.()?.trim?.();
} catch (error) {
}
return "";
};
renderInternalMediaView = () => {
const media = this.state.mediaPayload || [];
if (media?.length === 0) {
return /* @__PURE__ */ React110.createElement(React110.Fragment, null);
}
return /* @__PURE__ */ React110.createElement(ScrollView5, { horizontal: true }, /* @__PURE__ */ React110.createElement(View93, { style: styles86.media_main }, media?.map((m, index) => {
let fileType = this.getFileType(m?.fileName);
return /* @__PURE__ */ React110.createElement(View93, { key: index + "", style: styles86.media_sub1 }, /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
onPress: () => {
if (!m?.fileId) {
this.fileUploadQueue?.removeFromQueue(m);
}
const filterList = this.state.mediaPayload.filter(
(m2) => m2.id !== m.id
);
this.setState({
mediaPayload: filterList
});
},
style: styles86.close_icon_main
},
/* @__PURE__ */ React110.createElement(
SvgIcon,
{
name: "HeaderClose",
width: normalize(10),
height: normalize(10),
color: "#697586"
}
)
), /* @__PURE__ */ React110.createElement(View93, { style: { marginTop: 6 } }, imageFilesTypes2.includes(fileType) ? renderImage({
image: m?.uri,
iconShape: null,
iconSize: null,
width: 50,
height: 50
}) : /* @__PURE__ */ React110.createElement(FileIcon, { fileType, size: 45 }), !m?.status && /* @__PURE__ */ React110.createElement(View93, { style: styles86.progress_main }, /* @__PURE__ */ React110.createElement(
Progress.Circle,
{
progress: m?.progress / 100 || 0,
size: 33,
thickness: 3,
color: Color_default.red
}
))));
})));
};
clearQuickReplies = () => {
if (this.state?.quickReplies?.length !== 0) {
this.setState({
quickReplies: []
});
}
};
onSend = ({
message = {
text: ""
},
data = void 0,
shouldResetInputToolbar = true,
data_type = ""
}) => {
console.log("onSend called with message:", message);
this.clearQuickReplies();
if (shouldResetInputToolbar === true) {
this.setIsTypingDisabled(true);
this.resetInputToolbar();
}
this.setIsBotResponseLoading(true);
if (this.props.onSend) {
this.props.onSend(message.text, data_type);
} else {
var messageData = KoreBotClient3.getInstance()?.sendMessage(
message.text,
data,
data_type
);
setTimeout(() => {
this.scrollToBottom(true);
}, 100);
this.processMessage(messageData);
}
if (shouldResetInputToolbar === true) {
setTimeout(() => {
if (this.getisChatMounted() === true) {
this.setIsTypingDisabled(false);
}
}, 100);
}
};
computePostBack = (item = {}, template_type = "") => {
if (!item) {
return;
}
let type = item?.type || item?.content_type || "";
switch (type) {
case "clientCall":
break;
case "notification_action":
break;
case "postback":
case "text":
case "dateTime":
case "person":
let message = item?.utterance?.trim() || item?.title?.value?.trim() || item?.title?.trim() || item?.message?.trim();
if (template_type === TEMPLATE_TYPES.QUICK_REPLIES) {
if (item?.renderMsg) {
message = item?.renderMsg;
}
}
let data_type = "";
let data;
let pArray = item?.payload && typeof item?.payload === "string" ? item?.payload?.split(":") : void 0;
if (pArray?.length === 2) {
data_type = pArray[0].trim();
} else {
}
data = item;
if (template_type === TEMPLATE_TYPES.MULTI_SELECT_TEMPLATE) {
message = item?.message;
data = {
payload: item?.payload
};
}
this.onSend({ message: { text: message }, data, data_type });
break;
case "web_url":
case "url":
if (item?.url) {
let url = item?.url;
if (!url?.startsWith("http://") && !url?.startsWith("https://")) {
url = "http://" + url;
}
Linking9.openURL(url);
}
if (item?.link) {
let url = item?.link;
if (!url?.startsWith("http://") && !url?.startsWith("https://")) {
url = "http://" + url;
}
Linking9.openURL(url);
} else if (item?.redirectUrl) {
let dweb = item?.redirectUrl?.dweb;
let mob = item?.redirectUrl?.mob;
let url = mob || dweb || "";
if (url?.length > 0) {
if (!url?.startsWith("http://") && !url?.startsWith("https://")) {
url = "http://" + url;
}
Linking9.canOpenURL(url).then((supported) => {
if (!supported) {
try {
Linking9.openURL(url);
} catch (e) {
}
console.log("No handler for URL:", url);
} else {
Linking9.openURL(url);
}
});
}
} else if (item?.value) {
Linking9.openURL(item?.value);
}
break;
case "action":
break;
case "bot_msz":
if (item?.message && item?.payload) {
this.onSend({
message: { text: item?.message },
data: item?.payload,
data_type: type
});
}
break;
default:
if (typeof item === "string") {
if (template_type == TEMPLATE_TYPES.IMAGE_MESSAGE) {
Linking9.openURL(item);
} else {
this.onSend({ message: { text: item } });
}
}
}
};
onListItemClick = (template_type, item, isFromViewMore, theme) => {
if (this.props.onListItemClick) {
let onClick = this.props.onListItemClick(
template_type,
item,
isFromViewMore,
theme
);
if (KORA_ITEM_CLICK !== onClick) {
return;
}
}
switch (template_type) {
case TEMPLATE_TYPES.BUTTON:
case TEMPLATE_TYPES.CARD_TEMPLATE:
case TEMPLATE_TYPES.TABLE_LIST_TEMPLATE:
case TEMPLATE_TYPES.ADVANCED_MULTI_SELECT_TEMPLATE:
case TEMPLATE_TYPES.MULTI_SELECT_TEMPLATE:
case TEMPLATE_TYPES.RADIO_OPTION_TEMPLATE:
case TEMPLATE_TYPES.DROPDOWN_TEMPLATE:
case TEMPLATE_TYPES.FEEDBACK_TEMPLATE:
case TEMPLATE_TYPES.FORM_TEMPLATE:
case TEMPLATE_TYPES.CLOCK_TEMPLATE:
case TEMPLATE_TYPES.OTP_TEMPLATE:
case TEMPLATE_TYPES.RESET_PIN_TEMPLATE:
case TEMPLATE_TYPES.LISTWIDGET_TEMPLATE:
case TEMPLATE_TYPES.IMAGE_MESSAGE:
case TEMPLATE_TYPES.DIGITALFORM_TEMPLATE:
if (!isFromViewMore) {
this.computePostBack(item, template_type);
}
break;
case TEMPLATE_TYPES.ADVANCED_LIST_TEMPLATE:
if (!isFromViewMore) {
this.computePostBack(item, template_type);
} else {
console.log("item ------->:", item);
}
break;
case TEMPLATE_TYPES.LIST_VIEW_TEMPLATE:
if (!isFromViewMore) {
this.computePostBack(item, template_type);
} else if (isFromViewMore) {
Keyboard5.dismiss();
const dataPayload = [
{
title: "Tab1",
list: item?.Tab1,
isChecked: true
},
{
title: "Tab2",
list: item?.Tab2,
isChecked: false
}
];
this.setState(
{
currentTemplate: TEMPLATE_TYPES.LIST_VIEW_TEMPLATE,
currentTemplateData: dataPayload,
currentTemplateHeading: item?.heading,
showSeeMoreModal: true
}
);
}
break;
case TEMPLATE_TYPES.ARTICLE_TEMPLATE:
this.setState(
{
currentTemplate: template_type,
currentTemplateData: item,
themeData: theme,
showSeeMoreModal: true
}
);
break;
case TEMPLATE_TYPES.LIST_TEMPLATE:
case TEMPLATE_TYPES.CAROUSEL_TEMPLATE:
this.computePostBack(item, template_type);
break;
case TEMPLATE_TYPES.TABLE_TEMPLATE:
let viewMoreObj = {
template_type,
payload: item,
isFromViewMore,
theme
};
this.setState({ modalVisible: true, viewMoreObj });
break;
case TEMPLATE_TYPES.DATE_RANGE_TEMPLATE:
if (item?.startDate && item?.endDate) {
let textItem = this.getDateRangeText(item);
if (textItem) {
this.computePostBack(textItem, template_type);
}
}
break;
case TEMPLATE_TYPES.DATE_TEMPLATE:
if (item?.currentDate) {
this.computePostBack(item?.currentDate, template_type);
}
break;
}
};
getDateRangeText(item) {
if (!item?.startDate || !item?.endDate) {
return void 0;
}
try {
return item.startDate + " to " + item.endDate;
} catch (error) {
console.log("getDateRangeText Error ----->:", error);
}
return void 0;
}
resetInputToolbar = () => {
if (this.textInput) {
this.textInput.clear();
}
this.notifyInputTextReset();
this.setState({
text: this.getTextFromProp("")
});
};
onInputSizeChanged = (_size) => {
};
onInputTextChanged = (text) => {
if (isAgentConnect == true) {
if (text.length == 0) {
console.log("stop_typing");
KoreBotClient3.getInstance()?.sendEvent("stop_typing", false);
} else {
console.log("typing");
KoreBotClient3.getInstance()?.sendEvent("typing", false);
}
}
if (this.getIsTypingDisabled()) {
return;
}
if (this.props.onInputTextChanged) {
this.props.onInputTextChanged(text);
}
if (this.props.renderSuggestionsView) {
this.props.renderSuggestionsView(text);
}
if (this.props.text === null) {
this.setState({ text });
}
};
notifyInputTextReset = () => {
if (this.props.onInputTextChanged) {
this.props.onInputTextChanged("");
}
};
onInitialLayoutViewLayout = (e) => {
const { layout } = e.nativeEvent;
if (layout.height <= 0) {
return;
}
this.notifyInputTextReset();
const initialText = this.props.initialText || "";
this.setState({
isInitialized: true,
text: this.getTextFromProp(initialText)
});
};
onMainViewLayout = (_e) => {
if (this.getIsFirstLayout() === true) {
this.setIsFirstLayout(false);
}
};
isMediaAddedToSend = () => {
let list = this.state?.mediaPayload?.filter((media) => media?.status);
return list?.length > 0 || false;
};
onSpeakerClicked = (_isSpeech) => {
this.setState(
{
isTTSenable: _isSpeech
},
() => {
if (this.state.isTTSenable) {
this.initializeTTS();
} else {
this.cleanupTTS();
}
}
);
};
renderInputToolbar = () => {
const inputToolbarProps = {
...this.props,
text: this.getTextFromProp(this.state.text),
composerHeight: Math.max(
this.props.minComposerHeight || 0,
this.state.composerHeight
),
onSend: this.onSendText,
onInputSizeChanged: this.onInputSizeChanged,
onTextChanged: this.onInputTextChanged,
onSpeakerClicked: this.onSpeakerClicked,
isTTSenable: this.state.isTTSenable,
textInputProps: {
...this.props.textInputProps,
ref: (textInput) => this.textInput = textInput,
maxLength: this.getIsTypingDisabled() ? 0 : this.props.maxInputLength
},
quick_replies: this.state.quickReplies,
renderQuickRepliesView: this.renderQuickRepliesView,
renderMediaView: this.renderMediaView,
isMediaAddedToSend: this.isMediaAddedToSend(),
isMediaLoading: this.state?.mediaPayload.length > 0 || false,
onSTTValue: (value) => {
this.setState({
onSTTValue: value
});
},
onSendSTTClick: (isOnlyClearSTT) => {
if (!isOnlyClearSTT) {
this.onSend({ message: { text: this.state.onSTTValue } });
}
this.setState({
onSTTValue: null
});
},
onAttachedItemClick: () => {
if (this.state?.mediaPayload.length >= MAX_SOURCE_LIMIT) {
this.showCustomToast(
"You can upload only " + MAX_SOURCE_LIMIT + (MAX_SOURCE_LIMIT > 1 ? " files" : " file")
);
return;
}
Keyboard5.dismiss();
this.setState({ showAttachmentModal: true });
},
onMenuItemClick: (menuItems) => {
console.log("menuItems ------->:", menuItems);
Keyboard5.dismiss();
this.setState({
menuItems
});
}
};
if (this.props.renderInputToolbar) {
return this.props.renderInputToolbar(inputToolbarProps);
}
return /* @__PURE__ */ React110.createElement(InputToolbar, { ...inputToolbarProps });
};
renderChatFooter = () => {
if (this.props.renderChatFooter) {
return this.props.renderChatFooter();
}
return null;
};
renderLoading = () => {
if (this.props.renderLoading) {
return this.props.renderLoading();
}
return this.renderLoader();
};
renderTypingIndicator = () => {
let isTypingIndicator = this.state.isBotResponseLoading;
if (this.props.renderTypingIndicator) {
return this.props.renderTypingIndicator({
...this.props,
isTypingIndicator
});
}
return /* @__PURE__ */ React110.createElement(TypingIndicator, { isTypingIndicator });
};
renderSTTview(value) {
if (!value) {
return /* @__PURE__ */ React110.createElement(React110.Fragment, null);
}
return /* @__PURE__ */ React110.createElement(View93, { style: styles86.stt_main }, /* @__PURE__ */ React110.createElement(View93, null, /* @__PURE__ */ React110.createElement(Text72, { numberOfLines: 0, style: styles86.stt_text }, value)));
}
refreshView = () => {
this.resetInputToolbar();
};
getViewMoreView() {
let viewMoreObj = this.state.viewMoreObj;
if (!viewMoreObj || !viewMoreObj.payload || !viewMoreObj.template_type) {
return /* @__PURE__ */ React110.createElement(React110.Fragment, null);
}
switch (viewMoreObj.template_type) {
case TEMPLATE_TYPES.TABLE_TEMPLATE:
return /* @__PURE__ */ React110.createElement(
TableTemplate,
{
payload: viewMoreObj.payload,
isFromViewMore: true,
theme: viewMoreObj?.theme
}
);
}
return /* @__PURE__ */ React110.createElement(React110.Fragment, null);
}
openFullScreenDialog = () => {
const { modalVisible } = this.state;
return /* @__PURE__ */ React110.createElement(
Modal9,
{
animationType: "slide",
transparent: true,
visible: modalVisible,
onRequestClose: () => {
this.setState({ modalVisible: false });
}
},
/* @__PURE__ */ React110.createElement(View93, { style: styles86.modalContainer }, /* @__PURE__ */ React110.createElement(View93, { style: styles86.modalContent }, /* @__PURE__ */ React110.createElement(View93, { style: styles86.m_con2 }, /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: styles86.close_btn_con,
onPress: () => this.setState({ modalVisible: false, viewMoreObj: void 0 })
},
/* @__PURE__ */ React110.createElement(Text72, { style: styles86.close_btn_txt }, "X")
)), /* @__PURE__ */ React110.createElement(View93, { style: styles86.m_main_con }, this.getViewMoreView())))
);
};
renderAttachedBottomSheet() {
return /* @__PURE__ */ React110.createElement(
Modal9,
{
visible: this.state.showAttachmentModal || false,
animationType: "slide",
transparent: true,
onRequestClose: () => {
this.setState({ showAttachmentModal: false });
}
},
/* @__PURE__ */ React110.createElement(View93, { style: {
flex: 1,
justifyContent: "flex-end",
backgroundColor: "rgba(0, 0, 0, 0.5)"
} }, /* @__PURE__ */ React110.createElement(View93, { style: {
backgroundColor: "#fff",
padding: 20,
borderTopLeftRadius: 20,
borderTopRightRadius: 20,
shadowColor: "#000",
shadowOffset: { width: 0, height: -2 },
shadowOpacity: 0.25,
shadowRadius: 10,
elevation: 10
} }, /* @__PURE__ */ React110.createElement(View93, { style: {
width: 40,
height: 4,
backgroundColor: "#ccc",
borderRadius: 2,
alignSelf: "center",
marginBottom: 20
} }), /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: {
position: "absolute",
top: 10,
right: 10,
width: 30,
height: 30,
borderRadius: 15,
alignItems: "center",
justifyContent: "center",
zIndex: 1
},
onPress: () => {
this.setState({ showAttachmentModal: false });
}
},
/* @__PURE__ */ React110.createElement(
SvgIcon,
{
name: "HeaderClose",
width: normalize(20),
height: normalize(20),
color: "#697586"
}
)
), this.renderAssetPopupComponent()))
);
}
renderMenuBottomSheet() {
const shouldShowModal = Array.isArray(this.state.menuItems) && this.state.menuItems.length > 0;
return /* @__PURE__ */ React110.createElement(
Modal9,
{
visible: shouldShowModal,
animationType: "slide",
transparent: true,
onRequestClose: () => {
this.setState({ menuItems: void 0 });
}
},
/* @__PURE__ */ React110.createElement(
TouchableWithoutFeedback3,
{
onPress: () => {
this.setState({ menuItems: void 0 });
}
},
/* @__PURE__ */ React110.createElement(
View93,
{
style: {
flex: 1,
justifyContent: "flex-end",
backgroundColor: "rgba(0, 0, 0, 0.5)"
}
},
/* @__PURE__ */ React110.createElement(
TouchableWithoutFeedback3,
{
onPress: () => {
}
},
/* @__PURE__ */ React110.createElement(
View93,
{
style: {
minHeight: 300,
backgroundColor: "#fff",
padding: 20,
borderTopLeftRadius: 20,
borderTopRightRadius: 20,
shadowColor: "#000",
shadowOffset: { width: 0, height: -2 },
shadowOpacity: 0.25,
shadowRadius: 10,
elevation: 10,
maxHeight: "75%"
}
},
/* @__PURE__ */ React110.createElement(
View93,
{
style: {
width: 40,
height: 4,
backgroundColor: "#ccc",
borderRadius: 2,
alignSelf: "center",
marginBottom: 20
}
}
),
/* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: {
position: "absolute",
top: 10,
right: 10,
width: 30,
height: 30,
borderRadius: 15,
alignItems: "center",
justifyContent: "center",
zIndex: 1
},
onPress: () => {
this.setState({ menuItems: void 0 });
}
},
/* @__PURE__ */ React110.createElement(
SvgIcon,
{
name: "HeaderClose",
width: normalize(20),
height: normalize(20),
color: "#697586"
}
)
),
/* @__PURE__ */ React110.createElement(
Text72,
{
style: {
fontSize: 18,
fontWeight: "bold",
marginBottom: 20,
textAlign: "left",
color: "#333"
}
},
"Menu"
),
this.renderMenuPopupComponent()
)
)
)
)
);
}
renderSeeMorePopupComponent() {
const bubbleTheme = getBubbleTheme(this.state.themeData);
switch (this.state.currentTemplate) {
case TEMPLATE_TYPES.LIST_VIEW_TEMPLATE:
const data = this.state.currentTemplateData;
const selectedItem = data?.filter((d) => d?.isChecked);
return /* @__PURE__ */ React110.createElement(View93, null, /* @__PURE__ */ React110.createElement(View93, null, this.state?.currentTemplateHeading && /* @__PURE__ */ React110.createElement(View93, { style: styles86.sub_container_title1 }, /* @__PURE__ */ React110.createElement(Text72, { style: [styles86.displayTextHeaderStyle, { fontWeight: 600 }] }, this.state?.currentTemplateHeading)), /* @__PURE__ */ React110.createElement(View93, { style: { flexDirection: "row" } }, data?.map((tab, index) => {
return /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
onPress: () => {
if (tab?.isChecked) {
return;
}
let dataList = this.state.currentTemplateData.map(
(item, itemIndex) => {
if (index === itemIndex) {
return {
...item,
isChecked: true
};
}
return {
...item,
isChecked: false
};
}
);
this.setState({
currentTemplateData: dataList
});
},
style: [styles86.tab_title_main]
},
/* @__PURE__ */ React110.createElement(
Text72,
{
style: [
styles86.tab_title,
tab?.isChecked ? {
backgroundColor: bubbleTheme.BUBBLE_RIGHT_BG_COLOR,
color: Color_default.white
} : {
backgroundColor: Color_default.white,
color: Color_default.black
}
]
},
tab?.title
)
);
})), /* @__PURE__ */ React110.createElement(View93, { style: styles86.line })), /* @__PURE__ */ React110.createElement(ScrollView5, { horizontal: false, style: styles86.scrollView }, /* @__PURE__ */ React110.createElement(View93, { style: styles86.sroll_sub }, /* @__PURE__ */ React110.createElement(
ListViewTemplate,
{
payload: {
elements: selectedItem?.[0]?.list,
isLastMessage: true,
onListItemClick: (template_type, item, isFromViewMore, theme) => {
this.setState({ showSeeMoreModal: false });
this.onListItemClick(
template_type,
item,
isFromViewMore,
theme
);
}
},
theme: this.state.themeData,
onBottomSheetClose: {}
}
))));
break;
case TEMPLATE_TYPES.ARTICLE_TEMPLATE:
const payload = this.state.currentTemplateData;
return /* @__PURE__ */ React110.createElement(ScrollView5, { horizontal: false, style: [styles86.scrollView, { marginBottom: normalize(10) }] }, /* @__PURE__ */ React110.createElement(View93, { style: styles86.sroll_sub }, /* @__PURE__ */ React110.createElement(ArticleTemplate, { payload, theme: this.state.themeData, onListItemClick: this.props.onListItemClick, onBottomSheetClose: {} }), ";"));
}
}
renderSeeMoreBottomSheet() {
return /* @__PURE__ */ React110.createElement(
Modal9,
{
visible: this.state.showSeeMoreModal || false,
animationType: "slide",
transparent: true,
onRequestClose: () => {
this.setState({ showSeeMoreModal: false });
}
},
/* @__PURE__ */ React110.createElement(View93, { style: {
flex: 1,
justifyContent: "flex-end",
backgroundColor: "rgba(0, 0, 0, 0.5)"
} }, /* @__PURE__ */ React110.createElement(View93, { style: {
backgroundColor: "#fff",
padding: 20,
borderTopLeftRadius: 20,
borderTopRightRadius: 20,
shadowColor: "#000",
shadowOffset: { width: 0, height: -2 },
shadowOpacity: 0.25,
shadowRadius: 10,
elevation: 10,
maxHeight: "75%"
} }, /* @__PURE__ */ React110.createElement(View93, { style: {
width: 40,
height: 4,
backgroundColor: "#ccc",
borderRadius: 2,
alignSelf: "center",
marginBottom: 20
} }), /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: {
position: "absolute",
top: 10,
right: 10,
width: 30,
height: 30,
borderRadius: 15,
alignItems: "center",
justifyContent: "center",
zIndex: 1
},
onPress: () => {
this.setState({ showSeeMoreModal: false });
}
},
/* @__PURE__ */ React110.createElement(
SvgIcon,
{
name: "HeaderClose",
width: normalize(20),
height: normalize(20),
color: "#697586"
}
)
), this.renderSeeMorePopupComponent()))
);
}
renderMenuPopupComponent() {
let buttons = this.state.menuItems || [];
return /* @__PURE__ */ React110.createElement(View93, { style: [styles86.pop_sub] }, buttons.map((btn, index) => {
return /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
key: index + "",
onPress: () => {
this.setState({ menuItems: void 0 });
setTimeout(() => {
this.computePostBack(btn);
}, 100);
},
style: { padding: 15, backgroundColor: Color_default.white, borderBottomWidth: 1, borderBottomColor: "#f0f0f0" }
},
/* @__PURE__ */ React110.createElement(Text72, { style: { fontSize: normalize(16), color: Color_default.text_color } }, btn.title)
);
}));
}
requestCameraPermission = async () => {
return new Promise((resolve) => {
const { cameraPermission: cameraPermission2 } = (init_PermissionsUtils(), __toCommonJS(PermissionsUtils_exports));
cameraPermission2((isSuccess) => {
console.log("Camera permission result:", isSuccess);
resolve(isSuccess);
});
});
};
renderAssetPopupComponent() {
return /* @__PURE__ */ React110.createElement(View93, { style: [styles86.pop_sub] }, attach_menu_buttons.map((btn, index) => {
return /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
key: index + "",
onPress: async () => {
this.setState({ showAttachmentModal: false });
setTimeout(async () => {
switch (btn?.id) {
case 1:
const hasPermission = await this.requestCameraPermission();
if (!hasPermission) {
console.error("Camera permission denied");
return;
}
try {
this.lazyLaunchCamera(
{
saveToPhotos: true,
mediaType: "mixed",
quality: 0.8,
maxWidth: 1920,
maxHeight: 1920
},
(response) => {
if (response.didCancel) {
console.log("User cancelled image picker");
return;
}
if (response.errorMessage) {
console.error("Camera error:", response.errorMessage);
return;
}
if (response.errorCode) {
console.error("Camera error code:", response.errorCode);
return;
}
const res = response.assets?.[0];
if (res) {
let fileName = res.fileName;
if (res.fileName) {
let names = res.fileName.split(".");
fileName = "img_" + (/* @__PURE__ */ new Date()).getTime() + "." + names?.[1];
}
let result = [
{
fileCopyUri: null,
name: fileName,
size: res.fileSize,
type: res.type,
uri: res.uri
}
];
this.computeMediaResult(result);
} else {
console.warn("No camera result received");
}
}
);
} catch (error) {
console.error("Error launching camera:", error);
}
break;
case 2:
this.handleDocumentTypeSelection("images");
break;
case 3:
this.handleDocumentTypeSelection("documents");
break;
case 4:
this.handleDocumentTypeSelection("video");
break;
}
}, 150);
},
style: { padding: 15, backgroundColor: Color_default.white, borderBottomWidth: 1, borderBottomColor: "#f0f0f0" }
},
/* @__PURE__ */ React110.createElement(Text72, { style: { fontSize: normalize(16), color: Color_default.text_color } }, btn?.title)
);
}));
}
onAttachItemClick(types) {
if (isIOS) {
documentPickIOSPermission((isSuccess) => {
this.pickDocument(types);
console.log("IOSPermission isSuccess ---->:", isSuccess);
});
} else {
documentPickPermission((isSuccess) => {
this.pickDocument(types);
console.log("android Permission isSuccess ---->:", isSuccess);
});
}
}
pickDocument = async (types) => {
try {
const DocumentPicker = await this.lazyDocumentPicker();
if (!DocumentPicker) {
console.warn("DocumentPicker not available");
return;
}
const result = await DocumentPicker.pick({
allowMultiSelection: MAX_SOURCE_LIMIT > 1,
type: types
});
this.computeMediaResult(result);
} catch (err) {
}
};
getBeforeLoadingList(files) {
return files.map((file) => {
let itemId = getItemId();
return {
...file,
id: itemId,
fileName: file?.name,
status: false
};
});
}
computeMediaResult = (result) => {
let totalLength = result?.length || 0;
if (totalLength <= MAX_SOURCE_LIMIT) {
let filesLessthan10Mb = result?.filter((item) => {
let sizeInBytes = item?.size || 0;
const fileSizeInMB = sizeInBytes / (1024 * 1024);
return fileSizeInMB <= 10;
});
let filesGreaterthan10Mb = result?.filter((item) => {
let sizeInBytes = item?.size || 1;
const fileSizeInMB = sizeInBytes / (1024 * 1024);
return fileSizeInMB > 10;
});
if (filesGreaterthan10Mb?.length > 0) {
let msg = "";
if (filesGreaterthan10Mb?.length === 1) {
const name = filesGreaterthan10Mb.map(
(file) => file?.name
);
msg = "Couldn't attach " + name + " - Size limit is 10 mb per file";
} else {
msg = "Couldn't attach few files Size limit is 10 mb per file";
}
this.showCustomToast(msg);
return;
}
if (filesLessthan10Mb?.length > 0) {
const beforeList = this.getBeforeLoadingList(filesLessthan10Mb);
this.setState({
mediaPayload: beforeList
});
let payload = {
files: beforeList
};
if (payload?.files?.length > 0) {
this.fileUploadQueue = new FileUploadQueue_default(
(resultMedia) => {
if (resultMedia) {
let updatesList = this.state.mediaPayload.map((media) => {
if (media?.id === resultMedia?.id) {
return {
id: resultMedia?.id,
fileId: resultMedia?.fileUrl?.fileId,
fileName: resultMedia?.fileName,
status: resultMedia?.status,
uri: resultMedia?.uri,
filesize: resultMedia?.filesize,
type: resultMedia?.type,
mediaType: this.getFileType(resultMedia?.fileName),
isFromLocal: true
};
}
return media;
});
this.setState({
mediaPayload: updatesList
});
} else {
this.showCustomToast("actionUploadFail");
}
},
(progressObj) => {
let updatesList = this.state.mediaPayload.map((media) => {
if (media?.id === progressObj?.id) {
return {
...media,
progress: progressObj.progress,
status: false
};
}
return media;
});
this.setState({
mediaPayload: updatesList
});
}
);
payload?.files.forEach((file) => {
this.fileUploadQueue?.addToQueue(file);
});
}
}
} else {
this.showCustomToast(LIMIT_MESSAGE);
}
};
showCustomToast = (msg) => {
Toast3.show({
type: "error",
text1: msg,
position: "bottom",
bottomOffset: 100
});
};
onHeaderActionsClick = (item) => {
switch (item) {
case HeaderIconsId.BACK:
case HeaderIconsId.CLOSE:
try {
if (this.props.navigation?.canGoBack?.()) {
this.props.navigation?.goBack?.();
} else {
BackHandler2.exitApp();
}
} catch (error) {
BackHandler2.exitApp();
}
break;
case HeaderIconsId.HELP:
let item2 = {
type: "url",
url: "https://kore.ai/"
};
this.computePostBack(item2);
break;
case HeaderIconsId.RECONNECT:
this.onReconnect();
break;
case HeaderIconsId.LIVE_AGENT:
setTimeout(() => {
this.onSend({
message: { text: "connect to agent" }
});
}, 1e3);
break;
}
};
renderHeader() {
if (this.props.renderChatHeader) {
return this.props.renderChatHeader();
}
let onClick = (item) => {
if (this.props?.onHeaderActionsClick) {
this.props?.onHeaderActionsClick?.(item);
} else {
this.onHeaderActionsClick(item);
}
};
return /* @__PURE__ */ React110.createElement(
ChatHeader,
{
onHeaderActionsClick: onClick,
...this.props,
isReconnecting: this.state.isReconnecting
}
);
}
renderLoader = () => {
if (this.state.showLoader) {
return /* @__PURE__ */ React110.createElement(View93, { style: styles86.load }, /* @__PURE__ */ React110.createElement(
ActivityIndicator5,
{
animating: true,
style: styles86.indicator,
size: 25,
color: "#517BD2"
}
), /* @__PURE__ */ React110.createElement(View93, { style: styles86.indicator_sub }, /* @__PURE__ */ React110.createElement(Text72, { style: styles86.loader_text }, "Please wait")));
}
return /* @__PURE__ */ React110.createElement(React110.Fragment, null);
};
renderWelcomeComponent = () => {
if (this.props.statusBarColor && isIOS) {
this.props.statusBarColor(
this.state.activetheme?.v3?.welcome_screen?.background?.color || "#4B4EDE"
);
}
return /* @__PURE__ */ React110.createElement(
Welcome,
{
activetheme: this.state.activetheme,
onStartConversationClick: (postUtterance) => {
this.setState(
{
wlcomeModalVisible: false
},
() => {
if (postUtterance) {
setTimeout(() => {
this.onSend({
message: { text: postUtterance }
});
}, 100);
}
if (this.props.statusBarColor && isIOS) {
this.props.statusBarColor(
this.state.activetheme?.v3?.header?.bg_color
);
}
}
);
}
}
);
};
renderWelcomeScreenModel = () => {
return /* @__PURE__ */ React110.createElement(
Modal9,
{
visible: this.state.wlcomeModalVisible,
animationType: "slide",
transparent: true,
onRequestClose: () => {
this.setState({
wlcomeModalVisible: false
});
}
},
this.renderWelcomeComponent()
);
};
renderBackButtonDialog = () => {
return /* @__PURE__ */ React110.createElement(
Modal9,
{
visible: this.state.showBackButtonDialog || false,
animationType: "fade",
transparent: true,
onRequestClose: this.handleDialogCancel
},
/* @__PURE__ */ React110.createElement(View93, { style: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "rgba(0, 0, 0, 0.5)"
} }, /* @__PURE__ */ React110.createElement(View93, { style: {
backgroundColor: "#fff",
padding: 20,
borderRadius: 15,
marginHorizontal: 20,
minWidth: 320,
maxWidth: 400,
shadowColor: "#000",
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.25,
shadowRadius: 10,
elevation: 10
} }, /* @__PURE__ */ React110.createElement(Text72, { style: {
fontSize: 18,
marginBottom: 15,
textAlign: "left",
color: "#333"
} }, this.getLocalizedString("back_dialog_title")), /* @__PURE__ */ React110.createElement(View93, { style: {
flexDirection: "row",
justifyContent: "space-around",
alignItems: "center",
marginTop: 10
} }, /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: {
borderRadius: 8,
flex: 1,
marginHorizontal: 5
},
onPress: this.handleDialogCancel
},
/* @__PURE__ */ React110.createElement(Text72, { style: { fontSize: 16, color: "#333", fontWeight: "500" } }, this.getLocalizedString("cancel"))
), /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: {
borderRadius: 8,
paddingHorizontal: 5,
alignItems: "center",
marginRight: 15,
flex: 0
},
onPress: this.handleDialogClose
},
/* @__PURE__ */ React110.createElement(Text72, { style: { fontSize: 16, color: "#333", fontWeight: "500" } }, this.getLocalizedString("close"))
), /* @__PURE__ */ React110.createElement(
TouchableOpacity46,
{
style: {
borderRadius: 8,
alignItems: "center",
paddingHorizontal: 5,
flex: 0
},
onPress: this.handleDialogMinimize
},
/* @__PURE__ */ React110.createElement(Text72, { style: { fontSize: 16, color: "#333", fontWeight: "500" } }, this.getLocalizedString("minimize"))
))))
);
};
render() {
if (this.state.isInitialized === true && !this.state.showLoader || this.state.activetheme) {
const { wrapInSafeArea } = this.props;
const Wrapper = wrapInSafeArea ? SafeAreaView2 : View93;
const bgColor = this.state.themeData?.v3?.header?.bg_color || "#EAECF0";
const isWhiteStatus = isWhiteStatusBar(bgColor);
const isBlackStatus = isBlackStatusBar(bgColor);
return /* @__PURE__ */ React110.createElement(ThemeProvider, null, /* @__PURE__ */ React110.createElement(Wrapper, { style: styles86.safeArea }, /* @__PURE__ */ React110.createElement(
View93,
{
style: [styles86.container, { flexDirection: "column" }],
onLayout: this.onMainViewLayout
},
bgColor && !isWhiteStatus ? /* @__PURE__ */ React110.createElement(
StatusBar3,
{
barStyle: isBlackStatus ? "default" : "dark-content",
backgroundColor: bgColor
}
) : /* @__PURE__ */ React110.createElement(
StatusBar3,
{
barStyle: "dark-content",
backgroundColor: Color_default.white
}
),
this.renderHeader(),
this.openFullScreenDialog(),
this.renderMessages(),
this.renderTypingIndicator(),
this.renderSTTview(this.state?.onSTTValue),
this.renderInputToolbar(),
this.state.activetheme && this.renderLoader(),
this.renderAttachedBottomSheet(),
this.renderMenuBottomSheet(),
this.renderSeeMoreBottomSheet(),
this.renderWelcomeScreenModel(),
this.renderBackButtonDialog(),
/* @__PURE__ */ React110.createElement(CustomAlertComponent_default, { ref: this.alertRef })
)));
}
return /* @__PURE__ */ React110.createElement(View93, { style: styles86.container, onLayout: this.onInitialLayoutViewLayout }, this.renderLoading(), /* @__PURE__ */ React110.createElement(CustomAlertComponent_default, { ref: this.alertRef }));
}
onHistoryLoaded = (historyMessages2) => {
let newMessages = this.getMessages().concat(historyMessages2);
newMessages = newMessages.filter(
(item, index, self) => index === self.findIndex((m) => m.timeMillis === item.timeMillis)
);
console.log("newMessages " + newMessages.length);
this.setMessages(newMessages);
};
loadHistory = async () => {
const apiService = new ApiService2(this.props.botConfig.botUrl, KoreBotClient3.getInstance());
await apiService.getBotHistory(0, historyMessages > 20 ? 20 : historyMessages, this.props.botConfig, (response) => {
if (response == null) {
console.log("BotHistory null");
return;
}
this.onHistoryLoaded(response.data.botHistory);
});
};
};
var styles86 = StyleSheet84.create({
displayTextHeaderStyle: {
fontSize: TEMPLATE_STYLE_VALUES.TEXT_SIZE,
fontStyle: "normal",
fontFamily: TEMPLATE_STYLE_VALUES.FONT_FAMILY,
marginBottom: 10,
textAlign: "left",
justifyContent: "center",
color: Color_default.text_color,
fontWeight: "800"
},
sub_container_title1: {
flexDirection: "column",
marginStart: 5,
marginEnd: 10
},
tab_title_main: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
sroll_sub: {
flex: 1
},
scrollView: {
backgroundColor: Color_default.white,
width: windowWidth30,
marginBottom: normalize(50)
},
line: {
width: windowWidth30 * 0.9,
height: StyleSheet84.hairlineWidth,
backgroundColor: Color_default.black,
marginBottom: 10,
marginTop: 10
},
tab_title: {
padding: 5,
borderRadius: 5,
paddingLeft: 10,
paddingRight: 10
},
loader_text: {
fontSize: normalize(13),
marginStart: normalize(5),
color: Color_default.text_color
},
indicator_sub: {
alignItems: "center",
justifyContent: "center"
},
indicator: {
alignItems: "center",
justifyContent: "center"
},
stt_main: {
backgroundColor: Color_default.transparent,
marginBottom: 35,
marginRight: 10
},
stt_text: {
backgroundColor: "rgba(75, 78, 222, 0.05)",
flexWrap: "nowrap",
borderTopLeftRadius: 10,
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10,
borderWidth: 1,
borderColor: "#4B4EDE",
margin: StyleSheet84.hairlineWidth,
padding: 10,
flexShrink: 1,
flexGrow: 1,
alignSelf: "flex-end"
},
progress_main: {
backgroundColor: "rgba(0, 0, 0, 0.4)",
position: "absolute",
bottom: 0,
left: 0,
right: 0,
top: 0,
justifyContent: "center",
alignItems: "center"
},
close_icon_main: {
position: "absolute",
zIndex: 1,
backgroundColor: Color_default.white,
borderRadius: 200,
borderWidth: 1,
borderColor: Color_default.black,
right: 0,
marginEnd: -5,
padding: 2
},
media_sub1: { marginStart: 20 },
media_main: {
flexDirection: "row",
flex: 1,
padding: 5
},
menu_item_main: { padding: 10, backgroundColor: Color_default.white },
menu_item_text: { fontSize: normalize(16), color: Color_default.black },
line1: {
height: StyleSheet84.hairlineWidth,
backgroundColor: Color_default.gray,
width: "100%",
marginBottom: 7
},
container1: {
justifyContent: "center",
alignItems: "center"
},
centered: {
position: "absolute",
justifyContent: "center",
alignItems: "center",
backgroundColor: "rgba(255, 255, 255, 0.8)",
// Example background color
padding: 20,
borderRadius: 10,
left: "50%",
top: "50%",
zIndex: -1
},
handle_container: {
alignItems: "center",
height: 26,
justifyContent: "center"
},
handle: {
width: 64,
height: 5.8,
backgroundColor: "white",
borderRadius: 10,
borderWidth: 0.45,
borderColor: "black",
justifyContent: "center"
},
pop_sub: {
flexDirection: "column",
padding: 10,
marginBottom: 10,
backgroundColor: Color_default.white,
minWidth: normalize(80)
},
pop_main: {
position: "absolute",
end: 0,
justifyContent: "center",
paddingLeft: 15,
paddingTop: 5,
paddingEnd: 10,
paddingBottom: 5,
marginEnd: 5,
zIndex: 1
},
dropdown_main: {
alignItems: "center",
justifyContent: "center"
},
m_main_con: {
paddingLeft: 10,
paddingRight: 10,
paddingBottom: 20
},
close_btn_txt: {
color: Color_default.blue,
fontSize: normalize(18)
},
close_btn_con: {
backgroundColor: Color_default.white,
paddingEnd: 10,
paddingStart: 10,
paddingTop: 5,
paddingBottom: 5,
borderTopEndRadius: TEMPLATE_STYLE_VALUES.BUBBLE_RADIUS
},
modalContainer: {
flex: 1,
justifyContent: "center",
alignItems: "center",
backgroundColor: "rgba(0, 0, 0, 0.5)"
},
modalContent: {
backgroundColor: "white",
borderRadius: 10,
width: "100%",
alignItems: "center"
},
m_con2: {
justifyContent: "flex-end",
alignItems: "flex-end",
width: "100%"
},
image: {
height: normalize(20),
width: normalize(30),
resizeMode: "stretch",
margin: 0
},
quick_container: {
justifyContent: "flex-start",
flexDirection: "row",
padding: 8,
borderRadius: 4,
marginStart: 15,
shadowColor: "#000000",
shadowOffset: {
width: 0,
height: 0.5
},
shadowRadius: 1,
shadowOpacity: 0.1,
borderColor: "#BDC1C6",
//'#F8F9FA',
borderWidth: 1,
backgroundColor: "white",
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR
},
quick_container_2: {
justifyContent: "flex-start",
flexDirection: "row",
padding: 8,
borderRadius: 4,
marginStart: 15,
shadowColor: "#000000",
shadowOffset: {
width: 0,
height: 0.5
},
shadowRadius: 1,
shadowOpacity: 0.1,
borderColor: "#BDC1C6",
//'#F8F9FA',
borderWidth: 1,
color: TEMPLATE_STYLE_VALUES.TEXT_COLOR,
backgroundColor: "#0D6EFD"
},
quick_main_container: {
marginStart: 5,
marginEnd: 5,
alignItems: "flex-start",
elevation: 2,
flexDirection: "row",
flexWrap: "wrap",
alignSelf: "flex-start",
justifyContent: "flex-start",
marginBottom: 5,
backgroundColor: "#FCFCFC"
},
container: {
flex: 1
},
safeArea: {
flex: 1,
backgroundColor: "white"
},
load: {
flexDirection: "row",
flex: 1,
position: "absolute",
top: 0,
left: 0,
right: 0,
bottom: 0,
backgroundColor: "transparent",
alignItems: "center",
justifyContent: "center"
}
});
KoreChat.defaultProps = {
_actionSheetRef: null,
messagesContainerStyle: null,
text: null,
placeholder: DEFAULT_PLACEHOLDER,
disableComposer: false,
messageIdGenerator: () => uuid_default.v4(),
user: {},
onSend: void 0,
locale: null,
// Auto-detect device locale
timeFormat: TIME_FORMAT,
dateFormat: DATE_FORMAT,
loadEarlier: false,
onLoadEarlier: () => {
},
isLoadingEarlier: false,
renderLoading: null,
renderLoadEarlier: null,
renderAvatar: null,
showUserAvatar: false,
actionSheet: null,
onPressAvatar: null,
onLongPressAvatar: null,
renderUsernameOnMessage: false,
renderAvatarOnTop: false,
onLongPress: null,
renderMessage: null,
renderMessageText: null,
imageProps: {},
videoProps: {},
audioProps: {},
lightboxProps: {},
textInputProps: {},
listViewProps: {},
renderCustomView: null,
isCustomViewBottom: false,
renderDay: null,
renderTime: null,
renderFooter: null,
renderChatEmpty: null,
renderChatFooter: null,
renderInputToolbar: null,
renderComposer: null,
renderActions: null,
renderSend: null,
renderAccessory: null,
isKeyboardInternallyHandled: true,
onPressActionButton: null,
bottomOffset: 0,
minInputToolbarHeight: 44,
keyboardShouldPersistTaps: Platform16.select({
ios: "never",
android: "always",
default: "never"
}),
onInputTextChanged: null,
maxInputLength: null,
forceGetKeyboardHeight: false,
inverted: true,
extraData: null,
minComposerHeight: MIN_COMPOSER_HEIGHT,
maxComposerHeight: MAX_COMPOSER_HEIGHT,
wrapInSafeArea: true,
renderSuggestionsView: null,
renderMediaView: null,
Suggestions: [],
renderQuickRepliesView: null,
onFormAction: null,
renderTypingIndicator: null,
renderSpeechToText: null,
clickSpeechToText: null,
onDragList: null,
alignTop: false,
initialText: void 0,
onListItemClick: void 0,
menuItems: []
};
// src/index.tsx
try {
__require("react-native-svg");
} catch (error) {
console.warn("react-native-svg not available, SVG features will be disabled");
}
var src_default = KoreChat;
export {
BOT_ICON_URL,
BRANDING_RESPONSE_FILE,
BotTemplate,
ChatHeaderType,
CustomTemplate_default as CustomTemplate,
DATE_FORMAT,
DEFAULT_PLACEHOLDER,
FILE_CONTEXT,
HeaderIconsId,
InputToolbar,
KORA_ITEM_CLICK,
LIMIT_MESSAGE,
MAX_COMPOSER_HEIGHT,
MAX_FILE_NAME_LENGTH,
MAX_INPUT_TEXT_LENGTH,
MAX_SOURCE_LIMIT,
MAX_TOOL_BAR_HEIGHT,
MIN_COMPOSER_HEIGHT,
MIN_HEADER_HEIGHT,
MIN_TOOL_BAR_HEIGHT,
QuickReplies,
RENDER_KORA_BUBBLE,
SHOW_BUTTONS_LIMIT,
TEMPLATE_TYPES,
TIME_FORMAT,
URL_VERSION,
WelcomeHeaderConstants,
attach_menu_buttons,
src_default as default
};